NAV Navigation
bash python

Overview

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

The Solstice OpenControl API supports third-party integration with Solstice hosts through a simple RESTful API. OpenControl can be an important component in a Solstice deployment because it allows integrators and installers to more deeply integrate Solstice with existing room infrastructure.

Getting Started

In the following steps, you will learn how to authenticate to the pod, retrieve specific configuration information about digital signage, and finally apply new settings to the digital signage configuration.

Once you have learned this scenario, the remainder of the API follows the same principals and should be easy to apply the configuration you desire.

Step 1: Authenticate

Code samples

export POD_IP=Replace with Pod IP address
export PASSWORD=Replace with Pod Password

curl -k -X POST \
--header "content-type: application/x-www-form-urlencoded" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/token" \
-d "grant_type=password&username=admin&password=$PASSWORD"
import requests

pod_ip = '<Replace with Pod IP address>'
password = '<Replace with Pod Password>'

headers = {'content-type': 'application/x-www-form-urlencoded', 'Accept': 'application/json'}
payload = f'grant_type=password&username=admin&password={password}'

r = requests.post('https://' + pod_ip + ':5443/v2/token', headers=headers, data=payload, verify=False)

access_token = r.json()['access_token']

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')
print(f'Access Token: {access_token}')

Your application must authenticate to the Pod in order to successfully execute API calls. The v2 API uses the Oauth2 "password grant flow", which returns a JSON object that contains the access_token value. Use the access_token in the Authorization header of subsequent API calls. The Authorization header value must start with Bearer, and don't forget the space after Bearer.

Example Authorization Header

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1OTMwMTQ2Mzh9.edUWf5f7WNfK91aniVX1jXd77C1YWMHOuIdYFPgPodo

Step 2: Get digital signage configuration

Code samples

export POD_IP=Replace with Pod IP address
export ACCESS_TOKEN=Replace with Access Token

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "content-type: application/json" \
"https://$POD_IP:5443/v2/config/display/digital_signage"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/config/display/digital_signage', headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

Use the access_token that you received from the /v2/token as part of any additional API call to the Pod. The example code demonstrates how to view the configuration for the pod.

Step 3: Update digital signage configuration

Code samples

export POD_IP=Replace with Pod IP address
export ACCESS_TOKEN=Replace with Access Token
export PAYLOAD='{ "display": { "digital_signage": {"enabled": false, "url": "https://digitalsignage.mersive.com", "start_after": 10}}}'

curl -k -X PATCH \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "content-type: application/json" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/config" \
-d "$PAYLOAD"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'content-type': 'application/json', 'Accept': 'application/json'}

# display.digital_signage
payload = {}
display_config = {}
signage_config = {}
signage_config['enabled'] = False
signage_config['external_caching_enabled'] = False
signage_config['start_after'] = 10
signage_config['url'] = 'https://digitalsignage.mersive.com'
display_config['digital_signage'] = signage_config
payload['display'] = display_config

r = requests.patch('https://' + pod_ip + ':5443/v2/config', headers=headers, json=payload, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

Set the enabled value to true to turn on Digital Signage. Note that more properties for digital signage are available than what is demonstrated in the example. See the DigitalSignage schema for additional options.

Change the enabled value to false and execute the code again to disable digital signage.

API Navigation

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

The Solstice Open Control API v2 provides route navigation for children of the /config route. You can navigate the routes using key names with the following pattern: /config/{key_name}. While you have always been able to make updates to the state of the key name values, now you can also perform GETs with the key. This can make your API payloads smaller and easier to parse than navigating the full configuration payload.

Example using /v2/config/sharing route

export POD_IP=Replace with Pod IP address
export ACCESS_TOKEN=Replace with Access Token

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/config/sharing"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/config/sharing', headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

To retrieve the sharing values, you can perform a GET operation to the /v2/config/sharing route.

Solstice Open Control API v2

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Base URLs:

Authentication

Scope Scope Description

Control HDMI Input

POST /config/hdmi_input

Kill/restart HDMI input

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token
PAYLOAD='{"force_off": false}'

curl -k -X POST \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "content-type: application/json" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/config/hdmi_input" \
-d "$PAYLOAD"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'content-type': 'application/json', 'Accept': 'application/json'}
payload = {'force_off': False}

r = requests.post('https://' + pod_ip + ':5443/v2/config/hdmi_input', headers=headers, json=payload, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

Parameters

Name In Type Required Description
body body object true Subset of config to update
» force_off body boolean true none

Example responses

200 Response

{
  "message": "success!"
}

Responses

Status Meaning Description Schema
200 OK Returns success Success
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Calendar

Get calendar entries

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/calendar"
import requests
import datetime

def datetime_to_timestamp(dt) -> int:
    return int(datetime.datetime.strptime(dt, '%Y-%m-%d %H:%M').timestamp())

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/calendar', headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

Example responses

200 Response

{
  "meetings:": []
}

Responses

Status Meaning Description Schema
200 OK Returns calendar meetings configured for pod Success
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Response Schema

Add calendar entry

This operation does not support the "3rd Party Only" calendar type. Use "Set calendar entries" instead.

Code samples

# You can also use wget
curl -X POST https://replace_with_pod_IP_or_host:5443/v2/calendar \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://replace_with_pod_IP_or_host:5443/v2/calendar', headers = headers)

print(r.json())

POST /calendar

Add calendar meeting

Body parameter

{
  "title": "string",
  "organizer": "string",
  "start_time": 0,
  "end_time": 0
}

Parameters

Name In Type Required Description
title body string false none
organizer body string false none
start_time body integer(int64) false none
end_time body integer(int64) false none

Example responses

200 Response

{
  "id": "string"
}

Responses

Status Meaning Description Schema
200 OK Adding calendar meeting was successful Inline
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Response Schema

Set calendar entries

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token

START_TIME_1=$(date --date='07/25/2024 18:00' +'%s')
END_TIME_1=$(date --date='07/25/2024 19:00' +'%s')
START_TIME_2=$(date --date='07/25/2024 19:00' +'%s')
END_TIME_2=$(date --date='07/25/2024 21:30' +'%s')

PAYLOAD="{
    \\"meetings\\": [
        {
            \\"id\\": \\"001\\",
            \\"title\\": \\"Engineering Review\\",
            \\"organizer\\": \\"Mersive\\",
            \\"description\\": \\"Product Demo\\",
            \\"start_time\\": $START_TIME_1,
            \\"end_time\\": $END_TIME_1
        },
        {
            \\"id\\": \\"002\\",
            \\"title\\": \\"Happy Hour\\",
            \\"organizer\\": \\"James Wallace\\",
            \\"description\\": \\"Happy Hour\\",
            \\"start_time\\": $START_TIME_2,
            \\"end_time\\": $END_TIME_2
        }
    ]
}"

curl -k -X PUT \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "content-type: application/json" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/calendar" \
-d "$PAYLOAD"
import requests
import datetime

def datetime_to_timestamp(dt) -> int:
    return int(datetime.datetime.strptime(dt, '%Y-%m-%d %H:%M').timestamp())

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

meetings = {
    'meetings': [
        {
            'id': '001',
            'title': 'Engineering Review',
            'organizer': 'Mersive',
            'description': 'Product Demo',
            'start_time': datetime_to_timestamp('2024-07-25 18:00'),
            'end_time': datetime_to_timestamp('2024-07-25 19:00')
        },
        {
            'id': '002',
            'title': 'Happy Hour',
            'organizer': 'James Wallace',
            'description': 'Happy Hour',
            'start_time': datetime_to_timestamp('2024-07-25 19:00'),
            'end_time': datetime_to_timestamp('2024-07-25 21:30')
        }
    ]
}

headers = {'Authorization': 'Bearer ' + access_token, 'content-type': 'application/json', 'Accept': 'application/json'}

r = requests.put('https://' + pod_ip + ':5443/v2/calendar', headers=headers, json=meetings, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

Example responses

200 Response

{
  "message": "success!",
  "reboot_required": false,
  "restart_required": false
}

PUT /calendar

Set calendar meetings

Body parameter

false

Parameters

Name Type Required Restrictions Description
meetings array true none an array of meeting objects
id string true none none
title string true none none
description string false none none
organizer string true none none
start_time integer true none Unix timestamp
end_time integer true none Unix timestamp

Responses

Status Meaning Description Schema
200 OK Adding calendar meeting was successful Success
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Clear all calendar entries

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token

curl -k -X DELETE \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/calendar"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.delete('https://' + pod_ip + ':5443/v2/calendar', headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

DELETE /calendar

Clear all calendar meetings

Example responses

200 Response

{
  "message": "success!",
  "reboot_required": false,
  "restart_required": false
}

Responses

Status Meaning Description Schema
200 OK Clearing calendar meetings was successful Success
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Get calendar entry

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token
MEETING_ID=Replace with Meeting ID

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/calendar/$MEETING_ID"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'
meeting_id = '<Replace with Meeting ID>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/calendar/' + meeting_id, headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

GET /calendar/{id}

Get calendar meeting with specified id

Parameters

Name In Type Required Description
id path string true Meeting id

Example responses

200 Response

{
  "id": "string",
  "title": "string",
  "organizer": "string",
  "description": "string",
  "start_time": 0,
  "end_time": 0
}

500 Response

{
  "errors": [
    {
      "error": "internal",
      "description": "Failed to find meeting"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Getting calendar meeting was successful Meeting
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Delete calendar entry

This operation does not support the "3rd Party Only" calendar type; use "Set calendar entries" instead.

Code samples

# You can also use wget
curl -X DELETE https://replace_with_pod_IP_or_host:5443/v2/calendar/{id} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://replace_with_pod_IP_or_host:5443/v2/calendar/{id}', headers = headers)

print(r.json())

DELETE /calendar/{id}

Delete calendar meeting with specified id

Parameters

Name In Type Required Description
id path string true Meeting id

Example responses

200 Response

{
  "message": "string",
  "reboot_required": true,
  "restart_required": true
}

Responses

Status Meaning Description Schema
200 OK Deleting calendar meeting was successful Success
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Modify a calendar entry

This operation does not support the "3rd Party Only" calendar type; use "Set calendar entries" instead.

Code samples

# You can also use wget
curl -X PATCH https://replace_with_pod_IP_or_host:5443/v2/calendar/{id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('https://replace_with_pod_IP_or_host:5443/v2/calendar/{id}', headers = headers)

print(r.json())

PATCH /calendar/{id}

Modify calendar meeting with specified id

Body parameter

{
  "id": "string",
  "title": "string",
  "organizer": "string",
  "description": "string",
  "start_time": 0,
  "end_time": 0
}

Parameters

Name In Type Required Description
id path string true Meeting id
body body CalendarEntry true CalendarEntry with only changed fields

Example responses

200 Response

{
  "message": "string",
  "reboot_required": true,
  "restart_required": true
}

Responses

Status Meaning Description Schema
200 OK Modification of the meeting was successful Success
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Config

Get Pod configuration

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/config"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/config', headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

GET /config

The configuration endpoint returns the configuration object for the pod

Example responses

200 Response

{
  "display": {
    "name": "string",
    "splash": {
      "images": [
        {
          "enabled": true,
          "position": 1,
          "image": {
            "hash": "5i3hihsdfhi134",
            "width": 1280,
            "height": 800,
            "format": "jpeg"
          }
        },
        {
          "enabled": true,
          "position": 2,
          "image": {
            "hash": "5GSUIS0EGIQLIG8H",
            "width": 1280,
            "height": 700,
            "format": "png"
          }
        },
        {
          "enabled": false,
          "position": 3,
          "image": null
        },
        {
          "enabled": false,
          "position": 4,
          "image": null
        },
        {
          "enabled": false,
          "position": 5,
          "image": null
        },
        {
          "enabled": false,
          "position": 6,
          "image": null
        }
      ]
    },
    "clock": {
      "show": true,
      "timezone": "string",
      "current_time": "string",
      "show_24_hours": true,
      "ntp_server": {
        "enabled": true,
        "hostname": "string"
      }
    },
    "presence_bar": {
      "show": true,
      "auto_hide": true,
      "show_name": true,
      "show_ip_address": true,
      "show_screenkey": true
    },
    "instructions": {
      "overlay": "hide",
      "custom_text": "string",
      "show_airplay": true,
      "show_miracast": true
    },
    "calendar": {
      "enabled": true,
      "show": true,
      "type": "exchange",
      "update_interval": 0,
      "show_titles": true,
      "show_organizers": true,
      "exchange": {
        "url": "http://example.com",
        "authorization_type": "basic",
        "ntlm_domain": "http://example.com",
        "user_account_unique": "string",
        "user_password_unique": {
          "secret_salt": "string",
          "secret_hash": "string"
        },
        "user_account_shared": "string",
        "user_password_shared": {
          "secret_salt": "string",
          "secret_hash": "string"
        },
        "mailbox_type": "default",
        "impersonation_mailbox": "user@example.com",
        "delegation_mailbox": "user@example.com"
      },
      "o365": {
        "tenant": "string",
        "client_id": "string",
        "client_secret": {
          "secret_salt": "string",
          "secret_hash": "string"
        },
        "username": "string"
      },
      "google": {
        "credentials": {
          "name": "string",
          "data": {
            "secret_salt": "string",
            "secret_hash": "string"
          }
        },
        "room_mailbox": "string"
      }
    },
    "output_mode": "single",
    "input_mode": "standard",
    "input_hdcp_mode": true,
    "license_agree": true,
    "preferred_input": {
      "enabled": true,
      "resolution_options": "1080p"
    },
    "digital_signage": {
      "enabled": true,
      "url": "string",
      "start_after": 0,
      "screen_options": "fullscreen",
      "instruction_options": "network_only"
    },
    "usb_audio_to_hdmi_enabled": true
  },
  "connection": {
    "ethernet": {
      "enabled": true,
      "name": "INTERNAL",
      "vlans": [
        {
          "enabled": true,
          "label": "Guest",
          "tag": 12,
          "ip_configuration": {
            "ip_type": "static",
            "ip_address": "192.168.2.123",
            "gateway": "192.168.10.47",
            "network_prefix_length": 8,
            "dns1": "192.168.1.10",
            "dns2": "192.168.1.20",
            "allow_admin": false
          }
        },
        {
          "enabled": true,
          "label": "Guest",
          "tag": 12,
          "ip_configuration": {
            "ip_type": "dhcp",
            "ip_address": "",
            "gateway": "",
            "network_prefix_length": 0,
            "dns1": "",
            "dns2": "",
            "allow_admin": false
          }
        }
      ],
      "ip_configuration": {
        "ip_type": "static",
        "ip_address": "192.168.1.111",
        "gateway": "192.168.10.47",
        "network_prefix_length": 16,
        "dns1": "192.168.1.10",
        "dns2": "192.168.1.20",
        "allow_admin": false
      },
      "enterprise_configuration": {
        "eap_method": "TTLS",
        "phase2_auth": "none",
        "ca_certificate": "",
        "tls_user_certificate": "",
        "identity": "",
        "password": ""
      }
    }
  },
  "security": {
    "admin_password": {
      "secret_salt": "string",
      "secret_hash": "string"
    },
    "enforce_admin_password_validation_rules": true,
    "allow_local_configuration": true,
    "allow_web_browser_configuration": true,
    "deliver_app_on_443": true,
    "disable_icmp_ping_replies": true,
    "disable_captive_portal": true,
    "https_quick_connect_redirect": true,
    "encryption_enabled": true,
    "display_certificate": {
      "cert": {
        "name": "string",
        "data": {
          "secret_salt": "string",
          "secret_hash": "string"
        }
      },
      "key": {
        "name": "string",
        "data": {
          "secret_salt": "string",
          "secret_hash": "string"
        }
      },
      "password": {
        "secret_salt": "string",
        "secret_hash": "string"
      }
    },
    "use_ca_certificate_bundle": true,
    "ca_certificate_bundle": {
      "name": "string",
      "data": "string"
    }
  },
  "locale": {
    "language": "string"
  },
  "maintenance": {
    "daily_restart": {
      "enabled": true,
      "time": "string"
    },
    "power_management": {
      "occupancy_enabled": true,
      "occupancy_delay_minutes": 0,
      "off_hours_enabled": true,
      "weekend": {
        "suspend_after": 0,
        "all_day": true,
        "start_time": "string",
        "end_time": "string"
      },
      "weekday": {
        "suspend_after": 0,
        "all_day": true,
        "start_time": "string",
        "end_time": "string"
      },
      "control": {
        "control_method": "hdmi",
        "command_display_on": "string",
        "command_display_off": "string"
      },
      "force_suspend": true
    }
  },
  "sharing": {
    "moderator_mode_disallowed": true,
    "multi_room_enabled": true,
    "miracast": {
      "wifi_direct_enabled": true,
      "infrastructure_enabled": true
    },
    "android_mirroring_enabled": true,
    "airplay": {
      "enabled": true,
      "proxy_enabled": true,
      "bluetooth_enabled": true
    },
    "quick_connect_action": "launch_and_connect",
    "alignment": "grid",
    "browser_look_in": "enabled",
    "webrtc_enabled": true,
    "relay_enabled": true
  },
  "room_services": {
    "location_services": {
      "enabled": true
    },
    "occupancy_counting": {
      "enabled": true,
      "auto_reserve_enabled": true
    },
    "workplace_discovery": {
      "enabled": true
    }
  },
  "kepler": {
    "enabled": true,
    "secret_key": {
      "secret_salt": "string",
      "secret_hash": "string"
    }
  },
  "conference": {
    "url_parsing": {
      "property1": "string",
      "property2": "string"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK The current Solstice configuration Config
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Get legacy Pod configuration

Code samples

GET /config

This configuration endpoint returns the V1 API configuration object for the pod, as documented here.

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/api/config"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/api/config', headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

Update configuration

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token
ROLLBACK_TIMEOUT=30

# This may be the entirety or a subset of the configuration object.
PAYLOAD='{
    "sharing": {
        "airplay": {
            "bluetooth_enabled": false,
            "enabled": potato,
            "proxy_enabled": false
        }
    }
}'

curl -k -X PATCH \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "content-type: application/json" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/config?rollback_timeout_seconds=$ROLLBACK_TIMEOUT" \
-d "$PAYLOAD"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'content-type': 'application/json', 'Accept': 'application/json'}

# This may be the entirety or a subset of the configuration object.
payload = {
    'sharing': {
        'airplay': {
            'bluetooth_enabled': False,
            'enabled': True,
            'proxy_enabled': False
        }
    }
}

r = requests.patch('https://' + pod_ip + ':5443/v2/config?rollback_timeout_seconds=30', headers=headers, json=payload, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

PATCH /config

Update the Solstice Pod configuration

Body parameter

{
  # This may be the entirety or a subset of the pod configuration object.
  "display": {
    "name": "string",
    "splash": {
      "images": [
        {
          "enabled": true,
          "position": 1,
          "image": {
            "hash": "5i3hihsdfhi134",
            "width": 1280,
            "height": 800,
            "format": "jpeg"
          }
        },
        {
          "enabled": true,
          "position": 2,
          "image": {
            "hash": "5GSUIS0EGIQLIG8H",
            "width": 1280,
            "height": 700,
            "format": "png"
          }
        },
        {
          "enabled": false,
          "position": 3,
          "image": null
        },
        {
          "enabled": false,
          "position": 4,
          "image": null
        },
        {
          "enabled": false,
          "position": 5,
          "image": null
        },
        {
          "enabled": false,
          "position": 6,
          "image": null
        }
      ]
    },
    "clock": {
      "show": true,
      "timezone": "string",
      "current_time": "string",
      "show_24_hours": true,
      "ntp_server": {
        "enabled": true,
        "hostname": "string"
      }
    },
    "presence_bar": {
      "show": true,
      "auto_hide": true,
      "show_name": true,
      "show_ip_address": true,
      "show_screenkey": true
    },
    "instructions": {
      "overlay": "hide",
      "custom_text": "string",
      "show_airplay": true,
      "show_miracast": true
    },
    "calendar": {
      "enabled": true,
      "show": true,
      "type": "exchange",
      "update_interval": 0,
      "show_titles": true,
      "show_organizers": true,
      "exchange": {
        "url": "http://example.com",
        "authorization_type": "basic",
        "ntlm_domain": "http://example.com",
        "user_account_unique": "string",
        "user_password_unique": {
          "secret": "string"
        },
        "user_account_shared": "string",
        "user_password_shared": {
          "secret": "string"
        },
        "mailbox_type": "default",
        "impersonation_mailbox": "user@example.com",
        "delegation_mailbox": "user@example.com"
      },
      "o365": {
        "tenant": "string",
        "client_id": "string",
        "client_secret": {
          "secret": "string"
        },
        "username": "string"
      },
      "google": {
        "credentials": {
          "name": "string",
          "data": {
            "secret": "string"
          }
        },
        "room_mailbox": "string"
      }
    },
    "output_mode": "single",
    "input_mode": "standard",
    "input_hdcp_mode": true,
    "license_agree": true,
    "preferred_input": {
      "enabled": true,
      "resolution_options": "1080p"
    },
    "digital_signage": {
      "enabled": true,
      "url": "string",
      "start_after": 0,
      "screen_options": "fullscreen",
      "instruction_options": "network_only"
    },
    "usb_audio_to_hdmi_enabled": true
  },
  "connection": {
    "ethernet": {
      "enabled": true,
      "name": "INTERNAL",
      "vlans": [
        {
          "enabled": true,
          "label": "Guest",
          "tag": 12,
          "ip_configuration": {
            "ip_type": "static",
            "ip_address": "192.168.2.123",
            "gateway": "192.168.10.47",
            "network_prefix_length": 8,
            "dns1": "192.168.1.10",
            "dns2": "192.168.1.20",
            "allow_admin": false
          }
        },
        {
          "enabled": true,
          "label": "Guest",
          "tag": 12,
          "ip_configuration": {
            "ip_type": "dhcp",
            "ip_address": "",
            "gateway": "",
            "network_prefix_length": 0,
            "dns1": "",
            "dns2": "",
            "allow_admin": false
          }
        }
      ],
      "ip_configuration": {
        "ip_type": "static",
        "ip_address": "192.168.1.111",
        "gateway": "192.168.10.47",
        "network_prefix_length": 16,
        "dns1": "192.168.1.10",
        "dns2": "192.168.1.20",
        "allow_admin": false
      },
      "enterprise_configuration": {
        "eap_method": "TTLS",
        "phase2_auth": "none",
        "ca_certificate": "",
        "tls_user_certificate": "",
        "identity": "",
        "password": ""
      }
    }
  },
  "security": {
    "admin_password": {
      "secret": "string"
    },
    "enforce_admin_password_validation_rules": true,
    "allow_local_configuration": true,
    "allow_web_browser_configuration": true,
    "deliver_app_on_443": true,
    "disable_icmp_ping_replies": true,
    "disable_captive_portal": true,
    "https_quick_connect_redirect": true,
    "encryption_enabled": true,
    "display_certificate": {
      "cert": {
        "name": "string",
        "data": {
          "secret": "string"
        }
      },
      "key": {
        "name": "string",
        "data": {
          "secret": "string"
        }
      },
      "password": {
        "secret": "string"
      }
    },
    "use_ca_certificate_bundle": true,
    "ca_certificate_bundle": {
      "name": "string",
      "data": "string"
    }
  },
  "locale": {
    "language": "string"
  },
  "maintenance": {
    "daily_restart": {
      "enabled": true,
      "time": "string"
    },
    "power_management": {
      "occupancy_enabled": true,
      "occupancy_delay_minutes": 0,
      "off_hours_enabled": true,
      "weekend": {
        "suspend_after": 0,
        "all_day": true,
        "start_time": "string",
        "end_time": "string"
      },
      "weekday": {
        "suspend_after": 0,
        "all_day": true,
        "start_time": "string",
        "end_time": "string"
      },
      "control": {
        "control_method": "hdmi",
        "command_display_on": "string",
        "command_display_off": "string"
      },
      "force_suspend": true
    }
  },
  "sharing": {
    "moderator_mode_disallowed": true,
    "multi_room_enabled": true,
    "miracast": {
      "wifi_direct_enabled": true,
      "infrastructure_enabled": true
    },
    "android_mirroring_enabled": true,
    "airplay": {
      "enabled": true,
      "proxy_enabled": true,
      "bluetooth_enabled": true
    },
    "quick_connect_action": "launch_and_connect",
    "alignment": "grid",
    "browser_look_in": "enabled",
    "webrtc_enabled": true,
    "relay_enabled": true
  },
  "room_services": {
    "location_services": {
      "enabled": true
    },
    "occupancy_counting": {
      "enabled": true,
      "auto_reserve_enabled": true
    },
    "workplace_discovery": {
      "enabled": true
    }
  },
  "kepler": {
    "enabled": true,
    "secret_key": {
      "secret": "string"
    }
  },
  "conference": {
    "url_parsing": {
      "property1": "string",
      "property2": "string"
    }
  }
}

Parameters

Name In Type Required Description
rollback_timeout_seconds query integer false Timeout in seconds after which to roll back any networking changes if the Kepler Local Monitoring Service is unable to connect to Kepler (default: no timeout)
body body Config true Subset of config to update

Example responses

200 Response

{
  "device_id": "string",
  "message": "success!"
}

Responses

Status Meaning Description Schema
200 OK Patch applied successfully PatchSuccess
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Get splash screen image

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token
POSITION=Replace with Image Position
ASPECT=Replace with Image Aspect Ratio
OUTPUT_FILE=Replace with Output File Name

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: image/*" \
"https://$POD_IP:5443/v2/config/display/splash/images/$POSITION/$ASPECT" \
-o $OUTPUT_FILE
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'
position = '<Replace with Image Position>'
aspect = '<Replace with Image Aspect Ratio>'
output_file = '<Replace with Output File Name>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'image/*'}

r = requests.get('https://' + pod_ip + ':5443/v2/config/display/splash/images/' + position + '/' + aspect, headers=headers, verify=False, timeout=10)
image = r.content

print(f'Status code: {r.status_code}')

with open(output_file, 'wb') as file:
    file.write(image)

GET /config/display/splash/images/{position}/{aspect}

Parameters

Name In Type Required Description
position path integer true The position of the image in the splash images collection.
aspect path string true The aspect ratio of the image in the splash images collection.

Enumerated Values

Parameter Value
aspect 16x9
aspect 32x9

Example responses

200 Response

400 Response

{
  "errors": [
    {
      "error": "invalid_request",
      "description": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Provide image data for an image at a specified image placeholder string(binary)
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Upload splash screen image

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token
POSITION=Replace with Image Position
ASPECT=Replace with Image Aspect Ratio
IMAGE_FILE=Replace with Image File Name

curl -k -X PATCH \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "content-type: image/jpeg" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/config/display/splash/images/$POSITION/$ASPECT" \
--data-binary "@$IMAGE_FILE"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'
image_file_path = '<Replace with Image File Path>'
position = '<Replace with Image Position>'
aspect = '<Replace with Image Aspect Ratio>'

headers = {'Authorization': 'Bearer ' + access_token, 'content-type': 'image/jpeg', 'Accept': 'application/json'}

with open(image_file_path, 'rb') as image_file:
    payload = image_file.read()

r = requests.patch('https://' + pod_ip + ':5443/v2/config/display/splash/images/' + position + '/' + aspect, headers=headers, data=payload, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

PATCH /config/display/splash/images/{position}/{aspect}

Body parameter

Parameters

Name In Type Required Description
body body string(binary) true Upload image bytes of the image at the specified image position
position path integer true The position of the image in the splash images collection.
aspect path string true The aspect ratio of the image in the splash images collection.

Enumerated Values

Parameter Value
aspect 16x9
aspect 32x9

Example responses

400 Response

{
  "errors": [
    {
      "error": "invalid_request",
      "description": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Image resource has been updated None
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Camera Firmware

Report STATUS for Logitech cameras

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/control/cameras/status"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/control/cameras/status', headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

GET /control/cameras/status

Example responses

200 Response

{
  "updateStatus": "idle"
}

Responses

Status Meaning Description Schema
200 OK firmware update status FirmwareStatus
401 Unauthorized Bad authorization token Errors
404 Not Found Status of attached camera None
default Default An unexpected error Errors

Report VERSION for Logitech cameras

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token
CAMERA_GUID=Replace with Camera GUID

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/control/cameras/$CAMERA_GUID"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'
camera_guid = '<Replace with Camera GUID>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/control/cameras/' + camera_guid, headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

GET /control/cameras/{guid}

Parameters

Name In Type Required Description
guid path string(uuid) true GUID of an attached camera

Example responses

200 Response

{
  "videoVersion": "string",
  "audioVersion": "string",
  "eepromVersion": "string",
  "bluetoothVersion": "string",
  "tablehubVersion": "string",
  "videoFirmware": "string",
  "audioFirmware": "string",
  "eepromFirmware": "string",
  "bluetoothFirmware": "string",
  "tablehubFirmware": "string",
  "updateAvailable": true
}

404 Response

{
  "errors": [
    {
      "error": "not_found",
      "description": "unknown camera specified!"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK specified camera version FirmwareVersion
401 Unauthorized Bad authorization token Errors
404 Not Found Version of attached camera None
default Default An unexpected error Errors

UPDATE attached camera firmware

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token
PAYLOAD='{"forceUpdate": true}'

curl -k -X PATCH \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "content-type: application/json" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/control/cameras/{GUID}" \
-d "$PAYLOAD"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'
camera_guid = '<Replace with Camera GUID>'

headers = {'Authorization': 'Bearer ' + access_token, 'content-type': 'application/json', 'Accept': 'application/json'}
payload = {'forceUpdate': True}

r = requests.patch('https://' + pod_ip + ':5443/v2/control/cameras/' + camera_guid, headers=headers, json=payload, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

PATCH /control/cameras/{guid}

Body parameter

{
  "forceUpdate": true
}

Parameters

Name In Type Required Description
body body FirmwareUpdate true Request camera firmware update
guid path string(uuid) true GUID of an attached camera

Example responses

404 Response

{
  "errors": [
    {
      "error": "not_found",
      "description": "unknown camera specified!"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Update camera firmware initiated None
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Info

Get information about the pod

NOTE: This requires Solstice 6.2 or higher.

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/info"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/info', headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

GET /info

Retrieve configuration information about the pod. Primarily returns network information.

Example responses

200 Response

{
  "connection": {
    "ethernet": {
      "dns1": "string",
      "dns2": "string",
      "gateway": "string",
      "hostname": "string",
      "ip_address": "string",
      "ip_type": "string",
      "mac_address": "string"
    },
    "wifi": {
      "dns1": "string",
      "dns2": "string",
      "gateway": "string",
      "hostname": "string",
      "ip_address": "string",
      "ip_type": "string",
      "mac_address": "string",
      "wifi_signal": {
        "signal_quality": "string",
        "signal_strength": 0,
        "signal_units": "dBm"
      }
    },
    "vlans": {
      "property1": {
        "ip_type": "string",
        "ip_address": "string",
        "gateway": "string",
        "dns1": "string",
        "dns2": "string",
        "hostname": "string",
        "mac_address": "string"
      }
    }
  },
  "usb_audio_devices": [
    "string"
  ],
  "wap_channels": {
    "channels_2_4G": [
      0
    ],
    "channels_5G": [
      0
    ]
  }
}

Responses

Status Meaning Description Schema
200 OK Return read-only configuration Info
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Screen key verification

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token
PAYLOAD='{"screen_key": ""}'

curl -k -X POST \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "content-type: application/json" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/info/screen_key" \
-d "$PAYLOAD" \
-w "%{http_code}\n"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'
screen_key = '<Replace with Pod Screen key>'

headers = {'content-type': 'application/json', 'Accept': 'application/json'}
payload = {'screen_key': screen_key}

r = requests.post('https://' + pod_ip + ':5443/v2/info/screen_key', headers=headers, json=payload, verify=False)

print(f'Status code: {r.status_code}')

POST /info

Verify that the screen key submitted is the valid screen key. Used by the Active Learning client.

Body parameter

{
  "screen_key": "string"
}

Parameters

Name In Type Required Description
body body object true Post screen key to verify if it matches pod
» screen_key body string false none

Example responses

400 Response

{
  "errors": [
    {
      "error": "invalid_request",
      "description": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Screen key is valid None
400 Bad Request Bad request (e.g. malformed request body) Errors
401 Unauthorized Bad authorization token Errors
404 Not Found Screen key is not valid None
default Default An unexpected error Errors

Pod Metadata

Get metadata about display

Code samples

POD_IP=Replace with Pod IP address
ACCESS_TOKEN=Replace with Access Token

curl -k -X GET \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/metadata"
import requests

pod_ip = '<Replace with Pod IP address>'
access_token = '<Replace with Access Token>'

headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json'}

r = requests.get('https://' + pod_ip + ':5443/v2/metadata', headers=headers, verify=False)

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')

GET /metadata

Example responses

200 Response

{
  "device_id": "string"
}

Responses

Status Meaning Description Schema
200 OK Metadata payload Metadata
401 Unauthorized Bad authorization token Errors
default Default An unexpected error Errors

Token

Request a token

Code samples

POD_IP=Replace with Pod IP address
PASSWORD=Replace with Pod Password

curl -k -X POST \
--header "content-type: application/x-www-form-urlencoded" \
--header "Accept: application/json" \
"https://$POD_IP:5443/v2/token" \
-d "grant_type=password&username=admin&password=$PASSWORD"
import requests

pod_ip = '<Replace with Pod IP address>'
password = '<Replace with Pod Password>'

headers = {'content-type': 'application/x-www-form-urlencoded', 'Accept': 'application/json'}
payload = f'grant_type=password&username=admin&password={password}'

r = requests.post('https://' + pod_ip + ':5443/v2/token', headers=headers, data=payload, verify=False)

access_token = r.json()['access_token']

print(f'Status code: {r.status_code}')
print(f'Response: {r.json()}')
print(f'Access Token: {access_token}')

POST /token

Request a bearer token for the v2 API

Parameters

Name In Type Required Description
grant_type query string true Authentication type, this will always be "password"
username query string true Admin username for pod
password query string true Admin password for pod

Example responses

200 Response

{
  "access_token": "string",
  "token_type": "jwt"
}

Responses

Status Meaning Description Schema
200 OK OAuth 2.0 access token response Token
400 Bad Request Bad request (e.g. malformed body) TokenError
401 Unauthorized Invalid credentials TokenError
default Default An unexpected error Errors

Schemas

Audio

{
   "usb": {
     "microphone": {
       "override": string
     },
     "speaker": {
       "override": string
     }
   }
 }
 

Properties

Name Type Required Restrictions Description
usb object false none none
»microphone object false none none
» »override string false none none
»speaker object false none none
» »override string false none none

Conference

{
   "url_parsing": {
   }
 }
 

Properties

Name Type Required Restrictions Description
url_parsing object false none none

Config

{
   "audio": object,
   "conference": object,
   "connection": object,
   "debug": object,
   "display": object,
   "kepler": object,
   "locale": object,
   "maintenance": object,
   "room_services": object,
   "security": object,
   "sharing": object
 }
 

Properties

Name Type Required Restrictions Description
audio Audio false none none
conference Conference false none none
connection Connection false none none
debug Debug false none none
display Display false none none
kepler Kepler false none none
locale Locale false none none
maintenance Maintenance false none none
room_services RoomServices false none none
security Security false none none
sharing Sharing false none none

Connection

{
   "discovery": {
     "broadcast": boolean,
     "publish_to_sds": boolean,
     "sds_hosts": {
       "0": {
         "hostname": string
       },
       "1": {
         "hostname": string
       },
       "2": {
         "hostname": string
       },
       "3": {
         "hostname": string
       },
       "4": {
         "hostname": string
       }
     }
   },
   "ethernet": {
     "enabled": boolean,
     "enterprise_configuration": {
       "ca_certificate": {
         "data": string,
         "name": string
       },
       "eap_method": string,
       "identity": string,
       "password": {
         "secret_hash": string,
         "secret_salt": string
       },
       "phase2_auth": string,
       "tls_user_certificate": {
         "cert": {
           "data": {
             "secret_hash": string,
             "secret_salt": string
           },
           "name": string
         }
       }
     },
     "ip_configuration": {
       "allow_admin": boolean,     
       "dns1": string,
       "dns2": string,
       "gateway": string,
       "hostname": string,
       "ip_address": string,       
       "ip_type": string,
       "network_prefix_length": integer
     },
     "name": string,
     "vlans": {
       "0": {
         "enabled": boolean,       
         "ip_configuration": {
           "allow_admin": boolean, 
           "dns1": string,
           "dns2": string,
           "gateway": string,      
           "hostname": string,     
           "ip_address": string,   
           "ip_type": string,      
           "network_prefix_length": integer
         },
         "label": string,
         "tag": integer
       },
       "1": {
         "enabled": boolean,       
         "ip_configuration": {
           "allow_admin": boolean, 
           "dns1": string,
           "dns2": string,
           "gateway": string,      
           "hostname": string,     
           "ip_address": string,   
           "ip_type": string,      
           "network_prefix_length": integer
         },
         "label": string,
         "tag": integer
       },
       "2": {
         "enabled": boolean,       
         "ip_configuration": {
           "allow_admin": boolean, 
           "dns1": string,
           "dns2": string,
           "gateway": string,      
           "hostname": string,     
           "ip_address": string,   
           "ip_type": string,      
           "network_prefix_length": integer
         },
         "label": string,
         "tag": integer
       }
     }
   },
   "gateway_check_enabled": boolean,
   "host_name": string,
   "http_proxy": {
     "bypass_on_same_subnet": boolean,
     "enabled": boolean,
     "exclusion_list": string,     
     "hostname": string,
     "password": {
       "secret_hash": string,      
       "secret_salt": string       
     },
     "port": integer,
     "username": string
   },
   "https_proxy": {
     "bypass_on_same_subnet": boolean,
     "enabled": boolean,
     "exclusion_list": string,     
     "hostname": string,
     "password": {
       "secret_hash": string,      
       "secret_salt": string       
     },
     "port": integer,
     "username": string
   },
   "lldp": {
     "enabled": boolean,
     "poe_enabled": boolean        
   },
   "qos": {
     "audio_dscp": string,
     "enabled": boolean,
     "video_dscp": string
   },
   "wifi": {
     "mode": string,
     "wap": {
       "channel": integer,
       "hide_ssid": boolean,       
       "hostname": string,
       "password": {
         "secret_hash": string,    
         "secret_salt": string     
       },
       "protocol": string,
       "ssid": string
     },
     "wifi_client": {
       "enterprise_configuration": {
         "ca_certificate": {
           "data": string,
           "name": string
         },
         "eap_method": string,     
         "identity": string,       
         "password": {
           "secret_hash": string,  
           "secret_salt": string   
         },
         "phase2_auth": string,    
         "tls_user_certificate": {
           "cert": {
             "data": {
               "secret_hash": string,
               "secret_salt": string
             },
             "name": string        
           }
         }
       },
       "ip_configuration": {
         "allow_admin": boolean,   
         "dns1": string,
         "dns2": string,
         "gateway": string,        
         "hostname": string,       
         "ip_address": string,     
         "ip_type": string,        
         "network_prefix_length": integer
       },
       "protocol": string,
       "ssid": string
     }
   }
 }
 

Properties

Name Type Required Restrictions Description
discovery object false none none
»broadcast boolean false none none
»publish_to_sds boolean false none none
»sds_hosts object false none none
» »0 object false none none
» » »hostname string false none none
» »1 object false none none
» » »hostname string false none none
» »2 object false none none
» » »hostname string false none none
» »3 object false none none
» » »hostname string false none none
» »4 object false none none
» » »hostname string false none none
ethernet object false none none
»enabled boolean false none none
»enterprise_configuration object false none none
» »ca_certificate object false none none
» » »data string false none none
» » »name string false none none
» »eap_method string false none none
» »identity string false none none
» »password object false none none
» » »secret_hash string false none none
» » »secret_salt string false none none
» »phase2_auth string false none none
» »tls_user_certificate object false none none
» » »cert object false none none
» » » »data object false none none
» » » » »secret_hash string false none none
» » » » »secret_salt string false none none
» » » »name string false none none
»ip_configuration object false none none
» »allow_admin boolean false none none
» »dns1 string false none none
» »dns2 string false none none
» »gateway string false none none
» »hostname string false none none
» »ip_address string false none none
» »ip_type string false none none
» »network_prefix_length integer false none none
»name string false none none
»vlans object false none none
» »0 object false none none
» » »enabled boolean false none none
» » »ip_configuration object false none none
» » » »allow_admin boolean false none none
» » » »dns1 string false none none
» » » »dns2 string false none none
» » » »gateway string false none none
» » » »hostname string false none none
» » » »ip_address string false none none
» » » »ip_type string false none none
» » » »network_prefix_length integer false none none
» » »label string false none none
» » »tag integer false none none
» »1 object false none none
» » »enabled boolean false none none
» » »ip_configuration object false none none
» » » »allow_admin boolean false none none
» » » »dns1 string false none none
» » » »dns2 string false none none
» » » »gateway string false none none
» » » »hostname string false none none
» » » »ip_address string false none none
» » » »ip_type string false none none
» » » »network_prefix_length integer false none none
» » »label string false none none
» » »tag integer false none none
» »2 object false none none
» » »enabled boolean false none none
» » »ip_configuration object false none none
» » » »allow_admin boolean false none none
» » » »dns1 string false none none
» » » »dns2 string false none none
» » » »gateway string false none none
» » » »hostname string false none none
» » » »ip_address string false none none
» » » »ip_type string false none none
» » » »network_prefix_length integer false none none
» » »label string false none none
» » »tag integer false none none
gateway_check_enabled boolean false none none
host_name string false none none
http_proxy object false none none
»bypass_on_same_subnet boolean false none none
»enabled boolean false none none
»exclusion_list string false none none
»hostname string false none none
»password object false none none
» »secret_hash string false none none
» »secret_salt string false none none
»port integer false none none
»username string false none none
https_proxy object false none none
»bypass_on_same_subnet boolean false none none
»enabled boolean false none none
»exclusion_list string false none none
»hostname string false none none
»password object false none none
» »secret_hash string false none none
» »secret_salt string false none none
»port integer false none none
»username string false none none
lldp object false none none
»enabled boolean false none none
»poe_enabled boolean false none none
qos object false none none
»audio_dscp string false none none
»enabled boolean false none none
»video_dscp string false none none
wifi object false none none
»mode string false none none
»wap object false none none
» »channel integer false none none
» »hide_ssid boolean false none none
» »hostname string false none none
» »password object false none none
» » »secret_hash string false none none
» » »secret_salt string false none none
» »protocol string false none none
» »ssid string false none none
»wifi_client object false none none
» »enterprise_configuration object false none none
» » »ca_certificate object false none none
» » » »data string false none none
» » » »name string false none none
» » »eap_method string false none none
» » »identity string false none none
» » »password object false none none
» » » »secret_hash string false none none
» » » »secret_salt string false none none
» » »phase2_auth string false none none
» » »tls_user_certificate object false none none
» » » »cert object false none none
» » » » »data object false none none
» » » » » »secret_hash string false none none
» » » » » »secret_salt string false none none
» » » » »name string false none none
» »ip_configuration object false none none
» » »allow_admin boolean false none none
» » »dns1 string false none none
» » »dns2 string false none none
» » »gateway string false none none
» » »hostname string false none none
» » »ip_address string false none none
» » »ip_type string false none none
» » »network_prefix_length integer false none none
» »protocol string false none none
» »ssid string false none none

Debug

{
   "fd_monitoring": {
     "enabled": boolean,
     "period_seconds": integer,    
     "process_names": {
     }
   }
 }
 

Properties

Name Type Required Restrictions Description
fd_monitoring object false none none
»enabled boolean false none none
»period_seconds integer false none none
»process_names object false none none

Display

{
   "calendar": {
     "enabled": boolean,
     "exchange": {
       "authorization_type": string,
       "delegation_mailbox": string,
       "impersonation_mailbox": string,
       "mailbox_type": string,     
       "ntlm_domain": string,      
       "url": string,
       "user_account_shared": string,
       "user_account_unique": string,
       "user_password_shared": {
         "secret_hash": string,    
         "secret_salt": string     
       },
       "user_password_unique": {
         "secret_hash": string,    
         "secret_salt": string     
       }
     },
     "google": {
       "credentials": {
         "data": {
           "secret_hash": string,  
           "secret_salt": string   
         },
         "name": string
       },
       "room_mailbox": string      
     },
     "o365": {
       "client_id": string,        
       "client_secret": {
         "secret_hash": string,    
         "secret_salt": string     
       },
       "tenant": string,
       "username": string
     },
     "show": boolean,
     "show_organizers": boolean,   
     "show_titles": boolean,       
     "type": string,
     "update_interval": integer    
   },
   "clock": {
     "current_time": string,       
     "ntp_server": {
       "enabled": boolean,
       "hostname": string
     },
     "show": boolean,
     "show_24_hours": boolean,     
     "timezone": string
   },
   "digital_signage": {
     "enabled": boolean,
     "external_caching_enabled": boolean,
     "instruction_options": string,
     "screen_options": string,     
     "start_after": integer,       
     "url": string
   },
   "display_message_enabled": boolean,
   "first_run": {
     "completed": boolean
   },
   "input_hdcp_mode": boolean,     
   "input_mode": string,
   "instructions": {
     "custom_text": string,        
     "overlay": string,
     "show_airplay": boolean,      
     "show_miracast": boolean      
   },
   "license_agree": boolean,       
   "name": string,
   "output_mode": string,
   "preferred_input": {
     "enabled": boolean,
     "resolution_options": string  
   },
   "presence_bar": {
     "auto_hide": boolean,
     "show": boolean,
     "show_ip_address": boolean,   
     "show_name": boolean,
     "show_screenkey": boolean     
   },
   "splash": {
     "foreground_color": string,   
     "images": {
       "0": {
         "16x9": {
           "hash": string
         },
         "32x9": {
           "hash": string
         },
         "enabled": boolean        
       },
       "1": {
         "16x9": {
           "hash": string
         },
         "32x9": {
           "hash": string
         },
         "enabled": boolean        
       },
       "2": {
         "16x9": {
           "hash": string
         },
         "32x9": {
           "hash": string
         },
         "enabled": boolean        
       },
       "3": {
         "16x9": {
           "hash": string
         },
         "32x9": {
           "hash": string
         },
         "enabled": boolean        
       },
       "4": {
         "16x9": {
           "hash": string
         },
         "32x9": {
           "hash": string
         },
         "enabled": boolean        
       },
       "5": {
         "16x9": {
           "hash": string
         },
         "32x9": {
           "hash": string
         },
         "enabled": boolean        
       }
     },
     "is_modern": boolean,
     "messaging": {
       "custom_message": {
         "enabled": boolean,       
         "text": string
       },
       "emergency_message": {
         "enabled": boolean,       
         "text": string
       },
       "rss_feed_count": integer,  
       "rss_feeds": {
         "0": {
           "duration": integer,    
           "enabled": boolean,     
           "title": string,        
           "url": string
         },
         "1": {
           "duration": integer,    
           "enabled": boolean,     
           "title": string,        
           "url": string
         }
       }
     },
     "screen_key": {
       "enabled": boolean,
       "show": boolean,
       "speak": boolean
     },
     "should_animate_background": boolean,
     "show_fully_qualified_name": boolean,
     "show_hostname_instead_of_ip": boolean,
     "show_name": boolean,
     "show_wifi": boolean
   },
   "usb_audio_to_hdmi_enabled": boolean
 }
 

Properties

Name Type Required Restrictions Description
calendar object false none none
»enabled boolean false none none
»exchange object false none none
» »authorization_type string false none none
» »delegation_mailbox string false none none
» »impersonation_mailbox string false none none
» »mailbox_type string false none none
» »ntlm_domain string false none none
» »url string false none none
» »user_account_shared string false none none
» »user_account_unique string false none none
» »user_password_shared object false none none
» » »secret_hash string false none none
» » »secret_salt string false none none
» »user_password_unique object false none none
» » »secret_hash string false none none
» » »secret_salt string false none none
»google object false none none
» »credentials object false none none
» » »data object false none none
» » » »secret_hash string false none none
» » » »secret_salt string false none none
» » »name string false none none
» »room_mailbox string false none none
»o365 object false none none
» »client_id string false none none
» »client_secret object false none none
» » »secret_hash string false none none
» » »secret_salt string false none none
» »tenant string false none none
» »username string false none none
»show boolean false none none
»show_organizers boolean false none none
»show_titles boolean false none none
»type string false none none
»update_interval integer false none none
clock object false none none
»current_time string false none none
»ntp_server object false none none
» »enabled boolean false none none
» »hostname string false none none
»show boolean false none none
»show_24_hours boolean false none none
»timezone string false none none
digital_signage object false none none
»enabled boolean false none none
»external_caching_enabled boolean false none none
»instruction_options string false none none
»screen_options string false none none
»start_after integer false none none
»url string false none none
display_message_enabled boolean false none none
first_run object false none none
»completed boolean false none none
input_hdcp_mode boolean false none none
input_mode string false none none
instructions object false none none
»custom_text string false none none
»overlay string false none none
»show_airplay boolean false none none
»show_miracast boolean false none none
license_agree boolean false none none
name string false none none
output_mode string false none none
preferred_input object false none none
»enabled boolean false none none
»resolution_options string false none none
presence_bar object false none none
»auto_hide boolean false none none
»show boolean false none none
»show_ip_address boolean false none none
»show_name boolean false none none
»show_screenkey boolean false none none
splash object false none none
»foreground_color string false none none
»images object false none none
» »0 object false none none
» » »16x9 object false none none
» » » »hash string false none none
» » »32x9 object false none none
» » » »hash string false none none
» » »enabled boolean false none none
» »1 object false none none
» » »16x9 object false none none
» » » »hash string false none none
» » »32x9 object false none none
» » » »hash string false none none
» » »enabled boolean false none none
» »2 object false none none
» » »16x9 object false none none
» » » »hash string false none none
» » »32x9 object false none none
» » » »hash string false none none
» » »enabled boolean false none none
» »3 object false none none
» » »16x9 object false none none
» » » »hash string false none none
» » »32x9 object false none none
» » » »hash string false none none
» » »enabled boolean false none none
» »4 object false none none
» » »16x9 object false none none
» » » »hash string false none none
» » »32x9 object false none none
» » » »hash string false none none
» » »enabled boolean false none none
» »5 object false none none
» » »16x9 object false none none
» » » »hash string false none none
» » »32x9 object false none none
» » » »hash string false none none
» » »enabled boolean false none none
»is_modern boolean false none none
»messaging object false none none
» »custom_message object false none none
» » »enabled boolean false none none
» » »text string false none none
» »emergency_message object false none none
» » »enabled boolean false none none
» » »text string false none none
» »rss_feed_count integer false none none
» »rss_feeds object false none none
» » »0 object false none none
» » » »duration integer false none none
» » » »enabled boolean false none none
» » » »title string false none none
» » » »url string false none none
» » »1 object false none none
» » » »duration integer false none none
» » » »enabled boolean false none none
» » » »title string false none none
» » » »url string false none none
»screen_key object false none none
» »enabled boolean false none none
» »show boolean false none none
» »speak boolean false none none
»should_animate_background boolean false none none
»show_fully_qualified_name boolean false none none
»show_hostname_instead_of_ip boolean false none none
»show_name boolean false none none
»show_wifi boolean false none none
usb_audio_to_hdmi_enabled boolean false none none

Errors

{
   "errors": [
     {
       "error": string,
       "description": string
     }
   ]
 }
 

Properties

Name Type Restrictions Description
errors array none none
error string none none
description string none none

Enumerated Values

Property Value
error invalid_request
error not_found
error resource_conflict
error path_failed
error internal
error not_licensed
error invalid_token

FirmwareStatus

{
   "updateStatus": string
 }
 

Properties

Name Type Required Restrictions Description
updateStatus string false none none

Firmwareversion

{
   "videoVersion": string,
   "audioVersion": string,
   "eepromVersion": string,
   "bluetoothVersion": string,      
   "tablehubVersion": string,       
   "videoFirmware": string,
   "audioFirmware": string,
   "eepromFirmware": string,        
   "bluetoothFirmware": string,     
   "tablehubFirmware": string,      
   "updateAvailable": boolean       
 }
 

Properties

Name Type Required Restrictions Description
videoVersion string false none none
audioVersion string false none none
eepromVersion string false none none
bluetoothVersion string false none none
tablehubVersion string false none none
videoFirmware string false none none
audioFirmware string false none none
eepromFirmware string false none none
bluetoothFirmware string false none none
tablehubFirmware string false none none
updateAvailable boolean false none none

Info

{
   "connection": {
     "ethernet": {
       "dns1": string,
       "dns2": string,
       "gateway": string,
       "hostname": string,
       "ip_address": string,        
       "ip_type": string,
       "mac_address": string        
     },
     "wifi": {
       "dns1": string,
       "dns2": string,
       "gateway": string,
       "hostname": string,
       "ip_address": string,        
       "ip_type": string,
       "mac_address": string,       
       "wifi_signal": {
         "signal_quality": string,  
         "signal_strength": integer,
         "signal_units": string     
       }
     }
   },
   "usb_audio_devices": [
     "USB-Audio - HD Pro Webcam C920": string,
     "USB-Audio - HD Pro Webcam C920": string
   ],
   "wap_channels": {
     "channels_2_4G": [
       integer
     ],
     "channels_5G": [
       integer
     ]
   }
 }
 

Properties

Name Type Required Restrictions Description
connection object false none none
»ethernet object false none none
» »dns1 string false none none
» »dns2 string false none none
» »gateway string false none none
» »hostname string false none none
» »ip_address string false none none
» »ip_type string false none none
» »mac_address string false none none
»wifi object false none none
» »dns1 string false none none
» »dns2 string false none none
» »gateway string false none none
» »hostname string false none none
» »ip_address string false none none
» »ip_type string false none none
» »mac_address string false none none
» »wifi_signal object false none none
» » »signal_quality string false none none
» » »signal_strength integer false none none
» » »signal_units string false none none
usb_audio_devices array false none none
USB-Audio - HD Pro Webcam C920 string false none none
wap_channels object false none none
»channels_2_4G array false none a list of the available 2.4G wifi channels
»channels_5G array false none a list of the available 5G wifi channels

Kepler

{
   "enabled": boolean,
   "secret_key": {
     "secret_hash": string,        
     "secret_salt": string
   }
 }
 

Properties

Name Type Required Restrictions Description
enabled boolean false none none
secret_key object false none none
»secret_hash string false none none
»secret_salt string false none none

Locale

{
   "language": string
 }
 

Properties

Name Type Required Restrictions Description
language string false none https://datatracker.ietf.org/doc/html/rfc5646

Maintenance

{
   "daily_restart": {
     "enabled": boolean,
     "restart_with_hdmi": boolean, 
     "time": string
   },
   "power_management": {
     "control": {
       "command_display_off": string,
       "command_display_on": string,
       "control_method": string    
     },
     "occupancy_delay_minutes": integer,
     "occupancy_enabled": boolean, 
     "off_hours_enabled": boolean, 
     "weekday": {
       "all_day": boolean,
       "end_time": string,
       "start_time": string,       
       "suspend_after": integer    
     },
     "weekend": {
       "all_day": boolean,
       "end_time": string,
       "start_time": string,       
       "suspend_after": integer    
     }
   }
 }
 

Properties

Name Type Required Restrictions Description
daily_restart object false none none
»enabled boolean false none none
»restart_with_hdmi boolean false none none
»time string false none none
power_management object false none none
»control object false none none
» »command_display_off string false none none
» »command_display_on string false none none
» »control_method string false none none
»occupancy_delay_minutes integer false none none
»occupancy_enabled boolean false none none
»off_hours_enabled boolean false none none
»weekday object false none none
» »all_day boolean false none none
» »end_time string false none none
» »start_time string false none none
» »suspend_after integer false none none
»weekend object false none none
» »all_day boolean false none none
» »end_time string false none none
» »start_time string false none none
» »suspend_after integer false none none

Meeting

{
   "id": string,
   "title": string,
   "description": string,
   "organizer": string,
   "start_time": integer,
   "end_time": integer
 }
 

Properties

Name Type Required Restrictions Description
id string true none none
title string true none none
description string false none none
organizer string true none none
start_time integer true none Unix timestamp
end_time integer true none Unix timestamp

Meetings

{
   "meetings": [
     {
       "id": string,
       "title": string,
       "description": string,
       "organizer": string,
       "start_time": integer,
       "end_time": integer
     }
   ]
 }
 

Properties

Name Type Required Restrictions Description
meetings array true none an array of meeting objects
id string true none none
title string true none none
description string false none none
organizer string true none none
start_time integer true none Unix timestamp
end_time integer true none Unix timestamp

Metadata

{
   "device_id": string
 }
 

Properties

Name Type Required Restrictions Description
device_id string false none none

PatchSuccess

{
   "device_id": string,
   "message": string,
   "reboot_required": boolean,     
   "restart_required": boolean     
 }
 

Properties

Name Type Required Restrictions Description
device_id string false none none
message string false none none
reboot_required boolean false none none
restart_required boolean false none none

Room_Services

{
   "location_services": {
     "enabled": boolean
   },
   "occupancy_counting": {
     "auto_reserve_enabled": boolean,
     "enabled": boolean
   },
   "reachthrough": {
     "enabled": boolean
   },
   "room_integration": {
     "enabled": boolean,
     "http": {
     },
     "method": string,
     "overlay": {
       "banner_position": string,  
       "enabled": boolean,
       "message": string,
       "position": string
     },
     "roomtype": string,
     "rs232": {
       "usb_acquire_cmd": string,  
       "usb_release_cmd": string   
     }
   },
   "wework_sensor": {
     "enabled": boolean
   }
 }
 

Properties

Name Type Required Restrictions Description
location_services object false none none
»enabled boolean false none none
occupancy_counting object false none none
»auto_reserve_enabled boolean false none none
»enabled boolean false none none
reachthrough object false none none
»enabled boolean false none none
room_integration object false none none
»enabled boolean false none none
»http object false none none
»method string false none none
»overlay object false none none
» »banner_position string false none none
» »enabled boolean false none none
» »message string false none none
» »position string false none none
»roomtype string false none none
»rs232 object false none none
» »usb_acquire_cmd string false none none
» »usb_release_cmd string false none none
wework_sensor object false none none
»enabled boolean false none none

Security

{
   "admin_password": {
     "secret_hash": string,        
     "secret_salt": string
   },
   "allow_local_configuration": boolean,
   "allow_web_browser_configuration": boolean,
   "ca_certificate_bundle": {
     "data": string,
     "name": string
   },
   "disable_captive_portal": boolean,
   "disable_icmp_ping_replies": boolean,
   "display_certificate": {
     "cert": {
       "data": {
         "secret_hash": string,    
         "secret_salt": string     
       },
       "name": string
     },
     "key": {
       "data": {
         "secret_hash": string,    
         "secret_salt": string     
       },
       "name": string
     },
     "password": {
       "secret_hash": string,      
       "secret_salt": string       
     }
   },
   "encryption_enabled": boolean,  
   "enforce_admin_password_validation_rules": boolean,
   "https_quick_connect_redirect": boolean,
   "use_ca_certificate_bundle": boolean
 }
 

Properties

Name Type Required Restrictions Description
admin_password object false none none
»secret_hash string false none none
»secret_salt string false none none
allow_local_configuration boolean false none none
allow_web_browser_configuration boolean false none none
ca_certificate_bundle object false none none
»data string false none none
»name string false none none
disable_captive_portal boolean false none none
disable_icmp_ping_replies boolean false none none
display_certificate object false none none
»cert object false none none
» »data object false none none
» » »secret_hash string false none none
» » »secret_salt string false none none
» »name string false none none
»key object false none none
» »data object false none none
» » »secret_hash string false none none
» » »secret_salt string false none none
» »name string false none none
»password object false none none
» »secret_hash string false none none
» »secret_salt string false none none
encryption_enabled boolean false none none
enforce_admin_password_validation_rules boolean false none none
https_quick_connect_redirect boolean false none none
use_ca_certificate_bundle boolean false none none

Sharing

{
   "airplay": {
     "bluetooth_enabled": boolean, 
     "enabled": boolean,
     "proxy_enabled": boolean      
   },
   "alignment": string,
   "android_mirroring_enabled": boolean,
   "application": {
     "enabled": boolean
   },
   "browser_look_in": string,      
   "desktop": {
     "enabled": boolean
   },
   "miracast": {
     "infrastructure_enabled": boolean,
     "wifi_direct_enabled": boolean
   },
   "moderator_mode_disallowed": boolean,
   "multi_room_enabled": boolean,  
   "quick_connect_action": string, 
   "relay_enabled": boolean,       
   "webrtc_enabled": boolean       
 }
 

Properties

Name Type Required Restrictions Description
airplay object false none none
»bluetooth_enabled boolean false none none
»enabled boolean false none none
»proxy_enabled boolean false none none
alignment string false none none
android_mirroring_enabled boolean false none none
application object false none none
»enabled boolean false none none
browser_look_in string false none none
desktop object false none none
»enabled boolean false none none
miracast object false none none
»infrastructure_enabled boolean false none none
»wifi_direct_enabled boolean false none none
moderator_mode_disallowed boolean false none none
multi_room_enabled boolean false none none
quick_connect_action string false none none
relay_enabled boolean false none none
webrtc_enabled boolean false none none

Success

{
   "message": string,
   "reboot_required": boolean,
   "restart_required": boolean
 }

Properties

Name Type Restrictions Description
message string none none
reboot_required boolean none none
restart_required boolean none none

Token

{
   "access_token": string,
   "token_type": string
 }
 

Properties

Name Type Required Restrictions Description
access_token string false none none
token_type string false none This will always be "jwt"

TokenError

{
   "error": string
 }
 

Properties

Name Type Required Restrictions Description
error string false none none