SpatialDDS web binding (spatialdds-py)

Version 0.8.1 · OpenAPI 3.1.0 · generated, never hand-written · openapi.yaml

Generated by tools/gen_openapi.py from the gateway's own tables and the published JSON Schemas; never edited by hand. Reads are open; writes take a bearer token scoped to scenes. The WebSocket streams (N.5) are described on each collection path, not modelled. A deployment's own keyed types (serve --extension) are publishable on their own collection paths, under the same rules as the entity lane when they carry basis, state, state_reason and stamp; a type that names an asserter has it stamped or verified as the bearer token's principal (asserter-not-principal, asserter-ungrounded). Their paths are not listed here, because the deployment chooses them.

Operations

POST /.well-known/spatialdds/search

The same search, as a POST body open

200 429 413 415

GET /.well-known/spatialdds/schemas

The published JSON Schemas, by type open

200 429

GET /.well-known/spatialdds/schemas/{type}

open

200 404 429

GET /.well-known/spatialdds/bootstrap

DDS-join material (N.2); optional open

200 404 429

GET /.well-known/spatialdds/resolver

§7.5.2 resolver metadata open

200 404 429

GET /.well-known/spatialdds/openapi

This document open

200 429

GET /.well-known/spatialdds/openapi.html

This document as a static reference page open

200 429

GET /spatialdds/resolve

Resolve a URI to its manifest (§7.5.2) open

200 400 404 429

PUT /spatialdds/resolve

Publish a manifest, keyed by its own id token

The uri parameter is not used; the body's id is the key. Its scene segment is the lane. **Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS).

200 201 400 401 403 405 429 413 415 503

DELETE /spatialdds/resolve

Withdraw a manifest; resolve then answers 404 token

Owner-checked by the URI's scene segment. **Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS).

204 400 401 403 404 405 429 503

GET /assets/{name}

Asset bytes this endpoint hosts (implementation-defined) open

200 404 429

GET /{scene}/{stream}/announce/v1

Every spatial.disco.Announce instance in the latched set open

**The same URL is also a WebSocket** (N.5): connect with wss:// and receive the latched set as sample events, exactly one end_of_replay carrying the replay count, then live sample and dispose events ({event, topic, key, data | reason}). Not modelled here; see [Appendix N.5](https://spatialdds.org/v1.8/appendix-n/).

200 304 404 429 503

POST /{scene}/{stream}/announce/v1

An N.6 command addressed through the announce lane token

Accepted only on a lane whose topic advertises accepts_commands; otherwise 405. **Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). Every member of the record is required: a body is a whole record, never a patch.

202 400 401 403 405 409 429 413 415

GET /{scene}/{stream}/announce/v1/{key}

One spatial.disco.Announce instance open

200 304 404 429

PUT /{scene}/{stream}/announce/v1/{key}

Publish or replace a spatial.disco.Announce token

**Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). Every member of the record is required: a body is a whole record, never a patch. The body's key must equal the URL's. If-Match is honoured when present.

200 201 400 401 403 405 412 429 413 415 503

DELETE /{scene}/{stream}/announce/v1/{key}

Withdraw (dispose) a spatial.disco.Announce token

**Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). The dispose streams on the collection's WebSocket with its reason.

204 400 401 403 404 405 429 503

GET /{scene}/{stream}/content_announce/v1

Every spatial.disco.ContentAnnounce instance in the latched set open

**The same URL is also a WebSocket** (N.5): connect with wss:// and receive the latched set as sample events, exactly one end_of_replay carrying the replay count, then live sample and dispose events ({event, topic, key, data | reason}). Not modelled here; see [Appendix N.5](https://spatialdds.org/v1.8/appendix-n/).

200 304 404 429 503

POST /{scene}/{stream}/content_announce/v1

An N.6 command addressed through the content_announce lane token

Accepted only on a lane whose topic advertises accepts_commands; otherwise 405. **Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). Every member of the record is required: a body is a whole record, never a patch.

202 400 401 403 405 409 429 413 415

GET /{scene}/{stream}/content_announce/v1/{key}

One spatial.disco.ContentAnnounce instance open

200 304 404 429

PUT /{scene}/{stream}/content_announce/v1/{key}

Publish or replace a spatial.disco.ContentAnnounce token

**Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). Every member of the record is required: a body is a whole record, never a patch. The body's key must equal the URL's. If-Match is honoured when present.

200 201 400 401 403 405 412 429 413 415 503

DELETE /{scene}/{stream}/content_announce/v1/{key}

Withdraw (dispose) a spatial.disco.ContentAnnounce token

**Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). The dispose streams on the collection's WebSocket with its reason.

204 400 401 403 404 405 429 503

GET /{scene}/{stream}/entity/v1

Every spatial.owm.Entity instance in the latched set token

**The same URL is also a WebSocket** (N.5): connect with wss:// and receive the latched set as sample events, exactly one end_of_replay carrying the replay count, then live sample and dispose events ({event, topic, key, data | reason}). Not modelled here; see [Appendix N.5](https://spatialdds.org/v1.8/appendix-n/).

200 304 404 429 503

POST /{scene}/{stream}/entity/v1

An N.6 command addressed through the entity lane token

Accepted only on a lane whose topic advertises accepts_commands; otherwise 405. **Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). Every member of the record is required: a body is a whole record, never a patch.

202 400 401 403 405 409 429 413 415

GET /{scene}/{stream}/entity/v1/{key}

One spatial.owm.Entity instance token

200 304 404 429

PUT /{scene}/{stream}/entity/v1/{key}

Publish or replace a spatial.owm.Entity token

**Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). Every member of the record is required: a body is a whole record, never a patch. The body's key must equal the URL's. If-Match is honoured when present. **Basis gates liveliness.** A DECLARED or AUTHORED body is a declaration and holds until withdrawn; it takes no refresh. An DERIVED or OBSERVED body must declare refresh, and be PUT again within it; when it lapses the gateway withdraws the instance itself, a terminal sample (RETIRED) then the dispose, both with the reason refresh lapsed. On a gateway with a DDS domain the instance is written there too, from the gateway's own participant.

200 201 400 401 403 405 412 503 429 413 415

DELETE /{scene}/{stream}/entity/v1/{key}

Withdraw (dispose) a spatial.owm.Entity token

**Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). A terminal sample (RETIRED, with the reason) streams first, then the dispose with its reason, on the collection's WebSocket and, on a gateway with a DDS domain, on the bus.

204 400 401 403 404 405 429 503

GET /{scene}/{stream}/geo_anchor/v1

Every spatial.core.GeoAnchor instance in the latched set open

**The same URL is also a WebSocket** (N.5): connect with wss:// and receive the latched set as sample events, exactly one end_of_replay carrying the replay count, then live sample and dispose events ({event, topic, key, data | reason}). Not modelled here; see [Appendix N.5](https://spatialdds.org/v1.8/appendix-n/).

200 304 404 429 503

POST /{scene}/{stream}/geo_anchor/v1

An N.6 command addressed through the geo_anchor lane token

Accepted only on a lane whose topic advertises accepts_commands; otherwise 405. **Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). Every member of the record is required: a body is a whole record, never a patch.

202 400 401 403 405 409 429 413 415

GET /{scene}/{stream}/geo_anchor/v1/{key}

One spatial.core.GeoAnchor instance open

200 304 404 429

PUT /{scene}/{stream}/geo_anchor/v1/{key}

Publish or replace a spatial.core.GeoAnchor token

**Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). Every member of the record is required: a body is a whole record, never a patch. The body's key must equal the URL's. If-Match is honoured when present.

200 201 400 401 403 405 412 429 413 415 503

DELETE /{scene}/{stream}/geo_anchor/v1/{key}

Withdraw (dispose) a spatial.core.GeoAnchor token

**Writes are per lane.** The path's first segment is the scene; the bearer token must be granted it (tenancy.WRITE_REFUSALS). The dispose streams on the collection's WebSocket with its reason.

204 400 401 403 404 405 429 503

GET /{scene}/{stream}/{type}/{version}

Any other served topic, read-only token for operator-scoped

Latched types answer with the latched set; streamed types with the replayed window. Public or operator-scoped per the type: spatial.core.FrameTransform latched public, spatial.events.CrossingLine latched public, spatial.events.SpatialEvent stream bearer, spatial.events.SpatialZone latched public, spatial.owm.ModelPose stream bearer, spatial.semantics.Detection2DSet stream bearer, spatial.semantics.Detection3DSet stream bearer, spatial.semantics.FusedTrackSet stream bearer. **The same URL is also a WebSocket** (N.5): connect with wss:// and receive the latched set as sample events, exactly one end_of_replay carrying the replay count, then live sample and dispose events ({event, topic, key, data | reason}). Not modelled here; see [Appendix N.5](https://spatialdds.org/v1.8/appendix-n/).

200 304 401 404 429 503

GET /.well-known/spatialdds/{stream}/{type}/{version}

A four-segment topic's collection token for operator-scoped

A four-segment topic (spatialdds/<stream>/<type>/<version>, no scene), such as the discovery announce lane, served exactly as a scene-scoped collection is: latched set, ETag, 304, the same access classes, and the N.5 stream by upgrading the same path. Read-only: a topic with no scene is in no lane. **The same URL is also a WebSocket** (N.5): connect with wss:// and receive the latched set as sample events, exactly one end_of_replay carrying the replay count, then live sample and dispose events ({event, topic, key, data | reason}). Not modelled here; see [Appendix N.5](https://spatialdds.org/v1.8/appendix-n/).

200 304 401 404 429 503

GET /.well-known/spatialdds/{stream}/{type}/{version}/{key}

One instance of a four-segment topic token for operator-scoped

A four-segment topic (spatialdds/<stream>/<type>/<version>, no scene), such as the discovery announce lane, served exactly as a scene-scoped collection is: latched set, ETag, 304, the same access classes, and the N.5 stream by upgrading the same path. Read-only: a topic with no scene is in no lane.

200 304 401 404 429 503

Schemas

115 components, from the published JSON Schemas at /.well-known/spatialdds/schemas.