net.atmowx.observation

atmowx.net

Schema Diff

+41 -0

From

CID
bafyreidwjrtrgky...
Indexed At
2026-07-24 05:13 UTC
View this version

To

CID
bafyreig43ic32al...
Indexed At
2026-07-25 18:08 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 23 non-breaking changes.

Non-Breaking Changes (23)
  • AddedVertex AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality" }
  • AddedVertex AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.co" }
  • AddedVertex AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.no2" }
  • AddedVertex AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.ozone" }
  • AddedVertex AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.pm1" }
  • AddedVertex AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.pm10" }
  • AddedVertex AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.pm25" }
  • AddedVertex AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.so2" }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body", tgt: "net.atmowx.observation:body.airQuality", kind: "prop", name: Some("airQuality") }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.co", kind: "prop", name: Some("co") }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.no2", kind: "prop", name: Some("no2") }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.ozone", kind: "prop", name: Some("ozone") }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.pm1", kind: "prop", name: Some("pm1") }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.pm10", kind: "prop", name: Some("pm10") }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.pm25", kind: "prop", name: Some("pm25") }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.so2", kind: "prop", name: Some("so2") }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality.co", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality.no2", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality.ozone", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality.pm1", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality.pm10", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality.pm25", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "net.atmowx.observation:body.airQuality.so2", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality" }
  • AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.co" }
  • AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.no2" }
  • AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.ozone" }
  • AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.pm1" }
  • AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.pm10" }
  • AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.pm25" }
  • AddedVertex { vertex_id: "net.atmowx.observation:body.airQuality.so2" }

Additional Notes

  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body", tgt: "net.atmowx.observation:body.airQuality", kind: "prop", name: Some("airQuality") }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.co", kind: "prop", name: Some("co") }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.no2", kind: "prop", name: Some("no2") }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.ozone", kind: "prop", name: Some("ozone") }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.pm1", kind: "prop", name: Some("pm1") }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.pm10", kind: "prop", name: Some("pm10") }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.pm25", kind: "prop", name: Some("pm25") }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality", tgt: "net.atmowx.observation:body.airQuality.so2", kind: "prop", name: Some("so2") }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality.co", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality.no2", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality.ozone", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality.pm1", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality.pm10", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality.pm25", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "net.atmowx.observation:body.airQuality.so2", tgt: "net.atmowx.defs#quantity", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "One immutable weather observation. All measurement fields are optional and SI-only: celsius, hectopascal, meters/second, millimeters, W/m². Record key SHOULD be a TID derived from observedAt.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 +
          "airQuality": {
10 +
            "description": "Outdoor ambient air-quality mass concentrations, µg/m³. Derived indexes (AQI, EAQI, …) are intentionally not stored: they are jurisdiction- and time-window-specific and must be computed by consumers from the concentration series.",
11 +
            "properties": {
12 +
              "co": {
13 +
                "description": "CO mass concentration, µg/m³.",
14 +
                "ref": "net.atmowx.defs#quantity",
15 +
                "type": "ref"
16 +
              },
17 +
              "no2": {
18 +
                "description": "NO₂ mass concentration, µg/m³.",
19 +
                "ref": "net.atmowx.defs#quantity",
20 +
                "type": "ref"
21 +
              },
22 +
              "ozone": {
23 +
                "description": "O₃ mass concentration, µg/m³.",
24 +
                "ref": "net.atmowx.defs#quantity",
25 +
                "type": "ref"
26 +
              },
27 +
              "pm1": {
28 +
                "description": "PM1 mass concentration, µg/m³.",
29 +
                "ref": "net.atmowx.defs#quantity",
30 +
                "type": "ref"
31 +
              },
32 +
              "pm10": {
33 +
                "description": "PM10 mass concentration, µg/m³.",
34 +
                "ref": "net.atmowx.defs#quantity",
35 +
                "type": "ref"
36 +
              },
37 +
              "pm25": {
38 +
                "description": "PM2.5 mass concentration, µg/m³.",
39 +
                "ref": "net.atmowx.defs#quantity",
40 +
                "type": "ref"
41 +
              },
42 +
              "so2": {
43 +
                "description": "SO₂ mass concentration, µg/m³.",
44 +
                "ref": "net.atmowx.defs#quantity",
45 +
                "type": "ref"
46 +
              }
47 +
            },
48 +
            "type": "object"
49 +
          },
9 50
          "dewPoint": {
10 51
            "description": "Dew point, °C.",
11 52
            "ref": "net.atmowx.defs#quantity",
12 53
            "type": "ref"
13 54
          },
14 55
          "extra": {
15 56
            "description": "Measurements not covered by core fields. Open union.",
16 57
            "items": {
17 58
              "closed": false,
18 59
              "refs": [
19 60
                "net.atmowx.defs#measurement"
20 61
              ],
21 62
              "type": "union"
22 63
            },
23 64
            "maxLength": 64,
24 65
            "type": "array"
25 66
          },
26 67
          "observedAt": {
27 68
            "description": "Measurement time, UTC.",
28 69
            "format": "datetime",
29 70
            "type": "string"
30 71
          },
31 72
          "precipitation": {
32 73
            "properties": {
33 74
              "day": {
34 75
                "description": "mm since station-local midnight.",
35 76
                "ref": "net.atmowx.defs#quantity",
36 77
                "type": "ref"
37 78
              },
38 79
              "event": {
39 80
                "description": "mm in the current rain event.",
40 81
                "ref": "net.atmowx.defs#quantity",
41 82
                "type": "ref"
42 83
              },
43 84
              "hour": {
44 85
                "description": "mm in the last 60 minutes.",
45 86
                "ref": "net.atmowx.defs#quantity",
46 87
                "type": "ref"
47 88
              },
48 89
              "rate": {
49 90
                "description": "mm/h.",
50 91
                "ref": "net.atmowx.defs#quantity",
51 92
                "type": "ref"
52 93
              }
53 94
            },
54 95
            "type": "object"
55 96
          },
56 97
          "presentWeather": {
57 98
            "description": "WMO code table 4680 (present weather from automatic station).",
58 99
            "maximum": 511,
59 100
            "minimum": 0,
60 101
            "type": "integer"
61 102
          },
62 103
          "pressureSeaLevel": {
63 104
            "description": "Mean-sea-level reduced pressure, hPa.",
64 105
            "ref": "net.atmowx.defs#quantity",
65 106
            "type": "ref"
66 107
          },
67 108
          "pressureStation": {
68 109
            "description": "Absolute station pressure, hPa.",
69 110
            "ref": "net.atmowx.defs#quantity",
70 111
            "type": "ref"
71 112
          },
72 113
          "relativeHumidity": {
73 114
            "description": "Relative humidity, percent.",
74 115
            "ref": "net.atmowx.defs#quantity",
75 116
            "type": "ref"
76 117
          },
77 118
          "snowDepth": {
78 119
            "description": "Millimeters.",
79 120
            "ref": "net.atmowx.defs#quantity",
80 121
            "type": "ref"
81 122
          },
82 123
          "soilMoisture": {
83 124
            "description": "Percent.",
84 125
            "ref": "net.atmowx.defs#quantity",
85 126
            "type": "ref"
86 127
          },
87 128
          "soilTemperature": {
88 129
            "description": "°C at default depth; use extra for multiple depths.",
89 130
            "ref": "net.atmowx.defs#quantity",
90 131
            "type": "ref"
91 132
          },
92 133
          "solarIrradiance": {
93 134
            "description": "W/m².",
94 135
            "ref": "net.atmowx.defs#quantity",
95 136
            "type": "ref"
96 137
          },
97 138
          "station": {
98 139
            "description": "AT-URI of the net.atmowx.station this reading came from.",
99 140
            "format": "at-uri",
100 141
            "type": "string"
101 142
          },
102 143
          "temperature": {
103 144
            "description": "Air temperature, °C.",
104 145
            "ref": "net.atmowx.defs#quantity",
105 146
            "type": "ref"
106 147
          },
107 148
          "uvIndex": {
108 149
            "description": "UV index, dimensionless.",
109 150
            "ref": "net.atmowx.defs#quantity",
110 151
            "type": "ref"
111 152
          },
112 153
          "visibility": {
113 154
            "description": "Meters.",
114 155
            "ref": "net.atmowx.defs#quantity",
115 156
            "type": "ref"
116 157
          },
117 158
          "wind": {
118 159
            "properties": {
119 160
              "direction": {
120 161
                "description": "Degrees true, 0 = north.",
121 162
                "maximum": 359,
122 163
                "minimum": 0,
123 164
                "type": "integer"
124 165
              },
125 166
              "gust": {
126 167
                "description": "m/s.",
127 168
                "ref": "net.atmowx.defs#quantity",
128 169
                "type": "ref"
129 170
              },
130 171
              "gustDirection": {
131 172
                "description": "Degrees true, 0 = north.",
132 173
                "maximum": 359,
133 174
                "minimum": 0,
134 175
                "type": "integer"
135 176
              },
136 177
              "speed": {
137 178
                "description": "m/s.",
138 179
                "ref": "net.atmowx.defs#quantity",
139 180
                "type": "ref"
140 181
              }
141 182
            },
142 183
            "type": "object"
143 184
          }
144 185
        },
145 186
        "required": [
146 187
          "station",
147 188
          "observedAt"
148 189
        ],
149 190
        "type": "object"
150 191
      },
151 192
      "type": "record"
152 193
    }
153 194
  },
154 195
  "id": "net.atmowx.observation",
155 196
  "lexicon": 1
156 197
}

Compare Other Versions

Lexicon Garden

@