Skip to content

Commit 7edfa5e

Browse files
Update and clean up flight_planning interface (#12)
* Update and clean up flight_planning interface * Add versions to included YAML files, fix enum value example * Fix version consistency * Split result into planning activity result and flight plan status * Fix enum values * Remove "nominally" from area to clarify off-nominal behavior * Address comments * Fix required field name * Clarify `area`, harmonize user/operator * ReadyToFly -> OkToFly * Add ExecutionStyle
1 parent 90ef6b6 commit 7edfa5e

File tree

5 files changed

+158
-116
lines changed

5 files changed

+158
-116
lines changed
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
openapi: 3.0.2
21
info:
3-
title: Definitions used in flight planning interface specific to strategic conflict detection, but not using data structures aligned with ones defined in ASTM F3548-21.
2+
title: Definitions used in flight planning interface specific to ASTM F3548-21.
43
components:
54
schemas:
6-
Foo:
7-
type: object
85
ASTMF354821OpIntentInformation:
96
description: >-
107
Information provided about a flight plan that is necessary for ASTM F3548-21.
118
type: object
129
properties:
1310
priority:
14-
$ref: './astm_f3548_21.yaml#/components/schemas/Priority'
11+
$ref: '#/components/schemas/Priority'
12+
Priority:
13+
description: >-
14+
Ordinal priority of the operational intent, as defined in ASTM F3548-21.
15+
type: integer
16+
default: 0

flight_planning/v1/au.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
openapi: 3.0.2
21
info:
32
title: Australia-specific flight planning information schemas.
43
components:

flight_planning/v1/flight_planning.yaml

Lines changed: 147 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
openapi: 3.0.2
22
info:
33
title: Flight Planning Automated Testing Interface
4-
version: 0.2.0
4+
version: 0.3.0
55
description: >-
66
This interface is implemented by a USS wishing to participate in automated tests involving attempts to plan flights.
77
8-
The client (usually uss_qualifier) pretends to be a user interacting with the USS's flight planning user interface
9-
attempting to plan, update, and close flight plans.
8+
A client (usually uss_qualifier) pretends to be a user interacting with the USS's flight planning user interface
9+
attempting to plan, update, and close flight plans. The client provides the information a USS user may be expected
10+
to provide to the USS when using the USS, and the USS responds with only the information the USS provides to its
11+
normal users when they perform an equivalent flight planning action. The USS should implement execution of these
12+
flight planning actions using as many of the code paths involved in serving a normal user as practical.
1013
11-
The client may also (with a separate authorization scope) act as the test director to determine the status of the
12-
USS's system under test, and request that the test area be cleared of any dangling flight plans.
14+
A client may also (with a separate authorization scope) act as the test director to determine the status of the
15+
USS's system under test, and request that the test area be cleared of any dangling flight plans. The USS may
16+
implement these actions using non-standard code paths or those not available to normal users.
1317
1418
Note: Unless otherwise specified, fields specified in a message but not declared in the API or otherwise known to
1519
the server or client (as applicable) must be ignored.
@@ -32,6 +36,17 @@ components:
3236
Authorization from, or on behalf of, an authorization authority, augmenting standard strategic conflict detection or other similar authorization for the purpose of automated testing.
3337
3438
schemas:
39+
FlightPlanID:
40+
description: >-
41+
String identifying a user flight plan. Format matches a version-4 UUID according to RFC 4122.
42+
maxLength: 36
43+
minLength: 36
44+
type: string
45+
format: uuid
46+
pattern: >-
47+
^[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-4[0-9a-fA-F]{3}\\-[8-b][0-9a-fA-F]{3}\\-[0-9a-fA-F]{12}$
48+
example: 03e5572a-f733-49af-bc14-8a18bd53ee39
49+
3550
StatusResponse:
3651
type: object
3752
required:
@@ -54,9 +69,9 @@ components:
5469
example: Flight Planning Automated Testing Interface
5570
api_version:
5671
description: |-
57-
Indication of the API version implemented at this URL. Must be "v0.2.0" when implementing this version of the API.
72+
Indication of the API version implemented at this URL. Must be "v0.3.0" when implementing this version of the API.
5873
type: string
59-
example: v0.2.0
74+
example: v0.3.0
6075

6176
FlightPlan:
6277
description: >-
@@ -68,7 +83,7 @@ components:
6883
basic_information:
6984
$ref: '#/components/schemas/BasicFlightPlanInformation'
7085
astm_f3548_21:
71-
$ref: './scd.yaml#/components/schemas/ASTMF354821OpIntentInformation'
86+
$ref: './astm_f3548v21.yaml#/components/schemas/ASTMF354821OpIntentInformation'
7287
uspace_flight_authorisation:
7388
$ref: './uspace.yaml#/components/schemas/FlightAuthorisationData'
7489
rpas_operating_rules_2_6:
@@ -81,8 +96,8 @@ components:
8196

8297
BasicFlightPlanInformation:
8398
description: >-
84-
Basic information about a flight plan that an operator and/or UAS can be expected to provide in most flight
85-
planning scenarios.
99+
Basic information about a flight plan that a user and/or UAS can be expected to provide in most flight planning
100+
scenarios.
86101
type: object
87102
required:
88103
- usage_state
@@ -104,10 +119,11 @@ components:
104119
description: >-
105120
State of the user's UAS associated with this flight plan.
106121
107-
- `Nominal`: The user or UAS reports or implies that it is performing nominally.
122+
- `Nominal`: The user or UAS reports or implies that it is performing nominally, or has not indicated
123+
`OffNominal` or `Contingent`.
108124
109125
- `OffNominal`: The user or UAS reports or implies that it is temporarily not performing nominally, but
110-
expects to be able to recover to normal operation.
126+
may expect to be able to recover to normal operation.
111127
112128
- `Contingent`: The user or UAS reports or implies that it is not performing nominally and may be unable
113129
to recover to normal operation.
@@ -116,60 +132,109 @@ components:
116132
- Nominal
117133
- OffNominal
118134
- Contingent
119-
nominal_area:
135+
area:
120136
description: >-
121-
User nominally intends or intended to fly in this entire area. If authorizations are required and cannot be
122-
granted to cover this entire area, the plan should be rejected.
137+
The complete area in which the user intends to fly, or may fly, as known by the user. The user intends to fly, or may fly, anywhere in this entire area.
123138
type: array
124139
items:
125-
$ref: './astm_f3548_21.yaml#/components/schemas/Volume4D'
126-
default: []
127-
off_nominal_area:
128-
description: >-
129-
While experiencing an off-nominal situation, the user's aircraft may travel anywhere in this area. If the
130-
flight_state is nominal, this field must be empty or omitted.
131-
type: array
132-
items:
133-
$ref: './astm_f3548_21.yaml#/components/schemas/Volume4D'
140+
$ref: './geotemporal.yaml#/components/schemas/Volume4D'
134141
default: []
135142

143+
ExecutionStyle:
144+
type: string
145+
description: >-
146+
The style of execution of a specified flight planning action that the operator would like the USS to perform.
147+
148+
- `Hypothetical`: The user does not want the USS to actually perform any action regarding the actual flight plan. Instead, the user would like to know the likely outcome if the action were hypothetically attempted. The response to this request will not refer to an actual flight plan, or an actual state change in an existing flight plan, but rather a hypothetical flight plan or a hypothetical change to an existing flight plan.
149+
150+
- `IfAllowed`: The user would like to perform the requested action if it is allowed. If the requested action is allowed, the USS should actually perform the action (e.g., actually create a new ASTM F3548-21 operational intent). If the requested action is not allowed, the USS should indicate that the action is Rejected and not perform the action. The response to this request will refer to an actual flight plan when appropriate, and never refer to a hypothetical flight plan or status.
151+
152+
- `InReality`: The user is communicating an actual state of reality. The USS should consider the user to be actually performing (or attempting to perform) this action, regardless of whether or not the action is allowed under relevant UTM rules.
153+
enum: [Hypothetical, IfAllowed, InReality]
154+
example: IfAllowed
155+
136156
UpsertFlightPlanRequest:
157+
description: >-
158+
Client request to emulate a user performing a flight planning action.
137159
type: object
138160
required:
139-
- intended_flight
161+
- flight_plan
162+
- execution_style
140163
- request_id
141164
properties:
142-
intended_flight:
143-
$ref: '#/components/schemas/FlightPlan'
165+
flight_plan:
166+
description: Complete new or updated information about the flight describing the flight planning action to be taken.
167+
anyOf:
168+
- $ref: '#/components/schemas/FlightPlan'
169+
execution_style:
170+
description: Style of execution for the requested flight planning action.
171+
anyOf:
172+
- $ref: '#/components/schemas/ExecutionStyle'
144173
request_id:
174+
type: string
145175
description: >-
146176
ID uniquely identifying the upsertion request. If additional requests are received with the same
147177
request_id, the response from the first request should be returned, or an error indicated.
148-
anyOf:
149-
- $ref: './astm_f3548_21.yaml#/components/schemas/UUIDv4Format'
178+
179+
PlanningActivityResult:
180+
type: string
181+
description: >-
182+
The result of a flight planning activity.
183+
184+
- `Completed`: The user's flight plan has been updated according to the situation specified by the user.
185+
186+
- `Rejected`: The updates the user requested to their flight plan are not allowed according to the rules under which the flight plan is being managed. The reasons for rejection may include a disallowed conflict with another flight during preflight.
187+
188+
- `Failed`: The USS was not able to successfully authorize or update the flight plan due to a problem with the USS or a downstream system.
189+
190+
- `NotSupported`: The USS's implementation does not support the attempted interaction. For instance, if the request specified a high-priority flight and the USS does not support management of high-priority flights.
191+
enum: [Completed, Rejected, Failed, NotSupported]
192+
example: Completed
193+
194+
FlightPlanStatus:
195+
type: string
196+
description: >-
197+
The status of the user's flight plan.
198+
199+
- `NotPlanned`: The USS has not created an authorized flight plan for the user.
200+
201+
- `Planned`: The USS has created an authorized flight plan for the user, but the user may not yet start flying (even if within the time bounds of the flight plan).
202+
203+
- `OkToFly`: The flight plan is in a state such that it is ok for the user to nominally fly within the bounds (including time) of the flight plan.
204+
205+
- `OffNominal`: The flight plan now reflects the user's actions, but the flight plan is not in a nominal state (e.g., the USS has placed the ASTM F3548-21 operational intent into one of the Nonconforming or Contingent states).
206+
207+
- `Closed`: The flight plan was closed successfully by the USS and is now out of the UTM system.
208+
enum: [NotPlanned, Planned, OkToFly, OffNominal, Closed]
209+
example: Planned
210+
211+
AdvisoryInclusion:
212+
type: string
213+
description: >-
214+
Indication of whether any advisories or conditions were provided to the user along with the result of an
215+
associated flight planning attempt.
216+
217+
- `Unknown`: It is unknown or irrelevant whether advisories or conditions were provided to the user
218+
219+
- `AtLeastOneAdvisoryOrCondition`: At least one advisory or condition was provided to the user.
220+
221+
- `NoAdvisoriesOrConditions`: No advisories or conditions were provided to the user.
222+
enum: [Unknown, AtLeastOneAdvisoryOrCondition, NoAdvisoriesOrConditions]
223+
default: Unknown
224+
example: NoAdvisoriesOrConditions
150225

151226
UpsertFlightPlanResponse:
152227
type: object
153228
required:
154-
- result
229+
- planning_result
230+
- flight_plan_status
155231
properties:
156-
result:
232+
planning_result:
157233
description: >-
158-
The result of the flight plan submission.
159-
If any option other than `Planned` or `ReadyToFly` is specified, the `notes` field should be populated with the reason for the unsuccessful outcome.
160-
161-
- `Planned`: The data submitted in the flight plan intent was valid and the flight plan was successfully processed by the USS and is now authorized, but the user may not yet start flying (even if within the time bounds of the flight plan).
162-
163-
- `ReadyToFly`: The flight plan is ready for the operator to begin flying within the bounds (including time) of the flight plan.
164-
165-
- `Rejected`: The data provided in the flight plan was invalid and/or could not be used to successfully authorize the flight. The reason for rejection may include a disallowed conflict with another flight.
166-
167-
- `Failed`: The USS was not able to successfully authorize the flight plan due to a problem with the USS or a downstream system
168-
169-
- `NotSupported`: The USS does not support the attempted interaction. For instance, if the request specified a high-priority flight and the USS does not support management of high-priority flights.
170-
type: string
171-
enum: [Planned, ReadyToFly, Rejected, Failed, NotSupported]
172-
example: Planned
234+
The result of the flight plan creation or update attempt.
235+
If any option other than `Completed` is specified, the `notes` field should be populated with the reason for the unsuccessful outcome.
236+
anyOf:
237+
- $ref: '#/components/schemas/PlanningActivityResult'
173238
notes:
174239
description: >-
175240
Human-readable explanation of the observed result. This explanation
@@ -180,43 +245,46 @@ components:
180245
valid request (perhaps also including the valid request as proof).
181246
type: string
182247
example: Requested flight intersected operational intent c036326c-c97b-4926-bf9f-c60dc83d2b57
248+
flight_plan_status:
249+
description: >-
250+
The status of the user's flight plan following the flight planning activity.
251+
anyOf:
252+
- $ref: '#/components/schemas/FlightPlanStatus'
183253
includes_advisories:
184254
description: >-
185-
Indication of whether any advisories or conditions were provided to the user along with the result of this
186-
flight planning attempt.
187-
188-
- `Unknown`: It is unknown or irrelevant whether advisories or conditions were provided to the user
189-
190-
- `Yes`: At least one advisory or condition was provided to the user.
191-
192-
- `No`: No advisories or conditions were provided to the user.
193-
type: string
194-
enum:
195-
- Unknown
196-
- Yes
197-
- No
198-
default: Unknown
199-
example: No
255+
Nature of advisories included in the response to the user regarding their attempt to perform this flight
256+
planning activity.
257+
anyOf:
258+
- $ref: '#/components/schemas/AdvisoryInclusion'
200259

201260
DeleteFlightPlanResponse:
202261
type: object
203262
required:
204-
- result
263+
- planning_result
264+
- flight_plan_status
205265
properties:
206-
result:
266+
planning_result:
207267
description: >-
208268
The result of attempted flight plan cancellation/closure.
209-
210-
- `Closed`: The flight plan was closed successfully by the USS and is now out of the UTM system.
211-
212-
- `Failed`: The flight plan could not be closed successfully by the USS.
213-
enum: [Closed, Failed]
214-
example: Failed
269+
If any option other than `Completed` is specified, the `notes` field should be populated with the reason for the unsuccessful outcome.
270+
anyOf:
271+
- $ref: '#/components/schemas/PlanningActivityResult'
215272
notes:
216273
description: >-
217274
Human-readable explanation of the observed result.
218275
type: string
219276
example: DSS was unreachable when attempting to delete operational intent reference
277+
flight_plan_status:
278+
description: >-
279+
The status of the user's flight plan following the flight planning activity.
280+
anyOf:
281+
- $ref: '#/components/schemas/FlightPlanStatus'
282+
includes_advisories:
283+
description: >-
284+
Nature of advisories included in the response to the user regarding their attempt to cancel/close their
285+
flight plan.
286+
anyOf:
287+
- $ref: '#/components/schemas/AdvisoryInclusion'
220288

221289
ClearAreaRequest:
222290
type: object
@@ -233,10 +301,10 @@ components:
233301
type: string
234302
extent:
235303
description: >-
236-
The USS should cancel and remove any flight plan where any part of that
237-
flight plan intersects this area.
304+
The USS should cancel and remove any flight plan it manages where
305+
any part of that flight plan intersects this area.
238306
anyOf:
239-
- $ref: './astm_f3548_21.yaml#/components/schemas/Volume4D'
307+
- $ref: './geotemporal.yaml#/components/schemas/Volume4D'
240308
ClearAreaOutcome:
241309
type: object
242310
properties:
@@ -254,6 +322,9 @@ components:
254322
example: >-
255323
DSS at dss.example.com returned 500 when attempting to delete
256324
operational intent 57e98b17-aefa-4eee-a376-5140e4a8385f
325+
details:
326+
description: Optional free-form structured data to augment `message`.
327+
type: object
257328
ClearAreaResponse:
258329
type: object
259330
required:
@@ -320,9 +391,9 @@ paths:
320391
- name: flight_plan_id
321392
in: path
322393
required: true
323-
description: A UUID string identifying the user's flight plan intent.
394+
description: A UUID-formatted string identifying the user's flight plan intent.
324395
schema:
325-
$ref: './astm_f3548_21.yaml#/components/schemas/UUIDv4Format'
396+
$ref: '#/components/schemas/FlightPlanID'
326397

327398
put:
328399
security:
@@ -352,7 +423,7 @@ paths:
352423
summary: Upsert flight plan
353424
operationId: UpsertFlightPlan
354425
description: >-
355-
This endpoint simulates an operator intention to submit a new or updated flight plan.
426+
This endpoint simulates a user intention to submit a new or updated flight plan.
356427
357428
delete:
358429
security:
@@ -376,4 +447,4 @@ paths:
376447
summary: Close flight plan
377448
operationId: DeleteFlightPlan
378449
description: >-
379-
This endpoint simulates the operator intention to cancel, end, or close a flight plan.
450+
This endpoint simulates a user intention to cancel, end, or close a flight plan.

0 commit comments

Comments
 (0)