Вебхуки
Получайте уведомления о событиях в 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}`)
);
}