Zum Inhalt springen
Sursa Developers

POST/v1/webhooks

Webhook erstellen

create_webhook

Die URL muss https verwenden, und ihr Host muss zu öffentlichen Adressen aufgelöst werden. Private (RFC 1918), Loopback-, Link-Local-, Cloud-Metadaten- und andere Netze für besondere Zwecke werden sowohl bei der Registrierung als auch bei jeder Verbindung abgelehnt. Das Signatur-Secret wird einmal in der Antwort angezeigt (secret); danach kann es nur noch rotiert werden. Eine Organisation kann höchstens 20 Webhooks haben.

Das Abonnement listet Ereignistypen und Domänenmasken auf (card.*, *). Der Zugriff wird auf dieselbe Weise festgelegt wie bei einem API-Schlüssel: role, data_profile_id und collection_ids. Ein Ereignis zu einem Objekt, das die Rolle, das Datenprofil oder die Sammlungen nicht sehen können, wird nicht zugestellt. tags beschränkt Kartenereignisse auf Karten mit einem der Tags. payload: thin sendet Ereignisse ohne data. Benutzerdefinierte Header (headers) und ausgehende Autorisierung (auth) werden verschlüsselt gespeichert; Antworten enthalten nur die Namen der Header und die Flags value_set und auth_set.

Authentifizierung

Senden Sie einen API-Schlüssel im Header Authorization: Authorization: Bearer <Schlüssel>.

Header-Parameter

  • Idempotency-Keystring

    Schlüssel für die sichere Wiederholung eines Schreibvorgangs: 1 bis 255 druckbare ASCII-Zeichen; empfohlen wird eine UUID v4 pro logischer Operation. Eine Wiederholung mit demselben Schlüssel innerhalb von 24 Stunden führt die Operation nicht erneut aus, sondern liefert die gespeicherte Antwort (Status, Header und Body) mit dem Header Idempotency-Replayed: true. Derselbe Schlüssel mit einer anderen Methode, einem anderen Pfad, Content-Type oder Body ergibt 409 api.idempotency_mismatch; solange die erste Anfrage noch läuft, 409 api.idempotency_in_progress mit Retry-After: 1. Nach einer 5xx- oder 429-Antwort wird der Schlüssel freigegeben, und eine Wiederholung führt die Operation erneut aus. Der Schlüssel gilt pro Organisation und Aufrufer (API-Schlüssel, Benutzer oder Schlüssel einer benutzerdefinierten Quelle).

    length ≥ 1, length ≤ 255

Anfragetext

application/json

Objekt: WebhookCreate

  • urlstringerforderlich

    URL des Empfängers, nur https://, bis zu 2048 Zeichen.

    length ≤ 2048

  • descriptionstring

    length ≤ 200

  • eventsarray of WebhookEventFiltererforderlich

    items ≥ 1

  • data_profile_idinteger | null
  • collection_idsarray of integer

    Sammlungen, zu denen der Webhook Ereignisse erhält. Kein Wert oder eine leere Liste bedeutet alle Sammlungen, die für die Rolle und das Datenprofil verfügbar sind. Ein Schlüssel, der selbst auf Sammlungen beschränkt ist, erstellt einen Webhook nur mit einer nicht leeren Liste seiner eigenen Sammlungen. Ohne dieses Feld, mit einer leeren Liste oder mit einer Sammlung außerhalb seiner Liste ergibt die Anfrage 403 webhooks.collections_outside_key.

    items ≤ 200

  • tagsarray of string

    items ≤ 50

  • headersarray of WebhookHeaderInput

    items ≤ 10

Antworten

201Erstellt. Nur hier wird `secret` angezeigt.

Antwort-Header

  • RateLimit-Policy

    Geltende Limits im Format des IETF-Entwurfs draft-ietf-httpapi-ratelimit-headers: durch Kommas getrennte Einträge "<name>";q=<quota>;w=<window in seconds>. key ist die Anfragerate des API-Schlüssels (das Kontingent ist der Burst, das Fenster die Zeit bis zum vollständigen Auffüllen; für eine Sitzung heißt der Eintrag user, ohne Anmeldedaten ip); minute, day und month sind die Kontingente der Organisation für die Kalenderminute, den Kalendertag und den Kalendermonat in UTC.

  • RateLimit

    Was von jedem Limit in RateLimit-Policy übrig ist: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limit des strengsten Eintrags in RateLimit-Policy (des Eintrags mit den wenigsten verbleibenden Anfragen).

  • X-RateLimit-Remaining

    Verbleibende Anfragen unter dem strengsten Limit.

  • X-RateLimit-Reset

    Sekunden bis zum Zurücksetzen des strengsten Limits.

  • Idempotency-Replayed

    true bedeutet, dass die für diesen Idempotency-Key gespeicherte Antwort erneut geliefert wurde: Die Operation wurde nicht noch einmal ausgeführt.

application/json

Objekt: WebhookCreated

  • idintegererforderlich
  • urlstringerforderlich
  • descriptionstringerforderlich
  • eventsarray of WebhookEventFiltererforderlich
  • activebooleanerforderlich
  • statusWebhookStatuserforderlich
  • paused_atstring (date-time) | null
  • paused_reasonstring | null

    failures: 10 fehlgeschlagene Versuche in Folge; feature_disabled: der Tarif enthält keine Webhooks.

  • disabled_reasonstring | null

    gone: der Empfänger hat mit 410 geantwortet; manual: von einem Administrator deaktiviert.

    Zulässige Werte: gonemanualnull

  • disabled_atstring (date-time) | null
  • roleWebhookRoleerforderlich
  • data_profile_idinteger | null

    Datenprofil des Webhooks (null bedeutet kein Profil, wie bei einem API-Schlüssel mit derselben Rolle).

  • collection_idsarray of integererforderlich

    Sammlungen, über die der Webhook Ereignisse erhält; leer bedeutet alle Sammlungen, die für die Rolle und das Datenprofil verfügbar sind.

  • tagsarray of stringerforderlich

    Kartenereignisse nur für Karten mit einem dieser Tags; leer bedeutet kein Filter.

  • payloadWebhookPayloadModeerforderlich
  • headersarray of WebhookHeadererforderlich
  • auth_typestring | null

    Art der ausgehenden Autorisierung (null bedeutet keine).

    Zulässige Werte: bearerbasicnull

  • auth_setbooleanerforderlich

    Ob eine ausgehende Autorisierung festgelegt ist (die Werte werden nie zurückgegeben).

  • previous_secret_valid_untilstring (date-time) | null

    Bis wann Zustellungen zusätzlich mit dem vorherigen Secret signiert werden (null bedeutet, dass es keine Überlappung gibt).

  • consecutive_failuresintegererforderlich
  • 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)erforderlich
  • updated_atstring (date-time)erforderlich
  • secretstringerforderlich

    whsec_ gefolgt von 32 Bytes in Base64 (neue Secrets verwenden das Standardalphabet mit Padding, ältere base64url). Speichern Sie es beim Empfänger; in API-Antworten erscheint es nie wieder. Der Signaturschlüssel nach Standard Webhooks ist die Base64-Dekodierung des Teils nach whsec_.

  • previous_valid_untilstring (date-time) | null

    Bis wann das vorherige Secret noch akzeptiert wird (nach einer Rotation). null bei der Erstellung.

400Die Anfrage ist ungültig: Ein Parameterwert oder der Zustand des Objekts lässt die Aktion nicht zu (`detail` ist eine Meldung).

Antwort-Header

  • RateLimit-Policy

    Geltende Limits im Format des IETF-Entwurfs draft-ietf-httpapi-ratelimit-headers: durch Kommas getrennte Einträge "<name>";q=<quota>;w=<window in seconds>. key ist die Anfragerate des API-Schlüssels (das Kontingent ist der Burst, das Fenster die Zeit bis zum vollständigen Auffüllen; für eine Sitzung heißt der Eintrag user, ohne Anmeldedaten ip); minute, day und month sind die Kontingente der Organisation für die Kalenderminute, den Kalendertag und den Kalendermonat in UTC.

  • RateLimit

    Was von jedem Limit in RateLimit-Policy übrig ist: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limit des strengsten Eintrags in RateLimit-Policy (des Eintrags mit den wenigsten verbleibenden Anfragen).

  • X-RateLimit-Remaining

    Verbleibende Anfragen unter dem strengsten Limit.

  • X-RateLimit-Reset

    Sekunden bis zum Zurücksetzen des strengsten Limits.

application/json

Objekt: Error

401Es wurden keine Anmeldedaten gesendet (weder ein Sitzungscookie noch ein API-Schlüssel), oder der Schlüssel wurde nicht gefunden.

Antwort-Header

  • RateLimit-Policy

    Geltende Limits im Format des IETF-Entwurfs draft-ietf-httpapi-ratelimit-headers: durch Kommas getrennte Einträge "<name>";q=<quota>;w=<window in seconds>. key ist die Anfragerate des API-Schlüssels (das Kontingent ist der Burst, das Fenster die Zeit bis zum vollständigen Auffüllen; für eine Sitzung heißt der Eintrag user, ohne Anmeldedaten ip); minute, day und month sind die Kontingente der Organisation für die Kalenderminute, den Kalendertag und den Kalendermonat in UTC.

  • RateLimit

    Was von jedem Limit in RateLimit-Policy übrig ist: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limit des strengsten Eintrags in RateLimit-Policy (des Eintrags mit den wenigsten verbleibenden Anfragen).

  • X-RateLimit-Remaining

    Verbleibende Anfragen unter dem strengsten Limit.

  • X-RateLimit-Reset

    Sekunden bis zum Zurücksetzen des strengsten Limits.

application/json

Objekt: Error

403Die Aktion ist nicht erlaubt: Die Rolle reicht nicht aus, es besteht kein Zugriff auf die Sammlung oder Karte, die Anfrage läuft im Modus „Ansicht als“, oder die Organisation ist gesperrt oder gelöscht (`detail` ist ein Objekt mit `code: org_suspended | org_deleted`).

Antwort-Header

  • RateLimit-Policy

    Geltende Limits im Format des IETF-Entwurfs draft-ietf-httpapi-ratelimit-headers: durch Kommas getrennte Einträge "<name>";q=<quota>;w=<window in seconds>. key ist die Anfragerate des API-Schlüssels (das Kontingent ist der Burst, das Fenster die Zeit bis zum vollständigen Auffüllen; für eine Sitzung heißt der Eintrag user, ohne Anmeldedaten ip); minute, day und month sind die Kontingente der Organisation für die Kalenderminute, den Kalendertag und den Kalendermonat in UTC.

  • RateLimit

    Was von jedem Limit in RateLimit-Policy übrig ist: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limit des strengsten Eintrags in RateLimit-Policy (des Eintrags mit den wenigsten verbleibenden Anfragen).

  • X-RateLimit-Remaining

    Verbleibende Anfragen unter dem strengsten Limit.

  • X-RateLimit-Reset

    Sekunden bis zum Zurücksetzen des strengsten Limits.

application/json

Objekt: Error

409Der Zustand des Objekts lässt die Aktion nicht zu, zum Beispiel bei einem Duplikat, einer laufenden Indexierung oder einem bereits verarbeiteten Job.

Antwort-Header

  • RateLimit-Policy

    Geltende Limits im Format des IETF-Entwurfs draft-ietf-httpapi-ratelimit-headers: durch Kommas getrennte Einträge "<name>";q=<quota>;w=<window in seconds>. key ist die Anfragerate des API-Schlüssels (das Kontingent ist der Burst, das Fenster die Zeit bis zum vollständigen Auffüllen; für eine Sitzung heißt der Eintrag user, ohne Anmeldedaten ip); minute, day und month sind die Kontingente der Organisation für die Kalenderminute, den Kalendertag und den Kalendermonat in UTC.

  • RateLimit

    Was von jedem Limit in RateLimit-Policy übrig ist: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limit des strengsten Eintrags in RateLimit-Policy (des Eintrags mit den wenigsten verbleibenden Anfragen).

  • X-RateLimit-Remaining

    Verbleibende Anfragen unter dem strengsten Limit.

  • X-RateLimit-Reset

    Sekunden bis zum Zurücksetzen des strengsten Limits.

application/json

Objekt: Error

422Validierungsfehler: Der Body oder die Parameter entsprechen nicht dem Schema (`detail` ist eine Liste von Validierungsfehlern), oder ein Parameterwert liegt außerhalb des zulässigen Bereichs (`detail` ist eine Meldung).

Antwort-Header

  • RateLimit-Policy

    Geltende Limits im Format des IETF-Entwurfs draft-ietf-httpapi-ratelimit-headers: durch Kommas getrennte Einträge "<name>";q=<quota>;w=<window in seconds>. key ist die Anfragerate des API-Schlüssels (das Kontingent ist der Burst, das Fenster die Zeit bis zum vollständigen Auffüllen; für eine Sitzung heißt der Eintrag user, ohne Anmeldedaten ip); minute, day und month sind die Kontingente der Organisation für die Kalenderminute, den Kalendertag und den Kalendermonat in UTC.

  • RateLimit

    Was von jedem Limit in RateLimit-Policy übrig ist: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limit des strengsten Eintrags in RateLimit-Policy (des Eintrags mit den wenigsten verbleibenden Anfragen).

  • X-RateLimit-Remaining

    Verbleibende Anfragen unter dem strengsten Limit.

  • X-RateLimit-Reset

    Sekunden bis zum Zurücksetzen des strengsten Limits.

application/json

Objekt: Error

429Zu viele Anfragen (`api.rate_limited`), das Kontingent der Organisation für die Minute, den Tag oder den Monat ist aufgebraucht (`api.quota_exceeded`; `error.details` enthält `quota`, `limit` und `reset_at`), das Limit der Organisation ist erreicht, oder der Antwortdienst ist ausgelastet (`answers.engine_busy`). Warten Sie die im Header `Retry-After` angegebene Zeit ab.

Antwort-Header

  • Retry-After

    Anzahl der Sekunden, die Sie warten sollten, bevor Sie die Anfrage wiederholen.

  • RateLimit-Policy

    Geltende Limits im Format des IETF-Entwurfs draft-ietf-httpapi-ratelimit-headers: durch Kommas getrennte Einträge "<name>";q=<quota>;w=<window in seconds>. key ist die Anfragerate des API-Schlüssels (das Kontingent ist der Burst, das Fenster die Zeit bis zum vollständigen Auffüllen; für eine Sitzung heißt der Eintrag user, ohne Anmeldedaten ip); minute, day und month sind die Kontingente der Organisation für die Kalenderminute, den Kalendertag und den Kalendermonat in UTC.

  • RateLimit

    Was von jedem Limit in RateLimit-Policy übrig ist: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limit des strengsten Eintrags in RateLimit-Policy (des Eintrags mit den wenigsten verbleibenden Anfragen).

  • X-RateLimit-Remaining

    Verbleibende Anfragen unter dem strengsten Limit.

  • X-RateLimit-Reset

    Sekunden bis zum Zurücksetzen des strengsten Limits.

application/json

Objekt: Error

Fehlercodes

Codes, die dieser Endpunkt in error.code zurückgeben kann, zusätzlich zu den allgemeinen Codes jeder Anfrage.

Sichere Wiederholungen

Senden Sie bei jedem POST und PATCH einen Header Idempotency-Key (zum Beispiel eine UUID). Eine Wiederholung mit demselben Schlüssel innerhalb von 24 Stunden gibt die gespeicherte Antwort zurück, statt die Anfrage erneut auszuführen.

Ratenlimits

Antworten enthalten die Header RateLimit und RateLimit-Policy sowie die älteren X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset. Eine Antwort 429 enthält Retry-After in Sekunden: Warten Sie und versuchen Sie es dann erneut.

← webhooks · API-Referenz