from formats import message_header from formats.mission_plan import mission_plan_schema from formats.observation import observation_schema from formats.planning_configuration import planning_configuration_schema from formats.platform_status import platform_status_message_schema from formats.acknowledgement import acknowledgement_schema from flasgger import Swagger from flask import Flask app = Flask(__name__) swagger_config = { "openapi": "3.0.2", "swagger_ui": True, "specs_route": "/", "info": { "title": "SoAR Backbone Message Formats", "version": "1.0", "description": "SoAR message protocol in schemas" }, "specs": [ { "endpoint": "swagger", "route": "/soar_protocol.json", } ], "paths": {}, "components": { "schemas": { "MESSAGE": { "type": "object", "description": "Full message definition with message-metadata in `header` and different message type schemas under `payload`", "properties": { "header": { "$ref": "#/components/schemas/header", }, "payload": { "$ref": "#/components/schemas/payload" }, }, "required": ["header", "payload"], }, "payload": { "discriminator": { "propertyName": "message_type", "mapping":{ "mission_plan": "#/components/schemas/mission_plan", "observation": "#/components/schemas/observation", "planning_configuration": "#/components/schemas/planning_configuration", "platform_status": "#/components/schemas/platform_status", "acknowledgement": "#/components/schemas/acknowledgement", }, }, "oneOf":[ { "$ref": "#/components/schemas/" + "acknowledgement" }, { "$ref": "#/components/schemas/" + "mission_plan" }, { "$ref": "#/components/schemas/" + "observation" }, { "$ref": "#/components/schemas/" + "planning_configuration" }, { "$ref": "#/components/schemas/" + "platform_status" }, ] }, "header": message_header, "mission_plan": mission_plan_schema, "observation": observation_schema, "planning_configuration": planning_configuration_schema, "platform_status": platform_status_message_schema, "acknowledgement": acknowledgement_schema, } }, } swag = Swagger(app, config=swagger_config, merge=True) if __name__ == "__main__": app.run(debug=True)