Anar al contingut
Sursa Developers

POST/v1/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver

Reenviar un esdeveniment

redeliver_webhook

Torna a enviar el lliurament amb el mateix X-KB-Event-Id i el mateix webhook-id, de manera que un receptor que ja ha acceptat l’esdeveniment descarta la repetició. Un lliurament acabat (success, exhausted, cancelled) es repeteix com a lliurament nou al final de l’ordre dels lliuraments del webhook (redelivery_of apunta a l’original) i surt immediatament si no té cap lliurament pendent al davant. Un lliurament pendent que és el primer de l’ordre surt immediatament com a intent manual que no desplaça el seu calendari de reintents. En un webhook en pausa, els lliuraments esperen fins que es reprèn. La resposta és el lliurament després de l’intent (el nou, en el cas d’un lliurament acabat).

Autenticació

Envieu una clau d’API a la capçalera Authorization: Authorization: Bearer <clau>.

Paràmetres de camí

  • webhook_idintegerobligatori
  • delivery_idintegerobligatori

Paràmetres de capçalera

  • Idempotency-Keystring

    Clau per reintentar una escriptura de manera segura: d’1 a 255 caràcters ASCII imprimibles; es recomana un UUID v4 per operació lògica. Un reintent amb la mateixa clau en un termini de 24 hores no torna a executar l’operació: retorna la resposta desada (estat, capçaleres i cos) amb la capçalera Idempotency-Replayed: true. La mateixa clau amb un mètode, un camí, un Content-Type o un cos diferents retorna 409 api.idempotency_mismatch; mentre la primera sol·licitud encara s’executa, 409 api.idempotency_in_progress amb Retry-After: 1. Després d’una resposta 5xx o 429 la clau s’allibera, i un reintent torna a executar l’operació. L’abast de la clau és l’organització i qui fa la crida (clau d’API, usuari o clau de font personalitzada).

    length ≥ 1, length ≤ 255

Respostes

200El lliurament després de l’intent

Capçaleres de la resposta

  • RateLimit-Policy

    Límits vigents, en el format de l’esborrany de l’IETF draft-ietf-httpapi-ratelimit-headers: elements separats per comes "<name>";q=<quota>;w=<window in seconds>. key és la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió és user, sense credencials ip); minute, day i month són les quotes de l’organització per al minut, el dia i el mes naturals en UTC.

  • RateLimit

    El que queda de cada límit de RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Límit de l’element més restrictiu de RateLimit-Policy (el que té menys sol·licituds restants).

  • X-RateLimit-Remaining

    Sol·licituds restants dins del límit més restrictiu.

  • X-RateLimit-Reset

    Segons que falten perquè es restableixi el límit més restrictiu.

  • Idempotency-Replayed

    true indica que la resposta s’ha reproduït a partir de la desada per a aquesta Idempotency-Key: l’operació no s’ha tornat a executar.

application/json

Objecte: WebhookDelivery

  • idintegerobligatori
  • webhook_idintegerobligatori
  • event_idstringobligatori

    ID de l’esdeveniment (evt_…), que també s’envia a la capçalera X-KB-Event-Id i al cos del lliurament.

  • event_typeWebhookEventTypeobligatori
  • event_created_atstring (date-time)obligatori
  • attemptintegerobligatori

    Nombre d’intents fets.

  • statusWebhookDeliveryStatusobligatori
  • response_codeinteger | null
  • duration_msinteger | null
  • next_retry_atstring (date-time) | null
  • errorstring | null
  • delivered_atstring (date-time) | null
  • created_atstring (date-time)obligatori
  • updated_atstring (date-time)obligatori
  • sequenceinteger | null

    Número dins l’ordre dels lliuraments del webhook (X-KB-Sequence); null per a un lliurament de prova.

  • testbooleanobligatori

    Lliurament de prova (POST /v1/webhooks/{webhook_id}/test).

  • redelivery_ofinteger | null

    Lliurament original, si aquest és un reenviament.

  • error_codestring | null

    Codi neutre de l’últim error: timeout, connection_failed, tls_error, private_address, unresolvable, redirect, http_error, request_failed, endpoint_disabled, event_expired; un lliurament cancel·lat (cancelled) també pot tenir event_not_permitted (l’esdeveniment és fora dels drets del webhook en el moment de l’intent, perquè els drets s’han restringit després de distribuir l’esdeveniment) o event_unavailable (el cos d’un lliurament de prova ja no està disponible).

401No s’han enviat credencials (ni una galeta de sessió ni una clau d’API), o no s’ha trobat la clau.

Capçaleres de la resposta

  • RateLimit-Policy

    Límits vigents, en el format de l’esborrany de l’IETF draft-ietf-httpapi-ratelimit-headers: elements separats per comes "<name>";q=<quota>;w=<window in seconds>. key és la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió és user, sense credencials ip); minute, day i month són les quotes de l’organització per al minut, el dia i el mes naturals en UTC.

  • RateLimit

    El que queda de cada límit de RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Límit de l’element més restrictiu de RateLimit-Policy (el que té menys sol·licituds restants).

  • X-RateLimit-Remaining

    Sol·licituds restants dins del límit més restrictiu.

  • X-RateLimit-Reset

    Segons que falten perquè es restableixi el límit més restrictiu.

application/json

Objecte: Error

403L’acció no està permesa: el rol és insuficient, no hi ha accés a la col·lecció o a l’entrada, la sol·licitud s’executa en mode «View as», o l’organització està suspesa o eliminada (`detail` és un objecte amb `code: org_suspended | org_deleted`).

Capçaleres de la resposta

  • RateLimit-Policy

    Límits vigents, en el format de l’esborrany de l’IETF draft-ietf-httpapi-ratelimit-headers: elements separats per comes "<name>";q=<quota>;w=<window in seconds>. key és la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió és user, sense credencials ip); minute, day i month són les quotes de l’organització per al minut, el dia i el mes naturals en UTC.

  • RateLimit

    El que queda de cada límit de RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Límit de l’element més restrictiu de RateLimit-Policy (el que té menys sol·licituds restants).

  • X-RateLimit-Remaining

    Sol·licituds restants dins del límit més restrictiu.

  • X-RateLimit-Reset

    Segons que falten perquè es restableixi el límit més restrictiu.

application/json

Objecte: Error

404L’objecte no existeix o no està disponible per a vós. L’API no confirma que existeixi un objecte restringit.

Capçaleres de la resposta

  • RateLimit-Policy

    Límits vigents, en el format de l’esborrany de l’IETF draft-ietf-httpapi-ratelimit-headers: elements separats per comes "<name>";q=<quota>;w=<window in seconds>. key és la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió és user, sense credencials ip); minute, day i month són les quotes de l’organització per al minut, el dia i el mes naturals en UTC.

  • RateLimit

    El que queda de cada límit de RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Límit de l’element més restrictiu de RateLimit-Policy (el que té menys sol·licituds restants).

  • X-RateLimit-Remaining

    Sol·licituds restants dins del límit més restrictiu.

  • X-RateLimit-Reset

    Segons que falten perquè es restableixi el límit més restrictiu.

application/json

Objecte: Error

409L’estat de l’objecte no permet l’acció; per exemple, un duplicat, una indexació en curs o un treball que ja s’ha processat.

Capçaleres de la resposta

  • RateLimit-Policy

    Límits vigents, en el format de l’esborrany de l’IETF draft-ietf-httpapi-ratelimit-headers: elements separats per comes "<name>";q=<quota>;w=<window in seconds>. key és la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió és user, sense credencials ip); minute, day i month són les quotes de l’organització per al minut, el dia i el mes naturals en UTC.

  • RateLimit

    El que queda de cada límit de RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Límit de l’element més restrictiu de RateLimit-Policy (el que té menys sol·licituds restants).

  • X-RateLimit-Remaining

    Sol·licituds restants dins del límit més restrictiu.

  • X-RateLimit-Reset

    Segons que falten perquè es restableixi el límit més restrictiu.

application/json

Objecte: Error

429Massa sol·licituds (`api.rate_limited`), s’ha esgotat la quota de l’organització per al minut, el dia o el mes (`api.quota_exceeded`; `error.details` conté `quota`, `limit` i `reset_at`), s’ha arribat al límit de l’organització o el servei de respostes està ocupat (`answers.engine_busy`). Espereu el temps que indica la capçalera `Retry-After`.

Capçaleres de la resposta

  • Retry-After

    Nombre de segons que cal esperar abans de reintentar la sol·licitud.

  • RateLimit-Policy

    Límits vigents, en el format de l’esborrany de l’IETF draft-ietf-httpapi-ratelimit-headers: elements separats per comes "<name>";q=<quota>;w=<window in seconds>. key és la freqüència de sol·licituds de la clau d’API (la quota és la ràfega, la finestra és el temps que triga a reomplir-se del tot; per a una sessió és user, sense credencials ip); minute, day i month són les quotes de l’organització per al minut, el dia i el mes naturals en UTC.

  • RateLimit

    El que queda de cada límit de RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Límit de l’element més restrictiu de RateLimit-Policy (el que té menys sol·licituds restants).

  • X-RateLimit-Remaining

    Sol·licituds restants dins del límit més restrictiu.

  • X-RateLimit-Reset

    Segons que falten perquè es restableixi el límit més restrictiu.

application/json

Objecte: Error

Codis d’error

Codis que aquest punt final pot retornar a error.code, a més dels codis generals de totes les sol·licituds.

Reintents segurs

Envieu una capçalera Idempotency-Key (per exemple, un UUID) amb cada POST i PATCH. Un reintent amb la mateixa clau en un termini de 24 hores retorna la resposta desada en lloc de tornar a executar la sol·licitud.

Límits de freqüència

Les respostes porten les capçaleres RateLimit i RateLimit-Policy i les anteriors X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset. Una resposta 429 té Retry-After en segons: espereu i torneu-ho a provar.

← webhooks · Referència de l’API