Skip to main content

Konfigurace webhooků

Tato stránka popisuje, jak zaregistrovat a spravovat webhooky pomocí Klubero API.

Autentizace

Všechny endpointy vyžadují OAuth 2.0 Bearer token s příslušnými oprávněními:

OperacePožadované oprávnění
Čtení webhooků a logůwebhooks:read
Vytváření, úprava, mazáníwebhooks:write

Registrace webhooku

Pro registraci nového webhooku použijte endpoint POST /api/v1.0/webhooks.

Požadavek

curl -X POST "https://api.klubero.cz/api/v1.0/webhooks" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhooks/klubero",
"secret": "muj-tajny-klic",
"event_types": ["user.created", "user.updated", "ticket.created"],
"description": "Produkční webhook",
"active": true
}'

Parametry požadavku

ParametrTypPovinnýPopis
urlstringAnoHTTPS URL vašeho endpointu (max 2048 znaků)
secretstringNeTajný klíč pro HMAC podpis (max 255 znaků)
event_typesarrayAnoSeznam typů událostí, které chcete přijímat
descriptionstringNePopis webhooku (max 500 znaků)
activebooleanNeZda je webhook aktivní (výchozí: true)

Validace URL

URL musí splňovat následující požadavky:

  • HTTPS protokol – HTTP není podporováno
  • Veřejně dostupná – Nelze použít localhost ani privátní IP adresy
  • Platný formát – Musí být validní URL

Zakázané URL:

  • localhost, 127.0.0.1, ::1, 0.0.0.0
  • Domény končící na .local, .localhost, .internal, .intranet
  • Privátní IP rozsahy: 10.x.x.x, 172.16-31.x.x, 192.168.x.x, 169.254.x.x
  • IPv6 link-local a site-local adresy

Odpověď

{
"success": true,
"data": {
"id": 123,
"guid": "550e8400-e29b-41d4-a716-446655440000",
"client_id": "your-oauth-client-id",
"url": "https://example.com/webhooks/klubero",
"has_secret": true,
"event_types": ["user.created", "user.updated", "ticket.created"],
"description": "Produkční webhook",
"active": true,
"created_at": "2024-01-15T10:00:00Z",
"updated_at": "2024-01-15T10:00:00Z"
}
}
Důležité

Hodnotu secret si bezpečně uložte při vytvoření! V odpovědích API je zobrazeno pouze has_secret: true/false, nikdy skutečná hodnota. Secret nelze později získat, pouze změnit.


Získání seznamu webhooků

Pro získání všech vašich webhooků použijte endpoint GET /api/v1.0/webhooks.

Požadavek

curl -X GET "https://api.klubero.cz/api/v1.0/webhooks?page=1&pageSize=20&active=true" \
-H "Authorization: Bearer {access_token}"

Parametry dotazu

ParametrTypVýchozíPopis
pageint1Číslo stránky
pageSizeint20Počet záznamů na stránku (max 100)
activebool-Filtrovat podle stavu aktivace

Odpověď

{
"success": true,
"data": [
{
"id": 123,
"guid": "550e8400-e29b-41d4-a716-446655440000",
"client_id": "your-oauth-client-id",
"url": "https://example.com/webhooks/klubero",
"has_secret": true,
"event_types": ["user.created", "user.updated", "ticket.created"],
"description": "Produkční webhook",
"active": true,
"created_at": "2024-01-15T10:00:00Z",
"updated_at": "2024-01-15T10:00:00Z"
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"totalCount": 1,
"totalPages": 1
}
}

Získání detailu webhooku

Pro získání detailu konkrétního webhooku použijte endpoint GET /api/v1.0/webhooks/{id}.

Požadavek

curl -X GET "https://api.klubero.cz/api/v1.0/webhooks/123" \
-H "Authorization: Bearer {access_token}"

Odpověď

{
"success": true,
"data": {
"id": 123,
"guid": "550e8400-e29b-41d4-a716-446655440000",
"client_id": "your-oauth-client-id",
"url": "https://example.com/webhooks/klubero",
"has_secret": true,
"event_types": ["user.created", "user.updated", "ticket.created"],
"description": "Produkční webhook",
"active": true,
"created_at": "2024-01-15T10:00:00Z",
"updated_at": "2024-01-15T10:00:00Z"
}
}

Aktualizace webhooku

Pro aktualizaci existujícího webhooku použijte endpoint PATCH /api/v1.0/webhooks/{id} s JSON Patch operacemi.

Požadavek

curl -X PATCH "https://api.klubero.cz/api/v1.0/webhooks/123" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json-patch+json" \
-d '[
{ "op": "replace", "path": "/url", "value": "https://newurl.com/webhooks" },
{ "op": "replace", "path": "/active", "value": false },
{ "op": "replace", "path": "/event_types", "value": ["ticket.created", "ticket.updated"] }
]'

JSON Patch operace

OperacePopis
replaceNahradí hodnotu pole
addPřidá hodnotu (pro pole event_types)
removeOdstraní hodnotu

Upravitelná pole

PoleTypPopis
/urlstringNová URL adresa (validace se aplikuje)
/secretstringNový tajný klíč
/event_typesarrayNový seznam typů událostí
/descriptionstringNový popis
/activebooleanAktivovat/deaktivovat webhook

Odpověď

{
"success": true,
"data": {
"id": 123,
"guid": "550e8400-e29b-41d4-a716-446655440000",
"client_id": "your-oauth-client-id",
"url": "https://newurl.com/webhooks",
"has_secret": true,
"event_types": ["ticket.created", "ticket.updated"],
"description": "Produkční webhook",
"active": false,
"created_at": "2024-01-15T10:00:00Z",
"updated_at": "2024-01-15T12:00:00Z"
}
}

Smazání webhooku

Pro smazání webhooku použijte endpoint DELETE /api/v1.0/webhooks/{id}.

Požadavek

curl -X DELETE "https://api.klubero.cz/api/v1.0/webhooks/123" \
-H "Authorization: Bearer {access_token}"

Odpověď

{
"success": true
}

Logy webhooků

Pro sledování doručení a jejich stavů můžete získat logy webhooku.

Požadavek

curl -X GET "https://api.klubero.cz/api/v1.0/webhooks/123/logs?page=1&pageSize=20&status=failed" \
-H "Authorization: Bearer {access_token}"

Parametry dotazu

ParametrTypVýchozíPopis
pageint1Číslo stránky
pageSizeint20Počet záznamů na stránku (max 100)
statusstring-Filtrovat: pending, delivered, failed

Odpověď

{
"success": true,
"data": [
{
"id": 456,
"guid": "660e8400-e29b-41d4-a716-446655440001",
"webhook_id": 123,
"event_type": "user.created",
"entity_id": 789,
"status": "delivered",
"attempts": 1,
"last_attempt": "2024-01-15T10:30:05Z",
"next_retry": null,
"response_code": 200,
"error_message": null,
"duration_ms": 125,
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": 455,
"guid": "660e8400-e29b-41d4-a716-446655440002",
"webhook_id": 123,
"event_type": "ticket.created",
"entity_id": 98765,
"status": "failed",
"attempts": 5,
"last_attempt": "2024-01-15T14:30:00Z",
"next_retry": null,
"response_code": 500,
"error_message": "Internal Server Error",
"duration_ms": 5023,
"created_at": "2024-01-15T09:00:00Z"
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"totalCount": 150,
"totalPages": 8
}
}

Stavy doručení

StavPopis
pendingČeká na doručení nebo na další pokus
deliveredÚspěšně doručeno
failedDoručení selhalo po všech pokusech

Chybové odpovědi

400 Bad Request

{
"success": false,
"error": {
"code": "validation_error",
"message": "URL must use HTTPS protocol"
}
}

404 Not Found

{
"success": false,
"error": {
"code": "not_found",
"message": "Webhook with ID 123 was not found"
}
}

Limity

LimitHodnota
Maximální délka URL2048 znaků
Maximální délka secret255 znaků
Maximální délka description500 znaků
Maximální pageSize100