at.adsb.receiver.sighting
Schema Diff
+58 -92
Compatibility Analysis
Breaking Changes Detected
44 breaking changes, 14 non-breaking changes.
Breaking Changes (44)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.windowStart", kind: "prop", name: Some("windowStart") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.sources", kind: "prop", name: Some("sources") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.manifest", kind: "prop", name: Some("manifest") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.telemetry", kind: "prop", name: Some("telemetry") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.windowEnd", kind: "prop", name: Some("windowEnd") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting#manifestEntry", src: "at.adsb.receiver.sighting#manifestEntry", tgt: "at.adsb.receiver.sighting#manifestEntry.icaoHex", kind: "prop", name: Some("icaoHex") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.icaoHex", kind: "prop", name: Some("icaoHex") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.lastSeen", kind: "prop", name: Some("lastSeen") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.firstSeen", kind: "prop", name: Some("firstSeen") }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.callsign" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.category" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalAltitudeFt" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalGroundSpeedKts" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalHeadingDeg" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalVerticalRateFpm" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.firstSeen" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.icaoHex" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialAltitudeFt" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialGroundSpeedKts" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialHeadingDeg" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialVerticalRateFpm" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.lastSeen" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.maxRangeNm" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.messageCount" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.positionCount" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.qnhHpa" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.squawk" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.track" }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.callsign", kind: "prop", name: Some("callsign") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.category", kind: "prop", name: Some("category") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalAltitudeFt", kind: "prop", name: Some("finalAltitudeFt") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalGroundSpeedKts", kind: "prop", name: Some("finalGroundSpeedKts") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalHeadingDeg", kind: "prop", name: Some("finalHeadingDeg") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalVerticalRateFpm", kind: "prop", name: Some("finalVerticalRateFpm") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialAltitudeFt", kind: "prop", name: Some("initialAltitudeFt") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialGroundSpeedKts", kind: "prop", name: Some("initialGroundSpeedKts") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialHeadingDeg", kind: "prop", name: Some("initialHeadingDeg") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialVerticalRateFpm", kind: "prop", name: Some("initialVerticalRateFpm") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.maxRangeNm", kind: "prop", name: Some("maxRangeNm") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.messageCount", kind: "prop", name: Some("messageCount") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.positionCount", kind: "prop", name: Some("positionCount") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.qnhHpa", kind: "prop", name: Some("qnhHpa") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.squawk", kind: "prop", name: Some("squawk") }
- RemovedEdge RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.track", kind: "prop", name: Some("track") }
Non-Breaking Changes (14)
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting#manifestEntry" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting#manifestEntry.icaoHex" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.manifest" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.manifest:items" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.rawCapture" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.sources" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.sources:items" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.telemetry" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.windowEnd" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.windowStart" }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.rawCapture", kind: "prop", name: Some("rawCapture") }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body.manifest", tgt: "at.adsb.receiver.sighting:body.manifest:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body.manifest:items", tgt: "at.adsb.receiver.sighting#manifestEntry", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "at.adsb.receiver.sighting:body.sources", tgt: "at.adsb.receiver.sighting:body.sources:items", kind: "items", name: None }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.callsign" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.category" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalAltitudeFt" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalGroundSpeedKts" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalHeadingDeg" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.finalVerticalRateFpm" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.firstSeen" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.icaoHex" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialAltitudeFt" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialGroundSpeedKts" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialHeadingDeg" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.initialVerticalRateFpm" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.lastSeen" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.maxRangeNm" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.messageCount" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.positionCount" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.qnhHpa" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.squawk" }RemovedVertex { vertex_id: "at.adsb.receiver.sighting:body.track" }
Added Elements
AddedVertex { vertex_id: "at.adsb.receiver.sighting#manifestEntry" }AddedVertex { vertex_id: "at.adsb.receiver.sighting#manifestEntry.icaoHex" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.manifest" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.manifest:items" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.rawCapture" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.sources" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.sources:items" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.telemetry" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.windowEnd" }AddedVertex { vertex_id: "at.adsb.receiver.sighting:body.windowStart" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.windowStart", kind: "prop", name: Some("windowStart") }
- Breaking: RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.sources", kind: "prop", name: Some("sources") }
- Breaking: RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.manifest", kind: "prop", name: Some("manifest") }
- Breaking: RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.telemetry", kind: "prop", name: Some("telemetry") }
- Breaking: RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.windowEnd", kind: "prop", name: Some("windowEnd") }
- Breaking: RequiredEdgeAdded { vertex_id: "at.adsb.receiver.sighting#manifestEntry", src: "at.adsb.receiver.sighting#manifestEntry", tgt: "at.adsb.receiver.sighting#manifestEntry.icaoHex", kind: "prop", name: Some("icaoHex") }
- Breaking: RequiredEdgeRemoved { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.icaoHex", kind: "prop", name: Some("icaoHex") }
- Breaking: RequiredEdgeRemoved { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.lastSeen", kind: "prop", name: Some("lastSeen") }
- Breaking: RequiredEdgeRemoved { vertex_id: "at.adsb.receiver.sighting:body", src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.firstSeen", kind: "prop", name: Some("firstSeen") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.callsign", kind: "prop", name: Some("callsign") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.category", kind: "prop", name: Some("category") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalAltitudeFt", kind: "prop", name: Some("finalAltitudeFt") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalGroundSpeedKts", kind: "prop", name: Some("finalGroundSpeedKts") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalHeadingDeg", kind: "prop", name: Some("finalHeadingDeg") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.finalVerticalRateFpm", kind: "prop", name: Some("finalVerticalRateFpm") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialAltitudeFt", kind: "prop", name: Some("initialAltitudeFt") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialGroundSpeedKts", kind: "prop", name: Some("initialGroundSpeedKts") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialHeadingDeg", kind: "prop", name: Some("initialHeadingDeg") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.initialVerticalRateFpm", kind: "prop", name: Some("initialVerticalRateFpm") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.maxRangeNm", kind: "prop", name: Some("maxRangeNm") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.messageCount", kind: "prop", name: Some("messageCount") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.positionCount", kind: "prop", name: Some("positionCount") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.qnhHpa", kind: "prop", name: Some("qnhHpa") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.squawk", kind: "prop", name: Some("squawk") }
- Breaking: RemovedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.track", kind: "prop", name: Some("track") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body", tgt: "at.adsb.receiver.sighting:body.rawCapture", kind: "prop", name: Some("rawCapture") }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body.manifest", tgt: "at.adsb.receiver.sighting:body.manifest:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body.manifest:items", tgt: "at.adsb.receiver.sighting#manifestEntry", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "at.adsb.receiver.sighting:body.sources", tgt: "at.adsb.receiver.sighting:body.sources:items", kind: "items", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"description": "A receiver's sighting of an aircraft transit through its coverage area.",
5
+
"description": "A receiver's batch sighting covering a configurable observation window.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
-
"callsign": {
10
-
"description": "Flight callsign as broadcast (e.g. 'UAL123').",
11
-
"maxLength": 8,
12
-
"type": "string"
13
-
},
14
-
"category": {
15
-
"description": "ADS-B emitter category (e.g. 'A3' for large aircraft).",
16
-
"maxLength": 4,
17
-
"type": "string"
18
-
},
19
9
"createdAt": {
20
10
"format": "datetime",
21
11
"type": "string"
22
12
},
23
-
"finalAltitudeFt": {
24
-
"description": "Barometric altitude in feet at last detection.",
25
-
"type": "integer"
13
+
"manifest": {
14
+
"description": "Lightweight list of all aircraft observed in this window.",
15
+
"items": {
16
+
"ref": "#manifestEntry",
17
+
"type": "ref"
18
+
},
19
+
"maxLength": 1000,
20
+
"minLength": 1,
21
+
"type": "array"
26
22
},
27
-
"finalGroundSpeedKts": {
28
-
"description": "Ground speed in knots at last detection.",
29
-
"maxLength": 10,
30
-
"type": "string"
23
+
"rawCapture": {
24
+
"accept": [
25
+
"application/vnd.at-adsb.raw-capture+zstd"
26
+
],
27
+
"description": "Raw demodulated SDR frames captured during this window, in ATRX envelope format. Optional — strengthens provenance but not required.",
28
+
"maxSize": 2000000,
29
+
"type": "blob"
31
30
},
32
-
"finalHeadingDeg": {
33
-
"description": "Ground track in degrees at last detection.",
34
-
"maxLength": 10,
35
-
"type": "string"
31
+
"sources": {
32
+
"description": "Deduplicated list of decoder source types that contributed position fixes in this batch window.",
33
+
"items": {
34
+
"maxLength": 32,
35
+
"type": "string"
36
+
},
37
+
"maxLength": 50,
38
+
"minLength": 1,
39
+
"type": "array"
36
40
},
37
-
"finalVerticalRateFpm": {
38
-
"description": "Vertical rate in feet per minute at last detection. Negative is descending.",
39
-
"type": "integer"
41
+
"telemetry": {
42
+
"accept": [
43
+
"application/zstd"
44
+
],
45
+
"description": "Zstd-compressed JSON object keyed by ICAO hex, values are arrays of at.adsb.flight.defs#position objects.",
46
+
"maxSize": 2000000,
47
+
"type": "blob"
40
48
},
41
-
"firstSeen": {
42
-
"description": "When this receiver first detected the aircraft.",
49
+
"windowEnd": {
50
+
"description": "End of the observation window (exclusive).",
43
51
"format": "datetime",
44
52
"type": "string"
45
53
},
46
-
"icaoHex": {
47
-
"description": "ICAO 24-bit aircraft address in hexadecimal (e.g. 'A1B2C3').",
48
-
"maxLength": 6,
49
-
"minLength": 6,
50
-
"type": "string"
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
-
},
70
-
"lastSeen": {
71
-
"description": "When this receiver last detected the aircraft.",
54
+
"windowStart": {
55
+
"description": "Start of the observation window (inclusive).",
72
56
"format": "datetime",
73
57
"type": "string"
74
-
},
75
-
"maxRangeNm": {
76
-
"description": "Furthest distance to this aircraft during the sighting, in nautical miles.",
77
-
"maxLength": 20,
78
-
"type": "string"
79
-
},
80
-
"messageCount": {
81
-
"description": "Total messages received from this aircraft.",
82
-
"minimum": 0,
83
-
"type": "integer"
84
-
},
85
-
"positionCount": {
86
-
"description": "Number of position reports received.",
87
-
"minimum": 0,
88
-
"type": "integer"
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
-
},
101
-
"track": {
102
-
"accept": [
103
-
"application/json",
104
-
"application/zstd"
105
-
],
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.",
107
-
"maxSize": 2000000,
108
-
"type": "blob"
109
58
}
110
59
},
111
60
"required": [
112
-
"icaoHex",
113
-
"firstSeen",
114
-
"lastSeen",
61
+
"windowStart",
62
+
"windowEnd",
63
+
"manifest",
64
+
"telemetry",
65
+
"sources",
115
66
"createdAt"
116
67
],
117
68
"type": "object"
118
69
},
119
70
"type": "record"
71
+
},
72
+
"manifestEntry": {
73
+
"description": "An aircraft observed in this batch window.",
74
+
"properties": {
75
+
"icaoHex": {
76
+
"description": "ICAO 24-bit hex address (uppercased).",
77
+
"maxLength": 6,
78
+
"minLength": 6,
79
+
"type": "string"
80
+
}
81
+
},
82
+
"required": [
83
+
"icaoHex"
84
+
],
85
+
"type": "object"
120
86
}
121
87
},
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.",
88
+
"description": "A batch of aircraft observations from a single receiver covering a configurable time window (default 60 seconds). Contains a manifest of observed aircraft and blobbed telemetry data.",
123
89
"id": "at.adsb.receiver.sighting",
124
90
"lexicon": 1
125
91
}