Webhook endpoints
Parasend tells your system about events by sending a small JSON payload to your HTTPS endpoint; fetch the resource for its full state. Every request is signed with HMAC-SHA256 over timestamp. in the Parasend-Signature header; refuse a timestamp more than 5 minutes old. Failed attempts are retried with exponential backoff for up to 3 days. An endpoint may also require Parasend to authenticate (auth.): none (the signature only, the default), static_, or oauth2_ against your own identity provider. The signature is sent whatever the mode. Parasend connects from fixed IP addresses, so you can allow-list them.
Endpoints
- POSTAdd a webhook endpoint
/v1/webhook_endpoints - GETList webhook endpoints
/v1/webhook_endpoints - GETRetrieve a webhook endpoint
/v1/webhook_endpoints/{id} - PATCHUpdate a webhook endpoint
/v1/webhook_endpoints/{id} - DELDelete a webhook endpoint
/v1/webhook_endpoints/{id} - POSTSend a test event
/v1/webhook_endpoints/{id}/test - POSTReplay events
/v1/webhook_endpoints/{id}/replay - GETList an endpoint's attempts
/v1/webhook_endpoints/{id}/attempts - POSTRoll an endpoint's signing secret
/v1/webhook_endpoints/{id}/roll_secret
The WebhookEndpoint object
-
idstringThe webhook endpoint's ID, starting
whk_. -
objectstringAlways
webhook_.endpoint -
urlstringThe address Parasend posts events to: HTTPS, on port 443, on a public host.
-
event_typesarray of stringOne ofdelivery.createddelivery.rejecteddelivery.notifieddelivery.openeddelivery.email_openeddelivery.auth_faileddelivery.confirmeddelivery.downloadeddelivery.delivereddelivery.remindeddelivery.bounceddelivery.expireddelivery.revokeddelivery.consignment_faileddelivery.evidence_sealeddelivery.evidence_timestamp_deferreddelivery.evidence_timestamp_recovereddelivery.paper_pending_approvaldelivery.paper_dispatcheddelivery.paper_faileddocument.previewedbatch.finalizedbatch.completedlookup.completedconsent.grantedconsent.withdrawninvitation.sentlink.openedotp.sentotp.verifiedotp.lockedsecret.attachedsecret.availablesecret.revealedsecret.copiedsecret.expiredsecret.exhaustedsecret.revokedrequest.sentrequest.openedrequest.fulfilledrequest.expiredrequest.closedrequest.reopeneddeletion.scheduledrecipient_domain.verifiedrecipient_domain.degradedrecipient_domain.failedmember.suspendedmember.restoredmember.removedbatch.cancelledbatch.policy_changeddelivery.policy_changedemail_sender.verifiedemail_sender.degradedemail_sender.failedemail_sender.restored -
secretstring · nullableHMAC signing secret. Present only in the creation response.
-
authobjectHow Parasend authenticates to your endpoint, in addition to the HMAC signature, which is always sent. Secrets are write-only: accepted on create and update, never returned. The endpoint shows
mode, the settings that are not secret, and whether a secret is set.3 fields of
auth-
none = HMAC only. static_bearer = an
Authorizationheader carryingBearer <token>with a customer-supplied token. oauth2_client_credentials = a token obtained from the customer's IdP by the client-credentials grant, cached until expiry, sent as the bearer.One ofnonestatic_beareroauth2_client_credentialsDefault"none" -
auth.static_bearerobject · nullableWith
mode: static_: thebearer tokenParasend sends asAuthorization: Bearer <token>, at most 4,096 characters (write-only; responses showtoken_). null for any other mode.set 1 field of
static_bearer-
auth.static_bearer.token_setboolean
-
-
auth.oauth2object · nullableWith
mode: oauth2_: your token endpoint (client_ credentials token_, HTTPS),url client_,id client_(write-only; responses showsecret client_), optionalsecret_ set scopeandaudience, andauth_. null for any other mode.style 6 fields of
oauth2-
auth.oauth2.token_urlstring · uriHTTPS only.
-
auth.oauth2.client_idstring -
auth.oauth2.scopestring · nullable -
auth.oauth2.audiencestring · nullable -
auth.oauth2.auth_stylestringOne ofclient_secret_basicclient_secret_postDefault"client_secret_basic"
-
-
-
statusstringenabled: events are sent to it.disabled: paused; new events are not queued for it, and pending retries are cancelled when they come due.One ofenableddisabled -
createdstring · date-timeWhen it was created, in ISO 8601 (UTC).
-
livemodebooleantruein live mode,falsein test mode. -
descriptionstring · nullableYour own note about the endpoint.
-
created_byobject · nullableWho created the endpoint: a person, or the holder of the API key used. null for endpoints created before this was recorded.
3 fields of
created_by-
created_by.user_idstring -
created_by.namestring · nullable -
created_by.viastringOne ofportalapi_key
-
-
exhausted_eventsintegerEvents that ran out of retries and have not been replayed successfully. More than 0 marks the endpoint in the portal.
-
last_exhausted_atstring · date-time · nullableWhen an event last ran out of retries on this endpoint, in ISO 8601 (UTC); null if none ever has.
-
retrying_eventsintegerEvents with at least one failed attempt whose retries are still running.
-
last_attemptobject · nullableThe endpoint's latest attempt, in brief; null before the first.
-
previous_secret_expires_atstring · date-time · nullableSet for 24 hours after a roll; null otherwise.
-
delivery_sourcesobject · nullablenull: every delivery's events.