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