diff --git a/examples/hydrosurv_adapter/alert.json b/examples/hydrosurv_adapter/alert.json new file mode 100644 index 0000000000000000000000000000000000000000..9abbbbbe47d4c840e786488cb4f0117424e4fafa --- /dev/null +++ b/examples/hydrosurv_adapter/alert.json @@ -0,0 +1,21 @@ +{ + "header": { + "message_ID": "b427003c-0000-11aa-a1eb-bvcdfghjgfdd", + "timestamp": "2022-11-16T00:00:00Z", + "version": 1, + "source": "hydrosurv_adapter", + "destination": "soar.hydrosurv.reav60.usvdecibel.from_platform.alert", + "delivery_type": "publish", + "encoded": false + }, + "payload": { + "message_type": "alert", + "platform_ID": "usvdecibel", + "code": 345, + "platform_timestamp": "2022-12-21T00:00:00Z", + "subsystem": "Onboard Fault Monitor", + "summary": "Steering Damage - Port Side", + "details": "Discrepancy between rudder and actuator positions : Rudder Pos=10.31°, Steering Actuator Pos=28.65°, Discrepancy=18.33°", + "severity": "Alarm" + } +} \ No newline at end of file diff --git a/examples/hydrosurv_adapter/platform_status.json b/examples/hydrosurv_adapter/platform_status.json index 082649aee6831b8c6feb2f4d4989fc1e228f8990..193e12a2791e73088c6282623d0b1a0dfe2ab90f 100644 --- a/examples/hydrosurv_adapter/platform_status.json +++ b/examples/hydrosurv_adapter/platform_status.json @@ -1,5 +1,5 @@ { - "header":{ + "header": { "message_ID": "b427003c-0000-11aa-a1eb-bvcdfghjgfdd", "timestamp": "2022-11-16T00:00:00Z", "version": 2, @@ -8,11 +8,15 @@ "delivery_type": "publish", "encoded": false }, - "payload":{ + "payload": { "message_type": "platform_status", "autonomy_engine_plan_ID": 1, "status_source": "onboard_platform", "battery_remaining_capacity": 80.2, + "battery_output": 3.8, + "fuel_volume": 13.2, + "fuel_remaining_capacity": 65.3, + "endurance": 3.4, "heading": 310.0, "health_status": false, "latitude": 178.2, diff --git a/formats/alert.py b/formats/alert.py new file mode 100644 index 0000000000000000000000000000000000000000..3c13fe88527665486daf064e39985564e6d95a12 --- /dev/null +++ b/formats/alert.py @@ -0,0 +1,58 @@ +""" + schemas: Alert message sent on fault detection +""" +alert_schema = { + "type": "object", + "properties": { + "message_type": { + "type": "string", + "description": "Type of message", + "example": "alert", + "enum": ["alert"], + }, + "code": { # changed from alert_ID because reasons + "type": "integer", + "description": "Alert code", + "example": 345, + }, + "platform_ID": { + "type": "string", + "description": "Unique identifier for this platform", + "example": "usvdecibel", + }, + "platform_timestamp": { + "type": "string", + "format": "date-time", + "description": "Timestamp for onboard platform status message", + "example": "2022-12-21T00:00:00Z", + }, + "subsystem": { # changed from suggested "source" could be device / subsystem or something + "type": "string", + "description": "System that generated the alert", + "example": "Onboard Fault Monitor", + }, + "summary": { + "type": "string", + "description": "High level description of the alert", + "example": "Steering Damage - Port Side", + }, + "details": { + "type": "string", + "description": "Detailed reason for the alert ", + "example": "Discrepancy between rudder and actuator positions" + + " : Rudder Pos=10.31°, Steering Actuator Pos=28.65°, Discrepancy=18.33°", + }, + "severity": { + "type": "string", + "description": "Severity level of alert", + "example": "Alarm", + "enum": ["Emergency", "Alarm", "Warning", "Caution"], + }, + }, + "required": [ + "message_type", + "platform_ID", + "code", + "severity", + ], +} diff --git a/formats/platform_status.py b/formats/platform_status.py index f55910b948f9d3c5c301b957043666f940f38666..cc91a549054d8da081b63a9a6555d7d4ba4de140 100644 --- a/formats/platform_status.py +++ b/formats/platform_status.py @@ -170,6 +170,39 @@ platform_status_schema = { "description": "Battery remaining % provided by respective C2", "example": 80.2, }, + + # Battery power (kw / float) + "battery_output": { # changed from battery_power + "type": "number", + "format": "float", + "description": "Battery output in kW", + "example": 80.2, + }, + # Bunkers remaining capacity (litres, float) + # Bunkers percentage full (percentage, float) + # battery_remaining_capacity is % full if we want both these fields + # these names are going to cause confusion + "fuel_remaining_capacity": { + "type": "number", + "format": "float", + "description": "Percentage remaining capacity", + "example": 80.2, + }, + "fuel_volume": { + "type": "number", + "format": "float", + "description": "Litres of liquid fuel", + "example": 12.5, + }, + # Endurance (hours, float) + "endurance": { + "type": "number", + "format": "float", + "description": "Estimate of hours of operation remaining " + + "based on present output or performance", + "example": 7.4, + }, + "sensor_config": sensor_schema, }, "required": [ diff --git a/generate_schema_config.py b/generate_schema_config.py index bc08138c4b8109a405372fc68581905e33576b0d..123de907cd461abfb03702e5c6f61f7ff25c5795 100644 --- a/generate_schema_config.py +++ b/generate_schema_config.py @@ -9,6 +9,7 @@ from formats.platform_status_encoded import platform_status_encoded_schema from formats.survey import survey_schema from formats.survey_encoded import survey_encoded_schema from formats.acknowledgement import acknowledgement_schema +from formats.alert import alert_schema from flasgger import Swagger from flask import Flask @@ -55,6 +56,7 @@ swagger_config = { "discriminator": { "propertyName": "message_type", "mapping": { + "alert": "#/components/schemas/alert", "mission_plan": "#/components/schemas/mission_plan", "mission_plan_encoded": "#/components/schemas/" + "mission_plan_encoded", @@ -72,6 +74,7 @@ swagger_config = { }, }, "oneOf": [ + {"$ref": "#/components/schemas/alert"}, {"$ref": "#/components/schemas/acknowledgement"}, {"$ref": "#/components/schemas/mission_plan"}, {"$ref": "#/components/schemas/mission_plan_encoded"}, @@ -95,6 +98,7 @@ swagger_config = { "survey": survey_schema, "survey_encoded": survey_encoded_schema, "acknowledgement": acknowledgement_schema, + "alert": alert_schema, } }, } diff --git a/project/soar/swagger.json b/project/soar/swagger.json index 70bc2c9c63b4d722a2a592d011f9085f1c876c68..85727bfca507e1c56a7e53cb064792d70cae1b7d 100644 --- a/project/soar/swagger.json +++ b/project/soar/swagger.json @@ -1,132 +1,193 @@ { - "components":{ - "schemas":{ - "MESSAGE":{ - "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" + "components": { + "schemas": { + "MESSAGE": { + "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":[ + "required": [ "header", "payload" ], - "type":"object" + "type": "object" }, - "acknowledgement":{ - "properties":{ - "approved":{ - "description":"Human-in-the-loop approval.1 - Plan approved; 0 - Plan Rejected", - "type":"boolean" - }, - "autonomy_engine_plan_ID":{ - "description":"Mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", - "example":1, - "type":"integer" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "acknowledgement": { + "properties": { + "approved": { + "description": "Human-in-the-loop approval.1 - Plan approved; 0 - Plan Rejected", + "type": "boolean" + }, + "autonomy_engine_plan_ID": { + "description": "Mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", + "example": 1, + "type": "integer" + }, + "message_type": { + "description": "Type of message", + "enum": [ "acknowledgement" ], - "example":"acknowledgement", - "type":"string" + "example": "acknowledgement", + "type": "string" }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" } }, - "required":[ + "required": [ "message_type", "autonomy_engine_plan_ID", "platform_ID", "approved" ], - "type":"object" + "type": "object" }, - "header":{ - "discriminator":{ - "propertyName":"message_type" + "alert": { + "properties": { + "code": { + "description": "Alert code", + "example": 345, + "type": "integer" + }, + "details": { + "description": "Detailed reason for the alert ", + "example": "Discrepancy between rudder and actuator positions : Rudder Pos=10.31\u00b0, Steering Actuator Pos=28.65\u00b0, Discrepancy=18.33\u00b0", + "type": "string" + }, + "message_type": { + "description": "Type of message", + "enum": [ + "alert" + ], + "example": "alert", + "type": "string" + }, + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "usvdecibel", + "type": "string" + }, + "platform_timestamp": { + "description": "Timestamp for onboard platform status message", + "example": "2022-12-21T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "severity": { + "description": "Severity level of alert", + "enum": [ + "Emergency", + "Alarm", + "Warning", + "Caution" + ], + "example": "Alarm", + "type": "string" + }, + "subsystem": { + "description": "System that generated the alert", + "example": "Onboard Fault Monitor", + "type": "string" + }, + "summary": { + "description": "High level description of the alert", + "example": "Steering Damage - Port Side", + "type": "string" + } + }, + "required": [ + "message_type", + "platform_ID", + "code", + "severity" + ], + "type": "object" + }, + "header": { + "discriminator": { + "propertyName": "message_type" }, - "properties":{ - "delivery_type":{ - "default":"publish", - "description":"To publish or broadcast this message.", - "enum":[ + "properties": { + "delivery_type": { + "default": "publish", + "description": "To publish or broadcast this message.", + "enum": [ "broadcast", "publish" ], - "example":"publish", - "type":"string" - }, - "destination":{ - "description":"Publisher topic; What is the destination of this message", - "example":"ah1", - "type":"string" - }, - "encoded":{ - "description":"Indicate that message raw (encoded) or decoded. Options: encoded=true, decoded=false", - "example":false, - "type":"boolean" - }, - "message_ID":{ - "description":"An identifier for the type of message received.", - "example":"b427003c-0000-11aa-a1eb-bvcdfghjgfdd", - "type":"string" - }, - "source":{ - "description":"The sender; Where is this message from", - "example":"autonomy_engine", - "type":"string" - }, - "timestamp":{ - "description":"Timestamp of message", - "example":"2022-11-16T00:00:00Z", - "format":"date-time", - "type":"string" - }, - "version":{ - "description":"Version of comms backbone message format protocol", - "example":2.0, - "format":"float", - "type":"number" + "example": "publish", + "type": "string" + }, + "destination": { + "description": "Publisher topic; What is the destination of this message", + "example": "ah1", + "type": "string" + }, + "encoded": { + "description": "Indicate that message raw (encoded) or decoded. Options: encoded=true, decoded=false", + "example": false, + "type": "boolean" + }, + "message_ID": { + "description": "An identifier for the type of message received.", + "example": "b427003c-0000-11aa-a1eb-bvcdfghjgfdd", + "type": "string" + }, + "source": { + "description": "The sender; Where is this message from", + "example": "autonomy_engine", + "type": "string" + }, + "timestamp": { + "description": "Timestamp of message", + "example": "2022-11-16T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "version": { + "description": "Version of comms backbone message format protocol", + "example": 2.0, + "format": "float", + "type": "number" } }, - "type":"object" + "type": "object" }, - "mission_plan":{ - "properties":{ - "autonomy_engine_plan_ID":{ - "description":"Unique identifier for this plangenerated by the Autonomy Engine", - "example":3, - "type":"integer" - }, - "emergency":{ - "default":false, - "description":"To indicate if this is an emergency. true = emergency and false = no emergency", - "example":false, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "mission_plan": { + "properties": { + "autonomy_engine_plan_ID": { + "description": "Unique identifier for this plangenerated by the Autonomy Engine", + "example": 3, + "type": "integer" + }, + "emergency": { + "default": false, + "description": "To indicate if this is an emergency. true = emergency and false = no emergency", + "example": false, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "mission_plan" ], - "example":"mission_plan", - "type":"string" - }, - "plan":{ - "items":{ - "properties":{ - "action":{ - "description":"Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.", - "enum":[ + "example": "mission_plan", + "type": "string" + }, + "plan": { + "items": { + "properties": { + "action": { + "description": "Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.", + "enum": [ "move", "payload", "dive", @@ -138,275 +199,279 @@ "stop_mission", "abort_now" ], - "example":"move", - "type":"string" + "example": "move", + "type": "string" }, - "activate_payload":{ - "description":"To activate/deactivate sensor for Autosub Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`", - "example":true, - "type":"boolean" + "activate_payload": { + "description": "To activate/deactivate sensor for Autosub Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`", + "example": true, + "type": "boolean" }, - "altitude":{ - "description":"Altitude of next action", - "example":15.0, - "format":"float", - "type":"number" + "altitude": { + "description": "Altitude of next action", + "example": 15.0, + "format": "float", + "type": "number" }, - "depth":{ - "description":"Depth of next action", - "example":15.0, - "format":"float", - "type":"number" + "depth": { + "description": "Depth of next action", + "example": 15.0, + "format": "float", + "type": "number" }, - "start_point_latitude":{ - "description":"Start point, y-coordinate", - "example":50.37072283932642, - "format":"float", - "type":"number" + "start_point_latitude": { + "description": "Start point, y-coordinate", + "example": 50.37072283932642, + "format": "float", + "type": "number" }, - "start_point_longitude":{ - "description":"Start point, x-coordinate", - "example":-4.187143188645706, - "format":"float", - "type":"number" + "start_point_longitude": { + "description": "Start point, x-coordinate", + "example": -4.187143188645706, + "format": "float", + "type": "number" }, - "target_waypoint_latitude":{ - "description":"Target waypoint, y-coordinate", - "example":50.37072283932642, - "format":"float", - "type":"number" + "target_waypoint_latitude": { + "description": "Target waypoint, y-coordinate", + "example": 50.37072283932642, + "format": "float", + "type": "number" }, - "target_waypoint_longitude":{ - "description":"Target waypoint, x-coordinate", - "example":-4.187143188645706, - "format":"float", - "type":"number" + "target_waypoint_longitude": { + "description": "Target waypoint, x-coordinate", + "example": -4.187143188645706, + "format": "float", + "type": "number" }, - "timeout":{ - "description":"Timeout set to perform action", - "example":1800.0, - "format":"float", - "type":"number" + "timeout": { + "description": "Timeout set to perform action", + "example": 1800.0, + "format": "float", + "type": "number" } }, - "required":[ + "required": [ "target_waypoint_latitude", "target_waypoint_longitude" ], - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" } }, - "required":[ + "required": [ "message_type", "autonomy_engine_plan_ID", "platform_ID", "plan" ], - "type":"object" + "type": "object" }, - "mission_plan_encoded":{ - "properties":{ - "data":{ - "description":"encoded string. E.g. Base64 encoded", - "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", - "type":"string" - }, - "file_name":{ - "description":"Name of file", - "example":"ah1-0238126349247372.bin", - "type":"string" - }, - "is_binary":{ - "description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", - "example":true, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "mission_plan_encoded": { + "properties": { + "data": { + "description": "encoded string. E.g. Base64 encoded", + "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", + "type": "string" + }, + "file_name": { + "description": "Name of file", + "example": "ah1-0238126349247372.bin", + "type": "string" + }, + "is_binary": { + "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", + "example": true, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "mission_plan_encoded" ], - "example":"mission_plan_encoded", - "type":"string" + "example": "mission_plan_encoded", + "type": "string" }, - "mime_type":{ - "description":"MIME type", - "example":"application/gzip", - "type":"string" + "mime_type": { + "description": "MIME type", + "example": "application/gzip", + "type": "string" } }, - "required":[ + "required": [ "data", "is_binary" ], - "type":"object" + "type": "object" }, - "observation":{ - "properties":{ - "additional_data":{ - "description":"Placeholder field for any additional data", - "example":{ - "sensor_payload":false + "observation": { + "properties": { + "additional_data": { + "description": "Placeholder field for any additional data", + "example": { + "sensor_payload": false } }, - "message_type":{ - "description":"Type of message", - "enum":[ + "message_type": { + "description": "Type of message", + "enum": [ "observation" ], - "example":"observation", - "type":"string" - }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" - }, - "points_of_interest":{ - "description":"Points from features of interest identified by platform if any found.", - "items":{ - "properties":{ - "latitude":{ - "description":"Identified y-coordinate of point of interest", - "example":178.2, - "format":"float", - "type":"number" + "example": "observation", + "type": "string" + }, + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" + }, + "points_of_interest": { + "description": "Points from features of interest identified by platform if any found.", + "items": { + "properties": { + "latitude": { + "description": "Identified y-coordinate of point of interest", + "example": 178.2, + "format": "float", + "type": "number" }, - "longitude":{ - "description":"Identified x-coordinate of point of interest", - "example":-10.122, - "format":"float", - "type":"number" + "longitude": { + "description": "Identified x-coordinate of point of interest", + "example": -10.122, + "format": "float", + "type": "number" }, - "quality_of_point":{ - "description":"Quality/strength of points from features of interest identified by platform.", - "example":0.98, - "format":"float", - "type":"number" + "quality_of_point": { + "description": "Quality/strength of points from features of interest identified by platform.", + "example": 0.98, + "format": "float", + "type": "number" } }, - "required":[ + "required": [ "latitude", "longitude" ], - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" }, - "region_surveyed":{ - "description":"Region surveyed by given platform. GEOJSON", - "example":"", - "nullable":true + "region_surveyed": { + "description": "Region surveyed by given platform. GEOJSON", + "example": "", + "nullable": true } }, - "required":[ + "required": [ "message_type", "platform_ID" ], - "type":"object" + "type": "object" }, - "observation_encoded":{ - "properties":{ - "data":{ - "description":"encoded string. E.g. Base64 encoded", - "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", - "type":"string" - }, - "file_name":{ - "description":"Name of file", - "example":"ah1-0238126349247372.bin", - "type":"string" - }, - "is_binary":{ - "description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", - "example":true, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "observation_encoded": { + "properties": { + "data": { + "description": "encoded string. E.g. Base64 encoded", + "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", + "type": "string" + }, + "file_name": { + "description": "Name of file", + "example": "ah1-0238126349247372.bin", + "type": "string" + }, + "is_binary": { + "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", + "example": true, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "observation_encoded" ], - "example":"observation_encoded", - "type":"string" + "example": "observation_encoded", + "type": "string" }, - "mime_type":{ - "description":"MIME type", - "example":"application/gzip", - "type":"string" + "mime_type": { + "description": "MIME type", + "example": "application/gzip", + "type": "string" } }, - "required":[ + "required": [ "data", "is_binary" ], - "type":"object" + "type": "object" }, - "payload":{ - "discriminator":{ - "mapping":{ - "acknowledgement":"#/components/schemas/acknowledgement", - "mission_plan":"#/components/schemas/mission_plan", - "mission_plan_encoded":"#/components/schemas/mission_plan_encoded", - "observation":"#/components/schemas/observation", - "observation_encoded":"#/components/schemas/observation_encoded", - "planning_configuration":"#/components/schemas/planning_configuration", - "platform_status":"#/components/schemas/platform_status", - "platform_status_encoded":"#/components/schemas/platform_status_encoded", - "survey":"#/components/schemas/survey", - "survey_encoded":"#/components/schemas/survey_encoded" - }, - "propertyName":"message_type" + "payload": { + "discriminator": { + "mapping": { + "acknowledgement": "#/components/schemas/acknowledgement", + "alert": "#/components/schemas/alert", + "mission_plan": "#/components/schemas/mission_plan", + "mission_plan_encoded": "#/components/schemas/mission_plan_encoded", + "observation": "#/components/schemas/observation", + "observation_encoded": "#/components/schemas/observation_encoded", + "planning_configuration": "#/components/schemas/planning_configuration", + "platform_status": "#/components/schemas/platform_status", + "platform_status_encoded": "#/components/schemas/platform_status_encoded", + "survey": "#/components/schemas/survey", + "survey_encoded": "#/components/schemas/survey_encoded" + }, + "propertyName": "message_type" }, - "oneOf":[ + "oneOf": [ + { + "$ref": "#/components/schemas/alert" + }, { - "$ref":"#/components/schemas/acknowledgement" + "$ref": "#/components/schemas/acknowledgement" }, { - "$ref":"#/components/schemas/mission_plan" + "$ref": "#/components/schemas/mission_plan" }, { - "$ref":"#/components/schemas/mission_plan_encoded" + "$ref": "#/components/schemas/mission_plan_encoded" }, { - "$ref":"#/components/schemas/observation" + "$ref": "#/components/schemas/observation" }, { - "$ref":"#/components/schemas/observation_encoded" + "$ref": "#/components/schemas/observation_encoded" }, { - "$ref":"#/components/schemas/planning_configuration" + "$ref": "#/components/schemas/planning_configuration" }, { - "$ref":"#/components/schemas/platform_status" + "$ref": "#/components/schemas/platform_status" }, { - "$ref":"#/components/schemas/platform_status_encoded" + "$ref": "#/components/schemas/platform_status_encoded" }, { - "$ref":"#/components/schemas/survey" + "$ref": "#/components/schemas/survey" }, { - "$ref":"#/components/schemas/survey_encoded" + "$ref": "#/components/schemas/survey_encoded" } ] }, - "planning_configuration":{ - "properties":{ - "exclusion_zones":{ - "description":"Exclusion zones for all platforms", - "items":{ - "description":"Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)", - "properties":{ - "geometry_coordinates":{ - "example":[ + "planning_configuration": { + "properties": { + "exclusion_zones": { + "description": "Exclusion zones for all platforms", + "items": { + "description": "Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)", + "properties": { + "geometry_coordinates": { + "example": [ [ [ -4.1777839187560915, @@ -430,33 +495,33 @@ ] ] ], - "type":"array" + "type": "array" } }, - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" }, - "message_type":{ - "description":"Type of message", - "enum":[ + "message_type": { + "description": "Type of message", + "enum": [ "planning_configuration" ], - "example":"planning_configuration", - "type":"string" - }, - "planning_config_ID":{ - "description":"Unique identifier tagged to version of this configuration plan", - "example":3, - "type":"integer" - }, - "region_of_interest":{ - "description":"Region of interest for the entire operation", - "items":{ - "description":"Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)", - "properties":{ - "geometry_coordinates":{ - "example":[ + "example": "planning_configuration", + "type": "string" + }, + "planning_config_ID": { + "description": "Unique identifier tagged to version of this configuration plan", + "example": 3, + "type": "integer" + }, + "region_of_interest": { + "description": "Region of interest for the entire operation", + "items": { + "description": "Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)", + "properties": { + "geometry_coordinates": { + "example": [ [ [ -4.1777839187560915, @@ -480,406 +545,430 @@ ] ] ], - "type":"array" + "type": "array" } }, - "type":"object" + "type": "object" }, - "type":"array" - }, - "squads":{ - "items":{ - "properties":{ - "no_of_platforms":{ - "description":"Number of platforms", - "example":3, - "type":"integer" + "type": "array" + }, + "squads": { + "items": { + "properties": { + "no_of_platforms": { + "description": "Number of platforms", + "example": 3, + "type": "integer" }, - "platforms":{ - "description":"Squad consists of these platforms", - "items":{ - "properties":{ - "active":{ - "description":"If platform is active = True, and inactive = False", - "example":true, - "type":"boolean" + "platforms": { + "description": "Squad consists of these platforms", + "items": { + "properties": { + "active": { + "description": "If platform is active = True, and inactive = False", + "example": true, + "type": "boolean" }, - "additional_data":{ - "description":"Any addition fields/data to be added here", - "example":{ - "new_sensor_a":"test_sensor", - "range":10.0 + "additional_data": { + "description": "Any addition fields/data to be added here", + "example": { + "new_sensor_a": "test_sensor", + "range": 10.0 }, - "type":"object" + "type": "object" }, - "beacon_ID":{ - "description":"Unique identifier (number) for the beacon associated to this platform", - "example":2407, - "type":"number" + "beacon_ID": { + "description": "Unique identifier (number) for the beacon associated to this platform", + "example": 2407, + "type": "number" }, - "emergency":{ - "properties":{ - "safe_command":{ - "description":"Command/Action that is native to respective partner's platform/C2", - "enum":[ + "emergency": { + "properties": { + "safe_command": { + "description": "Command/Action that is native to respective partner's platform/C2", + "enum": [ "go_home", "abort_now", "stop_now", "surface_now" ], - "example":"go_home", - "type":"string" + "example": "go_home", + "type": "string" }, - "target_depth":{ - "description":"Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`", - "example":10.0, - "format":"float", - "type":"number" + "target_depth": { + "description": "Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`", + "example": 10.0, + "format": "float", + "type": "number" }, - "target_waypoint_latitude":{ - "description":"Y-coordinate safe place for respective platform", - "example":50.365, - "format":"float", - "type":"number" + "target_waypoint_latitude": { + "description": "Y-coordinate safe place for respective platform", + "example": 50.365, + "format": "float", + "type": "number" }, - "target_waypoint_longitude":{ - "description":"X-coordinate safe place for respective platform", - "example":-7.432, - "format":"float", - "type":"number" + "target_waypoint_longitude": { + "description": "X-coordinate safe place for respective platform", + "example": -7.432, + "format": "float", + "type": "number" } }, - "required":[ + "required": [ "target_waypoint_latitude", "target_waypoint_longitude", "target_depth" ], - "type":"object" + "type": "object" }, - "endurance_relative_to_water_speed":{ - "properties":{ - "avg_battery_rating":{ - "description":"Battery endurance rating during standard operational speed usage (m/s)", - "example":1.9, - "format":"float", - "type":"number" + "endurance_relative_to_water_speed": { + "properties": { + "avg_battery_rating": { + "description": "Battery endurance rating during standard operational speed usage (m/s)", + "example": 1.9, + "format": "float", + "type": "number" }, - "max_battery_rating":{ - "description":"Battery endurance rating during maximum speed usage (m/s)", - "example":1.23, - "format":"float", - "type":"number" + "max_battery_rating": { + "description": "Battery endurance rating during maximum speed usage (m/s)", + "example": 1.23, + "format": "float", + "type": "number" }, - "min_battery_rating":{ - "description":"Battery endurance rating during maximum speed usage (m/s)", - "example":3.32, - "format":"float", - "type":"number" + "min_battery_rating": { + "description": "Battery endurance rating during maximum speed usage (m/s)", + "example": 3.32, + "format": "float", + "type": "number" } }, - "type":"object" + "type": "object" }, - "max_velocity":{ - "description":"Maximum velocity set for platform", - "example":0.9, - "format":"float", - "type":"number" + "max_velocity": { + "description": "Maximum velocity set for platform", + "example": 0.9, + "format": "float", + "type": "number" }, - "min_altitude":{ - "description":"Minimum altitude set for platform", - "example":15.2, - "format":"float", - "type":"number" + "min_altitude": { + "description": "Minimum altitude set for platform", + "example": 15.2, + "format": "float", + "type": "number" }, - "min_velocity":{ - "description":"Minimum velocity set for platform", - "example":0.1, - "format":"float", - "type":"number" + "min_velocity": { + "description": "Minimum velocity set for platform", + "example": 0.1, + "format": "float", + "type": "number" }, - "model":{ - "example":"reav", - "type":"string" + "model": { + "example": "reav", + "type": "string" }, - "operator":{ - "description":"Operator of platform", - "example":"noc", - "type":"string" + "operator": { + "description": "Operator of platform", + "example": "noc", + "type": "string" }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" }, - "scan_sensor":{ - "properties":{ - "angle":{ - "description":"Angle of range of swath width (in degrees)", - "example":140.0, - "format":"float", - "type":"number" + "scan_sensor": { + "properties": { + "angle": { + "description": "Angle of range of swath width (in degrees)", + "example": 140.0, + "format": "float", + "type": "number" }, - "frequency":{ - "description":"Frequency of scanning sensor (in kHz)", - "example":700.0, - "format":"float", - "type":"number" + "frequency": { + "description": "Frequency of scanning sensor (in kHz)", + "example": 700.0, + "format": "float", + "type": "number" }, - "sensor_type":{ - "description":"Unique identifier for this platform", - "enum":[ + "sensor_type": { + "description": "Unique identifier for this platform", + "enum": [ "SIDESCAN", "MBES" ], - "example":"MBES", - "type":"string" + "example": "MBES", + "type": "string" }, - "swath_width":{ - "description":"Function of `target_altitude` for the platform's swath width (in metres)", - "example":38.0, - "format":"float", - "type":"number" + "swath_width": { + "description": "Function of `target_altitude` for the platform's swath width (in metres)", + "example": 38.0, + "format": "float", + "type": "number" }, - "warmup_time":{ - "description":"Warmup time (seconds) for sensor to start up.", - "example":180.0, - "format":"float", - "type":"number" + "warmup_time": { + "description": "Warmup time (seconds) for sensor to start up.", + "example": 180.0, + "format": "float", + "type": "number" } }, - "type":"object" + "type": "object" }, - "target_altitude":{ - "description":"Target altitude set for platform. This affects swath width", - "example":15.0, - "format":"float", - "type":"number" + "target_altitude": { + "description": "Target altitude set for platform. This affects swath width", + "example": 15.0, + "format": "float", + "type": "number" }, - "turning_radius":{ - "description":"Turning radius of platform (in metres)", - "example":1.0, - "format":"float", - "type":"number" + "turning_radius": { + "description": "Turning radius of platform (in metres)", + "example": 1.0, + "format": "float", + "type": "number" } }, - "required":[ + "required": [ "operator", "platform_ID", "active", "model" ], - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" }, - "squad_ID":{ - "description":"Identifier of given squad", - "example":23, - "type":"integer" + "squad_ID": { + "description": "Identifier of given squad", + "example": 23, + "type": "integer" }, - "squad_mission_type":{ - "description":"Mission of given squad: `tracking`, `survey`, `inspection`", - "enum":[ + "squad_mission_type": { + "description": "Mission of given squad: `tracking`, `survey`, `inspection`", + "enum": [ "tracking", "survey", "inspection" ], - "example":"survey", - "type":"string" + "example": "survey", + "type": "string" } }, - "required":[ + "required": [ "squad_ID", "no_of_platforms", "platforms", "squad_mission_type" ], - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" } }, - "required":[ + "required": [ "message_type", "planning_config_ID", "squads", "exclusion_zones", "region_of_interest" ], - "type":"object" + "type": "object" }, - "platform_status":{ - "properties":{ - "altitude":{ - "description":"Target altitude in metres", - "example":20.0, - "format":"float", - "type":"number" - }, - "autonomy_engine_plan_ID":{ - "description":"Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", - "example":1, - "type":"integer" - }, - "battery_remaining_capacity":{ - "description":"Battery remaining % provided by respective C2", - "example":80.2, - "format":"float", - "type":"number" - }, - "depth":{ - "default":0.0, - "description":"Target depth in metres", - "example":50.0, - "format":"float", - "type":"number" - }, - "heading":{ - "description":"Angular distance relative to north, usually 000\u00b0 at north, clockwise through 359\u00b0, in degrees", - "example":124.3, - "format":"float", - "type":"number" - }, - "health_status":{ - "description":"Health status where 0 is OK, 1 is platform has an ERROR", - "example":false, - "type":"boolean" - }, - "latitude":{ - "description":"Latitude (Y-coordinate) in decimal degrees.", - "example":178.2, - "format":"float", - "type":"number" - }, - "localisation_east_error":{ - "description":"Difference in EAST between deadreckoningand USBL update.", - "example":0.000129, - "format":"float", - "type":"number" - }, - "localisation_north_error":{ - "description":"Difference in NORTH between deadreckoning and USBL update.", - "example":0.000129, - "format":"float", - "type":"number" - }, - "longitude":{ - "description":"Longitude (X-coordinate) in decimal degrees.", - "example":-10.122, - "format":"float", - "type":"number" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "platform_status": { + "properties": { + "altitude": { + "description": "Target altitude in metres", + "example": 20.0, + "format": "float", + "type": "number" + }, + "autonomy_engine_plan_ID": { + "description": "Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", + "example": 1, + "type": "integer" + }, + "battery_output": { + "description": "Battery output in kW", + "example": 80.2, + "format": "float", + "type": "number" + }, + "battery_remaining_capacity": { + "description": "Battery remaining % provided by respective C2", + "example": 80.2, + "format": "float", + "type": "number" + }, + "depth": { + "default": 0.0, + "description": "Target depth in metres", + "example": 50.0, + "format": "float", + "type": "number" + }, + "endurance": { + "description": "Estimate of hours of operation remaining based on present output or performance", + "example": 7.4, + "format": "float", + "type": "number" + }, + "fuel_remaining_capacity": { + "description": "Percentage remaining capacity", + "example": 80.2, + "format": "float", + "type": "number" + }, + "fuel_volume": { + "description": "Litres of liquid fuel", + "example": 12.5, + "format": "float", + "type": "number" + }, + "heading": { + "description": "Angular distance relative to north, usually 000\u00b0 at north, clockwise through 359\u00b0, in degrees", + "example": 124.3, + "format": "float", + "type": "number" + }, + "health_status": { + "description": "Health status where 0 is OK, 1 is platform has an ERROR", + "example": false, + "type": "boolean" + }, + "latitude": { + "description": "Latitude (Y-coordinate) in decimal degrees.", + "example": 178.2, + "format": "float", + "type": "number" + }, + "localisation_east_error": { + "description": "Difference in EAST between deadreckoningand USBL update.", + "example": 0.000129, + "format": "float", + "type": "number" + }, + "localisation_north_error": { + "description": "Difference in NORTH between deadreckoning and USBL update.", + "example": 0.000129, + "format": "float", + "type": "number" + }, + "longitude": { + "description": "Longitude (X-coordinate) in decimal degrees.", + "example": -10.122, + "format": "float", + "type": "number" + }, + "message_type": { + "description": "Type of message", + "enum": [ "platform_status" ], - "example":"platform_status", - "type":"string" - }, - "mission_plan_ID":{ - "description":"Mission plan ID according to platform-C2 system", - "example":1, - "type":"integer" - }, - "mission_track_ID":{ - "description":"Track number - stage in mission (e.g. 4 --> Waypoint 3 to Waypoint 4)", - "example":4, - "type":"integer" - }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" - }, - "platform_state":{ - "description":"Current state executed by platform. E.g. STOP, IDLE, ABORT.", - "example":"ABORT", - "type":"string" - }, - "platform_timestamp":{ - "description":"Timestamp for onboard platform status message", - "example":"2022-12-21T00:00:00Z", - "format":"date-time", - "type":"string" - }, - "range_to_go":{ - "description":"Estimated distance to reach next waypoint", - "example":124.3, - "format":"float", - "type":"number" - }, - "sensor_config":{ - "description":"Scanning sensor on platform available to be controlled by the Autonomy Engine", - "properties":{ - "additional_data":{ - "description":"Any addition fields/data to be added here", - "example":{ - "payload":[ + "example": "platform_status", + "type": "string" + }, + "mission_plan_ID": { + "description": "Mission plan ID according to platform-C2 system", + "example": 1, + "type": "integer" + }, + "mission_track_ID": { + "description": "Track number - stage in mission (e.g. 4 --> Waypoint 3 to Waypoint 4)", + "example": 4, + "type": "integer" + }, + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" + }, + "platform_state": { + "description": "Current state executed by platform. E.g. STOP, IDLE, ABORT.", + "example": "ABORT", + "type": "string" + }, + "platform_timestamp": { + "description": "Timestamp for onboard platform status message", + "example": "2022-12-21T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "range_to_go": { + "description": "Estimated distance to reach next waypoint", + "example": 124.3, + "format": "float", + "type": "number" + }, + "sensor_config": { + "description": "Scanning sensor on platform available to be controlled by the Autonomy Engine", + "properties": { + "additional_data": { + "description": "Any addition fields/data to be added here", + "example": { + "payload": [ 1.2, 434 ] }, - "type":"object" + "type": "object" }, - "sensor_on":{ - "description":"Sensor switched on (true) or off (false)", - "example":true, - "type":"boolean" + "sensor_on": { + "description": "Sensor switched on (true) or off (false)", + "example": true, + "type": "boolean" }, - "sensor_serial":{ - "description":"serial number of sensor", - "example":"mbes-002a", - "type":"string" + "sensor_serial": { + "description": "serial number of sensor", + "example": "mbes-002a", + "type": "string" } }, - "type":"object" + "type": "object" }, - "speed_over_ground":{ - "description":"Speed over ground", - "example":124.3, - "format":"float", - "type":"number" + "speed_over_ground": { + "description": "Speed over ground", + "example": 124.3, + "format": "float", + "type": "number" }, - "status_source":{ - "description":"Indicate if this status message is from the platform or USBL", - "enum":[ + "status_source": { + "description": "Indicate if this status message is from the platform or USBL", + "enum": [ "usbl", "onboard_platform" ], - "example":"usbl", - "type":"string" - }, - "thrust_applied":{ - "description":"Thrust applied", - "example":124.3, - "format":"float", - "type":"number" - }, - "transmission_mode":{ - "description":"Mode in which status message was transmitted when on the surface (e.g. iridium/wifi) or underwater (e.g. acoustics)", - "enum":[ + "example": "usbl", + "type": "string" + }, + "thrust_applied": { + "description": "Thrust applied", + "example": 124.3, + "format": "float", + "type": "number" + }, + "transmission_mode": { + "description": "Mode in which status message was transmitted when on the surface (e.g. iridium/wifi) or underwater (e.g. acoustics)", + "enum": [ "acoustics", "iridium", "wifi", "starlink" ], - "example":"wifi", - "type":"string" - }, - "usbl_fix_seconds_ago":{ - "description":"USBL Fix received x second ago.", - "example":10.0, - "format":"float", - "type":"number" - }, - "water_current_velocity":{ - "description":"Water current magnitude and direction", - "example":"124.3NE", - "type":"string" + "example": "wifi", + "type": "string" + }, + "usbl_fix_seconds_ago": { + "description": "USBL Fix received x second ago.", + "example": 10.0, + "format": "float", + "type": "number" + }, + "water_current_velocity": { + "description": "Water current magnitude and direction", + "example": "124.3NE", + "type": "string" } }, - "required":[ + "required": [ "message_type", "platform_ID", "status_source", @@ -887,187 +976,186 @@ "latitude", "longitude" ], - "type":"object" + "type": "object" }, - "platform_status_encoded":{ - "properties":{ - "data":{ - "description":"encoded string. E.g. Base64 encoded", - "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", - "type":"string" - }, - "file_name":{ - "description":"Name of file", - "example":"ah1-0238126349247372.bin", - "type":"string" - }, - "is_binary":{ - "description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", - "example":true, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "platform_status_encoded": { + "properties": { + "data": { + "description": "encoded string. E.g. Base64 encoded", + "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", + "type": "string" + }, + "file_name": { + "description": "Name of file", + "example": "ah1-0238126349247372.bin", + "type": "string" + }, + "is_binary": { + "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", + "example": true, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "platform_status_encoded" ], - "example":"platform_status_encoded", - "type":"string" + "example": "platform_status_encoded", + "type": "string" }, - "mime_type":{ - "description":"MIME type", - "example":"application/gzip", - "type":"string" + "mime_type": { + "description": "MIME type", + "example": "application/gzip", + "type": "string" } }, - "required":[ + "required": [ "data", "is_binary" ], - "type":"object" + "type": "object" }, - "survey":{ - "properties":{ - "latitude_A":{ - "description":"Latitude of point A(intersection of normal)from waypoint A to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "latitude_B":{ - "description":"Latitude of point B(intersection of normal)from waypoint B to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "latitude_C":{ - "description":"Latitude of point C(intersection of normal)from waypoint C to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "latitude_D":{ - "description":"Latitude of point D(intersection of normal)from waypoint D to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "latitude_E":{ - "description":"Latitude of point E(intersection of normal)from waypoint E to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "longitude_A":{ - "description":"Longitude of point A(intersection of normal)from waypoint A to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "longitude_B":{ - "description":"Longitude of point B(intersection of normal)from waypoint B to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "longitude_C":{ - "description":"Longitude of point C(intersection of normal)from waypoint C to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "longitude_D":{ - "description":"Longitude of point D(intersection of normal)from waypoint D to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "longitude_E":{ - "description":"Longitude of point E(intersection of normal)from waypoint E to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "survey": { + "properties": { + "latitude_A": { + "description": "Latitude of point A(intersection of normal)from waypoint A to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "latitude_B": { + "description": "Latitude of point B(intersection of normal)from waypoint B to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "latitude_C": { + "description": "Latitude of point C(intersection of normal)from waypoint C to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "latitude_D": { + "description": "Latitude of point D(intersection of normal)from waypoint D to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "latitude_E": { + "description": "Latitude of point E(intersection of normal)from waypoint E to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "longitude_A": { + "description": "Longitude of point A(intersection of normal)from waypoint A to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "longitude_B": { + "description": "Longitude of point B(intersection of normal)from waypoint B to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "longitude_C": { + "description": "Longitude of point C(intersection of normal)from waypoint C to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "longitude_D": { + "description": "Longitude of point D(intersection of normal)from waypoint D to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "longitude_E": { + "description": "Longitude of point E(intersection of normal)from waypoint E to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "message_type": { + "description": "Type of message", + "enum": [ "survey" ], - "example":"survey", - "type":"string" - }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"ecosub-2", - "type":"string" - }, - "timestamp":{ - "description":"Timestamp for onboard message", - "example":"2022-12-21T00:00:00Z", - "format":"date-time", - "type":"string" - }, - "track_ID":{ - "description":"Track number of action(s) currently executed by platform", - "example":1, - "type":"integer" + "example": "survey", + "type": "string" + }, + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "ecosub-2", + "type": "string" + }, + "timestamp": { + "description": "Timestamp for onboard message", + "example": "2022-12-21T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "track_ID": { + "description": "Track number of action(s) currently executed by platform", + "example": 1, + "type": "integer" } }, - "required":[ + "required": [ "latitude_A", "longitude_A", "latitude_B", "longitude_B", "platform_ID" ], - "type":"object" + "type": "object" }, - "survey_encoded":{ - "properties":{ - "data":{ - "description":"encoded string. E.g. Base64 encoded", - "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", - "type":"string" - }, - "file_name":{ - "description":"Name of file", - "example":"ah1-0238126349247372.bin", - "type":"string" - }, - "is_binary":{ - "description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", - "example":true, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "survey_encoded": { + "properties": { + "data": { + "description": "encoded string. E.g. Base64 encoded", + "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", + "type": "string" + }, + "file_name": { + "description": "Name of file", + "example": "ah1-0238126349247372.bin", + "type": "string" + }, + "is_binary": { + "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", + "example": true, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "survey_encoded" ], - "example":"survey_encoded", - "type":"string" + "example": "survey_encoded", + "type": "string" }, - "mime_type":{ - "description":"MIME type", - "example":"application/gzip", - "type":"string" + "mime_type": { + "description": "MIME type", + "example": "application/gzip", + "type": "string" } }, - "required":[ + "required": [ "data", "is_binary" ], - "type":"object" + "type": "object" } } }, - "info":{ - "description":"SoAR message protocol in schemas", - "title":"SoAR Backbone Message Formats", - "version":"1.0" + "definitions": {}, + "info": { + "description": "SoAR message protocol in schemas", + "title": "SoAR Backbone Message Formats", + "version": "1.0" }, - "openapi":"3.0.2", - "paths":{ - - } + "openapi": "3.0.2", + "paths": {} } \ No newline at end of file diff --git a/tests/fixtures/schemas.py b/tests/fixtures/schemas.py index 2aba8e7fa1282d43f447b058e04cbcd6de3742f9..6d365989c15d4fc5abacce689a25f363ae6e306f 100644 --- a/tests/fixtures/schemas.py +++ b/tests/fixtures/schemas.py @@ -454,6 +454,7 @@ platform_status_schema = { "type": "string", "description": "Type of message", "example": "platform_status", + "enum": ["platform_status"], }, "platform_ID": { "type": "string", @@ -486,7 +487,7 @@ platform_status_schema = { "description": "Current state executed by platform. E.g. " + "STOP, IDLE, ABORT.", "example": "ABORT", - }, + }, # TODO: Define enum with potential STATES of each platform "autonomy_engine_plan_ID": { "type": "integer", "description": "Last mission plan ID (according to Autonomy" @@ -496,13 +497,13 @@ platform_status_schema = { "latitude": { "type": "number", "format": "float", - "description": "Latitude in decimal degrees.", + "description": "Latitude (Y-coordinate) in decimal degrees.", "example": 178.2, }, "longitude": { "type": "number", "format": "float", - "description": "Longitude in decimal degrees.", + "description": "Longitude (X-coordinate) in decimal degrees.", "example": -10.122, }, "depth": { @@ -516,7 +517,7 @@ platform_status_schema = { "type": "number", "format": "float", "description": "Target altitude in metres", - "example": 20, + "example": 20.0, }, "mission_track_ID": { "type": "integer", @@ -542,7 +543,7 @@ platform_status_schema = { "example": 124.3, }, "water_current_velocity": { - "format": "string", + "type": "string", "description": "Water current magnitude and direction", "example": "124.3NE", }, @@ -561,8 +562,8 @@ platform_status_schema = { }, "health_status": { "type": "boolean", - "description": "Health status where 0 is OK, 1 is platform" - + " has an ERROR", + "description": "Health status where 0 is OK, 1 is platform has" + + " an ERROR", "example": False, }, "localisation_north_error": { @@ -576,7 +577,7 @@ platform_status_schema = { "type": "number", "format": "float", "description": "Difference in EAST between deadreckoning" - + " and USBL update.", + + "and USBL update.", "example": 0.000129, }, "usbl_fix_seconds_ago": { @@ -591,6 +592,39 @@ platform_status_schema = { "description": "Battery remaining % provided by respective C2", "example": 80.2, }, + + # Battery power (kw / float) + "battery_output": { # changed from battery_power + "type": "number", + "format": "float", + "description": "Battery output in kW", + "example": 80.2, + }, + # Bunkers remaining capacity (litres, float) + # Bunkers percentage full (percentage, float) + # battery_remaining_capacity is % full if we want both these fields + # these names are going to cause confusion + "fuel_remaining_capacity": { + "type": "number", + "format": "float", + "description": "Percentage remaining capacity", + "example": 80.2, + }, + "fuel_volume": { + "type": "number", + "format": "float", + "description": "Litres of liquid fuel", + "example": 12.5, + }, + # Endurance (hours, float) + "endurance": { + "type": "number", + "format": "float", + "description": "Estimate of hours of operation remaining " + + "based on present output or performance", + "example": 7.4, + }, + "sensor_config": sensor_schema, }, "required": [ @@ -602,3 +636,59 @@ platform_status_schema = { "longitude", ], } + +alert_schema = { + "type": "object", + "properties": { + "message_type": { + "type": "string", + "description": "Type of message", + "example": "alert", + "enum": ["alert"], + }, + "code": { # changed from alert_ID because reasons + "type": "integer", + "description": "Alert code", + "example": 345, + }, + "platform_ID": { + "type": "string", + "description": "Unique identifier for this platform", + "example": "usvdecibel", + }, + "platform_timestamp": { + "type": "string", + "format": "date-time", + "description": "Timestamp for onboard platform status message", + "example": "2022-12-21T00:00:00Z", + }, + "subsystem": { # changed from suggested "source" could be device / subsystem or something + "type": "string", + "description": "System that generated the alert", + "example": "Onboard Fault Monitor", + }, + "summary": { + "type": "string", + "description": "High level description of the alert", + "example": "Steering Damage - Port Side", + }, + "details": { + "type": "string", + "description": "Detailed reason for the alert ", + "example": "Discrepancy between rudder and actuator positions" + + " : Rudder Pos=10.31°, Steering Actuator Pos=28.65°, Discrepancy=18.33°", + }, + "severity": { + "type": "string", + "description": "Severity level of alert", + "example": "Alarm", + "enum": ["Emergency", "Alarm", "Warning", "Caution"], + }, + }, + "required": [ + "message_type", + "platform_ID", + "code", + "severity", + ], +} \ No newline at end of file diff --git a/tests/fixtures/swagger.json b/tests/fixtures/swagger.json index c9b04015ac06f15fe76fa101612f34484a980104..85727bfca507e1c56a7e53cb064792d70cae1b7d 100644 --- a/tests/fixtures/swagger.json +++ b/tests/fixtures/swagger.json @@ -1,132 +1,193 @@ { - "components":{ - "schemas":{ - "MESSAGE":{ - "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" + "components": { + "schemas": { + "MESSAGE": { + "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":[ + "required": [ "header", "payload" ], - "type":"object" + "type": "object" }, - "acknowledgement":{ - "properties":{ - "approved":{ - "description":"Human-in-the-loop approval.1 - Plan approved; 0 - Plan Rejected", - "type":"boolean" - }, - "autonomy_engine_plan_ID":{ - "description":"Mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", - "example":1, - "type":"integer" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "acknowledgement": { + "properties": { + "approved": { + "description": "Human-in-the-loop approval.1 - Plan approved; 0 - Plan Rejected", + "type": "boolean" + }, + "autonomy_engine_plan_ID": { + "description": "Mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", + "example": 1, + "type": "integer" + }, + "message_type": { + "description": "Type of message", + "enum": [ "acknowledgement" ], - "example":"acknowledgement", - "type":"string" + "example": "acknowledgement", + "type": "string" }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" } }, - "required":[ + "required": [ "message_type", "autonomy_engine_plan_ID", "platform_ID", "approved" ], - "type":"object" + "type": "object" }, - "header":{ - "discriminator":{ - "propertyName":"message_type" + "alert": { + "properties": { + "code": { + "description": "Alert code", + "example": 345, + "type": "integer" + }, + "details": { + "description": "Detailed reason for the alert ", + "example": "Discrepancy between rudder and actuator positions : Rudder Pos=10.31\u00b0, Steering Actuator Pos=28.65\u00b0, Discrepancy=18.33\u00b0", + "type": "string" + }, + "message_type": { + "description": "Type of message", + "enum": [ + "alert" + ], + "example": "alert", + "type": "string" + }, + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "usvdecibel", + "type": "string" + }, + "platform_timestamp": { + "description": "Timestamp for onboard platform status message", + "example": "2022-12-21T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "severity": { + "description": "Severity level of alert", + "enum": [ + "Emergency", + "Alarm", + "Warning", + "Caution" + ], + "example": "Alarm", + "type": "string" + }, + "subsystem": { + "description": "System that generated the alert", + "example": "Onboard Fault Monitor", + "type": "string" + }, + "summary": { + "description": "High level description of the alert", + "example": "Steering Damage - Port Side", + "type": "string" + } }, - "properties":{ - "delivery_type":{ - "default":"publish", - "description":"To publish or broadcast this message.", - "enum":[ + "required": [ + "message_type", + "platform_ID", + "code", + "severity" + ], + "type": "object" + }, + "header": { + "discriminator": { + "propertyName": "message_type" + }, + "properties": { + "delivery_type": { + "default": "publish", + "description": "To publish or broadcast this message.", + "enum": [ "broadcast", "publish" ], - "example":"publish", - "type":"string" - }, - "destination":{ - "description":"Publisher topic; What is the destination of this message", - "example":"ah1", - "type":"string" - }, - "encoded":{ - "description":"Indicate that message raw (encoded) or decoded. Options: encoded=true, decoded=false", - "example":false, - "type":"boolean" - }, - "message_ID":{ - "description":"An identifier for the type of message received.", - "example":"b427003c-0000-11aa-a1eb-bvcdfghjgfdd", - "type":"string" - }, - "source":{ - "description":"The sender; Where is this message from", - "example":"autonomy_engine", - "type":"string" - }, - "timestamp":{ - "description":"Timestamp of message", - "example":"2022-11-16T00:00:00Z", - "format":"date-time", - "type":"string" - }, - "version":{ - "description":"Version of comms backbone message format protocol", - "example":2.0, - "format":"float", - "type":"number" + "example": "publish", + "type": "string" + }, + "destination": { + "description": "Publisher topic; What is the destination of this message", + "example": "ah1", + "type": "string" + }, + "encoded": { + "description": "Indicate that message raw (encoded) or decoded. Options: encoded=true, decoded=false", + "example": false, + "type": "boolean" + }, + "message_ID": { + "description": "An identifier for the type of message received.", + "example": "b427003c-0000-11aa-a1eb-bvcdfghjgfdd", + "type": "string" + }, + "source": { + "description": "The sender; Where is this message from", + "example": "autonomy_engine", + "type": "string" + }, + "timestamp": { + "description": "Timestamp of message", + "example": "2022-11-16T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "version": { + "description": "Version of comms backbone message format protocol", + "example": 2.0, + "format": "float", + "type": "number" } }, - "type":"object" + "type": "object" }, - "mission_plan":{ - "properties":{ - "autonomy_engine_plan_ID":{ - "description":"Unique identifier for this plangenerated by the Autonomy Engine", - "example":3, - "type":"integer" - }, - "emergency":{ - "default":false, - "description":"To indicate if this is an emergency. true = emergency and false = no emergency", - "example":false, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "mission_plan": { + "properties": { + "autonomy_engine_plan_ID": { + "description": "Unique identifier for this plangenerated by the Autonomy Engine", + "example": 3, + "type": "integer" + }, + "emergency": { + "default": false, + "description": "To indicate if this is an emergency. true = emergency and false = no emergency", + "example": false, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "mission_plan" ], - "example":"mission_plan", - "type":"string" - }, - "plan":{ - "items":{ - "properties":{ - "action":{ - "description":"Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.", - "enum":[ + "example": "mission_plan", + "type": "string" + }, + "plan": { + "items": { + "properties": { + "action": { + "description": "Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.", + "enum": [ "move", "payload", "dive", @@ -138,275 +199,279 @@ "stop_mission", "abort_now" ], - "example":"move", - "type":"string" + "example": "move", + "type": "string" }, - "activate_payload":{ - "description":"To activate/deactivate sensor for Autosub Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`", - "example":true, - "type":"boolean" + "activate_payload": { + "description": "To activate/deactivate sensor for Autosub Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`", + "example": true, + "type": "boolean" }, - "altitude":{ - "description":"Altitude of next action", - "example":15.0, - "format":"float", - "type":"number" + "altitude": { + "description": "Altitude of next action", + "example": 15.0, + "format": "float", + "type": "number" }, - "depth":{ - "description":"Depth of next action", - "example":15.0, - "format":"float", - "type":"number" + "depth": { + "description": "Depth of next action", + "example": 15.0, + "format": "float", + "type": "number" }, - "start_point_latitude":{ - "description":"Start point, y-coordinate", - "example":50.37072283932642, - "format":"float", - "type":"number" + "start_point_latitude": { + "description": "Start point, y-coordinate", + "example": 50.37072283932642, + "format": "float", + "type": "number" }, - "start_point_longitude":{ - "description":"Start point, x-coordinate", - "example":-4.187143188645706, - "format":"float", - "type":"number" + "start_point_longitude": { + "description": "Start point, x-coordinate", + "example": -4.187143188645706, + "format": "float", + "type": "number" }, - "target_waypoint_latitude":{ - "description":"Target waypoint, y-coordinate", - "example":50.37072283932642, - "format":"float", - "type":"number" + "target_waypoint_latitude": { + "description": "Target waypoint, y-coordinate", + "example": 50.37072283932642, + "format": "float", + "type": "number" }, - "target_waypoint_longitude":{ - "description":"Target waypoint, x-coordinate", - "example":-4.187143188645706, - "format":"float", - "type":"number" + "target_waypoint_longitude": { + "description": "Target waypoint, x-coordinate", + "example": -4.187143188645706, + "format": "float", + "type": "number" }, - "timeout":{ - "description":"Timeout set to perform action", - "example":1800.0, - "format":"float", - "type":"number" + "timeout": { + "description": "Timeout set to perform action", + "example": 1800.0, + "format": "float", + "type": "number" } }, - "required":[ + "required": [ "target_waypoint_latitude", "target_waypoint_longitude" ], - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" } }, - "required":[ + "required": [ "message_type", "autonomy_engine_plan_ID", "platform_ID", "plan" ], - "type":"object" + "type": "object" }, - "mission_plan_encoded":{ - "properties":{ - "data":{ - "description":"encoded string. E.g. Base64 encoded", - "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", - "type":"string" - }, - "file_name":{ - "description":"Name of file", - "example":"ah1-0238126349247372.bin", - "type":"string" - }, - "is_binary":{ - "description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", - "example":true, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "mission_plan_encoded": { + "properties": { + "data": { + "description": "encoded string. E.g. Base64 encoded", + "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", + "type": "string" + }, + "file_name": { + "description": "Name of file", + "example": "ah1-0238126349247372.bin", + "type": "string" + }, + "is_binary": { + "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", + "example": true, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "mission_plan_encoded" ], - "example":"mission_plan_encoded", - "type":"string" + "example": "mission_plan_encoded", + "type": "string" }, - "mime_type":{ - "description":"MIME type", - "example":"application/gzip", - "type":"string" + "mime_type": { + "description": "MIME type", + "example": "application/gzip", + "type": "string" } }, - "required":[ + "required": [ "data", "is_binary" ], - "type":"object" + "type": "object" }, - "observation":{ - "properties":{ - "additional_data":{ - "description":"Placeholder field for any additional data", - "example":{ - "sensor_payload":false + "observation": { + "properties": { + "additional_data": { + "description": "Placeholder field for any additional data", + "example": { + "sensor_payload": false } }, - "message_type":{ - "description":"Type of message", - "enum":[ + "message_type": { + "description": "Type of message", + "enum": [ "observation" ], - "example":"observation", - "type":"string" - }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" - }, - "points_of_interest":{ - "description":"Points from features of interest identified by platform if any found.", - "items":{ - "properties":{ - "latitude":{ - "description":"Identified y-coordinate of point of interest", - "example":178.2, - "format":"float", - "type":"number" + "example": "observation", + "type": "string" + }, + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" + }, + "points_of_interest": { + "description": "Points from features of interest identified by platform if any found.", + "items": { + "properties": { + "latitude": { + "description": "Identified y-coordinate of point of interest", + "example": 178.2, + "format": "float", + "type": "number" }, - "longitude":{ - "description":"Identified x-coordinate of point of interest", - "example":-10.122, - "format":"float", - "type":"number" + "longitude": { + "description": "Identified x-coordinate of point of interest", + "example": -10.122, + "format": "float", + "type": "number" }, - "quality_of_point":{ - "description":"Quality/strength of points from features of interest identified by platform.", - "example":0.98, - "format":"float", - "type":"number" + "quality_of_point": { + "description": "Quality/strength of points from features of interest identified by platform.", + "example": 0.98, + "format": "float", + "type": "number" } }, - "required":[ + "required": [ "latitude", "longitude" ], - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" }, - "region_surveyed":{ - "description":"Region surveyed by given platform. GEOJSON", - "example":"", - "nullable":true + "region_surveyed": { + "description": "Region surveyed by given platform. GEOJSON", + "example": "", + "nullable": true } }, - "required":[ + "required": [ "message_type", "platform_ID" ], - "type":"object" + "type": "object" }, - "observation_encoded":{ - "properties":{ - "data":{ - "description":"encoded string. E.g. Base64 encoded", - "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", - "type":"string" - }, - "file_name":{ - "description":"Name of file", - "example":"ah1-0238126349247372.bin", - "type":"string" - }, - "is_binary":{ - "description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", - "example":true, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "observation_encoded": { + "properties": { + "data": { + "description": "encoded string. E.g. Base64 encoded", + "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", + "type": "string" + }, + "file_name": { + "description": "Name of file", + "example": "ah1-0238126349247372.bin", + "type": "string" + }, + "is_binary": { + "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", + "example": true, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "observation_encoded" ], - "example":"observation_encoded", - "type":"string" + "example": "observation_encoded", + "type": "string" }, - "mime_type":{ - "description":"MIME type", - "example":"application/gzip", - "type":"string" + "mime_type": { + "description": "MIME type", + "example": "application/gzip", + "type": "string" } }, - "required":[ + "required": [ "data", "is_binary" ], - "type":"object" + "type": "object" }, - "payload":{ - "discriminator":{ - "mapping":{ - "acknowledgement":"#/components/schemas/acknowledgement", - "mission_plan":"#/components/schemas/mission_plan", - "mission_plan_encoded":"#/components/schemas/mission_plan_encoded", - "observation":"#/components/schemas/observation", - "observation_encoded":"#/components/schemas/observation_encoded", - "planning_configuration":"#/components/schemas/planning_configuration", - "platform_status":"#/components/schemas/platform_status", - "platform_status_encoded":"#/components/schemas/platform_status_encoded", - "survey":"#/components/schemas/survey", - "survey_encoded":"#/components/schemas/survey_encoded" - }, - "propertyName":"message_type" + "payload": { + "discriminator": { + "mapping": { + "acknowledgement": "#/components/schemas/acknowledgement", + "alert": "#/components/schemas/alert", + "mission_plan": "#/components/schemas/mission_plan", + "mission_plan_encoded": "#/components/schemas/mission_plan_encoded", + "observation": "#/components/schemas/observation", + "observation_encoded": "#/components/schemas/observation_encoded", + "planning_configuration": "#/components/schemas/planning_configuration", + "platform_status": "#/components/schemas/platform_status", + "platform_status_encoded": "#/components/schemas/platform_status_encoded", + "survey": "#/components/schemas/survey", + "survey_encoded": "#/components/schemas/survey_encoded" + }, + "propertyName": "message_type" }, - "oneOf":[ + "oneOf": [ { - "$ref":"#/components/schemas/acknowledgement" + "$ref": "#/components/schemas/alert" }, { - "$ref":"#/components/schemas/mission_plan" + "$ref": "#/components/schemas/acknowledgement" }, { - "$ref":"#/components/schemas/mission_plan_encoded" + "$ref": "#/components/schemas/mission_plan" }, { - "$ref":"#/components/schemas/observation" + "$ref": "#/components/schemas/mission_plan_encoded" }, { - "$ref":"#/components/schemas/observation_encoded" + "$ref": "#/components/schemas/observation" }, { - "$ref":"#/components/schemas/planning_configuration" + "$ref": "#/components/schemas/observation_encoded" }, { - "$ref":"#/components/schemas/platform_status" + "$ref": "#/components/schemas/planning_configuration" }, { - "$ref":"#/components/schemas/platform_status_encoded" + "$ref": "#/components/schemas/platform_status" }, { - "$ref":"#/components/schemas/survey" + "$ref": "#/components/schemas/platform_status_encoded" }, { - "$ref":"#/components/schemas/survey_encoded" + "$ref": "#/components/schemas/survey" + }, + { + "$ref": "#/components/schemas/survey_encoded" } ] }, - "planning_configuration":{ - "properties":{ - "exclusion_zones":{ - "description":"Exclusion zones for all platforms", - "items":{ - "description":"Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)", - "properties":{ - "geometry_coordinates":{ - "example":[ + "planning_configuration": { + "properties": { + "exclusion_zones": { + "description": "Exclusion zones for all platforms", + "items": { + "description": "Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)", + "properties": { + "geometry_coordinates": { + "example": [ [ [ -4.1777839187560915, @@ -430,33 +495,33 @@ ] ] ], - "type":"array" + "type": "array" } }, - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" }, - "message_type":{ - "description":"Type of message", - "enum":[ + "message_type": { + "description": "Type of message", + "enum": [ "planning_configuration" ], - "example":"planning_configuration", - "type":"string" - }, - "planning_config_ID":{ - "description":"Unique identifier tagged to version of this configuration plan", - "example":3, - "type":"integer" - }, - "region_of_interest":{ - "description":"Region of interest for the entire operation", - "items":{ - "description":"Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)", - "properties":{ - "geometry_coordinates":{ - "example":[ + "example": "planning_configuration", + "type": "string" + }, + "planning_config_ID": { + "description": "Unique identifier tagged to version of this configuration plan", + "example": 3, + "type": "integer" + }, + "region_of_interest": { + "description": "Region of interest for the entire operation", + "items": { + "description": "Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)", + "properties": { + "geometry_coordinates": { + "example": [ [ [ -4.1777839187560915, @@ -480,406 +545,430 @@ ] ] ], - "type":"array" + "type": "array" } }, - "type":"object" + "type": "object" }, - "type":"array" - }, - "squads":{ - "items":{ - "properties":{ - "no_of_platforms":{ - "description":"Number of platforms", - "example":3, - "type":"integer" + "type": "array" + }, + "squads": { + "items": { + "properties": { + "no_of_platforms": { + "description": "Number of platforms", + "example": 3, + "type": "integer" }, - "platforms":{ - "description":"Squad consists of these platforms", - "items":{ - "properties":{ - "active":{ - "description":"If platform is active = True, and inactive = False", - "example":true, - "type":"boolean" + "platforms": { + "description": "Squad consists of these platforms", + "items": { + "properties": { + "active": { + "description": "If platform is active = True, and inactive = False", + "example": true, + "type": "boolean" }, - "additional_data":{ - "description":"Any addition fields/data to be added here", - "example":{ - "new_sensor_a":"test_sensor", - "range":10.0 + "additional_data": { + "description": "Any addition fields/data to be added here", + "example": { + "new_sensor_a": "test_sensor", + "range": 10.0 }, - "type":"object" + "type": "object" }, - "beacon_ID":{ - "description":"Unique identifier (number) for the beacon associated to this platform", - "example":2407, - "type":"number" + "beacon_ID": { + "description": "Unique identifier (number) for the beacon associated to this platform", + "example": 2407, + "type": "number" }, - "emergency":{ - "properties":{ - "safe_command":{ - "description":"Command/Action that is native to respective partner's platform/C2", - "enum":[ + "emergency": { + "properties": { + "safe_command": { + "description": "Command/Action that is native to respective partner's platform/C2", + "enum": [ "go_home", "abort_now", "stop_now", "surface_now" ], - "example":"go_home", - "type":"string" + "example": "go_home", + "type": "string" }, - "target_depth":{ - "description":"Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`", - "example":10.0, - "format":"float", - "type":"number" + "target_depth": { + "description": "Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`", + "example": 10.0, + "format": "float", + "type": "number" }, - "target_waypoint_latitude":{ - "description":"Y-coordinate safe place for respective platform", - "example":50.365, - "format":"float", - "type":"number" + "target_waypoint_latitude": { + "description": "Y-coordinate safe place for respective platform", + "example": 50.365, + "format": "float", + "type": "number" }, - "target_waypoint_longitude":{ - "description":"X-coordinate safe place for respective platform", - "example":-7.432, - "format":"float", - "type":"number" + "target_waypoint_longitude": { + "description": "X-coordinate safe place for respective platform", + "example": -7.432, + "format": "float", + "type": "number" } }, - "required":[ + "required": [ "target_waypoint_latitude", "target_waypoint_longitude", "target_depth" ], - "type":"object" + "type": "object" }, - "endurance_relative_to_water_speed":{ - "properties":{ - "avg_battery_rating":{ - "description":"Battery endurance rating during standard operational speed usage (m/s)", - "example":1.9, - "format":"float", - "type":"number" + "endurance_relative_to_water_speed": { + "properties": { + "avg_battery_rating": { + "description": "Battery endurance rating during standard operational speed usage (m/s)", + "example": 1.9, + "format": "float", + "type": "number" }, - "max_battery_rating":{ - "description":"Battery endurance rating during maximum speed usage (m/s)", - "example":1.23, - "format":"float", - "type":"number" + "max_battery_rating": { + "description": "Battery endurance rating during maximum speed usage (m/s)", + "example": 1.23, + "format": "float", + "type": "number" }, - "min_battery_rating":{ - "description":"Battery endurance rating during maximum speed usage (m/s)", - "example":3.32, - "format":"float", - "type":"number" + "min_battery_rating": { + "description": "Battery endurance rating during maximum speed usage (m/s)", + "example": 3.32, + "format": "float", + "type": "number" } }, - "type":"object" + "type": "object" }, - "max_velocity":{ - "description":"Maximum velocity set for platform", - "example":0.9, - "format":"float", - "type":"number" + "max_velocity": { + "description": "Maximum velocity set for platform", + "example": 0.9, + "format": "float", + "type": "number" }, - "min_altitude":{ - "description":"Minimum altitude set for platform", - "example":15.2, - "format":"float", - "type":"number" + "min_altitude": { + "description": "Minimum altitude set for platform", + "example": 15.2, + "format": "float", + "type": "number" }, - "min_velocity":{ - "description":"Minimum velocity set for platform", - "example":0.1, - "format":"float", - "type":"number" + "min_velocity": { + "description": "Minimum velocity set for platform", + "example": 0.1, + "format": "float", + "type": "number" }, - "model":{ - "example":"reav", - "type":"string" + "model": { + "example": "reav", + "type": "string" }, - "operator":{ - "description":"Operator of platform", - "example":"noc", - "type":"string" + "operator": { + "description": "Operator of platform", + "example": "noc", + "type": "string" }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" }, - "scan_sensor":{ - "properties":{ - "angle":{ - "description":"Angle of range of swath width (in degrees)", - "example":140.0, - "format":"float", - "type":"number" + "scan_sensor": { + "properties": { + "angle": { + "description": "Angle of range of swath width (in degrees)", + "example": 140.0, + "format": "float", + "type": "number" }, - "frequency":{ - "description":"Frequency of scanning sensor (in kHz)", - "example":700.0, - "format":"float", - "type":"number" + "frequency": { + "description": "Frequency of scanning sensor (in kHz)", + "example": 700.0, + "format": "float", + "type": "number" }, - "sensor_type":{ - "description":"Unique identifier for this platform", - "enum":[ + "sensor_type": { + "description": "Unique identifier for this platform", + "enum": [ "SIDESCAN", "MBES" ], - "example":"MBES", - "type":"string" + "example": "MBES", + "type": "string" }, - "swath_width":{ - "description":"Function of `target_altitude` for the platform's swath width (in metres)", - "example":38.0, - "format":"float", - "type":"number" + "swath_width": { + "description": "Function of `target_altitude` for the platform's swath width (in metres)", + "example": 38.0, + "format": "float", + "type": "number" }, - "warmup_time":{ - "description":"Warmup time (seconds) for sensor to start up.", - "example":180.0, - "format":"float", - "type":"number" + "warmup_time": { + "description": "Warmup time (seconds) for sensor to start up.", + "example": 180.0, + "format": "float", + "type": "number" } }, - "type":"object" + "type": "object" }, - "target_altitude":{ - "description":"Target altitude set for platform. This affects swath width", - "example":15.0, - "format":"float", - "type":"number" + "target_altitude": { + "description": "Target altitude set for platform. This affects swath width", + "example": 15.0, + "format": "float", + "type": "number" }, - "turning_radius":{ - "description":"Turning radius of platform (in metres)", - "example":1.0, - "format":"float", - "type":"number" + "turning_radius": { + "description": "Turning radius of platform (in metres)", + "example": 1.0, + "format": "float", + "type": "number" } }, - "required":[ + "required": [ "operator", "platform_ID", "active", "model" ], - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" }, - "squad_ID":{ - "description":"Identifier of given squad", - "example":23, - "type":"integer" + "squad_ID": { + "description": "Identifier of given squad", + "example": 23, + "type": "integer" }, - "squad_mission_type":{ - "description":"Mission of given squad: `tracking`, `survey`, `inspection`", - "enum":[ + "squad_mission_type": { + "description": "Mission of given squad: `tracking`, `survey`, `inspection`", + "enum": [ "tracking", "survey", "inspection" ], - "example":"survey", - "type":"string" + "example": "survey", + "type": "string" } }, - "required":[ + "required": [ "squad_ID", "no_of_platforms", "platforms", "squad_mission_type" ], - "type":"object" + "type": "object" }, - "type":"array" + "type": "array" } }, - "required":[ + "required": [ "message_type", "planning_config_ID", "squads", "exclusion_zones", "region_of_interest" ], - "type":"object" + "type": "object" }, - "platform_status":{ - "properties":{ - "altitude":{ - "description":"Target altitude in metres", - "example":20.0, - "format":"float", - "type":"number" - }, - "autonomy_engine_plan_ID":{ - "description":"Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", - "example":1, - "type":"integer" - }, - "battery_remaining_capacity":{ - "description":"Battery remaining % provided by respective C2", - "example":80.2, - "format":"float", - "type":"number" - }, - "depth":{ - "default":0.0, - "description":"Target depth in metres", - "example":50.0, - "format":"float", - "type":"number" - }, - "heading":{ - "description":"Angular distance relative to north, usually 000\u00b0 at north, clockwise through 359\u00b0, in degrees", - "example":124.3, - "format":"float", - "type":"number" - }, - "health_status":{ - "description":"Health status where 0 is OK, 1 is platform has an ERROR", - "example":false, - "type":"boolean" - }, - "latitude":{ - "description":"Latitude (Y-coordinate) in decimal degrees.", - "example":178.2, - "format":"float", - "type":"number" - }, - "localisation_east_error":{ - "description":"Difference in EAST between deadreckoningand USBL update.", - "example":0.000129, - "format":"float", - "type":"number" - }, - "localisation_north_error":{ - "description":"Difference in NORTH between deadreckoning and USBL update.", - "example":0.000129, - "format":"float", - "type":"number" - }, - "longitude":{ - "description":"Longitude (X-coordinate) in decimal degrees.", - "example":-10.122, - "format":"float", - "type":"number" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "platform_status": { + "properties": { + "altitude": { + "description": "Target altitude in metres", + "example": 20.0, + "format": "float", + "type": "number" + }, + "autonomy_engine_plan_ID": { + "description": "Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", + "example": 1, + "type": "integer" + }, + "battery_output": { + "description": "Battery output in kW", + "example": 80.2, + "format": "float", + "type": "number" + }, + "battery_remaining_capacity": { + "description": "Battery remaining % provided by respective C2", + "example": 80.2, + "format": "float", + "type": "number" + }, + "depth": { + "default": 0.0, + "description": "Target depth in metres", + "example": 50.0, + "format": "float", + "type": "number" + }, + "endurance": { + "description": "Estimate of hours of operation remaining based on present output or performance", + "example": 7.4, + "format": "float", + "type": "number" + }, + "fuel_remaining_capacity": { + "description": "Percentage remaining capacity", + "example": 80.2, + "format": "float", + "type": "number" + }, + "fuel_volume": { + "description": "Litres of liquid fuel", + "example": 12.5, + "format": "float", + "type": "number" + }, + "heading": { + "description": "Angular distance relative to north, usually 000\u00b0 at north, clockwise through 359\u00b0, in degrees", + "example": 124.3, + "format": "float", + "type": "number" + }, + "health_status": { + "description": "Health status where 0 is OK, 1 is platform has an ERROR", + "example": false, + "type": "boolean" + }, + "latitude": { + "description": "Latitude (Y-coordinate) in decimal degrees.", + "example": 178.2, + "format": "float", + "type": "number" + }, + "localisation_east_error": { + "description": "Difference in EAST between deadreckoningand USBL update.", + "example": 0.000129, + "format": "float", + "type": "number" + }, + "localisation_north_error": { + "description": "Difference in NORTH between deadreckoning and USBL update.", + "example": 0.000129, + "format": "float", + "type": "number" + }, + "longitude": { + "description": "Longitude (X-coordinate) in decimal degrees.", + "example": -10.122, + "format": "float", + "type": "number" + }, + "message_type": { + "description": "Type of message", + "enum": [ "platform_status" ], - "example":"platform_status", - "type":"string" - }, - "mission_plan_ID":{ - "description":"Mission plan ID according to platform-C2 system", - "example":1, - "type":"integer" - }, - "mission_track_ID":{ - "description":"Track number - stage in mission (e.g. 4 --> Waypoint 3 to Waypoint 4)", - "example":4, - "type":"integer" - }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"reav-x-1", - "type":"string" - }, - "platform_state":{ - "description":"Current state executed by platform. E.g. STOP, IDLE, ABORT.", - "example":"ABORT", - "type":"string" - }, - "platform_timestamp":{ - "description":"Timestamp for onboard platform status message", - "example":"2022-12-21T00:00:00Z", - "format":"date-time", - "type":"string" - }, - "range_to_go":{ - "description":"Estimated distance to reach next waypoint", - "example":124.3, - "format":"float", - "type":"number" - }, - "sensor_config":{ - "description":"Scanning sensor on platform available to be controlled by the Autonomy Engine", - "properties":{ - "additional_data":{ - "description":"Any addition fields/data to be added here", - "example":{ - "payload":[ + "example": "platform_status", + "type": "string" + }, + "mission_plan_ID": { + "description": "Mission plan ID according to platform-C2 system", + "example": 1, + "type": "integer" + }, + "mission_track_ID": { + "description": "Track number - stage in mission (e.g. 4 --> Waypoint 3 to Waypoint 4)", + "example": 4, + "type": "integer" + }, + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "reav-x-1", + "type": "string" + }, + "platform_state": { + "description": "Current state executed by platform. E.g. STOP, IDLE, ABORT.", + "example": "ABORT", + "type": "string" + }, + "platform_timestamp": { + "description": "Timestamp for onboard platform status message", + "example": "2022-12-21T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "range_to_go": { + "description": "Estimated distance to reach next waypoint", + "example": 124.3, + "format": "float", + "type": "number" + }, + "sensor_config": { + "description": "Scanning sensor on platform available to be controlled by the Autonomy Engine", + "properties": { + "additional_data": { + "description": "Any addition fields/data to be added here", + "example": { + "payload": [ 1.2, 434 ] }, - "type":"object" + "type": "object" }, - "sensor_on":{ - "description":"Sensor switched on (true) or off (false)", - "example":true, - "type":"boolean" + "sensor_on": { + "description": "Sensor switched on (true) or off (false)", + "example": true, + "type": "boolean" }, - "sensor_serial":{ - "description":"serial number of sensor", - "example":"mbes-002a", - "type":"string" + "sensor_serial": { + "description": "serial number of sensor", + "example": "mbes-002a", + "type": "string" } }, - "type":"object" + "type": "object" }, - "speed_over_ground":{ - "description":"Speed over ground", - "example":124.3, - "format":"float", - "type":"number" + "speed_over_ground": { + "description": "Speed over ground", + "example": 124.3, + "format": "float", + "type": "number" }, - "status_source":{ - "description":"Indicate if this status message is from the platform or USBL", - "enum":[ + "status_source": { + "description": "Indicate if this status message is from the platform or USBL", + "enum": [ "usbl", "onboard_platform" ], - "example":"usbl", - "type":"string" - }, - "thrust_applied":{ - "description":"Thrust applied", - "example":124.3, - "format":"float", - "type":"number" - }, - "transmission_mode":{ - "description":"Mode in which status message was transmitted when on the surface (e.g. iridium/wifi) or underwater (e.g. acoustics)", - "enum":[ + "example": "usbl", + "type": "string" + }, + "thrust_applied": { + "description": "Thrust applied", + "example": 124.3, + "format": "float", + "type": "number" + }, + "transmission_mode": { + "description": "Mode in which status message was transmitted when on the surface (e.g. iridium/wifi) or underwater (e.g. acoustics)", + "enum": [ "acoustics", "iridium", "wifi", "starlink" ], - "example":"wifi", - "type":"string" - }, - "usbl_fix_seconds_ago":{ - "description":"USBL Fix received x second ago.", - "example":10.0, - "format":"float", - "type":"number" - }, - "water_current_velocity":{ - "description":"Water current magnitude and direction", - "example":"124.3NE", - "type":"string" + "example": "wifi", + "type": "string" + }, + "usbl_fix_seconds_ago": { + "description": "USBL Fix received x second ago.", + "example": 10.0, + "format": "float", + "type": "number" + }, + "water_current_velocity": { + "description": "Water current magnitude and direction", + "example": "124.3NE", + "type": "string" } }, - "required":[ + "required": [ "message_type", "platform_ID", "status_source", @@ -887,179 +976,186 @@ "latitude", "longitude" ], - "type":"object" + "type": "object" }, - "platform_status_encoded":{ - "properties":{ - "data":{ - "description":"encoded string. E.g. Base64 encoded", - "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", - "type":"string" - }, - "file_name":{ - "description":"Name of file", - "example":"ah1-0238126349247372.bin", - "type":"string" - }, - "is_binary":{ - "description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", - "example":true, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "platform_status_encoded": { + "properties": { + "data": { + "description": "encoded string. E.g. Base64 encoded", + "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", + "type": "string" + }, + "file_name": { + "description": "Name of file", + "example": "ah1-0238126349247372.bin", + "type": "string" + }, + "is_binary": { + "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", + "example": true, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "platform_status_encoded" ], - "example":"platform_status_encoded", - "type":"string" + "example": "platform_status_encoded", + "type": "string" }, - "mime_type":{ - "description":"MIME type", - "example":"application/gzip", - "type":"string" + "mime_type": { + "description": "MIME type", + "example": "application/gzip", + "type": "string" } }, - "required":[ + "required": [ "data", "is_binary" ], - "type":"object" + "type": "object" }, - "survey":{ - "properties":{ - "latitude_A":{ - "description":"Latitude of point A(intersection of normal)from waypoint A to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "latitude_B":{ - "description":"Latitude of point B(intersection of normal)from waypoint B to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "latitude_C":{ - "description":"Latitude of point C(intersection of normal)from waypoint C to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "latitude_D":{ - "description":"Latitude of point D(intersection of normal)from waypoint D to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "latitude_E":{ - "description":"Latitude of point E(intersection of normal)from waypoint E to survey line", - "example":178.2, - "format":"float", - "type":"number" - }, - "longitude_A":{ - "description":"Longitude of point A(intersection of normal)from waypoint A to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "longitude_B":{ - "description":"Longitude of point B(intersection of normal)from waypoint B to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "longitude_C":{ - "description":"Longitude of point C(intersection of normal)from waypoint C to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "longitude_D":{ - "description":"Longitude of point D(intersection of normal)from waypoint D to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "longitude_E":{ - "description":"Longitude of point E(intersection of normal)from waypoint E to survey line", - "example":-10.122, - "format":"float", - "type":"number" - }, - "platform_ID":{ - "description":"Unique identifier for this platform", - "example":"ecosub-2", - "type":"string" - }, - "timestamp":{ - "description":"Timestamp for onboard message", - "example":"2022-12-21T00:00:00Z", - "format":"date-time", - "type":"string" - }, - "track_ID":{ - "description":"Track number of action(s) currently executed by platform", - "example":1, - "type":"integer" + "survey": { + "properties": { + "latitude_A": { + "description": "Latitude of point A(intersection of normal)from waypoint A to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "latitude_B": { + "description": "Latitude of point B(intersection of normal)from waypoint B to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "latitude_C": { + "description": "Latitude of point C(intersection of normal)from waypoint C to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "latitude_D": { + "description": "Latitude of point D(intersection of normal)from waypoint D to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "latitude_E": { + "description": "Latitude of point E(intersection of normal)from waypoint E to survey line", + "example": 178.2, + "format": "float", + "type": "number" + }, + "longitude_A": { + "description": "Longitude of point A(intersection of normal)from waypoint A to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "longitude_B": { + "description": "Longitude of point B(intersection of normal)from waypoint B to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "longitude_C": { + "description": "Longitude of point C(intersection of normal)from waypoint C to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "longitude_D": { + "description": "Longitude of point D(intersection of normal)from waypoint D to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "longitude_E": { + "description": "Longitude of point E(intersection of normal)from waypoint E to survey line", + "example": -10.122, + "format": "float", + "type": "number" + }, + "message_type": { + "description": "Type of message", + "enum": [ + "survey" + ], + "example": "survey", + "type": "string" + }, + "platform_ID": { + "description": "Unique identifier for this platform", + "example": "ecosub-2", + "type": "string" + }, + "timestamp": { + "description": "Timestamp for onboard message", + "example": "2022-12-21T00:00:00Z", + "format": "date-time", + "type": "string" + }, + "track_ID": { + "description": "Track number of action(s) currently executed by platform", + "example": 1, + "type": "integer" } }, - "required":[ + "required": [ "latitude_A", "longitude_A", "latitude_B", "longitude_B", "platform_ID" ], - "type":"object" + "type": "object" }, - "survey_encoded":{ - "properties":{ - "data":{ - "description":"encoded string. E.g. Base64 encoded", - "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", - "type":"string" - }, - "file_name":{ - "description":"Name of file", - "example":"ah1-0238126349247372.bin", - "type":"string" - }, - "is_binary":{ - "description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", - "example":true, - "type":"boolean" - }, - "message_type":{ - "description":"Type of message", - "enum":[ + "survey_encoded": { + "properties": { + "data": { + "description": "encoded string. E.g. Base64 encoded", + "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", + "type": "string" + }, + "file_name": { + "description": "Name of file", + "example": "ah1-0238126349247372.bin", + "type": "string" + }, + "is_binary": { + "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", + "example": true, + "type": "boolean" + }, + "message_type": { + "description": "Type of message", + "enum": [ "survey_encoded" ], - "example":"survey_encoded", - "type":"string" + "example": "survey_encoded", + "type": "string" }, - "mime_type":{ - "description":"MIME type", - "example":"application/gzip", - "type":"string" + "mime_type": { + "description": "MIME type", + "example": "application/gzip", + "type": "string" } }, - "required":[ + "required": [ "data", "is_binary" ], - "type":"object" + "type": "object" } } }, - "info":{ - "description":"SoAR message protocol in schemas", - "title":"SoAR Backbone Message Formats", - "version":"1.0" + "definitions": {}, + "info": { + "description": "SoAR message protocol in schemas", + "title": "SoAR Backbone Message Formats", + "version": "1.0" }, - "openapi":"3.0.2", - "paths":{ - - } + "openapi": "3.0.2", + "paths": {} } \ No newline at end of file