at.adsb.receiver.sighting
Schema Diff
+52 -0
Compatibility Analysis
Breaking Changes Detected
8 breaking changes, 22 non-breaking changes.
Breaking Changes (8)
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.initialHeadingDeg", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.finalGroundSpeedKts", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.initialGroundSpeedKts", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.finalHeadingDeg", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.squawk", sort: "maxLength", value: "4" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.squawk", sort: "minLength", value: "4" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.qnhHpa", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.category", sort: "maxLength", value: "4" }
Non-Breaking Changes (22)
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.category" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalAltitudeFt" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalGroundSpeedKts" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalHeadingDeg" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalVerticalRateFpm" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialAltitudeFt" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialGroundSpeedKts" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialHeadingDeg" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialVerticalRateFpm" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.qnhHpa" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.squawk" }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.category", kind: "prop", name: Some("category") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalAltitudeFt", kind: "prop", name: Some("finalAltitudeFt") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalGroundSpeedKts", kind: "prop", name: Some("finalGroundSpeedKts") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalHeadingDeg", kind: "prop", name: Some("finalHeadingDeg") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalVerticalRateFpm", kind: "prop", name: Some("finalVerticalRateFpm") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialAltitudeFt", kind: "prop", name: Some("initialAltitudeFt") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialGroundSpeedKts", kind: "prop", name: Some("initialGroundSpeedKts") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialHeadingDeg", kind: "prop", name: Some("initialHeadingDeg") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialVerticalRateFpm", kind: "prop", name: Some("initialVerticalRateFpm") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.qnhHpa", kind: "prop", name: Some("qnhHpa") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.squawk", kind: "prop", name: Some("squawk") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.category" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalAltitudeFt" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalGroundSpeedKts" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalHeadingDeg" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalVerticalRateFpm" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialAltitudeFt" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialGroundSpeedKts" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialHeadingDeg" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialVerticalRateFpm" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.qnhHpa" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.squawk" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.finalGroundSpeedKts", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.finalHeadingDeg", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.initialHeadingDeg", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.initialGroundSpeedKts", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.squawk", sort: "minLength", value: "4" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.squawk", sort: "maxLength", value: "4" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.category", sort: "maxLength", value: "4" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.receiver.sighting:body.qnhHpa", sort: "maxLength", value: "10" }
Additional Notes
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.category", kind: "prop", name: Some("category") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalAltitudeFt", kind: "prop", name: Some("finalAltitudeFt") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalGroundSpeedKts", kind: "prop", name: Some("finalGroundSpeedKts") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalHeadingDeg", kind: "prop", name: Some("finalHeadingDeg") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalVerticalRateFpm", kind: "prop", name: Some("finalVerticalRateFpm") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialAltitudeFt", kind: "prop", name: Some("initialAltitudeFt") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialGroundSpeedKts", kind: "prop", name: Some("initialGroundSpeedKts") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialHeadingDeg", kind: "prop", name: Some("initialHeadingDeg") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialVerticalRateFpm", kind: "prop", name: Some("initialVerticalRateFpm") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.qnhHpa", kind: "prop", name: Some("qnhHpa") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.squawk", kind: "prop", name: Some("squawk") }
1
1
{
2
2
"id": "at.adsb.receiver.sighting",
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
"firstSeen",
12
12
"lastSeen",
13
13
"createdAt"
14
14
],
15
15
"properties": {
16
16
"track": {
17
17
"type": "blob",
18
18
"accept": [
19
19
"application/json",
20
20
"application/zstd"
21
21
],
22
22
"maxSize": 2000000,
23
23
"description": "Position track as a JSON array of at.adsb.flight.defs#position objects, optionally compressed. This is the receiver's partial view of the flight."
24
24
},
25
+
"qnhHpa": {
26
+
"type": "string",
27
+
"maxLength": 10,
28
+
"description": "Altimeter setting (QNH) in hectopascals."
29
+
},
30
+
"squawk": {
31
+
"type": "string",
32
+
"maxLength": 4,
33
+
"minLength": 4,
34
+
"description": "Transponder squawk code (e.g. '2636')."
35
+
},
25
36
"icaoHex": {
26
37
"type": "string",
27
38
"maxLength": 6,
28
39
"minLength": 6,
29
40
"description": "ICAO 24-bit aircraft address in hexadecimal (e.g. 'A1B2C3')."
30
41
},
31
42
"callsign": {
32
43
"type": "string",
33
44
"maxLength": 8,
34
45
"description": "Flight callsign as broadcast (e.g. 'UAL123')."
35
46
},
47
+
"category": {
48
+
"type": "string",
49
+
"maxLength": 4,
50
+
"description": "ADS-B emitter category (e.g. 'A3' for large aircraft)."
51
+
},
36
52
"lastSeen": {
37
53
"type": "string",
38
54
"format": "datetime",
39
55
"description": "When this receiver last detected the aircraft."
40
56
},
41
57
"createdAt": {
42
58
"type": "string",
43
59
"format": "datetime"
44
60
},
45
61
"firstSeen": {
46
62
"type": "string",
47
63
"format": "datetime",
48
64
"description": "When this receiver first detected the aircraft."
49
65
},
50
66
"maxRangeNm": {
51
67
"type": "string",
52
68
"maxLength": 20,
53
69
"description": "Furthest distance to this aircraft during the sighting, in nautical miles."
54
70
},
55
71
"messageCount": {
56
72
"type": "integer",
57
73
"minimum": 0,
58
74
"description": "Total messages received from this aircraft."
59
75
},
60
76
"positionCount": {
61
77
"type": "integer",
62
78
"minimum": 0,
63
79
"description": "Number of position reports received."
80
+
},
81
+
"finalAltitudeFt": {
82
+
"type": "integer",
83
+
"description": "Barometric altitude in feet at last detection."
84
+
},
85
+
"finalHeadingDeg": {
86
+
"type": "string",
87
+
"maxLength": 10,
88
+
"description": "Ground track in degrees at last detection."
89
+
},
90
+
"initialAltitudeFt": {
91
+
"type": "integer",
92
+
"description": "Barometric altitude in feet at first detection."
93
+
},
94
+
"initialHeadingDeg": {
95
+
"type": "string",
96
+
"maxLength": 10,
97
+
"description": "Ground track in degrees at first detection."
98
+
},
99
+
"finalGroundSpeedKts": {
100
+
"type": "string",
101
+
"maxLength": 10,
102
+
"description": "Ground speed in knots at last detection."
103
+
},
104
+
"finalVerticalRateFpm": {
105
+
"type": "integer",
106
+
"description": "Vertical rate in feet per minute at last detection. Negative is descending."
107
+
},
108
+
"initialGroundSpeedKts": {
109
+
"type": "string",
110
+
"maxLength": 10,
111
+
"description": "Ground speed in knots at first detection."
112
+
},
113
+
"initialVerticalRateFpm": {
114
+
"type": "integer",
115
+
"description": "Vertical rate in feet per minute at first detection. Negative is descending."
64
116
}
65
117
}
66
118
},
67
119
"description": "A receiver's sighting of an aircraft transit through its coverage area."
68
120
}
69
121
},
70
122
"$type": "com.atproto.lexicon.schema",
71
123
"lexicon": 1,
72
124
"description": "A single receiver's sighting of an aircraft. Created when the aircraft leaves the receiver's coverage area. Feeder-authoritative — published immediately without waiting for the full flight to complete."
73
125
}