hr_document.expiring
A person's document reaches one of its reminder steps: 90, 60, 30 and 7 days before it expires and on the day,
by default (each document type sets its own; work and residence permits from 120 days). Once a step, never
twice; a document renewed or replaced stops reminding. days_left is on the organisation's clock. Standard
documents only (never an identity, disciplinary or health document), and never the file itself.
Agoo sends this as a signed POST to every enabled endpoint subscribed to hr_document.expiring (or *).
Verify the signature, return any 2xx within 15 seconds, and de-duplicate on webhook-id.
webhook-id*stringThe event's ID. It is the same on every attempt and redelivery, so use it to de-duplicate.
^evt_[0-7][0-9a-hjkmnp-tv-z]{25}$"evt_01m4ww0ezgf2bryg9gxb2gbewx"webhook-timestamp*stringWhen this attempt was signed, in Unix seconds. Reject the request if it is more than 5 minutes from your clock.
^[0-9]+$webhook-signature*stringOne or more space-separated signatures, each v1,<base64>: the base64 HMAC-SHA256 of
{webhook-id}.{webhook-timestamp}.{raw body}, keyed with the base64-decoded part of your whsec_ secret.
During a secret rotation there are two. Accept the request if any one matches.
application/json- body
An event about a person's standard HR document (never an identity, disciplinary or health document).
id*EventIdThe event's ID. Webhook deliveries send it as webhook-id.
^evt_[0-7][0-9a-hjkmnp-tv-z]{25}$"evt_01m4ww0ezgf2bryg9gxb2gbewx"created_at*stringWhen the event happened.
date-timeorganisation_id*OrganisationIdAn organisation ID (TypeID with the org prefix).
^org_[0-7][0-9a-hjkmnp-tv-z]{25}$"org_01kjpsrza0etzb0a4vf72x8ang"livemode*booleanfalse for events in test mode.
type*"hr_document.expiring""hr_document.expiring"data*Return any 2xx status within 15 seconds to acknowledge the event. Agoo ignores the response body, so
acknowledge first and do slow work afterwards.
Example Requests
/hr_document.expiringperson.job_changed Webhook
A change to a person's job takes effect: their job title, grade, department, position, line manager, sites, employment type, contract or contracted hours. It fires when the change is applied: at once when it's for today or earlier, otherwise on its date, whether HR or your system made it or an approver approved a line manager's proposal. `fields` names what changed; the rest is their job as it now stands. Agoo sends this as a signed `POST` to every enabled endpoint subscribed to `person.job_changed` (or `*`). Verify the signature, return any `2xx` within 15 seconds, and de-duplicate on `webhook-id`.
visitor.erased Webhook
A visitor's personal data is erased, through the API, the console or a data subject request. Delete any copy you hold of this visitor's personal data. Agoo sends this as a signed `POST` to every enabled endpoint subscribed to `visitor.erased` (or `*`). Verify the signature, return any `2xx` within 15 seconds, and de-duplicate on `webhook-id`.