Skip to content
Pages of the documentation

Schemas

The JSON Schema of every message of the protocol, where they are served and how an SDK keeps its copy up to date.

Every message of nestor.satellite/1 has a JSON Schema (draft 2020-12). The core generates them from its message classes, and each one is served where its $id points:

https://nestorhome.dev/schemas/satellite/1/<message>.json

The site is built with the schemas of the server release it pins, so the version in the address is the one the schemas declare.

Messages

Pairing, over HTTP:

Schema Body of
pairing.request POST /satellites/pairings
pairing.ticket its 201 answer
pairing.enrollment POST /satellites/pairings/{pairing_id}/enrollment
pairing.state GET /satellites/pairings/{pairing_id} and the enrollment’s answer
pairing.error any refusal
manifest the device’s manifest, in a request and in hello

On the data channel nestor:

Schema Sent by Means
hello device its manifest, first thing on the channel
welcome core the room and the capabilities allowed
intent.expression core show an emotion
intent.behavior core an attitude: listening, thinking, speaking…
intent.beat core a word is played: a light accent of speech
intent.identify core make yourself noticed
ack device an intent was received
observation.speech.activity device someone starts or stops speaking
observation.person.detected device a person is seen

Keeping a copy in an SDK

An SDK keeps the schemas in its repository and tests every message it sends against them. To refresh the copy, write the schemas of a server release into the SDK’s folder:

uvx --from nestor-home==<version> nestor satellites schemas --out schemas/

<version> is the server release the SDK targets (0.0.2 or later). Then adapt the code until its tests pass. The Python SDK keeps them in src/nestor_satellite/schemas/, the TypeScript and Rust SDKs in schemas/.