dev.sensorthings.observation

sensorthings.dev

Schema Diff

+2 -1

From

CID
bafyreiawpa4imnx...
Indexed At
2026-03-27 18:59 UTC
View this version

To

CID
bafyreibqo7zzhbs...
Indexed At
2026-07-26 20:10 UTC
View this version

Compatibility Analysis

Backward Compatible

No changes detected.

1 1
{
2 2
  "id": "dev.sensorthings.observation",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "any",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "datastream",
11 11
          "result",
12 12
          "phenomenonTime"
13 13
        ],
14 14
        "properties": {
15 15
          "result": {
16 16
            "refs": [
17 17
              "#numericResult",
18 18
              "#categoryResult",
19 19
              "#booleanResult",
20 20
              "#arrayResult",
21 21
              "#geoPointResult"
22 22
            ],
23 23
            "type": "union",
24 24
            "description": "The observation result. Type determined by $type discriminator."
25 25
          },
26 26
          "datastream": {
27 27
            "type": "string",
28 28
            "format": "at-uri",
29 29
            "description": "AT-URI of the parent Datastream"
30 30
          },
31 31
          "parameters": {
32 32
            "type": "unknown",
33 33
            "description": "Additional name-value pairs (e.g. depth, height above ground)"
34 34
          },
35 35
          "resultTime": {
36 36
            "type": "string",
37 37
            "format": "datetime",
38 38
            "description": "Time the result became available (if different from phenomenonTime)"
39 39
          },
40 40
          "derivedFrom": {
41 41
            "type": "array",
42 42
            "items": {
43 43
              "type": "string",
44 44
              "format": "at-uri"
45 45
            },
46 46
            "maxLength": 16,
47 47
            "description": "AT-URIs of source observations or datastreams from which this observation was derived (e.g. tidal residual derived from observed and predicted level datastreams)"
48 48
          },
49 49
          "resultQuality": {
50 50
            "type": "string",
51 51
            "maxLength": 64,
52 52
            "description": "Quality flag as a token reference",
53 53
            "knownValues": [
54 54
              "dev.sensorthings.quality#good",
55 55
              "dev.sensorthings.quality#suspect",
56 56
              "dev.sensorthings.quality#missing"
57 57
            ]
58 58
          },
59 59
          "phenomenonTime": {
60 60
            "type": "string",
61 61
            "format": "datetime",
62 62
            "description": "Time the phenomenon was observed (ISO 8601). Start of interval if phenomenonTimeEnd is present."
63 63
          },
64 64
          "featureOfInterest": {
65 65
            "type": "string",
66 66
            "format": "at-uri",
67 67
            "description": "AT-URI of the feature being observed, if different from the Thing's location"
68 68
          },
69 69
          "phenomenonTimeEnd": {
70 70
            "type": "string",
71 71
            "format": "datetime",
72 72
            "description": "End of observation interval (ISO 8601). If absent, the observation is an instant. Used for aggregates (daily means), processing windows (wave burst statistics), and accumulations (hourly rainfall)."
73 73
          }
74 74
        }
75 75
      },
76 76
      "description": "A single act of observation. The result type is determined by the $type discriminator on the result object."
77 77
    },
78 78
    "arrayResult": {
79 79
      "type": "object",
80 80
      "required": [
81 81
        "values"
82 82
      ],
83 83
      "properties": {
84 84
        "labels": {
85 85
          "type": "array",
86 86
          "items": {
87 87
            "type": "string",
88 88
            "maxLength": 32
89 89
          },
90 90
          "maxLength": 1024,
91 91
          "description": "Optional labels identifying each element (e.g. frequency bin edges in Hz, depth bin centres in m). Must be same length as values if present."
92 92
        },
93 93
        "values": {
94 94
          "type": "array",
95 95
          "items": {
96 96
            "type": "integer"
97 97
          },
98 98
          "maxLength": 1024,
99 99
          "description": "Ordered array of scaled integer values"
100 100
        }
101 101
      },
102 102
      "description": "Array of scaled integer values sharing the parent Datastream's resultScaleFactor. Used for wave spectra (energy at frequency bins), current profiles (speed at depth bins), and similar array-valued observations."
103 103
    },
104 104
    "booleanResult": {
105 105
      "type": "object",
106 106
      "required": [
107 107
        "value"
108 108
      ],
109 109
      "properties": {
110 110
        "value": {
111 111
          "type": "boolean"
112 112
        }
113 113
      },
114 114
      "description": "True/false observation. Used for threshold exceedances, detection flags, binary sensor states."
115 115
    },
116 116
    "numericResult": {
117 117
      "type": "object",
118 118
      "required": [
119 119
        "value"
120 120
      ],
121 121
      "properties": {
122 122
        "value": {
123 123
          "type": "integer"
124 124
        }
125 125
      },
126 126
      "description": "Scaled integer result. Real value = value × 10^(−resultScaleFactor). The common case for continuous measurements."
127 127
    },
128 128
    "categoryResult": {
129 129
      "type": "object",
130 130
      "required": [
131 131
        "value"
132 132
      ],
133 133
      "properties": {
134 134
        "value": {
135 135
          "type": "string",
136 136
          "maxLength": 256,
137 137
          "description": "Code or label from the vocabulary"
138 138
        },
139 139
        "vocabulary": {
140 140
          "type": "string",
141 141
          "format": "uri",
142 142
          "description": "URI of the code list or vocabulary (e.g. https://codes.wmo.int/306/4677 for WMO present weather codes)"
143 143
        }
144 144
      },
145 145
      "description": "Categorical observation from a controlled vocabulary. Used for weather codes, flood alert levels, land cover classes, sea state."
146 146
    },
147 147
    "geoPointResult": {
148 148
      "type": "object",
149 149
      "required": [
150 150
        "latE7",
151 151
        "lonE7"
152 152
      ],
153 153
      "properties": {
154 154
        "altMm": {
155 155
          "type": "integer",
156 156
          "description": "Altitude in mm above WGS84 ellipsoid"
157 157
        },
158 158
        "latE7": {
159 159
          "type": "integer",
160 160
          "maximum": 900000000,
161 161
          "minimum": -900000000
162 162
        },
163 163
        "lonE7": {
164 164
          "type": "integer",
165 165
          "maximum": 1800000000,
166 166
          "minimum": -1800000000
167 167
        }
168 168
      },
169 169
      "description": "Geographic position result for position-as-observation (e.g. GPS fix from a drifting buoy). Uses the same encoding as Thing.location."
170 170
    }
171 171
  },
172 172
  "$type": "com.atproto.lexicon.schema",
173 -
  "lexicon": 1
173 +
  "lexicon": 1,
174 +
  "revision": 1
174 175
}

Compare Other Versions

Lexicon Garden

@