Langsung ke konten
Sursa Developers

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

Kirim ulang peristiwa

redeliver_webhook

Mengirim pengiriman lagi dengan X-KB-Event-Id dan webhook-id yang sama, sehingga penerima yang sudah menerima peristiwa tersebut membuang pengulangannya. Pengiriman yang sudah selesai (success, exhausted, cancelled) diulang sebagai pengiriman baru di akhir urutan pengiriman webhook (redelivery_of merujuk ke pengiriman asli) dan langsung dikirim jika tidak ada pengiriman tertunda di depannya. Pengiriman tertunda yang berada di urutan pertama langsung dikirim sebagai upaya manual yang tidak menggeser jadwal percobaan ulangnya. Pada webhook yang dijeda, pengiriman menunggu sampai webhook dilanjutkan. Responsnya adalah pengiriman setelah upaya tersebut (pengiriman baru untuk pengiriman yang sudah selesai).

Autentikasi

Kirim kunci API di header Authorization: Authorization: Bearer <kunci>.

Parameter path

  • webhook_idintegerwajib
  • delivery_idintegerwajib

Parameter header

  • Idempotency-Keystring

    Kunci untuk percobaan ulang penulisan yang aman: 1 hingga 255 karakter ASCII yang dapat dicetak; disarankan satu UUID v4 per operasi logis. Percobaan ulang dengan kunci yang sama dalam 24 jam tidak menjalankan operasi lagi: yang dikembalikan adalah respons tersimpan (status, header, dan isi) dengan header Idempotency-Replayed: true. Kunci yang sama dengan metode, path, Content-Type, atau isi yang berbeda mengembalikan 409 api.idempotency_mismatch; selama permintaan pertama masih berjalan, 409 api.idempotency_in_progress dengan Retry-After: 1. Setelah respons 5xx atau 429, kunci dilepaskan, dan percobaan ulang menjalankan operasi lagi. Kunci berlaku dalam lingkup organisasi dan pemanggil (kunci API, pengguna, atau kunci sumber kustom).

    length ≥ 1, length ≤ 255

Respons

200Pengiriman setelah upaya tersebut

Header respons

  • RateLimit-Policy

    Batas yang berlaku, dalam format draf IETF draft-ietf-httpapi-ratelimit-headers: item yang dipisahkan koma "<name>";q=<quota>;w=<window in seconds>. key adalah laju permintaan kunci API (kuotanya adalah lonjakan, jendela waktunya adalah waktu untuk mengisinya kembali sepenuhnya; untuk sesi nilainya user, tanpa kredensial ip); minute, day, dan month adalah kuota organisasi untuk menit, hari, dan bulan kalender dalam UTC.

  • RateLimit

    Sisa setiap batas di RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Batas dari entri paling ketat di RateLimit-Policy (entri dengan sisa permintaan paling sedikit).

  • X-RateLimit-Remaining

    Sisa permintaan dalam batas paling ketat.

  • X-RateLimit-Reset

    Detik hingga batas paling ketat direset.

  • Idempotency-Replayed

    true berarti respons ini dikirim ulang dari respons tersimpan untuk Idempotency-Key ini: operasi tidak dijalankan lagi.

application/json

Objek: WebhookDelivery

  • idintegerwajib
  • webhook_idintegerwajib
  • event_idstringwajib

    ID peristiwa (evt_…), juga dikirim di header X-KB-Event-Id dan di isi pengiriman.

  • event_typeWebhookEventTypewajib
  • event_created_atstring (date-time)wajib
  • attemptintegerwajib

    Jumlah upaya yang dilakukan.

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

    Nomor dalam urutan pengiriman webhook (X-KB-Sequence); null untuk pengiriman uji.

  • testbooleanwajib

    Pengiriman uji (POST /v1/webhooks/{webhook_id}/test).

  • redelivery_ofinteger | null

    Pengiriman asli, jika pengiriman ini adalah pengiriman ulang.

  • error_codestring | null

    Kode netral kegagalan terakhir: timeout, connection_failed, tls_error, private_address, unresolvable, redirect, http_error, request_failed, endpoint_disabled, event_expired; pengiriman yang dibatalkan (cancelled) juga dapat memiliki event_not_permitted (peristiwa berada di luar hak webhook pada saat upaya, karena hak itu dipersempit setelah peristiwa disebarkan ke webhook) atau event_unavailable (isi pengiriman uji sudah tidak tersedia).

401Kredensial tidak dikirim (baik cookie sesi maupun kunci API), atau kunci tidak ditemukan.

Header respons

  • RateLimit-Policy

    Batas yang berlaku, dalam format draf IETF draft-ietf-httpapi-ratelimit-headers: item yang dipisahkan koma "<name>";q=<quota>;w=<window in seconds>. key adalah laju permintaan kunci API (kuotanya adalah lonjakan, jendela waktunya adalah waktu untuk mengisinya kembali sepenuhnya; untuk sesi nilainya user, tanpa kredensial ip); minute, day, dan month adalah kuota organisasi untuk menit, hari, dan bulan kalender dalam UTC.

  • RateLimit

    Sisa setiap batas di RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Batas dari entri paling ketat di RateLimit-Policy (entri dengan sisa permintaan paling sedikit).

  • X-RateLimit-Remaining

    Sisa permintaan dalam batas paling ketat.

  • X-RateLimit-Reset

    Detik hingga batas paling ketat direset.

application/json

Objek: Error

403Tindakan tidak diizinkan: peran tidak memadai, tidak ada akses ke koleksi atau kartu, permintaan berjalan dalam mode “View as”, atau organisasi ditangguhkan atau dihapus (`detail` adalah objek dengan `code: org_suspended | org_deleted`).

Header respons

  • RateLimit-Policy

    Batas yang berlaku, dalam format draf IETF draft-ietf-httpapi-ratelimit-headers: item yang dipisahkan koma "<name>";q=<quota>;w=<window in seconds>. key adalah laju permintaan kunci API (kuotanya adalah lonjakan, jendela waktunya adalah waktu untuk mengisinya kembali sepenuhnya; untuk sesi nilainya user, tanpa kredensial ip); minute, day, dan month adalah kuota organisasi untuk menit, hari, dan bulan kalender dalam UTC.

  • RateLimit

    Sisa setiap batas di RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Batas dari entri paling ketat di RateLimit-Policy (entri dengan sisa permintaan paling sedikit).

  • X-RateLimit-Remaining

    Sisa permintaan dalam batas paling ketat.

  • X-RateLimit-Reset

    Detik hingga batas paling ketat direset.

application/json

Objek: Error

404Objek tidak ada atau tidak tersedia bagi Anda. API tidak mengonfirmasi keberadaan objek yang dibatasi.

Header respons

  • RateLimit-Policy

    Batas yang berlaku, dalam format draf IETF draft-ietf-httpapi-ratelimit-headers: item yang dipisahkan koma "<name>";q=<quota>;w=<window in seconds>. key adalah laju permintaan kunci API (kuotanya adalah lonjakan, jendela waktunya adalah waktu untuk mengisinya kembali sepenuhnya; untuk sesi nilainya user, tanpa kredensial ip); minute, day, dan month adalah kuota organisasi untuk menit, hari, dan bulan kalender dalam UTC.

  • RateLimit

    Sisa setiap batas di RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Batas dari entri paling ketat di RateLimit-Policy (entri dengan sisa permintaan paling sedikit).

  • X-RateLimit-Remaining

    Sisa permintaan dalam batas paling ketat.

  • X-RateLimit-Reset

    Detik hingga batas paling ketat direset.

application/json

Objek: Error

409Status objek tidak memungkinkan tindakan ini, misalnya duplikat, pengindeksan yang sedang berlangsung, atau job yang sudah diproses.

Header respons

  • RateLimit-Policy

    Batas yang berlaku, dalam format draf IETF draft-ietf-httpapi-ratelimit-headers: item yang dipisahkan koma "<name>";q=<quota>;w=<window in seconds>. key adalah laju permintaan kunci API (kuotanya adalah lonjakan, jendela waktunya adalah waktu untuk mengisinya kembali sepenuhnya; untuk sesi nilainya user, tanpa kredensial ip); minute, day, dan month adalah kuota organisasi untuk menit, hari, dan bulan kalender dalam UTC.

  • RateLimit

    Sisa setiap batas di RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Batas dari entri paling ketat di RateLimit-Policy (entri dengan sisa permintaan paling sedikit).

  • X-RateLimit-Remaining

    Sisa permintaan dalam batas paling ketat.

  • X-RateLimit-Reset

    Detik hingga batas paling ketat direset.

application/json

Objek: Error

429Terlalu banyak permintaan (`api.rate_limited`), kuota organisasi untuk menit, hari, atau bulan sudah habis (`api.quota_exceeded`; `error.details` berisi `quota`, `limit`, dan `reset_at`), batas organisasi tercapai, atau layanan jawaban sedang sibuk (`answers.engine_busy`). Tunggu selama waktu di header `Retry-After`.

Header respons

  • Retry-After

    Jumlah detik yang perlu ditunggu sebelum Anda mencoba ulang permintaan.

  • RateLimit-Policy

    Batas yang berlaku, dalam format draf IETF draft-ietf-httpapi-ratelimit-headers: item yang dipisahkan koma "<name>";q=<quota>;w=<window in seconds>. key adalah laju permintaan kunci API (kuotanya adalah lonjakan, jendela waktunya adalah waktu untuk mengisinya kembali sepenuhnya; untuk sesi nilainya user, tanpa kredensial ip); minute, day, dan month adalah kuota organisasi untuk menit, hari, dan bulan kalender dalam UTC.

  • RateLimit

    Sisa setiap batas di RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Batas dari entri paling ketat di RateLimit-Policy (entri dengan sisa permintaan paling sedikit).

  • X-RateLimit-Remaining

    Sisa permintaan dalam batas paling ketat.

  • X-RateLimit-Reset

    Detik hingga batas paling ketat direset.

application/json

Objek: Error

Kode error

Kode yang dapat dikembalikan endpoint ini di error.code, selain kode umum yang berlaku untuk setiap permintaan.

Percobaan ulang yang aman

Kirim header Idempotency-Key (misalnya UUID) bersama setiap POST dan PATCH. Percobaan ulang dengan kunci yang sama dalam 24 jam mengembalikan respons yang tersimpan alih-alih menjalankan permintaan lagi.

Batas laju

Respons berisi header RateLimit dan RateLimit-Policy serta header lama X-RateLimit-Limit, X-RateLimit-Remaining, dan X-RateLimit-Reset. Respons 429 berisi Retry-After dalam detik: tunggu, lalu coba lagi.

← webhooks · Referensi API