Skip to content

Major revisions:

Recent Revisions

Date Version Description
10/17/2025 Documentation change only. ops/getgemusers API example was incorrectly showing the groupnum and language fields as integers instead of strings.

Available OPS API calls:

Device management

Assign device to user\ Set device to ready (unassigned) state\ Set device to quarantined state\ Set device to ready (unassigned) state\

User management

Deboard GEM group
Deboard GEM user

Show operations

Set emergency passthrough
Reset show
Pause show
Clear notification
Mark notification in-progress

Inspect data

Inspect devices for show
Inspect signed up users for show
Inspect notifications
Inspect onboard area state
Inspect shows
Inspect show

System settings

Set output log verbosity

General information for API responses

The "ops" series of API calls are used by attendant/operator/administrator tools (such as the GUI and the CLI) to interact with GEM

All of the ops series of API calls follow the following convention:

  1. If the API call reaches the GEM server, an HTTP status of OK (200) will be received, and the payload returned will include a status code and any potential error information.
  2. A standard non-success HTTP status will be returned if the API call does not reach the GEM server due to authentication, protocol, or communications problems.

The return payload from these API calls always includes an "api_code" field, which is 0 if there is no error and it contains an error code otherwise. If there was an error, a field "error" containing a structure with additional details is included. If there is no error, the error field is null.

Example response with no error:

{
    "api_code": 0,
    "error": null
}

Example response with an error:

{
    "api_code": 1002,
    "error": {
        "error_code": 10002,
        "error_message": "could not get GemGroup",
        "error_detail": "getting GameServer by GemGroupId 17: no rows in result set",
        "suggestion": "",
        "callstack": ""
    }
}

Many calls have additional fields in the payload. If there is an error, those fields should be assumed to be uninitialized or invalid. If those fields include ones that are structures, those fields will be null and will not have a valid structure as a value.

The api_code values should be considered "stable" and the caller can code against them.

The error field contains a structure with the following fields:

Type Attribute Description
Number error_code Internal GEM error code. For information purposes. It may change and should not be directly used by callers.
String error_message Human readable version of the error. It will always contain a value.
String error_detail More detail on the message. Optional and may be an empty string.
String suggestion Suggestion on what may be a root cause. Optional and may be an empty string.
String callstack Multiline string containing the callstack where the error was populated. Optional and may be an empty string.