Skip to content

Read Device as of a watermark

GET
/v1/object-types/hospitality.device/objects/{id}/as-of
curl --request GET \
--url 'https://api.aerandil.com/v1/object-types/hospitality.device/objects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/as-of?at=example' \
--header 'Authorization: Bearer <token>'

Time-travel read: the instance as it stood at the at watermark, reconstructed by folding its structural events. Property values that were marking-redacted or truncated in the event log surface as sentinel objects, not values.

A registered piece of local hardware at a property — the attribution and authorisation anchor for writes that originate from a physical machine rather than a person. The first consumer is the charge-to-key surface: post_charge_by_credential requires an active payment-terminal device, so a tap from an unregistered reader fails closed. kind reserves vocabulary for the rest of the hardware estate (key encoders, door locks, kiosks, printers) so the abstraction doesn’t churn per product.

id
required
string format: uuid

Object id (UUID v7, server-generated at create time).

at
required
string

The watermark: an event seq (integer, canonical — the /v1/events cursor namespace) or an RFC3339 timestamp (resolved to the latest seq at or before it in the tenant’s stream).

The reconstructed as-of state.

Media typeapplication/json
object
at
required
string
events_applied
required
integer
id
required
string format: uuid
last_event_seq
required
integer
last_event_ts
required
string format: date-time
object_type
required
Allowed value: hospitality.device
properties
required

Log-shaped folded bag: each entry is a typed {kind, value} object, a {redacted: [markings]} sentinel, or a {truncated_bytes: n} sentinel.

object
key
additional properties
any
Example
{
"object_type": "hospitality.device"
}

Object did not exist at the watermark (not yet created, or already deleted).

Malformed at, or the object’s history predates structural event images and cannot back a faithful reconstruction.