Μετάβαση στο περιεχόμενο
Sursa Developers

POST/v1/webhooks

Δημιουργία webhook

create_webhook

Η διεύθυνση URL πρέπει να χρησιμοποιεί https, και ο κεντρικός υπολογιστής της πρέπει να αντιστοιχεί σε δημόσιες διευθύνσεις. Τα ιδιωτικά δίκτυα (RFC 1918), το loopback, το link-local, τα μεταδεδομένα του cloud και άλλα δίκτυα ειδικού σκοπού απορρίπτονται τόσο κατά την καταχώριση όσο και σε κάθε σύνδεση. Το μυστικό υπογραφής εμφανίζεται μία φορά στην απόκριση (secret)· μετά από αυτό μπορεί μόνο να εναλλαχθεί. Ένας οργανισμός μπορεί να έχει έως 20 webhooks.

Η συνδρομή παραθέτει τύπους συμβάντων και μάσκες ομάδων συμβάντων (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 (κλειδί 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

    Συλλογές για τις οποίες το webhook λαμβάνει συμβάντα. Η απουσία τιμής ή μια κενή λίστα σημαίνει όλες τις συλλογές που είναι διαθέσιμες στον ρόλο και στο προφίλ δεδομένων. Ένα κλειδί που είναι το ίδιο περιορισμένο σε συλλογές δημιουργεί webhook μόνο με μια μη κενή λίστα από τις δικές του συλλογές. Χωρίς αυτό το πεδίο, με κενή λίστα ή με μια συλλογή εκτός της λίστας του, το αίτημα επιστρέφει 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: το πακέτο δεν περιλαμβάνει webhooks.

  • disabled_reasonstring | null

    gone: ο παραλήπτης απάντησε 410· manual: απενεργοποιήθηκε από διαχειριστή.

    Επιτρεπόμενες τιμές: gonemanualnull

  • disabled_atstring (date-time) | null
  • roleWebhookRoleυποχρεωτικό
  • data_profile_idinteger | null

    Προφίλ δεδομένων του webhook (null σημαίνει χωρίς προφίλ, όπως για ένα κλειδί API με τον ίδιο ρόλο).

  • collection_idsarray of integerυποχρεωτικό

    Συλλογές για τις οποίες το webhook λαμβάνει συμβάντα· κενό σημαίνει όλες οι συλλογές που είναι διαθέσιμες στον ρόλο και στο προφίλ δεδομένων.

  • 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 byte σε 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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

401Δεν στάλθηκαν διαπιστευτήρια (ούτε cookie συνεδρίας ούτε κλειδί 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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

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

    Δευτερόλεπτα έως τον μηδενισμό του αυστηρότερου ορίου.

Κωδικοί σφαλμάτων

Κωδικοί που μπορεί να επιστρέψει αυτό το τελικό σημείο στο 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