From 0983ab42bf206263a0ae55e147d359365192b3fa Mon Sep 17 00:00:00 2001 From: Benjamin Pelletier Date: Tue, 7 Nov 2023 09:04:29 -0800 Subject: [PATCH] [uss_qualifier] Use FlightIntentsResource in general flight authorization scenario (#317) * Use FlightIntentsResource in general flight authorization scenario * Add $schema per comments * Update file hash --- .../dev/general_flight_auth.yaml | 2 + .../configurations/dev/library/resources.yaml | 115 ++---------------- .../flight_planning/flight_intent.py | 4 +- .../flight_authorization/definitions.py | 12 +- .../general_flight_authorization.md | 4 + .../general_flight_authorization.py | 15 ++- .../flight_intents/conflicting_flights.yaml | 1 + .../general_flight_auth_flights.yaml | 104 ++++++++++++++++ .../flight_intents/invalid_flight_auths.yaml | 1 + .../invalid_flight_intents.yaml | 1 + .../ASTMF354821OpIntentInformation.json | 18 --- .../flight_info/FlightAuthorisationData.json | 98 --------------- .../flight_info/RPAS26FlightDetails.json | 102 ---------------- .../BasicFlightPlanInformationTemplate.json | 33 ----- .../FlightInfoTemplate.json | 55 --------- .../definitions/FlightCheck.json | 18 ++- 16 files changed, 162 insertions(+), 421 deletions(-) create mode 100644 monitoring/uss_qualifier/test_data/che/flight_intents/general_flight_auth_flights.yaml delete mode 100644 schemas/monitoring/monitorlib/clients/flight_planning/flight_info/ASTMF354821OpIntentInformation.json delete mode 100644 schemas/monitoring/monitorlib/clients/flight_planning/flight_info/FlightAuthorisationData.json delete mode 100644 schemas/monitoring/monitorlib/clients/flight_planning/flight_info/RPAS26FlightDetails.json delete mode 100644 schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/BasicFlightPlanInformationTemplate.json delete mode 100644 schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/FlightInfoTemplate.json diff --git a/monitoring/uss_qualifier/configurations/dev/general_flight_auth.yaml b/monitoring/uss_qualifier/configurations/dev/general_flight_auth.yaml index fffa591122..4f16955046 100644 --- a/monitoring/uss_qualifier/configurations/dev/general_flight_auth.yaml +++ b/monitoring/uss_qualifier/configurations/dev/general_flight_auth.yaml @@ -4,6 +4,7 @@ v1: resources: resource_declarations: example_flight_check_table: {$ref: 'library/resources.yaml#/example_flight_check_table'} + flight_intents: {$ref: 'library/resources.yaml#/che_general_flight_auth_flights'} utm_auth: {$ref: 'library/environment.yaml#/utm_auth'} uss1_flight_planner: {$ref: 'library/environment.yaml#/uss1_flight_planner'} @@ -15,6 +16,7 @@ v1: scenario_type: scenarios.interuss.flight_authorization.GeneralFlightAuthorization resources: table: example_flight_check_table + flight_intents: flight_intents planner: uss1_flight_planner execution: stop_fast: true diff --git a/monitoring/uss_qualifier/configurations/dev/library/resources.yaml b/monitoring/uss_qualifier/configurations/dev/library/resources.yaml index 0fee0615c5..5db1ea9e36 100644 --- a/monitoring/uss_qualifier/configurations/dev/library/resources.yaml +++ b/monitoring/uss_qualifier/configurations/dev/library/resources.yaml @@ -115,7 +115,6 @@ che_invalid_flight_auth_flights: $content_schema: monitoring/uss_qualifier/resources/definitions/ResourceDeclaration.json resource_type: resources.flight_planning.FlightIntentsResource specification: - planning_time: '0:05:00' file: path: file://./test_data/che/flight_intents/invalid_flight_auths.yaml @@ -124,20 +123,25 @@ che_conflicting_flights: $content_schema: monitoring/uss_qualifier/resources/definitions/ResourceDeclaration.json resource_type: resources.flight_planning.FlightIntentsResource specification: - planning_time: '0:05:00' file: path: file://./test_data/che/flight_intents/conflicting_flights.yaml # Note that this hash_sha512 field can be safely deleted if the content changes - hash_sha512: 86b7172de3a6029efdb5c39dff00f96578f81d25b65b4a0a9d731a42a1e260ef632a0891b744b6d1f62fd7bec61cdad3cb8e6b6811a16cbc17ec2dbd081cbbf6 + hash_sha512: 381b6a75e66f2f4ead4cc637744a3c6594d0cdcabf80e13acef087acf3d9195a8dfb521b1f997824b5c0f9dd83167263695b99bdb4fd3e604ac6ac513dad54ab che_invalid_flight_intents: $content_schema: monitoring/uss_qualifier/resources/definitions/ResourceDeclaration.json resource_type: resources.flight_planning.FlightIntentsResource specification: - planning_time: '0:05:00' file: path: test_data.che.flight_intents.invalid_flight_intents +che_general_flight_auth_flights: + $content_schema: monitoring/uss_qualifier/resources/definitions/ResourceDeclaration.json + resource_type: resources.flight_planning.FlightIntentsResource + specification: + file: + path: file://./test_data/che/flight_intents/general_flight_auth_flights.yaml + # ===== General flight authorization ===== example_flight_check_table: @@ -152,58 +156,8 @@ example_flight_check_table: - REQ_007 description: The first test step defined by the test designer acceptance_expectation: MustBeAccepted - flight_info: - basic_information: - usage_state: Planned - uas_state: Nominal - area: - - outline_circle: - center: - lng: 7.4774 - lat: 46.9749 - radius: - value: 100 - units: M - altitude_lower: - value: 550 - units: M - # TODO: Change to SFC once mock_uss can process that datum - reference: W84 - altitude_upper: - value: 650 - units: M - # TODO: Change to SFC once mock_uss can process that datum - reference: W84 - start_time: - start_of_test: { } - use_timezone: Europe/Berlin - end_time: - offset_from: - starting_from: - next_day: - time_zone: Europe/Zurich - starting_from: - start_of_test: { } - days_of_the_week: [ "Tu", "Th" ] - offset: 12h - additional_information: - new_jurisdiction_x: - operation_rule_set: Rules1 - # TODO: Remove once mock_uss is fixed to not require U-space flight auth - uspace_flight_authorisation: - uas_serial_number: 1AF49UL5CC5J6K - operation_category: Open - operation_mode: Vlos - uas_class: C0 - identification_technologies: - - ASTMNetRID - connectivity_methods: - - cellular - endurance_minutes: 30 - emergency_procedure_url: https://example.interussplatform.org/emergency - operator_id: CHEo5kut30e0mt01-qwe - uas_id: '' - uas_type_certificate: '' + flight_intent: flight1 + execution_style: IfAllowed - flight_check_id: TEST_002 requirement_ids: - REQ_001 @@ -211,53 +165,8 @@ example_flight_check_table: - REQ_004 description: The second test step defined by the test designer acceptance_expectation: MustBeAccepted - flight_info: - basic_information: - usage_state: Planned - uas_state: Nominal - area: - - outline_circle: - center: - lng: 7.4774 - lat: 46.9749 - radius: - value: 100 - units: M - altitude_lower: - value: 1424 - units: M - reference: W84 - altitude_upper: - value: 5000 - units: FT - reference: W84 - start_time: - next_day: - time_zone: +02:00 - starting_from: - offset_from: - starting_from: - start_of_test: { } - offset: 12h - duration: 5m - additional_information: - new_jurisdiction_x: - operation_rule_set: Rules1 - # TODO: Remove once mock_uss is fixed to not require U-space flight auth - uspace_flight_authorisation: - uas_serial_number: 1AF49UL5CC5J6K - operation_category: Open - operation_mode: Vlos - uas_class: C0 - identification_technologies: - - ASTMNetRID - connectivity_methods: - - cellular - endurance_minutes: 30 - emergency_procedure_url: https://example.interussplatform.org/emergency - operator_id: CHEo5kut30e0mt01-qwe - uas_id: '' - uas_type_certificate: '' + flight_intent: flight2 + execution_style: IfAllowed # ===== Geospatial feature comprehension ===== diff --git a/monitoring/uss_qualifier/resources/flight_planning/flight_intent.py b/monitoring/uss_qualifier/resources/flight_planning/flight_intent.py index 91c00456e9..541e775d47 100644 --- a/monitoring/uss_qualifier/resources/flight_planning/flight_intent.py +++ b/monitoring/uss_qualifier/resources/flight_planning/flight_intent.py @@ -95,7 +95,9 @@ def resolve(self) -> Dict[FlightIntentID, FlightInfoTemplate]: unprocessed_intent.delta.mutation, ) else: - raise ValueError(f"{intent_id} is invalid") + raise ValueError( + f"{intent_id} flight intent in FlightIntentCollection is invalid; must specify `full` or `delta`" + ) nb_processed += 1 processed_intents[intent_id] = processed_intent diff --git a/monitoring/uss_qualifier/resources/interuss/flight_authorization/definitions.py b/monitoring/uss_qualifier/resources/interuss/flight_authorization/definitions.py index d73ca3e601..f7f392e6a2 100644 --- a/monitoring/uss_qualifier/resources/interuss/flight_authorization/definitions.py +++ b/monitoring/uss_qualifier/resources/interuss/flight_authorization/definitions.py @@ -2,8 +2,9 @@ from typing import List from implicitdict import ImplicitDict -from monitoring.monitorlib.clients.flight_planning.flight_info_template import ( - FlightInfoTemplate, +from monitoring.monitorlib.clients.flight_planning.flight_info import ExecutionStyle +from monitoring.uss_qualifier.resources.flight_planning.flight_intent import ( + FlightIntentID, ) @@ -39,8 +40,11 @@ class FlightCheck(ImplicitDict): description: str """Human-readable test step description to aid in the debugging and traceability.""" - flight_info: FlightInfoTemplate - """Information about the flight, as a user would provide it to the USS.""" + flight_intent: FlightIntentID + """ID of the flight intent, as a user would provide it to the USS, referring to one of the flight intents provided in a separate dictionary relating FlightIntentID to FlightInfoTemplate.""" + + execution_style: ExecutionStyle + """The manner in which the USS should be instructed to plan the flight.""" acceptance_expectation: AcceptanceExpectation = AcceptanceExpectation.Irrelevant """Expected outcome when authorizing a flight as described.""" diff --git a/monitoring/uss_qualifier/scenarios/interuss/flight_authorization/general_flight_authorization.md b/monitoring/uss_qualifier/scenarios/interuss/flight_authorization/general_flight_authorization.md index 2f282ab3e0..fc9898e071 100644 --- a/monitoring/uss_qualifier/scenarios/interuss/flight_authorization/general_flight_authorization.md +++ b/monitoring/uss_qualifier/scenarios/interuss/flight_authorization/general_flight_authorization.md @@ -10,6 +10,10 @@ This test acts as a user using a USS's flight planning/authorization interface a [Flight Check Table](../../../resources/interuss/flight_authorization/flight_check_table.py) consisting of a list of Flight Check rows. Each Flight Check row will cause this test to attempt to plan/authorize a flight using the planning/authorization interfaces of each USS under test according to the information in that Flight Check row. This test will then perform checks according to the expected outcomes from those planning/authorization attempts, according to the Flight Check row. +### flight_intents + +[FlightIntentsResource](../../../resources/flight_planning/flight_intents_resource.py) defining all flight intents referenced by `table` above. + ### planner [Flight planner](../../../resources/flight_planning/flight_planners.py) providing access to the flight-planning USS under test in this scenario. diff --git a/monitoring/uss_qualifier/scenarios/interuss/flight_authorization/general_flight_authorization.py b/monitoring/uss_qualifier/scenarios/interuss/flight_authorization/general_flight_authorization.py index 20e7cfda89..3f1cc24646 100644 --- a/monitoring/uss_qualifier/scenarios/interuss/flight_authorization/general_flight_authorization.py +++ b/monitoring/uss_qualifier/scenarios/interuss/flight_authorization/general_flight_authorization.py @@ -14,7 +14,10 @@ from monitoring.monitorlib.temporal import Time from monitoring.uss_qualifier.common_data_definitions import Severity from monitoring.uss_qualifier.configurations.configuration import ParticipantID -from monitoring.uss_qualifier.resources.flight_planning import FlightPlannerResource +from monitoring.uss_qualifier.resources.flight_planning import ( + FlightPlannerResource, + FlightIntentsResource, +) from monitoring.uss_qualifier.resources.interuss.flight_authorization.definitions import ( FlightCheckTable, AcceptanceExpectation, @@ -53,12 +56,14 @@ class GeneralFlightAuthorization(TestScenario): def __init__( self, table: FlightCheckTableResource, + flight_intents: FlightIntentsResource, planner: FlightPlannerResource, ): super().__init__() self.table = table.table self.flight_planner = planner.client self.participant_id = planner.participant_id + self.flight_intents = flight_intents.get_flight_intents() def run(self, context: ExecutionContext): self.begin_test_scenario(context) @@ -72,6 +77,7 @@ def run(self, context: ExecutionContext): def _plan_flights(self): start_time = Time(arrow.utcnow().datetime) for row in self.table.rows: + # Collect checks applicable to this row/test step checks = [ _get_check_by_name(self._current_case.steps[0], name) for name in (_VALID_API_RESPONSE_NAME, _SUCCESSFUL_CLOSURE_NAME) @@ -110,6 +116,7 @@ def _plan_flights(self): f"conditions_expectation value of {row.conditions_expectation} is not yet supported" ) + # Construct documentation for this test step # Note that we are duck-typing a List[str] into a List[RequirementID] for applicable_requirements, but this # should be ok as the requirements are only used as strings from this point. step_checks = [ @@ -126,14 +133,16 @@ def _plan_flights(self): url=self._current_case.steps[0].url, checks=step_checks, ) + + # Officially begin the test step self.begin_dynamic_test_step(doc) # Attempt planning action - info = row.flight_info.resolve(start_time) + info = self.flight_intents[row.flight_intent].resolve(start_time) with self.check(_VALID_API_RESPONSE_NAME, [self.participant_id]) as check: try: resp = self.flight_planner.try_plan_flight( - info, ExecutionStyle.IfAllowed + info, row.execution_style ) except PlanningActivityError as e: for q in e.queries: diff --git a/monitoring/uss_qualifier/test_data/che/flight_intents/conflicting_flights.yaml b/monitoring/uss_qualifier/test_data/che/flight_intents/conflicting_flights.yaml index b4f295cec5..7eea1c46f2 100644 --- a/monitoring/uss_qualifier/test_data/che/flight_intents/conflicting_flights.yaml +++ b/monitoring/uss_qualifier/test_data/che/flight_intents/conflicting_flights.yaml @@ -1,3 +1,4 @@ +$content_schema: monitoring/uss_qualifier/resources/flight_planning/flight_intent/FlightIntentCollection.json intents: flight_1_planned_vol_A: full: diff --git a/monitoring/uss_qualifier/test_data/che/flight_intents/general_flight_auth_flights.yaml b/monitoring/uss_qualifier/test_data/che/flight_intents/general_flight_auth_flights.yaml new file mode 100644 index 0000000000..5add222026 --- /dev/null +++ b/monitoring/uss_qualifier/test_data/che/flight_intents/general_flight_auth_flights.yaml @@ -0,0 +1,104 @@ +$content_schema: monitoring/uss_qualifier/resources/flight_planning/flight_intent/FlightIntentCollection.json +intents: + flight1: + full: + basic_information: + usage_state: Planned + uas_state: Nominal + area: + - outline_circle: + center: + lng: 7.4774 + lat: 46.9749 + radius: + value: 100 + units: M + altitude_lower: + value: 550 + units: M + # TODO: Change to SFC once mock_uss can process that datum + reference: W84 + altitude_upper: + value: 650 + units: M + # TODO: Change to SFC once mock_uss can process that datum + reference: W84 + start_time: + start_of_test: {} + use_timezone: Europe/Berlin + end_time: + offset_from: + starting_from: + next_day: + time_zone: Europe/Zurich + starting_from: + start_of_test: {} + days_of_the_week: ["Tu", "Th"] + offset: 12h + additional_information: + new_jurisdiction_x: + operation_rule_set: Rules1 + # TODO: Remove once mock_uss is fixed to not require U-space flight auth + uspace_flight_authorisation: + uas_serial_number: 1AF49UL5CC5J6K + operation_category: Open + operation_mode: Vlos + uas_class: C0 + identification_technologies: + - ASTMNetRID + connectivity_methods: + - cellular + endurance_minutes: 30 + emergency_procedure_url: https://example.interussplatform.org/emergency + operator_id: CHEo5kut30e0mt01-qwe + uas_id: '' + uas_type_certificate: '' + + flight2: + full: + basic_information: + usage_state: Planned + uas_state: Nominal + area: + - outline_circle: + center: + lng: 7.4774 + lat: 46.9749 + radius: + value: 100 + units: M + altitude_lower: + value: 1424 + units: M + reference: W84 + altitude_upper: + value: 5000 + units: FT + reference: W84 + start_time: + next_day: + time_zone: +02:00 + starting_from: + offset_from: + starting_from: + start_of_test: {} + offset: 12h + duration: 5m + additional_information: + new_jurisdiction_x: + operation_rule_set: Rules1 + # TODO: Remove once mock_uss is fixed to not require U-space flight auth + uspace_flight_authorisation: + uas_serial_number: 1AF49UL5CC5J6K + operation_category: Open + operation_mode: Vlos + uas_class: C0 + identification_technologies: + - ASTMNetRID + connectivity_methods: + - cellular + endurance_minutes: 30 + emergency_procedure_url: https://example.interussplatform.org/emergency + operator_id: CHEo5kut30e0mt01-qwe + uas_id: '' + uas_type_certificate: '' diff --git a/monitoring/uss_qualifier/test_data/che/flight_intents/invalid_flight_auths.yaml b/monitoring/uss_qualifier/test_data/che/flight_intents/invalid_flight_auths.yaml index ad1eb3eb85..ed476ecad2 100644 --- a/monitoring/uss_qualifier/test_data/che/flight_intents/invalid_flight_auths.yaml +++ b/monitoring/uss_qualifier/test_data/che/flight_intents/invalid_flight_auths.yaml @@ -1,3 +1,4 @@ +$content_schema: monitoring/uss_qualifier/resources/flight_planning/flight_intent/FlightIntentCollection.json intents: invalid_flight_auth: full: diff --git a/monitoring/uss_qualifier/test_data/che/flight_intents/invalid_flight_intents.yaml b/monitoring/uss_qualifier/test_data/che/flight_intents/invalid_flight_intents.yaml index f3cb2f07a3..487d7b8757 100644 --- a/monitoring/uss_qualifier/test_data/che/flight_intents/invalid_flight_intents.yaml +++ b/monitoring/uss_qualifier/test_data/che/flight_intents/invalid_flight_intents.yaml @@ -1,3 +1,4 @@ +$content_schema: monitoring/uss_qualifier/resources/flight_planning/flight_intent/FlightIntentCollection.json intents: valid_flight: full: diff --git a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/ASTMF354821OpIntentInformation.json b/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/ASTMF354821OpIntentInformation.json deleted file mode 100644 index 24ad42f3dc..0000000000 --- a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/ASTMF354821OpIntentInformation.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$id": "https://github.com/interuss/monitoring/blob/main/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/ASTMF354821OpIntentInformation.json", - "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "Information provided about a flight plan that is necessary for ASTM F3548-21.\n\nmonitoring.monitorlib.clients.flight_planning.flight_info.ASTMF354821OpIntentInformation, as defined in monitoring/monitorlib/clients/flight_planning/flight_info.py", - "properties": { - "$ref": { - "description": "Path to content that replaces the $ref", - "type": "string" - }, - "priority": { - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/FlightAuthorisationData.json b/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/FlightAuthorisationData.json deleted file mode 100644 index 2d8a22cef9..0000000000 --- a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/FlightAuthorisationData.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "$id": "https://github.com/interuss/monitoring/blob/main/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/FlightAuthorisationData.json", - "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "The details of a UAS flight authorization request, as received from the user.\n\nNote that a full description of a flight authorisation must include mandatory information required by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664 for an UAS flight authorisation request. Reference: https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32021R0664&from=EN#d1e32-178-1\n\nmonitoring.monitorlib.clients.flight_planning.flight_info.FlightAuthorisationData, as defined in monitoring/monitorlib/clients/flight_planning/flight_info.py", - "properties": { - "$ref": { - "description": "Path to content that replaces the $ref", - "type": "string" - }, - "connectivity_methods": { - "description": "Connectivity methods. Required by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664, paragraph 7.", - "items": { - "type": "string" - }, - "type": "array" - }, - "emergency_procedure_url": { - "description": "The URL at which the applicable emergency procedure in case of a loss of command and control link may be retrieved. Required by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664, paragraph 9.", - "type": "string" - }, - "endurance_minutes": { - "description": "Endurance of the UAS. This is expressed in minutes. Required by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664, paragraph 8.", - "type": "integer" - }, - "identification_technologies": { - "description": "Technology used to identify the UAS. Required by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664, paragraph 6.", - "items": { - "type": "string" - }, - "type": "array" - }, - "operation_category": { - "description": "Category of UAS operation (\u2018open\u2019, \u2018specific\u2019, \u2018certified\u2019) as defined in COMMISSION DELEGATED REGULATION (EU) 2019/945. Required by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664, paragraph 4.", - "enum": [ - "Unknown", - "Open", - "Specific", - "Certified" - ], - "type": "string" - }, - "operation_mode": { - "enum": [ - "Undeclared", - "Vlos", - "Bvlos" - ], - "type": "string" - }, - "operator_id": { - "description": "Registration number of the UAS operator.\nThe format is defined in EASA Easy Access Rules for Unmanned Aircraft Systems GM1 to AMC1\nArticle 14(6) Registration of UAS operators and \u2018certified\u2019 UAS.\nRequired by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664, paragraph 10.", - "type": "string" - }, - "uas_class": { - "enum": [ - "Other", - "C0", - "C1", - "C2", - "C3", - "C4", - "C5", - "C6" - ], - "type": "string" - }, - "uas_id": { - "description": "When applicable, the registration number of the unmanned aircraft.\nThis is expressed using the nationality and registration mark of the unmanned aircraft in\nline with ICAO Annex 7.\nSpecified by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664, paragraph 10.", - "type": [ - "string", - "null" - ] - }, - "uas_serial_number": { - "description": "Unique serial number of the unmanned aircraft or, if the unmanned aircraft is privately built, the unique serial number of the add-on. This is expressed in the ANSI/CTA-2063 Physical Serial Number format. Required by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664, paragraph 1.", - "type": "string" - }, - "uas_type_certificate": { - "description": "Provisional field. Not applicable as of September 2021. Required only if `uas_class` is set to `other` by ANNEX IV of COMMISSION IMPLEMENTING REGULATION (EU) 2021/664, paragraph 4.", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "connectivity_methods", - "emergency_procedure_url", - "endurance_minutes", - "identification_technologies", - "operation_category", - "operation_mode", - "operator_id", - "uas_class", - "uas_serial_number" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/RPAS26FlightDetails.json b/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/RPAS26FlightDetails.json deleted file mode 100644 index 99a396c9fa..0000000000 --- a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/RPAS26FlightDetails.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "$id": "https://github.com/interuss/monitoring/blob/main/schemas/monitoring/monitorlib/clients/flight_planning/flight_info/RPAS26FlightDetails.json", - "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "Information about a flight necessary to plan successfully using the RPAS Platform Operating Rules version 2.6.\n\nmonitoring.monitorlib.clients.flight_planning.flight_info.RPAS26FlightDetails, as defined in monitoring/monitorlib/clients/flight_planning/flight_info.py", - "properties": { - "$ref": { - "description": "Path to content that replaces the $ref", - "type": "string" - }, - "aircraft_type": { - "description": "Type of vehicle being used as per ASTM F3411-22a.", - "enum": [ - "NotDeclared", - "Aeroplane", - "Helicopter", - "Gyroplane", - "HybridLift", - "Ornithopter", - "Glider", - "Kite", - "FreeBalloon", - "CaptiveBalloon", - "Airship", - "FreeFallOrParachute", - "Rocket", - "TetheredPoweredAircraft", - "GroundObstacle", - "Other" - ], - "type": [ - "string", - "null" - ] - }, - "flight_profile": { - "description": "Type of flight profile.", - "enum": [ - "AutomatedGrid", - "AutomatedWaypoint", - "Manual" - ], - "type": [ - "string", - "null" - ] - }, - "operator_number": { - "description": "Operator number.", - "type": [ - "string", - "null" - ] - }, - "operator_type": { - "description": "The type of operator.", - "enum": [ - "Recreational", - "CommercialExcluded", - "ReOC" - ], - "type": [ - "string", - "null" - ] - }, - "pilot_license_number": { - "description": "License number for the pilot.", - "type": [ - "string", - "null" - ] - }, - "pilot_phone_number": { - "description": "Contact phone number for the pilot.", - "type": [ - "string", - "null" - ] - }, - "uas_registration_numbers": { - "description": "The list of UAS/drone registration numbers that will be operated during the operation.", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "uas_serial_numbers": { - "description": "The list of UAS/drone serial numbers that will be operated during the operation.", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/BasicFlightPlanInformationTemplate.json b/schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/BasicFlightPlanInformationTemplate.json deleted file mode 100644 index 89e91cefef..0000000000 --- a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/BasicFlightPlanInformationTemplate.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$id": "https://github.com/interuss/monitoring/blob/main/schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/BasicFlightPlanInformationTemplate.json", - "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "Template to provide (at runtime) basic information about a flight plan that an operator and/or UAS can be expected to provide in most flight planning scenarios.\n\nmonitoring.monitorlib.clients.flight_planning.flight_info_template.BasicFlightPlanInformationTemplate, as defined in monitoring/monitorlib/clients/flight_planning/flight_info_template.py", - "properties": { - "$ref": { - "description": "Path to content that replaces the $ref", - "type": "string" - }, - "uas_state": { - "description": "State of the user's UAS associated with this flight plan.", - "enum": [ - "Nominal", - "OffNominal", - "Contingent" - ], - "type": "string" - }, - "usage_state": { - "description": "User's current usage of the airspace specified in the flight plan.", - "enum": [ - "Planned", - "InUse" - ], - "type": "string" - } - }, - "required": [ - "uas_state", - "usage_state" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/FlightInfoTemplate.json b/schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/FlightInfoTemplate.json deleted file mode 100644 index c44de2b563..0000000000 --- a/schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/FlightInfoTemplate.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "$id": "https://github.com/interuss/monitoring/blob/main/schemas/monitoring/monitorlib/clients/flight_planning/flight_info_template/FlightInfoTemplate.json", - "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "Template to provide (at runtime) details of user's intent to create or modify a flight plan.\n\nmonitoring.monitorlib.clients.flight_planning.flight_info_template.FlightInfoTemplate, as defined in monitoring/monitorlib/clients/flight_planning/flight_info_template.py", - "properties": { - "$ref": { - "description": "Path to content that replaces the $ref", - "type": "string" - }, - "additional_information": { - "description": "Any information relevant to a particular jurisdiction or use case not described in the standard schema. The keys and values must be agreed upon between the test designers and USSs under test.", - "type": [ - "object", - "null" - ] - }, - "astm_f3548_21": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "../flight_info/ASTMF354821OpIntentInformation.json" - } - ] - }, - "basic_information": { - "$ref": "BasicFlightPlanInformationTemplate.json" - }, - "rpas_operating_rules_2_6": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "../flight_info/RPAS26FlightDetails.json" - } - ] - }, - "uspace_flight_authorisation": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "../flight_info/FlightAuthorisationData.json" - } - ] - } - }, - "required": [ - "basic_information" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/monitoring/uss_qualifier/resources/interuss/flight_authorization/definitions/FlightCheck.json b/schemas/monitoring/uss_qualifier/resources/interuss/flight_authorization/definitions/FlightCheck.json index 7c40f148cb..8f9daa4fbf 100644 --- a/schemas/monitoring/uss_qualifier/resources/interuss/flight_authorization/definitions/FlightCheck.json +++ b/schemas/monitoring/uss_qualifier/resources/interuss/flight_authorization/definitions/FlightCheck.json @@ -29,13 +29,22 @@ "description": "Human-readable test step description to aid in the debugging and traceability.", "type": "string" }, + "execution_style": { + "description": "The manner in which the USS should be instructed to plan the flight.", + "enum": [ + "Hypothetical", + "IfAllowed", + "InReality" + ], + "type": "string" + }, "flight_check_id": { "description": "Unique (within table) test step/row identifier.", "type": "string" }, - "flight_info": { - "$ref": "../../../../../monitorlib/clients/flight_planning/flight_info_template/FlightInfoTemplate.json", - "description": "Information about the flight, as a user would provide it to the USS." + "flight_intent": { + "description": "ID of the flight intent, as a user would provide it to the USS, referring to one of the flight intents provided in a separate dictionary relating FlightIntentID to FlightInfoTemplate.", + "type": "string" }, "requirement_ids": { "description": "Jurisdictional identifiers of the requirements this test step is evaluating.", @@ -47,8 +56,9 @@ }, "required": [ "description", + "execution_style", "flight_check_id", - "flight_info", + "flight_intent", "requirement_ids" ], "type": "object"