diff --git a/formats/acknowledgement.py b/formats/acknowledgement.py index 944f15e5088318d2662bc32a9f4f06703d749f5d..23d1c9a05a0a21fc5644044477a64161d12aa636 100644 --- a/formats/acknowledgement.py +++ b/formats/acknowledgement.py @@ -7,7 +7,7 @@ acknowledgement_schema = { - "allOf": [{"$ref": "#/definitions/Message"}], + "allOf": [{"$ref": "#/components/schemas/Message"}], "type": "object", "properties": { "acknowledged_message_ID": { diff --git a/formats/mission_plan.py b/formats/mission_plan.py index 5cb530590c4676476f143b5029428d6b5d8eb29a..0e6c975c7b2318ab5bcd6478a2e36c89296446c8 100644 --- a/formats/mission_plan.py +++ b/formats/mission_plan.py @@ -63,7 +63,7 @@ action_schema = { } mission_plan_schema = { - "allOf": [{"$ref": "#/definitions/Message"}], + "allOf": [{"$ref": "#/components/schemas/Message"}], "type": "object", "properties": { "autonomy_engine_plan_ID": { diff --git a/formats/observation.py b/formats/observation.py index a5a251be4e7aab060d44f927926086965f7876e3..d67ff3839eea5ab7a884a6e99ca48294c4cf3f03 100644 --- a/formats/observation.py +++ b/formats/observation.py @@ -30,7 +30,7 @@ hits_schema = { } observation_schema = { - "allOf": [{"$ref": "#/definitions/Message"}], + "allOf": [{"$ref": "#/components/schemas/Message"}], "type": "object", "properties": { "platform_ID": { diff --git a/formats/planning_configuration.py b/formats/planning_configuration.py index 2050dbfda82b6759236efe003c94b726b90020de..50da1848b9611622c6a4bdb216db689d652855af 100644 --- a/formats/planning_configuration.py +++ b/formats/planning_configuration.py @@ -157,7 +157,7 @@ squad_metadata_schema = { } planning_configuration_schema = { - "allOf": [{"$ref": "#/definitions/Message"}], + "allOf": [{"$ref": "#/components/schemas/Message"}], "type": "object", "properties": { "planning_config_ID": { diff --git a/formats/platform_status.py b/formats/platform_status.py index f54b4c3b76e189d72d4a8bfe8e43198cecd44c8f..87853c67f443394775becf2b9083226cd10151e9 100644 --- a/formats/platform_status.py +++ b/formats/platform_status.py @@ -26,7 +26,7 @@ sensor_schema = { } platform_status_message_schema = { - "allOf": [{"$ref": "#/definitions/Message"}], + "allOf": [{"$ref": "#/components/schemas/Message"}], "type": "object", "properties": { "platform_ID": { diff --git a/generate_swagger.py b/generate_swagger.py index c75f674d5a45d5ab31d10d691fd2d57004e7bc62..29e3b436a42ace841b2fb9569d92b21a497f6bd8 100644 --- a/generate_swagger.py +++ b/generate_swagger.py @@ -7,14 +7,12 @@ from formats.acknowledgement import acknowledgement_schema from flasgger import Swagger from flask import Flask -# from openapi_schema_validator import validate -from openapi_spec_validator import validate_spec_url app = Flask(__name__) swagger_config = { "headers": [], - "openapi": "3.1", + "openapi": "3.0.2", "swagger_ui": True, "specs_route": "/", "info": { @@ -30,13 +28,15 @@ swagger_config = { "model_filter": lambda tag: True, } ], - "definitions": { - "Message": message_wrapper_schema, - "MissionPlan": mission_plan_schema, - "Observation": observation_schema, - "PlanningConfiguration": planning_configuration_schema, - "PlatformStatus": platform_status_message_schema, - "Acknowledgement": acknowledgement_schema, + "components": { + "schemas": { + "Message": message_wrapper_schema, + "MissionPlan": mission_plan_schema, + "Observation": observation_schema, + "PlanningConfiguration": planning_configuration_schema, + "PlatformStatus": platform_status_message_schema, + "Acknowledgement": acknowledgement_schema, + } }, "paths": { "/all_messages": { @@ -49,14 +49,26 @@ swagger_config = { "application/json": { "schema": { "oneOf": [ - {"$ref": "#/definitions/Acknowledgement"}, - {"$ref": "#/definitions/PlatformStatus"}, - {"$ref": "#/definitions/MissionPlan"}, - {"$ref": "#/definitions/Observation"}, { - "$ref": "#/definitions/PlanningConfiguration" + "$ref": "#/components/schemas/" + + "Acknowledgement" + }, + { + "$ref": "#/components/schemas/" + + "MissionPlan" + }, + { + "$ref": "#/components/schemas/" + + "Observation" + }, + { + "$ref": "#/components/schemas/" + + "PlanningConfiguration" + }, + { + "$ref": "#/components/schemas/" + + "PlatformStatus" }, - {"$ref": "#/definitions/PlatformStatus"}, ], "discriminator": { "propertyName": "message_type", @@ -92,7 +104,7 @@ for item in message_types: "schema": { "allOf": [ { - "$ref": "#/definitions/" + item, + "$ref": "#/components/schemas/" + item, }, ], "discriminator": { @@ -108,23 +120,14 @@ for item in message_types: swag = Swagger(app, config=swagger_config, merge=True) -# validate({"acknowledged_message_ID": "string-type-id", "status": "c2_received"}, acknowledgement_schema) - -# app.add_url_rule( -# '/coordinates', -# view_func=Coordinates.as_view('coordinates'), -# methods=['GET'] -# ) - -from openapi_spec_validator import validate_spec, openapi_v3_spec_validator if __name__ == "__main__": app.run(debug=True) # print(validate_spec_url("http://127.0.0.1:5000/swagger.json")) - - # If no exception is raised by validate_spec(), the spec is valid. + + # # If no exception is raised by validate_spec(), the spec is valid. # validate_spec(swagger_config) # print("000 Schema validation passed") # errors_iterator = openapi_v3_spec_validator.iter_errors(swagger_config) - # print(errors_iterator) \ No newline at end of file + # print(errors_iterator)