at.adsb.receiver.sighting

adsb.at

Schema Diff

+58 -92

From

CID
bafyreih3il7ayuj...
Indexed At
2026-05-24 01:57 UTC
View this version

To

CID
bafyreifd2vyeji2...
Indexed At
2026-05-27 12:56 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

44 breaking changes, 14 non-breaking changes.

Breaking Changes (44)
  • 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") }
  • 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") }
  • 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
}

Compare Other Versions

Lexicon Garden

@