API Documentation
API Documentation
This page documents the Unify Analytics API. It contains information on how to use the API, how the API is
structured, and what you can find in the API.
If you have any questions regarding the API and/or documentation you can reach out
to [email protected].
Table of Contents
Overview and design philosophy
Authentication
Examples and quickstart
o Retrieving the uptime for my installation MY_ID_1 for the first week of may 2020 with
version 1.0.0
HTTP Endpoints (historical data)
o List installations
o Access Point Load
o Bins content code
o Bin quality
o Event log
o Grid Info
o Grid Layout
o Installation Data
o Module Versions
o Packet loss
o Robot MTBF
o Robot Movement
o Robot State
o Uptime
o Port Bin Wait Time
o Port MBBF
o Port Uptime
o R5 Robot Battery
o R5 Charger
o Bin Presentations
o B1 Battery
o B1 Charger
Websocket (live) endpoints
o Connecting the websocket-based API
o Events
Both the after and before filter are inclusive on the date provided. Sorting is done by providing the latest day
first in the results. If there are no results available, the results array will be empty. Filtering on the API is
optional.
The response from the API follows a certain structure. First, the result data is paginated, meaning that if the
size of the result data goes above a certain threshold, more queries need to be made to get the rest of the data.
The result from an endpoint has the following structure:
{
"next": "https://url.to.next.page",
"previous": null,
"results": [
{
"version": "1.0.0",
"date" : "2021-01-01",
"result": DATA_FOLLOWING_SCHEMA,
},
{
"version": "1.0.0",
"date" : "2021-01-02",
"result": DATA_FOLLOWING_SCHEMA,
},
...
]
}
The results key contains a list of all result items. Each result item is the result for a given date. A result for a
date follows a specific schema. The schema for each endpoint and version is described in the endpoints section
below.
For each endpoint, JSON Schema is used to describe the data available at the endpoint. Only the schema for
the latest version of the endpoint is currently provided.
Authentication
Access to the API is based on an authentication token. You can manage all your API tokens here.
To use the token in an API request, provide a HTTP header with the key "API-Authorization" and value
"Token MY_TOKEN".
Retrieving the uptime for my installation MY_ID_1 for the first week of may
2020 with version 1.0.0
To retrieve this specific data, the uptime endpoint with specific query parameters needs to be used. The
following query can be used to get the wanted data:
List installations
GET v1/installations/
Description
Installations that the user has access to are listed in this endpoint. This endpoint does not allow for filtering
query parameters.
Are you missing any installations in the list retrieved from the server? Then you probably need to synchronize
available installations in Salesforce with Unify. You do this in the Unify web app by clicking your user icon
and select Sync with Salesforce.
Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique ID for installation."
},
"name": {
"type": "string",
"description": "Name of site."
},
"country": {
"type": "string",
"description": "Country where installation is located."
},
"city": {
"type": "string",
"description": "City where installation is located"
},
"state_county": {
"type": "string",
"description": "State and county where installation is located."
},
"partner_name": {
"type": "string",
"description": "Name of partner of installation."
},
"implementation_year": {
"type": "string",
"description": "Year when installation was started."
}
},
"required": ["id", "name"]
}
Description
The packet loss endpoints contains day-aggregated data for packets (radio trafic) for the access points at
modules. It can be used to calculate metrics such as packet loss ratio, which gives an indication of the radio
performance on the installation.
Schema
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"access_points": {
"type": "array",
"items": {
"type": "object",
"properties": {
"access_point_id": {
"type": "number",
"description": "The ID of the relevant access point."
},
"access_point_load": {
"type": "number",
"description": "Average access point load on the corresponding
access point."
}
},
"required": ["access_point_id", "access_point_load"]
}
}
},
"required": ["access_points"]
}
Changelog
Description
The bins content code analysis gives the amount of bins per content code, and if that content code indicates
empty bins or not. It can be used to calculate metrics such as fill rate.
Schema
1.0.2
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"bins": {
"type": "array",
"items": {
"type": "object",
"properties": {
"number_of_bins": {
"type": "number",
"description": "Number of bins with the given content code"
},
"content_code": {
"type": "number",
"description": "Content code"
},
"empty": {
"type": "boolean",
"description": "If the content code represents empty bins"
}
},
"required": ["number_of_bins", "content_code", "empty"]
}
}
},
"required": ["bins"]
}
Changelog
1.0.2 / 2023-03-01
Fix bug that arised because of only selecting the first content code for empty bins instead of
available array.
1.0.1 / 2022-02-14
Fix minor bug that caused the bin count to be a little too high.
1.0.0 / 2022-02-07
Bin quality
GET v1/installations/<my-installation-id>/bin-quality
Description
The bin quality analysis gives the bin ID of the bin connected to the robot before the error occurred. It can be
used to figure out if the robot error are directly related to the quality of the bin.
Schema
1.0.0/1.1.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"robot_bin_errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"robot_id": {
"type": "number",
"description": "The ID of the robot with error."
},
"bin_id": {
"type": "number",
"description": "The ID of the bin connected to the robot."
},
"robot_error_type": {
"type": "string",
"description": "Robot error type."
},
"local_installation_timestamp": {
"type": "string",
"description": "Local timestamp when error occurred."
}
},
"required": ["robot_id", "bin_id", "robot_error_type",
"local_installation_timestamp"]
}
}
},
"required": ["robot_bin_errors"]
}
Changelog
1.1.0 / 2022-04-28
Event log
Grid Info
GET v1/installations/<my-installation-id>/grid-info
Description
The Grid Info endpoint gives the different capacity in both bins and cells for different types in the grid.
Schema
1.0.0
Changelog
1.0.0 / 2022-03-02
Add initial version that calculates the bin and cell capacity for different cell types.
Grid Layout
Description
The grid layout endpoint represents the grid as a json structure. The data goes over all the cells in the grid and
provides the cell TYPE and MODE for each cell. From this data, it is possible to construct a representation of
the grid similar to that in ASConsole. For instance, the following element means that the grid position x,y =>
1,6 is a CHARGE cell with mode STREET.
{
"x_y": [
{
"x": 1,
"y": 6
}
],
"port_id": null,
"cell_mode": "STREET",
"cell_type": "CHARGE",
"max_depth": 3340,
"min_depth": 30,
"port_type": null,
"max_weight": null,
"floor_depth": 3390
}
Schema
2.0.1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"cell_information": {
"type": "array",
"items": {
"type": "object",
"properties": {
"x_y": {
"type": "array",
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"description": "The x position of the cell."
},
"y": {
"type": "number",
"description": "The y position of the cell."
}
},
"required": ["x", "y"]
}
},
"cell_type": {
"type": "string",
"description": "Type of cell (STOCK...)."
},
"port_id": {
"type": "number",
"description": "ID of port."
},
"port_type": {
"type": "string",
"description": "Type of port (Conveyor...)."
},
"floor_depth": {
"type": "number",
"description": "Height from the top of the track and to the
floor."
},
"max_depth": {
"type": "number",
"description": "Height from the top of the track and to the lowest
level a bin can be placed."
},
"min_depth": {
"type": "number",
"description": "The minimum depth in the cell to allow more bins
to be placed."
},
"max_weight": {
"type": "number"
},
"cell_mode": {
"type": "string",
"description": "Mode of cell (STORAGE...)."
}
},
"required": ["x_y", "cell_type", "floor_depth", "max_depth",
"min_depth", "cell_mode"]
}
}
},
"required": ["cell_information"]
}
Changelog
2.0.1 / 2021-11-30
GET v1/installations/<my-installation-id>/event-log
Description
The event log data contains the same event log data as seen in Console.
Schema
1.0.1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"event_log": {
"type": "array",
"items": {
"type": "object",
"properties": {
"local_timestamp": {
"type": "string",
"description": "Timestamp of the event, in the timezone of the
installation."
},
"event": {
"type": "string",
"description": "Event string as seen in Console."
}
},
"required": ["local_timestamp", "event"]
}
}
},
"required": ["event_log"]
}
Changelog
1.0.1 / 2022-01-13
Installation Data
Description
The Installation Data endpoint provides the summary of the installation including information about Bin,
Robot and Port.
Schema
1.0.3
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"port": {
"type": "array",
"items": {
"type": "object",
"properties": {
"count": {
"type": "number",
"description": "The total number of any module types in any
installation."
},
"type": {
"type": "string",
"description": "Type of any module available (Bin, Robot and
Port)."
}
},
"required": ["count", "type"]
}
},
"bin": {
"type": "array",
"items": {
"type": "object",
"properties": {
"count": {
"type": "number",
"description": "The total number of any module types in any
installation."
},
"type": {
"type": "string",
"description": "Type of any module available (Bin, Robot and
Port)."
}
},
"required": ["count", "type"]
}
},
"robot": {
"type": "array",
"items": {
"type": "object",
"properties": {
"count": {
"type": "number",
"description": "The total number of any module types in any
installation."
},
"type": {
"type": "string",
"description": "Type of any module available (Bin, Robot and
Port)."
}
},
"required": ["count", "type"]
}
}
},
"required": ["port", "bin", "robot"]
}
Changelog
1.0.3 / 2022-10-04
Fix bug where ports were reported with the wrong name.
1.0.2 / 2022-01-17
1.0.1 / 2021-12-07
Module Versions
Description
The Module Versions endpoint provides the summary of different modules available in the installation.
Schema
2.0.1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"versions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"module": {
"type": "string",
"description": "Name of the Module (ASROBOTS...)."
},
"module_id": {
"type": "string",
"description": "ID of the module as set and seen in ASConsole."
},
"sub_module": {
"type": "string",
"description": "Type of any sub-module available for specific
module."
},
"version": {
"type": "string",
"description": "Version of the module."
}
},
"required": ["module", "version"]
}
}
},
"required": ["versions"]
}
Changelog
2.0.1 / 2022-02-28
Packet loss
GET v1/installations/<my-installation-id>/packet-loss
Description
The packet loss endpoints contains day-aggregated data for packets (radio trafic) for the access points at
modules. It can be used to calculate metrics such as packet loss ratio, which gives an indication of the radio
performance on the installation.
Schema
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"total": {
"type": "object",
"properties": {
"packets_successfully_sent": {
"type": "number",
"description": "Total packets succesfully sent in the date."
},
"packets_lost": {
"type": "number",
"description": "Total packets lost in the date."
},
"sync_packets_lost": {
"type": "number",
"description": "Total sync packets lost in the date."
}
},
"required": ["packets_successfully_sent", "packets_lost",
"sync_packets_lost"]
},
"access_points": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "ID of the access point or robot."
},
"packets_successfully_sent": {
"type": "number",
"description": "Packets succesfully sent for this access point or
robot in the date."
},
"packets_lost": {
"type": "number",
"description": "Packets lost for this access point or robot in the
date."
},
"sync_packets_lost": {
"type": "number",
"description": "Sync packets lost for this access point or robot
in the date."
},
"firmware_version": {
"type": "object",
"description": "Firmware verison that the access point or robot
runs."
}
},
"required": ["id", "packets_successfully_sent", "packets_lost",
"sync_packets_lost"]
}
},
"robots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "ID of the access point or robot."
},
"packets_successfully_sent": {
"type": "number",
"description": "Packets succesfully sent for this access point or
robot in the date."
},
"packets_lost": {
"type": "number",
"description": "Packets lost for this access point or robot in the
date."
},
"sync_packets_lost": {
"type": "number",
"description": "Sync packets lost for this access point or robot
in the date."
},
"firmware_version": {
"type": "object",
"description": "Firmware verison that the access point or robot
runs."
}
},
"required": ["id", "packets_successfully_sent", "packets_lost",
"sync_packets_lost"]
}
}
},
"required": ["total", "access_points", "robots"]
}
Changelog
Robot MTBF
GET v1/installations/<my-installation-id>/robot-mtbf
Description
Robot MTBF is the Robot mean time between failure which is a crucial metric for calculating the performance
and durability of the robots. The Robot MTBF data is extensive and the data the endpoint provides can also be
used to calculate other things such as the errors or active times of the robots.
Schema
1.2.2
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"robot_active_times": {
"type": "array",
"items": {
"type": "object",
"properties": {
"robot_id": {
"type": "number",
"description": "The ID of the robot as set and seen in ASConsole."
},
"total_time_active_s": {
"type": "number",
"description": "The total time, in seconds, this robot has been
active in the date."
}
},
"required": ["robot_id", "total_time_active_s"]
}
},
"robot_include_errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"robot_id": {
"type": "number",
"description": "The ID of the robot as set and seen in ASConsole."
},
"robot_error_type": {
"type": "string",
"description": "Error type."
},
"local_installation_timestamp": {
"type": "string",
"description": "When the error happenend, in the local time of the
installation."
},
"error_stopped_system": {
"type": "boolean",
"description": "If the error caused the system to stop."
},
"is_port": {
"type": "boolean",
"description": "If the error happened in a port."
},
"is_charger": {
"type": "boolean",
"description": "If the error happened in a charger."
},
"error_x": {
"type": "number",
"description": "X position in grid where error happened, if
applicable."
},
"error_y": {
"type": "number",
"description": "Y position in grid where error happened, if
applicable."
},
"robot_type": {
"type": "string",
"description": "Robot type."
},
"firmware_version": {
"type": "string",
"description": "Firmware version of robot when error happened."
}
},
"required": [
"robot_id",
"robot_error_type",
"local_installation_timestamp",
"error_stopped_system",
"is_port",
"is_charger",
"robot_type",
"firmware_version"
]
}
},
"robot_mtbf": {
"type": "object",
"properties": {
"total_time_active_s": {
"type": "number",
"description": "The total time active for all robots in this site
for the date."
},
"total_errors": {
"type": "number",
"description": "Total robot errors for this date."
},
"total_errors_system_stops": {
"type": "number",
"description": "Total robot errors in this date causing the system
to stop."
},
"robot_mtbf": {
"type": "number",
"description": "Robot MTBF in this date, calculated by dividing the
active time by total errors."
},
"robot_mtbf_system_stops": {
"type": "number",
"description": "Robot MTBF system stops in this date, calculated by
dividing the active time by total errors causing the system to stop."
}
},
"required": [
"total_time_active_s",
"total_errors",
"total_errors_system_stops",
"robot_mtbf",
"robot_mtbf_system_stops"
]
}
},
"required": ["robot_include_errors", "robot_mtbf"]
}
Changelog
1.2.2 / 2022-08-05
1.2.1 / 2022-02-02
Fixed bug causing some system stops to be skipped if running newest version of XHandler.
1.2.0 / 2021-11-30
Return empty list instead of null if there are no robot errors for a date.
1.1.0 / 2021-11-23
Robot Movement
GET v1/installations/<my-installation-id>/robot-movement
Description
Robot movement gives the movement in X/Y direction for each robot on the site for a given date.
Schema
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"robots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"robot_id": {
"type": "number",
"description": "Robot ID on site, as seen and set in ASConsole."
},
"distance_x_m": {
"type": "number",
"description": "Distance moved in X direction in meters for given
date."
},
"distance_y_m": {
"type": "number",
"description": "Distance moved in Y direction in meters for given
date."
}
},
"required": ["robot_id", "distance_x_m", "distance_y_m"]
}
}
},
"required": ["robots"]
}
Changelog
1.0.0 / 2022-01-18
Add initial version calculating the movement in each X/Y direction for each robot.
Robot State
GET v1/installations/<my-installation-id>/robot-state
Description
The robot state endpoint gives data categorizing each robot into three different states: WORKING,
CHARGING or IDLE.
Schema
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"robot_states": {
"type": "array",
"items": {
"type": "object",
"properties": {
"robot_id": {
"type": "number",
"description": "The ID of the robot as set and seen in ASConsole."
},
"time_working_s": {
"type": "number",
"description": "Time spent working in date, in seconds. Working is
when not charging or off."
},
"time_off_s": {
"type": "number",
"description": "Time spent off in date, in seconds."
},
"time_charging_s": {
"type": "number",
"description": "Time spent charging in date, in seconds."
}
},
"required": ["robot_id", "time_working_s", "time_off_s",
"time_charging_s"]
}
}
},
"required": ["robot_states"]
}
Changelog
1.0.0 / 2021-11-24
Uptime
GET v1/installations/<my-installation-id>/uptime
Description
The uptime endpoint gives all data required to calculate the defined uptime for the installation. Uptime is one
of the most important metrics for calculating the performance of a site. To calculate the uptime, recovery mode
must be used and understood.
Schema
1.1.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"total_seconds": {
"type": "number",
"description": "Total amount of seconds in the date, calculated as up
seconds plus down seconds."
},
"up_seconds": {
"type": "number",
"description": "Total amount of seconds in the date that the system was
running/UP."
},
"down_seconds": {
"type": "number",
"description": "Total amount of seconds in the date that the system was
down."
},
"recovery_seconds": {
"type": "number",
"description": "Total amount of seconds in the date spent in recovery
mode. Recovery mode starts when the user opens the grid door to act upon an
error."
},
"down_ratio": {
"type": "number",
"description": "Down ratio is calculated as down seconds over total
seconds."
},
"up_ratio": {
"type": "number",
"description": "Up ratio is calculated as up seconds over total seconds"
},
"recovery_down_ratio": {
"type": "number",
"description": "Recovery seconds is calculated as recovery seconds over
total seonds."
},
"recovery_up_ratio": {
"type": "number",
"description": "Calculated as 1 - recovery_down_ratio. This is what
typically is used for uptime in an date."
},
"periods": {
"type": "array",
"items": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"description": "Mode of the period (UP/DOWN)."
},
"start_at": {
"type": "string",
"description": "Start time of the period."
},
"end_at": {
"type": "string",
"description": "End time of the period."
},
"recovery_at": {
"type": "string",
"description": "When in period the recovery time potentially
starts."
},
"stop_text": {
"type": "string",
"description": "If it was a downtime period, what started the
downtime/system stop."
},
"up_seconds": {
"type": "number",
"description": "Amount of seconds the system was up in the
period."
},
"down_seconds": {
"type": "number",
"description": "Amount of seconds system was down in the period."
},
"recovery_seconds": {
"type": "number",
"description": "Amount of seconds spent in recovery mode in the
period."
},
"stop_code_name": {
"type": "string",
"description": "The stop code with which the system stopped. No
stop code means it's a manual stop."
}
},
"required": ["mode", "start_at", "end_at", "up_seconds",
"down_seconds", "recovery_seconds"]
}
}
},
"required": [
"total_seconds",
"up_seconds",
"down_seconds",
"recovery_seconds",
"down_ratio",
"up_ratio",
"recovery_down_ratio",
"recovery_up_ratio",
"periods"
]
}
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"total_seconds": {
"type": "number",
"description": "Total amount of seconds in the date, calculated as up
seconds plus down seconds."
},
"up_seconds": {
"type": "number",
"description": "Total amount of seconds in the date that the system was
running/UP."
},
"down_seconds": {
"type": "number",
"description": "Total amount of seconds in the date that the system was
down."
},
"recovery_seconds": {
"type": "number",
"description": "Total amount of seconds in the date spent in recovery
mode. Recovery mode starts when the user opens the grid door to act upon an
error."
},
"down_ratio": {
"type": "number",
"description": "Down ratio is calculated as down seconds over total
seconds."
},
"up_ratio": {
"type": "number",
"description": "Up ratio is calculated as up seconds over total seconds"
},
"recovery_down_ratio": {
"type": "number",
"description": "Recovery seconds is calculated as recovery seconds over
total seonds."
},
"recovery_up_ratio": {
"type": "number",
"description": "Calculated as 1 - recovery_down_ratio. This is what
typically is used for uptime in an date."
},
"periods": {
"type": "array",
"items": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"description": "Mode of the period (UP/DOWN)."
},
"start_at": {
"type": "string",
"description": "Start time of the period."
},
"end_at": {
"type": "string",
"description": "End time of the period."
},
"recovery_at": {
"type": "string",
"description": "When in period the recovery time potentially
starts."
},
"stop_text": {
"type": "string",
"description": "If it was a downtime period, what started the
downtime/system stop."
},
"up_seconds": {
"type": "number",
"description": "Amount of seconds the system was up in the
period."
},
"down_seconds": {
"type": "number",
"description": "Amount of seconds system was down in the period."
},
"recovery_seconds": {
"type": "number",
"description": "Amount of seconds spent in recovery mode in the
period."
}
},
"required": ["mode", "start_at", "end_at", "up_seconds",
"down_seconds", "recovery_seconds"]
}
}
},
"required": [
"total_seconds",
"up_seconds",
"down_seconds",
"recovery_seconds",
"down_ratio",
"up_ratio",
"recovery_down_ratio",
"recovery_up_ratio",
"periods"
]
}
Changelog
1.1.0 / 2023-10-01
1.0.0 / 2021-10-01
Description
The Port bin wait time endpoint provides the summary of waiting time for the bins in the installation
throughout the day.
Schema
3.1.1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"port_hour_wait_time": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port id of the port."
},
"hour": {
"type": "string",
"description": "Hour of the day."
},
"type": {
"type": "string",
"description": "Type of wait time: 'wait_bin' seconds waiting for
the bin to be showed to the user in the port, 'wait_user' seconds waiting for
the user feedback in the port, 'waste_time' seconds waiting for WMS to request
next bin."
},
"subtype": {
"type": "string",
"description": "Type of bin through the port: 'BIN_PRESENTATIONS'
for bin presentations, closed bins and removed bins, 'CLOSE_PORT' for bins
where the port was closed while bin was in progress, 'SUM' for all bin types
together."
},
"count": {
"type": "number",
"description": "Number of bins in the specified port, hour, type
and subtype."
},
"average": {
"type": "number",
"description": "Average time in seconds of the bins in the
specified port, hour, type and subtype."
},
"minimum": {
"type": "number",
"description": "Minimum time in seconds of the bins in the
specified port, hour, type and subtype."
},
"maximum": {
"type": "number",
"description": "Maximum time in seconds of the bins in the
specified port, hour, type and subtype."
},
"variance": {
"type": "number",
"description": "Variance of the time in seconds of the bins in the
specified port, hour, type and subtype."
},
"standard_deviation": {
"type": "number",
"description": "Standard deviation of the time in seconds of the
bins in the specified port, hour, type and subtype."
},
"picks": {
"type": "number",
"description": "Number of bins where goods came out of AutoStore
in the specified port, hour, type and subtype."
},
"goods_in": {
"type": "number",
"description": "Number of bins where goods went inside AutoStore
in the specified port, hour, type and subtype."
},
"inspection_or_adhoc": {
"type": "number",
"description": "Number of bins requested outside usual procedure
in the specified port, hour, type and subtype."
},
"category_codes_count": {
"type": "array",
"items": {
"type": "object",
"properties": {
"category_code": {
"type": "number",
"description": "Category code of the bins."
},
"count": {
"type": "number",
"description": "Count of bins with the category code."
}
},
"required": ["category_code", "count"]
}
},
"content_codes_count": {
"type": "array",
"items": {
"type": "object",
"properties": {
"content_code": {
"type": "number",
"description": "Content code of the bins."
},
"count": {
"type": "number",
"description": "Count of bins with the content code."
}
},
"required": ["content_code", "count"]
}
}
},
"required": [
"port_id",
"hour",
"type",
"subtype",
"count",
"average",
"minimum",
"maximum",
"variance",
"standard_deviation",
"picks",
"goods_in",
"inspection_or_adhoc",
"category_codes_count",
"content_codes_count"
]
}
}
},
"required": ["port_hour_wait_time"]
}
3.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"port_hour_wait_time": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port id of the port."
},
"hour": {
"type": "string",
"description": "Hour of the day."
},
"type": {
"type": "string",
"description": "Type of wait time: 'wait_bin' seconds waiting for
the bin to be showed to the user in the port, 'wait_user' seconds waiting for
the user feedback in the port, 'waste_time' seconds waiting for WMS to request
next bin."
},
"subtype": {
"type": "string",
"description": "Type of bin through the port: 'BIN_PRESENTATIONS'
for bin presentations, closed bins and removed bins, 'CLOSE_PORT' for bins
where the port was closed while bin was in progress, 'SUM' for all bin types
together."
},
"count": {
"type": "number",
"description": "Number of bins in the specified port, hour, type
and subtype."
},
"average": {
"type": "number",
"description": "Average time in seconds of the bins in the
specified port, hour, type and subtype."
},
"minimum": {
"type": "number",
"description": "Minimum time in seconds of the bins in the
specified port, hour, type and subtype."
},
"maximum": {
"type": "number",
"description": "Maximum time in seconds of the bins in the
specified port, hour, type and subtype."
},
"variance": {
"type": "number",
"description": "Variance of the time in seconds of the bins in the
specified port, hour, type and subtype."
},
"standard_deviation": {
"type": "number",
"description": "Standard deviation of the time in seconds of the
bins in the specified port, hour, type and subtype."
},
"picks": {
"type": "number",
"description": "Number of bins where goods came out of AutoStore
in the specified port, hour, type and subtype."
},
"goods_in": {
"type": "number",
"description": "Number of bins where goods went inside AutoStore
in the specified port, hour, type and subtype."
},
"inspection_or_adhoc": {
"type": "number",
"description": "Number of bins requested outside usual procedure
in the specified port, hour, type and subtype."
}
},
"required": [
"port_id",
"hour",
"type",
"subtype",
"count",
"average",
"minimum",
"maximum",
"variance",
"standard_deviation",
"picks",
"goods_in",
"inspection_or_adhoc"
]
}
}
},
"required": ["port_hour_wait_time"]
}
2.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"port_hour_wait_time": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port id of the port."
},
"hour": {
"type": "string",
"description": "Hour of the day."
},
"type": {
"type": "string",
"description": "Type of wait time: 'wait_bin' seconds waiting for
the bin to be showed to the user in the port, 'wait_user' seconds waiting for
the user feedback in the port, 'waste_time' seconds waiting for WMS to request
next bin."
},
"subtype": {
"type": "string",
"description": "Type of bin through the port: 'CLOSE_BIN' for bin
presentations, 'REMOVE_BIN' for bins removed from the AutoStore, 'CLOSE_PORT'
for bins where the port was closed while bin was in progress, 'SUM' for all
bin types together."
},
"count": {
"type": "number",
"description": "Number of bins in the specified port, hour, type
and subtype."
},
"average": {
"type": "number",
"description": "Average time in seconds of the bins in the
specified port, hour, type and subtype."
},
"minimum": {
"type": "number",
"description": "Minimum time in seconds of the bins in the
specified port, hour, type and subtype."
},
"maximum": {
"type": "number",
"description": "Maximum time in seconds of the bins in the
specified port, hour, type and subtype."
},
"variance": {
"type": "number",
"description": "Variance of the time in seconds of the bins in the
specified port, hour, type and subtype."
},
"standard_deviation": {
"type": "number",
"description": "Standard deviation of the time in seconds of the
bins in the specified port, hour, type and subtype."
}
},
"required": [
"port_id",
"hour",
"type",
"subtype",
"count",
"average",
"minimum",
"maximum",
"variance",
"standard_deviation"
]
}
}
},
"required": ["port_hour_wait_time"]
}
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"hour_wait_time": {
"type": "array",
"items": {
"type": "object",
"properties": {
"hour": {
"type": "string",
"description": "Hour of the day."
},
"type": {
"type": "string",
"description": "Type of wait time: 'wait_bin' seconds
waiting for the bin to be showed to the user in the port, 'wait_user' seconds
waiting for the user feedback in the port, 'waste_time' seconds waiting for
WMS to request next bin."
},
"subtype": {
"type": "string",
"description": "Type of bin through the port:
'CLOSE_BIN' for bin presentations, 'REMOVE_BIN' for bins removed from
the AutoStore, 'CLOSE_PORT' for bins where the port was closed while bin was
in progress, 'SUM' for all bin types together."
},
"count": {
"type": "number",
"description": "Number of bins in the specified hour,
type and subtype."
},
"average": {
"type": "number",
"description": "Average time in seconds of the bins in
the specified hour, type and subtype."
},
"minimum": {
"type": "number",
"description": "Minimum time in seconds of the bins in
the specified hour, type and subtype."
},
"maximum": {
"type": "number",
"description": "Maximum time in seconds of the bins in
the specified hour, type and subtype."
},
"variance": {
"type": "number",
"description": "Variance of the time in seconds of the
bins in the specified hour, type and subtype."
},
"standard_deviation": {
"type": "number",
"description": "Standard deviation of the time in
seconds of the bins in the specified hour, type and subtype."
}
},
"required": [
"hour",
"type",
"subtype",
"count",
"average",
"minimum",
"maximum",
"variance",
"standard_deviation"
]
}
}
},
"required": [
"hour_wait_time"
]
}
Changelog
3.1.1 / 2022-09-22
Fixed bug in counting of picks and goods in for installations using bin interface.
3.1.0 / 2022-08-11
3.0.0 / 2022-07-15
2.0.0 / 2022-04-26
1.0.0 / 2021-11-01
First version
Port MBBF
GET v1/installations/<my-installation-id>/port-mbbf
Description
The Port MBBF (Mean Bins Before Failure) endpoint provides the number of port errors as well as the number
of bins that went through the ports in the installation throughout the day. The "Mean bins before failure" value
gives us an average of the number of bins that go through a port before we have an error in the port.
Schema
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"ports": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port ID."
},
"port_type_string": {
"type": "string",
"description": "The port type."
},
"firmware_version": {
"type": "object",
"description": "The port firmware version."
},
"mean_bins_before_failure": {
"type": "number",
"description": "Number of bins that went through the port divided
by the number of errors of the port."
},
"bin_count": {
"type": "number",
"description": "Number of bins that went through the port."
},
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"error_type": {
"type": "string"
},
"sub_error_type": {
"type": "string"
},
"count": {
"type": "number"
}
},
"required": ["count"]
}
}
},
"required": ["port_id", "bin_count", "errors"]
}
}
},
"required": ["ports"]
}
Changelog
2.0.0 / 2021-11-01
First version
Port Uptime
GET v1/installations/<my-installation-id>/port-uptime
Description
The Port Uptime endpoint provides the time in where each port was up, closed, down or stopped in the
installation throughout the day. The list of periods allows us to know which errors were responsible for the
downtime or stop of the ports.
Schema
2.0.1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"ports": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number"
},
"up_seconds": {
"type": "number",
"description": "Number of seconds the port was up and running."
},
"down_seconds": {
"type": "number",
"description": "Number of seconds the port was down due to an
error."
},
"closed_seconds": {
"type": "number",
"description": "Number of seconds the port was closed normally and
without outstanding issues."
},
"stop_seconds": {
"type": "number",
"description": "Number of seconds the port was stopped due to
emergency stop or another irregular user input."
},
"periods": {
"type": "array",
"items": {
"type": "object",
"properties": {
"period_type": {
"type": "string",
"description": "Type of port period, 'downtime' or 'stop'."
},
"start_at": {
"type": "string",
"description": "Time when the port period started."
},
"end_at": {
"type": "string",
"description": "Time when the port period ended."
},
"errorstring_1": {
"type": "string",
"description": "First port error related to the period."
},
"errorstring_2": {
"type": "string",
"description": "Second port error related to the period."
},
"errorstring_3": {
"type": "string",
"description": "Third port error related to the period."
}
},
"required": ["period_type", "start_at"]
}
}
},
"required": ["port_id", "up_seconds", "down_seconds",
"closed_seconds", "stop_seconds", "periods"]
}
}
},
"required": ["ports"]
}
Changelog
2.0.1 / 2022-06-02
2.0.0 / 2022-01-17
R5 Robot Battery
GET v1/installations/<my-installation-id>/R5-battery
Description
The R5 robot battery endpoint provides the robots battery data for when the robots went charging, in the
installation throughout the day.
Schema
2.1.1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"r5_robots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"robot_id": {
"type": "number"
},
"total_number_times_charged": {
"type": "number",
"description": "Number of times the robot went to the
charger to charge."
},
"charge_reposition_count": {
"type": "number",
"description": "Number of times the robot tried to
reposition itself on the charger."
},
"total_number_couplings": {
"type": "number",
"description": "Number of times the robot connected to
the charger. It is the sum of 'Times charged' + 'Repositions'."
},
"battery_0_count": {
"type": "number",
"description": "Count of battery 0 values. Not enough
voltage detected to charge the robot's batteries."
},
"battery_100_count": {
"type": "number",
"description": "Count of battery 100 values. Charging
has been paused due to overvoltage."
},
"battery_101_count": {
"type": "number",
"description": "Count of battery 101 values. Slight
overvoltage detected, but the robot is still charging.If the overvoltage
persists the charging will be paused."
},
"battery_102_count": {
"type": "number",
"description": "Count of battery 102 values. Severe
overvoltage in danger of damaging the batteries.Charging is paused and charger
has most likely malfunctioned."
},
"battery_104_count": {
"type": "number",
"description": "Count of battery 104 values. Charging
stopped due to unexpected charge behavior. If this happens frequently, please
contact support."
},
"battery_105_count": {
"type": "number",
"description": "Count of battery 105 values. Charging
stopped due to unexpected charge behavior.If this happens frequently, please
contact support."
},
"battery_104_count_previous_week": {
"type": "number",
"description": "Count of battery 104 values of the
past week."
},
"battery_105_count_previous_week": {
"type": "number",
"description": "Count of battery 105 values of the
past week."
},
"battery_decay": {
"type": "number",
"description": "Battery degration value. Number that
indicates how bad a battery looks like while charging. It is equal to the
battery_104_count * 4 + battery_105_count * 10 from the previous week."
},
"bad_battery_flag": {
"type": "boolean",
"description": "A flagged battery indicates that it
could have issues and should be checked. If battery_104_count +
battery_105_count >= 3, based on the previous week's values."
}
},
"required": [
"robot_id"
]
}
}
},
"required": [
"r5_robots"
]
}
Changelog
2.1.1 / 2022-03-22
Fix bug where robots other than R5s were in the analysis.
Fix bug with same second RobotNotify and RobotStatus segments.
2.1.0 / 2022-02-22
2.0.0 / 2022-02-03
The analysis is now partioned by date, this means the charging periods begin and end in the same
day.
R5 Charger
GET v1/installations/<my-installation-id>/R5-chargers
Description
The R5 chargers endpoint provides the charger data for when the robots went charging, in the installation
throughout the day.
Schema
2.0.1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"r5_chargers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"charger_position_x": {
"type": "number",
"description": "Charger position X on the grid."
},
"charger_position_y": {
"type": "number",
"description": "Charger position Y on the grid."
},
"total_number_times_charged": {
"type": "number",
"description": "Number of times the robot went to the charger to
charge."
},
"charge_reposition_count": {
"type": "number",
"description": "Number of times the robot tried to reposition
itself on the charger."
},
"total_number_couplings": {
"type": "number",
"description": "Number of times the robot connected to the
charger. It is the sum of 'Times charged' + 'Repositions'."
},
"battery_0_count": {
"type": "number",
"description": "Count of battery 0 values. Not enough voltage
detected to charge the robot's batteries."
},
"battery_100_count": {
"type": "number",
"description": "Count of battery 100 values. Charging has been
paused due to overvoltage."
},
"battery_101_count": {
"type": "number",
"description": "Count of battery 101 values. Slight overvoltage
detected, but the robot is still charging.If the overvoltage persists the
charging will be paused."
},
"battery_102_count": {
"type": "number",
"description": "Count of battery 102 values. Severe overvoltage in
danger of damaging the batteries.Charging is paused and charger has most
likely malfunctioned."
}
},
"required": ["charger_position_x", "charger_position_y"]
}
}
},
"required": ["r5_chargers"]
}
Changelog
2.0.1 / 2022-03-22
Fix bug where robots other than R5s were in the analysis.
Fix bug with same second RobotNotify and RobotStatus segments.
2.0.0 / 2022-03-10
Bin Presentations
GET v1/installations/<my-installation-id>/bin-presentations
Description
The bin presentations endpoint provides bin presentations data for each bin, either goods in or picks, in the
installation throughout the day.
Schema
2.1.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"bin_presentations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port id of the port."
},
"count": {
"type": "number",
"description": "Number of bin presentations in the specified port.
All closed and removed bins are considered."
},
"picks": {
"type": "number",
"description": "Number of bin presentations where goods came out
of AutoStore in the specified port."
},
"goods_in": {
"type": "number",
"description": "Number of bin presentations where goods went
inside AutoStore in the specified port."
},
"inspection_or_adhoc": {
"type": "number",
"description": "Number of bin presentations requested outside
usual procedure in the specified port."
},
"count_all_bins": {
"type": "number",
"description": "Number of all bins in the specified port, bin
presentations plus the 'close port' bins."
},
"average_wait_bin": {
"type": "number",
"description": "Average time in seconds of the bins in the
specified port for 'wait_bin' type, of all bins."
},
"average_wait_user": {
"type": "number",
"description": "Average time in seconds of the bins in the
specified port for 'wait_user' type, of all bins."
},
"average_waste_time": {
"type": "number",
"description": "Average time in seconds of the bins in the
specified port for 'waste_time' type, of all bins."
}
},
"required": [
"port_id",
"count",
"picks",
"goods_in",
"inspection_or_adhoc",
"count_all_bins",
"average_wait_bin",
"average_wait_user",
"average_waste_time"
]
}
}
},
"required": ["bin_presentations"]
}
2.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"bin_presentations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port id of the port."
},
"count": {
"type": "number",
"description": "Number of bin presentations in the specified port.
All closed and removed bins are considered."
},
"picks": {
"type": "number",
"description": "Number of bin presentations where goods came out
of AutoStore in the specified port."
},
"goods_in": {
"type": "number",
"description": "Number of bin presentations where goods went
inside AutoStore in the specified port."
},
"inspection_or_adhoc": {
"type": "number",
"description": "Number of bin presentations requested outside
usual procedure in the specified port."
}
},
"required": ["port_id", "count", "picks", "goods_in",
"inspection_or_adhoc"]
}
}
},
"required": ["bin_presentations"]
}
1.1.1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"bin_presentations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port id of the port."
},
"hour": {
"type": "string",
"description": "Hour of the day."
},
"goods_in": {
"type": "number",
"description": "Number of bins where goods went inside AutoStore
in the specified port and hour. If the port is configured with content code,
bins have goods going in."
},
"picks": {
"type": "number",
"description": "Number of bins where goods came out of AutoStore
in the specified port and hour. If the port is configured with category code,
bins are picks."
},
"total_bins": {
"type": "number",
"description": "Total number of bin presentations in the specified
port and hour. All closed and removed bins are considered, wether the port is
configured with content or category, or is not using this setting."
}
},
"required": ["port_id", "hour", "goods_in", "picks", "total_bins"]
}
}
},
"required": ["bin_presentations"]
}
1.1.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"bin_presentations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port id of the port."
},
"hour": {
"type": "string",
"description": "Hour of the day."
},
"goods_in": {
"type": "number",
"description": "Number of bins where goods went inside AutoStore
in the specified port and hour. If the port is configured with content code,
bins have goods going in."
},
"picks": {
"type": "number",
"description": "Number of bins where goods came out of AutoStore
in the specified port and hour. If the port is configured with category code,
bins are picks."
},
"total_bins": {
"type": "number",
"description": "Total number of bin bin presentations in the
specified port and hour. All closed bins are considered, wether the port is
configured with content or category, or is not using this setting."
}
},
"required": ["port_id", "hour", "goods_in", "picks", "total_bins"]
}
}
},
"required": ["bin_presentations"]
}
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"bin_presentations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port id of the port."
},
"hour": {
"type": "string",
"description": "Hour of the day."
},
"goods_in": {
"type": "number",
"description": "Number of bins where goods went inside AutoStore
in the specified port and hour."
},
"picks": {
"type": "number",
"description": "Number of bins where goods came out of AutoStore
in the specified port and hour."
}
},
"required": ["port_id", "hour", "goods_in", "picks"]
}
}
},
"required": ["bin_presentations"]
}
Changelog
2.1.0 / 2022-10-19
New version to align with port bin wait time analysis data. It's an easier to read analysis of bins per
day.
1.1.1 / 2022-05-02
1.1.0 / 2022-04-28
1.0.0 / 2022-04-25
First version.
B1 Battery
GET v1/installations/<my-installation-id>/B1-battery
Description
The B1 battery endpoint provides B1 battery data for when the B1 robots went charging, in the installation
throughout the day.
Schema
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"b1_batteries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"battery_id": {
"type": "number",
"description": "Battery ID."
},
"total_number_times_charged": {
"type": "number",
"description": "Number of times the battery went to the charger to
charge."
}
},
"required": ["battery_id"]
}
}
},
"required": ["b1_batteries"]
}
Changelog
1.0.0 / 2022-05-04
First version.
B1 Charger
GET v1/installations/<my-installation-id>/B1-chargers
Description
The B1 chargers endpoint provides B1 charger data for when the B1 robots went charging, in the installation
throughout the day.
Schema
1.0.0
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"b1_chargers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"charger_id": {
"type": "number",
"description": "Charger ID."
},
"charger_position_x": {
"type": "number",
"description": "Charger position X on the grid."
},
"charger_position_y": {
"type": "number",
"description": "Charger position Y on the grid."
},
"charger_group_id": {
"type": "number",
"description": "Charger group ID to which the charger belongs to,
a robot will exchangebatteries within a group. This is used to spread
batteries through the grid."
},
"total_number_times_charged": {
"type": "number",
"description": "Number of times the battery went to the charger to
charge."
}
},
"required": ["charger_id", "charger_position_x", "charger_position_y",
"charger_group_id"]
}
}
},
"required": ["b1_chargers"]
}
Changelog
1.0.0 / 2022-05-04
First version.
Only installations which have bought Unify have access to live data. It also requires a Unify Connect version
greater than 1.5.0 and that we enable live data for the installation.
The AutoStore Demo site contains a preview of how live data looks like.
The websocket is a one way channel (only events being pushed to the websocket). The websocket does not
accept events sent to it by the listener. An introduction to websocket can be found here.
1. Provide a token in the header. The authentication token is the same one as used in the HTTP based
API, described above.
2. Request a protocol when opening the connection to the server. If using the WebSockets API, you
can pass the protocols in the WebSocket constructor, as in this example. We require that the first
protocol be the string "API-Authorization" and the second protocol be the string "Token-
MY_TOKEN".
General schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"app_server_time": {
"type": "string",
"description": "Timestamp from the app server when the event was sent
from the installation. Given in the local time of the app server and follow
ISO8601."
},
"local_installation_timestamp": {
"type": "string",
"description": "Similiar to the app_server_timestamp, but for the
controller PC instead of the app server."
},
"date": {
"type": "string",
"description": "Date for when the event was sent."
},
"event_type": {
"type": "string",
"description": "Type of the event. The data schema for the different
events, and the different events, are described below."
},
"installation_id": {
"type": "string",
"description": "Installation id which the event belongs to. Same as the
installation_id specified in the connection string."
},
"uuid": {
"type": "string",
"description": "A unique ID for the event."
},
"uuid": {
"type": "string",
"description": "A semenatic version of the event type. Usually 1.0.0."
},
"data": {
"type": "object",
"description": "The event data. The schemas are described below and they
follow the event_type."
}
},
"required": [
"app_server_time",
"local_installation_timestamp",
"date",
"event_type",
"installation_id",
"uuid",
"version",
"data"
]
}
The possible event types are: SYSTEM_MODE, ROBOT_STATE, ROBOT_ERROR and BIN_AND_TASK.
SYSTEM_MODE
The system mode event is sent when the system changes mode, typically between RUNNING and STOPPED.
SYSTEM_MODE Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"system_mode": {
"type": "string",
"description": "The mode the system changes to, e.g. RUNNING, STOPPED,
SERVICE."
},
"stop_code": {
"type": "number",
"description": "If the system went into stopping/stopped, the stop code
of the system. The list of stop code can be found here
https://documentation.autostoresystem.com/status-lookup/ (requires
authorization)."
},
"stop_data": {
"type": "array of numbers",
"description": "If the system went into stopping/stopped, the stop data
might contain additional data such as the id of the robot that stopped the
system."
}
},
"required": ["system_mode"]
}
ROBOT_STATE
The robot state event is sent out every 5 minutes and it includes which robot are in which states. It can for
instance be used to show which robots are active and which are charging.
ROBOT_STATE Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"service": {
"type": "array of numbers",
"description": "The robot IDs of the robot which are in service."
},
"reserved": {
"type": "array of numbers",
"description": "The robot IDs of the robots which are reserved
(controlled by the system, e.g. being programmed.)."
},
"charging": {
"type": "array of numbers",
"description": "The robot IDs of the robots which are charging."
},
"available": {
"type": "array of numbers",
"description": "The robot IDs of the robots which are available for
work."
},
"working": {
"type": "array of numbers",
"description": "The robot IDs of the robots which are working."
}
},
"required": ["service", "reserved", "charging", "available", "working"]
}
ROBOT_ERROR
The robot error event is sent every time an error occurs on a robot.
ROBOT_ERROR Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"robot_id": {
"type": "number",
"description": "The robot ID of the robot where the error occurred."
},
"robot_error": {
"type": "string",
"description": "The name of the error. What the error means can be found
in https://documentation.autostoresystem.com/status-lookup/."
},
"robot_type": {
"type": "string",
"description": "The type of the robot where the error occurred, i.e.
R5."
},
"position_x": {
"type": "number",
"description": "The X position on the grid where the error occurred."
},
"position_y": {
"type": "number",
"description": "The Y position on the grid where the error occurred."
},
"robot_has_bin": {
"type": "bool",
"description": "True/false if the robot was carrying a bin when the
error occurred."
},
"bin_id": {
"type": "number",
"description": "If it has bin, the ID of the bin."
},
"robot_in_port": {
"type": "bool",
"description": "True/false if the robot was in a port when the error
occurred."
}
},
"required": [
"robot_id",
"robot_error",
"robot_type",
"position_x",
"position_y",
"robot_has_bin",
"bin_id",
"robot_in_port"
]
}
BIN_AND_TASK
The BIN_AND_TASK event is sent every 5th minute and contains information on how many tasks are in the
system, how many tasks were added in the previous five minutes, how many tasks were picked in the previous
five minutes etc. It also contains the aforementioned information on a port basis.
BIN_AND_TASK Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"active_tasks": {
"type": "number",
"description": "How many active tasks there are in the system."
},
"total_tasks": {
"type": "number",
"description": "How many tasks there are in the system."
},
"prepared_tasks": {
"type": "number",
"description": "How many prepared tasks there are in the system."
},
"created_tasks": {
"type": "number",
"description": "How many tasks were created in the last 5 minute
timespan."
},
"deleted_tasks": {
"type": "number",
"description": "How many tasks were deleted in the last 5 minute
timespan."
},
"time_span_seconds": {
"type": "number",
"description": "How long, in seconds, the previous timespan lasted."
},
"ports": {
"type": "array",
"items": {
"type": "object",
"properties": {
"port_id": {
"type": "number",
"description": "Port ID."
},
"goods_in": {
"type": "number",
"description": "How many goods in for the port in the timespan."
},
"picks": {
"type": "number",
"description": "How many picks for the port in the timespan."
},
"inspection_or_adhoc": {
"type": "number",
"description": "How many picks for the port in the timespan."
},
"waste_time": {
"type": "number",
"description": "How many seconds of waste time in the timespan."
},
"wait_bin": {
"type": "number",
"description": "How many seconds of wait bin time in the
timespan."
},
"wait_user": {
"type": "number",
"description": "How many seconds of wait user time in the
timespan."
},
"port_open_seconds": {
"type": "number",
"description": "How many seconds the port was open in the
timespan."
},
"port_closed_seconds": {
"type": "number",
"description": "How many seconds the port was closed in the
timespan."
},
"bins_above": {
"type": "number",
"description": "In total, how many bins were above the bins picked
in this port this timespan at task creation time."
},
"tasks_completed": {
"type": "array of numbers",
"description": "Array of the task IDs of the tasks completed in
this port in the timespan."
},
"content_codes": {
"type": "array",
"description": "How many bins were picked per content code for the
port in the timespan.",
"items": {
"type": "object",
"properties": {
"content_code": {
"type": "number",
"description": "Content code."
},
"count": {
"type": "number",
"description": "How many bins were picked with this content
code in the timespan."
}
},
"required": ["content_code", "count"]
}
},
"category_codes": {
"type": "array",
"description": "How many bins were picked per category code for
the port in the timespan.",
"items": {
"type": "object",
"properties": {
"category_code": {
"type": "number",
"description": "Category code."
},
"count": {
"type": "number",
"description": "How many bins were picked with this category
code in the timespan."
}
},
"required": ["category_code", "count"]
}
}
},
"required": [
"port_id",
"goods_in",
"picks",
"inspection_or_adhoc",
"waste_time",
"wait_bin",
"wait_user",
"port_open_seconds",
"port_closed_seconds",
"bins_above",
"tasks_completed",
"contend_codes",
"category_codes"
]
}
}
},
"required": [
"active_tasks",
"total_tasks",
"prepared_tasks",
"created_tasks",
"updated_tasks",
"deleted_tasks",
"time_span_seconds"
]
}