com.airplaneian.contrail.temp.flight
Schema Diff
+6 -6
Compatibility Analysis
Backward Compatible
No changes detected.
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
-
"description": "Cabin or class of service. Open string, lower camel case; readers must tolerate values outside the known list.",
26
+
"description": "Cabin or class of service. An open string in lower camel case; the known values are not exhaustive.",
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
-
"description": "Free-text note. Public and permanent once published; do not put booking references or other credentials here.",
37
+
"description": "Free-text note. Public as soon as the record is written, and copies may persist after the record is deleted. Do not put booking references or other credentials here.",
38
38
"maxGraphemes": 1000
39
39
},
40
40
"route": {
41
41
"type": "string",
42
42
"maxLength": 1000,
43
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
44
},
45
45
"icao24": {
46
46
"type": "string",
47
47
"maxLength": 8,
48
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."
49
49
},
50
50
"origin": {
51
51
"ref": "com.airplaneian.contrail.temp.defs#place",
52
52
"type": "ref",
53
53
"description": "Where the flight departed. May equal 'destination'; local flights are ordinary."
54
54
},
55
55
"source": {
56
56
"type": "string",
57
57
"maxLength": 64,
58
58
"description": "Short identifier for the tool or dataset that wrote this record, for example 'flighty', 'manual', or 'adsb'."
59
59
},
60
60
"status": {
61
61
"type": "string",
62
62
"maxLength": 32,
63
63
"description": "How the flight concluded. Absent means unknown, so write 'normal' explicitly when the flight operated as planned.",
64
64
"knownValues": [
65
65
"normal",
66
66
"cancelled",
67
67
"diverted"
68
68
]
69
69
},
70
70
"callsign": {
71
71
"type": "string",
72
72
"maxLength": 16,
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."
73
+
"description": "The flight identification the aircraft broadcast, uppercase and exactly as transmitted. Holds the whole callsign, never a fragment of one. May be an operator designator followed by a flight number, a registration, or a string with no internal structure."
74
74
},
75
75
"operator": {
76
76
"type": "string",
77
77
"maxLength": 8,
78
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."
79
79
},
80
80
"sourceId": {
81
81
"type": "string",
82
82
"maxLength": 512,
83
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'."
84
84
},
85
85
"createdAt": {
86
86
"type": "string",
87
87
"format": "datetime",
88
88
"description": "When this record was written, not when the flight happened. Explicit UTC offset, no fractional seconds."
89
89
},
90
90
"destination": {
91
91
"ref": "com.airplaneian.contrail.temp.defs#place",
92
92
"type": "ref",
93
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."
94
94
},
95
95
"aircraftType": {
96
96
"type": "string",
97
97
"maxLength": 128,
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."
98
+
"description": "Free-text aircraft type as the source expressed it, for example 'Boeing 737-800'. Not normalised and not reliable for matching. Several distinct ICAO designators can share one marketing name."
99
99
},
100
100
"flightNumber": {
101
101
"type": "string",
102
102
"maxLength": 16,
103
103
"description": "The operating agency's flight number, as a string. Digits only, without the operator prefix."
104
104
},
105
105
"operatorName": {
106
106
"type": "string",
107
107
"maxLength": 128,
108
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."
109
109
},
110
110
"registration": {
111
111
"type": "string",
112
112
"maxLength": 16,
113
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."
114
114
},
115
115
"relationship": {
116
116
"type": "string",
117
117
"maxLength": 64,
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.",
118
+
"description": "The author's connection to this flight. Absent means no claim is being made, unlike every other field where absent means unknown. An open string: the known values are not exhaustive.",
119
119
"knownValues": [
120
120
"passenger",
121
121
"pic",
122
122
"sic",
123
123
"student",
124
124
"instructor",
125
125
"crew",
126
126
"observer"
127
127
]
128
128
},
129
129
"actualLanding": {
130
130
"type": "string",
131
131
"format": "datetime",
132
132
"description": "Actual 'on' time, wheels on. Explicit UTC offset, no fractional seconds."
133
133
},
134
134
"actualTakeoff": {
135
135
"type": "string",
136
136
"format": "datetime",
137
137
"description": "Actual 'off' time, wheels off. Explicit UTC offset, no fractional seconds."
138
138
},
139
139
"registeredOwner": {
140
140
"type": "string",
141
141
"maxLength": 128,
142
142
"description": "Free-text name of the party the airframe is registered to. Often a trust or holding company, and frequently not the operator."
143
143
},
144
144
"diversionAirport": {
145
145
"ref": "com.airplaneian.contrail.temp.defs#place",
146
146
"type": "ref",
147
147
"description": "Where the flight actually landed, when that was not 'destination'. Present only when 'status' is 'diverted'."
148
148
},
149
149
"marketingAirline": {
150
150
"type": "string",
151
151
"maxLength": 8,
152
152
"description": "ICAO designator of the airline that sold the flight, when it differs from 'operator'. Codeshares only."
153
153
},
154
154
"scheduledLanding": {
155
155
"type": "string",
156
156
"format": "datetime",
157
157
"description": "Scheduled 'on' time, wheels on. Explicit UTC offset, no fractional seconds."
158
158
},
159
159
"scheduledTakeoff": {
160
160
"type": "string",
161
161
"format": "datetime",
162
162
"description": "Scheduled 'off' time, wheels off. Explicit UTC offset, no fractional seconds."
163
163
},
164
164
"actualGateArrival": {
165
165
"type": "string",
166
166
"format": "datetime",
167
167
"description": "Actual 'in' time, reaching the gate or parking position. Explicit UTC offset, no fractional seconds."
168
168
},
169
169
"icaoTypeDesignator": {
170
170
"type": "string",
171
171
"maxLength": 8,
172
-
"description": "ICAO aircraft type designator, for example 'B77W'. Write it only when the source supplies a designator."
172
+
"description": "ICAO aircraft type designator, for example 'B77W'."
173
173
},
174
174
"actualGateDeparture": {
175
175
"type": "string",
176
176
"format": "datetime",
177
177
"description": "Actual 'out' time, leaving the gate or parking position. Explicit UTC offset, no fractional seconds."
178
178
},
179
179
"scheduledGateArrival": {
180
180
"type": "string",
181
181
"format": "datetime",
182
182
"description": "Scheduled 'in' time, reaching the gate or parking position. Explicit UTC offset, no fractional seconds."
183
183
},
184
184
"marketingFlightNumber": {
185
185
"type": "string",
186
186
"maxLength": 16,
187
187
"description": "Flight number under which the flight was sold, when it differs from 'flightNumber'."
188
188
},
189
189
"scheduledGateDeparture": {
190
190
"type": "string",
191
191
"format": "datetime",
192
192
"description": "Scheduled 'out' time, leaving the gate or parking position. Explicit UTC offset, no fractional seconds."
193
193
}
194
194
}
195
195
},
196
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."
197
197
}
198
198
},
199
199
"$type": "com.atproto.lexicon.schema",
200
200
"lexicon": 1
201
201
}