Skip to content

API Endpoints

CostEffectiveEquipment edited this page May 8, 2023 · 5 revisions

A Note on the API and Recommendations:

When trying to debug programs using this API, we recommend using a browser with network debugging capabilities (such as https://developer.chrome.com/docs/devtools/network/) to inspect the network activity used by our web interface. This should provide many examples of how data is being sent and how to format responses sent to and from the interface.

When doing error checking, it is worth noting that most of our endpoints redirect to the login page if permissions for your session aren't sufficient (or you aren't logged in). In some cases it may not be sufficient to simply check the status code for 200 for success, especially if your library automatically redirects.

Authentication API

This API handles user authentication, and using the session cookie provided by logging in is required to access most of the other tool functions. To log in, post a json named 'data' with username and password keys to /auth/login

Login

Logs in the the specified user. Will return a 403 response code if login fails.
Endpoint: /auth/login
Request Type: POST
Required Permission: None
Required Submission Data: data = {'username' = username, 'password' = password}

Logout

Logs out the client that sends this command.
Endpoint: /auth/logout
Request Type: GET
Required Permission: None
Required Submission Data: None

Control API

This API handles gaining control of the tool, monitor current status, and running commands/recipes on the tool.

presence

Requests local presence on the tool. Required to send commands to the hardware layer.
Endpoint: /api/control/presence
Request Type: GET
Required Permission: logged in
Required Submission Data: None

release

Releases local presence of the tool back to the local display. Must have local presence to release control.
Endpoint: /api/control/release
Request Type: GET
Required Permission: logged in
Required Submission Data: None

cancelPresence

Cancels a request for local presence.
Endpoint: /api/control/cancelPresence
Request Type: GET
Required Permission: logged in
Required Submission Data: None

query

Returns the current status of the tool. See Status Packets for more information on the format of the response.
Endpoint: /api/control/query
Request Type: GET
Required Permission: logged in
Required Submission Data: None

response

Responds to a GUI prompt from the tool, such as process complete. See Notifications for more details.
Endpoint: /api/control/response
Request Type: POST
Required Permission: logged in
Required Submission Data: json = {Response Packet (see Notifications for more details)}

abort

Tells the hardware layer to abort the currently running process.
Endpoint: /api/control/abort
Request Type: GET
Required Permission: logged in
Required Submission Data: None

run

Starts running the active recipe (last recipe posted to select). Requires local presence, an active recipe, and the tool to not be already running a recipe. (processState != running see Status Packets)
Endpoint: /api/control/run
Request Type: POST
Required Permission: logged in
Required Submission Data: json = {}

select

Loads a recipe into memory and prepares for running. Requires local presence, and the tool to not be already running a recipe. (processState != running see Status Packets)
Endpoint: /api/control/select
Request Type: POST
Required Permission: logged in
Required Submission Data: json = {Recipe(see Recipe Format for format)}

manual

Runs a recipe as a manual command, which does not log the process while running, or overwrite the current active recipe. Requires local presence, and the tool to not be already running a recipe. (processState != running see Status Packets)
Endpoint: /api/control/manual
Request Type: POST
Required Permission: logged in
Required Submission Data: json = {Recipe(see Recipe Format for format)}

Recipe API

This API handles the storage and retrieval of recipes stored on the tool's USB.

index

This endpoint allows you to get, delete, or post a recipe.
Endpoint: /api/recipe/
Request Type: GET,POST,DELETE
Required Permission: logged in
Required Submission Data:

  • for GET and DELETE: recipeID = RecipeName
  • For POST Commands: json = {Recipe(see Recipe Format for format)}

search

This endpoint allows you to search for all recipes that contains the specified string.
Endpoint: /api/recipe/search
Request Type: GET
Required Permission: logged in
Required Submission Data: nameContains = search string (defaults to '' if no value supplied)

upload

This endpoint allows you to upload a recipe file directly.
Endpoint: /api/recipe/upload
Request Type: POST
Required Permission: logged in
Required Submission Data: files = {'package': file binary contents (see Upload Recipe example)}

download

This endpoint allows you to download a recipe file directly.
Endpoint: /api/recipe/download
Request Type: GET
Required Permission: logged in
Required Submission Data: recipeID = RecipeName

download2

This endpoint downloads all recipes on the tool, as a zip file.
Endpoint: /api/recipe/download2
Request Type: GET
Required Permission: logged in
Required Submission Data: None

Users API

This API handles user accounts.

profile

This endpoint allows for the currently logged in user to edit their email, phone number/carrier, and password.
Endpoint: /api/users/profile
Request Type: POST
Required Permission: logged in
Required Submission Data: json = {current user profile with edited values (see User Profiles for formatting details)}

list

This endpoint returns a list of all user profiles.
Endpoint: /api/users/list
Request Type: GET
Required Permission: logged in with User Admin permissions
Required Submission Data: None

create

This endpoint allows for a new user to be created.
Endpoint: /api/users/create
Request Type: POST
Required Permission: logged in with User Admin permissions
Required Submission Data: json = {user profile (see User Profiles for formatting details)}

update

This endpoint allows for a user profile to be updated.
Endpoint: /api/users/update
Request Type: POST
Required Permission: logged in with User Admin permissions
Required Submission Data: json = {user profile (see User Profiles for formatting details)}

delete

This endpoint allows for a user profile to be deleted.
Endpoint: /api/users/delete
Request Type: DELETE
Required Permission: logged in with User Admin permissions
Required Submission Data: username = name of account to be deleted

Logging API

This API allows interactions with the logging data recorded by the tool.

query

This endpoint returns a list of all logs between the specified dates. Each element in the list is another list with the first element being a formatted string used when displaying the logs on the Web GUI, and the second element being the iso8601 format / uid which can be used to download the log. Summary logs will have the tool name pre-pended.
Endpoint: /api/logging/query
Request Type: GET
Required Permission: logged in
Required Submission Data: start = start date in "MM/DD/YYYY hh:mm" format, stop = stop date in "MM/DD/YYYY hh:mm" format

deleteAll

This endpoint allows for all logs before a given date to be deleted.
Endpoint: /api/user/deleteAll
Request Type: DELETE
Required Permission: logged in with Log Exporting permissions
Required Submission Data: stop = date for which all earlier logs will be deleted in "MM/DD/YYYY hh:mm" format

download

This endpoint returns a log file in the specified format.
Endpoint: /api/logging/download
Request Type: GET
Required Permission: logged in with Log Exporting permissions
Required Submission Data: timestamp = iso8601 date format of the log, aka the second element in the log records retrieved by query, format = format to download, generally 'json' or 'xlsx'

downloadAll

This endpoint returns a zip file with all logs in the specified format.
Endpoint: /api/logging/downloadAll
Request Type: GET
Required Permission: logged in with Log Exporting permissions
Required Submission Data: format = format to download, generally 'json' or 'xlsx'

downloadDay

This endpoint returns a zip file with all logs from a day in the specified format.
Endpoint: /api/logging/downloadDay
Request Type: GET
Required Permission: logged in with Log Exporting permissions
Required Submission Data: timestamp = "MM/DD/YYYY hh:mm" formatted date, format = format to download, generally 'json' or 'xlsx'

screenshot

This endpoint captures the current local display and returns it as a png file.
Endpoint: /api/logging/screenshot
Request Type: GET
Required Permission: logged in with Log Exporting permissions
Required Submission Data: none

Clone this wiki locally