Skip to content

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.
[
{
"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.

[
{
"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.

[
{
"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 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.

  1. Deduplicate by envelope id.
  2. Validate that Count agrees with the number of ClassIds; process the IDs rather than trusting the count alone.
  3. Apply Deleted and Unpublished without requiring a resource lookup.
  4. For Updated and Published, queue detail reads or calendar reconciliation outside the webhook request.
  5. Coalesce repeated IDs and respect the API rate limits when choosing between individual detail reads and calendar windows.