Skip to content

Read Device

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

Read an existing instance.

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).

branch
string format: uuid

Read through an open branch’s copy-on-first-write overlay view instead of the canonical (main) plane. Does not compose with as_of (422). The branch must exist under the caller’s tenant.

Object found.

Media typeapplication/json
object
created_at
required
string format: date-time
id
required
string format: uuid
object_type
required
Allowed value: hospitality.device
properties
required
object
code
required
Device code
string
description
Description
string
kind
required
Hardware kind
string
Allowed values: payment_terminal key_encoder door_lock kiosk printer handset other
name
required
Device name
string
print_secret_hash
Print secret hash (hex SHA-256)

A printer’s poll credential: the lowercase hex SHA-256 of the secret its Server Direct Print settings carry. Set by register_device; never readable.

string
status
required
Lifecycle status
string
Allowed values: active inactive retired
vendor
Hardware / acquirer vendor (free text — vendor-specific)
string
vendor_device_ref
Vendor-side device identifier (free text — vendor-specific)
string
provenance

Per-property source attribution and pins. An entry under properties means the property’s current value came from that source (on the source’s own clock, source_updated_at); an entry under pins is a human override protecting the property from sourced writes.

object
pins
object
key
additional properties
object
pinned_at
string format: date-time
pinned_by
object
reason
required
string
properties
object
key
additional properties
object
external_id
string
recorded_at
required
string format: date-time
source
required
string
source_updated_at
string format: date-time
stream
string
scope
required
One of: discriminator: level
object
level
required
string
Allowed value: tenant
Allowed values: tenant
tenant_id
required
string format: uuid
updated_at
required
string format: date-time
version
required
integer
>= 1
Example
{
"object_type": "hospitality.device",
"properties": {
"kind": "payment_terminal",
"status": "active"
},
"scope": {
"level": "tenant"
}
}
ETag
string
/^"\d+"$/

Quoted strong validator (RFC 7232 §2.3) carrying the object’s monotonic version. Informational on the read path — object mutation goes through typed actions on /v1/actions/{action}/apply, not raw CRUD.

No object with that id (or soft-deleted).