Skip to main content
The Occtoo Events API lets you react to changes across your tenant — sources, cards, segments, destinations, endpoints, and users — without polling each resource. Every change is published as a CloudEvents message (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 the filter 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
The field names 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.
You can combine comparisons with 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

Call GET /v1/events/metadata to inspect the retained stream without retrieving event payloads. It accepts the same optional filter as the pull and stream endpoints.
  • first and latest identify the boundaries of the retained filtered view. Their time is null when the CloudEvent has no time.
  • after is an opaque pull cursor for the latest position. Store it as a checkpoint or pass it to GET /v1/events.
  • total is the exact count across the complete retained filtered view, not the count after a consumer checkpoint.
Compare 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 version 1.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 of GET /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 SSE id 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.