Към съдържанието
Sursa Developers

POST/v1/webhooks

Създаване на уебхук

create_webhook

URL адресът трябва да използва https, а хостът му трябва да се разрешава до публични адреси. Частните мрежи (RFC 1918), loopback и link-local мрежите, мрежите за метаданни на облака и другите мрежи със специално предназначение се отхвърлят както при регистрацията, така и при всяка връзка. Тайната за подписване се показва веднъж в отговора (secret); след това тя може само да се сменя. Една организация може да има най-много 20 уебхука.

Абонаментът изброява типове събития и маски на групи събития (card.*, *). Достъпът се задава по същия начин като за API ключ: role, data_profile_id и collection_ids. Събитие за обект, който ролята, профилът за достъп или колекциите не виждат, не се доставя. tags ограничават събитията за карти до картите с някой от етикетите. payload: thin изпраща събития без data. Собствените заглавки (headers) и изходящата оторизация (auth) се съхраняват шифрирани; отговорите съдържат само имената на заглавките и флаговете value_set и auth_set.

Удостоверяване

Изпратете API ключ в заглавката Authorization: Authorization: Bearer <ключ>.

Параметри в заглавката

  • Idempotency-Keystring

    Ключ за безопасен повторен опит при запис: от 1 до 255 печатаеми ASCII знака; препоръчва се UUID v4 за всяка логическа операция. Повторен опит със същия ключ в рамките на 24 часа не изпълнява операцията отново: връща записания отговор (статус, заглавки и тяло) със заглавката Idempotency-Replayed: true. Същият ключ с друг метод, път, Content-Type или тяло връща 409 api.idempotency_mismatch, а докато първата заявка още се изпълнява – 409 api.idempotency_in_progress с Retry-After: 1. След отговор 5xx или 429 ключът се освобождава и повторният опит изпълнява операцията отново. Ключът важи в рамките на организацията и извикващия (API ключ, потребител или ключ на собствен източник).

    length ≥ 1, length ≤ 255

Тяло на заявката

application/json

Обект: WebhookCreate

  • urlstringзадължително

    URL адрес на получателя, само https://, до 2048 знака.

    length ≤ 2048

  • descriptionstring

    length ≤ 200

  • eventsarray of WebhookEventFilterзадължително

    items ≥ 1

  • data_profile_idinteger | null
  • collection_idsarray of integer

    Колекции, за които уебхукът получава събития. Липса на стойност или празен списък означава всички колекции, достъпни за ролята и профила за достъп. Ключ, който сам е ограничен до колекции, създава уебхук само с непразен списък от свои колекции. Без това поле, с празен списък или с колекция извън списъка му заявката връща 403 webhooks.collections_outside_key.

    items ≤ 200

  • tagsarray of string

    items ≤ 50

  • headersarray of WebhookHeaderInput

    items ≤ 10

Отговори

201Създаден. Това е единственият път, когато се показва `secret`.

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

  • Idempotency-Replayed

    true означава, че отговорът е възпроизведен от записания за този Idempotency-Key: операцията не е изпълнена отново.

application/json

Обект: WebhookCreated

  • idintegerзадължително
  • urlstringзадължително
  • descriptionstringзадължително
  • eventsarray of WebhookEventFilterзадължително
  • activebooleanзадължително
  • statusWebhookStatusзадължително
  • paused_atstring (date-time) | null
  • paused_reasonstring | null

    failures: 10 неуспешни опита подред; feature_disabled: планът не включва уебхукове.

  • disabled_reasonstring | null

    gone: получателят е отговорил с 410; manual: изключен от администратор.

    Допустими стойности: gonemanualnull

  • disabled_atstring (date-time) | null
  • roleWebhookRoleзадължително
  • data_profile_idinteger | null

    Профил за достъп на уебхука (null означава без профил, както при API ключ със същата роля).

  • collection_idsarray of integerзадължително

    Колекции, за които уебхукът получава събития; празно означава всички колекции, достъпни за ролята и профила за достъп.

  • tagsarray of stringзадължително

    Събития за карти само за карти с някой от тези етикети; празно означава без филтър.

  • payloadWebhookPayloadModeзадължително
  • headersarray of WebhookHeaderзадължително
  • auth_typestring | null

    Тип на изходящата оторизация (null означава без такава).

    Допустими стойности: bearerbasicnull

  • auth_setbooleanзадължително

    Дали е зададена изходяща оторизация (стойностите никога не се връщат).

  • previous_secret_valid_untilstring (date-time) | null

    До кога доставките се подписват и с предишната тайна (null означава, че няма припокриване).

  • consecutive_failuresintegerзадължително
  • last_delivery_atstring (date-time) | null
  • last_success_atstring (date-time) | null
  • last_errorstring | null
  • created_byinteger | null
  • created_by_namestring | null
  • created_atstring (date-time)задължително
  • updated_atstring (date-time)задължително
  • secretstringзадължително

    whsec_, последвано от 32 байта в base64 (новите тайни използват стандартната азбука с допълване, по-старите – base64url). Съхранявайте я при получателя; тя никога повече не се появява в отговорите на API. Ключът за подписване по Standard Webhooks е декодираната от base64 част след whsec_.

  • previous_valid_untilstring (date-time) | null

    До кога предишната тайна още се приема (след смяна). null при създаване.

400Заявката е невалидна: стойност на параметър или състоянието на обекта не позволява действието (`detail` е съобщение).

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

401Не са изпратени идентификационни данни (нито бисквитка на сесията, нито API ключ) или ключът не е намерен.

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

403Действието не е разрешено: ролята е недостатъчна, няма достъп до колекцията или картата, заявката се изпълнява в режим „View as“ или организацията е спряна или изтрита (`detail` е обект с `code: org_suspended | org_deleted`).

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

409Състоянието на обекта не позволява действието, например дубликат, индексиране в ход или задание, което вече е обработено.

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

422Грешка при валидиране: тялото или параметрите не съответстват на схемата (`detail` е списък с грешки при валидиране) или стойност на параметър е извън допустимия диапазон (`detail` е съобщение).

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

429Твърде много заявки (`api.rate_limited`), квотата на организацията за минутата, деня или месеца е изчерпана (`api.quota_exceeded`; `error.details` съдържа `quota`, `limit` и `reset_at`), достигнат е лимит на организацията или услугата за отговори е заета (`answers.engine_busy`). Изчакайте времето от заглавката `Retry-After`.

Заглавки на отговора

  • Retry-After

    Брой секунди, които да изчакате, преди да повторите заявката.

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

Кодове на грешки

Кодове, които тази операция може да върне в error.code, освен общите кодове на всяка заявка.

Безопасни повторни опити

Изпращайте заглавката Idempotency-Key (например UUID) с всяка заявка POST и PATCH. Повторен опит със същия ключ в рамките на 24 часа връща запазения отговор, вместо да изпълни заявката отново.

Лимити на честотата

Отговорите съдържат заглавките RateLimit и RateLimit-Policy, както и по-ранните X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset. Отговорът 429 съдържа Retry-After в секунди: изчакайте и опитайте отново.

← webhooks · Справочник на API