Επισκόπηση των webhooks
Η Sursa καταγράφει ένα συμβάν για κάθε σημαντική αλλαγή: μια κάρτα δημοσιεύεται, επαληθεύεται ή αρχειοθετείται, μια ανακοίνωση διαβάζεται, μια ερώτηση μένει αναπάντητη. Μπορείτε να λαμβάνετε τα συμβάντα με δύο τρόπους και να χρησιμοποιείτε και τους δύο μαζί:
| Webhooks | Τροφοδοσία συμβάντων | |
|---|---|---|
| Πώς | Η Sursa στέλνει κάθε συμβάν στη διεύθυνση HTTPS σας τη στιγμή που συμβαίνει. | Διαβάζετε το GET /v1/webhook-events όποτε θέλετε. |
| Καθυστέρηση | Δευτερόλεπτα. | Όσο συχνά ελέγχετε. |
| Απαιτεί | Έναν δημόσιο παραλήπτη HTTPS. | Μόνο ένα κλειδί API με τον ρόλο admin και την εμβέλεια webhooks:manage. |
| Κατάλληλο για | Αντίδραση σε αλλαγές: ειδοποίηση, συγχρονισμός, εκκίνηση ροής εργασιών. | Εργασίες παρτίδων, αναπλήρωση μετά από διακοπή λειτουργίας, συμφωνία δεδομένων. |
Και τα δύο φέρουν τα ίδια συμβάντα με τα ίδια αναγνωριστικά. Κάθε συμβάν διατηρείται στην τροφοδοσία για 30 ημέρες, είτε κάποιο webhook ήταν εγγεγραμμένο σε αυτό είτε όχι.
Το συμβάν
{
"id": "evt_0123456789abcdef0123456789abcdef",
"type": "card.updated",
"created_at": "2026-10-24T10:00:03Z",
"org_id": 1,
"api_version": "1.60.0",
"sequence": 1042,
"object": {"type": "card", "id": "3f2c9a7e-5b1d-4c8e-9f0a-1b2c3d4e5f60"},
"payload": "full",
"data": {
"card": {"id": "3f2c9a7e-5b1d-4c8e-9f0a-1b2c3d4e5f60", "title": "Refund policy", "collection": "support", "version": 4},
"actor_id": 7,
"previous_attributes": {"title": "Refunds"}
},
"test": false
}
| Πεδίο | Σημασία |
|---|---|
id | Το ID του συμβάντος: evt_ και 32 δεκαεξαδικοί χαρακτήρες. Ίδιο σε κάθε προσπάθεια παράδοσης και στην τροφοδοσία. |
type | Τι συνέβη, ως <object>.<past-tense verb>: card.updated, access_request.resolved. |
created_at | Πότε έγινε η αλλαγή, σε UTC. |
api_version | Η έκδοση του API της οποίας το σχήμα ακολουθεί το data. |
object | Ο τύπος και το ID του αντικειμένου που αφορά το συμβάν. |
data | Οι λεπτομέρειες. Η μορφή του εξαρτάται από τον τύπο και περιγράφεται στον κατάλογο συμβάντων. |
data.previous_attributes | Στα συμβάντα *.updated: οι προηγούμενες τιμές των πεδίων που άλλαξαν. |
sequence, payload, test | Μόνο στις παραδόσεις webhook: η θέση στη σειρά των παραδόσεων του webhook, η μορφή σώματος και αν πρόκειται για δοκιμαστικό συμβάν. |
Το data περιέχει μόνο ό,τι θα μπορούσε να δει μέσω του API οποιοσδήποτε αναγνώστης του αντικειμένου. Δεν περιέχει
ποτέ λίστες πρόσβασης, τα δικαιώματα άλλων ανθρώπων ή κρυφά πεδία. Οι αιτίες στα συμβάντα είναι σύντομοι ουδέτεροι
κωδικοί, όπως no_hits, restricted ή index_failed.
Τύποι συμβάντων
Τα συμβάντα καλύπτουν τους εξής τομείς:
| Τομέας | Παραδείγματα |
|---|---|
| Κάρτες | card.created, card.updated, card.published, card.archived, card.deleted, card.indexed, card.index_failed |
| Επαλήθευση | card.verified, card.unverified, verification.expired, verification.requested |
| Δομή | collection.created, folder.updated |
| Συνεργασία | comment.created, draft.publish_requested, announcement.sent, announcement.read |
| Απαντήσεις | question.unanswered, question.feedback_created, access_request.created |
| Άτομα και πρόσβαση | user.created, user.deactivated, group.member_added, api_key.expiring |
| Πηγές και εισαγωγή | source.sync_completed, import.sync_completed, import.document_failed |
| Εργασίες | job.completed, job.failed, export.ready |
| Webhooks | webhook.endpoint_disabled, webhook.ping |
Η πλήρης λίστα, με το σχήμα και ένα παράδειγμα κάθε συμβάντος, βρίσκεται στον κατάλογο συμβάντων της
αναφοράς API. Το GET /v1/webhooks/catalog επιστρέφει
τους τύπους που είναι διαθέσιμοι στην εγκατάστασή σας.
Με τον καιρό προστίθενται νέοι τύποι συμβάντων, και τα υπάρχοντα συμβάντα αποκτούν νέα πεδία. Οι τύποι συμβάντων δεν μετονομάζονται ούτε αφαιρούνται ποτέ. Ο παραλήπτης σας πρέπει να παραλείπει τους τύπους και τα πεδία που δεν γνωρίζει.
Ποιος λαμβάνει τι
Ένα webhook λαμβάνει ένα συμβάν μόνο αν το αντικείμενο του συμβάντος είναι ορατό στο webhook, με τον ίδιο τρόπο όπως
σε ένα κλειδί API: ανάλογα με τον ρόλο του, το προφίλ δεδομένων του και τις συλλογές του. Ένα webhook περιορισμένο
στη συλλογή support δεν λαμβάνει ποτέ συμβάντα για κάρτες στη finance. Τα συμβάντα για άτομα, κλειδιά, πηγές,
εισαγωγές, εργασίες, εξαγωγές, χρεώσεις, εφαρμογές και για τα ίδια τα webhooks πηγαίνουν μόνο σε webhooks με τον
ρόλο admin.
Μέσα σε αυτά τα πλαίσια, κάθε webhook επιλέγει τα συμβάντα του:
- κατά τύπο, με μάσκες:
card.*για κάθε συμβάν κάρτας,*για κάθε συμβάν· - κατά συλλογή και κατά ετικέτα, για τα συμβάντα καρτών.
Η μορφή σώματος ενός webhook είναι full (το συμβάν με data, η προεπιλογή) ή thin (το συμβάν χωρίς data: ο
παραλήπτης σας διαβάζει το αντικείμενο μέσω του API με το δικό του κλειδί και βλέπει πάντα την τρέχουσα κατάστασή του).
Η παράδοση με λίγα λόγια
- Ένα
POSTμέσω HTTPS με το συμβάν ως JSON, υπογεγραμμένο με το μυστικό του webhook σε δύο μορφές: Standard Webhooks (webhook-signature) και την παλαιότερηX-KB-Signature. - Οποιαδήποτε απάντηση
2xxμέσα σε 10 δευτερόλεπτα είναι επιτυχία. - Μια αποτυχία επαναλαμβάνεται για σχεδόν τρεις ημέρες με αυξανόμενες παύσεις. Το
Retry-Afterσε μια απάντηση429ή503τηρείται· το410απενεργοποιεί το webhook· 10 διαδοχικές αποτυχίες το θέτουν σε παύση μέχρι να συνεχιστεί. - Οι παραδόσεις προς ένα webhook στέλνονται αυστηρά με τη σειρά. Ένα αργό webhook δεν καθυστερεί τα άλλα webhooks.
- Το ίδιο συμβάν μπορεί να φτάσει περισσότερες από μία φορές: απορρίπτετε τα διπλότυπα με βάση το
webhook-id.
Ο οδηγός Λήψη webhooks περιγράφει βήμα προς βήμα έναν πλήρη παραλήπτη, με ελέγχους υπογραφής σε Node.js, Python και Go.
Διαχείριση webhooks
| Εργασία | Τελικό σημείο |
|---|---|
| Δημιουργία webhook και λήψη του μυστικού του | POST /v1/webhooks |
| Αλλαγή της διεύθυνσης, των συμβάντων ή της κατάστασης | PATCH /v1/webhooks/{webhook_id} |
| Αποστολή δοκιμαστικού συμβάντος | POST /v1/webhooks/{webhook_id}/test |
| Εναλλαγή του μυστικού | POST /v1/webhooks/{webhook_id}/rotate-secret |
| Συνέχιση ενός webhook σε παύση | POST /v1/webhooks/{webhook_id}/resume |
| Προβολή παραδόσεων και απαντήσεων | GET /v1/webhooks/{webhook_id}/deliveries |
| Επαναποστολή μιας παράδοσης | POST /v1/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver |
Η διαχείριση των webhooks απαιτεί ένα κλειδί με τον ρόλο admin και την εμβέλεια webhooks:manage ή έναν διαχειριστή
στο περιβάλλον διαχείρισης. Ένας οργανισμός μπορεί να έχει έως 20 webhooks. Τα webhooks είναι μέρος του πακέτου του
οργανισμού· χωρίς αυτά, αυτά τα τελικά σημεία απαντούν 403 με τον κωδικό
webhooks.feature_disabled.