JaiaBot  1.19.0
JaiaBot micro-AUV software
REST API

The Jaia REST API provides a way to query and command a JaiaBot fleet via web URL endpoints. These endpoints are directly generated from the APIRequest Protobuf message for input and APIResponse for output (jaiabot/src/lib/messages/rest_api.proto).

It accepts GET requests for the subset of requests that only have singular (non-repeated) non-recursive (no submessages) data. This is generally suitable for simple requests (e.g. STOP all bots, query status, etc) but not for more complicated MISSION_PLAN type commands.

It also accepts POST for all requests, using JSON (which is required for the more complicated messages).

There are 2 variants of the API:

  • "simple" variant (e.g., https://fleet0.jaia.tech/jaia/v1/status/all) where the action and the target(s) are specified in the url and any data may be passed via GET arguments (subject to limitations mentioned above). This allows for easy testing as the entire request is contained within the URL. (The "simple" version can be used for POST requests as well. Here the POST data (if any) contains the "action" submessage contents. This option is not documented in detail below, but will follow a similar pattern to the "full" variant).
  • "full" variant (e.g., https://fleet0.jaia.tech/jaia/v1) where the entire request is POSTed as a JSON formatted APIRequest Protobuf message.

Table of Contents

  1. REST API
    1. Simple variant (GET) formatting
    2. Full variant (POST) formatting
    3. Request Actions
      1. status
        1. Simple API Syntax (GET)
        2. Full API Syntax (POST)
          1. JSON
        3. Example
          1. Request JSON
          2. Response JSON
      2. metadata
        1. Simple API Syntax (GET)
        2. Full API Syntax (POST)
          1. JSON
        3. Example
          1. Request JSON
          2. Response JSON
      3. task_packets
        1. Parameters
        2. Simple API Syntax (GET)
        3. Full API Syntax (POST)
          1. JSON
        4. Example
          1. Request JSON
          2. Response JSON
      4. command
        1. Simple API Syntax (GET)
          1. Enumerations
        2. Full API Syntax (POST)
          1. JSON
          2. Enumerations
        3. Variant: command_data = plan
          1. JSON
          2. Enumerations
        4. Variant: command_data = rc
          1. JSON
          2. Enumerations
        5. Example
          1. Request JSON
          2. Response JSON
      5. command_for_hub
        1. Simple API Syntax (GET)
          1. Enumerations
        2. Full API Syntax (POST)
          1. JSON
          2. Enumerations
        3. Example
          1. Request JSON
          2. Response JSON
    4. Response Actions
      1. error
        1. Response Syntax
          1. JSON
          2. Enumerations
      2. status
        1. Response Syntax
          1. JSON
          2. Enumerations
      3. metadata
        1. Response Syntax
          1. JSON
      4. task_packets
        1. Response Syntax
          1. JSON
          2. Enumerations
      5. command_result
        1. Response Syntax
          1. JSON

Simple variant (GET) formatting <a id="7f6f3f971450"></a>

The URL expected for the simple variant of the API is:

https://fleet<N>.jaia.tech/jaia/v1/<action>/<target>?api_key=<API_KEY_STRING>&var1=val1&var2=val2

Where:

  • fleet<N> is the fleet to command
  • <action> is one of the specified actions (below)
  • <target> is the target bots and or hubs in the following format:
    • 'all' for all known bots and the hub (if relevant)
    • comma separated list of 'bN' and/or 'hN' where N is the bot/hub ID, e.g., 'b1,b2,b3' would target bots 1-3, or 'h1,b3' would target hub 1 and bot 3
  • api_key is the private shared key to use the API
  • var1 and var2 are variables affecting the action (see action documentation below)
  • val1 and val2 are the values for var1 and var2, respectively.

Full variant (POST) formatting <a id="7f6f3f9713f0"></a>

The URL expected for the full variant of the API is:

https://fleet<N>.jaia.tech/jaia/v1

All data are expected to be sent as a POST request using the JSON formatted version of the APIRequest message as the POST variable 'json'. For example, to request status from all the bots you would POST the following to the above URL, for example using Python to command Fleet0:

#!/usr/bin/env python3
import requests
jaia_request={"target": {"all": True}, "status": True, "api_key": "4vS6s2jnulxVjrKSB-__tQ"}
res = requests.post(f'https://fleet0.jaia.tech/jaia/v1', json=jaia_request)

Key for placeholders:

  • <API_KEY_STRING>: API Key string field
  • <STRING>: String field
  • False: Boolean field
  • {float_dummy}: Floating point field
  • {max_int32}: Int32 field
  • {max_uint32}: UInt32 field
  • {max_int64}: Int64 field
  • {max_uint64}: UInt64 field

See the action documentation below for more details.

Request Actions <a id="7f6f3f972cb0"></a>

status <a id="7f6f3f971e10"></a>

Query the status of bots/hubs. Expect a response of type 'status'.

Simple API Syntax (GET) <a id="7f6f3f9721d0"></a>

https://fleet<N>.jaia.tech/jaia/v1/status/<target>?api_key=<API_KEY_STRING>

Full API Syntax (POST) <a id="7f6f3f9715a0"></a>

JSON <a id="7f6f3f970220"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
],
"all": false
},
"api_key": "<API_KEY_STRING>",
"status": true
}

Example <a id="7f6f3f970130"></a>

Request JSON <a id="7f6f3f971ed0"></a>

{
"api_key": "4vS6s2jnulxVjrKSB-__tQ",
"status": true,
"target": {
"all": true
}
}

Response JSON <a id="7f6f3f970b20"></a>

{
"request": {
"status": true,
"target": {
"all": true
}
},
"status": {
"bots": [
{
"attitude": {
"course_over_ground": 180.0,
"heading": 166.0,
"pitch": 85.0,
"roll": -57.0
},
"battery_percent": 95.0,
"bot_id": 1,
"bot_type": "HYDRO",
"calibration_status": 3,
"depth": 0.0,
"hdop": 0.25,
"health_state": "HEALTH__OK",
"location": {
"lat": 41.657645,
"lon": -71.27212
},
"mission_state": "PRE_DEPLOYMENT__IDLE",
"pdop": 2.07,
"received_time": "1722893284636801",
"salinity": 20.0,
"speed": {
"over_ground": 0.0
},
"temperature": 15.06,
"time": "1722878885000000",
"vcc_voltage": 24.0,
"wifi_link_quality_percentage": 100
},
{
"attitude": {
"course_over_ground": 180.0,
"heading": 166.0,
"pitch": 85.0,
"roll": -57.0
},
"battery_percent": 95.0,
"bot_id": 2,
"bot_type": "HYDRO",
"calibration_status": 3,
"depth": 0.0,
"hdop": 1.03,
"health_state": "HEALTH__OK",
"location": {
"lat": 41.65765,
"lon": -71.27212
},
"mission_state": "PRE_DEPLOYMENT__IDLE",
"pdop": 1.47,
"received_time": "1722893284635458",
"salinity": 20.0,
"speed": {
"over_ground": 0.0
},
"temperature": 15.04,
"time": "1722878885000000",
"vcc_voltage": 24.0,
"wifi_link_quality_percentage": 100
}
],
"hubs": [
{
"bot_ids_in_radio_file": [
1,
2
],
"fleet_id": 0,
"health_state": "HEALTH__OK",
"hub_id": 1,
"known_bot": [
{
"id": 1,
"last_status_time": "1722893284000000"
},
{
"id": 2,
"last_status_time": "1722893285000000"
}
],
"linux_hardware_status": {
"wifi": {
"is_connected": true,
"link_quality": 70,
"link_quality_percentage": 100,
"noise_level": 0,
"signal_level": 33
}
},
"location": {
"lat": 41.66268,
"lon": -71.273018
},
"received_time": "1722893284552504",
"time": "8614394422756020"
}
]
},
"target": {
"bots": [
1,
2
],
"hubs": [
1
]
}
}

metadata <a id="7f6f3f9724a0"></a>

Query the metadata of the hub. Expect a response of type 'metadata'.

Simple API Syntax (GET) <a id="7f6f3f970a60"></a>

https://fleet<N>.jaia.tech/jaia/v1/metadata/<target>?api_key=<API_KEY_STRING>

Full API Syntax (POST) <a id="7f6f3f9735e0"></a>

JSON <a id="7f6f3f970430"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
],
"all": false
},
"api_key": "<API_KEY_STRING>",
"metadata": true
}

Example <a id="7f6f3f971510"></a>

Request JSON <a id="7f6f3f971600"></a>

{
"target": {
"all": true
},
"metadata": true,
"api_key": "4vS6s2jnulxVjrKSB-__tQ"
}

Response JSON <a id="7f6f3f9728f0"></a>

{
"metadata": {
"hubs": [
{
"goby_version": "3.1.5",
"intervehicle_api_version": 7,
"is_simulation": true,
"ivp_version": "19.8.1+svn9395-10~ubuntu20.04.1",
"jaiabot_image_build_date": "Thu Aug 15 16:20:53 UTC 2024",
"jaiabot_image_first_boot_date": "Thu Aug 15 13:50:13 UTC 2024",
"jaiabot_image_version": "1.12.0~beta2",
"jaiabot_version": {
"deb_release_branch": "1.y",
"deb_repository": "beta",
"major": "1",
"minor": "12",
"patch": "0~beta2"
},
"moos_version": "10.4.0",
"name": "hub2-fleet6",
"raspi_firmware_version": "1.20220331",
"xbee_node_id": "Not Available",
"xbee_serial_number": "Not Available"
},
{
"goby_version": "3.1.5",
"intervehicle_api_version": 7,
"is_simulation": true,
"ivp_version": "19.8.1+svn9395-10~ubuntu20.04.1",
"jaiabot_image_build_date": "Thu Aug 15 16:20:53 UTC 2024",
"jaiabot_image_first_boot_date": "Thu Aug 15 13:50:11 UTC 2024",
"jaiabot_image_version": "1.12.0~beta2",
"jaiabot_version": {
"deb_release_branch": "1.y",
"deb_repository": "beta",
"major": "1",
"minor": "12",
"patch": "0~beta2"
},
"moos_version": "10.4.0",
"name": "hub1-fleet6",
"raspi_firmware_version": "1.20220331",
"xbee_node_id": "Not Available",
"xbee_serial_number": "Not Available"
}
]
},
"request": {
"api_key": "",
"metadata": true,
"target": {
"all": true
}
},
"target": {
"hubs": [
2,
1
]
}
}

task_packets <a id="7f6f3f970ac0"></a>

Query task packets from a given range of time. Expect a response of type 'task_packets'.

Parameters <a id="7f6f3f972aa0"></a>

  • start_time Start of time range as a Unix timestamp in microseconds.
  • end_time End of time range as a Unix timestamp in microseconds.

Simple API Syntax (GET) <a id="7f6f3f972a10"></a>

https://fleet<N>.jaia.tech/jaia/v1/task_packets/<target>?api_key=<API_KEY_STRING>&start_time=<UINT64>&end_time=<UINT64>

Full API Syntax (POST) <a id="7f6f3f972e60"></a>

JSON <a id="7f6f3f970fd0"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
],
"all": false
},
"api_key": "<API_KEY_STRING>",
"task_packets": {
"start_time": "18446744073709551615",
"end_time": "18446744073709551615"
}
}

Example <a id="7f6f3f970f70"></a>

Request JSON <a id="7f6f3f9ae1d0"></a>

{
"target": {
"bots": [
1
]
},
"task_packets": {
"start_time": 1722797666581176.0,
"end_time": 1722970466581176.0
},
"api_key": "4vS6s2jnulxVjrKSB-__tQ"
}

Response JSON <a id="7f6f3f9add20"></a>

{
"request": {
"api_key": "4vS6s2jnulxVjrKSB-__tQ",
"target": {
"bots": [
1
]
},
"task_packets": {
"end_time": "1722970466581176",
"start_time": "1722797666581176"
}
},
"task_packets": {
"packets": [
{
"bot_id": 1,
"drift": {
"drift_duration": 10,
"end_location": {
"lat": 41.658228,
"lon": -71.275736
},
"estimated_drift": {
"heading": 237.0,
"speed": 0.9
},
"significant_wave_height": 0.0,
"start_location": {
"lat": 41.658275,
"lon": -71.275645
}
},
"end_time": "1722895675000000",
"start_time": "1722895664000000",
"type": "SURFACE_DRIFT"
},
{
"bot_id": 1,
"drift": {
"drift_duration": 10,
"end_location": {
"lat": 41.65826,
"lon": -71.2757
},
"estimated_drift": {
"heading": 316.0,
"speed": 0.6
},
"significant_wave_height": 0.0,
"start_location": {
"lat": 41.658225,
"lon": -71.275651
}
},
"end_time": "1722896712000000",
"start_time": "1722896702000000",
"type": "SURFACE_DRIFT"
},
{
"bot_id": 1,
"drift": {
"drift_duration": 10,
"end_location": {
"lat": 41.659469,
"lon": -71.272064
},
"estimated_drift": {
"heading": 72.0,
"speed": 0.7
},
"significant_wave_height": 0.0,
"start_location": {
"lat": 41.659448,
"lon": -71.272146
}
},
"end_time": "1722896904000000",
"start_time": "1722896893000000",
"type": "SURFACE_DRIFT"
}
]
}
}

command <a id="7f6f3f972950"></a>

Send a command to one or more bots. Expect a response of type 'command_result'.

Simple API Syntax (GET) <a id="7f6f3f970d90"></a>

https://fleet<N>.jaia.tech/jaia/v1/command/<target>?api_key=<API_KEY_STRING>&type=<ENUM CommandType>

Enumerations <a id="7f6f3f970e50"></a>

  • <ENUM CommandType>: MISSION_PLAN, ACTIVATE, START_MISSION, NEXT_TASK, RETURN_TO_HOME, STOP, PAUSE, RESUME, RECOVERED, SHUTDOWN

Full API Syntax (POST) <a id="7f6f3f973130"></a>

JSON <a id="7f6f3f972da0"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
],
"all": false
},
"api_key": "<API_KEY_STRING>",
"command": {
"type": "<ENUM CommandType>"
}
}

Enumerations <a id="7f6f3f972e30"></a>

  • <ENUM CommandType>: MISSION_PLAN, ACTIVATE, START_MISSION, NEXT_TASK, RETURN_TO_HOME, STOP, PAUSE, RESUME, RECOVERED, SHUTDOWN

Variant: command_data = plan <a id="7f6f3f972560"></a>

Used with "command": { "type" : "MISSION_PLAN" }

JSON <a id="7f6f3f972ad0"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
],
"all": false
},
"api_key": "<API_KEY_STRING>",
"command": {
"type": "<ENUM CommandType>",
"plan": {
"start": "<ENUM MissionStart>",
"movement": "<ENUM MovementType>",
"goal": [
{
"location": {
"lat": 1.2345,
"lon": 1.2345
},
"task": {
"type": "<ENUM TaskType>",
"dive": {
"max_depth": 1.2345,
"depth_interval": 1.2345,
"hold_time": 1.2345,
"bottom_dive": true
},
"surface_drift": {
"drift_time": 2147483647
},
"constant_heading": {
"constant_heading": 1.2345,
"constant_heading_time": 2147483647,
"constant_heading_speed": 1.2345
},
"start_echo": true,
"station_keep": {
"station_keep_time": 2147483647
}
}
},
{
"location": {
"lat": 1.2345,
"lon": 1.2345
},
"task": {
"type": "<ENUM TaskType>",
"dive": {
"max_depth": 1.2345,
"depth_interval": 1.2345,
"hold_time": 1.2345,
"bottom_dive": true
},
"surface_drift": {
"drift_time": 2147483647
},
"constant_heading": {
"constant_heading": 1.2345,
"constant_heading_time": 2147483647,
"constant_heading_speed": 1.2345
},
"start_echo": true,
"station_keep": {
"station_keep_time": 2147483647
}
}
}
],
"recovery": {
"recover_at_final_goal": true,
"location": {
"lat": 1.2345,
"lon": 1.2345
}
},
"repeats": 4294967295
}
}
}

Enumerations <a id="7f6f3f9709a0"></a>

  • <ENUM CommandType>: MISSION_PLAN, ACTIVATE, START_MISSION, NEXT_TASK, RETURN_TO_HOME, STOP, PAUSE, RESUME, RECOVERED, SHUTDOWN
  • <ENUM MissionStart>: START_IMMEDIATELY, START_ON_COMMAND
  • <ENUM MovementType>: TRANSIT, REMOTE_CONTROL, TRAIL
  • <ENUM TaskType>: NONE, DIVE, STATION_KEEP, SURFACE_DRIFT, CONSTANT_HEADING

Variant: command_data = rc <a id="7f6f3f9700d0"></a>

Used with "command": { "type" : "REMOTE_CONTROL_SETPOINT" }

JSON <a id="7f6f3f973610"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
],
"all": false
},
"api_key": "<API_KEY_STRING>",
"command": {
"type": "<ENUM CommandType>",
"rc": {
"duration": 2147483647,
"heading": 1.2345,
"speed": 1.2345
}
}
}

Enumerations <a id="7f6f3f9704c0"></a>

  • <ENUM CommandType>: MISSION_PLAN, ACTIVATE, START_MISSION, NEXT_TASK, RETURN_TO_HOME, STOP, PAUSE, RESUME, RECOVERED, SHUTDOWN

Example <a id="7f6f3f972680"></a>

Request JSON <a id="7f6f3f970b80"></a>

{
"target": {
"all": true
},
"command": {
"type": "STOP"
},
"api_key": "4vS6s2jnulxVjrKSB-__tQ"
}

Response JSON <a id="7f6f3f972200"></a>

{
"command_result": {
"command_sent": true
},
"request": {
"api_key": "4vS6s2jnulxVjrKSB-__tQ",
"command": {
"bot_id": 1,
"time": "1722895468966813",
"type": "STOP"
},
"target": {
"all": true
}
},
"target": {
"hubs": [
1
],
"bots": [
2,
1
]
}
}

command_for_hub <a id="7f6f3f972110"></a>

Send a command to the hub. Expect a response of type 'command_result'.

Simple API Syntax (GET) <a id="7f6f3f972170"></a>

https://fleet<N>.jaia.tech/jaia/v1/command_for_hub/<target>?api_key=<API_KEY_STRING>&type=<ENUM HubCommandType>

Enumerations <a id="7f6f3f9731c0"></a>

  • <ENUM HubCommandType>: SET_HUB_LOCATION

Full API Syntax (POST) <a id="7f6f3f9731f0"></a>

JSON <a id="7f6f3f9adb40"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
],
"all": false
},
"api_key": "<API_KEY_STRING>",
"command_for_hub": {
"type": "<ENUM HubCommandType>",
"hub_location": {
"lat": 1.2345,
"lon": 1.2345
}
}
}

Enumerations <a id="7f6f3f9adb10"></a>

  • <ENUM HubCommandType>: SET_HUB_LOCATION

Example <a id="7f6f3f9ada50"></a>

Request JSON <a id="7f6f3f9adf30"></a>

{
"target": {
"all": true
},
"command_for_hub": {
"type": "SET_HUB_LOCATION",
"hub_location": {
"lat": 41.7,
"lon": -70.3
}
},
"api_key": "4vS6s2jnulxVjrKSB-__tQ"
}

Response JSON <a id="7f6f3f9aead0"></a>

{
"command_result": {
"command_sent": true
},
"request": {
"api_key": "4vS6s2jnulxVjrKSB-__tQ",
"command_for_hub": {
"hub_id": 1,
"hub_location": {
"lat": 41.7,
"lon": -70.3
},
"time": "1722895686821358",
"type": "SET_HUB_LOCATION"
},
"target": {
"all": true
}
},
"target": {
"hubs": [
1
]
}
}

Response Actions <a id="7f6f3f9701f0"></a>

error <a id="7f6f3f973a60"></a>

Error with API Request. This can be sent in response to any failed Request action.

Response Syntax <a id="7f6f3f9ae8c0"></a>

JSON <a id="7f6f3f9ac040"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
]
},
"error": {
"code": "<ENUM APIErrorCode>",
"details": "<STRING>"
},
"request": {
"copy of original request": "..."
}
}

Enumerations <a id="7f6f3f9ac460"></a>

  • <ENUM APIErrorCode>: API_ERROR__UNSUPPORTED_API_VERSION, API_ERROR__INVALID_ACTION, API_ERROR__TARGETS_STRING_MALFORMATTED, API_ERROR__ACTION_REQUIRES_JSON_POST_DATA, API_ERROR__INVALID_TARGET, API_ERROR__COULD_NOT_PARSE_API_REQUEST_JSON, API_ERROR__REQUEST_NOT_INITIALIZED, API_ERROR__NO_ACTION_SPECIFIED, API_ERROR__INVALID_TYPE

status <a id="7f6f3f9aea10"></a>

Bot/Hub status. This is sent in response to a successful Request 'status' action.

Response Syntax <a id="7f6f3f9ac6a0"></a>

JSON <a id="7f6f3f972050"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
]
},
"status": {
"bots": [
{
"bot_id": 4294967295,
"time": "18446744073709551615",
"last_command_time": "18446744073709551615",
"health_state": "<ENUM HealthState>",
"error": [
"<ENUM Error>",
"<ENUM Error>"
],
"warning": [
"<ENUM Warning>",
"<ENUM Warning>"
],
"bot_type": "<ENUM BotType>",
"location": {
"lat": 1.2345,
"lon": 1.2345
},
"depth": 1.2345,
"attitude": {
"roll": 1.2345,
"pitch": 1.2345,
"heading": 1.2345,
"course_over_ground": 1.2345
},
"speed": {
"over_ground": 1.2345
},
"mission_state": "<ENUM MissionState>",
"active_goal": 2147483647,
"distance_to_active_goal": 1.2345,
"active_goal_timeout": 4294967295,
"repeat_index": 2147483647,
"battery_percent": 1.2345,
"wifi_link_quality_percentage": 2147483647,
"received_time": "18446744073709551615"
},
{
"bot_id": 4294967295,
"time": "18446744073709551615",
"last_command_time": "18446744073709551615",
"health_state": "<ENUM HealthState>",
"error": [
"<ENUM Error>",
"<ENUM Error>"
],
"warning": [
"<ENUM Warning>",
"<ENUM Warning>"
],
"bot_type": "<ENUM BotType>",
"location": {
"lat": 1.2345,
"lon": 1.2345
},
"depth": 1.2345,
"attitude": {
"roll": 1.2345,
"pitch": 1.2345,
"heading": 1.2345,
"course_over_ground": 1.2345
},
"speed": {
"over_ground": 1.2345
},
"mission_state": "<ENUM MissionState>",
"active_goal": 2147483647,
"distance_to_active_goal": 1.2345,
"active_goal_timeout": 4294967295,
"repeat_index": 2147483647,
"battery_percent": 1.2345,
"wifi_link_quality_percentage": 2147483647,
"received_time": "18446744073709551615"
}
],
"hubs": [
{
"hub_id": 4294967295,
"fleet_id": 4294967295,
"time": "18446744073709551615",
"health_state": "<ENUM HealthState>",
"error": [
"<ENUM Error>",
"<ENUM Error>"
],
"warning": [
"<ENUM Warning>",
"<ENUM Warning>"
],
"location": {
"lat": 1.2345,
"lon": 1.2345
},
"received_time": "18446744073709551615",
"known_bot": [
{
"id": 4294967295,
"last_status_time": "18446744073709551615"
},
{
"id": 4294967295,
"last_status_time": "18446744073709551615"
}
]
},
{
"hub_id": 4294967295,
"fleet_id": 4294967295,
"time": "18446744073709551615",
"health_state": "<ENUM HealthState>",
"error": [
"<ENUM Error>",
"<ENUM Error>"
],
"warning": [
"<ENUM Warning>",
"<ENUM Warning>"
],
"location": {
"lat": 1.2345,
"lon": 1.2345
},
"received_time": "18446744073709551615",
"known_bot": [
{
"id": 4294967295,
"last_status_time": "18446744073709551615"
},
{
"id": 4294967295,
"last_status_time": "18446744073709551615"
}
]
}
]
},
"request": {
"copy of original request": "..."
}
}

Enumerations <a id="7f6f3f971e70"></a>

  • <ENUM HealthState>: HEALTH__OK, HEALTH__DEGRADED, HEALTH__FAILED
  • <ENUM Error>: ERROR__TOO_MANY_ERRORS_TO_REPORT_ALL, ERROR__FAILED__UNKNOWN, ERROR__FAILED__GOBYD, ERROR__FAILED__GOBY_LIAISON, ERROR__FAILED__GOBY_GPS, ERROR__FAILED__GOBY_LOGGER, ERROR__FAILED__GOBY_CORONER, ERROR__FAILED__GOBY_MOOS_GATEWAY, ERROR__FAILED__JAIABOT_HEALTH, ERROR__FAILED__JAIABOT_METADATA, ERROR__FAILED__JAIABOT_HUB_MANAGER, ERROR__FAILED__JAIABOT_WEB_PORTAL, ERROR__FAILED__JAIABOT_FUSION, ERROR__FAILED__JAIABOT_MISSION_MANAGER, ERROR__FAILED__JAIABOT_PID_CONTROL, ERROR__FAILED__JAIABOT_BLUEROBOTICS_PRESSURE_SENSOR_DRIVER, ERROR__FAILED__JAIABOT_ATLAS_SCIENTIFIC_EZO_EC_DRIVER, ERROR__FAILED__JAIABOT_ADAFRUIT_BNO055_DRIVER, ERROR__FAILED__JAIABOT_DRIVER_ARDUINO, ERROR__FAILED__JAIABOT_ENGINEERING, ERROR__FAILED__MOOS_MOOSDB, ERROR__FAILED__MOOS_PHELMIVP, ERROR__FAILED__MOOS_UPROCESSWATCH, ERROR__FAILED__MOOS_PNODEREPORTER, ERROR__FAILED__PYTHON_JAIABOT_WEB_APP, ERROR__FAILED__PYTHON_JAIABOT_IMU, ERROR__FAILED__PYTHON_JAIABOT_PRESSURE_SENSOR, ERROR__FAILED__PYTHON_JAIABOT_AS_EZO_EC, ERROR__FAILED__JAIABOT_LOG_CONVERTER, ERROR__FAILED__JAIABOT_DATA_VISION, ERROR__FAILED__JAIABOT_SIMULATOR, ERROR__FAILED__MOOS_SIM_MOOSDB, ERROR__FAILED__MOOS_SIM_USIMMARINE, ERROR__FAILED__GOBY_INTERVEHICLE_PORTAL, ERROR__FAILED__JAIABOT_ADAFRUIT_BNO085_DRIVER, ERROR__FAILED__JAIABOT_ECHO_DRIVER, ERROR__FAILED__PYTHON_JAIABOT_ECHO, ERROR__FAILED__JAIABOT_TSYS01_TEMPERATURE_SENSOR_DRIVER, ERROR__FAILED__PYTHON_JAIABOT_TSYS01_TEMPERATURE_SENSOR_DRIVER, ERROR__FAILED__PYTHON_JAIABOT_MOTOR_LISTENER, ERROR__NOT_RESPONDING__UNKNOWN_APP, ERROR__NOT_RESPONDING__GOBYD, ERROR__NOT_RESPONDING__GOBY_LIAISON, ERROR__NOT_RESPONDING__GOBY_GPS, ERROR__NOT_RESPONDING__GOBY_LOGGER, ERROR__NOT_RESPONDING__GOBY_CORONER, ERROR__NOT_RESPONDING__JAIABOT_HEALTH, ERROR__NOT_RESPONDING__JAIABOT_METADATA, ERROR__NOT_RESPONDING__JAIABOT_HUB_MANAGER, ERROR__NOT_RESPONDING__JAIABOT_WEB_PORTAL, ERROR__NOT_RESPONDING__JAIABOT_FUSION, ERROR__NOT_RESPONDING__GOBY_MOOS_GATEWAY, ERROR__NOT_RESPONDING__JAIABOT_MISSION_MANAGER, ERROR__NOT_RESPONDING__JAIABOT_PID_CONTROL, ERROR__NOT_RESPONDING__JAIABOT_BLUEROBOTICS_PRESSURE_SENSOR_DRIVER, ERROR__NOT_RESPONDING__JAIABOT_ATLAS_SCIENTIFIC_EZO_EC_DRIVER, ERROR__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO055_DRIVER, ERROR__NOT_RESPONDING__JAIABOT_DRIVER_ARDUINO, ERROR__NOT_RESPONDING__JAIABOT_ENGINEERING, ERROR__NOT_RESPONDING__JAIABOT_SINGLE_THREAD_PATTERN, ERROR__NOT_RESPONDING__JAIABOT_MULTI_THREAD_PATTERN, ERROR__NOT_RESPONDING__JAIABOT_SIMULATOR, ERROR__NOT_RESPONDING__GOBY_INTERVEHICLE_PORTAL, ERROR__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO085_DRIVER, ERROR__NOT_RESPONDING__JAIABOT_ECHO_DRIVER, ERROR__NOT_RESPONDING__JAIABOT_TSYS01_TEMPERATURE_SENSOR_DRIVER, ERROR__MISSING_DATA__GPS_FIX, ERROR__MISSING_DATA__GPS_POSITION, ERROR__MISSING_DATA__PRESSURE, ERROR__MISSING_DATA__HEADING, ERROR__MISSING_DATA__SPEED, ERROR__MISSING_DATA__COURSE, ERROR__MISSING_DATA__CALIBRATION_SYS, ERROR__MISSING_DATA__CALIBRATION_GYRO, ERROR__MISSING_DATA__CALIBRATION_ACCEL, ERROR__MISSING_DATA__CALIBRATION_MAG, ERROR__NOT_CALIBRATED_SYS, ERROR__NOT_CALIBRATED_GYRO, ERROR__NOT_CALIBRATED_ACCEL, ERROR__NOT_CALIBRATED_MAG, ERROR__NOT_CALIBRATED_IMU, ERROR__MOOS__HELMIVP_STATE_NOT_DRIVE, ERROR__MOOS__HELMIVP_NO_DESIRED_DATA, ERROR__MOOS__NO_DATA, ERROR__SYSTEM__CANNOT_READ_MEMINFO, ERROR__SYSTEM__RAM_SPACE_CRITICAL, ERROR__SYSTEM__CANNOT_READ_SYSINFO, ERROR__SYSTEM__CPU_LOAD_FACTOR_CRITICAL, ERROR__SYSTEM__CANNOT_READ_DISK_USAGE, ERROR__SYSTEM__ROOTFS_DISK_SPACE_CRITICAL, ERROR__SYSTEM__DATA_DISK_SPACE_CRITICAL, ERROR__SYSTEM__NTP_PEERS_QUERY_FAILED, ERROR__SYSTEM__NTP_STATUS_QUERY_FAILED, ERROR__VEHICLE__VERY_LOW_BATTERY, ERROR__VEHICLE__CRITICALLY_LOW_BATTERY, ERROR__VEHICLE__MISSING_DATA_BATTERY, ERROR__VERSION__MISMATCH_ARDUINO, ERROR__MISSING_DATA__ARDUINO_REPORT, ERROR__VERSION__MISMATCH_INTERVEHICLE__UPGRADE_HUB, ERROR__VERSION__MISMATCH_INTERVEHICLE__UPGRADE_BOT, ERROR__ARDUINO_CONNECTION_FAILED
  • <ENUM Warning>: WARNING__TOO_MANY_WARNINGS_TO_REPORT_ALL, WARNING__NOT_RESPONDING__UNKNOWN_APP, WARNING__NOT_RESPONDING__JAIABOT_ATLAS_SCIENTIFIC_EZO_EC_DRIVER, WARNING__NOT_RESPONDING__JAIABOT_BLUEROBOTICS_PRESSURE_SENSOR_DRIVER, WARNING__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO055_DRIVER, WARNING__NOT_RESPONDING__JAIABOT_ADAFRUIT_BNO085_DRIVER, WARNING__NOT_RESPONDING__JAIABOT_ECHO_DRIVER, WARNING__NOT_RESPONDING__JAIABOT_TSYS01_TEMPERATURE_SENSOR_DRIVER, WARNING__MISSING_DATA__PITCH, WARNING__MISSING_DATA__ROLL, WARNING__MISSING_DATA__TEMPERATURE, WARNING__MISSING_DATA__COURSE, WARNING__NOT_CALIBRATED_SYS, WARNING__IMU_ISSUE, WARNING__TEMPERATURE__ARDUINO_TOO_HIGH, WARNING__TEMPERATURE__LINUX_TOO_HIGH, WARNING__COMMS_LOW_SIGNAL_STRENGTH, WARNING__VEHICLE__LOW_BATTERY, WARNING__SYSTEM__NTP_NOT_SYNCHRONIZED, WARNING__SYSTEM__NTP_OFFSET_HIGH, WARNING__SYSTEM__NTP_JITTER_HIGH, WARNING__SYSTEM__RAM_SPACE_LOW, WARNING__SYSTEM__CPU_LOAD_FACTOR_HIGH, WARNING__SYSTEM__ROOTFS_DISK_SPACE_LOW, WARNING__SYSTEM__DATA_DISK_SPACE_LOW, WARNING__NOT_RESPONDING__JAIABOT_RPM_LISTENER, WARNING__NOT_RESPONDING__JAIABOT_ARDUINO_MOTOR_TEMP, WARNING__MISSION__INFEASIBLE_MISSION__TRANSIT_MUST_HAVE_A_GOAL, WARNING__MISSION__INFEASIBLE_MISSION__TRANSIT_CANNOT_RECOVER_AT_FINAL_GOAL_WITHOUT_A_GOAL, WARNING__MISSION__INFEASIBLE_MISSION__MUST_HAVE_RECOVERY_LOCATION_IF_NOT_RECOVERING_AT_FINAL_GOAL, WARNING__MISSION__INFEASIBLE_MISSION__MINIMUM_BOTTOM_DEPTH_REACHED, WARNING__MISSION__INFEASIBLE_MISSION__GOAL_DESIRED_DEPTH_EXCEEDED_MAX, WARNING__VEHICLE__NO_FORWARD_PROGRESS, WARNING__MISSION__DATA_OFFLOAD_FAILED, WARNING__MISSION__DATA__GPS_FIX_DEGRADED, WARNING__MISSION__DATA_PRE_OFFLOAD_FAILED, WARNING__MISSION__DATA_POST_OFFLOAD_FAILED
  • <ENUM BotType>: HYDRO, ECHO
  • <ENUM MissionState>: PRE_DEPLOYMENT__STARTING_UP, PRE_DEPLOYMENT__IDLE, PRE_DEPLOYMENT__SELF_TEST, PRE_DEPLOYMENT__FAILED, PRE_DEPLOYMENT__WAIT_FOR_MISSION_PLAN, PRE_DEPLOYMENT__READY, IN_MISSION__UNDERWAY__REPLAN, IN_MISSION__UNDERWAY__MOVEMENT__TRANSIT, IN_MISSION__UNDERWAY__MOVEMENT__REMOTE_CONTROL__SETPOINT, IN_MISSION__UNDERWAY__MOVEMENT__REMOTE_CONTROL__STATION_KEEP, IN_MISSION__UNDERWAY__MOVEMENT__REMOTE_CONTROL__SURFACE_DRIFT, IN_MISSION__UNDERWAY__MOVEMENT__TRAIL, IN_MISSION__UNDERWAY__TASK__STATION_KEEP, IN_MISSION__UNDERWAY__TASK__SURFACE_DRIFT, IN_MISSION__UNDERWAY__TASK__DIVE__DIVE_PREP, IN_MISSION__UNDERWAY__TASK__DIVE__POWERED_DESCENT, IN_MISSION__UNDERWAY__TASK__DIVE__HOLD, IN_MISSION__UNDERWAY__TASK__DIVE__UNPOWERED_ASCENT, IN_MISSION__UNDERWAY__TASK__DIVE__POWERED_ASCENT, IN_MISSION__UNDERWAY__TASK__DIVE__REACQUIRE_GPS, IN_MISSION__UNDERWAY__TASK__DIVE__SURFACE_DRIFT, IN_MISSION__UNDERWAY__TASK__DIVE__CONSTANT_HEADING, IN_MISSION__UNDERWAY__TASK__CONSTANT_HEADING, IN_MISSION__UNDERWAY__RECOVERY__TRANSIT, IN_MISSION__UNDERWAY__RECOVERY__STATION_KEEP, IN_MISSION__UNDERWAY__RECOVERY__STOPPED, IN_MISSION__PAUSE__REACQUIRE_GPS, IN_MISSION__PAUSE__MANUAL, POST_DEPLOYMENT__RECOVERED, POST_DEPLOYMENT__DATA_OFFLOAD, POST_DEPLOYMENT__IDLE, POST_DEPLOYMENT__SHUTTING_DOWN, POST_DEPLOYMENT__FAILED

metadata <a id="7f6f3f970a30"></a>

Metadata response. This is sent in response to a successful Request 'metadata' action.

Response Syntax <a id="7f6f3f970640"></a>

JSON <a id="7f6f3f9715d0"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
]
},
"metadata": {
"hubs": [
{
"name": "<STRING>",
"jaiabot_version": {
"major": "<STRING>",
"minor": "<STRING>",
"patch": "<STRING>",
"git_hash": "<STRING>",
"git_branch": "<STRING>",
"deb_repository": "<STRING>",
"deb_release_branch": "<STRING>"
},
"goby_version": "<STRING>",
"moos_version": "<STRING>",
"ivp_version": "<STRING>",
"xbee_node_id": "<STRING>",
"xbee_serial_number": "<STRING>",
"raspi_firmware_version": "<STRING>",
"jaiabot_image_version": "<STRING>",
"jaiabot_image_build_date": "<STRING>",
"jaiabot_image_first_boot_date": "<STRING>",
"intervehicle_api_version": 4294967295,
"is_simulation": true,
"fleet_id": 4294967295,
"hub_id": 4294967295
},
{
"name": "<STRING>",
"jaiabot_version": {
"major": "<STRING>",
"minor": "<STRING>",
"patch": "<STRING>",
"git_hash": "<STRING>",
"git_branch": "<STRING>",
"deb_repository": "<STRING>",
"deb_release_branch": "<STRING>"
},
"goby_version": "<STRING>",
"moos_version": "<STRING>",
"ivp_version": "<STRING>",
"xbee_node_id": "<STRING>",
"xbee_serial_number": "<STRING>",
"raspi_firmware_version": "<STRING>",
"jaiabot_image_version": "<STRING>",
"jaiabot_image_build_date": "<STRING>",
"jaiabot_image_first_boot_date": "<STRING>",
"intervehicle_api_version": 4294967295,
"is_simulation": true,
"fleet_id": 4294967295,
"hub_id": 4294967295
}
]
},
"request": {
"copy of original request": "..."
}
}

task_packets <a id="7f6f3f972020"></a>

Task packet response. This is sent in response to a successful Request 'task_packet' action.

Response Syntax <a id="7f6f3f973b80"></a>

JSON <a id="7f6f3f971270"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
]
},
"task_packets": {
"packets": [
{
"bot_id": 4294967295,
"start_time": "18446744073709551615",
"end_time": "18446744073709551615",
"type": "<ENUM TaskType>",
"dive": {
"dive_rate": 1.2345,
"unpowered_rise_rate": 1.2345,
"powered_rise_rate": 1.2345,
"depth_achieved": 1.2345,
"measurement": [
{
"mean_depth": 1.2345,
"mean_temperature": 1.2345,
"mean_salinity": 1.2345
},
{
"mean_depth": 1.2345,
"mean_temperature": 1.2345,
"mean_salinity": 1.2345
}
],
"start_location": {
"lat": 1.2345,
"lon": 1.2345
},
"duration_to_acquire_gps": 1.2345,
"bottom_dive": true,
"reached_min_depth": true,
"bottom_type": "<ENUM BottomType>",
"max_acceleration": 1.2345
},
"drift": {
"drift_duration": 2147483647,
"estimated_drift": {
"speed": 1.2345,
"heading": 1.2345
},
"start_location": {
"lat": 1.2345,
"lon": 1.2345
},
"end_location": {
"lat": 1.2345,
"lon": 1.2345
},
"significant_wave_height": 1.2345
}
},
{
"bot_id": 4294967295,
"start_time": "18446744073709551615",
"end_time": "18446744073709551615",
"type": "<ENUM TaskType>",
"dive": {
"dive_rate": 1.2345,
"unpowered_rise_rate": 1.2345,
"powered_rise_rate": 1.2345,
"depth_achieved": 1.2345,
"measurement": [
{
"mean_depth": 1.2345,
"mean_temperature": 1.2345,
"mean_salinity": 1.2345
},
{
"mean_depth": 1.2345,
"mean_temperature": 1.2345,
"mean_salinity": 1.2345
}
],
"start_location": {
"lat": 1.2345,
"lon": 1.2345
},
"duration_to_acquire_gps": 1.2345,
"bottom_dive": true,
"reached_min_depth": true,
"bottom_type": "<ENUM BottomType>",
"max_acceleration": 1.2345
},
"drift": {
"drift_duration": 2147483647,
"estimated_drift": {
"speed": 1.2345,
"heading": 1.2345
},
"start_location": {
"lat": 1.2345,
"lon": 1.2345
},
"end_location": {
"lat": 1.2345,
"lon": 1.2345
},
"significant_wave_height": 1.2345
}
}
]
},
"request": {
"copy of original request": "..."
}
}

Enumerations <a id="7f6f3f970490"></a>

  • <ENUM TaskType>: NONE, DIVE, STATION_KEEP, SURFACE_DRIFT, CONSTANT_HEADING
  • <ENUM BottomType>: HARD, SOFT

command_result <a id="7f6f3f973310"></a>

Command result. This is sent in response to a successful Request 'command' or 'command_for_hub' action.

Response Syntax <a id="7f6f3f972650"></a>

JSON <a id="7f6f3f971d20"></a>

{
"target": {
"hubs": [
1
],
"bots": [
1,
2
]
},
"command_result": {
"command_sent": true
},
"request": {
"copy of original request": "..."
}
}