at.adsb.broadcast.message

adsb.at

Schema Diff

+31 -34

From

CID
bafyreidpd4tptbv...
Indexed At
2026-05-25 02:52 UTC
View this version

To

CID
bafyreibjiesv3nz...
Indexed At
2026-05-25 20:10 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

24 breaking changes, 8 non-breaking changes.

Breaking Changes (24)
  • RemovedVertex RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.altitudeFt" }
  • RemovedVertex RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.groundSpeedKts" }
  • RemovedVertex RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.headingDeg" }
  • RemovedVertex RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.lastPosition" }
  • RemovedVertex RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.lat" }
  • RemovedVertex RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.lon" }
  • RemovedVertex RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.verticalRateFpm" }
  • RemovedEdge RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.altitudeFt", kind: "prop", name: Some("altitudeFt") }
  • RemovedEdge RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.groundSpeedKts", kind: "prop", name: Some("groundSpeedKts") }
  • RemovedEdge RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.headingDeg", kind: "prop", name: Some("headingDeg") }
  • RemovedEdge RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.lastPosition", kind: "prop", name: Some("lastPosition") }
  • RemovedEdge RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.lat", kind: "prop", name: Some("lat") }
  • RemovedEdge RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.lon", kind: "prop", name: Some("lon") }
  • RemovedEdge RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.verticalRateFpm", kind: "prop", name: Some("verticalRateFpm") }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.rssi", sort: "maxLength", value: "10" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.seenPos", sort: "maxLength", value: "10" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.squawk", sort: "maxLength", value: "4" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.squawk", sort: "minLength", value: "4" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.messageCount", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.rc", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.seen", sort: "maxLength", value: "10" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.nic", sort: "maximum", value: "11" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.nic", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.callsign", sort: "maxLength", value: "8" }
Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "at.adsb.broadcast.message:body.messageCount" }
  • AddedVertex AddedVertex { vertex_id: "at.adsb.broadcast.message:body.nic" }
  • AddedVertex AddedVertex { vertex_id: "at.adsb.broadcast.message:body.position" }
  • AddedVertex AddedVertex { vertex_id: "at.adsb.broadcast.message:body.rc" }
  • AddedEdge AddedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.messageCount", kind: "prop", name: Some("messageCount") }
  • AddedEdge AddedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.nic", kind: "prop", name: Some("nic") }
  • AddedEdge AddedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.position", kind: "prop", name: Some("position") }
  • AddedEdge AddedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.rc", kind: "prop", name: Some("rc") }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.altitudeFt" }
  • RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.groundSpeedKts" }
  • RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.headingDeg" }
  • RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.lastPosition" }
  • RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.lat" }
  • RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.lon" }
  • RemovedVertex { vertex_id: "at.adsb.broadcast.message:body.verticalRateFpm" }

Added Elements

  • AddedVertex { vertex_id: "at.adsb.broadcast.message:body.messageCount" }
  • AddedVertex { vertex_id: "at.adsb.broadcast.message:body.nic" }
  • AddedVertex { vertex_id: "at.adsb.broadcast.message:body.position" }
  • AddedVertex { vertex_id: "at.adsb.broadcast.message:body.rc" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.squawk", sort: "minLength", value: "4" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.squawk", sort: "maxLength", value: "4" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.callsign", sort: "maxLength", value: "8" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.rc", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.seen", sort: "maxLength", value: "10" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.rssi", sort: "maxLength", value: "10" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.nic", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.nic", sort: "maximum", value: "11" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.messageCount", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.seenPos", sort: "maxLength", value: "10" }

Additional Notes

  • Breaking: RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.altitudeFt", kind: "prop", name: Some("altitudeFt") }
  • Breaking: RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.groundSpeedKts", kind: "prop", name: Some("groundSpeedKts") }
  • Breaking: RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.headingDeg", kind: "prop", name: Some("headingDeg") }
  • Breaking: RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.lastPosition", kind: "prop", name: Some("lastPosition") }
  • Breaking: RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.lat", kind: "prop", name: Some("lat") }
  • Breaking: RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.lon", kind: "prop", name: Some("lon") }
  • Breaking: RemovedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.verticalRateFpm", kind: "prop", name: Some("verticalRateFpm") }
  • Non-breaking: AddedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.messageCount", kind: "prop", name: Some("messageCount") }
  • Non-breaking: AddedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.nic", kind: "prop", name: Some("nic") }
  • Non-breaking: AddedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.position", kind: "prop", name: Some("position") }
  • Non-breaking: AddedEdge { src: "at.adsb.broadcast.message:body", tgt: "at.adsb.broadcast.message:body.rc", kind: "prop", name: Some("rc") }
1 1
{
2 2
  "id": "at.adsb.broadcast.message",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "icaoHex",
11 11
          "rssi",
12 12
          "seen"
13 13
        ],
14 14
        "properties": {
15 -
          "lat": {
16 -
            "type": "string",
17 -
            "description": "Aircraft latitude in decimal degrees. String-encoded float."
15 +
          "rc": {
16 +
            "type": "integer",
17 +
            "minimum": 0,
18 +
            "description": "Radius of containment in metres. Derived from NIC."
18 19
          },
19 -
          "lon": {
20 -
            "type": "string",
21 -
            "description": "Aircraft longitude in decimal degrees. String-encoded float."
20 +
          "nic": {
21 +
            "type": "integer",
22 +
            "maximum": 11,
23 +
            "minimum": 0,
24 +
            "description": "Navigation Integrity Category (0-11). Higher is more precise."
22 25
          },
23 26
          "rssi": {
24 27
            "type": "string",
25 -
            "description": "Received signal strength indicator in dBFS. String-encoded float."
28 +
            "maxLength": 10,
29 +
            "description": "Received signal strength indicator in dBFS."
26 30
          },
27 31
          "seen": {
28 32
            "type": "string",
29 -
            "description": "Seconds since last ADS-B message from this aircraft. String-encoded float."
33 +
            "maxLength": 10,
34 +
            "description": "Seconds since last message from this aircraft."
30 35
          },
31 36
          "squawk": {
32 37
            "type": "string",
33 -
            "description": "Transponder squawk code (4-digit octal)."
38 +
            "maxLength": 4,
39 +
            "minLength": 4,
40 +
            "description": "Transponder squawk code (e.g. '2636')."
34 41
          },
35 42
          "icaoHex": {
36 43
            "type": "string",
37 44
            "maxLength": 6,
38 45
            "minLength": 6,
39 -
            "description": "ICAO 24-bit hex identifier (uppercased)."
46 +
            "description": "ICAO 24-bit hex address (uppercased)."
40 47
          },
41 48
          "seenPos": {
42 49
            "type": "string",
43 -
            "description": "Seconds since last position fix from this aircraft. String-encoded float."
50 +
            "maxLength": 10,
51 +
            "description": "Seconds since last position fix from this aircraft."
44 52
          },
45 53
          "aircraft": {
46 54
            "ref": "com.atproto.repo.strongRef",
47 55
            "type": "ref",
48 56
            "description": "Strong reference to the at.adsb.aircraft.identity record for this aircraft."
49 57
          },
50 58
          "callsign": {
51 59
            "type": "string",
52 -
            "description": "Flight callsign as broadcast."
53 -
          },
54 -
          "altitudeFt": {
55 -
            "type": "string",
56 -
            "description": "Barometric altitude in feet, or 'ground' when on surface. String-encoded."
60 +
            "maxLength": 8,
61 +
            "description": "Flight callsign as broadcast (e.g. 'UAL123')."
57 62
          },
58 -
          "headingDeg": {
59 -
            "type": "string",
60 -
            "description": "True heading in degrees. String-encoded float."
61 -
          },
62 -
          "lastPosition": {
63 -
            "ref": "#lastPosition",
63 +
          "position": {
64 +
            "ref": "at.adsb.flight.defs#position",
64 65
            "type": "ref",
65 -
            "description": "Most recent known position with integrity data."
66 +
            "description": "Most recent position fix for this aircraft."
66 67
          },
67 -
          "groundSpeedKts": {
68 -
            "type": "string",
69 -
            "description": "Ground speed in knots. String-encoded float."
70 -
          },
71 -
          "verticalRateFpm": {
72 -
            "type": "string",
73 -
            "description": "Vertical rate in feet per minute. String-encoded float."
68 +
          "messageCount": {
69 +
            "type": "integer",
70 +
            "minimum": 0,
71 +
            "description": "Total messages received from this aircraft in the current tracking session."
74 72
          }
75 -
        },
76 -
        "description": "Telemetry frame for a single tracked aircraft."
73 +
        }
77 74
      },
78 -
      "description": "Record containing an ADSB event packet."
75 +
      "description": "Current state of a tracked aircraft as observed by a single receiver."
79 76
    }
80 77
  },
81 78
  "$type": "com.atproto.lexicon.schema",
82 79
  "lexicon": 1,
83 -
  "description": "A real-time ADSB packet. Not intended to be written to a PDS due to high volume."
80 +
  "description": "A real-time aircraft state update, broadcast via at.adsb.broadcast.subscribeEvents. Ephemeral — not written to a PDS."
84 81
}

Compare Other Versions

Lexicon Garden

@