at.adsb.broadcast.message

adsb.at

Schema Diff

+32 -35

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

22 breaking changes, 10 non-breaking changes.

Breaking Changes (22)
  • RemovedVertex RemovedVertex { vertex_id: "at.adsb.broadcast.message#lastPosition" }
  • 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") }
  • RemovedEdge RemovedEdge { src: "at.adsb.broadcast.message:body.lastPosition", tgt: "at.adsb.broadcast.message#lastPosition", kind: "ref", name: None }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.callsign", sort: "maxLength", value: "8" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.seen", sort: "maxLength", value: "10" }
  • 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.seenPos", sort: "maxLength", value: "10" }
  • ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.broadcast.message:body.rssi", sort: "maxLength", value: "10" }
Non-Breaking Changes (10)
  • 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" }
  • AddedVertex AddedVertex { vertex_id: "at.adsb.flight.defs#position" }
  • 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") }
  • AddedEdge AddedEdge { src: "at.adsb.broadcast.message:body.position", tgt: "at.adsb.flight.defs#position", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "at.adsb.broadcast.message#lastPosition" }
  • 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" }
  • AddedVertex { vertex_id: "at.adsb.flight.defs#position" }

Constraint Changes

  • 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.callsign", sort: "maxLength", value: "8" }
  • 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" }

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

Compare Other Versions

Lexicon Garden

@