LIVE · AUDIT-KEDJA · EU-VÄRD
SYSTEM · 99,99 % DRIFTSTID
v 1.0 ↗ TILLVERKAT I EU

API för webhook-endpoints

Registrera HTTPS-endpoints för att ta emot HMAC-signerade event-POST:ar när något intressant händer i plattformen — sessioner öppnas, bevis fångas, revisionskedjor förankras. Varje leverans görs om med exponentiell backoff, signeras med en hemlighet per endpoint och är replay-säker via ett 5-minuters tidsstämpelfönster.

För event-katalogen + payload-format, se Webhooks-översikt. Den här sidan är API-ytan för att hantera endpoints + inspektera leveransförsök.

Endpoint-objektet

{
  "id": "we-1f2a...",
  "url": "https://hooks.acme.com/cvp",
  "description": "Production claims pipeline",
  "event_types": ["session.completed", "evidence.created"],
  "active": true,
  "created_at": "2026-04-12T09:00:00Z"
}

Obs: fältet signing_secret returneras exakt en gång i POST-svaret — spara det direkt, eller rotera det senare via PATCH om du tappar bort det.

Lista endpoints

GET /api/v1/public/webhook-endpoints — scope webhooks:read

curl https://app.nexbasira.com/api/v1/public/webhook-endpoints \
  -H "Authorization: Bearer nb_sec_..."

Skapa en endpoint

POST /api/v1/public/webhook-endpoints — scope webhooks:write

curl -X POST https://app.nexbasira.com/api/v1/public/webhook-endpoints \
  -H "Authorization: Bearer nb_sec_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://hooks.acme.com/cvp",
    "description": "Production claims pipeline",
    "event_types": ["session.completed", "evidence.created"]
  }'

Body-fält

FältTypKrävsNoteringar
urlHTTPS URLjaMåste vara nåbar + svara 2xx inom 10 s. HTTP avvisas.
descriptionstringnejFritextetikett. Hjälper när du har flera endpoints per organisation.
event_typesstring[]nejPrenumerera bara på en delmängd av event-typerna. Utelämna / tom = prenumerera på allt.
{
  "id": "we-1f2a...",
  "url": "https://hooks.acme.com/cvp",
  "description": "Production claims pipeline",
  "event_types": ["session.completed", "evidence.created"],
  "active": true,
  "created_at": "2026-04-12T09:00:00Z",
  "signing_secret": "whsec_4f9d2a8b3c1e..."
}

signing_secret är HMAC-SHA256-nyckeln som plattformen använder för att signera varje POST. Verifiera NB-Signature-headern på din mottagare — våra SDK:er levererar en enradshjälpare.

Hämta / uppdatera / radera

GET / PATCH / DELETE /api/v1/public/webhook-endpoints/{endpoint_id}

GET kräver webhooks:read; PATCH + DELETE kräver webhooks:write. PATCH tar samma body-format som POST — varje fält valfritt. Använd det för att pausa en endpoint ({"active": false}), begränsa dess prenumeration eller rotera signeringshemligheten.

Rotera signeringshemligheten

curl -X PATCH https://app.nexbasira.com/api/v1/public/webhook-endpoints/we-1f2a... \
  -H "Authorization: Bearer nb_sec_..." \
  -H "Content-Type: application/json" \
  -d '{"rotate_secret": true}'

Den nya hemligheten returneras exakt en gång i svarets body, samma format som create-anropet. Både gamla + nya hemligheterna är giltiga de närmaste 24 h för att ge din mottagare tid att driftsätta — därefter återkallas den gamla.

Inspektera leveransförsök

GET /api/v1/public/webhook-events — scope webhooks:read

De senaste 100 leveransförsöken för uppgiftens organisation. Filtrera med ?endpoint={id} eller ?status=pending|delivered|failed|dropped.

{
  "data": [{
    "id": "wev-9a01...",
    "endpoint": "we-1f2a...",
    "event_type": "session.completed",
    "status": "delivered",
    "response_status": 200,
    "attempt_count": 1,
    "created_at": "2026-05-23T10:32:00Z",
    "delivered_at": "2026-05-23T10:32:01Z"
  }],
  "has_more": false,
  "next_cursor": null
}

Omförsöksrytm

Misslyckade leveranser görs om enligt detta schema och släpps sedan:

  • +30 sekunder
  • +5 minuter
  • +1 timme
  • +6 timmar
  • +24 timmar
  • därefter → dropped (syns i leveransloggen)

Vanliga fel

StatusKodNär
400validation_errorIcke-HTTPS-URL, okänd event-typ eller onåbar endpoint vid skapandet.
403permission_deniedUppgiften saknar scopet.
404not_foundEndpointen finns inte i uppgiftens organisation.
409endpoint_pausedFörsök att skicka en testutlösning till en active=false-endpoint.