at.adsb.broadcast.message
Schema Diff
+32 -35
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
}