From 925814a7b330b84e8e060088b43c47c060fe39c6 Mon Sep 17 00:00:00 2001
From: Trishna Saeharaseelan <trishna.saeharaseelan@noc.ac.uk>
Date: Fri, 3 Mar 2023 11:47:30 +0000
Subject: [PATCH] fix: projects to project

---
 __init__.py                 |   2 +-
 project/__init__.py         |   0
 project/soar/SOAR_README.md |  51 +++
 project/soar/swagger.json   | 697 ++++++++++++++++++++++++++++++++++++
 tests/test_schemas.py       |   2 +-
 5 files changed, 750 insertions(+), 2 deletions(-)
 create mode 100644 project/__init__.py
 create mode 100644 project/soar/SOAR_README.md
 create mode 100644 project/soar/swagger.json

diff --git a/__init__.py b/__init__.py
index 41054da..69f9fe8 100644
--- a/__init__.py
+++ b/__init__.py
@@ -5,7 +5,7 @@ from flask import Flask
 __all__ = [
     "formats",
     "examples",
-    "projects",
+    "project",
     "tests",
 ]
 app = Flask(__name__)
diff --git a/project/__init__.py b/project/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/project/soar/SOAR_README.md b/project/soar/SOAR_README.md
new file mode 100644
index 0000000..74338d8
--- /dev/null
+++ b/project/soar/SOAR_README.md
@@ -0,0 +1,51 @@
+# SoAR Project
+Squad of Adaptive Robots Project
+
+-----------------------------------
+## Message Data Flow Summary
+| Partner               | Message Type             | Source                | Destination                                | Via Comms Backbone? | Contains Serialized Vehicle-Specific File? | Comment                                                                                  |
+| --------------------- | ------------------------ | --------------------- | ------------------------------------------ | ------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------------- |
+| Hydrosurv (reav)      | platform status-compiled | Reav-60               | Hydrosurv Adapter                          | No                  | Yes                                        | N/A                                                                                      |
+| Hydrosurv (reav)      | platform status          | Hydrosurv Adapter     | Autonomy Engine                            | Yes                 | No                                         | N/A                                                                                      |
+| Hydrosurv (reav)      | mission plan             | Autonomy Engine       | Hydrosurv Adapter                          | Yes                 | No                                         | N/A                                                                                      |
+| Hydrosurv (reav)      | mission plan-compiled    | Hydrosurv Adapter     | Reav-60                                    | No                  | Yes                                        | N/A                                                                                      |
+| Hydrosurv (reav)      | acknowledgement          | Hydrosurv Adapter     | Comms Backbone (Audit)                     | Yes                 | No                                         | When hydrosurv adapter has (a) Received, (b) Sent Plan to Reav, and (c) Executed by Reav |
+| RHU (autonomy engine) | platform status          | C2’s Hydrosurv/Ecosub | Autonomy Engine                            | Yes                 | No                                         | N/A                                                                                      |
+| RHU (autonomy engine) | mission plan             | Autonomy Engine       | C2’s Hydrosurv/Ecosub                      | Yes                 | No                                         | N/A                                                                                      |
+| RHU (autonomy engine) | planning configuration   | GUI                   | Autonomy Engine                            | Yes                 | No                                         | N/A                                                                                      |
+| RHU (autonomy engine) | observation              | Ecosub C2             | Autonomy Engine                            | Yes                 | No                                         | N/A                                                                                      |
+| RHU (autonomy engine) | survey progress          | Ecosub/AH1 C2         | Autonomy Engine                            | TBD                 | TBD                                        | N/A                                                                                      |
+| RHU (autonomy engine) | scanline                 | TBD                   | TBD                                        | TBD                 | TBD                                        | N/A                                                                                      |
+| RHU (autonomy engine) | emergency                | GUI                   | TBD – all                                  | TBD                 | TBD                                        | TBD – all platforms pre-compiled ABORT via Black box                                     |
+| Planet Ocean (ecosub) | platform status-compiled | Ecosub                | Black Box TBC                              | No                  | Yes                                        | Via Hermes + Router                                                                      |
+| Planet Ocean (ecosub) | platform status-compiled | Black Box TBC         | Ecosub C2                                  | Yes                 | Yes                                        | N/A                                                                                      |
+| Planet Ocean (ecosub) | platform status          | Ecosub C2             | Autonomy Engine                            | Yes                 | No                                         | N/A                                                                                      |
+| Planet Ocean (ecosub) | mission plan             | Autonomy Engine       | Ecosub C2                                  | Yes                 | No                                         | N/A                                                                                      |
+| Planet Ocean (ecosub) | mission plan             | Ecosub C2             | Black Box TBC                              | Yes                 | Yes                                        | N/A                                                                                      |
+| Planet Ocean (ecosub) | mission plan-compiled    | Black Box TBC         | Ecosub                                     | No                  | Yes                                        | Via Hermes + Router                                                                      |
+| Planet Ocean (ecosub) | observation-compiled     | Ecosub                | Black Box TBC                              | No                  | Yes                                        | Via Hermes + Router                                                                      |
+| Planet Ocean (ecosub) | observation-compiled     | Black Box TBC         | Ecosub C2                                  | Yes                 | Yes                                        | N/A                                                                                      |
+| Planet Ocean (ecosub) | observation              | Ecosub C2             | Autonomy Engine                            | Yes                 | No                                         | N/A                                                                                      |
+| Planet Ocean (ecosub) | survey progress          | TBD                   | TBD                                        | TBD                 | TBD                                        | N/A                                                                                      |
+| Planet Ocean (ecosub) | survey progress          | TBD                   | TBD                                        | TBD                 | TBD                                        | N/A                                                                                      |
+| Planet Ocean (ecosub) | scanline                 | TBD                   | TBD                                        | TBD                 | TBD                                        | N/A                                                                                      |
+| Planet Ocean (ecosub) | scanline                 | TBD                   | TBD                                        | TBD                 | TBD                                        | N/A                                                                                      |
+| Planet Ocean (ecosub) | emergency                | GUI                   | TBD – Ecosub (ABORT command via Black Box) | TBD                 | TBD                                        | TBD – all platforms pre-compiled ABORT via Black box                                     |
+| NOC (AH1)             | platform status-compiled | AH1                   | Black Box TBC                              | No                  | Yes                                        | Via Hermes + Router                                                                      |
+| NOC (AH1)             | platform status-compiled | Black Box TBC         | NOC C2                                     | Yes                 | Yes                                        | N/A                                                                                      |
+| NOC (AH1)             | platform status          | NOC C2                | Autonomy Engine                            | Yes                 | No                                         | N/A                                                                                      |
+| NOC (AH1)             | scan point               | Autonomy Engine       | NOC C2                                     | Yes                 | No                                         | N/A                                                                                      |
+| NOC (AH1)             | scan point-compiled      | NOC C2                | Black Box TBC                              | Yes                 | Yes                                        | Would this technically be a mission plan-compiled?                                       |
+| NOC (AH1)             | scan point               | Black Box TBC         | Ecosub                                     | No                  | Yes                                        | Via Hermes + Router                                                                      |
+| NOC (AH1)             | survey progress          | TBD                   | TBD                                        | TBD                 | TBD                                        | TBD                                                                                      |
+| NOC (AH1)             | survey progress          | TBD                   | TBD                                        | TBD                 | TBD                                        | TBD                                                                                      |
+| NOC (AH1)             | emergency                | GUI                   | TBD – AH1 (ABORT command via Black Box)    | TBD                 | TBD                                        | TBD – all platforms pre-compiled ABORT via Black box                                     |
+| NOC (GUI)             | planning configuration   | GUI                   | Autonomy Engine                            | Yes                 | No                                         | N/A                                                                                      |
+| NOC (GUI)             | emergency                | GUI                   | TBD                                        | TBD                 | TBD                                        | TBD                                                                                      |
+
+## Run Docs
+1. Run the command below
+```
+python3 generate_swagger.py
+```
+2. Go to `http://127.0.0.1:5000/soardocs/`
diff --git a/project/soar/swagger.json b/project/soar/swagger.json
new file mode 100644
index 0000000..9bdf22a
--- /dev/null
+++ b/project/soar/swagger.json
@@ -0,0 +1,697 @@
+{
+  "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":[
+              "header",
+              "payload"
+           ],
+           "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",
+                 "example":"acknowledgement",
+                 "type":"string"
+              },
+              "platform_ID":{
+                 "description":"Unique identifier for this platform",
+                 "example":"reav-x-1",
+                 "type":"string"
+              }
+           },
+           "required":[
+              "message_type",
+              "autonomy_engine_plan_ID",
+              "platform_ID",
+              "approved"
+           ],
+           "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"
+              }
+           },
+           "type":"object"
+        },
+        "mission_plan":{
+           "properties":{
+              "autonomy_engine_plan_ID":{
+                 "description":"Unique identifier for this plangenerated by the Autonomy Engine",
+                 "example":3,
+                 "type":"integer"
+              },
+              "message_type":{
+                 "description":"Type of message",
+                 "example":"mission_plan",
+                 "type":"string"
+              },
+              "plan":{
+                 "items":{
+                    "properties":{
+                       "action":{
+                          "description":"Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.",
+                          "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"
+                       },
+                       "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"
+                       },
+                       "flight_style":{
+                          "description":"Platform-specific modes/flight styles to perform next action",
+                          "example":"orbit",
+                          "type":"string"
+                       },
+                       "send_environmental_data":{
+                          "description":"To trigger the platform to send list of  observations if any found",
+                          "example":false,
+                          "type":"boolean"
+                       },
+                       "start_point_latitude":{
+                          "description":"Start point, x-coordinate",
+                          "example":-4.187143188645706,
+                          "format":"float",
+                          "type":"number"
+                       },
+                       "start_point_longitude":{
+                          "description":"Start point, y-coordinate",
+                          "example":50.37072283932642,
+                          "format":"float",
+                          "type":"number"
+                       },
+                       "target_waypoint_latitude":{
+                          "description":"Target waypoint, x-coordinate",
+                          "example":-4.187143188645706,
+                          "format":"float",
+                          "type":"number"
+                       },
+                       "target_waypoint_longitude":{
+                          "description":"Target waypoint, y-coordinate",
+                          "example":50.37072283932642,
+                          "format":"float",
+                          "type":"number"
+                       }
+                    },
+                    "required":[
+                       "target_waypoint_latitude",
+                       "target_waypoint_longitude"
+                    ],
+                    "type":"object"
+                 },
+                 "type":"array"
+              },
+              "platform_ID":{
+                 "description":"Unique identifier for this platform",
+                 "example":"reav-x-1",
+                 "type":"string"
+              }
+           },
+           "required":[
+              "message_type",
+              "autonomy_engine_plan_ID",
+              "platform_ID",
+              "plan"
+           ],
+           "type":"object"
+        },
+        "observation":{
+           "properties":{
+              "additional_data":{
+                 "description":"Placeholder field for any additional data",
+                 "example":{
+                    "sensor_payload":false
+                 }
+              },
+              "message_type":{
+                 "description":"Type of message",
+                 "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 x-coordinate of point of interest",
+                          "example":178.2,
+                          "format":"float",
+                          "type":"number"
+                       },
+                       "longitude":{
+                          "description":"Identified y-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"
+                       }
+                    },
+                    "required":[
+                       "latitude",
+                       "longitude"
+                    ],
+                    "type":"object"
+                 },
+                 "type":"array"
+              },
+              "region_surveyed":{
+                 "description":"Region surveyed by given platform. GEOJSON",
+                 "example":"",
+                 "nullable":true
+              }
+           },
+           "required":[
+              "message_type",
+              "platform_ID"
+           ],
+           "type":"object"
+        },
+        "payload":{
+           "discriminator":{
+              "mapping":{
+                 "acknowledgement":"#/components/schemas/acknowledgement",
+                 "mission_plan":"#/components/schemas/mission_plan",
+                 "observation":"#/components/schemas/observation",
+                 "planning_configuration":"#/components/schemas/planning_configuration",
+                 "platform_status":"#/components/schemas/platform_status"
+              },
+              "propertyName":"message_type"
+           },
+           "oneOf":[
+              {
+                 "$ref":"#/components/schemas/acknowledgement"
+              },
+              {
+                 "$ref":"#/components/schemas/mission_plan"
+              },
+              {
+                 "$ref":"#/components/schemas/observation"
+              },
+              {
+                 "$ref":"#/components/schemas/planning_configuration"
+              },
+              {
+                 "$ref":"#/components/schemas/platform_status"
+              }
+           ]
+        },
+        "planning_configuration":{
+           "properties":{
+              "exclusion_zones":{
+                 "description":"Exclusion zones for all platforms",
+                 "items":{
+                    "description":"Using GEOJSON, exact 4-point region (rectangle shaped)",
+                    "properties":{
+                       "geometry_coordinates":{
+                          "example":[
+                             [
+                                [
+                                   -4.187143188645706,
+                                   50.37072283932642
+                                ],
+                                [
+                                   -4.202697005964865,
+                                   50.368816892405874
+                                ],
+                                [
+                                   -4.203156724702808,
+                                   50.365640144076906
+                                ],
+                                [
+                                   -4.19449868846155,
+                                   50.362267670845654
+                                ]
+                             ]
+                          ],
+                          "type":"array"
+                       }
+                    },
+                    "type":"object"
+                 },
+                 "type":"array"
+              },
+              "message_type":{
+                 "description":"Type of message",
+                 "example":"planning_configuration",
+                 "type":"string"
+              },
+              "planning_config_ID":{
+                 "description":"Unique identifier tagged to version of this configuration plan",
+                 "example":3,
+                 "type":"integer"
+              },
+              "squads":{
+                 "items":{
+                    "properties":{
+                       "no_of_platforms":{
+                          "description":"Number of platforms",
+                          "example":3,
+                          "type":"integer"
+                       },
+                       "platforms":{
+                          "description":"Squad consists of these platforms",
+                          "items":{
+                             "properties":{
+                                "additional_specs":{
+                                   "description":"Any addition fields/data to be added here",
+                                   "example":{
+                                      "scan_type":"DVL",
+                                      "swath_width":10.0
+                                   }
+                                },
+                                "emergency":{
+                                   "properties":{
+                                      "additional_data":{
+                                         "description":"Any addition fields/data to be added here",
+                                         "example":{
+                                            
+                                         }
+                                      },
+                                      "safe_command":{
+                                         "description":"Command/Action that is native to respective partner's platform/C2",
+                                         "enum":[
+                                            "go_home",
+                                            "abort_now",
+                                            "stop_mission"
+                                         ],
+                                         "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_waypoint_latitude":{
+                                         "description":"X-coordinate safe place for respective platform",
+                                         "example":-7.432,
+                                         "format":"float",
+                                         "type":"number"
+                                      },
+                                      "target_waypoint_longitude":{
+                                         "description":"Y-coordinate safe place for respective platform",
+                                         "example":50.365,
+                                         "format":"float",
+                                         "type":"number"
+                                      }
+                                   },
+                                   "required":[
+                                      "target_waypoint_latitude",
+                                      "target_waypoint_longitude",
+                                      "target_depth"
+                                   ],
+                                   "type":"object"
+                                },
+                                "max_velocity":{
+                                   "description":"Maximum altitude set for squad.",
+                                   "example":0.9,
+                                   "format":"float",
+                                   "type":"number"
+                                },
+                                "min_altitude":{
+                                   "description":"Minimum altitude set for squad.",
+                                   "example":15.2,
+                                   "format":"float",
+                                   "type":"number"
+                                },
+                                "min_velocity":{
+                                   "description":"Minimum velocity set for squad.",
+                                   "example":0.1,
+                                   "format":"float",
+                                   "type":"number"
+                                },
+                                "model":{
+                                   "example":"reav",
+                                   "type":"string"
+                                },
+                                "platform_ID":{
+                                   "description":"Unique identifier for this platform",
+                                   "example":"reav-x-1",
+                                   "type":"string"
+                                },
+                                "serial":{
+                                   "description":"platform serial number",
+                                   "example":"reav-60",
+                                   "type":"string"
+                                }
+                             },
+                             "required":[
+                                "platform_ID",
+                                "serial",
+                                "model",
+                                "emergency",
+                                "min_altitude",
+                                "min_velocity",
+                                "max_velocity"
+                             ],
+                             "type":"object"
+                          },
+                          "type":"array"
+                       },
+                       "region_of_interest":{
+                          "description":"Using GEOJSON, exact 4-point region (rectangle shaped)",
+                          "properties":{
+                             "geometry_coordinates":{
+                                "example":[
+                                   [
+                                      [
+                                         -4.187143188645706,
+                                         50.37072283932642
+                                      ],
+                                      [
+                                         -4.202697005964865,
+                                         50.368816892405874
+                                      ],
+                                      [
+                                         -4.203156724702808,
+                                         50.365640144076906
+                                      ],
+                                      [
+                                         -4.19449868846155,
+                                         50.362267670845654
+                                      ]
+                                   ]
+                                ],
+                                "type":"array"
+                             }
+                          },
+                          "type":"object"
+                       },
+                       "squad_ID":{
+                          "description":"Identifier of given squad",
+                          "example":23,
+                          "type":"integer"
+                       },
+                       "squad_mission_type":{
+                          "description":"Mission of given squad: `tracking`, `survey`, `inspection`",
+                          "enum":[
+                             "tracking",
+                             "survey",
+                             "inspection"
+                          ],
+                          "example":"survey",
+                          "type":"string"
+                       },
+                       "squad_state":{
+                          "description":"In execution, Waiting.. <define further>",
+                          "example":false,
+                          "type":"string"
+                       }
+                    },
+                    "required":[
+                       "squad_ID",
+                       "no_of_platforms",
+                       "platforms",
+                       "squad_mission_type",
+                       "squad_state"
+                    ],
+                    "type":"object"
+                 },
+                 "type":"array"
+              }
+           },
+           "required":[
+              "message_type",
+              "planning_config_ID",
+              "squads",
+              "exclusion_zones"
+           ],
+           "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 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 in decimal degrees.",
+                 "example":-10.122,
+                 "format":"float",
+                 "type":"number"
+              },
+              "message_type":{
+                 "description":"Type of message",
+                 "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"
+                    },
+                    "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"
+                    }
+                 },
+                 "type":"object"
+              },
+              "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":[
+                    "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":[
+                    "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"
+              }
+           },
+           "required":[
+              "message_type",
+              "platform_ID",
+              "status_source",
+              "platform_timestamp",
+              "latitude",
+              "longitude"
+           ],
+           "type":"object"
+        }
+     }
+  },
+  "info":{
+     "description":"SoAR message protocol in schemas",
+     "title":"SoAR Backbone Message Formats",
+     "version":"1.0"
+  },
+  "openapi":"3.0.2",
+  "paths":{
+     
+  }
+}
\ No newline at end of file
diff --git a/tests/test_schemas.py b/tests/test_schemas.py
index 830525c..2f9d465 100644
--- a/tests/test_schemas.py
+++ b/tests/test_schemas.py
@@ -7,7 +7,7 @@ import json
 import os
 
 
-SCHEMA_DIR = "projects/soar/swagger.json"
+SCHEMA_DIR = "project/soar/swagger.json"
 MOCK_DATA_DIR = "examples/"
 
 
-- 
GitLab