dev.sensorthings.observationFrame

sensorthings.dev

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "frameEntry": {
      "properties": {
        "datastream": {
          "description": "Record key of a dev.sensorthings.datastream record in the same repo",
          "format": "record-key",
          "type": "string"
        },
        "q": {
          "knownValues": [
            "dev.sensorthings.quality#good",
            "dev.sensorthings.quality#suspect",
            "dev.sensorthings.quality#missing"
          ],
          "type": "string"
        },
        "result": {
          "description": "Observation result, same union as dev.sensorthings.observation",
          "refs": [
            "dev.sensorthings.observation#numericResult",
            "dev.sensorthings.observation#categoryResult",
            "dev.sensorthings.observation#booleanResult",
            "dev.sensorthings.observation#arrayResult",
            "dev.sensorthings.observation#geoPointResult"
          ],
          "type": "union"
        },
        "t": {
          "description": "phenomenonTime",
          "format": "datetime",
          "type": "string"
        }
      },
      "required": [
        "datastream",
        "t",
        "result"
      ],
      "type": "object"
    },
    "main": {
      "description": "The new or changed readings from one collector tick, for many Datastreams in the same repo. Created once and never updated. After the correction horizon has passed, the readings are sealed into dev.sensorthings.observationBatch day records and the frame is deleted. Apply frames in record key order: a later entry for the same datastream and phenomenonTime replaces an earlier one. The record key is the tick time to the millisecond and a three-digit shard number, for example 20260925T100700000Z-000.",
      "key": "any",
      "record": {
        "properties": {
          "observations": {
            "items": {
              "ref": "#frameEntry",
              "type": "ref"
            },
            "maxLength": 10000,
            "type": "array"
          },
          "tickTime": {
            "description": "Time of the collector tick that wrote this frame",
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "tickTime",
          "observations"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "dev.sensorthings.observationFrame",
  "lexicon": 1,
  "revision": 1
}

Validate Record

Validate a record against dev.sensorthings.observationFrame

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:gqcmwsromoknyigx2afqcvqk
CID
bafyreifisputmwndlh3v6pn3jy33lhl5oopsm5xwiaowgexgityonwinmm
Indexed At
2026-10-02 12:30 UTC
AT-URI
at://did:plc:gqcmwsromoknyigx2afqcvqk/com.atproto.lexicon.schema/dev.sensorthings.observationFrame

Referenced Schemas (5)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A batch of observations for a single Datastream, covering a contiguous time window. Trades individual addressability for reduced commit overhead.

  • A single act of observation. The result type is determined by the $type discriminator on the result object.

  • A composite observation bundling multiple co-produced results from a single act of sensing. Each entry carries its own ObservedProperty, unit, and scale metadata. Use this instead of separate Observations when the resul…

Lexicon Garden

@