From
bafyreig5rjdodd4esr5muw2k54lhexa5tcvaw3k6jv3lytcvimppmz53uu
indexed 2026-05-24 04:21 UTC
View this version
To
bafyreig57stwfaczotoscht34jwfll6hwfuoycgakrab7aaivrye7wuguq
indexed 2026-05-25 20:10 UTC
View this version
Compatibility
breaking 30 breaking changes, 26 non-breaking changes.
Breaking changes (30)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.adsb.flight.record:body", src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.batches", kind: "prop", name: Some("batches") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "at.adsb.flight.record:body", src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.contributors", kind: "prop", name: Some("contributors") }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.defs#contributor" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.defs#trackSummary" }
- 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.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.origin" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.summary" }
- RemovedVertex RemovedVertex { vertex_id: "at.adsb.flight.record:body.track" }
- RemovedVertex RemovedVertex { vertex_id: "community.lexicon.location.geo" }
- 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#airport.location", tgt: "community.lexicon.location.geo", kind: "ref", name: None }
- 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.origin", kind: "prop", name: Some("origin") }
- 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 }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body.contributors:items", tgt: "at.adsb.flight.defs#contributor", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body.destination", tgt: "at.adsb.flight.record#airport", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body.origin", tgt: "at.adsb.flight.record#airport", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "at.adsb.flight.record:body.summary", tgt: "at.adsb.flight.defs#trackSummary", kind: "ref", name: None }
Non-breaking changes (26)
- 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.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 }
- AddedEdge AddedEdge { src: "at.adsb.flight.record:body.batches:items", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
Migration guidance
Removed
RemovedVertex { vertex_id: "at.adsb.flight.defs#contributor" }RemovedVertex { vertex_id: "at.adsb.flight.defs#trackSummary" }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.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.origin" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.summary" }RemovedVertex { vertex_id: "at.adsb.flight.record:body.track" }RemovedVertex { vertex_id: "community.lexicon.location.geo" }
Added
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" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "at.adsb.flight.record:body", src: "at.adsb.flight.record:body", tgt: "at.adsb.flight.record:body.batches", kind: "prop", name: Some("batches") }
- Breaking: RequiredEdgeRemoved { vertex_id: "at.adsb.flight.record:body", 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#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#airport.location", tgt: "community.lexicon.location.geo", kind: "ref", name: None }
- 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.origin", kind: "prop", name: Some("origin") }
- 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 }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body.contributors:items", tgt: "at.adsb.flight.defs#contributor", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body.destination", tgt: "at.adsb.flight.record#airport", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body.origin", tgt: "at.adsb.flight.record#airport", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "at.adsb.flight.record:body.summary", tgt: "at.adsb.flight.defs#trackSummary", kind: "ref", name: None }
- 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 }
- Non-breaking: AddedEdge { src: "at.adsb.flight.record:body.batches:items", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {4
"airport": {5
"description": "An airport identified by ICAO or IATA code.",6
"properties": {7
"iata": {8
"description": "IATA airport code (e.g. 'BOS', 'LHR').",9
"maxLength": 3,10
"minLength": 3,11
"type": "string"12
},13
"icao": {14
"description": "ICAO airport code (e.g. 'KBOS', 'EGLL').",15
"maxLength": 4,16
"minLength": 4,17
"type": "string"18
},19
"location": {20
"description": "Geographic position of the airport.",21
"ref": "community.lexicon.location.geo",22
"type": "ref"23
},24
"name": {25
"description": "Human-readable airport name.",26
"maxGraphemes": 128,27
"maxLength": 1280,28
"type": "string"29
}30
},31
"type": "object"32
},334
"main": {34
"description": "A completed flight record with receiver attribution.",5
"description": "A receiver's record of one aircraft's complete observed flight.",356
"key": "tid",367
"record": {378
"properties": {389
"aircraft": {3910
"description": "Strong reference to the at.adsb.aircraft.identity record for this aircraft.",4011
"ref": "com.atproto.repo.strongRef",4112
"type": "ref"4213
},43
"callsign": {44
"description": "Flight callsign as broadcast (e.g. 'UAL123').",45
"maxLength": 8,46
"type": "string"47
},48
"contributors": {49
"description": "Receivers that contributed data to this flight record.",14
"batches": {15
"description": "Strong references to all at.adsb.receiver.sighting batch records where this aircraft appeared.",5016
"items": {51
"ref": "at.adsb.flight.defs#contributor",17
"ref": "com.atproto.repo.strongRef",5218
"type": "ref"5319
},54
"maxLength": 100,20
"maxLength": 5760,5521
"minLength": 1,5622
"type": "array"5723
},24
"callsign": {25
"description": "Flight callsign as broadcast (e.g. 'UAL123').",26
"maxLength": 8,27
"type": "string"28
},5829
"createdAt": {5930
"format": "datetime",6031
"type": "string"6132
},62
"destination": {63
"description": "Arrival airport, if known.",64
"ref": "#airport",65
"type": "ref"33
"finalAltitudeFt": {34
"description": "Barometric altitude in feet at last detection.",35
"type": "integer"36
},37
"finalGroundSpeedKts": {38
"description": "Ground speed in knots at last detection.",39
"maxLength": 10,40
"type": "string"6641
},42
"finalHeadingDeg": {43
"description": "Ground track in degrees at last detection.",44
"maxLength": 10,45
"type": "string"46
},47
"finalVerticalRateFpm": {48
"description": "Vertical rate in feet per minute at last detection. Negative is descending.",49
"type": "integer"50
},6751
"firstSeen": {68
"description": "When the aircraft was first observed by any contributor.",52
"description": "When this receiver first detected the aircraft.",6953
"format": "datetime",7054
"type": "string"7155
},56
"initialAltitudeFt": {57
"description": "Barometric altitude in feet at first detection.",58
"type": "integer"59
},60
"initialGroundSpeedKts": {61
"description": "Ground speed in knots at first detection.",62
"maxLength": 10,63
"type": "string"64
},65
"initialHeadingDeg": {66
"description": "Ground track in degrees at first detection.",67
"maxLength": 10,68
"type": "string"69
},70
"initialVerticalRateFpm": {71
"description": "Vertical rate in feet per minute at first detection. Negative is descending.",72
"type": "integer"73
},7274
"lastSeen": {73
"description": "When the aircraft was last observed by any contributor.",75
"description": "When this receiver last detected the aircraft.",7476
"format": "datetime",7577
"type": "string"7678
},77
"origin": {78
"description": "Departure airport, if known.",79
"ref": "#airport",80
"type": "ref"79
"maxRangeNm": {80
"description": "Furthest distance to this aircraft during the sighting, in nautical miles.",81
"maxLength": 20,82
"type": "string"83
},84
"messageCount": {85
"description": "Total messages received from this aircraft by this receiver.",86
"minimum": 0,87
"type": "integer"8188
},8289
"positionCount": {83
"description": "Total position reports across all contributors.",90
"description": "Number of position reports received by this receiver.",8491
"minimum": 0,8592
"type": "integer"8693
},87
"summary": {88
"description": "Summary of the flight path.",89
"ref": "at.adsb.flight.defs#trackSummary",90
"type": "ref"91
},92
"track": {93
"accept": [94
"application/json",95
"application/zstd"96
],97
"description": "Full position track as a JSON array of at.adsb.flight.defs#position objects, optionally compressed.",98
"maxSize": 2000000,99
"type": "blob"94
"squawk": {95
"description": "Transponder squawk code (e.g. '2636').",96
"maxLength": 4,97
"minLength": 4,98
"type": "string"10099
}101100
},102101
"required": [103102
"aircraft",104103
"firstSeen",105104
"lastSeen",106
"contributors",105
"batches",107106
"createdAt"108107
],109108
"type": "object"110109
},111110
"type": "record"112111
}113112
},114
"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.",113
"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.",115114
"id": "at.adsb.flight.record",116115
"lexicon": 1117116
}