events:read scope (and tasks:read for task events).
Event types
New event types may be added. Ignore types you don’t handle.
Polling the feed
1. Start from now. On first run, ask for the current position without replaying history:/v1/deals).
2. Poll forward. Save next_cursor and send it back on every poll:
next_cursor is never null. When has_more is false you are caught up. Wait a little and poll again from the same cursor.
3. Fetch the subject. Each event names its subject (the deal or task) and actor (who made the change). Two changes to the same deal can arrive out of order, so fetch the subject for its current state instead of replaying the change yourself. If the fetch returns 404, the subject was deleted or your key can no longer read it: remove it from your copy.
type and brokerage, for example ?type=deal.status_changed&type=deal.created.
When a cursor expires
In rare cases, such as after a major upgrade, an old cursor can no longer be read and the feed returns410 CURSOR_EXPIRED. Start again from start=latest and reload your state from the list endpoints.