Перейти к основному содержимому

Вебхуки

Получайте уведомления о событиях в ArchiCore.

Создать вебхук

POST /api/v1/webhooks

Тело запроса

{
"url": "https://your-server.com/webhook",
"events": ["analysis.complete", "push.received"],
"secret": "your_webhook_secret"
}

Ответ

{
"success": true,
"data": {
"webhook": {
"id": "wh_123",
"url": "https://your-server.com/webhook",
"events": ["analysis.complete", "push.received"],
"active": true
}
}
}

Список вебхуков

GET /api/v1/webhooks

Ответ

{
"success": true,
"data": {
"webhooks": [
{
"id": "wh_123",
"url": "https://your-server.com/webhook",
"events": ["analysis.complete"],
"active": true,
"createdAt": "2026-01-13T10:00:00Z"
}
]
}
}

Удалить вебхук

DELETE /api/v1/webhooks/:id

Типы событий

СобытиеОписание
push.receivedПолучен push в репозиторий
analysis.startedНачат анализ
analysis.completeАнализ завершён
analysis.failedОшибка анализа
security.alertОбнаружена уязвимость

Формат payload

{
"event": "analysis.complete",
"timestamp": "2026-01-13T10:05:00Z",
"project": {
"id": "proj_123",
"name": "my-project"
},
"data": {
"files": 150,
"duration": 45
}
}

Проверка подписи

Все вебхуки подписаны HMAC-SHA256. Проверяйте заголовок X-ArchiCore-Signature:

const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');

return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(`sha256=${expected}`)
);
}