# dev.sensorthings.observationFrame

> Published by [sensorthings.dev](https://lexicon.garden/identity/did:plc:gqcmwsromoknyigx2afqcvqk)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:gqcmwsromoknyigx2afqcvqk/dev.sensorthings.observationFrame)
- [Documentation](https://lexicon.garden/lexicon/did:plc:gqcmwsromoknyigx2afqcvqk/dev.sensorthings.observationFrame/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:gqcmwsromoknyigx2afqcvqk/dev.sensorthings.observationFrame/examples)

## Definitions

### `dev.sensorthings.observationFrame#frameEntry`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `datastream` | `string` (record-key) | Yes | Record key of a dev.sensorthings.datastream record in the same repo |
| `q` | `string` | No |  |
| `result` | `union` | Yes | Observation result, same union as dev.sensorthings.observation |
| `t` | `string` (datetime) | Yes | phenomenonTime |

### `dev.sensorthings.observationFrame`

**Type**: `record`

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`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `observations` | `array` | Yes |  |
| `tickTime` | `string` (datetime) | Yes | Time of the collector tick that wrote this frame |

## Raw Schema

```json
{
  "$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
}
```
