application/cloudevents+json).
Consume and inspect events
Pull
Page through events with
GET /v1/events using a cursor. Good for batch processing and catch-up jobs.Metadata
Inspect the first and latest retained positions and exact event count with
GET /v1/events/metadata. Good for consumer health checks.Stream
Subscribe to a live, ordered Server-Sent Events stream at
GET /v1/events/stream. Good for real-time reactions.Durable consumer
Pull leased batches from a server-tracked position and acknowledge them. Good for competing workers that should not store their own cursor.
Occtoo can also push these events to you. Create a webhook, Azure Storage Queue or Azure Service Bus subscription in Studio — see Find event subscriptions.
Filter by subject
Use thefilter query parameter to select events about one entry or resource. The same expression works with pull (GET /v1/events), metadata (GET /v1/events/metadata), and SSE (GET /v1/events/stream).
subject is a CloudEvent envelope field. Compare its complete value as an exact, case-sensitive string. Do not split it on / or .: those characters can be part of an ID. Partial and wildcard matches are not supported.
Its meaning depends on the event type:
Combine
subject with the event type and parent identifiers to distinguish entries that share an ID:
Card
Destination entry
entryKey, cardId, and entryId are not separate filter operands. Use subject for these values. Check GET /v1/event-types for the properties supported by each type.
Only events processed after subject filtering was enabled can match a subject condition. Older retained events are not backfilled, even when their payload contains
subject. Filters without a subject condition continue to match older events. An or branch without a subject condition can also match them.and, or, and parentheses. Filter values must be double-quoted strings of 1–200 characters. The existing limits remain 4,096 characters per expression, 50 comparisons, and eight nesting levels.
The same subject matching applies to webhook and queue subscription filters. Every branch of a subscription filter must also constrain type.
Inspect stream metadata
CallGET /v1/events/metadata to inspect the retained stream without retrieving event payloads. It accepts the same optional filter as the pull and stream endpoints.
firstandlatestidentify the boundaries of the retained filtered view. Theirtimeisnullwhen the CloudEvent has no time.afteris an opaque pull cursor for thelatestposition. Store it as a checkpoint or pass it toGET /v1/events.totalis the exact count across the complete retained filtered view, not the count after a consumer checkpoint.
latest.sequence with your last successfully processed sequence to determine whether a consumer is caught up. Do not use the difference between sequences as a pending-event count because filtered-out events can create gaps.
When no retained event matches, first, latest, and after are null, and total is 0.
Event types
Occtoo publishes 30 event types across sources, cards, segments, destinations, endpoints and users. All are currently at payload schema version1.0.
Every data payload includes these two properties, so they are omitted from the tables below:
In the tables,
? marks a property that is not required — it may be absent or null. See the data property reference for types and meanings.
Sources
Cards
Segments
Destinations
Endpoints
Users
Data property reference
Properties marked filterable can be used in the filter grammar ofGET /v1/events, GET /v1/events/metadata, and GET /v1/events/stream. The exact set accepted for a given type is returned as filterableProperties by GET /v1/event-types. You can also filter by the envelope fields type and subject.
GET /v1/event-types is the authoritative, machine-readable version of this page — it returns each type’s description, filterableProperties and full inline JSON Schema. Fetch a single schema with GET /v1/events/schemas/{type}/{version}.Resuming a stream
The SSEid field of each streamed event contains a raw, resumable event sequence. Pass it (or a pull cursor) as the after query parameter when reconnecting to continue exactly where you left off — no events lost, none replayed.
The Events API uses the same authentication as the rest of the platform API: a bearer token or API key. See the API overview for how to obtain tokens.