GET /v1/events, for a consumer that polls, and webhooks, for one
that listens.
Effective, not entered
A dated change, such as a start date or a job change on its effective date, is written when it takes effect, not when it was entered. A promotion entered in January for 1 March is an event on 1 March. So an event is what is true now, and a consumer never has to hold a future change back.The outbox
Events are written to an outbox in the same step as the change itself, so a change that is made always has its event, and an event never describes a change that was not made. Each event is then published once it takes effect:occurredAt is when the change was recorded, publishedAt is when it took effect
and the event became readable.
The feed
since filters on publishedAt. The feed pages like any other list: see
Pagination. It needs the Directory group, and changedFields names only fields the key’s
groups open.
Ordering and duplicates
Every event has anid, and a sequence: per person, in the order their changes took effect. Drop an
event older than the last sequence you saw for that person. Treat an id you have already handled
as handled. Both rules apply to a webhook receiver too.