Guest event log
Reads the append-only guest event log. timeline (default) returns the full ordered change history. latest returns the latest delta slice per entity (DISTINCT ON) — not a merged entity snapshot. rollup is a deprecated alias for latest. Optional filters narrow by entity type, a specific entity, a guest profile, or a master profile. The event log does not accept a PMS source_id — resolve the Casa Layer ID first. Requires scope read:events.
Authorizations
Authorization: Bearer <token>. Token types resolve to the same scoped credential: a user-generated API key (casa_…, from Account settings — recommended for first-party machines and MCP clients), a partner credential access token (third-party agents; REST-only), a session JWT (the web app; org and role come from verified token claims), or a static token. API keys are group-scoped, optionally pinned to one property at creation. Personal API keys and partner credentials accept X-Property-Id to drill down to one property in the group. A property-pinned API key ignores that header. MCP OAuth connector tokens authenticate the MCP server only and are rejected on these REST routes.
Headers
Optional single-property drill-down. Narrows this request to one property in the caller's group. A property outside the group returns 403. Personal API keys and partner credentials accept this header. A property-pinned API key ignores it. Casa Layer sign-in tokens reject it.
Query Parameters
Return the full ordered history (timeline) or the latest delta slice per entity (latest). rollup is a deprecated alias for latest.
timeline, latest, rollup Filter by canonical entity type.
guest_profile, reservation, transaction, action, loyalty_program, membership, review, channel, space Filter to a single canonical entity id.
Filter to events for a single Casa Layer guest profile ID. Resolve a PMS source_id on GET /v1/guests first.
Filter to events on guest profiles whose master_profile_id equals this Casa Layer master profile ID. Unclustered guests (no master) do not match. Send this filter or guest_profile_id, not both.
Page size — rows returned per call (1–500). This is NOT a cap on the total dataset: follow next_cursor to retrieve every matching row.
1 <= x <= 500Opaque pagination token from a previous response's next_cursor. Omit for the first page. A malformed token returns 400 invalid_cursor.
Response
Event-log rows. timeline is keyset-paginated. latest (and the deprecated rollup request alias) returns a single page (next_cursor null) with the latest delta slice per entity. Response mode is always timeline or latest (never rollup).
Keyset-pagination fields present on every list/search response. When has_more is true, re-request with cursor set to next_cursor; repeat until next_cursor is null to retrieve the full result set.