com.airplaneian.contrail.temp.flight

airplaneian.com

Schema Diff

+5 -0

From

CID
bafyreieijojlfux...
Indexed At
2026-07-25 19:15 UTC
View this version

To

CID
bafyreicg4kns4gi...
Indexed At
2026-07-25 19:58 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "com.airplaneian.contrail.temp.flight:body.route" }
  • AddedEdge AddedEdge { src: "com.airplaneian.contrail.temp.flight:body", tgt: "com.airplaneian.contrail.temp.flight:body.route", kind: "prop", name: Some("route") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.airplaneian.contrail.temp.flight:body.route" }

Additional Notes

  • Non-breaking: AddedEdge { src: "com.airplaneian.contrail.temp.flight:body", tgt: "com.airplaneian.contrail.temp.flight:body.route", kind: "prop", name: Some("route") }
1 1
{
2 2
  "id": "com.airplaneian.contrail.temp.flight",
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 10
          "createdAt"
11 11
        ],
12 12
        "properties": {
13 13
          "date": {
14 14
            "type": "string",
15 15
            "maxLength": 10,
16 16
            "description": "Calendar date of departure at the origin, as 'YYYY-MM-DD'. Part of the identity key with 'operator' and 'flightNumber'. Must agree with any departure timestamp."
17 17
          },
18 18
          "seat": {
19 19
            "type": "string",
20 20
            "maxLength": 16,
21 21
            "description": "Seat occupied, as a string, for example '14C'."
22 22
          },
23 23
          "cabin": {
24 24
            "type": "string",
25 25
            "maxLength": 64,
26 26
            "description": "Cabin or class of service. Open string, lower camel case; readers must tolerate values outside the known list.",
27 27
            "knownValues": [
28 28
              "economy",
29 29
              "premiumEconomy",
30 30
              "business",
31 31
              "first"
32 32
            ]
33 33
          },
34 34
          "notes": {
35 35
            "type": "string",
36 36
            "maxLength": 10000,
37 37
            "description": "Free-text note. Public and permanent once published; do not put booking references or other credentials here.",
38 38
            "maxGraphemes": 1000
39 39
          },
40 +
          "route": {
41 +
            "type": "string",
42 +
            "maxLength": 1000,
43 +
            "description": "The route as filed, written as the flight plan expressed it, for example 'SSTIK2 SSTIK Q90 AVOSE'. Free text, not normalised and not reliable for matching. This is the planned route, not the flown track: a track belongs in a surveillance archive, which 'icao24' and a departure time are enough to query."
44 +
          },
40 45
          "icao24": {
41 46
            "type": "string",
42 47
            "maxLength": 8,
43 48
            "description": "The airframe's 24-bit ICAO address, six lowercase hexadecimal characters. With an actual departure time this is the identity key for flights with no flight number."
44 49
          },
45 50
          "origin": {
46 51
            "ref": "com.airplaneian.contrail.temp.defs#place",
47 52
            "type": "ref",
48 53
            "description": "Where the flight departed. May equal 'destination'; local flights are ordinary."
49 54
          },
50 55
          "source": {
51 56
            "type": "string",
52 57
            "maxLength": 64,
53 58
            "description": "Short identifier for the tool or dataset that wrote this record, for example 'flighty', 'manual', or 'adsb'."
54 59
          },
55 60
          "status": {
56 61
            "type": "string",
57 62
            "maxLength": 32,
58 63
            "description": "How the flight concluded. Absent means unknown, so write 'normal' explicitly when the flight operated as planned.",
59 64
            "knownValues": [
60 65
              "normal",
61 66
              "cancelled",
62 67
              "diverted"
63 68
            ]
64 69
          },
65 70
          "callsign": {
66 71
            "type": "string",
67 72
            "maxLength": 16,
68 73
            "description": "The flight identification the aircraft transmitted, uppercase, verbatim. Never decompose it: populate 'operator' and 'flightNumber' as well only when the split is unambiguous."
69 74
          },
70 75
          "operator": {
71 76
            "type": "string",
72 77
            "maxLength": 8,
73 78
            "description": "ICAO designator of the agency that operated the flight, three letters, uppercase. Not airlines only: 'UAL', 'FDX', 'RCH'. Use 'operatorName' where no designator exists."
74 79
          },
75 80
          "sourceId": {
76 81
            "type": "string",
77 82
            "maxLength": 512,
78 83
            "description": "That tool's own identifier for this flight. Kept in the record body rather than the record key, so a record can be corrected without becoming a new one. Meaningful only with 'source'."
79 84
          },
80 85
          "createdAt": {
81 86
            "type": "string",
82 87
            "format": "datetime",
83 88
            "description": "When this record was written, not when the flight happened. Explicit UTC offset, no fractional seconds."
84 89
          },
85 90
          "destination": {
86 91
            "ref": "com.airplaneian.contrail.temp.defs#place",
87 92
            "type": "ref",
88 93
            "description": "Where the flight arrived, or was intended to arrive if it was cancelled. If it diverted, this stays the intended destination and 'diversionAirport' holds where it landed."
89 94
          },
90 95
          "aircraftType": {
91 96
            "type": "string",
92 97
            "maxLength": 128,
93 98
            "description": "Free-text aircraft type as the source expressed it, for example 'Boeing 737-800'. Not reliable for matching. Do not derive it from 'icaoTypeDesignator' or the reverse."
94 99
          },
95 100
          "flightNumber": {
96 101
            "type": "string",
97 102
            "maxLength": 16,
98 103
            "description": "The operating agency's flight number, as a string. Digits only, without the operator prefix."
99 104
          },
100 105
          "operatorName": {
101 106
            "type": "string",
102 107
            "maxLength": 128,
103 108
            "description": "Free-text name of the operating agency, for operators with no ICAO designator. Not reliable for matching. This is who flew the aircraft, which is often not who owns it."
104 109
          },
105 110
          "registration": {
106 111
            "type": "string",
107 112
            "maxLength": 16,
108 113
            "description": "Registration or tail number, uppercase with no hyphens or spaces, so that 'G-VBOW' and 'GVBOW' are one aircraft. Military and state identifiers go here too."
109 114
          },
110 115
          "relationship": {
111 116
            "type": "string",
112 117
            "maxLength": 64,
113 118
            "description": "The author's connection to this flight. Absent means no claim is being made, unlike every other field where absent means unknown. Open string: readers must tolerate values outside the known list.",
114 119
            "knownValues": [
115 120
              "passenger",
116 121
              "pic",
117 122
              "sic",
118 123
              "student",
119 124
              "instructor",
120 125
              "crew",
121 126
              "observer"
122 127
            ]
123 128
          },
124 129
          "actualLanding": {
125 130
            "type": "string",
126 131
            "format": "datetime",
127 132
            "description": "Actual 'on' time, wheels on. Explicit UTC offset, no fractional seconds."
128 133
          },
129 134
          "actualTakeoff": {
130 135
            "type": "string",
131 136
            "format": "datetime",
132 137
            "description": "Actual 'off' time, wheels off. Explicit UTC offset, no fractional seconds."
133 138
          },
134 139
          "registeredOwner": {
135 140
            "type": "string",
136 141
            "maxLength": 128,
137 142
            "description": "Free-text name of the party the airframe is registered to. Often a trust or holding company, and frequently not the operator."
138 143
          },
139 144
          "diversionAirport": {
140 145
            "ref": "com.airplaneian.contrail.temp.defs#place",
141 146
            "type": "ref",
142 147
            "description": "Where the flight actually landed, when that was not 'destination'. Present only when 'status' is 'diverted'."
143 148
          },
144 149
          "marketingAirline": {
145 150
            "type": "string",
146 151
            "maxLength": 8,
147 152
            "description": "ICAO designator of the airline that sold the flight, when it differs from 'operator'. Codeshares only."
148 153
          },
149 154
          "scheduledLanding": {
150 155
            "type": "string",
151 156
            "format": "datetime",
152 157
            "description": "Scheduled 'on' time, wheels on. Explicit UTC offset, no fractional seconds."
153 158
          },
154 159
          "scheduledTakeoff": {
155 160
            "type": "string",
156 161
            "format": "datetime",
157 162
            "description": "Scheduled 'off' time, wheels off. Explicit UTC offset, no fractional seconds."
158 163
          },
159 164
          "actualGateArrival": {
160 165
            "type": "string",
161 166
            "format": "datetime",
162 167
            "description": "Actual 'in' time, reaching the gate or parking position. Explicit UTC offset, no fractional seconds."
163 168
          },
164 169
          "icaoTypeDesignator": {
165 170
            "type": "string",
166 171
            "maxLength": 8,
167 172
            "description": "ICAO aircraft type designator, for example 'B77W'. Write it only when the source supplies a designator."
168 173
          },
169 174
          "actualGateDeparture": {
170 175
            "type": "string",
171 176
            "format": "datetime",
172 177
            "description": "Actual 'out' time, leaving the gate or parking position. Explicit UTC offset, no fractional seconds."
173 178
          },
174 179
          "scheduledGateArrival": {
175 180
            "type": "string",
176 181
            "format": "datetime",
177 182
            "description": "Scheduled 'in' time, reaching the gate or parking position. Explicit UTC offset, no fractional seconds."
178 183
          },
179 184
          "marketingFlightNumber": {
180 185
            "type": "string",
181 186
            "maxLength": 16,
182 187
            "description": "Flight number under which the flight was sold, when it differs from 'flightNumber'."
183 188
          },
184 189
          "scheduledGateDeparture": {
185 190
            "type": "string",
186 191
            "format": "datetime",
187 192
            "description": "Scheduled 'out' time, leaving the gate or parking position. Explicit UTC offset, no fractional seconds."
188 193
          }
189 194
        }
190 195
      },
191 196
      "description": "An assertion that a particular flight existed, rather than a personal log entry about the author. Only 'createdAt' is required. Every other field is optional, and absent means unknown or not applicable rather than empty or zero. The exception is 'relationship', where absent means no claim is being made. Records of the same flight written by different people are expected, so write the identifying fields consistently. Any kind of flying is in scope, and origin may equal destination."
192 197
    }
193 198
  },
194 199
  "$type": "com.atproto.lexicon.schema",
195 200
  "lexicon": 1
196 201
}

Compare Other Versions

Lexicon Garden

@