at.adsb.flight.record
Schema Diff
+65 -77
Compatibility Analysis
Breaking Changes Detected
35 breaking changes, 38 non-breaking changes.
Breaking Changes (35)
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record#airport" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record#airport.iata" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record#airport.icao" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record#airport.location" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record#airport.name" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.aircraftType" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.contributors" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.contributors:items" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.destination" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.icaoHex" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.origin" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.registration" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.summary" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.track" }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record#airport", tgt: "at.adsb.flight.record#airport.iata", kind: "prop", name: Some("iata") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record#airport", tgt: "at.adsb.flight.record#airport.icao", kind: "prop", name: Some("icao") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record#airport", tgt: "at.adsb.flight.record#airport.location", kind: "prop", name: Some("location") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record#airport", tgt: "at.adsb.flight.record#airport.name", kind: "prop", name: Some("name") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.aircraftType", kind: "prop", name: Some("aircraftType") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.contributors", kind: "prop", name: Some("contributors") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.destination", kind: "prop", name: Some("destination") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.icaoHex", kind: "prop", name: Some("icaoHex") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.origin", kind: "prop", name: Some("origin") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.registration", kind: "prop", name: Some("registration") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.summary", kind: "prop", name: Some("summary") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.track", kind: "prop", name: Some("track") }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body.contributors", tgt: "at.adsb.flight.record:body.contributors:items", kind: "items", name: None }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.finalHeadingDeg", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.initialGroundSpeedKts", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.finalGroundSpeedKts", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.maxRangeNm", sort: "maxLength", value: "20" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.initialHeadingDeg", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.squawk", sort: "minLength", value: "4" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.squawk", sort: "maxLength", value: "4" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.messageCount", sort: "minimum", value: "0" }
Non-Breaking Changes (38)
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.aircraft" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.batches" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.batches:items" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.finalAltitudeFt" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.finalGroundSpeedKts" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.finalHeadingDeg" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.finalVerticalRateFpm" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.initialAltitudeFt" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.initialGroundSpeedKts" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.initialHeadingDeg" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.initialVerticalRateFpm" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.maxRangeNm" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.messageCount" }
- AddedVertex AddedVertex { vertex_id: "at.adsb.flight.record:body.squawk" }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.aircraft", kind: "prop", name: Some("aircraft") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.batches", kind: "prop", name: Some("batches") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.finalAltitudeFt", kind: "prop", name: Some("finalAltitudeFt") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.finalGroundSpeedKts", kind: "prop", name: Some("finalGroundSpeedKts") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.finalHeadingDeg", kind: "prop", name: Some("finalHeadingDeg") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.finalVerticalRateFpm", kind: "prop", name: Some("finalVerticalRateFpm") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.initialAltitudeFt", kind: "prop", name: Some("initialAltitudeFt") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.initialGroundSpeedKts", kind: "prop", name: Some("initialGroundSpeedKts") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.initialHeadingDeg", kind: "prop", name: Some("initialHeadingDeg") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.initialVerticalRateFpm", kind: "prop", name: Some("initialVerticalRateFpm") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.maxRangeNm", kind: "prop", name: Some("maxRangeNm") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.messageCount", kind: "prop", name: Some("messageCount") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.squawk", kind: "prop", name: Some("squawk") }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body.batches", tgt: "at.adsb.flight.record:body.batches:items", kind: "items", name: None }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.icao", sort: "minLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.icao", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record:body.icaoHex", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record:body.icaoHex", sort: "minLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record:body.registration", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.name", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.name", sort: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record:body.aircraftType", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.iata", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.iata", sort: "minLength" }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "at.adsb.flight.record#airport" }RemovedVertex { vertex_id: "at.adsb.flight.record#airport.iata" }RemovedVertex { vertex_id: "at.adsb.flight.record#airport.icao" }RemovedVertex { vertex_id: "at.adsb.flight.record#airport.location" }RemovedVertex { vertex_id: "at.adsb.flight.record#airport.name" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.aircraftType" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.contributors" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.contributors:items" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.destination" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.icaoHex" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.origin" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.registration" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.summary" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.track" }
Added Elements
AddedVertex { vertex_id: "at.adsb.flight.record:body.aircraft" }AddedVertex { vertex_id: "at.adsb.flight.record:body.batches" }AddedVertex { vertex_id: "at.adsb.flight.record:body.batches:items" }AddedVertex { vertex_id: "at.adsb.flight.record:body.finalAltitudeFt" }AddedVertex { vertex_id: "at.adsb.flight.record:body.finalGroundSpeedKts" }AddedVertex { vertex_id: "at.adsb.flight.record:body.finalHeadingDeg" }AddedVertex { vertex_id: "at.adsb.flight.record:body.finalVerticalRateFpm" }AddedVertex { vertex_id: "at.adsb.flight.record:body.initialAltitudeFt" }AddedVertex { vertex_id: "at.adsb.flight.record:body.initialGroundSpeedKts" }AddedVertex { vertex_id: "at.adsb.flight.record:body.initialHeadingDeg" }AddedVertex { vertex_id: "at.adsb.flight.record:body.initialVerticalRateFpm" }AddedVertex { vertex_id: "at.adsb.flight.record:body.maxRangeNm" }AddedVertex { vertex_id: "at.adsb.flight.record:body.messageCount" }AddedVertex { vertex_id: "at.adsb.flight.record:body.squawk" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.finalGroundSpeedKts", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.initialGroundSpeedKts", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.finalHeadingDeg", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.messageCount", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.maxRangeNm", sort: "maxLength", value: "20" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.squawk", sort: "minLength", value: "4" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.squawk", sort: "maxLength", value: "4" }
- ConstraintAdded ConstraintAdded { vertex_id: "at.adsb.flight.record:body.initialHeadingDeg", sort: "maxLength", value: "10" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.name", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.name", sort: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.icao", sort: "minLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.icao", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record:body.aircraftType", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record:body.registration", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record:body.icaoHex", sort: "minLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record:body.icaoHex", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.iata", sort: "minLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.adsb.flight.record#airport.iata", sort: "maxLength" }
Additional Notes
- Breaking: RemovedEdge { src: "at.adsb.flight.record#airport", tgt: "at.adsb.flight.record#airport.iata", kind: "prop", name: Some("iata") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record#airport", tgt: "at.adsb.flight.record#airport.icao", kind: "prop", name: Some("icao") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record#airport", tgt: "at.adsb.flight.record#airport.location", kind: "prop", name: Some("location") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record#airport", tgt: "at.adsb.flight.record#airport.name", kind: "prop", name: Some("name") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.aircraftType", kind: "prop", name: Some("aircraftType") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.contributors", kind: "prop", name: Some("contributors") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.destination", kind: "prop", name: Some("destination") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.icaoHex", kind: "prop", name: Some("icaoHex") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.origin", kind: "prop", name: Some("origin") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.registration", kind: "prop", name: Some("registration") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.summary", kind: "prop", name: Some("summary") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.track", kind: "prop", name: Some("track") }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body.contributors", tgt: "at.adsb.flight.record:body.contributors:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.aircraft", kind: "prop", name: Some("aircraft") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.batches", kind: "prop", name: Some("batches") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.finalAltitudeFt", kind: "prop", name: Some("finalAltitudeFt") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.finalGroundSpeedKts", kind: "prop", name: Some("finalGroundSpeedKts") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.finalHeadingDeg", kind: "prop", name: Some("finalHeadingDeg") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.finalVerticalRateFpm", kind: "prop", name: Some("finalVerticalRateFpm") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.initialAltitudeFt", kind: "prop", name: Some("initialAltitudeFt") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.initialGroundSpeedKts", kind: "prop", name: Some("initialGroundSpeedKts") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.initialHeadingDeg", kind: "prop", name: Some("initialHeadingDeg") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.initialVerticalRateFpm", kind: "prop", name: Some("initialVerticalRateFpm") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.maxRangeNm", kind: "prop", name: Some("maxRangeNm") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.messageCount", kind: "prop", name: Some("messageCount") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.squawk", kind: "prop", name: Some("squawk") }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body.batches", tgt: "at.adsb.flight.record:body.batches:items", kind: "items", name: None }
1
1
{
2
2
"id": "at.adsb.flight.record",
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
-
"icaoHex",
10
+
"aircraft",
11
11
"firstSeen",
12
12
"lastSeen",
13
-
"contributors",
13
+
"batches",
14
14
"createdAt"
15
15
],
16
16
"properties": {
17
-
"track": {
18
-
"type": "blob",
19
-
"accept": [
20
-
"application/json",
21
-
"application/zstd"
22
-
],
23
-
"maxSize": 2000000,
24
-
"description": "Full position track as a JSON array of at.adsb.flight.defs#position objects, optionally compressed."
25
-
},
26
-
"origin": {
27
-
"ref": "#airport",
28
-
"type": "ref",
29
-
"description": "Departure airport, if known."
30
-
},
31
-
"icaoHex": {
17
+
"squawk": {
32
18
"type": "string",
33
-
"maxLength": 6,
34
-
"minLength": 6,
35
-
"description": "ICAO 24-bit aircraft address in hexadecimal (e.g. 'A1B2C3')."
19
+
"maxLength": 4,
20
+
"minLength": 4,
21
+
"description": "Transponder squawk code (e.g. '2636')."
36
22
},
37
-
"summary": {
38
-
"ref": "at.adsb.flight.defs#trackSummary",
23
+
"batches": {
24
+
"type": "array",
25
+
"items": {
26
+
"ref": "com.atproto.repo.strongRef",
27
+
"type": "ref"
28
+
},
29
+
"maxLength": 5760,
30
+
"minLength": 1,
31
+
"description": "Strong references to all at.adsb.receiver.sighting batch records where this aircraft appeared."
32
+
},
33
+
"aircraft": {
34
+
"ref": "com.atproto.repo.strongRef",
39
35
"type": "ref",
40
-
"description": "Summary of the flight path."
36
+
"description": "Strong reference to the at.adsb.aircraft.identity record for this aircraft."
41
37
},
42
38
"callsign": {
43
39
"type": "string",
44
40
"maxLength": 8,
45
41
"description": "Flight callsign as broadcast (e.g. 'UAL123')."
46
42
},
47
43
"lastSeen": {
48
44
"type": "string",
49
45
"format": "datetime",
50
-
"description": "When the aircraft was last observed by any contributor."
46
+
"description": "When this receiver last detected the aircraft."
51
47
},
52
48
"createdAt": {
53
49
"type": "string",
54
50
"format": "datetime"
55
51
},
56
52
"firstSeen": {
57
53
"type": "string",
58
54
"format": "datetime",
59
-
"description": "When the aircraft was first observed by any contributor."
55
+
"description": "When this receiver first detected the aircraft."
56
+
},
57
+
"maxRangeNm": {
58
+
"type": "string",
59
+
"maxLength": 20,
60
+
"description": "Furthest distance to this aircraft during the sighting, in nautical miles."
61
+
},
62
+
"messageCount": {
63
+
"type": "integer",
64
+
"minimum": 0,
65
+
"description": "Total messages received from this aircraft by this receiver."
66
+
},
67
+
"positionCount": {
68
+
"type": "integer",
69
+
"minimum": 0,
70
+
"description": "Number of position reports received by this receiver."
71
+
},
72
+
"finalAltitudeFt": {
73
+
"type": "integer",
74
+
"description": "Barometric altitude in feet at last detection."
75
+
},
76
+
"finalHeadingDeg": {
77
+
"type": "string",
78
+
"maxLength": 10,
79
+
"description": "Ground track in degrees at last detection."
80
+
},
81
+
"initialAltitudeFt": {
82
+
"type": "integer",
83
+
"description": "Barometric altitude in feet at first detection."
60
84
},
61
-
"destination": {
62
-
"ref": "#airport",
63
-
"type": "ref",
64
-
"description": "Arrival airport, if known."
85
+
"initialHeadingDeg": {
86
+
"type": "string",
87
+
"maxLength": 10,
88
+
"description": "Ground track in degrees at first detection."
65
89
},
66
-
"aircraftType": {
90
+
"finalGroundSpeedKts": {
67
91
"type": "string",
68
-
"maxLength": 4,
69
-
"description": "ICAO type designator (e.g. 'B738', 'A320')."
92
+
"maxLength": 10,
93
+
"description": "Ground speed in knots at last detection."
70
94
},
71
-
"contributors": {
72
-
"type": "array",
73
-
"items": {
74
-
"ref": "at.adsb.flight.defs#contributor",
75
-
"type": "ref"
76
-
},
77
-
"maxLength": 100,
78
-
"minLength": 1,
79
-
"description": "Receivers that contributed data to this flight record."
95
+
"finalVerticalRateFpm": {
96
+
"type": "integer",
97
+
"description": "Vertical rate in feet per minute at last detection. Negative is descending."
80
98
},
81
-
"registration": {
99
+
"initialGroundSpeedKts": {
82
100
"type": "string",
83
101
"maxLength": 10,
84
-
"description": "Aircraft registration (e.g. 'N12345', 'C-GABC')."
102
+
"description": "Ground speed in knots at first detection."
85
103
},
86
-
"positionCount": {
104
+
"initialVerticalRateFpm": {
87
105
"type": "integer",
88
-
"minimum": 0,
89
-
"description": "Total position reports across all contributors."
106
+
"description": "Vertical rate in feet per minute at first detection. Negative is descending."
90
107
}
91
108
}
92
109
},
93
-
"description": "A completed flight record with receiver attribution."
94
-
},
95
-
"airport": {
96
-
"type": "object",
97
-
"properties": {
98
-
"iata": {
99
-
"type": "string",
100
-
"maxLength": 3,
101
-
"minLength": 3,
102
-
"description": "IATA airport code (e.g. 'BOS', 'LHR')."
103
-
},
104
-
"icao": {
105
-
"type": "string",
106
-
"maxLength": 4,
107
-
"minLength": 4,
108
-
"description": "ICAO airport code (e.g. 'KBOS', 'EGLL')."
109
-
},
110
-
"name": {
111
-
"type": "string",
112
-
"maxLength": 1280,
113
-
"description": "Human-readable airport name.",
114
-
"maxGraphemes": 128
115
-
},
116
-
"location": {
117
-
"ref": "community.lexicon.location.geo",
118
-
"type": "ref",
119
-
"description": "Geographic position of the airport."
120
-
}
121
-
},
122
-
"description": "An airport identified by ICAO or IATA code."
110
+
"description": "A receiver's record of one aircraft's complete observed flight."
123
111
}
124
112
},
125
113
"$type": "com.atproto.lexicon.schema",
126
114
"lexicon": 1,
127
-
"description": "A completed flight as synthesised from one or more receiver sightings. Created by an aggregator after the flight is no longer tracked. Links back to the individual receiver sightings that contributed data."
115
+
"description": "A receiver-authored record of an aircraft's transit through the receiver's coverage area. Created on departure. References all contributing batch sightings and the aircraft identity via strongRef for provenance verification."
128
116
}