Class events
Class events are batch notifications. Their subject is Classes, and data
contains the affected ClassIds and their Count rather than complete class
objects.
| Event type | Meaning |
|---|---|
Class.Updated |
One or more classes changed. |
Class.Deleted |
One or more classes were deleted. |
Class.Published |
One or more classes became published. |
Class.Unpublished |
One or more classes became unpublished. |
Class.Updated
Section titled “Class.Updated”[ { "id": "example-class-updated-event", "topic": "club-100001-events", "subject": "Classes", "data": { "ClassIds": [700001, 700002], "Count": 2 }, "eventType": "Class.Updated", "eventTime": "2026-09-07T11:51:31Z", "dataVersion": "1.0" }]ClassIds identifies the affected classes and Count is the number of IDs in
the batch. One logical operation can be split into more than one event when it
affects a large set, so do not assume one event represents the entire change.
Use GET /Classes/{classId} to refresh a known updated Class. Calendar-window
rescans remain useful for large batches, initial discovery, and scheduled
reconciliation. See
Classes and calendars.
Class.Deleted
Section titled “Class.Deleted”[ { "id": "example-class-deleted-event", "topic": "club-100001-events", "subject": "Classes", "data": { "ClassIds": [700001], "Count": 1 }, "eventType": "Class.Deleted", "eventTime": "2026-09-07T13:31:37Z", "dataVersion": "1.0" }]Remove or archive the listed class IDs locally. A deleted class cannot be reloaded from the API, so processing must not depend on a successful lookup.
Class.Published
Section titled “Class.Published”[ { "id": "example-class-published-event", "topic": "club-100001-events", "subject": "Classes", "data": { "ClassIds": [700001], "Count": 1 }, "eventType": "Class.Published", "eventTime": "2026-09-07T13:36:08Z", "dataVersion": "1.0" }]Retrieve each known identifier with GET /Classes/{classId}, or reload the
relevant calendar window when reconciling a large batch.
Class.Unpublished
Section titled “Class.Unpublished”Class.Unpublished uses the same data shape:
[ { "id": "example-class-unpublished-event", "topic": "club-100001-events", "subject": "Classes", "data": { "ClassIds": [700001], "Count": 1 }, "eventType": "Class.Unpublished", "eventTime": "2026-09-07T13:36:02Z", "dataVersion": "1.0" }]An unpublished class is no longer exposed in published schedules but is not
necessarily deleted. Update visibility locally rather than treating this event
as Class.Deleted.
Recommended consumer flow
Section titled “Recommended consumer flow”- Deduplicate by envelope
id. - Validate that
Countagrees with the number ofClassIds; process the IDs rather than trusting the count alone. - Apply
DeletedandUnpublishedwithout requiring a resource lookup. - For
UpdatedandPublished, queue detail reads or calendar reconciliation outside the webhook request. - Coalesce repeated IDs and respect the API rate limits when choosing between individual detail reads and calendar windows.