POST/v1/webhooks
Vytvoriť webhook
create_webhook
URL musí používať https a jej hostiteľ sa musí prekladať na verejné adresy. Súkromné siete (RFC 1918), loopback, link-local, siete metadátových služieb cloudu a ďalšie siete na špeciálne účely sa odmietajú pri registrácii aj pri každom pripojení. Tajný kľúč podpisu sa zobrazí raz v odpovedi (secret); potom ho možno už len vymeniť. Organizácia môže mať najviac 20 webhookov.
Odber obsahuje typy udalostí a masky domén (card.*, *). Prístup sa nastavuje rovnako ako pri kľúči API: role, data_profile_id a collection_ids. Udalosť o objekte, ktorý rola, dátový profil alebo kolekcie nevidia, sa nedoručí. tags obmedzia udalosti kariet na karty s ktorýmkoľvek zo štítkov. payload: thin posiela udalosti bez data. Vlastné hlavičky (headers) a odchádzajúca autorizácia (auth) sa ukladajú zašifrované; odpovede obsahujú len názvy hlavičiek a príznaky value_set a auth_set.
Autentifikácia
Odošlite kľúč API v hlavičke Authorization: Authorization: Bearer <kľúč>.
Parametre hlavičky
Idempotency-KeystringKľúč na bezpečné opakovanie zápisu: 1 až 255 tlačiteľných znakov ASCII; odporúča sa UUID v4 pre každú logickú operáciu. Opakovanie s tým istým kľúčom do 24 hodín operáciu znova nespustí: vráti uloženú odpoveď (stav, hlavičky a telo) s hlavičkou
Idempotency-Replayed: true. Ten istý kľúč s inou metódou, cestou,Content-Typealebo telom vráti409 api.idempotency_mismatch; kým prvá požiadavka ešte prebieha, vráti409 api.idempotency_in_progresssRetry-After: 1. Po odpovedi 5xx alebo 429 sa kľúč uvoľní a opakovanie operáciu spustí znova. Kľúč platí v rámci organizácie a volajúceho (kľúč API, používateľ alebo kľúč vlastného zdroja).length ≥ 1, length ≤ 255
Telo požiadavky
application/json
urlstringpovinnéURL príjemcu, len
https://, najviac 2048 znakov.length ≤ 2048
descriptionstringlength ≤ 200
items ≥ 1
roleWebhookRoledata_profile_idinteger | nullcollection_idsarray of integerKolekcie, o ktorých webhook dostáva udalosti. Chýbajúca hodnota alebo prázdny zoznam znamená všetky kolekcie dostupné pre rolu a dátový profil. Kľúč, ktorý je sám obmedzený na kolekcie, vytvorí webhook len s neprázdnym zoznamom svojich vlastných kolekcií. Bez tohto poľa, s prázdnym zoznamom alebo s kolekciou mimo jeho zoznamu požiadavka vráti
403 webhooks.collections_outside_key.items ≤ 200
tagsarray of stringitems ≤ 50
payloadWebhookPayloadModeheadersarray of WebhookHeaderInputitems ≤ 10
authWebhookAuthInput
Odpovede
201Vytvorené. Toto je jediný raz, keď sa `secret` zobrazí.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
Idempotency-Replayedtrueznamená, že odpoveď bola zopakovaná z uloženej odpovede pre tentoIdempotency-Key: operácia sa znova nespustila.
application/json
idintegerpovinnéurlstringpovinnédescriptionstringpovinnéactivebooleanpovinnépaused_atstring (date-time) | nullpaused_reasonstring | nullfailures: 10 neúspešných pokusov za sebou;feature_disabled: tarifa nezahŕňa webhooky.disabled_reasonstring | nullgone: príjemca odpovedal 410;manual: vypnuté administrátorom.Povolené hodnoty:
gonemanualnulldisabled_atstring (date-time) | nulldata_profile_idinteger | nullDátový profil webhooku (
nullznamená bez profilu, ako pri kľúči API s rovnakou rolou).collection_idsarray of integerpovinnéKolekcie, o ktorých webhook dostáva udalosti; prázdne znamená všetky kolekcie dostupné pre rolu a dátový profil.
tagsarray of stringpovinnéUdalosti kariet len pre karty s niektorým z týchto štítkov; prázdne znamená bez filtra.
auth_typestring | nullTyp odchádzajúcej autorizácie (
nullznamená žiadna).Povolené hodnoty:
bearerbasicnullauth_setbooleanpovinnéČi je odchádzajúca autorizácia nastavená (hodnoty sa nikdy nevracajú).
previous_secret_valid_untilstring (date-time) | nullDokedy sa doručenia podpisujú aj predchádzajúcim tajným kľúčom (
nullznamená, že prekryv nie je).healthWebhookHealthconsecutive_failuresintegerpovinnélast_delivery_atstring (date-time) | nulllast_success_atstring (date-time) | nulllast_errorstring | nullcreated_byinteger | nullcreated_by_namestring | nullcreated_atstring (date-time)povinnéupdated_atstring (date-time)povinnésecretstringpovinnéwhsec_a za ním 32 bajtov v base64 (nové tajné kľúče používajú štandardnú abecedu s doplnením, staršie base64url). Uložte ho na strane príjemcu; v odpovediach API sa už nikdy neobjaví. Podpisový kľúč Standard Webhooks je base64 dekódovaná časť zawhsec_.previous_valid_untilstring (date-time) | nullDokedy sa predchádzajúci tajný kľúč ešte prijíma (po výmene). Pri vytvorení
null.
400Požiadavka je neplatná: hodnota parametra alebo stav objektu akciu nedovoľuje (`detail` je správa).
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
401Neboli odoslané žiadne prihlasovacie údaje (ani cookie relácie, ani kľúč API) alebo sa kľúč nenašiel.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
403Akcia nie je povolená: rola nestačí, chýba prístup ku kolekcii alebo karte, požiadavka beží v režime „View as“ alebo je organizácia pozastavená či odstránená (`detail` je objekt s `code: org_suspended | org_deleted`).
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
409Stav objektu akciu nedovoľuje, napríklad duplicita, prebiehajúce indexovanie alebo úloha, ktorá je už spracovaná.
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
422Chyba validácie: telo alebo parametre nezodpovedajú schéme (`detail` je zoznam chýb validácie) alebo je hodnota parametra mimo rozsahu (`detail` je správa).
Hlavičky odpovede
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
429Príliš veľa požiadaviek (`api.rate_limited`), vyčerpaná kvóta organizácie na minútu, deň alebo mesiac (`api.quota_exceeded`; `error.details` obsahuje `quota`, `limit` a `reset_at`), dosiahnutý limit organizácie alebo zaneprázdnená služba odpovedí (`answers.engine_busy`). Počkajte čas uvedený v hlavičke `Retry-After`.
Hlavičky odpovede
Retry-AfterPočet sekúnd, ktoré treba počkať pred opakovaním požiadavky.
RateLimit-PolicyPlatné limity vo formáte návrhu IETF
draft-ietf-httpapi-ratelimit-headers: položky oddelené čiarkami"<name>";q=<quota>;w=<window in seconds>.keyje frekvencia požiadaviek kľúča API (kvóta je nárazová špička, okno je čas na jej úplné doplnenie; pre reláciu je touser, bez prihlasovacích údajovip);minute,dayamonthsú kvóty organizácie na kalendárnu minútu, deň a mesiac v UTC.RateLimitČo zostáva z každého limitu v
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimit najprísnejšej položky v
RateLimit-Policy(tej, ktorej zostáva najmenej požiadaviek).X-RateLimit-RemainingPočet požiadaviek, ktoré zostávajú v rámci najprísnejšieho limitu.
X-RateLimit-ResetPočet sekúnd do obnovenia najprísnejšieho limitu.
application/json
Chybové kódy
Kódy, ktoré táto operácia môže vrátiť v error.code, okrem všeobecných kódov každej požiadavky.
- 409api.idempotency_in_progress
- 400api.idempotency_key_invalid
- 409api.idempotency_mismatch
- 403webhooks.feature_disabled
- 401auth.not_authenticated
- 403authz.forbidden
- 400webhooks.invalid_url
- 400webhooks.private_address
- 400webhooks.unresolvable
- 400webhooks.unknown_event
- 400webhooks.events_required
- 400webhooks.description_too_long
- 409webhooks.too_many
- 400webhooks.headers_invalid
- 400webhooks.auth_invalid
- 400webhooks.access_invalid
- 403webhooks.collections_outside_key
Bezpečné opakovanie
S každou požiadavkou POST a PATCH odošlite hlavičku Idempotency-Key (napríklad UUID). Opakovaná požiadavka s rovnakým kľúčom do 24 hodín vráti uloženú odpoveď namiesto toho, aby sa požiadavka vykonala znova.
Limity frekvencie
Odpovede obsahujú hlavičky RateLimit a RateLimit-Policy a staršie X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset. Odpoveď 429 má hlavičku Retry-After v sekundách: počkajte a požiadavku zopakujte.