diff --git a/packages/api-client/lib/index.ts b/packages/api-client/lib/index.ts index fcc6b4bef..3c034dc1d 100644 --- a/packages/api-client/lib/index.ts +++ b/packages/api-client/lib/index.ts @@ -4,6 +4,7 @@ import { ApiServerModelsTortoiseModelsAlertsAlertLeaf, ApiServerModelsTortoiseModelsBeaconsBeaconStateLeaf as BeaconState, BuildingMap, + ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf as DeliveryAlert, DispenserHealth, DispenserState, DoorHealth, @@ -124,6 +125,10 @@ export class SioClient { subscribeAlerts(listener: Listener): Subscription { return this.subscribe(`/alerts`, listener); } + + subscribeDeliveryAlerts(listener: Listener): Subscription { + return this.subscribe(`/delivery_alerts`, listener); + } } export * from './openapi'; diff --git a/packages/api-client/lib/openapi/api.ts b/packages/api-client/lib/openapi/api.ts index 1e49a46f5..0850f06a5 100644 --- a/packages/api-client/lib/openapi/api.ts +++ b/packages/api-client/lib/openapi/api.ts @@ -291,6 +291,49 @@ export interface ApiServerModelsTortoiseModelsBeaconsBeaconStateLeaf { */ level?: string | null; } +/** + * Custom alerts for custom delivery tasks + * @export + * @interface ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf + */ +export interface ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf { + /** + * + * @type {string} + * @memberof ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf + */ + id: string; + /** + * Missing: missing
Wrong: wrong + * @type {string} + * @memberof ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf + */ + category: string; + /** + * Warning: warning
Error: error + * @type {string} + * @memberof ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf + */ + tier: string; + /** + * + * @type {string} + * @memberof ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf + */ + task_id?: string | null; + /** + * Waiting: waiting
Cancel: cancelled
Override: override
Resume: resume + * @type {string} + * @memberof ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf + */ + action: string; + /** + * + * @type {string} + * @memberof ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf + */ + message?: string | null; +} /** * * @export @@ -5511,7 +5554,7 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati }; }, /** - * # NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint. ## About This exposes a minimal pubsub system built on top of socket.io. It works similar to a normal socket.io endpoint, except that are 2 special rooms which control subscriptions. ## Rooms ### subscribe Clients must send a message to this room to start receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### unsubscribe Clients can send a message to this room to stop receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### /alerts ``` { \"title\": \"Alert\", \"description\": \"General alert that can be triggered by events.\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"original_id\": { \"title\": \"Original Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Default: default
Task: task
Fleet: fleet
Robot: robot\", \"maxLength\": 7, \"type\": \"string\" }, \"unix_millis_created_time\": { \"title\": \"Unix Millis Created Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"type\": \"integer\" }, \"acknowledged_by\": { \"title\": \"Acknowledged By\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"unix_millis_acknowledged_time\": { \"title\": \"Unix Millis Acknowledged Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"nullable\": true, \"type\": \"integer\" } }, \"required\": [ \"id\", \"original_id\", \"category\", \"unix_millis_created_time\" ], \"additionalProperties\": false } ``` ### /beacons ``` { \"title\": \"BeaconState\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"online\": { \"title\": \"Online\", \"type\": \"boolean\" }, \"category\": { \"title\": \"Category\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"activated\": { \"title\": \"Activated\", \"type\": \"boolean\" }, \"level\": { \"title\": \"Level\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"online\", \"activated\" ], \"additionalProperties\": false } ``` ### /building_map ``` { \"title\": \"BuildingMap\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Level\" } }, \"lifts\": { \"title\": \"Lifts\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Lift\" } } }, \"required\": [ \"name\", \"levels\", \"lifts\" ], \"definitions\": { \"AffineImage\": { \"title\": \"AffineImage\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x_offset\": { \"title\": \"X Offset\", \"default\": 0, \"type\": \"number\" }, \"y_offset\": { \"title\": \"Y Offset\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"scale\": { \"title\": \"Scale\", \"default\": 0, \"type\": \"number\" }, \"encoding\": { \"title\": \"Encoding\", \"default\": \"\", \"type\": \"string\" }, \"data\": { \"title\": \"Data\", \"type\": \"string\" } }, \"required\": [ \"name\", \"x_offset\", \"y_offset\", \"yaw\", \"scale\", \"encoding\", \"data\" ] }, \"Place\": { \"title\": \"Place\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"position_tolerance\": { \"title\": \"Position Tolerance\", \"default\": 0, \"type\": \"number\" }, \"yaw_tolerance\": { \"title\": \"Yaw Tolerance\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"x\", \"y\", \"yaw\", \"position_tolerance\", \"yaw_tolerance\" ] }, \"Door\": { \"title\": \"Door\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"v1_x\": { \"title\": \"V1 X\", \"default\": 0, \"type\": \"number\" }, \"v1_y\": { \"title\": \"V1 Y\", \"default\": 0, \"type\": \"number\" }, \"v2_x\": { \"title\": \"V2 X\", \"default\": 0, \"type\": \"number\" }, \"v2_y\": { \"title\": \"V2 Y\", \"default\": 0, \"type\": \"number\" }, \"door_type\": { \"title\": \"Door Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_range\": { \"title\": \"Motion Range\", \"default\": 0, \"type\": \"number\" }, \"motion_direction\": { \"title\": \"Motion Direction\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" } }, \"required\": [ \"name\", \"v1_x\", \"v1_y\", \"v2_x\", \"v2_y\", \"door_type\", \"motion_range\", \"motion_direction\" ] }, \"Param\": { \"title\": \"Param\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"type\": { \"title\": \"Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"value_int\": { \"title\": \"Value Int\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"value_float\": { \"title\": \"Value Float\", \"default\": 0, \"type\": \"number\" }, \"value_string\": { \"title\": \"Value String\", \"default\": \"\", \"type\": \"string\" }, \"value_bool\": { \"title\": \"Value Bool\", \"default\": false, \"type\": \"boolean\" } }, \"required\": [ \"name\", \"type\", \"value_int\", \"value_float\", \"value_string\", \"value_bool\" ] }, \"GraphNode\": { \"title\": \"GraphNode\", \"type\": \"object\", \"properties\": { \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"x\", \"y\", \"name\", \"params\" ] }, \"GraphEdge\": { \"title\": \"GraphEdge\", \"type\": \"object\", \"properties\": { \"v1_idx\": { \"title\": \"V1 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"v2_idx\": { \"title\": \"V2 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } }, \"edge_type\": { \"title\": \"Edge Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" } }, \"required\": [ \"v1_idx\", \"v2_idx\", \"params\", \"edge_type\" ] }, \"Graph\": { \"title\": \"Graph\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"vertices\": { \"title\": \"Vertices\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphNode\" } }, \"edges\": { \"title\": \"Edges\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphEdge\" } }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"name\", \"vertices\", \"edges\", \"params\" ] }, \"Level\": { \"title\": \"Level\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"elevation\": { \"title\": \"Elevation\", \"default\": 0, \"type\": \"number\" }, \"images\": { \"title\": \"Images\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/AffineImage\" } }, \"places\": { \"title\": \"Places\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Place\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"nav_graphs\": { \"title\": \"Nav Graphs\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Graph\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] } }, \"required\": [ \"name\", \"elevation\", \"images\", \"places\", \"doors\", \"nav_graphs\", \"wall_graph\" ] }, \"Lift\": { \"title\": \"Lift\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] }, \"ref_x\": { \"title\": \"Ref X\", \"default\": 0, \"type\": \"number\" }, \"ref_y\": { \"title\": \"Ref Y\", \"default\": 0, \"type\": \"number\" }, \"ref_yaw\": { \"title\": \"Ref Yaw\", \"default\": 0, \"type\": \"number\" }, \"width\": { \"title\": \"Width\", \"default\": 0, \"type\": \"number\" }, \"depth\": { \"title\": \"Depth\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"levels\", \"doors\", \"wall_graph\", \"ref_x\", \"ref_y\", \"ref_yaw\", \"width\", \"depth\" ] } } } ``` ### /doors/{door_name}/state ``` { \"title\": \"DoorState\", \"type\": \"object\", \"properties\": { \"door_time\": { \"title\": \"Door Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"door_name\": { \"title\": \"Door Name\", \"default\": \"\", \"type\": \"string\" }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": { \"value\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/DoorMode\" } ] } }, \"required\": [ \"door_time\", \"door_name\", \"current_mode\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] }, \"DoorMode\": { \"title\": \"DoorMode\", \"type\": \"object\", \"properties\": { \"value\": { \"title\": \"Value\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"value\" ] } } } ``` ### /doors/{door_name}/health ``` { \"title\": \"DoorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /lifts/{lift_name}/state ``` { \"title\": \"LiftState\", \"type\": \"object\", \"properties\": { \"lift_time\": { \"title\": \"Lift Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"lift_name\": { \"title\": \"Lift Name\", \"default\": \"\", \"type\": \"string\" }, \"available_floors\": { \"title\": \"Available Floors\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"current_floor\": { \"title\": \"Current Floor\", \"default\": \"\", \"type\": \"string\" }, \"destination_floor\": { \"title\": \"Destination Floor\", \"default\": \"\", \"type\": \"string\" }, \"door_state\": { \"title\": \"Door State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_state\": { \"title\": \"Motion State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"available_modes\": { \"title\": \"Available Modes\", \"type\": \"array\", \"items\": { \"type\": \"integer\" } }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"session_id\": { \"title\": \"Session Id\", \"default\": \"\", \"type\": \"string\" } }, \"required\": [ \"lift_time\", \"lift_name\", \"available_floors\", \"current_floor\", \"destination_floor\", \"door_state\", \"motion_state\", \"available_modes\", \"current_mode\", \"session_id\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /lifts/{lift_name}/health ``` { \"title\": \"LiftHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /tasks/{task_id}/state ``` { \"title\": \"TaskState\", \"type\": \"object\", \"properties\": { \"booking\": { \"$ref\": \"#/definitions/Booking\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"assigned_to\": { \"title\": \"Assigned To\", \"description\": \"Which agent (robot) is the task assigned to\", \"allOf\": [ { \"$ref\": \"#/definitions/AssignedTo\" } ] }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"dispatch\": { \"$ref\": \"#/definitions/Dispatch\" }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phase\" } }, \"completed\": { \"title\": \"Completed\", \"description\": \"An array of the IDs of completed phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"active\": { \"title\": \"Active\", \"description\": \"The ID of the active phase for this task\", \"allOf\": [ { \"$ref\": \"#/definitions/Id\" } ] }, \"pending\": { \"title\": \"Pending\", \"description\": \"An array of the pending phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"interruptions\": { \"title\": \"Interruptions\", \"description\": \"A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Interruption\" } }, \"cancellation\": { \"title\": \"Cancellation\", \"description\": \"If the task was cancelled, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Cancellation\" } ] }, \"killed\": { \"title\": \"Killed\", \"description\": \"If the task was killed, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Killed\" } ] }, \"unix_millis_warn_time\": { \"title\": \"Unix Millis Warn Time\", \"type\": \"integer\" } }, \"required\": [ \"booking\" ], \"definitions\": { \"Booking\": { \"title\": \"Booking\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"description\": \"The unique identifier for this task\", \"type\": \"string\" }, \"unix_millis_earliest_start_time\": { \"title\": \"Unix Millis Earliest Start Time\", \"type\": \"integer\" }, \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"type\": \"integer\" }, \"priority\": { \"title\": \"Priority\", \"description\": \"Priority information about this task\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"string\" } ] }, \"labels\": { \"title\": \"Labels\", \"description\": \"Information about how and why this task was booked\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"requester\": { \"title\": \"Requester\", \"description\": \"(Optional) An identifier for the entity that requested this task\", \"type\": \"string\" } }, \"required\": [ \"id\" ] }, \"Category\": { \"title\": \"Category\", \"description\": \"The category of this task or phase\", \"type\": \"string\" }, \"Detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about a task, phase, or event\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] }, \"EstimateMillis\": { \"title\": \"EstimateMillis\", \"description\": \"An estimate, in milliseconds, of how long the subject will take to complete\", \"minimum\": 0, \"type\": \"integer\" }, \"AssignedTo\": { \"title\": \"AssignedTo\", \"type\": \"object\", \"properties\": { \"group\": { \"title\": \"Group\", \"type\": \"string\" }, \"name\": { \"title\": \"Name\", \"type\": \"string\" } }, \"required\": [ \"group\", \"name\" ] }, \"Status\": { \"title\": \"Status\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"blocked\", \"error\", \"failed\", \"queued\", \"standby\", \"underway\", \"delayed\", \"skipped\", \"canceled\", \"killed\", \"completed\" ] }, \"Status1\": { \"title\": \"Status1\", \"description\": \"An enumeration.\", \"enum\": [ \"queued\", \"selected\", \"dispatched\", \"failed_to_assign\", \"canceled_in_flight\" ] }, \"Assignment\": { \"title\": \"Assignment\", \"type\": \"object\", \"properties\": { \"fleet_name\": { \"title\": \"Fleet Name\", \"type\": \"string\" }, \"expected_robot_name\": { \"title\": \"Expected Robot Name\", \"type\": \"string\" } } }, \"Error\": { \"title\": \"Error\", \"type\": \"object\", \"properties\": { \"code\": { \"title\": \"Code\", \"description\": \"A standard code for the kind of error that has occurred\", \"minimum\": 0, \"type\": \"integer\" }, \"category\": { \"title\": \"Category\", \"description\": \"The category of the error\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Details about the error\", \"type\": \"string\" } } }, \"Dispatch\": { \"title\": \"Dispatch\", \"type\": \"object\", \"properties\": { \"status\": { \"$ref\": \"#/definitions/Status1\" }, \"assignment\": { \"$ref\": \"#/definitions/Assignment\" }, \"errors\": { \"title\": \"Errors\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Error\" } } }, \"required\": [ \"status\" ] }, \"Id\": { \"title\": \"Id\", \"minimum\": 0, \"type\": \"integer\" }, \"EventState\": { \"title\": \"EventState\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"name\": { \"title\": \"Name\", \"description\": \"The brief name of the event\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the event\", \"allOf\": [ { \"$ref\": \"#/definitions/Detail\" } ] }, \"deps\": { \"title\": \"Deps\", \"description\": \"This event may depend on other events. This array contains the IDs of those other event dependencies.\", \"type\": \"array\", \"items\": { \"type\": \"integer\", \"minimum\": 0 } } }, \"required\": [ \"id\" ] }, \"Undo\": { \"title\": \"Undo\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the undo skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the undo skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"SkipPhaseRequest\": { \"title\": \"SkipPhaseRequest\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"undo\": { \"title\": \"Undo\", \"description\": \"Information about an undo skip request that applied to this request\", \"allOf\": [ { \"$ref\": \"#/definitions/Undo\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Phase\": { \"title\": \"Phase\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"final_event_id\": { \"$ref\": \"#/definitions/Id\" }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/EventState\" } }, \"skip_requests\": { \"title\": \"Skip Requests\", \"description\": \"Information about any skip requests that have been received\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/SkipPhaseRequest\" } } }, \"required\": [ \"id\" ] }, \"ResumedBy\": { \"title\": \"ResumedBy\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the resume request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the resume request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"labels\" ] }, \"Interruption\": { \"title\": \"Interruption\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the interruption request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the interruption\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"resumed_by\": { \"title\": \"Resumed By\", \"description\": \"Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.\", \"allOf\": [ { \"$ref\": \"#/definitions/ResumedBy\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Cancellation\": { \"title\": \"Cancellation\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the cancel request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Killed\": { \"title\": \"Killed\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the kill request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] } } } ``` ### /tasks/{task_id}/log ``` { \"title\": \"TaskEventLog\", \"type\": \"object\", \"properties\": { \"task_id\": { \"title\": \"Task Id\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary whose keys (property names) are the indices of a phase\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phases\" } } }, \"required\": [ \"task_id\" ], \"additionalProperties\": false, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] }, \"Phases\": { \"title\": \"Phases\", \"type\": \"object\", \"properties\": { \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall phase\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary whose keys (property names) are the indices of an event in the phase\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"additionalProperties\": false } } } ``` ### /dispensers/{guid}/state ``` { \"title\": \"DispenserState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /dispensers/{guid}/health ``` { \"title\": \"DispenserHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /ingestors/{guid}/state ``` { \"title\": \"IngestorState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /ingestors/{guid}/health ``` { \"title\": \"IngestorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /fleets/{name}/state ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"robots\": { \"title\": \"Robots\", \"description\": \"A dictionary of the states of the robots that belong to this fleet\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/RobotState\" } } }, \"definitions\": { \"Status2\": { \"title\": \"Status2\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"offline\", \"shutdown\", \"idle\", \"charging\", \"working\", \"error\" ] }, \"Location2D\": { \"title\": \"Location2D\", \"type\": \"object\", \"properties\": { \"map\": { \"title\": \"Map\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"type\": \"number\" } }, \"required\": [ \"map\", \"x\", \"y\", \"yaw\" ] }, \"Issue\": { \"title\": \"Issue\", \"type\": \"object\", \"properties\": { \"category\": { \"title\": \"Category\", \"description\": \"Category of the robot\'s issue\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the issue\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] } } }, \"RobotState\": { \"title\": \"RobotState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"status\": { \"description\": \"A simple token representing the status of the robot\", \"allOf\": [ { \"$ref\": \"#/definitions/Status2\" } ] }, \"task_id\": { \"title\": \"Task Id\", \"description\": \"The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.\", \"type\": \"string\" }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"location\": { \"$ref\": \"#/definitions/Location2D\" }, \"battery\": { \"title\": \"Battery\", \"description\": \"State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)\", \"minimum\": 0.0, \"maximum\": 1.0, \"type\": \"number\" }, \"issues\": { \"title\": \"Issues\", \"description\": \"A list of issues with the robot that operators need to address\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Issue\" } } } } } } ``` ### /fleets/{name}/log ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log for the overall fleet\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"robots\": { \"title\": \"Robots\", \"description\": \"Dictionary of logs for the individual robots. The keys (property names) are the robot names.\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] } } } ``` + * # NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint. ## About This exposes a minimal pubsub system built on top of socket.io. It works similar to a normal socket.io endpoint, except that are 2 special rooms which control subscriptions. ## Rooms ### subscribe Clients must send a message to this room to start receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### unsubscribe Clients can send a message to this room to stop receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### /alerts ``` { \"title\": \"Alert\", \"description\": \"General alert that can be triggered by events.\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"original_id\": { \"title\": \"Original Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Default: default
Task: task
Fleet: fleet
Robot: robot\", \"maxLength\": 7, \"type\": \"string\" }, \"unix_millis_created_time\": { \"title\": \"Unix Millis Created Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"type\": \"integer\" }, \"acknowledged_by\": { \"title\": \"Acknowledged By\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"unix_millis_acknowledged_time\": { \"title\": \"Unix Millis Acknowledged Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"nullable\": true, \"type\": \"integer\" } }, \"required\": [ \"id\", \"original_id\", \"category\", \"unix_millis_created_time\" ], \"additionalProperties\": false } ``` ### /beacons ``` { \"title\": \"BeaconState\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"online\": { \"title\": \"Online\", \"type\": \"boolean\" }, \"category\": { \"title\": \"Category\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"activated\": { \"title\": \"Activated\", \"type\": \"boolean\" }, \"level\": { \"title\": \"Level\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"online\", \"activated\" ], \"additionalProperties\": false } ``` ### /building_map ``` { \"title\": \"BuildingMap\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Level\" } }, \"lifts\": { \"title\": \"Lifts\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Lift\" } } }, \"required\": [ \"name\", \"levels\", \"lifts\" ], \"definitions\": { \"AffineImage\": { \"title\": \"AffineImage\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x_offset\": { \"title\": \"X Offset\", \"default\": 0, \"type\": \"number\" }, \"y_offset\": { \"title\": \"Y Offset\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"scale\": { \"title\": \"Scale\", \"default\": 0, \"type\": \"number\" }, \"encoding\": { \"title\": \"Encoding\", \"default\": \"\", \"type\": \"string\" }, \"data\": { \"title\": \"Data\", \"type\": \"string\" } }, \"required\": [ \"name\", \"x_offset\", \"y_offset\", \"yaw\", \"scale\", \"encoding\", \"data\" ] }, \"Place\": { \"title\": \"Place\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"position_tolerance\": { \"title\": \"Position Tolerance\", \"default\": 0, \"type\": \"number\" }, \"yaw_tolerance\": { \"title\": \"Yaw Tolerance\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"x\", \"y\", \"yaw\", \"position_tolerance\", \"yaw_tolerance\" ] }, \"Door\": { \"title\": \"Door\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"v1_x\": { \"title\": \"V1 X\", \"default\": 0, \"type\": \"number\" }, \"v1_y\": { \"title\": \"V1 Y\", \"default\": 0, \"type\": \"number\" }, \"v2_x\": { \"title\": \"V2 X\", \"default\": 0, \"type\": \"number\" }, \"v2_y\": { \"title\": \"V2 Y\", \"default\": 0, \"type\": \"number\" }, \"door_type\": { \"title\": \"Door Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_range\": { \"title\": \"Motion Range\", \"default\": 0, \"type\": \"number\" }, \"motion_direction\": { \"title\": \"Motion Direction\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" } }, \"required\": [ \"name\", \"v1_x\", \"v1_y\", \"v2_x\", \"v2_y\", \"door_type\", \"motion_range\", \"motion_direction\" ] }, \"Param\": { \"title\": \"Param\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"type\": { \"title\": \"Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"value_int\": { \"title\": \"Value Int\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"value_float\": { \"title\": \"Value Float\", \"default\": 0, \"type\": \"number\" }, \"value_string\": { \"title\": \"Value String\", \"default\": \"\", \"type\": \"string\" }, \"value_bool\": { \"title\": \"Value Bool\", \"default\": false, \"type\": \"boolean\" } }, \"required\": [ \"name\", \"type\", \"value_int\", \"value_float\", \"value_string\", \"value_bool\" ] }, \"GraphNode\": { \"title\": \"GraphNode\", \"type\": \"object\", \"properties\": { \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"x\", \"y\", \"name\", \"params\" ] }, \"GraphEdge\": { \"title\": \"GraphEdge\", \"type\": \"object\", \"properties\": { \"v1_idx\": { \"title\": \"V1 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"v2_idx\": { \"title\": \"V2 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } }, \"edge_type\": { \"title\": \"Edge Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" } }, \"required\": [ \"v1_idx\", \"v2_idx\", \"params\", \"edge_type\" ] }, \"Graph\": { \"title\": \"Graph\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"vertices\": { \"title\": \"Vertices\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphNode\" } }, \"edges\": { \"title\": \"Edges\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphEdge\" } }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"name\", \"vertices\", \"edges\", \"params\" ] }, \"Level\": { \"title\": \"Level\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"elevation\": { \"title\": \"Elevation\", \"default\": 0, \"type\": \"number\" }, \"images\": { \"title\": \"Images\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/AffineImage\" } }, \"places\": { \"title\": \"Places\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Place\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"nav_graphs\": { \"title\": \"Nav Graphs\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Graph\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] } }, \"required\": [ \"name\", \"elevation\", \"images\", \"places\", \"doors\", \"nav_graphs\", \"wall_graph\" ] }, \"Lift\": { \"title\": \"Lift\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] }, \"ref_x\": { \"title\": \"Ref X\", \"default\": 0, \"type\": \"number\" }, \"ref_y\": { \"title\": \"Ref Y\", \"default\": 0, \"type\": \"number\" }, \"ref_yaw\": { \"title\": \"Ref Yaw\", \"default\": 0, \"type\": \"number\" }, \"width\": { \"title\": \"Width\", \"default\": 0, \"type\": \"number\" }, \"depth\": { \"title\": \"Depth\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"levels\", \"doors\", \"wall_graph\", \"ref_x\", \"ref_y\", \"ref_yaw\", \"width\", \"depth\" ] } } } ``` ### /delivery_alerts ``` { \"title\": \"DeliveryAlert\", \"description\": \"Custom alerts for custom delivery tasks\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Missing: missing
Wrong: wrong\", \"maxLength\": 7, \"type\": \"string\" }, \"tier\": { \"title\": \"Tier\", \"description\": \"Warning: warning
Error: error\", \"maxLength\": 7, \"type\": \"string\" }, \"task_id\": { \"title\": \"Task Id\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"action\": { \"title\": \"Action\", \"description\": \"Waiting: waiting
Cancel: cancelled
Override: override
Resume: resume\", \"maxLength\": 9, \"type\": \"string\" }, \"message\": { \"title\": \"Message\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"category\", \"tier\", \"action\" ], \"additionalProperties\": false } ``` ### /doors/{door_name}/state ``` { \"title\": \"DoorState\", \"type\": \"object\", \"properties\": { \"door_time\": { \"title\": \"Door Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"door_name\": { \"title\": \"Door Name\", \"default\": \"\", \"type\": \"string\" }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": { \"value\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/DoorMode\" } ] } }, \"required\": [ \"door_time\", \"door_name\", \"current_mode\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] }, \"DoorMode\": { \"title\": \"DoorMode\", \"type\": \"object\", \"properties\": { \"value\": { \"title\": \"Value\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"value\" ] } } } ``` ### /doors/{door_name}/health ``` { \"title\": \"DoorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /lifts/{lift_name}/state ``` { \"title\": \"LiftState\", \"type\": \"object\", \"properties\": { \"lift_time\": { \"title\": \"Lift Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"lift_name\": { \"title\": \"Lift Name\", \"default\": \"\", \"type\": \"string\" }, \"available_floors\": { \"title\": \"Available Floors\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"current_floor\": { \"title\": \"Current Floor\", \"default\": \"\", \"type\": \"string\" }, \"destination_floor\": { \"title\": \"Destination Floor\", \"default\": \"\", \"type\": \"string\" }, \"door_state\": { \"title\": \"Door State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_state\": { \"title\": \"Motion State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"available_modes\": { \"title\": \"Available Modes\", \"type\": \"array\", \"items\": { \"type\": \"integer\" } }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"session_id\": { \"title\": \"Session Id\", \"default\": \"\", \"type\": \"string\" } }, \"required\": [ \"lift_time\", \"lift_name\", \"available_floors\", \"current_floor\", \"destination_floor\", \"door_state\", \"motion_state\", \"available_modes\", \"current_mode\", \"session_id\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /lifts/{lift_name}/health ``` { \"title\": \"LiftHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /tasks/{task_id}/state ``` { \"title\": \"TaskState\", \"type\": \"object\", \"properties\": { \"booking\": { \"$ref\": \"#/definitions/Booking\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"assigned_to\": { \"title\": \"Assigned To\", \"description\": \"Which agent (robot) is the task assigned to\", \"allOf\": [ { \"$ref\": \"#/definitions/AssignedTo\" } ] }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"dispatch\": { \"$ref\": \"#/definitions/Dispatch\" }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phase\" } }, \"completed\": { \"title\": \"Completed\", \"description\": \"An array of the IDs of completed phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"active\": { \"title\": \"Active\", \"description\": \"The ID of the active phase for this task\", \"allOf\": [ { \"$ref\": \"#/definitions/Id\" } ] }, \"pending\": { \"title\": \"Pending\", \"description\": \"An array of the pending phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"interruptions\": { \"title\": \"Interruptions\", \"description\": \"A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Interruption\" } }, \"cancellation\": { \"title\": \"Cancellation\", \"description\": \"If the task was cancelled, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Cancellation\" } ] }, \"killed\": { \"title\": \"Killed\", \"description\": \"If the task was killed, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Killed\" } ] }, \"unix_millis_warn_time\": { \"title\": \"Unix Millis Warn Time\", \"type\": \"integer\" } }, \"required\": [ \"booking\" ], \"definitions\": { \"Booking\": { \"title\": \"Booking\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"description\": \"The unique identifier for this task\", \"type\": \"string\" }, \"unix_millis_earliest_start_time\": { \"title\": \"Unix Millis Earliest Start Time\", \"type\": \"integer\" }, \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"type\": \"integer\" }, \"priority\": { \"title\": \"Priority\", \"description\": \"Priority information about this task\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"string\" } ] }, \"labels\": { \"title\": \"Labels\", \"description\": \"Information about how and why this task was booked\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"requester\": { \"title\": \"Requester\", \"description\": \"(Optional) An identifier for the entity that requested this task\", \"type\": \"string\" } }, \"required\": [ \"id\" ] }, \"Category\": { \"title\": \"Category\", \"description\": \"The category of this task or phase\", \"type\": \"string\" }, \"Detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about a task, phase, or event\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] }, \"EstimateMillis\": { \"title\": \"EstimateMillis\", \"description\": \"An estimate, in milliseconds, of how long the subject will take to complete\", \"minimum\": 0, \"type\": \"integer\" }, \"AssignedTo\": { \"title\": \"AssignedTo\", \"type\": \"object\", \"properties\": { \"group\": { \"title\": \"Group\", \"type\": \"string\" }, \"name\": { \"title\": \"Name\", \"type\": \"string\" } }, \"required\": [ \"group\", \"name\" ] }, \"Status\": { \"title\": \"Status\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"blocked\", \"error\", \"failed\", \"queued\", \"standby\", \"underway\", \"delayed\", \"skipped\", \"canceled\", \"killed\", \"completed\" ] }, \"Status1\": { \"title\": \"Status1\", \"description\": \"An enumeration.\", \"enum\": [ \"queued\", \"selected\", \"dispatched\", \"failed_to_assign\", \"canceled_in_flight\" ] }, \"Assignment\": { \"title\": \"Assignment\", \"type\": \"object\", \"properties\": { \"fleet_name\": { \"title\": \"Fleet Name\", \"type\": \"string\" }, \"expected_robot_name\": { \"title\": \"Expected Robot Name\", \"type\": \"string\" } } }, \"Error\": { \"title\": \"Error\", \"type\": \"object\", \"properties\": { \"code\": { \"title\": \"Code\", \"description\": \"A standard code for the kind of error that has occurred\", \"minimum\": 0, \"type\": \"integer\" }, \"category\": { \"title\": \"Category\", \"description\": \"The category of the error\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Details about the error\", \"type\": \"string\" } } }, \"Dispatch\": { \"title\": \"Dispatch\", \"type\": \"object\", \"properties\": { \"status\": { \"$ref\": \"#/definitions/Status1\" }, \"assignment\": { \"$ref\": \"#/definitions/Assignment\" }, \"errors\": { \"title\": \"Errors\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Error\" } } }, \"required\": [ \"status\" ] }, \"Id\": { \"title\": \"Id\", \"minimum\": 0, \"type\": \"integer\" }, \"EventState\": { \"title\": \"EventState\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"name\": { \"title\": \"Name\", \"description\": \"The brief name of the event\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the event\", \"allOf\": [ { \"$ref\": \"#/definitions/Detail\" } ] }, \"deps\": { \"title\": \"Deps\", \"description\": \"This event may depend on other events. This array contains the IDs of those other event dependencies.\", \"type\": \"array\", \"items\": { \"type\": \"integer\", \"minimum\": 0 } } }, \"required\": [ \"id\" ] }, \"Undo\": { \"title\": \"Undo\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the undo skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the undo skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"SkipPhaseRequest\": { \"title\": \"SkipPhaseRequest\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"undo\": { \"title\": \"Undo\", \"description\": \"Information about an undo skip request that applied to this request\", \"allOf\": [ { \"$ref\": \"#/definitions/Undo\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Phase\": { \"title\": \"Phase\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"final_event_id\": { \"$ref\": \"#/definitions/Id\" }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/EventState\" } }, \"skip_requests\": { \"title\": \"Skip Requests\", \"description\": \"Information about any skip requests that have been received\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/SkipPhaseRequest\" } } }, \"required\": [ \"id\" ] }, \"ResumedBy\": { \"title\": \"ResumedBy\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the resume request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the resume request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"labels\" ] }, \"Interruption\": { \"title\": \"Interruption\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the interruption request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the interruption\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"resumed_by\": { \"title\": \"Resumed By\", \"description\": \"Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.\", \"allOf\": [ { \"$ref\": \"#/definitions/ResumedBy\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Cancellation\": { \"title\": \"Cancellation\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the cancel request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Killed\": { \"title\": \"Killed\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the kill request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] } } } ``` ### /tasks/{task_id}/log ``` { \"title\": \"TaskEventLog\", \"type\": \"object\", \"properties\": { \"task_id\": { \"title\": \"Task Id\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary whose keys (property names) are the indices of a phase\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phases\" } } }, \"required\": [ \"task_id\" ], \"additionalProperties\": false, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] }, \"Phases\": { \"title\": \"Phases\", \"type\": \"object\", \"properties\": { \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall phase\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary whose keys (property names) are the indices of an event in the phase\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"additionalProperties\": false } } } ``` ### /dispensers/{guid}/state ``` { \"title\": \"DispenserState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /dispensers/{guid}/health ``` { \"title\": \"DispenserHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /ingestors/{guid}/state ``` { \"title\": \"IngestorState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /ingestors/{guid}/health ``` { \"title\": \"IngestorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /fleets/{name}/state ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"robots\": { \"title\": \"Robots\", \"description\": \"A dictionary of the states of the robots that belong to this fleet\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/RobotState\" } } }, \"definitions\": { \"Status2\": { \"title\": \"Status2\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"offline\", \"shutdown\", \"idle\", \"charging\", \"working\", \"error\" ] }, \"Location2D\": { \"title\": \"Location2D\", \"type\": \"object\", \"properties\": { \"map\": { \"title\": \"Map\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"type\": \"number\" } }, \"required\": [ \"map\", \"x\", \"y\", \"yaw\" ] }, \"Issue\": { \"title\": \"Issue\", \"type\": \"object\", \"properties\": { \"category\": { \"title\": \"Category\", \"description\": \"Category of the robot\'s issue\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the issue\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] } } }, \"RobotState\": { \"title\": \"RobotState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"status\": { \"description\": \"A simple token representing the status of the robot\", \"allOf\": [ { \"$ref\": \"#/definitions/Status2\" } ] }, \"task_id\": { \"title\": \"Task Id\", \"description\": \"The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.\", \"type\": \"string\" }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"location\": { \"$ref\": \"#/definitions/Location2D\" }, \"battery\": { \"title\": \"Battery\", \"description\": \"State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)\", \"minimum\": 0.0, \"maximum\": 1.0, \"type\": \"number\" }, \"issues\": { \"title\": \"Issues\", \"description\": \"A list of issues with the robot that operators need to address\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Issue\" } } } } } } ``` ### /fleets/{name}/log ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log for the overall fleet\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"robots\": { \"title\": \"Robots\", \"description\": \"Dictionary of logs for the individual robots. The keys (property names) are the robot names.\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] } } } ``` * @summary Socket.io endpoint * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -5590,7 +5633,7 @@ export const DefaultApiFp = function (configuration?: Configuration) { return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * # NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint. ## About This exposes a minimal pubsub system built on top of socket.io. It works similar to a normal socket.io endpoint, except that are 2 special rooms which control subscriptions. ## Rooms ### subscribe Clients must send a message to this room to start receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### unsubscribe Clients can send a message to this room to stop receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### /alerts ``` { \"title\": \"Alert\", \"description\": \"General alert that can be triggered by events.\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"original_id\": { \"title\": \"Original Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Default: default
Task: task
Fleet: fleet
Robot: robot\", \"maxLength\": 7, \"type\": \"string\" }, \"unix_millis_created_time\": { \"title\": \"Unix Millis Created Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"type\": \"integer\" }, \"acknowledged_by\": { \"title\": \"Acknowledged By\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"unix_millis_acknowledged_time\": { \"title\": \"Unix Millis Acknowledged Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"nullable\": true, \"type\": \"integer\" } }, \"required\": [ \"id\", \"original_id\", \"category\", \"unix_millis_created_time\" ], \"additionalProperties\": false } ``` ### /beacons ``` { \"title\": \"BeaconState\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"online\": { \"title\": \"Online\", \"type\": \"boolean\" }, \"category\": { \"title\": \"Category\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"activated\": { \"title\": \"Activated\", \"type\": \"boolean\" }, \"level\": { \"title\": \"Level\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"online\", \"activated\" ], \"additionalProperties\": false } ``` ### /building_map ``` { \"title\": \"BuildingMap\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Level\" } }, \"lifts\": { \"title\": \"Lifts\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Lift\" } } }, \"required\": [ \"name\", \"levels\", \"lifts\" ], \"definitions\": { \"AffineImage\": { \"title\": \"AffineImage\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x_offset\": { \"title\": \"X Offset\", \"default\": 0, \"type\": \"number\" }, \"y_offset\": { \"title\": \"Y Offset\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"scale\": { \"title\": \"Scale\", \"default\": 0, \"type\": \"number\" }, \"encoding\": { \"title\": \"Encoding\", \"default\": \"\", \"type\": \"string\" }, \"data\": { \"title\": \"Data\", \"type\": \"string\" } }, \"required\": [ \"name\", \"x_offset\", \"y_offset\", \"yaw\", \"scale\", \"encoding\", \"data\" ] }, \"Place\": { \"title\": \"Place\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"position_tolerance\": { \"title\": \"Position Tolerance\", \"default\": 0, \"type\": \"number\" }, \"yaw_tolerance\": { \"title\": \"Yaw Tolerance\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"x\", \"y\", \"yaw\", \"position_tolerance\", \"yaw_tolerance\" ] }, \"Door\": { \"title\": \"Door\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"v1_x\": { \"title\": \"V1 X\", \"default\": 0, \"type\": \"number\" }, \"v1_y\": { \"title\": \"V1 Y\", \"default\": 0, \"type\": \"number\" }, \"v2_x\": { \"title\": \"V2 X\", \"default\": 0, \"type\": \"number\" }, \"v2_y\": { \"title\": \"V2 Y\", \"default\": 0, \"type\": \"number\" }, \"door_type\": { \"title\": \"Door Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_range\": { \"title\": \"Motion Range\", \"default\": 0, \"type\": \"number\" }, \"motion_direction\": { \"title\": \"Motion Direction\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" } }, \"required\": [ \"name\", \"v1_x\", \"v1_y\", \"v2_x\", \"v2_y\", \"door_type\", \"motion_range\", \"motion_direction\" ] }, \"Param\": { \"title\": \"Param\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"type\": { \"title\": \"Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"value_int\": { \"title\": \"Value Int\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"value_float\": { \"title\": \"Value Float\", \"default\": 0, \"type\": \"number\" }, \"value_string\": { \"title\": \"Value String\", \"default\": \"\", \"type\": \"string\" }, \"value_bool\": { \"title\": \"Value Bool\", \"default\": false, \"type\": \"boolean\" } }, \"required\": [ \"name\", \"type\", \"value_int\", \"value_float\", \"value_string\", \"value_bool\" ] }, \"GraphNode\": { \"title\": \"GraphNode\", \"type\": \"object\", \"properties\": { \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"x\", \"y\", \"name\", \"params\" ] }, \"GraphEdge\": { \"title\": \"GraphEdge\", \"type\": \"object\", \"properties\": { \"v1_idx\": { \"title\": \"V1 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"v2_idx\": { \"title\": \"V2 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } }, \"edge_type\": { \"title\": \"Edge Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" } }, \"required\": [ \"v1_idx\", \"v2_idx\", \"params\", \"edge_type\" ] }, \"Graph\": { \"title\": \"Graph\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"vertices\": { \"title\": \"Vertices\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphNode\" } }, \"edges\": { \"title\": \"Edges\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphEdge\" } }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"name\", \"vertices\", \"edges\", \"params\" ] }, \"Level\": { \"title\": \"Level\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"elevation\": { \"title\": \"Elevation\", \"default\": 0, \"type\": \"number\" }, \"images\": { \"title\": \"Images\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/AffineImage\" } }, \"places\": { \"title\": \"Places\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Place\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"nav_graphs\": { \"title\": \"Nav Graphs\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Graph\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] } }, \"required\": [ \"name\", \"elevation\", \"images\", \"places\", \"doors\", \"nav_graphs\", \"wall_graph\" ] }, \"Lift\": { \"title\": \"Lift\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] }, \"ref_x\": { \"title\": \"Ref X\", \"default\": 0, \"type\": \"number\" }, \"ref_y\": { \"title\": \"Ref Y\", \"default\": 0, \"type\": \"number\" }, \"ref_yaw\": { \"title\": \"Ref Yaw\", \"default\": 0, \"type\": \"number\" }, \"width\": { \"title\": \"Width\", \"default\": 0, \"type\": \"number\" }, \"depth\": { \"title\": \"Depth\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"levels\", \"doors\", \"wall_graph\", \"ref_x\", \"ref_y\", \"ref_yaw\", \"width\", \"depth\" ] } } } ``` ### /doors/{door_name}/state ``` { \"title\": \"DoorState\", \"type\": \"object\", \"properties\": { \"door_time\": { \"title\": \"Door Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"door_name\": { \"title\": \"Door Name\", \"default\": \"\", \"type\": \"string\" }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": { \"value\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/DoorMode\" } ] } }, \"required\": [ \"door_time\", \"door_name\", \"current_mode\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] }, \"DoorMode\": { \"title\": \"DoorMode\", \"type\": \"object\", \"properties\": { \"value\": { \"title\": \"Value\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"value\" ] } } } ``` ### /doors/{door_name}/health ``` { \"title\": \"DoorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /lifts/{lift_name}/state ``` { \"title\": \"LiftState\", \"type\": \"object\", \"properties\": { \"lift_time\": { \"title\": \"Lift Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"lift_name\": { \"title\": \"Lift Name\", \"default\": \"\", \"type\": \"string\" }, \"available_floors\": { \"title\": \"Available Floors\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"current_floor\": { \"title\": \"Current Floor\", \"default\": \"\", \"type\": \"string\" }, \"destination_floor\": { \"title\": \"Destination Floor\", \"default\": \"\", \"type\": \"string\" }, \"door_state\": { \"title\": \"Door State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_state\": { \"title\": \"Motion State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"available_modes\": { \"title\": \"Available Modes\", \"type\": \"array\", \"items\": { \"type\": \"integer\" } }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"session_id\": { \"title\": \"Session Id\", \"default\": \"\", \"type\": \"string\" } }, \"required\": [ \"lift_time\", \"lift_name\", \"available_floors\", \"current_floor\", \"destination_floor\", \"door_state\", \"motion_state\", \"available_modes\", \"current_mode\", \"session_id\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /lifts/{lift_name}/health ``` { \"title\": \"LiftHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /tasks/{task_id}/state ``` { \"title\": \"TaskState\", \"type\": \"object\", \"properties\": { \"booking\": { \"$ref\": \"#/definitions/Booking\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"assigned_to\": { \"title\": \"Assigned To\", \"description\": \"Which agent (robot) is the task assigned to\", \"allOf\": [ { \"$ref\": \"#/definitions/AssignedTo\" } ] }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"dispatch\": { \"$ref\": \"#/definitions/Dispatch\" }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phase\" } }, \"completed\": { \"title\": \"Completed\", \"description\": \"An array of the IDs of completed phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"active\": { \"title\": \"Active\", \"description\": \"The ID of the active phase for this task\", \"allOf\": [ { \"$ref\": \"#/definitions/Id\" } ] }, \"pending\": { \"title\": \"Pending\", \"description\": \"An array of the pending phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"interruptions\": { \"title\": \"Interruptions\", \"description\": \"A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Interruption\" } }, \"cancellation\": { \"title\": \"Cancellation\", \"description\": \"If the task was cancelled, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Cancellation\" } ] }, \"killed\": { \"title\": \"Killed\", \"description\": \"If the task was killed, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Killed\" } ] }, \"unix_millis_warn_time\": { \"title\": \"Unix Millis Warn Time\", \"type\": \"integer\" } }, \"required\": [ \"booking\" ], \"definitions\": { \"Booking\": { \"title\": \"Booking\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"description\": \"The unique identifier for this task\", \"type\": \"string\" }, \"unix_millis_earliest_start_time\": { \"title\": \"Unix Millis Earliest Start Time\", \"type\": \"integer\" }, \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"type\": \"integer\" }, \"priority\": { \"title\": \"Priority\", \"description\": \"Priority information about this task\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"string\" } ] }, \"labels\": { \"title\": \"Labels\", \"description\": \"Information about how and why this task was booked\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"requester\": { \"title\": \"Requester\", \"description\": \"(Optional) An identifier for the entity that requested this task\", \"type\": \"string\" } }, \"required\": [ \"id\" ] }, \"Category\": { \"title\": \"Category\", \"description\": \"The category of this task or phase\", \"type\": \"string\" }, \"Detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about a task, phase, or event\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] }, \"EstimateMillis\": { \"title\": \"EstimateMillis\", \"description\": \"An estimate, in milliseconds, of how long the subject will take to complete\", \"minimum\": 0, \"type\": \"integer\" }, \"AssignedTo\": { \"title\": \"AssignedTo\", \"type\": \"object\", \"properties\": { \"group\": { \"title\": \"Group\", \"type\": \"string\" }, \"name\": { \"title\": \"Name\", \"type\": \"string\" } }, \"required\": [ \"group\", \"name\" ] }, \"Status\": { \"title\": \"Status\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"blocked\", \"error\", \"failed\", \"queued\", \"standby\", \"underway\", \"delayed\", \"skipped\", \"canceled\", \"killed\", \"completed\" ] }, \"Status1\": { \"title\": \"Status1\", \"description\": \"An enumeration.\", \"enum\": [ \"queued\", \"selected\", \"dispatched\", \"failed_to_assign\", \"canceled_in_flight\" ] }, \"Assignment\": { \"title\": \"Assignment\", \"type\": \"object\", \"properties\": { \"fleet_name\": { \"title\": \"Fleet Name\", \"type\": \"string\" }, \"expected_robot_name\": { \"title\": \"Expected Robot Name\", \"type\": \"string\" } } }, \"Error\": { \"title\": \"Error\", \"type\": \"object\", \"properties\": { \"code\": { \"title\": \"Code\", \"description\": \"A standard code for the kind of error that has occurred\", \"minimum\": 0, \"type\": \"integer\" }, \"category\": { \"title\": \"Category\", \"description\": \"The category of the error\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Details about the error\", \"type\": \"string\" } } }, \"Dispatch\": { \"title\": \"Dispatch\", \"type\": \"object\", \"properties\": { \"status\": { \"$ref\": \"#/definitions/Status1\" }, \"assignment\": { \"$ref\": \"#/definitions/Assignment\" }, \"errors\": { \"title\": \"Errors\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Error\" } } }, \"required\": [ \"status\" ] }, \"Id\": { \"title\": \"Id\", \"minimum\": 0, \"type\": \"integer\" }, \"EventState\": { \"title\": \"EventState\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"name\": { \"title\": \"Name\", \"description\": \"The brief name of the event\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the event\", \"allOf\": [ { \"$ref\": \"#/definitions/Detail\" } ] }, \"deps\": { \"title\": \"Deps\", \"description\": \"This event may depend on other events. This array contains the IDs of those other event dependencies.\", \"type\": \"array\", \"items\": { \"type\": \"integer\", \"minimum\": 0 } } }, \"required\": [ \"id\" ] }, \"Undo\": { \"title\": \"Undo\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the undo skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the undo skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"SkipPhaseRequest\": { \"title\": \"SkipPhaseRequest\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"undo\": { \"title\": \"Undo\", \"description\": \"Information about an undo skip request that applied to this request\", \"allOf\": [ { \"$ref\": \"#/definitions/Undo\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Phase\": { \"title\": \"Phase\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"final_event_id\": { \"$ref\": \"#/definitions/Id\" }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/EventState\" } }, \"skip_requests\": { \"title\": \"Skip Requests\", \"description\": \"Information about any skip requests that have been received\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/SkipPhaseRequest\" } } }, \"required\": [ \"id\" ] }, \"ResumedBy\": { \"title\": \"ResumedBy\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the resume request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the resume request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"labels\" ] }, \"Interruption\": { \"title\": \"Interruption\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the interruption request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the interruption\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"resumed_by\": { \"title\": \"Resumed By\", \"description\": \"Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.\", \"allOf\": [ { \"$ref\": \"#/definitions/ResumedBy\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Cancellation\": { \"title\": \"Cancellation\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the cancel request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Killed\": { \"title\": \"Killed\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the kill request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] } } } ``` ### /tasks/{task_id}/log ``` { \"title\": \"TaskEventLog\", \"type\": \"object\", \"properties\": { \"task_id\": { \"title\": \"Task Id\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary whose keys (property names) are the indices of a phase\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phases\" } } }, \"required\": [ \"task_id\" ], \"additionalProperties\": false, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] }, \"Phases\": { \"title\": \"Phases\", \"type\": \"object\", \"properties\": { \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall phase\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary whose keys (property names) are the indices of an event in the phase\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"additionalProperties\": false } } } ``` ### /dispensers/{guid}/state ``` { \"title\": \"DispenserState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /dispensers/{guid}/health ``` { \"title\": \"DispenserHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /ingestors/{guid}/state ``` { \"title\": \"IngestorState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /ingestors/{guid}/health ``` { \"title\": \"IngestorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /fleets/{name}/state ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"robots\": { \"title\": \"Robots\", \"description\": \"A dictionary of the states of the robots that belong to this fleet\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/RobotState\" } } }, \"definitions\": { \"Status2\": { \"title\": \"Status2\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"offline\", \"shutdown\", \"idle\", \"charging\", \"working\", \"error\" ] }, \"Location2D\": { \"title\": \"Location2D\", \"type\": \"object\", \"properties\": { \"map\": { \"title\": \"Map\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"type\": \"number\" } }, \"required\": [ \"map\", \"x\", \"y\", \"yaw\" ] }, \"Issue\": { \"title\": \"Issue\", \"type\": \"object\", \"properties\": { \"category\": { \"title\": \"Category\", \"description\": \"Category of the robot\'s issue\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the issue\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] } } }, \"RobotState\": { \"title\": \"RobotState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"status\": { \"description\": \"A simple token representing the status of the robot\", \"allOf\": [ { \"$ref\": \"#/definitions/Status2\" } ] }, \"task_id\": { \"title\": \"Task Id\", \"description\": \"The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.\", \"type\": \"string\" }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"location\": { \"$ref\": \"#/definitions/Location2D\" }, \"battery\": { \"title\": \"Battery\", \"description\": \"State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)\", \"minimum\": 0.0, \"maximum\": 1.0, \"type\": \"number\" }, \"issues\": { \"title\": \"Issues\", \"description\": \"A list of issues with the robot that operators need to address\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Issue\" } } } } } } ``` ### /fleets/{name}/log ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log for the overall fleet\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"robots\": { \"title\": \"Robots\", \"description\": \"Dictionary of logs for the individual robots. The keys (property names) are the robot names.\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] } } } ``` + * # NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint. ## About This exposes a minimal pubsub system built on top of socket.io. It works similar to a normal socket.io endpoint, except that are 2 special rooms which control subscriptions. ## Rooms ### subscribe Clients must send a message to this room to start receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### unsubscribe Clients can send a message to this room to stop receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### /alerts ``` { \"title\": \"Alert\", \"description\": \"General alert that can be triggered by events.\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"original_id\": { \"title\": \"Original Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Default: default
Task: task
Fleet: fleet
Robot: robot\", \"maxLength\": 7, \"type\": \"string\" }, \"unix_millis_created_time\": { \"title\": \"Unix Millis Created Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"type\": \"integer\" }, \"acknowledged_by\": { \"title\": \"Acknowledged By\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"unix_millis_acknowledged_time\": { \"title\": \"Unix Millis Acknowledged Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"nullable\": true, \"type\": \"integer\" } }, \"required\": [ \"id\", \"original_id\", \"category\", \"unix_millis_created_time\" ], \"additionalProperties\": false } ``` ### /beacons ``` { \"title\": \"BeaconState\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"online\": { \"title\": \"Online\", \"type\": \"boolean\" }, \"category\": { \"title\": \"Category\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"activated\": { \"title\": \"Activated\", \"type\": \"boolean\" }, \"level\": { \"title\": \"Level\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"online\", \"activated\" ], \"additionalProperties\": false } ``` ### /building_map ``` { \"title\": \"BuildingMap\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Level\" } }, \"lifts\": { \"title\": \"Lifts\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Lift\" } } }, \"required\": [ \"name\", \"levels\", \"lifts\" ], \"definitions\": { \"AffineImage\": { \"title\": \"AffineImage\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x_offset\": { \"title\": \"X Offset\", \"default\": 0, \"type\": \"number\" }, \"y_offset\": { \"title\": \"Y Offset\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"scale\": { \"title\": \"Scale\", \"default\": 0, \"type\": \"number\" }, \"encoding\": { \"title\": \"Encoding\", \"default\": \"\", \"type\": \"string\" }, \"data\": { \"title\": \"Data\", \"type\": \"string\" } }, \"required\": [ \"name\", \"x_offset\", \"y_offset\", \"yaw\", \"scale\", \"encoding\", \"data\" ] }, \"Place\": { \"title\": \"Place\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"position_tolerance\": { \"title\": \"Position Tolerance\", \"default\": 0, \"type\": \"number\" }, \"yaw_tolerance\": { \"title\": \"Yaw Tolerance\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"x\", \"y\", \"yaw\", \"position_tolerance\", \"yaw_tolerance\" ] }, \"Door\": { \"title\": \"Door\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"v1_x\": { \"title\": \"V1 X\", \"default\": 0, \"type\": \"number\" }, \"v1_y\": { \"title\": \"V1 Y\", \"default\": 0, \"type\": \"number\" }, \"v2_x\": { \"title\": \"V2 X\", \"default\": 0, \"type\": \"number\" }, \"v2_y\": { \"title\": \"V2 Y\", \"default\": 0, \"type\": \"number\" }, \"door_type\": { \"title\": \"Door Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_range\": { \"title\": \"Motion Range\", \"default\": 0, \"type\": \"number\" }, \"motion_direction\": { \"title\": \"Motion Direction\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" } }, \"required\": [ \"name\", \"v1_x\", \"v1_y\", \"v2_x\", \"v2_y\", \"door_type\", \"motion_range\", \"motion_direction\" ] }, \"Param\": { \"title\": \"Param\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"type\": { \"title\": \"Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"value_int\": { \"title\": \"Value Int\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"value_float\": { \"title\": \"Value Float\", \"default\": 0, \"type\": \"number\" }, \"value_string\": { \"title\": \"Value String\", \"default\": \"\", \"type\": \"string\" }, \"value_bool\": { \"title\": \"Value Bool\", \"default\": false, \"type\": \"boolean\" } }, \"required\": [ \"name\", \"type\", \"value_int\", \"value_float\", \"value_string\", \"value_bool\" ] }, \"GraphNode\": { \"title\": \"GraphNode\", \"type\": \"object\", \"properties\": { \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"x\", \"y\", \"name\", \"params\" ] }, \"GraphEdge\": { \"title\": \"GraphEdge\", \"type\": \"object\", \"properties\": { \"v1_idx\": { \"title\": \"V1 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"v2_idx\": { \"title\": \"V2 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } }, \"edge_type\": { \"title\": \"Edge Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" } }, \"required\": [ \"v1_idx\", \"v2_idx\", \"params\", \"edge_type\" ] }, \"Graph\": { \"title\": \"Graph\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"vertices\": { \"title\": \"Vertices\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphNode\" } }, \"edges\": { \"title\": \"Edges\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphEdge\" } }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"name\", \"vertices\", \"edges\", \"params\" ] }, \"Level\": { \"title\": \"Level\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"elevation\": { \"title\": \"Elevation\", \"default\": 0, \"type\": \"number\" }, \"images\": { \"title\": \"Images\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/AffineImage\" } }, \"places\": { \"title\": \"Places\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Place\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"nav_graphs\": { \"title\": \"Nav Graphs\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Graph\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] } }, \"required\": [ \"name\", \"elevation\", \"images\", \"places\", \"doors\", \"nav_graphs\", \"wall_graph\" ] }, \"Lift\": { \"title\": \"Lift\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] }, \"ref_x\": { \"title\": \"Ref X\", \"default\": 0, \"type\": \"number\" }, \"ref_y\": { \"title\": \"Ref Y\", \"default\": 0, \"type\": \"number\" }, \"ref_yaw\": { \"title\": \"Ref Yaw\", \"default\": 0, \"type\": \"number\" }, \"width\": { \"title\": \"Width\", \"default\": 0, \"type\": \"number\" }, \"depth\": { \"title\": \"Depth\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"levels\", \"doors\", \"wall_graph\", \"ref_x\", \"ref_y\", \"ref_yaw\", \"width\", \"depth\" ] } } } ``` ### /delivery_alerts ``` { \"title\": \"DeliveryAlert\", \"description\": \"Custom alerts for custom delivery tasks\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Missing: missing
Wrong: wrong\", \"maxLength\": 7, \"type\": \"string\" }, \"tier\": { \"title\": \"Tier\", \"description\": \"Warning: warning
Error: error\", \"maxLength\": 7, \"type\": \"string\" }, \"task_id\": { \"title\": \"Task Id\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"action\": { \"title\": \"Action\", \"description\": \"Waiting: waiting
Cancel: cancelled
Override: override
Resume: resume\", \"maxLength\": 9, \"type\": \"string\" }, \"message\": { \"title\": \"Message\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"category\", \"tier\", \"action\" ], \"additionalProperties\": false } ``` ### /doors/{door_name}/state ``` { \"title\": \"DoorState\", \"type\": \"object\", \"properties\": { \"door_time\": { \"title\": \"Door Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"door_name\": { \"title\": \"Door Name\", \"default\": \"\", \"type\": \"string\" }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": { \"value\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/DoorMode\" } ] } }, \"required\": [ \"door_time\", \"door_name\", \"current_mode\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] }, \"DoorMode\": { \"title\": \"DoorMode\", \"type\": \"object\", \"properties\": { \"value\": { \"title\": \"Value\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"value\" ] } } } ``` ### /doors/{door_name}/health ``` { \"title\": \"DoorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /lifts/{lift_name}/state ``` { \"title\": \"LiftState\", \"type\": \"object\", \"properties\": { \"lift_time\": { \"title\": \"Lift Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"lift_name\": { \"title\": \"Lift Name\", \"default\": \"\", \"type\": \"string\" }, \"available_floors\": { \"title\": \"Available Floors\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"current_floor\": { \"title\": \"Current Floor\", \"default\": \"\", \"type\": \"string\" }, \"destination_floor\": { \"title\": \"Destination Floor\", \"default\": \"\", \"type\": \"string\" }, \"door_state\": { \"title\": \"Door State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_state\": { \"title\": \"Motion State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"available_modes\": { \"title\": \"Available Modes\", \"type\": \"array\", \"items\": { \"type\": \"integer\" } }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"session_id\": { \"title\": \"Session Id\", \"default\": \"\", \"type\": \"string\" } }, \"required\": [ \"lift_time\", \"lift_name\", \"available_floors\", \"current_floor\", \"destination_floor\", \"door_state\", \"motion_state\", \"available_modes\", \"current_mode\", \"session_id\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /lifts/{lift_name}/health ``` { \"title\": \"LiftHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /tasks/{task_id}/state ``` { \"title\": \"TaskState\", \"type\": \"object\", \"properties\": { \"booking\": { \"$ref\": \"#/definitions/Booking\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"assigned_to\": { \"title\": \"Assigned To\", \"description\": \"Which agent (robot) is the task assigned to\", \"allOf\": [ { \"$ref\": \"#/definitions/AssignedTo\" } ] }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"dispatch\": { \"$ref\": \"#/definitions/Dispatch\" }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phase\" } }, \"completed\": { \"title\": \"Completed\", \"description\": \"An array of the IDs of completed phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"active\": { \"title\": \"Active\", \"description\": \"The ID of the active phase for this task\", \"allOf\": [ { \"$ref\": \"#/definitions/Id\" } ] }, \"pending\": { \"title\": \"Pending\", \"description\": \"An array of the pending phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"interruptions\": { \"title\": \"Interruptions\", \"description\": \"A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Interruption\" } }, \"cancellation\": { \"title\": \"Cancellation\", \"description\": \"If the task was cancelled, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Cancellation\" } ] }, \"killed\": { \"title\": \"Killed\", \"description\": \"If the task was killed, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Killed\" } ] }, \"unix_millis_warn_time\": { \"title\": \"Unix Millis Warn Time\", \"type\": \"integer\" } }, \"required\": [ \"booking\" ], \"definitions\": { \"Booking\": { \"title\": \"Booking\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"description\": \"The unique identifier for this task\", \"type\": \"string\" }, \"unix_millis_earliest_start_time\": { \"title\": \"Unix Millis Earliest Start Time\", \"type\": \"integer\" }, \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"type\": \"integer\" }, \"priority\": { \"title\": \"Priority\", \"description\": \"Priority information about this task\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"string\" } ] }, \"labels\": { \"title\": \"Labels\", \"description\": \"Information about how and why this task was booked\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"requester\": { \"title\": \"Requester\", \"description\": \"(Optional) An identifier for the entity that requested this task\", \"type\": \"string\" } }, \"required\": [ \"id\" ] }, \"Category\": { \"title\": \"Category\", \"description\": \"The category of this task or phase\", \"type\": \"string\" }, \"Detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about a task, phase, or event\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] }, \"EstimateMillis\": { \"title\": \"EstimateMillis\", \"description\": \"An estimate, in milliseconds, of how long the subject will take to complete\", \"minimum\": 0, \"type\": \"integer\" }, \"AssignedTo\": { \"title\": \"AssignedTo\", \"type\": \"object\", \"properties\": { \"group\": { \"title\": \"Group\", \"type\": \"string\" }, \"name\": { \"title\": \"Name\", \"type\": \"string\" } }, \"required\": [ \"group\", \"name\" ] }, \"Status\": { \"title\": \"Status\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"blocked\", \"error\", \"failed\", \"queued\", \"standby\", \"underway\", \"delayed\", \"skipped\", \"canceled\", \"killed\", \"completed\" ] }, \"Status1\": { \"title\": \"Status1\", \"description\": \"An enumeration.\", \"enum\": [ \"queued\", \"selected\", \"dispatched\", \"failed_to_assign\", \"canceled_in_flight\" ] }, \"Assignment\": { \"title\": \"Assignment\", \"type\": \"object\", \"properties\": { \"fleet_name\": { \"title\": \"Fleet Name\", \"type\": \"string\" }, \"expected_robot_name\": { \"title\": \"Expected Robot Name\", \"type\": \"string\" } } }, \"Error\": { \"title\": \"Error\", \"type\": \"object\", \"properties\": { \"code\": { \"title\": \"Code\", \"description\": \"A standard code for the kind of error that has occurred\", \"minimum\": 0, \"type\": \"integer\" }, \"category\": { \"title\": \"Category\", \"description\": \"The category of the error\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Details about the error\", \"type\": \"string\" } } }, \"Dispatch\": { \"title\": \"Dispatch\", \"type\": \"object\", \"properties\": { \"status\": { \"$ref\": \"#/definitions/Status1\" }, \"assignment\": { \"$ref\": \"#/definitions/Assignment\" }, \"errors\": { \"title\": \"Errors\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Error\" } } }, \"required\": [ \"status\" ] }, \"Id\": { \"title\": \"Id\", \"minimum\": 0, \"type\": \"integer\" }, \"EventState\": { \"title\": \"EventState\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"name\": { \"title\": \"Name\", \"description\": \"The brief name of the event\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the event\", \"allOf\": [ { \"$ref\": \"#/definitions/Detail\" } ] }, \"deps\": { \"title\": \"Deps\", \"description\": \"This event may depend on other events. This array contains the IDs of those other event dependencies.\", \"type\": \"array\", \"items\": { \"type\": \"integer\", \"minimum\": 0 } } }, \"required\": [ \"id\" ] }, \"Undo\": { \"title\": \"Undo\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the undo skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the undo skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"SkipPhaseRequest\": { \"title\": \"SkipPhaseRequest\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"undo\": { \"title\": \"Undo\", \"description\": \"Information about an undo skip request that applied to this request\", \"allOf\": [ { \"$ref\": \"#/definitions/Undo\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Phase\": { \"title\": \"Phase\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"final_event_id\": { \"$ref\": \"#/definitions/Id\" }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/EventState\" } }, \"skip_requests\": { \"title\": \"Skip Requests\", \"description\": \"Information about any skip requests that have been received\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/SkipPhaseRequest\" } } }, \"required\": [ \"id\" ] }, \"ResumedBy\": { \"title\": \"ResumedBy\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the resume request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the resume request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"labels\" ] }, \"Interruption\": { \"title\": \"Interruption\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the interruption request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the interruption\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"resumed_by\": { \"title\": \"Resumed By\", \"description\": \"Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.\", \"allOf\": [ { \"$ref\": \"#/definitions/ResumedBy\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Cancellation\": { \"title\": \"Cancellation\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the cancel request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Killed\": { \"title\": \"Killed\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the kill request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] } } } ``` ### /tasks/{task_id}/log ``` { \"title\": \"TaskEventLog\", \"type\": \"object\", \"properties\": { \"task_id\": { \"title\": \"Task Id\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary whose keys (property names) are the indices of a phase\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phases\" } } }, \"required\": [ \"task_id\" ], \"additionalProperties\": false, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] }, \"Phases\": { \"title\": \"Phases\", \"type\": \"object\", \"properties\": { \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall phase\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary whose keys (property names) are the indices of an event in the phase\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"additionalProperties\": false } } } ``` ### /dispensers/{guid}/state ``` { \"title\": \"DispenserState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /dispensers/{guid}/health ``` { \"title\": \"DispenserHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /ingestors/{guid}/state ``` { \"title\": \"IngestorState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /ingestors/{guid}/health ``` { \"title\": \"IngestorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /fleets/{name}/state ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"robots\": { \"title\": \"Robots\", \"description\": \"A dictionary of the states of the robots that belong to this fleet\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/RobotState\" } } }, \"definitions\": { \"Status2\": { \"title\": \"Status2\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"offline\", \"shutdown\", \"idle\", \"charging\", \"working\", \"error\" ] }, \"Location2D\": { \"title\": \"Location2D\", \"type\": \"object\", \"properties\": { \"map\": { \"title\": \"Map\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"type\": \"number\" } }, \"required\": [ \"map\", \"x\", \"y\", \"yaw\" ] }, \"Issue\": { \"title\": \"Issue\", \"type\": \"object\", \"properties\": { \"category\": { \"title\": \"Category\", \"description\": \"Category of the robot\'s issue\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the issue\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] } } }, \"RobotState\": { \"title\": \"RobotState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"status\": { \"description\": \"A simple token representing the status of the robot\", \"allOf\": [ { \"$ref\": \"#/definitions/Status2\" } ] }, \"task_id\": { \"title\": \"Task Id\", \"description\": \"The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.\", \"type\": \"string\" }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"location\": { \"$ref\": \"#/definitions/Location2D\" }, \"battery\": { \"title\": \"Battery\", \"description\": \"State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)\", \"minimum\": 0.0, \"maximum\": 1.0, \"type\": \"number\" }, \"issues\": { \"title\": \"Issues\", \"description\": \"A list of issues with the robot that operators need to address\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Issue\" } } } } } } ``` ### /fleets/{name}/log ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log for the overall fleet\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"robots\": { \"title\": \"Robots\", \"description\": \"Dictionary of logs for the individual robots. The keys (property names) are the robot names.\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] } } } ``` * @summary Socket.io endpoint * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -5645,7 +5688,7 @@ export const DefaultApiFactory = function ( return localVarFp.getUserUserGet(options).then((request) => request(axios, basePath)); }, /** - * # NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint. ## About This exposes a minimal pubsub system built on top of socket.io. It works similar to a normal socket.io endpoint, except that are 2 special rooms which control subscriptions. ## Rooms ### subscribe Clients must send a message to this room to start receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### unsubscribe Clients can send a message to this room to stop receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### /alerts ``` { \"title\": \"Alert\", \"description\": \"General alert that can be triggered by events.\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"original_id\": { \"title\": \"Original Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Default: default
Task: task
Fleet: fleet
Robot: robot\", \"maxLength\": 7, \"type\": \"string\" }, \"unix_millis_created_time\": { \"title\": \"Unix Millis Created Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"type\": \"integer\" }, \"acknowledged_by\": { \"title\": \"Acknowledged By\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"unix_millis_acknowledged_time\": { \"title\": \"Unix Millis Acknowledged Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"nullable\": true, \"type\": \"integer\" } }, \"required\": [ \"id\", \"original_id\", \"category\", \"unix_millis_created_time\" ], \"additionalProperties\": false } ``` ### /beacons ``` { \"title\": \"BeaconState\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"online\": { \"title\": \"Online\", \"type\": \"boolean\" }, \"category\": { \"title\": \"Category\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"activated\": { \"title\": \"Activated\", \"type\": \"boolean\" }, \"level\": { \"title\": \"Level\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"online\", \"activated\" ], \"additionalProperties\": false } ``` ### /building_map ``` { \"title\": \"BuildingMap\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Level\" } }, \"lifts\": { \"title\": \"Lifts\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Lift\" } } }, \"required\": [ \"name\", \"levels\", \"lifts\" ], \"definitions\": { \"AffineImage\": { \"title\": \"AffineImage\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x_offset\": { \"title\": \"X Offset\", \"default\": 0, \"type\": \"number\" }, \"y_offset\": { \"title\": \"Y Offset\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"scale\": { \"title\": \"Scale\", \"default\": 0, \"type\": \"number\" }, \"encoding\": { \"title\": \"Encoding\", \"default\": \"\", \"type\": \"string\" }, \"data\": { \"title\": \"Data\", \"type\": \"string\" } }, \"required\": [ \"name\", \"x_offset\", \"y_offset\", \"yaw\", \"scale\", \"encoding\", \"data\" ] }, \"Place\": { \"title\": \"Place\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"position_tolerance\": { \"title\": \"Position Tolerance\", \"default\": 0, \"type\": \"number\" }, \"yaw_tolerance\": { \"title\": \"Yaw Tolerance\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"x\", \"y\", \"yaw\", \"position_tolerance\", \"yaw_tolerance\" ] }, \"Door\": { \"title\": \"Door\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"v1_x\": { \"title\": \"V1 X\", \"default\": 0, \"type\": \"number\" }, \"v1_y\": { \"title\": \"V1 Y\", \"default\": 0, \"type\": \"number\" }, \"v2_x\": { \"title\": \"V2 X\", \"default\": 0, \"type\": \"number\" }, \"v2_y\": { \"title\": \"V2 Y\", \"default\": 0, \"type\": \"number\" }, \"door_type\": { \"title\": \"Door Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_range\": { \"title\": \"Motion Range\", \"default\": 0, \"type\": \"number\" }, \"motion_direction\": { \"title\": \"Motion Direction\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" } }, \"required\": [ \"name\", \"v1_x\", \"v1_y\", \"v2_x\", \"v2_y\", \"door_type\", \"motion_range\", \"motion_direction\" ] }, \"Param\": { \"title\": \"Param\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"type\": { \"title\": \"Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"value_int\": { \"title\": \"Value Int\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"value_float\": { \"title\": \"Value Float\", \"default\": 0, \"type\": \"number\" }, \"value_string\": { \"title\": \"Value String\", \"default\": \"\", \"type\": \"string\" }, \"value_bool\": { \"title\": \"Value Bool\", \"default\": false, \"type\": \"boolean\" } }, \"required\": [ \"name\", \"type\", \"value_int\", \"value_float\", \"value_string\", \"value_bool\" ] }, \"GraphNode\": { \"title\": \"GraphNode\", \"type\": \"object\", \"properties\": { \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"x\", \"y\", \"name\", \"params\" ] }, \"GraphEdge\": { \"title\": \"GraphEdge\", \"type\": \"object\", \"properties\": { \"v1_idx\": { \"title\": \"V1 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"v2_idx\": { \"title\": \"V2 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } }, \"edge_type\": { \"title\": \"Edge Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" } }, \"required\": [ \"v1_idx\", \"v2_idx\", \"params\", \"edge_type\" ] }, \"Graph\": { \"title\": \"Graph\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"vertices\": { \"title\": \"Vertices\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphNode\" } }, \"edges\": { \"title\": \"Edges\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphEdge\" } }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"name\", \"vertices\", \"edges\", \"params\" ] }, \"Level\": { \"title\": \"Level\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"elevation\": { \"title\": \"Elevation\", \"default\": 0, \"type\": \"number\" }, \"images\": { \"title\": \"Images\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/AffineImage\" } }, \"places\": { \"title\": \"Places\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Place\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"nav_graphs\": { \"title\": \"Nav Graphs\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Graph\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] } }, \"required\": [ \"name\", \"elevation\", \"images\", \"places\", \"doors\", \"nav_graphs\", \"wall_graph\" ] }, \"Lift\": { \"title\": \"Lift\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] }, \"ref_x\": { \"title\": \"Ref X\", \"default\": 0, \"type\": \"number\" }, \"ref_y\": { \"title\": \"Ref Y\", \"default\": 0, \"type\": \"number\" }, \"ref_yaw\": { \"title\": \"Ref Yaw\", \"default\": 0, \"type\": \"number\" }, \"width\": { \"title\": \"Width\", \"default\": 0, \"type\": \"number\" }, \"depth\": { \"title\": \"Depth\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"levels\", \"doors\", \"wall_graph\", \"ref_x\", \"ref_y\", \"ref_yaw\", \"width\", \"depth\" ] } } } ``` ### /doors/{door_name}/state ``` { \"title\": \"DoorState\", \"type\": \"object\", \"properties\": { \"door_time\": { \"title\": \"Door Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"door_name\": { \"title\": \"Door Name\", \"default\": \"\", \"type\": \"string\" }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": { \"value\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/DoorMode\" } ] } }, \"required\": [ \"door_time\", \"door_name\", \"current_mode\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] }, \"DoorMode\": { \"title\": \"DoorMode\", \"type\": \"object\", \"properties\": { \"value\": { \"title\": \"Value\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"value\" ] } } } ``` ### /doors/{door_name}/health ``` { \"title\": \"DoorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /lifts/{lift_name}/state ``` { \"title\": \"LiftState\", \"type\": \"object\", \"properties\": { \"lift_time\": { \"title\": \"Lift Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"lift_name\": { \"title\": \"Lift Name\", \"default\": \"\", \"type\": \"string\" }, \"available_floors\": { \"title\": \"Available Floors\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"current_floor\": { \"title\": \"Current Floor\", \"default\": \"\", \"type\": \"string\" }, \"destination_floor\": { \"title\": \"Destination Floor\", \"default\": \"\", \"type\": \"string\" }, \"door_state\": { \"title\": \"Door State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_state\": { \"title\": \"Motion State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"available_modes\": { \"title\": \"Available Modes\", \"type\": \"array\", \"items\": { \"type\": \"integer\" } }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"session_id\": { \"title\": \"Session Id\", \"default\": \"\", \"type\": \"string\" } }, \"required\": [ \"lift_time\", \"lift_name\", \"available_floors\", \"current_floor\", \"destination_floor\", \"door_state\", \"motion_state\", \"available_modes\", \"current_mode\", \"session_id\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /lifts/{lift_name}/health ``` { \"title\": \"LiftHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /tasks/{task_id}/state ``` { \"title\": \"TaskState\", \"type\": \"object\", \"properties\": { \"booking\": { \"$ref\": \"#/definitions/Booking\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"assigned_to\": { \"title\": \"Assigned To\", \"description\": \"Which agent (robot) is the task assigned to\", \"allOf\": [ { \"$ref\": \"#/definitions/AssignedTo\" } ] }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"dispatch\": { \"$ref\": \"#/definitions/Dispatch\" }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phase\" } }, \"completed\": { \"title\": \"Completed\", \"description\": \"An array of the IDs of completed phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"active\": { \"title\": \"Active\", \"description\": \"The ID of the active phase for this task\", \"allOf\": [ { \"$ref\": \"#/definitions/Id\" } ] }, \"pending\": { \"title\": \"Pending\", \"description\": \"An array of the pending phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"interruptions\": { \"title\": \"Interruptions\", \"description\": \"A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Interruption\" } }, \"cancellation\": { \"title\": \"Cancellation\", \"description\": \"If the task was cancelled, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Cancellation\" } ] }, \"killed\": { \"title\": \"Killed\", \"description\": \"If the task was killed, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Killed\" } ] }, \"unix_millis_warn_time\": { \"title\": \"Unix Millis Warn Time\", \"type\": \"integer\" } }, \"required\": [ \"booking\" ], \"definitions\": { \"Booking\": { \"title\": \"Booking\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"description\": \"The unique identifier for this task\", \"type\": \"string\" }, \"unix_millis_earliest_start_time\": { \"title\": \"Unix Millis Earliest Start Time\", \"type\": \"integer\" }, \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"type\": \"integer\" }, \"priority\": { \"title\": \"Priority\", \"description\": \"Priority information about this task\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"string\" } ] }, \"labels\": { \"title\": \"Labels\", \"description\": \"Information about how and why this task was booked\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"requester\": { \"title\": \"Requester\", \"description\": \"(Optional) An identifier for the entity that requested this task\", \"type\": \"string\" } }, \"required\": [ \"id\" ] }, \"Category\": { \"title\": \"Category\", \"description\": \"The category of this task or phase\", \"type\": \"string\" }, \"Detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about a task, phase, or event\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] }, \"EstimateMillis\": { \"title\": \"EstimateMillis\", \"description\": \"An estimate, in milliseconds, of how long the subject will take to complete\", \"minimum\": 0, \"type\": \"integer\" }, \"AssignedTo\": { \"title\": \"AssignedTo\", \"type\": \"object\", \"properties\": { \"group\": { \"title\": \"Group\", \"type\": \"string\" }, \"name\": { \"title\": \"Name\", \"type\": \"string\" } }, \"required\": [ \"group\", \"name\" ] }, \"Status\": { \"title\": \"Status\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"blocked\", \"error\", \"failed\", \"queued\", \"standby\", \"underway\", \"delayed\", \"skipped\", \"canceled\", \"killed\", \"completed\" ] }, \"Status1\": { \"title\": \"Status1\", \"description\": \"An enumeration.\", \"enum\": [ \"queued\", \"selected\", \"dispatched\", \"failed_to_assign\", \"canceled_in_flight\" ] }, \"Assignment\": { \"title\": \"Assignment\", \"type\": \"object\", \"properties\": { \"fleet_name\": { \"title\": \"Fleet Name\", \"type\": \"string\" }, \"expected_robot_name\": { \"title\": \"Expected Robot Name\", \"type\": \"string\" } } }, \"Error\": { \"title\": \"Error\", \"type\": \"object\", \"properties\": { \"code\": { \"title\": \"Code\", \"description\": \"A standard code for the kind of error that has occurred\", \"minimum\": 0, \"type\": \"integer\" }, \"category\": { \"title\": \"Category\", \"description\": \"The category of the error\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Details about the error\", \"type\": \"string\" } } }, \"Dispatch\": { \"title\": \"Dispatch\", \"type\": \"object\", \"properties\": { \"status\": { \"$ref\": \"#/definitions/Status1\" }, \"assignment\": { \"$ref\": \"#/definitions/Assignment\" }, \"errors\": { \"title\": \"Errors\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Error\" } } }, \"required\": [ \"status\" ] }, \"Id\": { \"title\": \"Id\", \"minimum\": 0, \"type\": \"integer\" }, \"EventState\": { \"title\": \"EventState\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"name\": { \"title\": \"Name\", \"description\": \"The brief name of the event\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the event\", \"allOf\": [ { \"$ref\": \"#/definitions/Detail\" } ] }, \"deps\": { \"title\": \"Deps\", \"description\": \"This event may depend on other events. This array contains the IDs of those other event dependencies.\", \"type\": \"array\", \"items\": { \"type\": \"integer\", \"minimum\": 0 } } }, \"required\": [ \"id\" ] }, \"Undo\": { \"title\": \"Undo\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the undo skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the undo skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"SkipPhaseRequest\": { \"title\": \"SkipPhaseRequest\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"undo\": { \"title\": \"Undo\", \"description\": \"Information about an undo skip request that applied to this request\", \"allOf\": [ { \"$ref\": \"#/definitions/Undo\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Phase\": { \"title\": \"Phase\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"final_event_id\": { \"$ref\": \"#/definitions/Id\" }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/EventState\" } }, \"skip_requests\": { \"title\": \"Skip Requests\", \"description\": \"Information about any skip requests that have been received\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/SkipPhaseRequest\" } } }, \"required\": [ \"id\" ] }, \"ResumedBy\": { \"title\": \"ResumedBy\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the resume request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the resume request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"labels\" ] }, \"Interruption\": { \"title\": \"Interruption\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the interruption request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the interruption\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"resumed_by\": { \"title\": \"Resumed By\", \"description\": \"Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.\", \"allOf\": [ { \"$ref\": \"#/definitions/ResumedBy\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Cancellation\": { \"title\": \"Cancellation\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the cancel request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Killed\": { \"title\": \"Killed\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the kill request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] } } } ``` ### /tasks/{task_id}/log ``` { \"title\": \"TaskEventLog\", \"type\": \"object\", \"properties\": { \"task_id\": { \"title\": \"Task Id\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary whose keys (property names) are the indices of a phase\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phases\" } } }, \"required\": [ \"task_id\" ], \"additionalProperties\": false, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] }, \"Phases\": { \"title\": \"Phases\", \"type\": \"object\", \"properties\": { \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall phase\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary whose keys (property names) are the indices of an event in the phase\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"additionalProperties\": false } } } ``` ### /dispensers/{guid}/state ``` { \"title\": \"DispenserState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /dispensers/{guid}/health ``` { \"title\": \"DispenserHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /ingestors/{guid}/state ``` { \"title\": \"IngestorState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /ingestors/{guid}/health ``` { \"title\": \"IngestorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /fleets/{name}/state ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"robots\": { \"title\": \"Robots\", \"description\": \"A dictionary of the states of the robots that belong to this fleet\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/RobotState\" } } }, \"definitions\": { \"Status2\": { \"title\": \"Status2\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"offline\", \"shutdown\", \"idle\", \"charging\", \"working\", \"error\" ] }, \"Location2D\": { \"title\": \"Location2D\", \"type\": \"object\", \"properties\": { \"map\": { \"title\": \"Map\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"type\": \"number\" } }, \"required\": [ \"map\", \"x\", \"y\", \"yaw\" ] }, \"Issue\": { \"title\": \"Issue\", \"type\": \"object\", \"properties\": { \"category\": { \"title\": \"Category\", \"description\": \"Category of the robot\'s issue\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the issue\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] } } }, \"RobotState\": { \"title\": \"RobotState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"status\": { \"description\": \"A simple token representing the status of the robot\", \"allOf\": [ { \"$ref\": \"#/definitions/Status2\" } ] }, \"task_id\": { \"title\": \"Task Id\", \"description\": \"The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.\", \"type\": \"string\" }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"location\": { \"$ref\": \"#/definitions/Location2D\" }, \"battery\": { \"title\": \"Battery\", \"description\": \"State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)\", \"minimum\": 0.0, \"maximum\": 1.0, \"type\": \"number\" }, \"issues\": { \"title\": \"Issues\", \"description\": \"A list of issues with the robot that operators need to address\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Issue\" } } } } } } ``` ### /fleets/{name}/log ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log for the overall fleet\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"robots\": { \"title\": \"Robots\", \"description\": \"Dictionary of logs for the individual robots. The keys (property names) are the robot names.\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] } } } ``` + * # NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint. ## About This exposes a minimal pubsub system built on top of socket.io. It works similar to a normal socket.io endpoint, except that are 2 special rooms which control subscriptions. ## Rooms ### subscribe Clients must send a message to this room to start receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### unsubscribe Clients can send a message to this room to stop receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### /alerts ``` { \"title\": \"Alert\", \"description\": \"General alert that can be triggered by events.\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"original_id\": { \"title\": \"Original Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Default: default
Task: task
Fleet: fleet
Robot: robot\", \"maxLength\": 7, \"type\": \"string\" }, \"unix_millis_created_time\": { \"title\": \"Unix Millis Created Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"type\": \"integer\" }, \"acknowledged_by\": { \"title\": \"Acknowledged By\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"unix_millis_acknowledged_time\": { \"title\": \"Unix Millis Acknowledged Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"nullable\": true, \"type\": \"integer\" } }, \"required\": [ \"id\", \"original_id\", \"category\", \"unix_millis_created_time\" ], \"additionalProperties\": false } ``` ### /beacons ``` { \"title\": \"BeaconState\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"online\": { \"title\": \"Online\", \"type\": \"boolean\" }, \"category\": { \"title\": \"Category\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"activated\": { \"title\": \"Activated\", \"type\": \"boolean\" }, \"level\": { \"title\": \"Level\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"online\", \"activated\" ], \"additionalProperties\": false } ``` ### /building_map ``` { \"title\": \"BuildingMap\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Level\" } }, \"lifts\": { \"title\": \"Lifts\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Lift\" } } }, \"required\": [ \"name\", \"levels\", \"lifts\" ], \"definitions\": { \"AffineImage\": { \"title\": \"AffineImage\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x_offset\": { \"title\": \"X Offset\", \"default\": 0, \"type\": \"number\" }, \"y_offset\": { \"title\": \"Y Offset\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"scale\": { \"title\": \"Scale\", \"default\": 0, \"type\": \"number\" }, \"encoding\": { \"title\": \"Encoding\", \"default\": \"\", \"type\": \"string\" }, \"data\": { \"title\": \"Data\", \"type\": \"string\" } }, \"required\": [ \"name\", \"x_offset\", \"y_offset\", \"yaw\", \"scale\", \"encoding\", \"data\" ] }, \"Place\": { \"title\": \"Place\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"position_tolerance\": { \"title\": \"Position Tolerance\", \"default\": 0, \"type\": \"number\" }, \"yaw_tolerance\": { \"title\": \"Yaw Tolerance\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"x\", \"y\", \"yaw\", \"position_tolerance\", \"yaw_tolerance\" ] }, \"Door\": { \"title\": \"Door\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"v1_x\": { \"title\": \"V1 X\", \"default\": 0, \"type\": \"number\" }, \"v1_y\": { \"title\": \"V1 Y\", \"default\": 0, \"type\": \"number\" }, \"v2_x\": { \"title\": \"V2 X\", \"default\": 0, \"type\": \"number\" }, \"v2_y\": { \"title\": \"V2 Y\", \"default\": 0, \"type\": \"number\" }, \"door_type\": { \"title\": \"Door Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_range\": { \"title\": \"Motion Range\", \"default\": 0, \"type\": \"number\" }, \"motion_direction\": { \"title\": \"Motion Direction\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" } }, \"required\": [ \"name\", \"v1_x\", \"v1_y\", \"v2_x\", \"v2_y\", \"door_type\", \"motion_range\", \"motion_direction\" ] }, \"Param\": { \"title\": \"Param\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"type\": { \"title\": \"Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"value_int\": { \"title\": \"Value Int\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"value_float\": { \"title\": \"Value Float\", \"default\": 0, \"type\": \"number\" }, \"value_string\": { \"title\": \"Value String\", \"default\": \"\", \"type\": \"string\" }, \"value_bool\": { \"title\": \"Value Bool\", \"default\": false, \"type\": \"boolean\" } }, \"required\": [ \"name\", \"type\", \"value_int\", \"value_float\", \"value_string\", \"value_bool\" ] }, \"GraphNode\": { \"title\": \"GraphNode\", \"type\": \"object\", \"properties\": { \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"x\", \"y\", \"name\", \"params\" ] }, \"GraphEdge\": { \"title\": \"GraphEdge\", \"type\": \"object\", \"properties\": { \"v1_idx\": { \"title\": \"V1 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"v2_idx\": { \"title\": \"V2 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } }, \"edge_type\": { \"title\": \"Edge Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" } }, \"required\": [ \"v1_idx\", \"v2_idx\", \"params\", \"edge_type\" ] }, \"Graph\": { \"title\": \"Graph\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"vertices\": { \"title\": \"Vertices\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphNode\" } }, \"edges\": { \"title\": \"Edges\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphEdge\" } }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"name\", \"vertices\", \"edges\", \"params\" ] }, \"Level\": { \"title\": \"Level\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"elevation\": { \"title\": \"Elevation\", \"default\": 0, \"type\": \"number\" }, \"images\": { \"title\": \"Images\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/AffineImage\" } }, \"places\": { \"title\": \"Places\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Place\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"nav_graphs\": { \"title\": \"Nav Graphs\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Graph\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] } }, \"required\": [ \"name\", \"elevation\", \"images\", \"places\", \"doors\", \"nav_graphs\", \"wall_graph\" ] }, \"Lift\": { \"title\": \"Lift\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] }, \"ref_x\": { \"title\": \"Ref X\", \"default\": 0, \"type\": \"number\" }, \"ref_y\": { \"title\": \"Ref Y\", \"default\": 0, \"type\": \"number\" }, \"ref_yaw\": { \"title\": \"Ref Yaw\", \"default\": 0, \"type\": \"number\" }, \"width\": { \"title\": \"Width\", \"default\": 0, \"type\": \"number\" }, \"depth\": { \"title\": \"Depth\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"levels\", \"doors\", \"wall_graph\", \"ref_x\", \"ref_y\", \"ref_yaw\", \"width\", \"depth\" ] } } } ``` ### /delivery_alerts ``` { \"title\": \"DeliveryAlert\", \"description\": \"Custom alerts for custom delivery tasks\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Missing: missing
Wrong: wrong\", \"maxLength\": 7, \"type\": \"string\" }, \"tier\": { \"title\": \"Tier\", \"description\": \"Warning: warning
Error: error\", \"maxLength\": 7, \"type\": \"string\" }, \"task_id\": { \"title\": \"Task Id\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"action\": { \"title\": \"Action\", \"description\": \"Waiting: waiting
Cancel: cancelled
Override: override
Resume: resume\", \"maxLength\": 9, \"type\": \"string\" }, \"message\": { \"title\": \"Message\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"category\", \"tier\", \"action\" ], \"additionalProperties\": false } ``` ### /doors/{door_name}/state ``` { \"title\": \"DoorState\", \"type\": \"object\", \"properties\": { \"door_time\": { \"title\": \"Door Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"door_name\": { \"title\": \"Door Name\", \"default\": \"\", \"type\": \"string\" }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": { \"value\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/DoorMode\" } ] } }, \"required\": [ \"door_time\", \"door_name\", \"current_mode\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] }, \"DoorMode\": { \"title\": \"DoorMode\", \"type\": \"object\", \"properties\": { \"value\": { \"title\": \"Value\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"value\" ] } } } ``` ### /doors/{door_name}/health ``` { \"title\": \"DoorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /lifts/{lift_name}/state ``` { \"title\": \"LiftState\", \"type\": \"object\", \"properties\": { \"lift_time\": { \"title\": \"Lift Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"lift_name\": { \"title\": \"Lift Name\", \"default\": \"\", \"type\": \"string\" }, \"available_floors\": { \"title\": \"Available Floors\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"current_floor\": { \"title\": \"Current Floor\", \"default\": \"\", \"type\": \"string\" }, \"destination_floor\": { \"title\": \"Destination Floor\", \"default\": \"\", \"type\": \"string\" }, \"door_state\": { \"title\": \"Door State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_state\": { \"title\": \"Motion State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"available_modes\": { \"title\": \"Available Modes\", \"type\": \"array\", \"items\": { \"type\": \"integer\" } }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"session_id\": { \"title\": \"Session Id\", \"default\": \"\", \"type\": \"string\" } }, \"required\": [ \"lift_time\", \"lift_name\", \"available_floors\", \"current_floor\", \"destination_floor\", \"door_state\", \"motion_state\", \"available_modes\", \"current_mode\", \"session_id\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /lifts/{lift_name}/health ``` { \"title\": \"LiftHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /tasks/{task_id}/state ``` { \"title\": \"TaskState\", \"type\": \"object\", \"properties\": { \"booking\": { \"$ref\": \"#/definitions/Booking\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"assigned_to\": { \"title\": \"Assigned To\", \"description\": \"Which agent (robot) is the task assigned to\", \"allOf\": [ { \"$ref\": \"#/definitions/AssignedTo\" } ] }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"dispatch\": { \"$ref\": \"#/definitions/Dispatch\" }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phase\" } }, \"completed\": { \"title\": \"Completed\", \"description\": \"An array of the IDs of completed phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"active\": { \"title\": \"Active\", \"description\": \"The ID of the active phase for this task\", \"allOf\": [ { \"$ref\": \"#/definitions/Id\" } ] }, \"pending\": { \"title\": \"Pending\", \"description\": \"An array of the pending phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"interruptions\": { \"title\": \"Interruptions\", \"description\": \"A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Interruption\" } }, \"cancellation\": { \"title\": \"Cancellation\", \"description\": \"If the task was cancelled, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Cancellation\" } ] }, \"killed\": { \"title\": \"Killed\", \"description\": \"If the task was killed, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Killed\" } ] }, \"unix_millis_warn_time\": { \"title\": \"Unix Millis Warn Time\", \"type\": \"integer\" } }, \"required\": [ \"booking\" ], \"definitions\": { \"Booking\": { \"title\": \"Booking\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"description\": \"The unique identifier for this task\", \"type\": \"string\" }, \"unix_millis_earliest_start_time\": { \"title\": \"Unix Millis Earliest Start Time\", \"type\": \"integer\" }, \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"type\": \"integer\" }, \"priority\": { \"title\": \"Priority\", \"description\": \"Priority information about this task\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"string\" } ] }, \"labels\": { \"title\": \"Labels\", \"description\": \"Information about how and why this task was booked\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"requester\": { \"title\": \"Requester\", \"description\": \"(Optional) An identifier for the entity that requested this task\", \"type\": \"string\" } }, \"required\": [ \"id\" ] }, \"Category\": { \"title\": \"Category\", \"description\": \"The category of this task or phase\", \"type\": \"string\" }, \"Detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about a task, phase, or event\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] }, \"EstimateMillis\": { \"title\": \"EstimateMillis\", \"description\": \"An estimate, in milliseconds, of how long the subject will take to complete\", \"minimum\": 0, \"type\": \"integer\" }, \"AssignedTo\": { \"title\": \"AssignedTo\", \"type\": \"object\", \"properties\": { \"group\": { \"title\": \"Group\", \"type\": \"string\" }, \"name\": { \"title\": \"Name\", \"type\": \"string\" } }, \"required\": [ \"group\", \"name\" ] }, \"Status\": { \"title\": \"Status\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"blocked\", \"error\", \"failed\", \"queued\", \"standby\", \"underway\", \"delayed\", \"skipped\", \"canceled\", \"killed\", \"completed\" ] }, \"Status1\": { \"title\": \"Status1\", \"description\": \"An enumeration.\", \"enum\": [ \"queued\", \"selected\", \"dispatched\", \"failed_to_assign\", \"canceled_in_flight\" ] }, \"Assignment\": { \"title\": \"Assignment\", \"type\": \"object\", \"properties\": { \"fleet_name\": { \"title\": \"Fleet Name\", \"type\": \"string\" }, \"expected_robot_name\": { \"title\": \"Expected Robot Name\", \"type\": \"string\" } } }, \"Error\": { \"title\": \"Error\", \"type\": \"object\", \"properties\": { \"code\": { \"title\": \"Code\", \"description\": \"A standard code for the kind of error that has occurred\", \"minimum\": 0, \"type\": \"integer\" }, \"category\": { \"title\": \"Category\", \"description\": \"The category of the error\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Details about the error\", \"type\": \"string\" } } }, \"Dispatch\": { \"title\": \"Dispatch\", \"type\": \"object\", \"properties\": { \"status\": { \"$ref\": \"#/definitions/Status1\" }, \"assignment\": { \"$ref\": \"#/definitions/Assignment\" }, \"errors\": { \"title\": \"Errors\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Error\" } } }, \"required\": [ \"status\" ] }, \"Id\": { \"title\": \"Id\", \"minimum\": 0, \"type\": \"integer\" }, \"EventState\": { \"title\": \"EventState\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"name\": { \"title\": \"Name\", \"description\": \"The brief name of the event\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the event\", \"allOf\": [ { \"$ref\": \"#/definitions/Detail\" } ] }, \"deps\": { \"title\": \"Deps\", \"description\": \"This event may depend on other events. This array contains the IDs of those other event dependencies.\", \"type\": \"array\", \"items\": { \"type\": \"integer\", \"minimum\": 0 } } }, \"required\": [ \"id\" ] }, \"Undo\": { \"title\": \"Undo\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the undo skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the undo skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"SkipPhaseRequest\": { \"title\": \"SkipPhaseRequest\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"undo\": { \"title\": \"Undo\", \"description\": \"Information about an undo skip request that applied to this request\", \"allOf\": [ { \"$ref\": \"#/definitions/Undo\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Phase\": { \"title\": \"Phase\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"final_event_id\": { \"$ref\": \"#/definitions/Id\" }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/EventState\" } }, \"skip_requests\": { \"title\": \"Skip Requests\", \"description\": \"Information about any skip requests that have been received\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/SkipPhaseRequest\" } } }, \"required\": [ \"id\" ] }, \"ResumedBy\": { \"title\": \"ResumedBy\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the resume request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the resume request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"labels\" ] }, \"Interruption\": { \"title\": \"Interruption\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the interruption request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the interruption\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"resumed_by\": { \"title\": \"Resumed By\", \"description\": \"Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.\", \"allOf\": [ { \"$ref\": \"#/definitions/ResumedBy\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Cancellation\": { \"title\": \"Cancellation\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the cancel request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Killed\": { \"title\": \"Killed\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the kill request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] } } } ``` ### /tasks/{task_id}/log ``` { \"title\": \"TaskEventLog\", \"type\": \"object\", \"properties\": { \"task_id\": { \"title\": \"Task Id\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary whose keys (property names) are the indices of a phase\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phases\" } } }, \"required\": [ \"task_id\" ], \"additionalProperties\": false, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] }, \"Phases\": { \"title\": \"Phases\", \"type\": \"object\", \"properties\": { \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall phase\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary whose keys (property names) are the indices of an event in the phase\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"additionalProperties\": false } } } ``` ### /dispensers/{guid}/state ``` { \"title\": \"DispenserState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /dispensers/{guid}/health ``` { \"title\": \"DispenserHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /ingestors/{guid}/state ``` { \"title\": \"IngestorState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /ingestors/{guid}/health ``` { \"title\": \"IngestorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /fleets/{name}/state ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"robots\": { \"title\": \"Robots\", \"description\": \"A dictionary of the states of the robots that belong to this fleet\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/RobotState\" } } }, \"definitions\": { \"Status2\": { \"title\": \"Status2\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"offline\", \"shutdown\", \"idle\", \"charging\", \"working\", \"error\" ] }, \"Location2D\": { \"title\": \"Location2D\", \"type\": \"object\", \"properties\": { \"map\": { \"title\": \"Map\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"type\": \"number\" } }, \"required\": [ \"map\", \"x\", \"y\", \"yaw\" ] }, \"Issue\": { \"title\": \"Issue\", \"type\": \"object\", \"properties\": { \"category\": { \"title\": \"Category\", \"description\": \"Category of the robot\'s issue\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the issue\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] } } }, \"RobotState\": { \"title\": \"RobotState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"status\": { \"description\": \"A simple token representing the status of the robot\", \"allOf\": [ { \"$ref\": \"#/definitions/Status2\" } ] }, \"task_id\": { \"title\": \"Task Id\", \"description\": \"The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.\", \"type\": \"string\" }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"location\": { \"$ref\": \"#/definitions/Location2D\" }, \"battery\": { \"title\": \"Battery\", \"description\": \"State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)\", \"minimum\": 0.0, \"maximum\": 1.0, \"type\": \"number\" }, \"issues\": { \"title\": \"Issues\", \"description\": \"A list of issues with the robot that operators need to address\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Issue\" } } } } } } ``` ### /fleets/{name}/log ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log for the overall fleet\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"robots\": { \"title\": \"Robots\", \"description\": \"Dictionary of logs for the individual robots. The keys (property names) are the robot names.\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] } } } ``` * @summary Socket.io endpoint * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -5703,7 +5746,7 @@ export class DefaultApi extends BaseAPI { } /** - * # NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint. ## About This exposes a minimal pubsub system built on top of socket.io. It works similar to a normal socket.io endpoint, except that are 2 special rooms which control subscriptions. ## Rooms ### subscribe Clients must send a message to this room to start receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### unsubscribe Clients can send a message to this room to stop receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### /alerts ``` { \"title\": \"Alert\", \"description\": \"General alert that can be triggered by events.\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"original_id\": { \"title\": \"Original Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Default: default
Task: task
Fleet: fleet
Robot: robot\", \"maxLength\": 7, \"type\": \"string\" }, \"unix_millis_created_time\": { \"title\": \"Unix Millis Created Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"type\": \"integer\" }, \"acknowledged_by\": { \"title\": \"Acknowledged By\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"unix_millis_acknowledged_time\": { \"title\": \"Unix Millis Acknowledged Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"nullable\": true, \"type\": \"integer\" } }, \"required\": [ \"id\", \"original_id\", \"category\", \"unix_millis_created_time\" ], \"additionalProperties\": false } ``` ### /beacons ``` { \"title\": \"BeaconState\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"online\": { \"title\": \"Online\", \"type\": \"boolean\" }, \"category\": { \"title\": \"Category\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"activated\": { \"title\": \"Activated\", \"type\": \"boolean\" }, \"level\": { \"title\": \"Level\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"online\", \"activated\" ], \"additionalProperties\": false } ``` ### /building_map ``` { \"title\": \"BuildingMap\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Level\" } }, \"lifts\": { \"title\": \"Lifts\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Lift\" } } }, \"required\": [ \"name\", \"levels\", \"lifts\" ], \"definitions\": { \"AffineImage\": { \"title\": \"AffineImage\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x_offset\": { \"title\": \"X Offset\", \"default\": 0, \"type\": \"number\" }, \"y_offset\": { \"title\": \"Y Offset\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"scale\": { \"title\": \"Scale\", \"default\": 0, \"type\": \"number\" }, \"encoding\": { \"title\": \"Encoding\", \"default\": \"\", \"type\": \"string\" }, \"data\": { \"title\": \"Data\", \"type\": \"string\" } }, \"required\": [ \"name\", \"x_offset\", \"y_offset\", \"yaw\", \"scale\", \"encoding\", \"data\" ] }, \"Place\": { \"title\": \"Place\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"position_tolerance\": { \"title\": \"Position Tolerance\", \"default\": 0, \"type\": \"number\" }, \"yaw_tolerance\": { \"title\": \"Yaw Tolerance\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"x\", \"y\", \"yaw\", \"position_tolerance\", \"yaw_tolerance\" ] }, \"Door\": { \"title\": \"Door\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"v1_x\": { \"title\": \"V1 X\", \"default\": 0, \"type\": \"number\" }, \"v1_y\": { \"title\": \"V1 Y\", \"default\": 0, \"type\": \"number\" }, \"v2_x\": { \"title\": \"V2 X\", \"default\": 0, \"type\": \"number\" }, \"v2_y\": { \"title\": \"V2 Y\", \"default\": 0, \"type\": \"number\" }, \"door_type\": { \"title\": \"Door Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_range\": { \"title\": \"Motion Range\", \"default\": 0, \"type\": \"number\" }, \"motion_direction\": { \"title\": \"Motion Direction\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" } }, \"required\": [ \"name\", \"v1_x\", \"v1_y\", \"v2_x\", \"v2_y\", \"door_type\", \"motion_range\", \"motion_direction\" ] }, \"Param\": { \"title\": \"Param\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"type\": { \"title\": \"Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"value_int\": { \"title\": \"Value Int\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"value_float\": { \"title\": \"Value Float\", \"default\": 0, \"type\": \"number\" }, \"value_string\": { \"title\": \"Value String\", \"default\": \"\", \"type\": \"string\" }, \"value_bool\": { \"title\": \"Value Bool\", \"default\": false, \"type\": \"boolean\" } }, \"required\": [ \"name\", \"type\", \"value_int\", \"value_float\", \"value_string\", \"value_bool\" ] }, \"GraphNode\": { \"title\": \"GraphNode\", \"type\": \"object\", \"properties\": { \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"x\", \"y\", \"name\", \"params\" ] }, \"GraphEdge\": { \"title\": \"GraphEdge\", \"type\": \"object\", \"properties\": { \"v1_idx\": { \"title\": \"V1 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"v2_idx\": { \"title\": \"V2 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } }, \"edge_type\": { \"title\": \"Edge Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" } }, \"required\": [ \"v1_idx\", \"v2_idx\", \"params\", \"edge_type\" ] }, \"Graph\": { \"title\": \"Graph\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"vertices\": { \"title\": \"Vertices\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphNode\" } }, \"edges\": { \"title\": \"Edges\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphEdge\" } }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"name\", \"vertices\", \"edges\", \"params\" ] }, \"Level\": { \"title\": \"Level\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"elevation\": { \"title\": \"Elevation\", \"default\": 0, \"type\": \"number\" }, \"images\": { \"title\": \"Images\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/AffineImage\" } }, \"places\": { \"title\": \"Places\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Place\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"nav_graphs\": { \"title\": \"Nav Graphs\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Graph\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] } }, \"required\": [ \"name\", \"elevation\", \"images\", \"places\", \"doors\", \"nav_graphs\", \"wall_graph\" ] }, \"Lift\": { \"title\": \"Lift\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] }, \"ref_x\": { \"title\": \"Ref X\", \"default\": 0, \"type\": \"number\" }, \"ref_y\": { \"title\": \"Ref Y\", \"default\": 0, \"type\": \"number\" }, \"ref_yaw\": { \"title\": \"Ref Yaw\", \"default\": 0, \"type\": \"number\" }, \"width\": { \"title\": \"Width\", \"default\": 0, \"type\": \"number\" }, \"depth\": { \"title\": \"Depth\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"levels\", \"doors\", \"wall_graph\", \"ref_x\", \"ref_y\", \"ref_yaw\", \"width\", \"depth\" ] } } } ``` ### /doors/{door_name}/state ``` { \"title\": \"DoorState\", \"type\": \"object\", \"properties\": { \"door_time\": { \"title\": \"Door Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"door_name\": { \"title\": \"Door Name\", \"default\": \"\", \"type\": \"string\" }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": { \"value\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/DoorMode\" } ] } }, \"required\": [ \"door_time\", \"door_name\", \"current_mode\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] }, \"DoorMode\": { \"title\": \"DoorMode\", \"type\": \"object\", \"properties\": { \"value\": { \"title\": \"Value\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"value\" ] } } } ``` ### /doors/{door_name}/health ``` { \"title\": \"DoorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /lifts/{lift_name}/state ``` { \"title\": \"LiftState\", \"type\": \"object\", \"properties\": { \"lift_time\": { \"title\": \"Lift Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"lift_name\": { \"title\": \"Lift Name\", \"default\": \"\", \"type\": \"string\" }, \"available_floors\": { \"title\": \"Available Floors\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"current_floor\": { \"title\": \"Current Floor\", \"default\": \"\", \"type\": \"string\" }, \"destination_floor\": { \"title\": \"Destination Floor\", \"default\": \"\", \"type\": \"string\" }, \"door_state\": { \"title\": \"Door State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_state\": { \"title\": \"Motion State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"available_modes\": { \"title\": \"Available Modes\", \"type\": \"array\", \"items\": { \"type\": \"integer\" } }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"session_id\": { \"title\": \"Session Id\", \"default\": \"\", \"type\": \"string\" } }, \"required\": [ \"lift_time\", \"lift_name\", \"available_floors\", \"current_floor\", \"destination_floor\", \"door_state\", \"motion_state\", \"available_modes\", \"current_mode\", \"session_id\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /lifts/{lift_name}/health ``` { \"title\": \"LiftHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /tasks/{task_id}/state ``` { \"title\": \"TaskState\", \"type\": \"object\", \"properties\": { \"booking\": { \"$ref\": \"#/definitions/Booking\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"assigned_to\": { \"title\": \"Assigned To\", \"description\": \"Which agent (robot) is the task assigned to\", \"allOf\": [ { \"$ref\": \"#/definitions/AssignedTo\" } ] }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"dispatch\": { \"$ref\": \"#/definitions/Dispatch\" }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phase\" } }, \"completed\": { \"title\": \"Completed\", \"description\": \"An array of the IDs of completed phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"active\": { \"title\": \"Active\", \"description\": \"The ID of the active phase for this task\", \"allOf\": [ { \"$ref\": \"#/definitions/Id\" } ] }, \"pending\": { \"title\": \"Pending\", \"description\": \"An array of the pending phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"interruptions\": { \"title\": \"Interruptions\", \"description\": \"A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Interruption\" } }, \"cancellation\": { \"title\": \"Cancellation\", \"description\": \"If the task was cancelled, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Cancellation\" } ] }, \"killed\": { \"title\": \"Killed\", \"description\": \"If the task was killed, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Killed\" } ] }, \"unix_millis_warn_time\": { \"title\": \"Unix Millis Warn Time\", \"type\": \"integer\" } }, \"required\": [ \"booking\" ], \"definitions\": { \"Booking\": { \"title\": \"Booking\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"description\": \"The unique identifier for this task\", \"type\": \"string\" }, \"unix_millis_earliest_start_time\": { \"title\": \"Unix Millis Earliest Start Time\", \"type\": \"integer\" }, \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"type\": \"integer\" }, \"priority\": { \"title\": \"Priority\", \"description\": \"Priority information about this task\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"string\" } ] }, \"labels\": { \"title\": \"Labels\", \"description\": \"Information about how and why this task was booked\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"requester\": { \"title\": \"Requester\", \"description\": \"(Optional) An identifier for the entity that requested this task\", \"type\": \"string\" } }, \"required\": [ \"id\" ] }, \"Category\": { \"title\": \"Category\", \"description\": \"The category of this task or phase\", \"type\": \"string\" }, \"Detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about a task, phase, or event\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] }, \"EstimateMillis\": { \"title\": \"EstimateMillis\", \"description\": \"An estimate, in milliseconds, of how long the subject will take to complete\", \"minimum\": 0, \"type\": \"integer\" }, \"AssignedTo\": { \"title\": \"AssignedTo\", \"type\": \"object\", \"properties\": { \"group\": { \"title\": \"Group\", \"type\": \"string\" }, \"name\": { \"title\": \"Name\", \"type\": \"string\" } }, \"required\": [ \"group\", \"name\" ] }, \"Status\": { \"title\": \"Status\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"blocked\", \"error\", \"failed\", \"queued\", \"standby\", \"underway\", \"delayed\", \"skipped\", \"canceled\", \"killed\", \"completed\" ] }, \"Status1\": { \"title\": \"Status1\", \"description\": \"An enumeration.\", \"enum\": [ \"queued\", \"selected\", \"dispatched\", \"failed_to_assign\", \"canceled_in_flight\" ] }, \"Assignment\": { \"title\": \"Assignment\", \"type\": \"object\", \"properties\": { \"fleet_name\": { \"title\": \"Fleet Name\", \"type\": \"string\" }, \"expected_robot_name\": { \"title\": \"Expected Robot Name\", \"type\": \"string\" } } }, \"Error\": { \"title\": \"Error\", \"type\": \"object\", \"properties\": { \"code\": { \"title\": \"Code\", \"description\": \"A standard code for the kind of error that has occurred\", \"minimum\": 0, \"type\": \"integer\" }, \"category\": { \"title\": \"Category\", \"description\": \"The category of the error\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Details about the error\", \"type\": \"string\" } } }, \"Dispatch\": { \"title\": \"Dispatch\", \"type\": \"object\", \"properties\": { \"status\": { \"$ref\": \"#/definitions/Status1\" }, \"assignment\": { \"$ref\": \"#/definitions/Assignment\" }, \"errors\": { \"title\": \"Errors\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Error\" } } }, \"required\": [ \"status\" ] }, \"Id\": { \"title\": \"Id\", \"minimum\": 0, \"type\": \"integer\" }, \"EventState\": { \"title\": \"EventState\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"name\": { \"title\": \"Name\", \"description\": \"The brief name of the event\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the event\", \"allOf\": [ { \"$ref\": \"#/definitions/Detail\" } ] }, \"deps\": { \"title\": \"Deps\", \"description\": \"This event may depend on other events. This array contains the IDs of those other event dependencies.\", \"type\": \"array\", \"items\": { \"type\": \"integer\", \"minimum\": 0 } } }, \"required\": [ \"id\" ] }, \"Undo\": { \"title\": \"Undo\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the undo skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the undo skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"SkipPhaseRequest\": { \"title\": \"SkipPhaseRequest\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"undo\": { \"title\": \"Undo\", \"description\": \"Information about an undo skip request that applied to this request\", \"allOf\": [ { \"$ref\": \"#/definitions/Undo\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Phase\": { \"title\": \"Phase\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"final_event_id\": { \"$ref\": \"#/definitions/Id\" }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/EventState\" } }, \"skip_requests\": { \"title\": \"Skip Requests\", \"description\": \"Information about any skip requests that have been received\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/SkipPhaseRequest\" } } }, \"required\": [ \"id\" ] }, \"ResumedBy\": { \"title\": \"ResumedBy\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the resume request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the resume request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"labels\" ] }, \"Interruption\": { \"title\": \"Interruption\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the interruption request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the interruption\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"resumed_by\": { \"title\": \"Resumed By\", \"description\": \"Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.\", \"allOf\": [ { \"$ref\": \"#/definitions/ResumedBy\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Cancellation\": { \"title\": \"Cancellation\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the cancel request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Killed\": { \"title\": \"Killed\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the kill request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] } } } ``` ### /tasks/{task_id}/log ``` { \"title\": \"TaskEventLog\", \"type\": \"object\", \"properties\": { \"task_id\": { \"title\": \"Task Id\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary whose keys (property names) are the indices of a phase\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phases\" } } }, \"required\": [ \"task_id\" ], \"additionalProperties\": false, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] }, \"Phases\": { \"title\": \"Phases\", \"type\": \"object\", \"properties\": { \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall phase\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary whose keys (property names) are the indices of an event in the phase\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"additionalProperties\": false } } } ``` ### /dispensers/{guid}/state ``` { \"title\": \"DispenserState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /dispensers/{guid}/health ``` { \"title\": \"DispenserHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /ingestors/{guid}/state ``` { \"title\": \"IngestorState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /ingestors/{guid}/health ``` { \"title\": \"IngestorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /fleets/{name}/state ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"robots\": { \"title\": \"Robots\", \"description\": \"A dictionary of the states of the robots that belong to this fleet\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/RobotState\" } } }, \"definitions\": { \"Status2\": { \"title\": \"Status2\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"offline\", \"shutdown\", \"idle\", \"charging\", \"working\", \"error\" ] }, \"Location2D\": { \"title\": \"Location2D\", \"type\": \"object\", \"properties\": { \"map\": { \"title\": \"Map\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"type\": \"number\" } }, \"required\": [ \"map\", \"x\", \"y\", \"yaw\" ] }, \"Issue\": { \"title\": \"Issue\", \"type\": \"object\", \"properties\": { \"category\": { \"title\": \"Category\", \"description\": \"Category of the robot\'s issue\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the issue\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] } } }, \"RobotState\": { \"title\": \"RobotState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"status\": { \"description\": \"A simple token representing the status of the robot\", \"allOf\": [ { \"$ref\": \"#/definitions/Status2\" } ] }, \"task_id\": { \"title\": \"Task Id\", \"description\": \"The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.\", \"type\": \"string\" }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"location\": { \"$ref\": \"#/definitions/Location2D\" }, \"battery\": { \"title\": \"Battery\", \"description\": \"State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)\", \"minimum\": 0.0, \"maximum\": 1.0, \"type\": \"number\" }, \"issues\": { \"title\": \"Issues\", \"description\": \"A list of issues with the robot that operators need to address\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Issue\" } } } } } } ``` ### /fleets/{name}/log ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log for the overall fleet\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"robots\": { \"title\": \"Robots\", \"description\": \"Dictionary of logs for the individual robots. The keys (property names) are the robot names.\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] } } } ``` + * # NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint. ## About This exposes a minimal pubsub system built on top of socket.io. It works similar to a normal socket.io endpoint, except that are 2 special rooms which control subscriptions. ## Rooms ### subscribe Clients must send a message to this room to start receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### unsubscribe Clients can send a message to this room to stop receiving messages on other rooms. The message must be of the form: ``` { \"room\": \"\" } ``` ### /alerts ``` { \"title\": \"Alert\", \"description\": \"General alert that can be triggered by events.\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"original_id\": { \"title\": \"Original Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Default: default
Task: task
Fleet: fleet
Robot: robot\", \"maxLength\": 7, \"type\": \"string\" }, \"unix_millis_created_time\": { \"title\": \"Unix Millis Created Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"type\": \"integer\" }, \"acknowledged_by\": { \"title\": \"Acknowledged By\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"unix_millis_acknowledged_time\": { \"title\": \"Unix Millis Acknowledged Time\", \"minimum\": -9223372036854775808, \"maximum\": 9223372036854775807, \"nullable\": true, \"type\": \"integer\" } }, \"required\": [ \"id\", \"original_id\", \"category\", \"unix_millis_created_time\" ], \"additionalProperties\": false } ``` ### /beacons ``` { \"title\": \"BeaconState\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"online\": { \"title\": \"Online\", \"type\": \"boolean\" }, \"category\": { \"title\": \"Category\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"activated\": { \"title\": \"Activated\", \"type\": \"boolean\" }, \"level\": { \"title\": \"Level\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"online\", \"activated\" ], \"additionalProperties\": false } ``` ### /building_map ``` { \"title\": \"BuildingMap\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Level\" } }, \"lifts\": { \"title\": \"Lifts\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Lift\" } } }, \"required\": [ \"name\", \"levels\", \"lifts\" ], \"definitions\": { \"AffineImage\": { \"title\": \"AffineImage\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x_offset\": { \"title\": \"X Offset\", \"default\": 0, \"type\": \"number\" }, \"y_offset\": { \"title\": \"Y Offset\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"scale\": { \"title\": \"Scale\", \"default\": 0, \"type\": \"number\" }, \"encoding\": { \"title\": \"Encoding\", \"default\": \"\", \"type\": \"string\" }, \"data\": { \"title\": \"Data\", \"type\": \"string\" } }, \"required\": [ \"name\", \"x_offset\", \"y_offset\", \"yaw\", \"scale\", \"encoding\", \"data\" ] }, \"Place\": { \"title\": \"Place\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"default\": 0, \"type\": \"number\" }, \"position_tolerance\": { \"title\": \"Position Tolerance\", \"default\": 0, \"type\": \"number\" }, \"yaw_tolerance\": { \"title\": \"Yaw Tolerance\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"x\", \"y\", \"yaw\", \"position_tolerance\", \"yaw_tolerance\" ] }, \"Door\": { \"title\": \"Door\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"v1_x\": { \"title\": \"V1 X\", \"default\": 0, \"type\": \"number\" }, \"v1_y\": { \"title\": \"V1 Y\", \"default\": 0, \"type\": \"number\" }, \"v2_x\": { \"title\": \"V2 X\", \"default\": 0, \"type\": \"number\" }, \"v2_y\": { \"title\": \"V2 Y\", \"default\": 0, \"type\": \"number\" }, \"door_type\": { \"title\": \"Door Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_range\": { \"title\": \"Motion Range\", \"default\": 0, \"type\": \"number\" }, \"motion_direction\": { \"title\": \"Motion Direction\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" } }, \"required\": [ \"name\", \"v1_x\", \"v1_y\", \"v2_x\", \"v2_y\", \"door_type\", \"motion_range\", \"motion_direction\" ] }, \"Param\": { \"title\": \"Param\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"type\": { \"title\": \"Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"value_int\": { \"title\": \"Value Int\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"value_float\": { \"title\": \"Value Float\", \"default\": 0, \"type\": \"number\" }, \"value_string\": { \"title\": \"Value String\", \"default\": \"\", \"type\": \"string\" }, \"value_bool\": { \"title\": \"Value Bool\", \"default\": false, \"type\": \"boolean\" } }, \"required\": [ \"name\", \"type\", \"value_int\", \"value_float\", \"value_string\", \"value_bool\" ] }, \"GraphNode\": { \"title\": \"GraphNode\", \"type\": \"object\", \"properties\": { \"x\": { \"title\": \"X\", \"default\": 0, \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"default\": 0, \"type\": \"number\" }, \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"x\", \"y\", \"name\", \"params\" ] }, \"GraphEdge\": { \"title\": \"GraphEdge\", \"type\": \"object\", \"properties\": { \"v1_idx\": { \"title\": \"V1 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"v2_idx\": { \"title\": \"V2 Idx\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } }, \"edge_type\": { \"title\": \"Edge Type\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" } }, \"required\": [ \"v1_idx\", \"v2_idx\", \"params\", \"edge_type\" ] }, \"Graph\": { \"title\": \"Graph\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"vertices\": { \"title\": \"Vertices\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphNode\" } }, \"edges\": { \"title\": \"Edges\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/GraphEdge\" } }, \"params\": { \"title\": \"Params\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Param\" } } }, \"required\": [ \"name\", \"vertices\", \"edges\", \"params\" ] }, \"Level\": { \"title\": \"Level\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"elevation\": { \"title\": \"Elevation\", \"default\": 0, \"type\": \"number\" }, \"images\": { \"title\": \"Images\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/AffineImage\" } }, \"places\": { \"title\": \"Places\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Place\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"nav_graphs\": { \"title\": \"Nav Graphs\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Graph\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] } }, \"required\": [ \"name\", \"elevation\", \"images\", \"places\", \"doors\", \"nav_graphs\", \"wall_graph\" ] }, \"Lift\": { \"title\": \"Lift\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"default\": \"\", \"type\": \"string\" }, \"levels\": { \"title\": \"Levels\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"doors\": { \"title\": \"Doors\", \"default\": [], \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Door\" } }, \"wall_graph\": { \"title\": \"Wall Graph\", \"default\": { \"name\": \"\", \"vertices\": [], \"edges\": [], \"params\": [] }, \"allOf\": [ { \"$ref\": \"#/definitions/Graph\" } ] }, \"ref_x\": { \"title\": \"Ref X\", \"default\": 0, \"type\": \"number\" }, \"ref_y\": { \"title\": \"Ref Y\", \"default\": 0, \"type\": \"number\" }, \"ref_yaw\": { \"title\": \"Ref Yaw\", \"default\": 0, \"type\": \"number\" }, \"width\": { \"title\": \"Width\", \"default\": 0, \"type\": \"number\" }, \"depth\": { \"title\": \"Depth\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"name\", \"levels\", \"doors\", \"wall_graph\", \"ref_x\", \"ref_y\", \"ref_yaw\", \"width\", \"depth\" ] } } } ``` ### /delivery_alerts ``` { \"title\": \"DeliveryAlert\", \"description\": \"Custom alerts for custom delivery tasks\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"maxLength\": 255, \"type\": \"string\" }, \"category\": { \"title\": \"Category\", \"description\": \"Missing: missing
Wrong: wrong\", \"maxLength\": 7, \"type\": \"string\" }, \"tier\": { \"title\": \"Tier\", \"description\": \"Warning: warning
Error: error\", \"maxLength\": 7, \"type\": \"string\" }, \"task_id\": { \"title\": \"Task Id\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"action\": { \"title\": \"Action\", \"description\": \"Waiting: waiting
Cancel: cancelled
Override: override
Resume: resume\", \"maxLength\": 9, \"type\": \"string\" }, \"message\": { \"title\": \"Message\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" } }, \"required\": [ \"id\", \"category\", \"tier\", \"action\" ], \"additionalProperties\": false } ``` ### /doors/{door_name}/state ``` { \"title\": \"DoorState\", \"type\": \"object\", \"properties\": { \"door_time\": { \"title\": \"Door Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"door_name\": { \"title\": \"Door Name\", \"default\": \"\", \"type\": \"string\" }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": { \"value\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/DoorMode\" } ] } }, \"required\": [ \"door_time\", \"door_name\", \"current_mode\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] }, \"DoorMode\": { \"title\": \"DoorMode\", \"type\": \"object\", \"properties\": { \"value\": { \"title\": \"Value\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"value\" ] } } } ``` ### /doors/{door_name}/health ``` { \"title\": \"DoorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /lifts/{lift_name}/state ``` { \"title\": \"LiftState\", \"type\": \"object\", \"properties\": { \"lift_time\": { \"title\": \"Lift Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"lift_name\": { \"title\": \"Lift Name\", \"default\": \"\", \"type\": \"string\" }, \"available_floors\": { \"title\": \"Available Floors\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"current_floor\": { \"title\": \"Current Floor\", \"default\": \"\", \"type\": \"string\" }, \"destination_floor\": { \"title\": \"Destination Floor\", \"default\": \"\", \"type\": \"string\" }, \"door_state\": { \"title\": \"Door State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"motion_state\": { \"title\": \"Motion State\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"available_modes\": { \"title\": \"Available Modes\", \"type\": \"array\", \"items\": { \"type\": \"integer\" } }, \"current_mode\": { \"title\": \"Current Mode\", \"default\": 0, \"minimum\": 0, \"maximum\": 255, \"type\": \"integer\" }, \"session_id\": { \"title\": \"Session Id\", \"default\": \"\", \"type\": \"string\" } }, \"required\": [ \"lift_time\", \"lift_name\", \"available_floors\", \"current_floor\", \"destination_floor\", \"door_state\", \"motion_state\", \"available_modes\", \"current_mode\", \"session_id\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /lifts/{lift_name}/health ``` { \"title\": \"LiftHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /tasks/{task_id}/state ``` { \"title\": \"TaskState\", \"type\": \"object\", \"properties\": { \"booking\": { \"$ref\": \"#/definitions/Booking\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"assigned_to\": { \"title\": \"Assigned To\", \"description\": \"Which agent (robot) is the task assigned to\", \"allOf\": [ { \"$ref\": \"#/definitions/AssignedTo\" } ] }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"dispatch\": { \"$ref\": \"#/definitions/Dispatch\" }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phase\" } }, \"completed\": { \"title\": \"Completed\", \"description\": \"An array of the IDs of completed phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"active\": { \"title\": \"Active\", \"description\": \"The ID of the active phase for this task\", \"allOf\": [ { \"$ref\": \"#/definitions/Id\" } ] }, \"pending\": { \"title\": \"Pending\", \"description\": \"An array of the pending phases of this task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Id\" } }, \"interruptions\": { \"title\": \"Interruptions\", \"description\": \"A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Interruption\" } }, \"cancellation\": { \"title\": \"Cancellation\", \"description\": \"If the task was cancelled, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Cancellation\" } ] }, \"killed\": { \"title\": \"Killed\", \"description\": \"If the task was killed, this will describe information about the request.\", \"allOf\": [ { \"$ref\": \"#/definitions/Killed\" } ] }, \"unix_millis_warn_time\": { \"title\": \"Unix Millis Warn Time\", \"type\": \"integer\" } }, \"required\": [ \"booking\" ], \"definitions\": { \"Booking\": { \"title\": \"Booking\", \"type\": \"object\", \"properties\": { \"id\": { \"title\": \"Id\", \"description\": \"The unique identifier for this task\", \"type\": \"string\" }, \"unix_millis_earliest_start_time\": { \"title\": \"Unix Millis Earliest Start Time\", \"type\": \"integer\" }, \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"type\": \"integer\" }, \"priority\": { \"title\": \"Priority\", \"description\": \"Priority information about this task\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"string\" } ] }, \"labels\": { \"title\": \"Labels\", \"description\": \"Information about how and why this task was booked\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"requester\": { \"title\": \"Requester\", \"description\": \"(Optional) An identifier for the entity that requested this task\", \"type\": \"string\" } }, \"required\": [ \"id\" ] }, \"Category\": { \"title\": \"Category\", \"description\": \"The category of this task or phase\", \"type\": \"string\" }, \"Detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about a task, phase, or event\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] }, \"EstimateMillis\": { \"title\": \"EstimateMillis\", \"description\": \"An estimate, in milliseconds, of how long the subject will take to complete\", \"minimum\": 0, \"type\": \"integer\" }, \"AssignedTo\": { \"title\": \"AssignedTo\", \"type\": \"object\", \"properties\": { \"group\": { \"title\": \"Group\", \"type\": \"string\" }, \"name\": { \"title\": \"Name\", \"type\": \"string\" } }, \"required\": [ \"group\", \"name\" ] }, \"Status\": { \"title\": \"Status\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"blocked\", \"error\", \"failed\", \"queued\", \"standby\", \"underway\", \"delayed\", \"skipped\", \"canceled\", \"killed\", \"completed\" ] }, \"Status1\": { \"title\": \"Status1\", \"description\": \"An enumeration.\", \"enum\": [ \"queued\", \"selected\", \"dispatched\", \"failed_to_assign\", \"canceled_in_flight\" ] }, \"Assignment\": { \"title\": \"Assignment\", \"type\": \"object\", \"properties\": { \"fleet_name\": { \"title\": \"Fleet Name\", \"type\": \"string\" }, \"expected_robot_name\": { \"title\": \"Expected Robot Name\", \"type\": \"string\" } } }, \"Error\": { \"title\": \"Error\", \"type\": \"object\", \"properties\": { \"code\": { \"title\": \"Code\", \"description\": \"A standard code for the kind of error that has occurred\", \"minimum\": 0, \"type\": \"integer\" }, \"category\": { \"title\": \"Category\", \"description\": \"The category of the error\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Details about the error\", \"type\": \"string\" } } }, \"Dispatch\": { \"title\": \"Dispatch\", \"type\": \"object\", \"properties\": { \"status\": { \"$ref\": \"#/definitions/Status1\" }, \"assignment\": { \"$ref\": \"#/definitions/Assignment\" }, \"errors\": { \"title\": \"Errors\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Error\" } } }, \"required\": [ \"status\" ] }, \"Id\": { \"title\": \"Id\", \"minimum\": 0, \"type\": \"integer\" }, \"EventState\": { \"title\": \"EventState\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"status\": { \"$ref\": \"#/definitions/Status\" }, \"name\": { \"title\": \"Name\", \"description\": \"The brief name of the event\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the event\", \"allOf\": [ { \"$ref\": \"#/definitions/Detail\" } ] }, \"deps\": { \"title\": \"Deps\", \"description\": \"This event may depend on other events. This array contains the IDs of those other event dependencies.\", \"type\": \"array\", \"items\": { \"type\": \"integer\", \"minimum\": 0 } } }, \"required\": [ \"id\" ] }, \"Undo\": { \"title\": \"Undo\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the undo skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the undo skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"SkipPhaseRequest\": { \"title\": \"SkipPhaseRequest\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the skip request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the skip request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"undo\": { \"title\": \"Undo\", \"description\": \"Information about an undo skip request that applied to this request\", \"allOf\": [ { \"$ref\": \"#/definitions/Undo\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Phase\": { \"title\": \"Phase\", \"type\": \"object\", \"properties\": { \"id\": { \"$ref\": \"#/definitions/Id\" }, \"category\": { \"$ref\": \"#/definitions/Category\" }, \"detail\": { \"$ref\": \"#/definitions/Detail\" }, \"unix_millis_start_time\": { \"title\": \"Unix Millis Start Time\", \"type\": \"integer\" }, \"unix_millis_finish_time\": { \"title\": \"Unix Millis Finish Time\", \"type\": \"integer\" }, \"original_estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"estimate_millis\": { \"$ref\": \"#/definitions/EstimateMillis\" }, \"final_event_id\": { \"$ref\": \"#/definitions/Id\" }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/EventState\" } }, \"skip_requests\": { \"title\": \"Skip Requests\", \"description\": \"Information about any skip requests that have been received\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/SkipPhaseRequest\" } } }, \"required\": [ \"id\" ] }, \"ResumedBy\": { \"title\": \"ResumedBy\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the resume request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the resume request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"labels\" ] }, \"Interruption\": { \"title\": \"Interruption\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the interruption request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the purpose of the interruption\", \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"resumed_by\": { \"title\": \"Resumed By\", \"description\": \"Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.\", \"allOf\": [ { \"$ref\": \"#/definitions/ResumedBy\" } ] } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Cancellation\": { \"title\": \"Cancellation\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the cancel request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] }, \"Killed\": { \"title\": \"Killed\", \"type\": \"object\", \"properties\": { \"unix_millis_request_time\": { \"title\": \"Unix Millis Request Time\", \"description\": \"The time that the cancellation request arrived\", \"type\": \"integer\" }, \"labels\": { \"title\": \"Labels\", \"description\": \"Labels to describe the kill request\", \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [ \"unix_millis_request_time\", \"labels\" ] } } } ``` ### /tasks/{task_id}/log ``` { \"title\": \"TaskEventLog\", \"type\": \"object\", \"properties\": { \"task_id\": { \"title\": \"Task Id\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall task\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"phases\": { \"title\": \"Phases\", \"description\": \"A dictionary whose keys (property names) are the indices of a phase\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/Phases\" } } }, \"required\": [ \"task_id\" ], \"additionalProperties\": false, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] }, \"Phases\": { \"title\": \"Phases\", \"type\": \"object\", \"properties\": { \"log\": { \"title\": \"Log\", \"description\": \"Log entries related to the overall phase\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"events\": { \"title\": \"Events\", \"description\": \"A dictionary whose keys (property names) are the indices of an event in the phase\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"additionalProperties\": false } } } ``` ### /dispensers/{guid}/state ``` { \"title\": \"DispenserState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /dispensers/{guid}/health ``` { \"title\": \"DispenserHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /ingestors/{guid}/state ``` { \"title\": \"IngestorState\", \"type\": \"object\", \"properties\": { \"time\": { \"title\": \"Time\", \"default\": { \"sec\": 0, \"nanosec\": 0 }, \"allOf\": [ { \"$ref\": \"#/definitions/Time\" } ] }, \"guid\": { \"title\": \"Guid\", \"default\": \"\", \"type\": \"string\" }, \"mode\": { \"title\": \"Mode\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"request_guid_queue\": { \"title\": \"Request Guid Queue\", \"default\": [], \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"seconds_remaining\": { \"title\": \"Seconds Remaining\", \"default\": 0, \"type\": \"number\" } }, \"required\": [ \"time\", \"guid\", \"mode\", \"request_guid_queue\", \"seconds_remaining\" ], \"definitions\": { \"Time\": { \"title\": \"Time\", \"type\": \"object\", \"properties\": { \"sec\": { \"title\": \"Sec\", \"default\": 0, \"minimum\": -2147483648, \"maximum\": 2147483647, \"type\": \"integer\" }, \"nanosec\": { \"title\": \"Nanosec\", \"default\": 0, \"minimum\": 0, \"maximum\": 4294967295, \"type\": \"integer\" } }, \"required\": [ \"sec\", \"nanosec\" ] } } } ``` ### /ingestors/{guid}/health ``` { \"title\": \"IngestorHealth\", \"type\": \"object\", \"properties\": { \"health_status\": { \"title\": \"Health Status\", \"maxLength\": 255, \"nullable\": true, \"type\": \"string\" }, \"health_message\": { \"title\": \"Health Message\", \"nullable\": true, \"type\": \"string\" }, \"id_\": { \"title\": \"Id \", \"maxLength\": 255, \"type\": \"string\" } }, \"required\": [ \"health_status\", \"id_\" ], \"additionalProperties\": false } ``` ### /fleets/{name}/state ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"robots\": { \"title\": \"Robots\", \"description\": \"A dictionary of the states of the robots that belong to this fleet\", \"type\": \"object\", \"additionalProperties\": { \"$ref\": \"#/definitions/RobotState\" } } }, \"definitions\": { \"Status2\": { \"title\": \"Status2\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"offline\", \"shutdown\", \"idle\", \"charging\", \"working\", \"error\" ] }, \"Location2D\": { \"title\": \"Location2D\", \"type\": \"object\", \"properties\": { \"map\": { \"title\": \"Map\", \"type\": \"string\" }, \"x\": { \"title\": \"X\", \"type\": \"number\" }, \"y\": { \"title\": \"Y\", \"type\": \"number\" }, \"yaw\": { \"title\": \"Yaw\", \"type\": \"number\" } }, \"required\": [ \"map\", \"x\", \"y\", \"yaw\" ] }, \"Issue\": { \"title\": \"Issue\", \"type\": \"object\", \"properties\": { \"category\": { \"title\": \"Category\", \"description\": \"Category of the robot\'s issue\", \"type\": \"string\" }, \"detail\": { \"title\": \"Detail\", \"description\": \"Detailed information about the issue\", \"anyOf\": [ { \"type\": \"object\" }, { \"type\": \"array\", \"items\": {} }, { \"type\": \"string\" } ] } } }, \"RobotState\": { \"title\": \"RobotState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"status\": { \"description\": \"A simple token representing the status of the robot\", \"allOf\": [ { \"$ref\": \"#/definitions/Status2\" } ] }, \"task_id\": { \"title\": \"Task Id\", \"description\": \"The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.\", \"type\": \"string\" }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"location\": { \"$ref\": \"#/definitions/Location2D\" }, \"battery\": { \"title\": \"Battery\", \"description\": \"State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)\", \"minimum\": 0.0, \"maximum\": 1.0, \"type\": \"number\" }, \"issues\": { \"title\": \"Issues\", \"description\": \"A list of issues with the robot that operators need to address\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Issue\" } } } } } } ``` ### /fleets/{name}/log ``` { \"title\": \"FleetState\", \"type\": \"object\", \"properties\": { \"name\": { \"title\": \"Name\", \"type\": \"string\" }, \"log\": { \"title\": \"Log\", \"description\": \"Log for the overall fleet\", \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } }, \"robots\": { \"title\": \"Robots\", \"description\": \"Dictionary of logs for the individual robots. The keys (property names) are the robot names.\", \"type\": \"object\", \"additionalProperties\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/LogEntry\" } } } }, \"definitions\": { \"Tier\": { \"title\": \"Tier\", \"description\": \"An enumeration.\", \"enum\": [ \"uninitialized\", \"info\", \"warning\", \"error\" ] }, \"LogEntry\": { \"title\": \"LogEntry\", \"type\": \"object\", \"properties\": { \"seq\": { \"title\": \"Seq\", \"description\": \"Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.\", \"exclusiveMaximum\": 4294967296, \"minimum\": 0, \"type\": \"integer\" }, \"tier\": { \"description\": \"The importance level of the log entry\", \"allOf\": [ { \"$ref\": \"#/definitions/Tier\" } ] }, \"unix_millis_time\": { \"title\": \"Unix Millis Time\", \"type\": \"integer\" }, \"text\": { \"title\": \"Text\", \"description\": \"The text of the log entry\", \"type\": \"string\" } }, \"required\": [ \"seq\", \"tier\", \"unix_millis_time\", \"text\" ] } } } ``` * @summary Socket.io endpoint * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -5716,6 +5759,495 @@ export class DefaultApi extends BaseAPI { } } +/** + * DeliveryAlertsApi - axios parameter creator + * @export + */ +export const DeliveryAlertsApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary Create Delivery Alert + * @param {string} category + * @param {string} tier + * @param {string} taskId + * @param {string} message + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createDeliveryAlertDeliveryAlertsPost: async ( + category: string, + tier: string, + taskId: string, + message: string, + options: AxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'category' is not null or undefined + assertParamExists('createDeliveryAlertDeliveryAlertsPost', 'category', category); + // verify required parameter 'tier' is not null or undefined + assertParamExists('createDeliveryAlertDeliveryAlertsPost', 'tier', tier); + // verify required parameter 'taskId' is not null or undefined + assertParamExists('createDeliveryAlertDeliveryAlertsPost', 'taskId', taskId); + // verify required parameter 'message' is not null or undefined + assertParamExists('createDeliveryAlertDeliveryAlertsPost', 'message', message); + const localVarPath = `/delivery_alerts`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (category !== undefined) { + localVarQueryParameter['category'] = category; + } + + if (tier !== undefined) { + localVarQueryParameter['tier'] = tier; + } + + if (taskId !== undefined) { + localVarQueryParameter['task_id'] = taskId; + } + + if (message !== undefined) { + localVarQueryParameter['message'] = message; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Get Delivery Alert + * @param {string} deliveryAlertId + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getDeliveryAlertDeliveryAlertsDeliveryAlertIdGet: async ( + deliveryAlertId: string, + options: AxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'deliveryAlertId' is not null or undefined + assertParamExists( + 'getDeliveryAlertDeliveryAlertsDeliveryAlertIdGet', + 'deliveryAlertId', + deliveryAlertId, + ); + const localVarPath = `/delivery_alerts/{delivery_alert_id}`.replace( + `{${'delivery_alert_id'}}`, + encodeURIComponent(String(deliveryAlertId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Get Delivery Alerts + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getDeliveryAlertsDeliveryAlertsGet: async ( + options: AxiosRequestConfig = {}, + ): Promise => { + const localVarPath = `/delivery_alerts`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Update Delivery Alert Action + * @param {string} deliveryAlertId + * @param {string} action + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost: async ( + deliveryAlertId: string, + action: string, + options: AxiosRequestConfig = {}, + ): Promise => { + // verify required parameter 'deliveryAlertId' is not null or undefined + assertParamExists( + 'updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost', + 'deliveryAlertId', + deliveryAlertId, + ); + // verify required parameter 'action' is not null or undefined + assertParamExists( + 'updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost', + 'action', + action, + ); + const localVarPath = `/delivery_alerts/{delivery_alert_id}/action`.replace( + `{${'delivery_alert_id'}}`, + encodeURIComponent(String(deliveryAlertId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (action !== undefined) { + localVarQueryParameter['action'] = action; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + }; +}; + +/** + * DeliveryAlertsApi - functional programming interface + * @export + */ +export const DeliveryAlertsApiFp = function (configuration?: Configuration) { + const localVarAxiosParamCreator = DeliveryAlertsApiAxiosParamCreator(configuration); + return { + /** + * + * @summary Create Delivery Alert + * @param {string} category + * @param {string} tier + * @param {string} taskId + * @param {string} message + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createDeliveryAlertDeliveryAlertsPost( + category: string, + tier: string, + taskId: string, + message: string, + options?: AxiosRequestConfig, + ): Promise< + ( + axios?: AxiosInstance, + basePath?: string, + ) => AxiosPromise + > { + const localVarAxiosArgs = + await localVarAxiosParamCreator.createDeliveryAlertDeliveryAlertsPost( + category, + tier, + taskId, + message, + options, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Get Delivery Alert + * @param {string} deliveryAlertId + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getDeliveryAlertDeliveryAlertsDeliveryAlertIdGet( + deliveryAlertId: string, + options?: AxiosRequestConfig, + ): Promise< + ( + axios?: AxiosInstance, + basePath?: string, + ) => AxiosPromise + > { + const localVarAxiosArgs = + await localVarAxiosParamCreator.getDeliveryAlertDeliveryAlertsDeliveryAlertIdGet( + deliveryAlertId, + options, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Get Delivery Alerts + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getDeliveryAlertsDeliveryAlertsGet( + options?: AxiosRequestConfig, + ): Promise< + ( + axios?: AxiosInstance, + basePath?: string, + ) => AxiosPromise> + > { + const localVarAxiosArgs = await localVarAxiosParamCreator.getDeliveryAlertsDeliveryAlertsGet( + options, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Update Delivery Alert Action + * @param {string} deliveryAlertId + * @param {string} action + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + deliveryAlertId: string, + action: string, + options?: AxiosRequestConfig, + ): Promise< + ( + axios?: AxiosInstance, + basePath?: string, + ) => AxiosPromise + > { + const localVarAxiosArgs = + await localVarAxiosParamCreator.updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + deliveryAlertId, + action, + options, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + }; +}; + +/** + * DeliveryAlertsApi - factory interface + * @export + */ +export const DeliveryAlertsApiFactory = function ( + configuration?: Configuration, + basePath?: string, + axios?: AxiosInstance, +) { + const localVarFp = DeliveryAlertsApiFp(configuration); + return { + /** + * + * @summary Create Delivery Alert + * @param {string} category + * @param {string} tier + * @param {string} taskId + * @param {string} message + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createDeliveryAlertDeliveryAlertsPost( + category: string, + tier: string, + taskId: string, + message: string, + options?: any, + ): AxiosPromise { + return localVarFp + .createDeliveryAlertDeliveryAlertsPost(category, tier, taskId, message, options) + .then((request) => request(axios, basePath)); + }, + /** + * + * @summary Get Delivery Alert + * @param {string} deliveryAlertId + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getDeliveryAlertDeliveryAlertsDeliveryAlertIdGet( + deliveryAlertId: string, + options?: any, + ): AxiosPromise { + return localVarFp + .getDeliveryAlertDeliveryAlertsDeliveryAlertIdGet(deliveryAlertId, options) + .then((request) => request(axios, basePath)); + }, + /** + * + * @summary Get Delivery Alerts + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getDeliveryAlertsDeliveryAlertsGet( + options?: any, + ): AxiosPromise> { + return localVarFp + .getDeliveryAlertsDeliveryAlertsGet(options) + .then((request) => request(axios, basePath)); + }, + /** + * + * @summary Update Delivery Alert Action + * @param {string} deliveryAlertId + * @param {string} action + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + deliveryAlertId: string, + action: string, + options?: any, + ): AxiosPromise { + return localVarFp + .updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + deliveryAlertId, + action, + options, + ) + .then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * DeliveryAlertsApi - object-oriented interface + * @export + * @class DeliveryAlertsApi + * @extends {BaseAPI} + */ +export class DeliveryAlertsApi extends BaseAPI { + /** + * + * @summary Create Delivery Alert + * @param {string} category + * @param {string} tier + * @param {string} taskId + * @param {string} message + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DeliveryAlertsApi + */ + public createDeliveryAlertDeliveryAlertsPost( + category: string, + tier: string, + taskId: string, + message: string, + options?: AxiosRequestConfig, + ) { + return DeliveryAlertsApiFp(this.configuration) + .createDeliveryAlertDeliveryAlertsPost(category, tier, taskId, message, options) + .then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Get Delivery Alert + * @param {string} deliveryAlertId + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DeliveryAlertsApi + */ + public getDeliveryAlertDeliveryAlertsDeliveryAlertIdGet( + deliveryAlertId: string, + options?: AxiosRequestConfig, + ) { + return DeliveryAlertsApiFp(this.configuration) + .getDeliveryAlertDeliveryAlertsDeliveryAlertIdGet(deliveryAlertId, options) + .then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Get Delivery Alerts + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DeliveryAlertsApi + */ + public getDeliveryAlertsDeliveryAlertsGet(options?: AxiosRequestConfig) { + return DeliveryAlertsApiFp(this.configuration) + .getDeliveryAlertsDeliveryAlertsGet(options) + .then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Update Delivery Alert Action + * @param {string} deliveryAlertId + * @param {string} action + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DeliveryAlertsApi + */ + public updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + deliveryAlertId: string, + action: string, + options?: AxiosRequestConfig, + ) { + return DeliveryAlertsApiFp(this.configuration) + .updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + deliveryAlertId, + action, + options, + ) + .then((request) => request(this.axios, this.basePath)); + } +} + /** * DispensersApi - axios parameter creator * @export diff --git a/packages/api-client/lib/version.ts b/packages/api-client/lib/version.ts index 115944cbc..cc4b0dcda 100644 --- a/packages/api-client/lib/version.ts +++ b/packages/api-client/lib/version.ts @@ -3,6 +3,6 @@ import { version as rmfModelVer } from 'rmf-models'; export const version = { rmfModels: rmfModelVer, - rmfServer: '60cfa28fb26433cb33254ba1522fc00466fe7146', + rmfServer: '6ca8484298a18d0b71041295c6c7880555971461', openapiGenerator: '6.2.1', }; diff --git a/packages/api-client/schema/index.ts b/packages/api-client/schema/index.ts index 2e9279b2c..520de028b 100644 --- a/packages/api-client/schema/index.ts +++ b/packages/api-client/schema/index.ts @@ -6,7 +6,7 @@ export default { get: { summary: 'Socket.io endpoint', description: - '\n# NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint.\n\n## About\nThis exposes a minimal pubsub system built on top of socket.io.\nIt works similar to a normal socket.io endpoint, except that are 2 special\nrooms which control subscriptions.\n\n## Rooms\n### subscribe\nClients must send a message to this room to start receiving messages on other rooms.\nThe message must be of the form:\n\n```\n{\n "room": ""\n}\n```\n\n### unsubscribe\nClients can send a message to this room to stop receiving messages on other rooms.\nThe message must be of the form:\n\n```\n{\n "room": ""\n}\n```\n \n### /alerts\n\n\n```\n{\n "title": "Alert",\n "description": "General alert that can be triggered by events.",\n "type": "object",\n "properties": {\n "id": {\n "title": "Id",\n "maxLength": 255,\n "type": "string"\n },\n "original_id": {\n "title": "Original Id",\n "maxLength": 255,\n "type": "string"\n },\n "category": {\n "title": "Category",\n "description": "Default: default
Task: task
Fleet: fleet
Robot: robot",\n "maxLength": 7,\n "type": "string"\n },\n "unix_millis_created_time": {\n "title": "Unix Millis Created Time",\n "minimum": -9223372036854775808,\n "maximum": 9223372036854775807,\n "type": "integer"\n },\n "acknowledged_by": {\n "title": "Acknowledged By",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "unix_millis_acknowledged_time": {\n "title": "Unix Millis Acknowledged Time",\n "minimum": -9223372036854775808,\n "maximum": 9223372036854775807,\n "nullable": true,\n "type": "integer"\n }\n },\n "required": [\n "id",\n "original_id",\n "category",\n "unix_millis_created_time"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /beacons\n\n\n```\n{\n "title": "BeaconState",\n "type": "object",\n "properties": {\n "id": {\n "title": "Id",\n "maxLength": 255,\n "type": "string"\n },\n "online": {\n "title": "Online",\n "type": "boolean"\n },\n "category": {\n "title": "Category",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "activated": {\n "title": "Activated",\n "type": "boolean"\n },\n "level": {\n "title": "Level",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n }\n },\n "required": [\n "id",\n "online",\n "activated"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /building_map\n\n\n```\n{\n "title": "BuildingMap",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "levels": {\n "title": "Levels",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Level"\n }\n },\n "lifts": {\n "title": "Lifts",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Lift"\n }\n }\n },\n "required": [\n "name",\n "levels",\n "lifts"\n ],\n "definitions": {\n "AffineImage": {\n "title": "AffineImage",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "x_offset": {\n "title": "X Offset",\n "default": 0,\n "type": "number"\n },\n "y_offset": {\n "title": "Y Offset",\n "default": 0,\n "type": "number"\n },\n "yaw": {\n "title": "Yaw",\n "default": 0,\n "type": "number"\n },\n "scale": {\n "title": "Scale",\n "default": 0,\n "type": "number"\n },\n "encoding": {\n "title": "Encoding",\n "default": "",\n "type": "string"\n },\n "data": {\n "title": "Data",\n "type": "string"\n }\n },\n "required": [\n "name",\n "x_offset",\n "y_offset",\n "yaw",\n "scale",\n "encoding",\n "data"\n ]\n },\n "Place": {\n "title": "Place",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "x": {\n "title": "X",\n "default": 0,\n "type": "number"\n },\n "y": {\n "title": "Y",\n "default": 0,\n "type": "number"\n },\n "yaw": {\n "title": "Yaw",\n "default": 0,\n "type": "number"\n },\n "position_tolerance": {\n "title": "Position Tolerance",\n "default": 0,\n "type": "number"\n },\n "yaw_tolerance": {\n "title": "Yaw Tolerance",\n "default": 0,\n "type": "number"\n }\n },\n "required": [\n "name",\n "x",\n "y",\n "yaw",\n "position_tolerance",\n "yaw_tolerance"\n ]\n },\n "Door": {\n "title": "Door",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "v1_x": {\n "title": "V1 X",\n "default": 0,\n "type": "number"\n },\n "v1_y": {\n "title": "V1 Y",\n "default": 0,\n "type": "number"\n },\n "v2_x": {\n "title": "V2 X",\n "default": 0,\n "type": "number"\n },\n "v2_y": {\n "title": "V2 Y",\n "default": 0,\n "type": "number"\n },\n "door_type": {\n "title": "Door Type",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n },\n "motion_range": {\n "title": "Motion Range",\n "default": 0,\n "type": "number"\n },\n "motion_direction": {\n "title": "Motion Direction",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n }\n },\n "required": [\n "name",\n "v1_x",\n "v1_y",\n "v2_x",\n "v2_y",\n "door_type",\n "motion_range",\n "motion_direction"\n ]\n },\n "Param": {\n "title": "Param",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "type": {\n "title": "Type",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n },\n "value_int": {\n "title": "Value Int",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "value_float": {\n "title": "Value Float",\n "default": 0,\n "type": "number"\n },\n "value_string": {\n "title": "Value String",\n "default": "",\n "type": "string"\n },\n "value_bool": {\n "title": "Value Bool",\n "default": false,\n "type": "boolean"\n }\n },\n "required": [\n "name",\n "type",\n "value_int",\n "value_float",\n "value_string",\n "value_bool"\n ]\n },\n "GraphNode": {\n "title": "GraphNode",\n "type": "object",\n "properties": {\n "x": {\n "title": "X",\n "default": 0,\n "type": "number"\n },\n "y": {\n "title": "Y",\n "default": 0,\n "type": "number"\n },\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "params": {\n "title": "Params",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Param"\n }\n }\n },\n "required": [\n "x",\n "y",\n "name",\n "params"\n ]\n },\n "GraphEdge": {\n "title": "GraphEdge",\n "type": "object",\n "properties": {\n "v1_idx": {\n "title": "V1 Idx",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n },\n "v2_idx": {\n "title": "V2 Idx",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n },\n "params": {\n "title": "Params",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Param"\n }\n },\n "edge_type": {\n "title": "Edge Type",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n }\n },\n "required": [\n "v1_idx",\n "v2_idx",\n "params",\n "edge_type"\n ]\n },\n "Graph": {\n "title": "Graph",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "vertices": {\n "title": "Vertices",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/GraphNode"\n }\n },\n "edges": {\n "title": "Edges",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/GraphEdge"\n }\n },\n "params": {\n "title": "Params",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Param"\n }\n }\n },\n "required": [\n "name",\n "vertices",\n "edges",\n "params"\n ]\n },\n "Level": {\n "title": "Level",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "elevation": {\n "title": "Elevation",\n "default": 0,\n "type": "number"\n },\n "images": {\n "title": "Images",\n "type": "array",\n "items": {\n "$ref": "#/definitions/AffineImage"\n }\n },\n "places": {\n "title": "Places",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Place"\n }\n },\n "doors": {\n "title": "Doors",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Door"\n }\n },\n "nav_graphs": {\n "title": "Nav Graphs",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Graph"\n }\n },\n "wall_graph": {\n "title": "Wall Graph",\n "default": {\n "name": "",\n "vertices": [],\n "edges": [],\n "params": []\n },\n "allOf": [\n {\n "$ref": "#/definitions/Graph"\n }\n ]\n }\n },\n "required": [\n "name",\n "elevation",\n "images",\n "places",\n "doors",\n "nav_graphs",\n "wall_graph"\n ]\n },\n "Lift": {\n "title": "Lift",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "levels": {\n "title": "Levels",\n "default": [],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "doors": {\n "title": "Doors",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Door"\n }\n },\n "wall_graph": {\n "title": "Wall Graph",\n "default": {\n "name": "",\n "vertices": [],\n "edges": [],\n "params": []\n },\n "allOf": [\n {\n "$ref": "#/definitions/Graph"\n }\n ]\n },\n "ref_x": {\n "title": "Ref X",\n "default": 0,\n "type": "number"\n },\n "ref_y": {\n "title": "Ref Y",\n "default": 0,\n "type": "number"\n },\n "ref_yaw": {\n "title": "Ref Yaw",\n "default": 0,\n "type": "number"\n },\n "width": {\n "title": "Width",\n "default": 0,\n "type": "number"\n },\n "depth": {\n "title": "Depth",\n "default": 0,\n "type": "number"\n }\n },\n "required": [\n "name",\n "levels",\n "doors",\n "wall_graph",\n "ref_x",\n "ref_y",\n "ref_yaw",\n "width",\n "depth"\n ]\n }\n }\n}\n```\n\n\n### /doors/{door_name}/state\n\n\n```\n{\n "title": "DoorState",\n "type": "object",\n "properties": {\n "door_time": {\n "title": "Door Time",\n "default": {\n "sec": 0,\n "nanosec": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/Time"\n }\n ]\n },\n "door_name": {\n "title": "Door Name",\n "default": "",\n "type": "string"\n },\n "current_mode": {\n "title": "Current Mode",\n "default": {\n "value": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/DoorMode"\n }\n ]\n }\n },\n "required": [\n "door_time",\n "door_name",\n "current_mode"\n ],\n "definitions": {\n "Time": {\n "title": "Time",\n "type": "object",\n "properties": {\n "sec": {\n "title": "Sec",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "nanosec": {\n "title": "Nanosec",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "sec",\n "nanosec"\n ]\n },\n "DoorMode": {\n "title": "DoorMode",\n "type": "object",\n "properties": {\n "value": {\n "title": "Value",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "value"\n ]\n }\n }\n}\n```\n\n\n### /doors/{door_name}/health\n\n\n```\n{\n "title": "DoorHealth",\n "type": "object",\n "properties": {\n "health_status": {\n "title": "Health Status",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "health_message": {\n "title": "Health Message",\n "nullable": true,\n "type": "string"\n },\n "id_": {\n "title": "Id ",\n "maxLength": 255,\n "type": "string"\n }\n },\n "required": [\n "health_status",\n "id_"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /lifts/{lift_name}/state\n\n\n```\n{\n "title": "LiftState",\n "type": "object",\n "properties": {\n "lift_time": {\n "title": "Lift Time",\n "default": {\n "sec": 0,\n "nanosec": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/Time"\n }\n ]\n },\n "lift_name": {\n "title": "Lift Name",\n "default": "",\n "type": "string"\n },\n "available_floors": {\n "title": "Available Floors",\n "default": [],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "current_floor": {\n "title": "Current Floor",\n "default": "",\n "type": "string"\n },\n "destination_floor": {\n "title": "Destination Floor",\n "default": "",\n "type": "string"\n },\n "door_state": {\n "title": "Door State",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n },\n "motion_state": {\n "title": "Motion State",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n },\n "available_modes": {\n "title": "Available Modes",\n "type": "array",\n "items": {\n "type": "integer"\n }\n },\n "current_mode": {\n "title": "Current Mode",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n },\n "session_id": {\n "title": "Session Id",\n "default": "",\n "type": "string"\n }\n },\n "required": [\n "lift_time",\n "lift_name",\n "available_floors",\n "current_floor",\n "destination_floor",\n "door_state",\n "motion_state",\n "available_modes",\n "current_mode",\n "session_id"\n ],\n "definitions": {\n "Time": {\n "title": "Time",\n "type": "object",\n "properties": {\n "sec": {\n "title": "Sec",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "nanosec": {\n "title": "Nanosec",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "sec",\n "nanosec"\n ]\n }\n }\n}\n```\n\n\n### /lifts/{lift_name}/health\n\n\n```\n{\n "title": "LiftHealth",\n "type": "object",\n "properties": {\n "health_status": {\n "title": "Health Status",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "health_message": {\n "title": "Health Message",\n "nullable": true,\n "type": "string"\n },\n "id_": {\n "title": "Id ",\n "maxLength": 255,\n "type": "string"\n }\n },\n "required": [\n "health_status",\n "id_"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /tasks/{task_id}/state\n\n\n```\n{\n "title": "TaskState",\n "type": "object",\n "properties": {\n "booking": {\n "$ref": "#/definitions/Booking"\n },\n "category": {\n "$ref": "#/definitions/Category"\n },\n "detail": {\n "$ref": "#/definitions/Detail"\n },\n "unix_millis_start_time": {\n "title": "Unix Millis Start Time",\n "type": "integer"\n },\n "unix_millis_finish_time": {\n "title": "Unix Millis Finish Time",\n "type": "integer"\n },\n "original_estimate_millis": {\n "$ref": "#/definitions/EstimateMillis"\n },\n "estimate_millis": {\n "$ref": "#/definitions/EstimateMillis"\n },\n "assigned_to": {\n "title": "Assigned To",\n "description": "Which agent (robot) is the task assigned to",\n "allOf": [\n {\n "$ref": "#/definitions/AssignedTo"\n }\n ]\n },\n "status": {\n "$ref": "#/definitions/Status"\n },\n "dispatch": {\n "$ref": "#/definitions/Dispatch"\n },\n "phases": {\n "title": "Phases",\n "description": "A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/Phase"\n }\n },\n "completed": {\n "title": "Completed",\n "description": "An array of the IDs of completed phases of this task",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Id"\n }\n },\n "active": {\n "title": "Active",\n "description": "The ID of the active phase for this task",\n "allOf": [\n {\n "$ref": "#/definitions/Id"\n }\n ]\n },\n "pending": {\n "title": "Pending",\n "description": "An array of the pending phases of this task",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Id"\n }\n },\n "interruptions": {\n "title": "Interruptions",\n "description": "A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/Interruption"\n }\n },\n "cancellation": {\n "title": "Cancellation",\n "description": "If the task was cancelled, this will describe information about the request.",\n "allOf": [\n {\n "$ref": "#/definitions/Cancellation"\n }\n ]\n },\n "killed": {\n "title": "Killed",\n "description": "If the task was killed, this will describe information about the request.",\n "allOf": [\n {\n "$ref": "#/definitions/Killed"\n }\n ]\n },\n "unix_millis_warn_time": {\n "title": "Unix Millis Warn Time",\n "type": "integer"\n }\n },\n "required": [\n "booking"\n ],\n "definitions": {\n "Booking": {\n "title": "Booking",\n "type": "object",\n "properties": {\n "id": {\n "title": "Id",\n "description": "The unique identifier for this task",\n "type": "string"\n },\n "unix_millis_earliest_start_time": {\n "title": "Unix Millis Earliest Start Time",\n "type": "integer"\n },\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "type": "integer"\n },\n "priority": {\n "title": "Priority",\n "description": "Priority information about this task",\n "anyOf": [\n {\n "type": "object"\n },\n {\n "type": "string"\n }\n ]\n },\n "labels": {\n "title": "Labels",\n "description": "Information about how and why this task was booked",\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "requester": {\n "title": "Requester",\n "description": "(Optional) An identifier for the entity that requested this task",\n "type": "string"\n }\n },\n "required": [\n "id"\n ]\n },\n "Category": {\n "title": "Category",\n "description": "The category of this task or phase",\n "type": "string"\n },\n "Detail": {\n "title": "Detail",\n "description": "Detailed information about a task, phase, or event",\n "anyOf": [\n {\n "type": "object"\n },\n {\n "type": "array",\n "items": {}\n },\n {\n "type": "string"\n }\n ]\n },\n "EstimateMillis": {\n "title": "EstimateMillis",\n "description": "An estimate, in milliseconds, of how long the subject will take to complete",\n "minimum": 0,\n "type": "integer"\n },\n "AssignedTo": {\n "title": "AssignedTo",\n "type": "object",\n "properties": {\n "group": {\n "title": "Group",\n "type": "string"\n },\n "name": {\n "title": "Name",\n "type": "string"\n }\n },\n "required": [\n "group",\n "name"\n ]\n },\n "Status": {\n "title": "Status",\n "description": "An enumeration.",\n "enum": [\n "uninitialized",\n "blocked",\n "error",\n "failed",\n "queued",\n "standby",\n "underway",\n "delayed",\n "skipped",\n "canceled",\n "killed",\n "completed"\n ]\n },\n "Status1": {\n "title": "Status1",\n "description": "An enumeration.",\n "enum": [\n "queued",\n "selected",\n "dispatched",\n "failed_to_assign",\n "canceled_in_flight"\n ]\n },\n "Assignment": {\n "title": "Assignment",\n "type": "object",\n "properties": {\n "fleet_name": {\n "title": "Fleet Name",\n "type": "string"\n },\n "expected_robot_name": {\n "title": "Expected Robot Name",\n "type": "string"\n }\n }\n },\n "Error": {\n "title": "Error",\n "type": "object",\n "properties": {\n "code": {\n "title": "Code",\n "description": "A standard code for the kind of error that has occurred",\n "minimum": 0,\n "type": "integer"\n },\n "category": {\n "title": "Category",\n "description": "The category of the error",\n "type": "string"\n },\n "detail": {\n "title": "Detail",\n "description": "Details about the error",\n "type": "string"\n }\n }\n },\n "Dispatch": {\n "title": "Dispatch",\n "type": "object",\n "properties": {\n "status": {\n "$ref": "#/definitions/Status1"\n },\n "assignment": {\n "$ref": "#/definitions/Assignment"\n },\n "errors": {\n "title": "Errors",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Error"\n }\n }\n },\n "required": [\n "status"\n ]\n },\n "Id": {\n "title": "Id",\n "minimum": 0,\n "type": "integer"\n },\n "EventState": {\n "title": "EventState",\n "type": "object",\n "properties": {\n "id": {\n "$ref": "#/definitions/Id"\n },\n "status": {\n "$ref": "#/definitions/Status"\n },\n "name": {\n "title": "Name",\n "description": "The brief name of the event",\n "type": "string"\n },\n "detail": {\n "title": "Detail",\n "description": "Detailed information about the event",\n "allOf": [\n {\n "$ref": "#/definitions/Detail"\n }\n ]\n },\n "deps": {\n "title": "Deps",\n "description": "This event may depend on other events. This array contains the IDs of those other event dependencies.",\n "type": "array",\n "items": {\n "type": "integer",\n "minimum": 0\n }\n }\n },\n "required": [\n "id"\n ]\n },\n "Undo": {\n "title": "Undo",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the undo skip request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the undo skip request",\n "type": "array",\n "items": {\n "type": "string"\n }\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n },\n "SkipPhaseRequest": {\n "title": "SkipPhaseRequest",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the skip request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the purpose of the skip request",\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "undo": {\n "title": "Undo",\n "description": "Information about an undo skip request that applied to this request",\n "allOf": [\n {\n "$ref": "#/definitions/Undo"\n }\n ]\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n },\n "Phase": {\n "title": "Phase",\n "type": "object",\n "properties": {\n "id": {\n "$ref": "#/definitions/Id"\n },\n "category": {\n "$ref": "#/definitions/Category"\n },\n "detail": {\n "$ref": "#/definitions/Detail"\n },\n "unix_millis_start_time": {\n "title": "Unix Millis Start Time",\n "type": "integer"\n },\n "unix_millis_finish_time": {\n "title": "Unix Millis Finish Time",\n "type": "integer"\n },\n "original_estimate_millis": {\n "$ref": "#/definitions/EstimateMillis"\n },\n "estimate_millis": {\n "$ref": "#/definitions/EstimateMillis"\n },\n "final_event_id": {\n "$ref": "#/definitions/Id"\n },\n "events": {\n "title": "Events",\n "description": "A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/EventState"\n }\n },\n "skip_requests": {\n "title": "Skip Requests",\n "description": "Information about any skip requests that have been received",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/SkipPhaseRequest"\n }\n }\n },\n "required": [\n "id"\n ]\n },\n "ResumedBy": {\n "title": "ResumedBy",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the resume request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the resume request",\n "type": "array",\n "items": {\n "type": "string"\n }\n }\n },\n "required": [\n "labels"\n ]\n },\n "Interruption": {\n "title": "Interruption",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the interruption request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the purpose of the interruption",\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "resumed_by": {\n "title": "Resumed By",\n "description": "Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.",\n "allOf": [\n {\n "$ref": "#/definitions/ResumedBy"\n }\n ]\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n },\n "Cancellation": {\n "title": "Cancellation",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the cancellation request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the cancel request",\n "type": "array",\n "items": {\n "type": "string"\n }\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n },\n "Killed": {\n "title": "Killed",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the cancellation request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the kill request",\n "type": "array",\n "items": {\n "type": "string"\n }\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n }\n }\n}\n```\n\n\n### /tasks/{task_id}/log\n\n\n```\n{\n "title": "TaskEventLog",\n "type": "object",\n "properties": {\n "task_id": {\n "title": "Task Id",\n "type": "string"\n },\n "log": {\n "title": "Log",\n "description": "Log entries related to the overall task",\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n },\n "phases": {\n "title": "Phases",\n "description": "A dictionary whose keys (property names) are the indices of a phase",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/Phases"\n }\n }\n },\n "required": [\n "task_id"\n ],\n "additionalProperties": false,\n "definitions": {\n "Tier": {\n "title": "Tier",\n "description": "An enumeration.",\n "enum": [\n "uninitialized",\n "info",\n "warning",\n "error"\n ]\n },\n "LogEntry": {\n "title": "LogEntry",\n "type": "object",\n "properties": {\n "seq": {\n "title": "Seq",\n "description": "Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.",\n "exclusiveMaximum": 4294967296,\n "minimum": 0,\n "type": "integer"\n },\n "tier": {\n "description": "The importance level of the log entry",\n "allOf": [\n {\n "$ref": "#/definitions/Tier"\n }\n ]\n },\n "unix_millis_time": {\n "title": "Unix Millis Time",\n "type": "integer"\n },\n "text": {\n "title": "Text",\n "description": "The text of the log entry",\n "type": "string"\n }\n },\n "required": [\n "seq",\n "tier",\n "unix_millis_time",\n "text"\n ]\n },\n "Phases": {\n "title": "Phases",\n "type": "object",\n "properties": {\n "log": {\n "title": "Log",\n "description": "Log entries related to the overall phase",\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n },\n "events": {\n "title": "Events",\n "description": "A dictionary whose keys (property names) are the indices of an event in the phase",\n "type": "object",\n "additionalProperties": {\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n }\n }\n },\n "additionalProperties": false\n }\n }\n}\n```\n\n\n### /dispensers/{guid}/state\n\n\n```\n{\n "title": "DispenserState",\n "type": "object",\n "properties": {\n "time": {\n "title": "Time",\n "default": {\n "sec": 0,\n "nanosec": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/Time"\n }\n ]\n },\n "guid": {\n "title": "Guid",\n "default": "",\n "type": "string"\n },\n "mode": {\n "title": "Mode",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "request_guid_queue": {\n "title": "Request Guid Queue",\n "default": [],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "seconds_remaining": {\n "title": "Seconds Remaining",\n "default": 0,\n "type": "number"\n }\n },\n "required": [\n "time",\n "guid",\n "mode",\n "request_guid_queue",\n "seconds_remaining"\n ],\n "definitions": {\n "Time": {\n "title": "Time",\n "type": "object",\n "properties": {\n "sec": {\n "title": "Sec",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "nanosec": {\n "title": "Nanosec",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "sec",\n "nanosec"\n ]\n }\n }\n}\n```\n\n\n### /dispensers/{guid}/health\n\n\n```\n{\n "title": "DispenserHealth",\n "type": "object",\n "properties": {\n "health_status": {\n "title": "Health Status",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "health_message": {\n "title": "Health Message",\n "nullable": true,\n "type": "string"\n },\n "id_": {\n "title": "Id ",\n "maxLength": 255,\n "type": "string"\n }\n },\n "required": [\n "health_status",\n "id_"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /ingestors/{guid}/state\n\n\n```\n{\n "title": "IngestorState",\n "type": "object",\n "properties": {\n "time": {\n "title": "Time",\n "default": {\n "sec": 0,\n "nanosec": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/Time"\n }\n ]\n },\n "guid": {\n "title": "Guid",\n "default": "",\n "type": "string"\n },\n "mode": {\n "title": "Mode",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "request_guid_queue": {\n "title": "Request Guid Queue",\n "default": [],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "seconds_remaining": {\n "title": "Seconds Remaining",\n "default": 0,\n "type": "number"\n }\n },\n "required": [\n "time",\n "guid",\n "mode",\n "request_guid_queue",\n "seconds_remaining"\n ],\n "definitions": {\n "Time": {\n "title": "Time",\n "type": "object",\n "properties": {\n "sec": {\n "title": "Sec",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "nanosec": {\n "title": "Nanosec",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "sec",\n "nanosec"\n ]\n }\n }\n}\n```\n\n\n### /ingestors/{guid}/health\n\n\n```\n{\n "title": "IngestorHealth",\n "type": "object",\n "properties": {\n "health_status": {\n "title": "Health Status",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "health_message": {\n "title": "Health Message",\n "nullable": true,\n "type": "string"\n },\n "id_": {\n "title": "Id ",\n "maxLength": 255,\n "type": "string"\n }\n },\n "required": [\n "health_status",\n "id_"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /fleets/{name}/state\n\n\n```\n{\n "title": "FleetState",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "type": "string"\n },\n "robots": {\n "title": "Robots",\n "description": "A dictionary of the states of the robots that belong to this fleet",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/RobotState"\n }\n }\n },\n "definitions": {\n "Status2": {\n "title": "Status2",\n "description": "An enumeration.",\n "enum": [\n "uninitialized",\n "offline",\n "shutdown",\n "idle",\n "charging",\n "working",\n "error"\n ]\n },\n "Location2D": {\n "title": "Location2D",\n "type": "object",\n "properties": {\n "map": {\n "title": "Map",\n "type": "string"\n },\n "x": {\n "title": "X",\n "type": "number"\n },\n "y": {\n "title": "Y",\n "type": "number"\n },\n "yaw": {\n "title": "Yaw",\n "type": "number"\n }\n },\n "required": [\n "map",\n "x",\n "y",\n "yaw"\n ]\n },\n "Issue": {\n "title": "Issue",\n "type": "object",\n "properties": {\n "category": {\n "title": "Category",\n "description": "Category of the robot\'s issue",\n "type": "string"\n },\n "detail": {\n "title": "Detail",\n "description": "Detailed information about the issue",\n "anyOf": [\n {\n "type": "object"\n },\n {\n "type": "array",\n "items": {}\n },\n {\n "type": "string"\n }\n ]\n }\n }\n },\n "RobotState": {\n "title": "RobotState",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "type": "string"\n },\n "status": {\n "description": "A simple token representing the status of the robot",\n "allOf": [\n {\n "$ref": "#/definitions/Status2"\n }\n ]\n },\n "task_id": {\n "title": "Task Id",\n "description": "The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.",\n "type": "string"\n },\n "unix_millis_time": {\n "title": "Unix Millis Time",\n "type": "integer"\n },\n "location": {\n "$ref": "#/definitions/Location2D"\n },\n "battery": {\n "title": "Battery",\n "description": "State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)",\n "minimum": 0.0,\n "maximum": 1.0,\n "type": "number"\n },\n "issues": {\n "title": "Issues",\n "description": "A list of issues with the robot that operators need to address",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Issue"\n }\n }\n }\n }\n }\n}\n```\n\n\n### /fleets/{name}/log\n\n\n```\n{\n "title": "FleetState",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "type": "string"\n },\n "log": {\n "title": "Log",\n "description": "Log for the overall fleet",\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n },\n "robots": {\n "title": "Robots",\n "description": "Dictionary of logs for the individual robots. The keys (property names) are the robot names.",\n "type": "object",\n "additionalProperties": {\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n }\n }\n },\n "definitions": {\n "Tier": {\n "title": "Tier",\n "description": "An enumeration.",\n "enum": [\n "uninitialized",\n "info",\n "warning",\n "error"\n ]\n },\n "LogEntry": {\n "title": "LogEntry",\n "type": "object",\n "properties": {\n "seq": {\n "title": "Seq",\n "description": "Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.",\n "exclusiveMaximum": 4294967296,\n "minimum": 0,\n "type": "integer"\n },\n "tier": {\n "description": "The importance level of the log entry",\n "allOf": [\n {\n "$ref": "#/definitions/Tier"\n }\n ]\n },\n "unix_millis_time": {\n "title": "Unix Millis Time",\n "type": "integer"\n },\n "text": {\n "title": "Text",\n "description": "The text of the log entry",\n "type": "string"\n }\n },\n "required": [\n "seq",\n "tier",\n "unix_millis_time",\n "text"\n ]\n }\n }\n}\n```\n\n', + '\n# NOTE: This endpoint is here for documentation purposes only, this is _not_ a REST endpoint.\n\n## About\nThis exposes a minimal pubsub system built on top of socket.io.\nIt works similar to a normal socket.io endpoint, except that are 2 special\nrooms which control subscriptions.\n\n## Rooms\n### subscribe\nClients must send a message to this room to start receiving messages on other rooms.\nThe message must be of the form:\n\n```\n{\n "room": ""\n}\n```\n\n### unsubscribe\nClients can send a message to this room to stop receiving messages on other rooms.\nThe message must be of the form:\n\n```\n{\n "room": ""\n}\n```\n \n### /alerts\n\n\n```\n{\n "title": "Alert",\n "description": "General alert that can be triggered by events.",\n "type": "object",\n "properties": {\n "id": {\n "title": "Id",\n "maxLength": 255,\n "type": "string"\n },\n "original_id": {\n "title": "Original Id",\n "maxLength": 255,\n "type": "string"\n },\n "category": {\n "title": "Category",\n "description": "Default: default
Task: task
Fleet: fleet
Robot: robot",\n "maxLength": 7,\n "type": "string"\n },\n "unix_millis_created_time": {\n "title": "Unix Millis Created Time",\n "minimum": -9223372036854775808,\n "maximum": 9223372036854775807,\n "type": "integer"\n },\n "acknowledged_by": {\n "title": "Acknowledged By",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "unix_millis_acknowledged_time": {\n "title": "Unix Millis Acknowledged Time",\n "minimum": -9223372036854775808,\n "maximum": 9223372036854775807,\n "nullable": true,\n "type": "integer"\n }\n },\n "required": [\n "id",\n "original_id",\n "category",\n "unix_millis_created_time"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /beacons\n\n\n```\n{\n "title": "BeaconState",\n "type": "object",\n "properties": {\n "id": {\n "title": "Id",\n "maxLength": 255,\n "type": "string"\n },\n "online": {\n "title": "Online",\n "type": "boolean"\n },\n "category": {\n "title": "Category",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "activated": {\n "title": "Activated",\n "type": "boolean"\n },\n "level": {\n "title": "Level",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n }\n },\n "required": [\n "id",\n "online",\n "activated"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /building_map\n\n\n```\n{\n "title": "BuildingMap",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "levels": {\n "title": "Levels",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Level"\n }\n },\n "lifts": {\n "title": "Lifts",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Lift"\n }\n }\n },\n "required": [\n "name",\n "levels",\n "lifts"\n ],\n "definitions": {\n "AffineImage": {\n "title": "AffineImage",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "x_offset": {\n "title": "X Offset",\n "default": 0,\n "type": "number"\n },\n "y_offset": {\n "title": "Y Offset",\n "default": 0,\n "type": "number"\n },\n "yaw": {\n "title": "Yaw",\n "default": 0,\n "type": "number"\n },\n "scale": {\n "title": "Scale",\n "default": 0,\n "type": "number"\n },\n "encoding": {\n "title": "Encoding",\n "default": "",\n "type": "string"\n },\n "data": {\n "title": "Data",\n "type": "string"\n }\n },\n "required": [\n "name",\n "x_offset",\n "y_offset",\n "yaw",\n "scale",\n "encoding",\n "data"\n ]\n },\n "Place": {\n "title": "Place",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "x": {\n "title": "X",\n "default": 0,\n "type": "number"\n },\n "y": {\n "title": "Y",\n "default": 0,\n "type": "number"\n },\n "yaw": {\n "title": "Yaw",\n "default": 0,\n "type": "number"\n },\n "position_tolerance": {\n "title": "Position Tolerance",\n "default": 0,\n "type": "number"\n },\n "yaw_tolerance": {\n "title": "Yaw Tolerance",\n "default": 0,\n "type": "number"\n }\n },\n "required": [\n "name",\n "x",\n "y",\n "yaw",\n "position_tolerance",\n "yaw_tolerance"\n ]\n },\n "Door": {\n "title": "Door",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "v1_x": {\n "title": "V1 X",\n "default": 0,\n "type": "number"\n },\n "v1_y": {\n "title": "V1 Y",\n "default": 0,\n "type": "number"\n },\n "v2_x": {\n "title": "V2 X",\n "default": 0,\n "type": "number"\n },\n "v2_y": {\n "title": "V2 Y",\n "default": 0,\n "type": "number"\n },\n "door_type": {\n "title": "Door Type",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n },\n "motion_range": {\n "title": "Motion Range",\n "default": 0,\n "type": "number"\n },\n "motion_direction": {\n "title": "Motion Direction",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n }\n },\n "required": [\n "name",\n "v1_x",\n "v1_y",\n "v2_x",\n "v2_y",\n "door_type",\n "motion_range",\n "motion_direction"\n ]\n },\n "Param": {\n "title": "Param",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "type": {\n "title": "Type",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n },\n "value_int": {\n "title": "Value Int",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "value_float": {\n "title": "Value Float",\n "default": 0,\n "type": "number"\n },\n "value_string": {\n "title": "Value String",\n "default": "",\n "type": "string"\n },\n "value_bool": {\n "title": "Value Bool",\n "default": false,\n "type": "boolean"\n }\n },\n "required": [\n "name",\n "type",\n "value_int",\n "value_float",\n "value_string",\n "value_bool"\n ]\n },\n "GraphNode": {\n "title": "GraphNode",\n "type": "object",\n "properties": {\n "x": {\n "title": "X",\n "default": 0,\n "type": "number"\n },\n "y": {\n "title": "Y",\n "default": 0,\n "type": "number"\n },\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "params": {\n "title": "Params",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Param"\n }\n }\n },\n "required": [\n "x",\n "y",\n "name",\n "params"\n ]\n },\n "GraphEdge": {\n "title": "GraphEdge",\n "type": "object",\n "properties": {\n "v1_idx": {\n "title": "V1 Idx",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n },\n "v2_idx": {\n "title": "V2 Idx",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n },\n "params": {\n "title": "Params",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Param"\n }\n },\n "edge_type": {\n "title": "Edge Type",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n }\n },\n "required": [\n "v1_idx",\n "v2_idx",\n "params",\n "edge_type"\n ]\n },\n "Graph": {\n "title": "Graph",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "vertices": {\n "title": "Vertices",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/GraphNode"\n }\n },\n "edges": {\n "title": "Edges",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/GraphEdge"\n }\n },\n "params": {\n "title": "Params",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Param"\n }\n }\n },\n "required": [\n "name",\n "vertices",\n "edges",\n "params"\n ]\n },\n "Level": {\n "title": "Level",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "elevation": {\n "title": "Elevation",\n "default": 0,\n "type": "number"\n },\n "images": {\n "title": "Images",\n "type": "array",\n "items": {\n "$ref": "#/definitions/AffineImage"\n }\n },\n "places": {\n "title": "Places",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Place"\n }\n },\n "doors": {\n "title": "Doors",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Door"\n }\n },\n "nav_graphs": {\n "title": "Nav Graphs",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Graph"\n }\n },\n "wall_graph": {\n "title": "Wall Graph",\n "default": {\n "name": "",\n "vertices": [],\n "edges": [],\n "params": []\n },\n "allOf": [\n {\n "$ref": "#/definitions/Graph"\n }\n ]\n }\n },\n "required": [\n "name",\n "elevation",\n "images",\n "places",\n "doors",\n "nav_graphs",\n "wall_graph"\n ]\n },\n "Lift": {\n "title": "Lift",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "default": "",\n "type": "string"\n },\n "levels": {\n "title": "Levels",\n "default": [],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "doors": {\n "title": "Doors",\n "default": [],\n "type": "array",\n "items": {\n "$ref": "#/definitions/Door"\n }\n },\n "wall_graph": {\n "title": "Wall Graph",\n "default": {\n "name": "",\n "vertices": [],\n "edges": [],\n "params": []\n },\n "allOf": [\n {\n "$ref": "#/definitions/Graph"\n }\n ]\n },\n "ref_x": {\n "title": "Ref X",\n "default": 0,\n "type": "number"\n },\n "ref_y": {\n "title": "Ref Y",\n "default": 0,\n "type": "number"\n },\n "ref_yaw": {\n "title": "Ref Yaw",\n "default": 0,\n "type": "number"\n },\n "width": {\n "title": "Width",\n "default": 0,\n "type": "number"\n },\n "depth": {\n "title": "Depth",\n "default": 0,\n "type": "number"\n }\n },\n "required": [\n "name",\n "levels",\n "doors",\n "wall_graph",\n "ref_x",\n "ref_y",\n "ref_yaw",\n "width",\n "depth"\n ]\n }\n }\n}\n```\n\n\n### /delivery_alerts\n\n\n```\n{\n "title": "DeliveryAlert",\n "description": "Custom alerts for custom delivery tasks",\n "type": "object",\n "properties": {\n "id": {\n "title": "Id",\n "maxLength": 255,\n "type": "string"\n },\n "category": {\n "title": "Category",\n "description": "Missing: missing
Wrong: wrong",\n "maxLength": 7,\n "type": "string"\n },\n "tier": {\n "title": "Tier",\n "description": "Warning: warning
Error: error",\n "maxLength": 7,\n "type": "string"\n },\n "task_id": {\n "title": "Task Id",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "action": {\n "title": "Action",\n "description": "Waiting: waiting
Cancel: cancelled
Override: override
Resume: resume",\n "maxLength": 9,\n "type": "string"\n },\n "message": {\n "title": "Message",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n }\n },\n "required": [\n "id",\n "category",\n "tier",\n "action"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /doors/{door_name}/state\n\n\n```\n{\n "title": "DoorState",\n "type": "object",\n "properties": {\n "door_time": {\n "title": "Door Time",\n "default": {\n "sec": 0,\n "nanosec": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/Time"\n }\n ]\n },\n "door_name": {\n "title": "Door Name",\n "default": "",\n "type": "string"\n },\n "current_mode": {\n "title": "Current Mode",\n "default": {\n "value": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/DoorMode"\n }\n ]\n }\n },\n "required": [\n "door_time",\n "door_name",\n "current_mode"\n ],\n "definitions": {\n "Time": {\n "title": "Time",\n "type": "object",\n "properties": {\n "sec": {\n "title": "Sec",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "nanosec": {\n "title": "Nanosec",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "sec",\n "nanosec"\n ]\n },\n "DoorMode": {\n "title": "DoorMode",\n "type": "object",\n "properties": {\n "value": {\n "title": "Value",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "value"\n ]\n }\n }\n}\n```\n\n\n### /doors/{door_name}/health\n\n\n```\n{\n "title": "DoorHealth",\n "type": "object",\n "properties": {\n "health_status": {\n "title": "Health Status",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "health_message": {\n "title": "Health Message",\n "nullable": true,\n "type": "string"\n },\n "id_": {\n "title": "Id ",\n "maxLength": 255,\n "type": "string"\n }\n },\n "required": [\n "health_status",\n "id_"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /lifts/{lift_name}/state\n\n\n```\n{\n "title": "LiftState",\n "type": "object",\n "properties": {\n "lift_time": {\n "title": "Lift Time",\n "default": {\n "sec": 0,\n "nanosec": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/Time"\n }\n ]\n },\n "lift_name": {\n "title": "Lift Name",\n "default": "",\n "type": "string"\n },\n "available_floors": {\n "title": "Available Floors",\n "default": [],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "current_floor": {\n "title": "Current Floor",\n "default": "",\n "type": "string"\n },\n "destination_floor": {\n "title": "Destination Floor",\n "default": "",\n "type": "string"\n },\n "door_state": {\n "title": "Door State",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n },\n "motion_state": {\n "title": "Motion State",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n },\n "available_modes": {\n "title": "Available Modes",\n "type": "array",\n "items": {\n "type": "integer"\n }\n },\n "current_mode": {\n "title": "Current Mode",\n "default": 0,\n "minimum": 0,\n "maximum": 255,\n "type": "integer"\n },\n "session_id": {\n "title": "Session Id",\n "default": "",\n "type": "string"\n }\n },\n "required": [\n "lift_time",\n "lift_name",\n "available_floors",\n "current_floor",\n "destination_floor",\n "door_state",\n "motion_state",\n "available_modes",\n "current_mode",\n "session_id"\n ],\n "definitions": {\n "Time": {\n "title": "Time",\n "type": "object",\n "properties": {\n "sec": {\n "title": "Sec",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "nanosec": {\n "title": "Nanosec",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "sec",\n "nanosec"\n ]\n }\n }\n}\n```\n\n\n### /lifts/{lift_name}/health\n\n\n```\n{\n "title": "LiftHealth",\n "type": "object",\n "properties": {\n "health_status": {\n "title": "Health Status",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "health_message": {\n "title": "Health Message",\n "nullable": true,\n "type": "string"\n },\n "id_": {\n "title": "Id ",\n "maxLength": 255,\n "type": "string"\n }\n },\n "required": [\n "health_status",\n "id_"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /tasks/{task_id}/state\n\n\n```\n{\n "title": "TaskState",\n "type": "object",\n "properties": {\n "booking": {\n "$ref": "#/definitions/Booking"\n },\n "category": {\n "$ref": "#/definitions/Category"\n },\n "detail": {\n "$ref": "#/definitions/Detail"\n },\n "unix_millis_start_time": {\n "title": "Unix Millis Start Time",\n "type": "integer"\n },\n "unix_millis_finish_time": {\n "title": "Unix Millis Finish Time",\n "type": "integer"\n },\n "original_estimate_millis": {\n "$ref": "#/definitions/EstimateMillis"\n },\n "estimate_millis": {\n "$ref": "#/definitions/EstimateMillis"\n },\n "assigned_to": {\n "title": "Assigned To",\n "description": "Which agent (robot) is the task assigned to",\n "allOf": [\n {\n "$ref": "#/definitions/AssignedTo"\n }\n ]\n },\n "status": {\n "$ref": "#/definitions/Status"\n },\n "dispatch": {\n "$ref": "#/definitions/Dispatch"\n },\n "phases": {\n "title": "Phases",\n "description": "A dictionary of the states of the phases of the task. The keys (property names) are phase IDs, which are integers.",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/Phase"\n }\n },\n "completed": {\n "title": "Completed",\n "description": "An array of the IDs of completed phases of this task",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Id"\n }\n },\n "active": {\n "title": "Active",\n "description": "The ID of the active phase for this task",\n "allOf": [\n {\n "$ref": "#/definitions/Id"\n }\n ]\n },\n "pending": {\n "title": "Pending",\n "description": "An array of the pending phases of this task",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Id"\n }\n },\n "interruptions": {\n "title": "Interruptions",\n "description": "A dictionary of interruptions that have been applied to this task. The keys (property names) are the unique token of the interruption request.",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/Interruption"\n }\n },\n "cancellation": {\n "title": "Cancellation",\n "description": "If the task was cancelled, this will describe information about the request.",\n "allOf": [\n {\n "$ref": "#/definitions/Cancellation"\n }\n ]\n },\n "killed": {\n "title": "Killed",\n "description": "If the task was killed, this will describe information about the request.",\n "allOf": [\n {\n "$ref": "#/definitions/Killed"\n }\n ]\n },\n "unix_millis_warn_time": {\n "title": "Unix Millis Warn Time",\n "type": "integer"\n }\n },\n "required": [\n "booking"\n ],\n "definitions": {\n "Booking": {\n "title": "Booking",\n "type": "object",\n "properties": {\n "id": {\n "title": "Id",\n "description": "The unique identifier for this task",\n "type": "string"\n },\n "unix_millis_earliest_start_time": {\n "title": "Unix Millis Earliest Start Time",\n "type": "integer"\n },\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "type": "integer"\n },\n "priority": {\n "title": "Priority",\n "description": "Priority information about this task",\n "anyOf": [\n {\n "type": "object"\n },\n {\n "type": "string"\n }\n ]\n },\n "labels": {\n "title": "Labels",\n "description": "Information about how and why this task was booked",\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "requester": {\n "title": "Requester",\n "description": "(Optional) An identifier for the entity that requested this task",\n "type": "string"\n }\n },\n "required": [\n "id"\n ]\n },\n "Category": {\n "title": "Category",\n "description": "The category of this task or phase",\n "type": "string"\n },\n "Detail": {\n "title": "Detail",\n "description": "Detailed information about a task, phase, or event",\n "anyOf": [\n {\n "type": "object"\n },\n {\n "type": "array",\n "items": {}\n },\n {\n "type": "string"\n }\n ]\n },\n "EstimateMillis": {\n "title": "EstimateMillis",\n "description": "An estimate, in milliseconds, of how long the subject will take to complete",\n "minimum": 0,\n "type": "integer"\n },\n "AssignedTo": {\n "title": "AssignedTo",\n "type": "object",\n "properties": {\n "group": {\n "title": "Group",\n "type": "string"\n },\n "name": {\n "title": "Name",\n "type": "string"\n }\n },\n "required": [\n "group",\n "name"\n ]\n },\n "Status": {\n "title": "Status",\n "description": "An enumeration.",\n "enum": [\n "uninitialized",\n "blocked",\n "error",\n "failed",\n "queued",\n "standby",\n "underway",\n "delayed",\n "skipped",\n "canceled",\n "killed",\n "completed"\n ]\n },\n "Status1": {\n "title": "Status1",\n "description": "An enumeration.",\n "enum": [\n "queued",\n "selected",\n "dispatched",\n "failed_to_assign",\n "canceled_in_flight"\n ]\n },\n "Assignment": {\n "title": "Assignment",\n "type": "object",\n "properties": {\n "fleet_name": {\n "title": "Fleet Name",\n "type": "string"\n },\n "expected_robot_name": {\n "title": "Expected Robot Name",\n "type": "string"\n }\n }\n },\n "Error": {\n "title": "Error",\n "type": "object",\n "properties": {\n "code": {\n "title": "Code",\n "description": "A standard code for the kind of error that has occurred",\n "minimum": 0,\n "type": "integer"\n },\n "category": {\n "title": "Category",\n "description": "The category of the error",\n "type": "string"\n },\n "detail": {\n "title": "Detail",\n "description": "Details about the error",\n "type": "string"\n }\n }\n },\n "Dispatch": {\n "title": "Dispatch",\n "type": "object",\n "properties": {\n "status": {\n "$ref": "#/definitions/Status1"\n },\n "assignment": {\n "$ref": "#/definitions/Assignment"\n },\n "errors": {\n "title": "Errors",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Error"\n }\n }\n },\n "required": [\n "status"\n ]\n },\n "Id": {\n "title": "Id",\n "minimum": 0,\n "type": "integer"\n },\n "EventState": {\n "title": "EventState",\n "type": "object",\n "properties": {\n "id": {\n "$ref": "#/definitions/Id"\n },\n "status": {\n "$ref": "#/definitions/Status"\n },\n "name": {\n "title": "Name",\n "description": "The brief name of the event",\n "type": "string"\n },\n "detail": {\n "title": "Detail",\n "description": "Detailed information about the event",\n "allOf": [\n {\n "$ref": "#/definitions/Detail"\n }\n ]\n },\n "deps": {\n "title": "Deps",\n "description": "This event may depend on other events. This array contains the IDs of those other event dependencies.",\n "type": "array",\n "items": {\n "type": "integer",\n "minimum": 0\n }\n }\n },\n "required": [\n "id"\n ]\n },\n "Undo": {\n "title": "Undo",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the undo skip request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the undo skip request",\n "type": "array",\n "items": {\n "type": "string"\n }\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n },\n "SkipPhaseRequest": {\n "title": "SkipPhaseRequest",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the skip request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the purpose of the skip request",\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "undo": {\n "title": "Undo",\n "description": "Information about an undo skip request that applied to this request",\n "allOf": [\n {\n "$ref": "#/definitions/Undo"\n }\n ]\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n },\n "Phase": {\n "title": "Phase",\n "type": "object",\n "properties": {\n "id": {\n "$ref": "#/definitions/Id"\n },\n "category": {\n "$ref": "#/definitions/Category"\n },\n "detail": {\n "$ref": "#/definitions/Detail"\n },\n "unix_millis_start_time": {\n "title": "Unix Millis Start Time",\n "type": "integer"\n },\n "unix_millis_finish_time": {\n "title": "Unix Millis Finish Time",\n "type": "integer"\n },\n "original_estimate_millis": {\n "$ref": "#/definitions/EstimateMillis"\n },\n "estimate_millis": {\n "$ref": "#/definitions/EstimateMillis"\n },\n "final_event_id": {\n "$ref": "#/definitions/Id"\n },\n "events": {\n "title": "Events",\n "description": "A dictionary of events for this phase. The keys (property names) are the event IDs, which are integers.",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/EventState"\n }\n },\n "skip_requests": {\n "title": "Skip Requests",\n "description": "Information about any skip requests that have been received",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/SkipPhaseRequest"\n }\n }\n },\n "required": [\n "id"\n ]\n },\n "ResumedBy": {\n "title": "ResumedBy",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the resume request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the resume request",\n "type": "array",\n "items": {\n "type": "string"\n }\n }\n },\n "required": [\n "labels"\n ]\n },\n "Interruption": {\n "title": "Interruption",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the interruption request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the purpose of the interruption",\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "resumed_by": {\n "title": "Resumed By",\n "description": "Information about the resume request that ended this interruption. This field will be missing if the interruption is still active.",\n "allOf": [\n {\n "$ref": "#/definitions/ResumedBy"\n }\n ]\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n },\n "Cancellation": {\n "title": "Cancellation",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the cancellation request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the cancel request",\n "type": "array",\n "items": {\n "type": "string"\n }\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n },\n "Killed": {\n "title": "Killed",\n "type": "object",\n "properties": {\n "unix_millis_request_time": {\n "title": "Unix Millis Request Time",\n "description": "The time that the cancellation request arrived",\n "type": "integer"\n },\n "labels": {\n "title": "Labels",\n "description": "Labels to describe the kill request",\n "type": "array",\n "items": {\n "type": "string"\n }\n }\n },\n "required": [\n "unix_millis_request_time",\n "labels"\n ]\n }\n }\n}\n```\n\n\n### /tasks/{task_id}/log\n\n\n```\n{\n "title": "TaskEventLog",\n "type": "object",\n "properties": {\n "task_id": {\n "title": "Task Id",\n "type": "string"\n },\n "log": {\n "title": "Log",\n "description": "Log entries related to the overall task",\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n },\n "phases": {\n "title": "Phases",\n "description": "A dictionary whose keys (property names) are the indices of a phase",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/Phases"\n }\n }\n },\n "required": [\n "task_id"\n ],\n "additionalProperties": false,\n "definitions": {\n "Tier": {\n "title": "Tier",\n "description": "An enumeration.",\n "enum": [\n "uninitialized",\n "info",\n "warning",\n "error"\n ]\n },\n "LogEntry": {\n "title": "LogEntry",\n "type": "object",\n "properties": {\n "seq": {\n "title": "Seq",\n "description": "Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.",\n "exclusiveMaximum": 4294967296,\n "minimum": 0,\n "type": "integer"\n },\n "tier": {\n "description": "The importance level of the log entry",\n "allOf": [\n {\n "$ref": "#/definitions/Tier"\n }\n ]\n },\n "unix_millis_time": {\n "title": "Unix Millis Time",\n "type": "integer"\n },\n "text": {\n "title": "Text",\n "description": "The text of the log entry",\n "type": "string"\n }\n },\n "required": [\n "seq",\n "tier",\n "unix_millis_time",\n "text"\n ]\n },\n "Phases": {\n "title": "Phases",\n "type": "object",\n "properties": {\n "log": {\n "title": "Log",\n "description": "Log entries related to the overall phase",\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n },\n "events": {\n "title": "Events",\n "description": "A dictionary whose keys (property names) are the indices of an event in the phase",\n "type": "object",\n "additionalProperties": {\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n }\n }\n },\n "additionalProperties": false\n }\n }\n}\n```\n\n\n### /dispensers/{guid}/state\n\n\n```\n{\n "title": "DispenserState",\n "type": "object",\n "properties": {\n "time": {\n "title": "Time",\n "default": {\n "sec": 0,\n "nanosec": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/Time"\n }\n ]\n },\n "guid": {\n "title": "Guid",\n "default": "",\n "type": "string"\n },\n "mode": {\n "title": "Mode",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "request_guid_queue": {\n "title": "Request Guid Queue",\n "default": [],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "seconds_remaining": {\n "title": "Seconds Remaining",\n "default": 0,\n "type": "number"\n }\n },\n "required": [\n "time",\n "guid",\n "mode",\n "request_guid_queue",\n "seconds_remaining"\n ],\n "definitions": {\n "Time": {\n "title": "Time",\n "type": "object",\n "properties": {\n "sec": {\n "title": "Sec",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "nanosec": {\n "title": "Nanosec",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "sec",\n "nanosec"\n ]\n }\n }\n}\n```\n\n\n### /dispensers/{guid}/health\n\n\n```\n{\n "title": "DispenserHealth",\n "type": "object",\n "properties": {\n "health_status": {\n "title": "Health Status",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "health_message": {\n "title": "Health Message",\n "nullable": true,\n "type": "string"\n },\n "id_": {\n "title": "Id ",\n "maxLength": 255,\n "type": "string"\n }\n },\n "required": [\n "health_status",\n "id_"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /ingestors/{guid}/state\n\n\n```\n{\n "title": "IngestorState",\n "type": "object",\n "properties": {\n "time": {\n "title": "Time",\n "default": {\n "sec": 0,\n "nanosec": 0\n },\n "allOf": [\n {\n "$ref": "#/definitions/Time"\n }\n ]\n },\n "guid": {\n "title": "Guid",\n "default": "",\n "type": "string"\n },\n "mode": {\n "title": "Mode",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "request_guid_queue": {\n "title": "Request Guid Queue",\n "default": [],\n "type": "array",\n "items": {\n "type": "string"\n }\n },\n "seconds_remaining": {\n "title": "Seconds Remaining",\n "default": 0,\n "type": "number"\n }\n },\n "required": [\n "time",\n "guid",\n "mode",\n "request_guid_queue",\n "seconds_remaining"\n ],\n "definitions": {\n "Time": {\n "title": "Time",\n "type": "object",\n "properties": {\n "sec": {\n "title": "Sec",\n "default": 0,\n "minimum": -2147483648,\n "maximum": 2147483647,\n "type": "integer"\n },\n "nanosec": {\n "title": "Nanosec",\n "default": 0,\n "minimum": 0,\n "maximum": 4294967295,\n "type": "integer"\n }\n },\n "required": [\n "sec",\n "nanosec"\n ]\n }\n }\n}\n```\n\n\n### /ingestors/{guid}/health\n\n\n```\n{\n "title": "IngestorHealth",\n "type": "object",\n "properties": {\n "health_status": {\n "title": "Health Status",\n "maxLength": 255,\n "nullable": true,\n "type": "string"\n },\n "health_message": {\n "title": "Health Message",\n "nullable": true,\n "type": "string"\n },\n "id_": {\n "title": "Id ",\n "maxLength": 255,\n "type": "string"\n }\n },\n "required": [\n "health_status",\n "id_"\n ],\n "additionalProperties": false\n}\n```\n\n\n### /fleets/{name}/state\n\n\n```\n{\n "title": "FleetState",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "type": "string"\n },\n "robots": {\n "title": "Robots",\n "description": "A dictionary of the states of the robots that belong to this fleet",\n "type": "object",\n "additionalProperties": {\n "$ref": "#/definitions/RobotState"\n }\n }\n },\n "definitions": {\n "Status2": {\n "title": "Status2",\n "description": "An enumeration.",\n "enum": [\n "uninitialized",\n "offline",\n "shutdown",\n "idle",\n "charging",\n "working",\n "error"\n ]\n },\n "Location2D": {\n "title": "Location2D",\n "type": "object",\n "properties": {\n "map": {\n "title": "Map",\n "type": "string"\n },\n "x": {\n "title": "X",\n "type": "number"\n },\n "y": {\n "title": "Y",\n "type": "number"\n },\n "yaw": {\n "title": "Yaw",\n "type": "number"\n }\n },\n "required": [\n "map",\n "x",\n "y",\n "yaw"\n ]\n },\n "Issue": {\n "title": "Issue",\n "type": "object",\n "properties": {\n "category": {\n "title": "Category",\n "description": "Category of the robot\'s issue",\n "type": "string"\n },\n "detail": {\n "title": "Detail",\n "description": "Detailed information about the issue",\n "anyOf": [\n {\n "type": "object"\n },\n {\n "type": "array",\n "items": {}\n },\n {\n "type": "string"\n }\n ]\n }\n }\n },\n "RobotState": {\n "title": "RobotState",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "type": "string"\n },\n "status": {\n "description": "A simple token representing the status of the robot",\n "allOf": [\n {\n "$ref": "#/definitions/Status2"\n }\n ]\n },\n "task_id": {\n "title": "Task Id",\n "description": "The ID of the task this robot is currently working on. Empty string if the robot is not working on a task.",\n "type": "string"\n },\n "unix_millis_time": {\n "title": "Unix Millis Time",\n "type": "integer"\n },\n "location": {\n "$ref": "#/definitions/Location2D"\n },\n "battery": {\n "title": "Battery",\n "description": "State of charge of the battery. Values range from 0.0 (depleted) to 1.0 (fully charged)",\n "minimum": 0.0,\n "maximum": 1.0,\n "type": "number"\n },\n "issues": {\n "title": "Issues",\n "description": "A list of issues with the robot that operators need to address",\n "type": "array",\n "items": {\n "$ref": "#/definitions/Issue"\n }\n }\n }\n }\n }\n}\n```\n\n\n### /fleets/{name}/log\n\n\n```\n{\n "title": "FleetState",\n "type": "object",\n "properties": {\n "name": {\n "title": "Name",\n "type": "string"\n },\n "log": {\n "title": "Log",\n "description": "Log for the overall fleet",\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n },\n "robots": {\n "title": "Robots",\n "description": "Dictionary of logs for the individual robots. The keys (property names) are the robot names.",\n "type": "object",\n "additionalProperties": {\n "type": "array",\n "items": {\n "$ref": "#/definitions/LogEntry"\n }\n }\n }\n },\n "definitions": {\n "Tier": {\n "title": "Tier",\n "description": "An enumeration.",\n "enum": [\n "uninitialized",\n "info",\n "warning",\n "error"\n ]\n },\n "LogEntry": {\n "title": "LogEntry",\n "type": "object",\n "properties": {\n "seq": {\n "title": "Seq",\n "description": "Sequence number for this entry. Each entry has a unique sequence number which monotonically increase, until integer overflow causes a wrap around.",\n "exclusiveMaximum": 4294967296,\n "minimum": 0,\n "type": "integer"\n },\n "tier": {\n "description": "The importance level of the log entry",\n "allOf": [\n {\n "$ref": "#/definitions/Tier"\n }\n ]\n },\n "unix_millis_time": {\n "title": "Unix Millis Time",\n "type": "integer"\n },\n "text": {\n "title": "Text",\n "description": "The text of the log entry",\n "type": "string"\n }\n },\n "required": [\n "seq",\n "tier",\n "unix_millis_time",\n "text"\n ]\n }\n }\n}\n```\n\n', operationId: '_lambda__socket_io_get', responses: { '200': { @@ -318,6 +318,145 @@ export default { }, }, }, + '/delivery_alerts': { + get: { + tags: ['DeliveryAlerts'], + summary: 'Get Delivery Alerts', + operationId: 'get_delivery_alerts_delivery_alerts_get', + responses: { + '200': { + description: 'Successful Response', + content: { + 'application/json': { + schema: { + title: 'Response Get Delivery Alerts Delivery Alerts Get', + type: 'array', + items: { + $ref: '#/components/schemas/api_server.models.tortoise_models.delivery_alerts.DeliveryAlert.leaf', + }, + }, + }, + }, + }, + }, + }, + post: { + tags: ['DeliveryAlerts'], + summary: 'Create Delivery Alert', + operationId: 'create_delivery_alert_delivery_alerts_post', + parameters: [ + { + required: true, + schema: { title: 'Category', type: 'string' }, + name: 'category', + in: 'query', + }, + { required: true, schema: { title: 'Tier', type: 'string' }, name: 'tier', in: 'query' }, + { + required: true, + schema: { title: 'Task Id', type: 'string' }, + name: 'task_id', + in: 'query', + }, + { + required: true, + schema: { title: 'Message', type: 'string' }, + name: 'message', + in: 'query', + }, + ], + responses: { + '201': { + description: 'Successful Response', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/api_server.models.tortoise_models.delivery_alerts.DeliveryAlert.leaf', + }, + }, + }, + }, + '422': { + description: 'Validation Error', + content: { + 'application/json': { schema: { $ref: '#/components/schemas/HTTPValidationError' } }, + }, + }, + }, + }, + }, + '/delivery_alerts/{delivery_alert_id}': { + get: { + tags: ['DeliveryAlerts'], + summary: 'Get Delivery Alert', + operationId: 'get_delivery_alert_delivery_alerts__delivery_alert_id__get', + parameters: [ + { + required: true, + schema: { title: 'Delivery Alert Id', type: 'string' }, + name: 'delivery_alert_id', + in: 'path', + }, + ], + responses: { + '200': { + description: 'Successful Response', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/api_server.models.tortoise_models.delivery_alerts.DeliveryAlert.leaf', + }, + }, + }, + }, + '422': { + description: 'Validation Error', + content: { + 'application/json': { schema: { $ref: '#/components/schemas/HTTPValidationError' } }, + }, + }, + }, + }, + }, + '/delivery_alerts/{delivery_alert_id}/action': { + post: { + tags: ['DeliveryAlerts'], + summary: 'Update Delivery Alert Action', + operationId: 'update_delivery_alert_action_delivery_alerts__delivery_alert_id__action_post', + parameters: [ + { + required: true, + schema: { title: 'Delivery Alert Id', type: 'string' }, + name: 'delivery_alert_id', + in: 'path', + }, + { + required: true, + schema: { title: 'Action', type: 'string' }, + name: 'action', + in: 'query', + }, + ], + responses: { + '200': { + description: 'Successful Response', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/api_server.models.tortoise_models.delivery_alerts.DeliveryAlert.leaf', + }, + }, + }, + }, + '422': { + description: 'Validation Error', + content: { + 'application/json': { schema: { $ref: '#/components/schemas/HTTPValidationError' } }, + }, + }, + }, + }, + }, '/doors': { get: { tags: ['Doors'], @@ -3747,6 +3886,37 @@ export default { }, additionalProperties: false, }, + 'api_server.models.tortoise_models.delivery_alerts.DeliveryAlert.leaf': { + title: 'DeliveryAlert', + required: ['id', 'category', 'tier', 'action'], + type: 'object', + properties: { + id: { title: 'Id', maxLength: 255, type: 'string' }, + category: { + title: 'Category', + maxLength: 7, + type: 'string', + description: 'Missing: missing
Wrong: wrong', + }, + tier: { + title: 'Tier', + maxLength: 7, + type: 'string', + description: 'Warning: warning
Error: error', + }, + task_id: { title: 'Task Id', maxLength: 255, type: 'string', nullable: true }, + action: { + title: 'Action', + maxLength: 9, + type: 'string', + description: + 'Waiting: waiting
Cancel: cancelled
Override: override
Resume: resume', + }, + message: { title: 'Message', maxLength: 255, type: 'string', nullable: true }, + }, + additionalProperties: false, + description: 'Custom alerts for custom delivery tasks', + }, 'api_server.models.tortoise_models.scheduled_task.ScheduledTask': { title: 'ScheduledTask', required: ['id', 'created_by', 'schedules'], diff --git a/packages/api-server/api_server/app.py b/packages/api-server/api_server/app.py index d75ae3c40..6fc16a05c 100644 --- a/packages/api-server/api_server/app.py +++ b/packages/api-server/api_server/app.py @@ -97,6 +97,11 @@ async def on_sio_connect(sid: str, _environ: dict, auth: Optional[dict] = None): app.include_router( routes.building_map_router, prefix="/building_map", dependencies=[Depends(user_dep)] ) +app.include_router( + routes.delivery_alerts_router, + prefix="/delivery_alerts", + dependencies=[Depends(user_dep)], +) app.include_router( routes.doors_router, prefix="/doors", dependencies=[Depends(user_dep)] ) diff --git a/packages/api-server/api_server/models/tortoise_models/__init__.py b/packages/api-server/api_server/models/tortoise_models/__init__.py index 8b1faae37..166d9afc8 100644 --- a/packages/api-server/api_server/models/tortoise_models/__init__.py +++ b/packages/api-server/api_server/models/tortoise_models/__init__.py @@ -2,6 +2,7 @@ from .authorization import * from .beacons import * from .building_map import BuildingMap +from .delivery_alerts import * from .dispenser_state import DispenserState from .door_state import DoorState from .fleets import FleetLog, FleetLogLog, FleetLogRobots, FleetLogRobotsLog, FleetState diff --git a/packages/api-server/api_server/models/tortoise_models/delivery_alerts.py b/packages/api-server/api_server/models/tortoise_models/delivery_alerts.py new file mode 100644 index 000000000..b897e5064 --- /dev/null +++ b/packages/api-server/api_server/models/tortoise_models/delivery_alerts.py @@ -0,0 +1,35 @@ +from enum import Enum + +from tortoise.contrib.pydantic.creator import pydantic_model_creator +from tortoise.fields import CharEnumField, CharField +from tortoise.models import Model + + +class DeliveryAlert(Model): + """ + Custom alerts for custom delivery tasks + """ + + class Category(str, Enum): + Missing = "missing" + Wrong = "wrong" + + class Tier(str, Enum): + Warning = "warning" + Error = "error" + + class Action(str, Enum): + Waiting = "waiting" + Cancel = "cancelled" + Override = "override" + Resume = "resume" + + id = CharField(255, pk=True) + category = CharEnumField(Category, index=True) + tier = CharEnumField(Tier, index=True) + task_id = CharField(255, index=True, null=True) + action = CharEnumField(Action, index=True) + message = CharField(255, null=True) + + +DeliveryAlertPydantic = pydantic_model_creator(DeliveryAlert) diff --git a/packages/api-server/api_server/rmf_io/__init__.py b/packages/api-server/api_server/rmf_io/__init__.py index ed166520e..d14e3c4a9 100644 --- a/packages/api-server/api_server/rmf_io/__init__.py +++ b/packages/api-server/api_server/rmf_io/__init__.py @@ -4,6 +4,7 @@ TaskEvents, alert_events, beacon_events, + delivery_alert_events, fleet_events, rmf_events, task_events, diff --git a/packages/api-server/api_server/rmf_io/events.py b/packages/api-server/api_server/rmf_io/events.py index 7b54087a5..d08988638 100644 --- a/packages/api-server/api_server/rmf_io/events.py +++ b/packages/api-server/api_server/rmf_io/events.py @@ -53,3 +53,11 @@ def __init__(self): beacon_events = BeaconEvents() + + +class DeliveryAlertEvents: + def __init__(self): + self.delivery_alerts = Subject() # DeliveryAlert + + +delivery_alert_events = DeliveryAlertEvents() diff --git a/packages/api-server/api_server/routes/__init__.py b/packages/api-server/api_server/routes/__init__.py index df03f6763..ac3fbd34c 100644 --- a/packages/api-server/api_server/routes/__init__.py +++ b/packages/api-server/api_server/routes/__init__.py @@ -2,6 +2,7 @@ from .alerts import router as alerts_router from .beacons import router as beacons_router from .building_map import router as building_map_router +from .delivery_alerts import router as delivery_alerts_router from .dispensers import router as dispensers_router from .doors import router as doors_router from .fleets import router as fleets_router diff --git a/packages/api-server/api_server/routes/delivery_alerts.py b/packages/api-server/api_server/routes/delivery_alerts.py new file mode 100644 index 000000000..008593b3e --- /dev/null +++ b/packages/api-server/api_server/routes/delivery_alerts.py @@ -0,0 +1,85 @@ +from datetime import datetime +from typing import List + +from fastapi import HTTPException +from rx import operators as rxops + +from api_server.fast_io import FastIORouter, SubscriptionRequest +from api_server.models import tortoise_models as ttm +from api_server.rmf_io import delivery_alert_events + +router = FastIORouter(tags=["DeliveryAlerts"]) + + +@router.sub("", response_model=ttm.DeliveryAlertPydantic) +async def sub_delivery_alerts(_req: SubscriptionRequest): + return delivery_alert_events.delivery_alerts.pipe( + rxops.filter(lambda x: x is not None) + ) + + +@router.get("", response_model=List[ttm.DeliveryAlertPydantic]) +async def get_delivery_alerts(): + delivery_alerts = await ttm.DeliveryAlert.all() + return [ + await ttm.DeliveryAlertPydantic.from_tortoise_orm(a) for a in delivery_alerts + ] + + +@router.get("/{delivery_alert_id}", response_model=ttm.DeliveryAlertPydantic) +async def get_delivery_alert(delivery_alert_id: str): + delivery_alert = await ttm.DeliveryAlert.get_or_none(id=delivery_alert_id) + if delivery_alert is None: + raise HTTPException( + 404, f"Delivery alert with ID {delivery_alert_id} not found" + ) + delivery_alert_pydantic = await ttm.DeliveryAlertPydantic.from_tortoise_orm( + delivery_alert + ) + return delivery_alert_pydantic + + +@router.post("", status_code=201, response_model=ttm.DeliveryAlertPydantic) +async def create_delivery_alert(category: str, tier: str, task_id: str, message: str): + timestamp = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + delivery_alert_id = f"delivery-alert-{timestamp}" + try: + delivery_alert = await ttm.DeliveryAlert.create( + id=delivery_alert_id, + category=category, + tier=tier, + task_id=task_id, + action="waiting", + message=message, + ) + except Exception as e: + raise HTTPException(400, f"Could not create delivery alert: {e}") from e + + delivery_alert_pydantic = await ttm.DeliveryAlertPydantic.from_tortoise_orm( + delivery_alert + ) + delivery_alert_events.delivery_alerts.on_next(delivery_alert_pydantic) + return delivery_alert_pydantic + + +@router.post("/{delivery_alert_id}/action", response_model=ttm.DeliveryAlertPydantic) +async def update_delivery_alert_action(delivery_alert_id: str, action: str): + delivery_alert = await ttm.DeliveryAlert.get_or_none(id=delivery_alert_id) + if delivery_alert is None: + raise HTTPException( + 404, f"Delivery alert with ID {delivery_alert_id} not found" + ) + + try: + delivery_alert.update_from_dict({"action": action}) + except Exception as e: + raise HTTPException( + 404, + f"Failed to update delivery alert {delivery_alert_id} with action {action}: {e}", + ) from e + await delivery_alert.save() + + delivery_alert_pydantic = await ttm.DeliveryAlertPydantic.from_tortoise_orm( + delivery_alert + ) + return delivery_alert_pydantic diff --git a/packages/dashboard/src/components/app-base.tsx b/packages/dashboard/src/components/app-base.tsx index b157aa6a2..cd038a245 100644 --- a/packages/dashboard/src/components/app-base.tsx +++ b/packages/dashboard/src/components/app-base.tsx @@ -14,6 +14,7 @@ import { loadSettings, saveSettings, Settings, ThemeMode } from '../settings'; import { AppController, AppControllerContext, SettingsContext } from './app-contexts'; import AppBar from './appbar'; import { AlertStore } from './alert-store'; +import { DeliveryAlertStore } from './delivery-alert-store'; const DefaultAlertDuration = 2000; const defaultTheme = createTheme({ @@ -119,6 +120,7 @@ export function AppBase({ children }: React.PropsWithChildren<{}>): JSX.Element + {lowResolutionAlert && lowResolutionDisplayAlert()} + createStyles({ + textField: { + background: theme.palette.background.default, + pointerEvents: 'none', + }, + }), +); + +interface DeliveryWarningDialogProps { + deliveryAlert: DeliveryAlert; + taskState?: TaskState; + onOverride?: (delivery_alert_id: string, task_id?: string) => Promise; + onResume?: (delivery_alert_id: string, task_id?: string) => Promise; + onClose: () => void; +} + +const DeliveryWarningDialog = React.memo((props: DeliveryWarningDialogProps) => { + const { deliveryAlert, taskState, onOverride, onResume, onClose } = props; + const classes = useStyles(); + const [isOpen, setIsOpen] = React.useState(true); + const [actionTaken, setActionTaken] = React.useState(!onOverride && !onResume); + const [newTaskState, setNewTaskState] = React.useState(null); + const [openTaskInspector, setOpenTaskInspector] = React.useState(false); + const [cancelling, setCancelling] = React.useState(false); + const appController = React.useContext(AppControllerContext); + const rmf = React.useContext(RmfAppContext); + + React.useEffect(() => { + if (!rmf) { + console.error('Tasks api not available.'); + setNewTaskState(null); + return; + } + if (!taskState) { + setNewTaskState(null); + return; + } + const sub = rmf.getTaskStateObs(taskState.booking.id).subscribe((taskStateUpdate) => { + setNewTaskState(taskStateUpdate); + setCancelling((prev) => { + if ( + prev && + deliveryAlert.action === 'waiting' && + taskStateUpdate.status && + taskStateUpdate.status === 'canceled' + ) { + setCancelling(false); + (async () => { + try { + await rmf.deliveryAlertsApi.updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + deliveryAlert.id, + 'cancelled', + ); + } catch (e) { + appController.showAlert( + 'error', + `Failed to cancel delivery alert ${deliveryAlert.id}: ${(e as Error).message}`, + ); + } + setActionTaken(true); + })(); + } + return prev; + }); + + if ( + deliveryAlert.action === 'waiting' && + taskStateUpdate.status && + taskStateUpdate.status === 'canceled' + ) { + setCancelling(false); + (async () => { + try { + await rmf.deliveryAlertsApi.updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + deliveryAlert.id, + 'cancelled', + ); + } catch (e) { + appController.showAlert( + 'error', + `Failed to cancel delivery alert ${deliveryAlert.id}: ${(e as Error).message}`, + ); + } + setActionTaken(true); + })(); + } + }); + return () => sub.unsubscribe(); + }, [rmf, deliveryAlert, taskState, appController]); + + const cancelTask = React.useCallback( + async (task_id: string) => { + if (!rmf) { + console.error('Tasks api not available for task cancellation.'); + return; + } + await rmf.tasksApi.postCancelTaskTasksCancelTaskPost({ + type: 'cancel_task_request', + task_id: task_id, + }); + }, + [rmf], + ); + + return ( + <> + + Delivery - warning! + + + + + + + + {newTaskState ? ( + + + + ) : null} + {newTaskState && newTaskState.status && newTaskState.status === 'canceled' ? ( + + ) : newTaskState ? ( + + + + ) : ( + + )} + + + + + + + + + + {taskState && openTaskInspector && ( + setOpenTaskInspector(false)} /> + )} + + ); +}); + +interface DeliveryErrorDialogProps { + deliveryAlert: DeliveryAlert; + taskState?: TaskState; + onClose: (delivery_alert_id: string) => Promise; +} + +const DeliveryErrorDialog = React.memo((props: DeliveryErrorDialogProps) => { + const { deliveryAlert, taskState, onClose } = props; + const classes = useStyles(); + const [isOpen, setIsOpen] = React.useState(true); + const [openTaskInspector, setOpenTaskInspector] = React.useState(false); + + return ( + <> + + Delivery - error! + + + + + + + + {taskState ? ( + + + + ) : null} + + + + {taskState && openTaskInspector && ( + setOpenTaskInspector(false)} /> + )} + + ); +}); + +interface DeliveryAlertData { + deliveryAlert: DeliveryAlert; + taskState?: TaskState; +} + +export const DeliveryAlertStore = React.memo(() => { + const rmf = React.useContext(RmfAppContext); + const [alerts, setAlerts] = React.useState>({}); + const appController = React.useContext(AppControllerContext); + + const filterAndPushDeliveryAlert = (deliveryAlert: DeliveryAlert, taskState?: TaskState) => { + // Check if a delivery alert for a task is already open, if so, replace it + // with this new incoming deliveryAlert. + setAlerts((prev) => { + if (!deliveryAlert.task_id) { + return { + ...prev, + [deliveryAlert.id]: { deliveryAlert, taskState }, + }; + } + + // TODO(ac): set action to cancelled for delivery alerts that have been + // updated. + const filteredAlerts = Object.fromEntries( + Object.entries(prev).filter( + ([_, alertData]) => + !alertData.deliveryAlert.task_id || + alertData.deliveryAlert.task_id !== deliveryAlert.task_id, + ), + ); + filteredAlerts[deliveryAlert.id] = { + deliveryAlert, + taskState, + }; + return filteredAlerts; + }); + }; + + React.useEffect(() => { + if (!rmf) { + return; + } + + // Initialize with any existing delivery alerts that are still waiting for + // action. + (async () => { + // TODO(ac): Create an endpoint which only gives delivery alerts that have + // not been actioned upon, to prevent requesting too many delivery alerts. + let deliveryAlerts: DeliveryAlert[] = []; + try { + deliveryAlerts = (await rmf.deliveryAlertsApi.getDeliveryAlertsDeliveryAlertsGet()).data; + } catch (e) { + console.error(`Failed to retrieve existing delivery alerts: ${e}`); + return; + } + + const filteredAlertsMap: Record = {}; + const taskIdToAlertsMap: Record = {}; + for (const alert of deliveryAlerts) { + // No task involved, and still waiting for user action. There should not + // be any longstanding delivery alerts that appear after a refresh, only + // the delivery alerts that are currently present and have not been + // responded to. + if (!alert.task_id) { + filteredAlertsMap[alert.id] = { deliveryAlert: alert, taskState: undefined }; + continue; + } + + // For the same task, ignore older alerts. This is possible as we are + // creating delivery alert IDs with timestamps. + const prevDeliveryAlert = taskIdToAlertsMap[alert.task_id]; + if (prevDeliveryAlert && prevDeliveryAlert.deliveryAlert.id > alert.id) { + continue; + } + + // Update map with newer alerts for the same task id. + let state: TaskState | undefined = undefined; + try { + state = (await rmf.tasksApi.getTaskStateTasksTaskIdStateGet(alert.task_id)).data; + } catch { + console.error( + `Failed to fetch task state for ${alert.task_id} for delivery alert ${alert.id}`, + ); + } + taskIdToAlertsMap[alert.task_id] = { + deliveryAlert: alert, + taskState: state, + }; + } + + // Move all unresolved and up-to-date task related delivery alerts to the + // filtered map. + for (const alertData of Object.values(taskIdToAlertsMap)) { + if (alertData.deliveryAlert.action !== 'waiting') { + continue; + } + filteredAlertsMap[alertData.deliveryAlert.id] = alertData; + } + setAlerts(filteredAlertsMap); + })(); + + const sub = rmf.deliveryAlertObsStore.subscribe(async (deliveryAlert) => { + let state: TaskState | undefined = undefined; + if (deliveryAlert.task_id) { + try { + state = (await rmf.tasksApi.getTaskStateTasksTaskIdStateGet(deliveryAlert.task_id)).data; + } catch { + console.error(`Failed to fetch task state for ${deliveryAlert.task_id}`); + } + } + filterAndPushDeliveryAlert(deliveryAlert, state); + }); + return () => sub.unsubscribe(); + }, [rmf]); + + const onOverride = React.useCallback['onOverride']>( + async (delivery_alert_id, task_id) => { + try { + if (!rmf) { + throw new Error('delivery alert api not available'); + } + await rmf.deliveryAlertsApi.updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + delivery_alert_id, + 'override', + ); + const taskReferenceText = task_id ? `, continuing with task ${task_id}` : ''; + appController.showAlert( + 'success', + `Overriding delivery alert ${delivery_alert_id}${taskReferenceText}`, + ); + } catch (e) { + const taskReferenceText = task_id ? ` and continue with task ${task_id}` : ''; + appController.showAlert( + 'error', + `Failed to override delivery alert ${delivery_alert_id}${taskReferenceText}: ${ + (e as Error).message + }`, + ); + } + }, + [rmf, appController], + ); + + const onResume = React.useCallback['onResume']>( + async (delivery_alert_id, task_id) => { + try { + if (!rmf) { + throw new Error('delivery alert api not available'); + } + await rmf.deliveryAlertsApi.updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + delivery_alert_id, + 'resume', + ); + const taskReferenceText = task_id ? `, continuing with task ${task_id}` : ''; + appController.showAlert( + 'success', + `Resuming after delivery alert ${delivery_alert_id}${taskReferenceText}`, + ); + } catch (e) { + const taskReferenceText = task_id ? ` ${task_id}` : ''; + appController.showAlert( + 'error', + `Failed to resume task${taskReferenceText}: ${(e as Error).message}`, + ); + } + }, + [rmf, appController], + ); + + // Closing on an error requires the additional step of setting the action + // to cancelled, as we want to ensure this error delivery dialog does not show + // up anymore when the dashboard is refreshed. + const onErrorCloseCancel = React.useCallback['onClose']>( + async (delivery_alert_id) => { + try { + if (!rmf) { + throw new Error('delivery alert api not available'); + } + await rmf.deliveryAlertsApi.updateDeliveryAlertActionDeliveryAlertsDeliveryAlertIdActionPost( + delivery_alert_id, + 'cancelled', + ); + } catch (e) { + console.error( + `failed to update delivery alert ${delivery_alert_id} to cancelled action: ${ + (e as Error).message + }`, + ); + } + setAlerts((prev) => + Object.fromEntries(Object.entries(prev).filter(([key]) => key !== delivery_alert_id)), + ); + }, + [rmf], + ); + + return ( + <> + {Object.values(alerts).map((alert) => { + if (alert.deliveryAlert.tier === 'warning') { + return ( + + setAlerts((prev) => + Object.fromEntries( + Object.entries(prev).filter(([key]) => key !== alert.deliveryAlert.id), + ), + ) + } + key={alert.deliveryAlert.id} + /> + ); + } + + return ( + + ); + })} + + ); +}); diff --git a/packages/dashboard/src/components/rmf-app/rmf-ingress.ts b/packages/dashboard/src/components/rmf-app/rmf-ingress.ts index ed68240e7..3521c9ad6 100644 --- a/packages/dashboard/src/components/rmf-app/rmf-ingress.ts +++ b/packages/dashboard/src/components/rmf-app/rmf-ingress.ts @@ -8,6 +8,8 @@ import { BuildingMap, Configuration, DefaultApi, + DeliveryAlertsApi, + ApiServerModelsTortoiseModelsDeliveryAlertsDeliveryAlertLeaf as DeliveryAlert, Dispenser, DispensersApi, DispenserState, @@ -57,6 +59,7 @@ export class RmfIngress { tasksApi: TasksApi; alertsApi: AlertsApi; adminApi: AdminApi; + deliveryAlertsApi: DeliveryAlertsApi; negotiationStatusManager: NegotiationStatusManager; trajectoryManager: RobotTrajectoryManager; @@ -110,6 +113,7 @@ export class RmfIngress { this.tasksApi = new TasksApi(apiConfig, undefined, axiosInst); this.alertsApi = new AlertsApi(apiConfig, undefined, axiosInst); this.adminApi = new AdminApi(apiConfig, undefined, axiosInst); + this.deliveryAlertsApi = new DeliveryAlertsApi(apiConfig, undefined, axiosInst); const ws = new WebSocket(appConfig.trajServerUrl); this.trajectoryManager = new DefaultTrajectoryManager(ws, authenticator); @@ -223,4 +227,8 @@ export class RmfIngress { alertObsStore: Observable = this._convertSioToRxObs((handler) => this._sioClient.subscribeAlerts(handler), ); + + deliveryAlertObsStore: Observable = this._convertSioToRxObs((handler) => + this._sioClient.subscribeDeliveryAlerts(handler), + ); }