0% found this document useful (0 votes)
144 views40 pages

Poe Guide 1-1

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
144 views40 pages

Poe Guide 1-1

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 40

OpenControl API 1.

0
Guide
Updated December 14, 2021

Mersive Technologies, Inc. | www.mersive.com | © Copyright 2021 Mersive


Table of Contents

OpenControl API Overview 2
OpenControl API Setup 4
Using the OpenControl API 6
Configuration API 12
Calendar API 27

Other APIs 30
Stats API 31
Command API 33
Solstice Discovery Services (SDS) API 34
Valid Time Zone Values 37

1
OpenControl API Overview
The OpenControl protocol 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. For
example, it can be used to monitor the status of a Solstice host, capture usage statistics, and configure
endpoints. In short, OpenControl exposes much of the functionality found in the Solstice Dashboard
through a straightforward communications protocol that can be read/written both by humans and
machines. Creative uses of the API include automatically emailing IT administrators when a Pod’s new
settings do not meet enterprise security standards and enabling dynamic switching between input
sources for digital signage.

OpenControl uses HTTP GET and POST commands to receive and send data to a Solstice host. The
approach ensures that the API is composed of simple transactions that can be sent to a Pod without
requiring complex management of state by a 3rd party developer. Any language, on any device, that
can issue HTTP GET and POST commands to the appropriate URLs of the Solstice host, then, can be
integrated into a Solstice deployment.

What is Required to use the OpenControl API?


l A Solstice Pod or Solstice Windows Software host with an Enterprise Edition license. Note that
the Pod and Windows host respond differently to different commands and that some commands
are Pod or Windows only; see command list for details.
l A client platform for issuing commands to the Solstice host.
l A network connection between the client and Solstice host.

Example Uses of the OpenControl API


l Capturing statistical usage data periodically and storing that data in a third-party database for
analytics.
l Integrating configuration options into a third-party IT dashboard suite, allowing IT dashboards to
incorporate status information about a Solstice deployment.
l Clearing the screen of posted content or booting users from a Solstice session from in-room
control panels.
l Displaying information about a Solstice session – for example the Session Key – on a control
panel or second display.
l Updating the Solstice host splash-screen messaging from a third-party application.

The OpenControl communications protocol utilizes JSON structures to exchange information between
the Solstice host and any number of clients. The protocol uses port 80 or 443. Solstice hosts receive
request records and respond to requests by either carrying out an action (i.e. modifying configuration,
performing an action) or by responding with a JSON response.

2
OpenControl clients can only communicate with Enterprise Edition Solstice hosts. Standard Solstice
Pods (i.e. non-Enterprise Edition) will need to be upgraded to Enterprise Edition before using the
OpenControl API. The figure below depicts the main components needed to implement OpenControl.

OpenControl operates over existing TCP/IP network infrastructure to allow third-party client platforms
to control and query Solstice endpoints. The protocol is based on a REST architecture that encapsulates
communication into independent GET/POST events, sent to particular URLs on the Solstice Pods, each
of which result in a JSON formatted response.

3
OpenControl API Setup
This section is intended for users who want to demo the API capability or run one of the Mersive
supplied Python applications, and assumes no familiarity with general purpose programing. If you are
familiar with programming and have a preferred way of sending and receiving HTTP GET and POST
commands, jump to the list of commands.

If you simply want to experiment with receiving and sending information via the API, Postman is a
great tool that can help you develop an intuitive grasp of the capabilities and workflows of the
OpenControl API. Enter the URL of your target host or server and click 'GET' to confirm connectivity
with your target and see the results of every key:value set associated with that target.

How To
Setup

If you want to run complete scripts and are starting from scratch, follow the comprehensive
instructions below.

The following steps assume a Windows operating system on the client device. If you have a different
operating system, you will need to modify the steps to suit your platform. It also assumes that you
want to use Python version 2.7 to communicate with the API. While the OpenControl API is agnostic
to client programming language and version, the examples in this document utilize Python 2.7.

1. Download Python 2.7 from python.org/downloads/. Later versions of Python may not be fully
compatible with 2.7, therefore the example scripts may not run properly if using a later version.
2. Install as close to the main drive as possible. The default location is likely C:\Python27, which is
perfect.
3. Download get-pip from https://pip.pypa.io/en/stable/installing/ and move the file into the same
folder as your new installation of Python 2.7.
4. Open Windows PowerShell.
5. Navigate to the Python directory. If you installed in the default location, type:

cd C:\Python27\

6. If you installed into a different directory, navigate through your file system using “cd [folder
name]” to enter a subfolder or “cd .. “ to move up a level. The command “ls” (that’s a lowercase L)
lets you see everything inside the current directory.
7. Once you’re in the Python folder, type “ls” to verify that get-pip.py is in the folder.
8. If so, type “py get-pip.py” and wait for pip to install.

4
9. Next, install the requests package with the following command:

python -m pip install requests

10. Wait for requests to finish installing. Information on this package is available at
http://docs.python-requests.org/en/master/.

Once the requests package is installed, you can GET/POST individual messages to or from
specific IP addresses directly from the Python terminal window (access by double-clicking the
python.exe file), or you can write a Python script in an editor (such as Notepad++) and run the
script from PowerShell or the Python terminal window.

Test Connectivity to a Solstice Host

Now, test that you have network connectivity to a Solstice IP address (Pod or Software Instance) by
pinging the IP address. If the IP address is http://192.168.3.127, the shell command would be:

>>> ping 192.168.3.127

Wait for the ping to finish. The result should be 4 packets sent and 4 packets received.

Download and Run the Example GET Script

At this point, we recommend downloading and running the example GET script to see all the available
options. Download the script from our GitHub repository here
(https://github.com/LauraMersive/APIdemo/blob/master/OpenControlGETPOSTdemo.py) and move
it to a known location. You can double-click the file to run it immediately, or open it in an editor to
modify the script.

5
Using the OpenControl API
The OpenControl API protocol is divided into areas based on functional types. These types are: Config,
Stats, and Command. Each is associated with a different URL. By sending an appropriately formatted
JSON record to the corresponding URL, third-party developers can query and set values or settings
related to the Solstice host. These URLs are:

l /api/config – Used for posting and getting information related to administrative configuration of
Solstice host. For example, modifying the network settings of a Pod.
l /api/stats – Used to get instantaneous status about a Solstice host. For example, capturing the
number of users currently connected to a Solstice Windows Software endpoint.
l /api/control – Used to post commands to a Solstice host that will impact runtime behavior. For
example, clearing a screen of all media.
l Other URLs are used in the Calendar and Version APIs. See the Calendar API and Version and
Update Control API topics for more details.

Users of OpenControl can set values by using a POST structure to the appropriate URL. This is used to
modify configuration, or POST actions to a Solstice host to control runtime behavior. In addition, users
can query current configuration and status using GET commands to the appropriate URL.

JSON Record Structure

POST and GET records sent to and received from the different URLs are made up of key/value pairs
that represent the various capabilities exposed through the API. This structure uses the JSON syntax.
Example:

{key1: value1, key2: value2, … keyN, valueN}

POST records do not need to contain all key/value pairs and can contain any subset of key/values
based on the needs of the integration. The order of a request record is not important, so long as the
key/value pairs follow the format above. For example, POSTing the string ‘{key2:value2}’ to the
appropriate URL of a Solstice host can set that value.

In some cases, key/value pairs are organized hierarchically based on logical groupings. In these cases,
the JSON syntax is simply nested within the value of a particular key. Those key/value pairs appear
within brackets and are separated from other key/value pairs with a comma. Example:

{key1:value1, key2:value2, GroupKey:{ NestedKey1:GroupValue1,


…, NestedKeyN:GroupValueN }, key3:value3}

6
This represents a JSON structure that contains three key/value pairs at the top level, and a set of
key/value pairs that are grouped within ‘GroupKey’.

Using this syntax, for example, a user could set the display name for a particular Solstice host by
sending the following JSON record:

{m_displayInformation:{m_displayName:‘NewDisplayName’}}

Securing API Communications

In order to ensure that only valid third-party users are able to communicate with Solstice Hosts, the
administration password, when set, must be provided with each POST or GET record. The
administration password, for a particular host, can be set both in the Solstice host Configuration Panel,
or through the Solstice Dashboard. It is important to note that if no password is set, then any third-
party application can utilize the OpenControl APIs to modify a Solstice host over the network.

When an administrator password is set, each POST request record must include a key/value pair that
is: ‘password: admin_password’ at the top level of the record. A request record sent to a Solstice host
that has password enabled, then, must follow this format:

{password: admin_password, key1: value1, key2: value2, … keyN,


valueN}

In the case of a GET record, the password is simply appended to the GET URL request as follows:

?password=admin_password

Basic GET

There are two URLs for each IP address that will respond with text to a GET command. For our
example IP address of 192.168.3.127, the valid URLs are:

l http://192.168.3.127/api/stats
l http://192.168.3.127/api/config

7
While there is some overlap in information, the “stats” URL generally gives a snapshot of important
values and instantaneous usage while the “config” URL gives more detail about everything from
enabled options to display screen layout. Note that while you can GET from either URL, you can only
POST to /api/config.

To test the stats URL, set up your environment as described in the previous section and send the
following command (with your own URL):

>>> rs=requests.get(‘http://192.168.3.127/api/stats’)

If you have an admin password protecting access to the display, append the password in the following
way, with “adminpassword” as whatever the actual password is for the display.

>>> rs=requests.get
(‘http://192.168.3.127/api/stats?password=adminpassword’)

To display the raw results, type:

>>> rs.text

You should see a continuous chunk of text with the first distinct value of “m_displayID”. To pull out a
specific value in a clean format, the string needs to be converted to a dictionary of key:value pairs.

>>> rstats = eval(rs.text)

If you print the new value (rstats.text) you will still see a chunk of continuous text, but the formatting
will be slightly different. We can now use get() to find specific terms, like the display name. m_
displayName is a part of the m_displayInformation group key, so we will use nested get() commands:

>>> print “Display Name:”, rstats.get(‘m_displayInformation’,


{}).get(‘m_displayName’)

The result should be “Display Name: Pikes Peak” with the actual display name reflecting the name on
your Solstice display. Any of the values can be pulled from the list in this manner.

8
Basic POST

Many of the key:value pairs that can be read using GET can also be changed through the API using
POST. While the same values may appear in the GET of both URLs, POSTs may only be sent to the
/api/config URL:

l http://192.168.3.127/api/config

The requests command now changes from GET to POST and requires a payload parameter. To change
the display name, use the following command:

>>> r=requests.post(‘http://192.168.3.207/api/config’, json=


{‘m_displayInformation’:{‘m_displayName’:’New Name’}})

If you have an admin password protecting the display, send the following command where
‘adminpassword’ is the actual password for the display:

>>> r=requests.post(‘http://192.168.3.207/api/config’, json=


{‘password’: ‘admin_password’, ‘m_displayInformation’:{‘m_
displayName’:’New Name’}})

NOTE: if you copy either of these lines directly into Python or a formatted text editor and get a syntax
error, the single quotes are likely to blame. They may come through formatted such that requests.post()
does not recognize them. If this happens, manually delete each mark and re-enter it in the terminal
window to get the appropriate format.

To see the new name, run GET on the same URL and look for the ‘m_displayName’ key, which should
now have a value of ‘New Name’:

>>> rc=requests.get(‘http://192.168.3.127/api/config’)
>>> rconfig=eval(rc.text)
>>> print “Display Name:”, rconfig.get(‘m_displayInformation’,
{}).get(‘m_displayName’)

If you have an admin password protecting the display, you will need to add in the password as before.

GET/POST Example Script (Python 2.7)

The complete script provides additional comments and the option for an admin password. Download
the complete script here

9
(https://github.com/LauraMersive/APIdemo/blob/master/OpenControlGETPOSTdemo.py).

This pared down version gets the Display Name from both /config and /stats URLs, changes the name,
then gets both values again to confirm the name has changed.

import sys
import requests
import random
from random import choice
true=1
false=0

newname = “New Name”


myurl = “http://192.168.3.227”
admin_password = “”
mystatsurl = myurl+’/api/stats’
myconfigurl = myurl+’/api/config’

rs=requests.get(mystatsurl)
rc=requests.get(myconfigurl)
rstats=eval(rs.text)
rconfig=eval(rc.text)

print “Current Display Name from Stats:”, rstats.get(‘m_


displayInformation’,{}).get(‘m_displayName’)
print “Current Display Name from Config:”, rconfig.get(‘m_
displayInformation’,{}).get(‘m_displayName’)

r=requests.post(myconfigurl, json={‘password’:’admin_
password’,’m_displayInformation’:{‘m_displayName’:newname}})

print “Changing Name to: “,newname


print “………….”

rs=requests.get(mystatsurl)
rc=requests.get(myconfigurl)
rstats=eval(rs.text)
rconfig=eval(rc.text)

print “New Display Name from Stats:”, rstats.get(‘m_

10
displayInformation’,{}).get(‘m_displayName’)
print “New Display Name from Config:”, rconfig.get(‘m_
displayInformation’,{}).get(‘m_displayName’)

Tips for Writing Your Own Script

If you start writing your own script, you will need to import the requests package before attempting to
execute any GET/POST code. You will also need to import sys, and will likely want time as well.
Though it seems redundant, you can avoid errors later on by explicitly defining true=1 and false=0 in
your new Python window or at the top of your script.

In general, start with all the following commands:

>>> import sys


>>> import time
>>> import datetime
>>> import requests
>>> import json
>>> >>> true=1
>>> false=0

The “>>>” characters are not something you type into the window – they are
already at the start of each line in the Python terminal. They are shown in the
code example here to clarify where new lines begin.

11
Configuration API
Solstice Host URL: IPAddress/api/config

The configuration API is focused on setting and reading configuration settings that are available in the
Configuration Panel and the Solstice dashboard. These are admin settings that are concerned with
customization, security, and network configuration options.

The top level keys are primarily associated with device-specific settings and are not grouped into a
sub-hierarchy. For each table, other than the ‘Top Level’ table that does not require a hierarchical key,
the hierarchical key is shown in the first row. This is the key to the set of values that can be set in that
table.

Product/Global Settings
(Top Level)
Key Type Get/Post Description
This is the unique identifier that Solstice uses
m_displayId string Get to manage a single instance, regardless of how
the display is named or its current IP Address
The current software version running on the
m_serverVersion string Get
Solstice host
m_productName string Get The name of the Solstice software (Solstice).
The generation and type of Pod hardware as a
m_productVariant string Get
name. For example, ‘Gen1’ or ‘Gen2’
The Pod hardware generation as a version
m_
int Get number (Pod-only). For example, 1 or 2.
productHardwareVersion
Software returns 9999.

Solstice Display Communications Settings


m_displayInformation
Key Type Get/Post Description
The current primary IP Address assigned to the Solstice
m_ipv4 string Get
display/endpoint.
The display name used for Solstice discovery. This name is
m_
string Get/Post shown on the Solstice splash-screen and appears in the
displayName
client discovery list for connecting to the Solstice display.
m_
string Get/Post The Solstice host device’s current hostname.
hostName
The base port that Solstice will utilize for TCP/IP
m_port int Get/Post
communications. Solstice uses three ports defined by the

12
base port value, +1, and +2.

Global Display Settings


m_generalCuration
Key Type Get/Post Description
A code that denotes the current language
setting. Valid options are: “en_US” for US
English, “ja_JP” for Japanese, “de_DE” for
language string Get/Post
German, “fr_FR” for French, “es_ES” for
Spanish, “zh_TW” for Traditional Chinese,
and “xx”.
Show or hide the splash screen background
showSplashScreen bool Get
image when the splash-screen is visible.
Enable or disable access to the local
Configuration Panel on the Solstice host
localConfigEnabled bool Get (via mouse/keyboard). When disabled the
onscreen configuration menu is no longer
visible to users.
If this is disabled, the API cannot interact
browserConfigEnabled bool Get with the host since the device considers
the API browser configuration.
Enable or disable quick-connect auto
autoConnectOnClientLaunch bool Get/Post
launch.
Windows Only – hide the display software
hideOnLastClientDisconnect bool Get
if no connections are active.
Windows Only – bring display software to
launchOnClientConnect bool Get
foreground when a connection is made.
Windows Only – start display software
launchOnSystemStart bool Get
when host machine boots.
Windows Only – selects between the 6
theme int Get preset themes.  Zero indexed, so the
options are 0-5.
Windows Only – enable (1) or disable (0)
advancedRenderingEnabled bool Get/Post advanced rendering for better animations
at the expense of host processing cycles.
Gen3 Pods Only – Change the dual display
hdmiOutDisplayMode int Post mode to Mirror (1), Seamless Extend (2), or
Extend (3).
inkEnabled bool Post Enable or disable support for Solstice Ink.

13
Windows Only – shows whether Solstice is
windowMode int Get displayed as window app (0), fixed size (1) ,
or fullscreen (2).
Windows Only – if windowMode = 1, this
windowTop int Get
is the top coordinate for the fixed window.
Windows Only – if windowMode = 1, this
windowLeft int Get
is the left coordinate for the fixed window.
Windows Only – if windowMode = 1, this
windowWidth int Get
is the width in pixels of the fixed window.
Windows Only – if windowMode = 1, this
windowHeight int Get
is the height in pixels of the fixed window.

Authentication Modes
m_authenticationCuration
Key Type Get/Post Description
Pre 3.0 Solstice only – security on host is
authenticationMode int Get open (0), screen key (1), password (2),
moderated (3), or select at runtime (4)
screenKeyEnabled bool Get/Post Check whether screen is key protected
Check whether moderator mode is enabled
moderatorApprovalDisabled bool Get/Post
or disallowed
The current session key currently displayed
sessionKey string Get on the screen and required to be entered by
clients before connecting to the display

Main Network and Feature Record


The m_networkCuration object contains several nested sub-objects. Some of these sub-objects,
including wifiConfig, apConfig, and ethernet, need to have all of their properties sent in the same
POST request to correctly reconfigure the Pod.

An example of how to change the nested wifiConfig sub-object is to first load the object with GET
/api/config, then copy config[‘m_networkCuration’][‘wifiConfig’] into a new configuration object, then
set the property changes. You must always set the password. If no password is set, the API will set the
password as a single asterisk “*” to protect it.

m_networkCuration
Get/Po
Key Type Description
st
Bitwis Get/Po Bitwise flags for showing various
connectionShowFlags connection related information on the
e st

14
Solstice splash-screen. Before posting,
you will need to convert the desired
bit flag into an integer. After posting,
the resulting GET may include leading
1's due to the JSON parser converting
it to a 32-bit integer before displaying
it back. 

NOTE: The modern splash screen only


supports bits 4 through 8.

Pod only.  Windows Software returns


32 ‘1’s.

Main Screen – Display Name


Bit 1:
Enabled
flags
Bit 2: (Don’t Care)
(post
as Show IP Address on Main
Bit 3:
decim Screen
al int) Bit 4: Presence Bar – Display Name
Bit 5: Presence Bar – IP Address
Show Screen Key on Main
Bit 6:
Screen
Bit 7: Presence Bar – Screen Key
Bit 8: Show Presence Bar
Bit 9: Connect by App Instructions
Bit App Instructions –
10: Artwork/Icons
Bit
Connect by Web Instructions
11:
Bit Web Instructions –
12: Artwork/Icons
Bit
Show SSID Info (when enabled)
13:

Enable or Disable UDP Discovery


Get/Po broadcast. When enabled the Solstice
discoveryBroadcastEnabled bool
st host will broadcast discovery
information on local network every 5

15
seconds allowing clients to discover
and connect.
Publish discovery information to
Solstice Discovery Service so clients
Get/Po
publishToNameServer bool can discover the Solstice host without
st
the need for broadcast
traffic/discovery.
The current number of maximum
Get/Po allowable simultaneous connections.
maximumConnections int
st Cannot be set past maximum allowable
based on license for host.
Number of maximum allowable
maximumLicensedConnections int Get simultaneous connections based on the
installed license.
Maximum size of an image, in bytes,
shared by clients. Clients that share
Get/Po
maximumImageSize int images past the maximum will
st
automatically be resized (to save
resources).
Maximum number of posts allowed.
Get/Po Users who post past this limit will be
maximumPublished int
st given a message that the system is
busy.
Maximum number of simultaneous
Get/Po
maximumAirPlayUsers int AirPlay users allowed (ie iOS mirroring
st
posts). Cannot be set higher than 4.
Primary hostname or IP Address of
Get/Po
sdsHostName string Solstice Discovery Service to list
st
discovery information.
Secondary hostname or IP Address of
Get/Po
sdsHostName2 string Solstice Discovery Service to list
st
discovery information.
Enable or disable Browser Look-In
feature.  0=disabled, 1=enabled,
Get/Po
remoteViewMode int 2=allow users to toggle on/off at
st
runtime. Passing a value other than
0,1, or 2 disables look-in.
Modifies Dual-Network firewall (Pod
Get/Po
firewallMode int only) to enable or disable internet
st
traffic between two network

16
interfaces. 0=Block all traffic, 1=Allow
ports 80/443, 2=Allow all traffic to be
ported (note: admin password must be
set and sent with the request).
See if VLANs are enabled or disabled.
vlansEnabled bool Get For more information on how to set
configurations, see VLANs.
Get/Po Enable or disable support for
postTypeDesktopSupported bool
st PC/desktop full screen sharing.
postTypeApplicationWindowSupp
Get/Po Enable or disable support for
orted bool
st application window sharing.

Get/Po Enable or disable support for image


postTypeMediaFilesSupported bool
st and video file sharing.
Get/Po Enable or disable support for iOS
postTypeAirPlaySupported bool
st mirroring.
postTypeAndroidMirroringSuppor Get/Po Enable or disable support for Android
bool
ted st full screen mirroring.
Enable or disable the Bonjour Proxy
feature that allows iOS users to
Get/Po
bonjourProxyEnabled bool discover display to mirror to via the
st
Solstice App instead of the Bonjour
protocol.
Get/Po Enable or disable the Ethernet network
ethernetEnabled bool
st adapter (Pod-only).
Get/Po Enable or disable the gateway check
ethernetGatewayCheckEnabled bool
st (Pod-only).
Set the wireless network adaptor
Get/Po mode 0 = Off, 1 = Client Mode/Attach
wifiMode int
st to existing wireless, 2= Wireless
Access Point, 3 = Wireless Miracast.
Enable or disable administrative access
Get/Po
wifiAllowAdmin bool to Solstice configurations on the
st
wireless network.
Enable or disable Solstice locating
software updates using a local web
Get/Po server.  Useful when Pods don’t have
localOTAEnabled bool
st direct or web proxy-based access to
the Mersive web server for
updates. The localOTAUrl value is used

17
for the URL that would be used to find
the updates.  Learn more about Local
OTA here (
https://www.mersive.com/guides/upd
ating-solstice-pods/).
URL of the local web server and path
to use when localOTAEnabled = true
(localOTAUrl is ignored if
Get/Po
localOTAUrl string localOTAEnabled = false).  Useful
st
when Pods don’t have direct or web
proxy-based access to the Mersive
web server for updates. 
Get/Po Enable or disable bulletin text across
bulletinEnabled bool
st top of Solstice-enabled Display
Get/Po
bulletinText string Text to be displayed in bulletin
st
Get/Po Enable or disable the emergency
emergencyEnabled bool
st broadcast
Get/Po
emergencyText bool Text of emergency broadcast
st
wifiConfig (Pod only)
Get/Po SSID of the host wireless network to
ssid string
st connect to via wireless client mode.
Security protocol of the Pod wireless
Get/Po
security int network (Pod-only).  0=open, 1=WEP,
st
2=WPA, 3=WPA2, 4=EAP
EAP method of authentication when in
Get/Po EAP mode (Pod-only). 0=None,
eap int
st 1=PEAP, 2=TLS, 3=TTLS, 4=PWD,
5=SIM, 6=SIM
Phase2 authentication method. 
Get/Po
phase2 int 0=None, 1=PAP, 2=MSCHAP,
st
3=MSCHAPv2, 4=GTC.
Get/Po Password used to authenticate to host
password string
st network.  Get returns “*”
Get/Po Enable or disable DHCP protocol on
dhcp bool
st wireless interface.
Get/Po Static IP address to assign to device on
staticIP string
st wireless interface.
gateway string Get/Po Wireless interface gateway.

18
st
Get/Po
prefixlength int Prefix setting for wireless interface.
st
Get/Po
dns1 string First DNS for wireless interface.
st
Get/Po
dns2 string Second DNS for wireless interface.
st
apConfig (Pod only)
Get/Po SSID for standalone wireless access
SSID string
st point.
Security protocol for wireless interface
Get/Po
SecurityMode int when in WAP mode (Pod-only).
st
0=open, 3=WPA2.
Password to use for authenticating
Get/Po
PSK string users connecting to wireless access
st
point.
ethernet (Pod only)
Get/Po Enable or disable DHCP for the
dhcp bool
st Ethernet network interface.
Get/Po Static IP to assign the device’s
staticIP string
st Ethernet network interface (Pod-only).
Get/Po Gateway IP Address for the Ethernet
gateway string
st network interface (Pod-only).
Get/Po Prefix length value (netmask, Pod-
prefixLength int
st only).
Get/Po First DNS Server IP Address (Pod-
dns1 string
st only).
Get/Po Second DNS Server IP Address (Pod-
dns2 string
st only).
Enable or disable administrative access
Get/Po
allowAdmin bool to Solstice configurations on the
st
wireless network.
vlans (Pod only)
Name of the network to be displayed
Get/Po
label string on the Pod's welcome screen
st
instructions.
Get/Po Integer between 1 and 4094 that
tag int
st specifies your VLAN ID.
enabled bool Get/Po Enable or disable the VLAN settings.

19
st
Get/Po Enable or disable DHCP for the
dhcp bool
st Ethernet network interface.
Get/Po Static IP to assign the device’s
staticIP string
st Ethernet network interface (Pod-only).
Get/Po Gateway IP Address for the Ethernet
gateway string
st network interface (Pod-only).
Get/Po Prefix length value (netmask, Pod-
prefixLength int
st only).
Get/Po First DNS Server IP Address (Pod-
dns1 string
st only).
Get/Po Second DNS Server IP Address (Pod-
dns2 string
st only).
Enable or disable administrative access
Get/Po
allowAdmin bool to Solstice configurations on the
st
network.
httpProxyServerSettings
Get/Po Enable or disable use of an HTTP
enabled bool
st Proxy.
Get/Po
ip string IP Address of HTTP proxy server.
st
Get/Po Communications port of HTTP proxy
port int
st server.
Username to be used when
Get/Po
username string authenticating to the HTTP proxy
st
server.
Password to be used when
Get/Po
password string authenticating to the HTTP proxy
st
server.
Enable or disable the setting that
Get/Po
excludeLocalSubnet bool allows addresses on the same subnet
st
as the Pod to bypass the proxy server.
httpsProxyServerSettings
Get/Po Enable or disable use of an HTTPS
enabled bool
st Proxy.
Get/Po
ip string IP Address of HTTPS proxy server.
st
Get/Po Communications port of HTTPS proxy
port int
st server.

20
Username to be used when
Get/Po
username string authenticating to the HTTPS proxy
st
server.
Password to be used when
Get/Po
password string authenticating to the HTTPS proxy
st
server.
Enable or disable the setting that
Get/Po
excludeLocalSubnet bool allows addresses on the same subnet
st
as the Pod to bypass the proxy server.

RSS Feeds
m_networkCuration also has a nested group key ‘m_rssFeedList’ that can GET or POST an array of
messages to be displayed in the RSS feed across the top of a Solstice-enabled display.  It may include
custom messages or standard RSS URLs.

For example:

“m_rssFeedList”: [
{
“enabled”: true,
“name”: “Custom Message”,
“length”: 0,
“uri”: “This is a test123”
},
{
“enabled”: true,
“name”: “solstice wireless display”,
“length”: 3,
“uri”: “https://www.mersive.com/go.xml”
} ]

Forget Wireless Network


You can send a standard POST IPAddress/api/config request to forget a wireless network with the
following request body:

json={"disable": {"ssid":"ssid_name"}}

As a note, this will keep the Pod in dual network mode with the wireless settings still enabled but will
not be connected to a network. This was implemented to increase performance for streaming via
Miracast.

21
Licensing
m_licenseCuration
Key Type Get/Post Description
0=No license; 1=Error reading license;
licenseStatus int Get
2=License OK; 3=License Expired
7=fully trusted; <7 and the license isn’t
trustFlags int Get
trusted and must be repaired
fulfillmentType string Get “PUBLISHER ACTIVATION” or “TRIAL”
Tells whether the license on the machine is
enabled bool Get
enabled (1) or disabled (0)
A unique numerical ID used to distinguish
fulfillmentId string Get
between different machines
activation code used to activate the license
entitlementId string Get
on this machine
productId string Get “Solstice”
suiteId string Get Should be blank. Internal use.
“permanent” or the date the license will
expirationDate string Get
expire
The license string returned from the license
featureLine string Get
server
999999999 if the license is permanent,
numDaysToExpiration int Get
otherwise the number of days until it expires
max number of users allowed by license.  eg.
maxUsers string Get
“Unlimited”, “4”
maximum number of posts allowed by the
licensing_maxPosts int Get
license type.
licensing_ Is the user allowed to change the value of
bool Get
maxPostsIsConfigurable maxPosts?
licensing_ When the max post count is reached, should
bool Get
atMaxPostsReplace the next post replace (1) or not display (0)?
licensing_maxUsers int Get maximum users allowed (0=Unlimited)
licensing_ Is the user allowed to change the value of
bool Get
maxUsersIsConfigurable maxUsers?
licensing_
bool Get Can remote view be enabled?
remoteViewEnabled
licensing_
bool Get Is remote view able to be configured?
remoteViewIsConfigurable
licensing_ bool Get Can users can select the runtime access

22
runtimeAccessControls (moderated, screen key, etc.)?

Passwords
m_userGroupCuration
Key Type Get/Post Description
Administrative password for host. Note –
adminPassword string Post Get on this value will always return
“unknown”.
Enable/Disable validation of admin password
using the following rules:
•     Minimum of 8 characters.
passwordValidationEnabled bool Get/Post
•     At least one uppercase and one
lowercase character.
•     At least one number or special character.

System Settings Record


m_systemCuration
Key Type Get/Post Description
Enable or disable the use of an NTP time
autoDateTime bool Get/Post server.  If disabled, date and time is set
manually.
Non-default NTP time server IP Address. If left
ntpServer string Get/Post blank, a default internet time server will be
used when autoDateTime is true.
Date and time value, represented as a 64-bit
dateTime int Get integer in milliseconds since January 1, 1970,
00:00:00 GMT.
Time zone code represented as a string from
timeZone string Get/Post
the set of available time zones.
string Array of available time zone strings. See the
timeZones Get
array Valid Time Zones topic. 
Enable or disable a daily Pod restart. Restarting
scheduledRestartEnabled bool Get/Post the pod helps refresh memory usage and
maximize performance.
View and set the time for the daily Pod restart.
scheduledRestartTime string Get/Post The format is “hh:mm”. Hours are 00 – 23 and
minutes are 00 – 59.

23
Splashscreen Commands
The background image shows on a Solstice-enabled display when no content is shared.  The ‘classic’
splash screen has a single, static image, while the ‘modern’ splash screen can have up to 6 custom
images in the carousel.

l Changing the Classic Splash Screen Image:

POST your desired file (key is “file”) to IPaddress/api/config/splashbackground as type


formData.  In Postman or a similar tool, you can do this by entering the URL, selecting ‘POST’,
entering ‘file’ as the key, and changing the value type from ‘text’ to ‘file’.  This will allow you to
upload a file from your computer and post it to the Solstice host.

Reset the background to the default image by changing the value type back to ‘text’ and
entering ‘reset default’ as the value.  POST to the URL to see the change on your Solstice host.

l Changing the Modern Splash Screen Image(s):

There are 6 slots for custom images in the modern splash screen carousel, numbered 0-5.  To
upload a new image or reset a specific image to the carousel, use the same command as the
classic splash screen appended with ‘/n’ where n is the number of the image to be changed.

For example, to upload a new image to the 4 th  place in the carousel, you would POST your
image file to IPaddress/api/config/splashbackground/3.

Note that you cannot remove images from the carousel via the API – that can only be done
using the dashboard.  If you are only using the first 3 spots then POST ‘reset default’ to
IPaddress/api/config/splashbackground/4, the 5 th  location in the carousel will be populated with
the default image and added to your carousel.

Power Management
Power management offers the ability to schedule when pods will stop sending an HDMI output signal
after being idle for a specified amount of time, as well as the ability to turn the HDMI signal on and off
on demand.

m_powerManagementCuration
Key  Type Get/Post  Description 
enabled  bool  Get/Post  Enable or disable power management.
On weekdays power management applies all
weekdaysAllDay bool  Get/Post 
day.
When All Day is false, this is the hour and
minute that power management starts.
weekdaysBegin string Get/Post 
The format is “hh:mm”. Hours are 00 – 23 and
minutes are 00 – 59.
weekdaysDelayMinutes int Get/Post  On weekdays this is the number of minutes of

24
inactivity until the Pod turns off the display.
The accepted range is 1 – 120.
When All Day is false, this is the hour and
minute that power management ends.
weekdaysEnd string Get/Post 
The format is “hh:mm”. Hours are 00 – 23 and
minutes are 00 – 59.
On weekends power management applies all
weekendAllDay bool Get/Post 
day.
When All Day is false, this is the hour and
minute that power management starts.
weekendBegin string Get/Post 
The format is “hh:mm”. Hours are 00 – 23 and
minutes are 00 – 59.
On weekdays this is the number of minutes of
weekendDelayMinutes int Get/Post  inactivity until the Pod turns off the display.
The accepted range is 1 – 120.
When All Day is false, this is the hour and
minute that power management ends.
weekendEnd string Get/Post 
The format is “hh:mm”. Hours are 00 – 23 and
minutes are 00 – 59.

Power Management Commands


In addition to the standard scheduling and configuration settings, power management supports
dedicated commands for turning the HDMI output on and off.

l GET IPAddress/api/control/suspend immediately puts the Pod in standby mode.


l GET IPAddress/api/control/wake immediately wakes the Pod from standby mode.

Note that suspend commands will be ignored if the pod is actively in use, there is a scheduled meeting
within 15 minutes of the current time, or when an emergency message is being broadcast.

HDMI Input
The hdmi_input object allows you to turn off the HDMI input port on the front of the Pod. When
hdmi_input is forced off, the Pod will ignore any device that connects to this port.

The following cURL command provides an example of how to turn off the HDMI input port:

C:\API> curl -k https://192.168.2.148/api/config/hdmi_input -d


force_off=true

{"rebootRequired":false, "restartRequired": false}

25
The following cURL command provides an example of how to turn on the HDMI input port:

C:\API> curl -k https://192.168.2.148/api/config/hdmi_input -d


force_off=false

{"rebootRequired":false, "restartRequired": false}

If a password has been set on the Pod, use the -u option to have the cURL command prompt for the
Pod's admin password. For example, you might enter something like this:

C:\API> curl -k -u admin


https://192.168.2.148/api/config/hdmi_input -d force_off=true
Enter host password for user 'admin':

{"rebootRequired":false, "restartRequired": false}

The hdmi_input setting does not persist through a Pod reboot. If the Pod
reboots, it will revert back to the default setting for hdmi_input which is
force_off=false.

26
Calendar API
Solstice Host URLs: 

l IPAddress/api/calendar
l IPAddress/api/calendar/set
l IPAddress/api/calendar/clear
l IPAddress/api/calendar/add
l IPAddress/api/calendar/delete

The calendar API allows an admin to send scheduling information to a Solstice host in a fully
customizable way, without tying the host to a specific calendar via an Exchange server. 

To communicate with a host purely via the API, the Calendar Configuration must be
enabled in the Solstice Dashboard and the Calendar Type set to ‘3 rd-party only’.

There are two URLs that affect host endpoints when ‘3 rd-party only’ is selected as Calendar Type:

l IPAddress/api/calendar/clear requires no data.  Hitting this URL clears all calendar data.


l IPAddress/api/calendar/set lets you POST JSON data about upcoming meetings.  Each POST
will override any existing calendar data, so the POST should be an array of all
meeting/availability information that should show on the display.

The OpenControl API may also interact with a Microsoft Exchange calendar to integrate with an
existing scheduling system.  Once an Exchange account is authenticated through the Dashboard
(Calendar Type = Microsoft Exchange), there are two URLs that allow you to add or remove a meeting
on the Exchange calendar:

l IPAddress/api/calendar/add requires the keys ‘startTime’, ‘endTime’, ‘title’ and 'organizer' to add
a meeting to the Exchange calendar. A random ‘id’ key will be assigned when the meeting is
created and may be used to delete the meeting.

Although the 'organizer' key is required for the


IPAddress/api/calendar/add call, this key may not be applied when you
POST to a Microsoft Exchange calendar.

l IPAddress/api/calendar/delete requires only the ‘id’ key of the meeting to be deleted from the
Exchange calendar.

To read calendar data from the display regardless of calendar type, GET the URL
IPAddress/api/calendar. 

27
Example POST Data

{
"calendarItems": [
{
"id": "001",
"startTime": 1767024030,
"endTime": 1767031230,
"title": "Engineering Review",
"organizer": "Molly McNale"
},
{
"id": "002",
"startTime": 1767033000,
"endTime": 1767038400,
"title": "Plastics Lunch & Learn",
"organizer": "Greg Clyff"
}
]

Calendar Settings 
Note that, like the other values in the config object, if you do not explicitly set a value to empty (‘’, the
empty string), then it will keep its old value. This is important when changing to a new Exchange
configuration without a delegate or impersonation mailbox.

m_calendarCuration
Key  Type  Get/Post Description 
Enable or disable the use of a calendar
enabled  bool  Get/Post 
service. 
0: Exchange, 2: Office 365, 3:
calendarType  int  Get/Post 
OpenControl API 
Number of seconds between when the
updateIntervalSeconds int Get/Post display checks for updates to the
calendar information.
showTitle  bool  Get/Post  Show the meeting title 
showOrganizer  bool  Get/Post  Show the meeting organizer 
exchangeUrl  string  Get/Post  Exchange server URL 
Exchange server authentication type: 0:
exchangeAuthOpt  int  Get/Post 
HTTP Basic, 1: NTLM 

28
exchangeAcctDomain  string  Get/Post  Exchange NTLM credentials domain. 
exchangeAcctUser  string  Get/Post  Exchange account username. 
exchangeAcctPassword  string  Get/Post  Exchange account password. 
If not using the default mailbox, this is
exchangeDelegateMailbox  string  Get/Post 
the delegate mailbox. 
If not using the default mailbox, this is
exchangeImpersonationMailbox  string  Get/Post 
the impersonation mailbox. 

Calendar Commands
calendarItems
Key Type Get/Post Description
Unique meeting ID.  Used internally only, does not show up on
id string Get/Post display. Must be supplied in ‘3 rd-party’ mode; automatically
generated in ‘Microsoft Exchange’ mode.
long
startTime Get/Post Meeting start time in Unix epoch seconds.
int
long
endTime Get/Post Meeting end time in Unix epoch seconds.
int
Title of meeting that will show up on the display if meeting
title string Get/Post
names are enabled in the Dashboard.
Name of meeting organizer that will show up on the display if
organizer string Get/Post
enabled in the Dashboard.

29
Other APIs
Version and Update Control API
Solstice Host URLs:

l IPAddress/api/version/currentversion // returns JSON containing the field ‘currentVersion’ as


a string.
l IPAddress/api/version/updateavailable // returns JSON containing the bool field
‘isUpdateAvailable’. If this value is true, the string field ‘updateAvailableTo’ will be returned as
well.
l IPAddress/api/version/update // updates Pod to version returned as ‘updateAvailableTo’
value.

Passing RS-232 Controls API


Solstice Host URL: IPAddress/api/serial-passthru

The RS-232 support API allows administrators to pass RS-232 controls such as power, volume, and
input through to display monitors that support RS-232. Pods will have to connect to screens using a
USB to serial adapter and a null modem cable. However, not all USB/RS-232 adapters may be
supported. This functionality will only work with screens that support RS-232 controls.

Administrators will need to know the specific RS-232 code for the control they are trying to pass. For
details on those controls, please consult the user manual for the display.

An example of the API request:

http://<ip>/api/serial-passthru/send?data=XX

In the example above, XX is a placeholder for the characters to send. Instead of a blank space, use “+”
or “%20”. For any other non-alphanumeric character, use “%XX” where XX is the two digit
hexadecimal encoding for the character.

Other API-Related Tasks


l If you have multiple audio devices connected to a Solstice Pod, you can use the Open Control
API to override the Pod's default USB audio device prioritization. See Default USB Audio Device
Prioritization and Override for more information.

30
Stats API
Solstice Host URL: IPAddress/api/stats

The stats API reports statistics about the current status of the Solstice host. These stats are
instantaneous and can provide third-party developers with a snapshot of activity.

Global Stats Record


(Top Level)
Key Type Get/Post Description
This is the unique identifier that
Solstice uses to manage a single
m_displayId string Get
instance, regardless of how the display
is named or its current IP address
The current software version running
m_serverVersion string Get
on the Solstice host.
m_displayInformation
The name of the display, shown on
m_displayName string Get welcome screen and used for
discovery.
The name of the Solstice software
m_productName string Get
(Solstice).
The generation and type of Pod
m_productVariant string Get hardware as a name (Pod-only). For
example, ‘Gen1’ or ‘Pod Gen2’.
The Pod hardware generation as a
m_productHardwareVersion int Get version number (Pod-only).  For
example, 1 or 2.
m_statistics
Total number of posts currently shared
m_currentPostCount int Get
to the display.
Total network bandwidth being used
m_currentBandwidth int Get
in Mbps.
m_connectedUsers int Get Number of currently connected users.
Time since the device last has a
m_
int Get session initiated.  Returns in
timeSinceLastConnectionInitialize
milliseconds.
Number of current live sources such
m_currentLiveSourceCount int Get
as a capture card; for Windows

31
Display Software only.

32
Command API
Solstice Host URL: IPAddress/api/control

The Command API addresses runtime control of a Solstice host from a third-party application.
Commands are executed by issuing a GET to the URL that corresponds to the command to be
executed. The Command API does not make use of the JSON key/value records as the other APIs do.

Security is enforced by requiring password authentication when an administrator password has been
set. If an incorrect or no password is appended to the GET when one is needed, the command will be
ignored.

The URLs for each of the commands and their effects are listed below:

Command URL List


URL Impact
/api/control/clear Clears the display of all posts.
Boots all connected users and deletes all posts on the display. Returns
/api/control/boot
display to splash-screen.
/api/control/reboot Reboots host as soon as command is sent.
/api/control/restart Restarts the Solstice software without rebooting the hardware.
Replace the current screen key with a new random screen key for
/api/control/resetkey
connection authentication.
/api/control/suspend Goes into power management mode and suspends the display.
/api/control/wake Wakes a suspended display.

33
Solstice Discovery Services (SDS) API
SDS Server URL: IPAddress/api/discover

The SDS API reports statistics about the current status of the Solstice Discovery Service directory.
These stats are instantaneous and can provide third-party developers with a snapshot of all hosts
managed by this SDS server. Note that the target IP address must be the computer with SDS installed,
not a Pod or Windows Host. While SDS may be installed on the same machine as a Windows Host, the
API should not be used to call the server while the Solstice Software is active. In the Solstice
Dashboard, this the IP address shown in the SDS tab, below the "Configure Primary SDS Host" button.

Hitting a target URL of a Solstice host returns a single dictionary of key:value pairs pertaining to that
one host. [sds]/api/discover returns an array of dictionaries, where each dictionary contains the same
keys but different values, depending on the values associated with the host in question. For example,
sending a ‘GET’ to an SDS server with two associated hosts returns something similar to this:

{
"displays": [
{
"name": "Pikes Peak PC",
"id": "6cebfe86-3998-11e7-ab88-e09467b10fb1",
"ipv4": "192.168.3.31",
"port": 53100,
"user_count": 0,
"locked": false,
"airplay_enabled": false,
"session_capable": false,
"in_session": false,
"tags": []
},
{
"name": "Solstice Demo 01",
"id": "b242b840-4824-49d7-b5da-adb3a434a846",
"ipv4": "192.168.3.31",
"port": 53400,
"user_count": 0,
"locked": false,
"airplay_enabled": false,
"session_capable": false,
"in_session": false,

34
"tags": []
}
]

SDS Commands
display
Key Type Get/Post Description
name string Get Assigned name of the Solstice host.
This is the unique identifier that Solstice uses to manage a
id string Get single instance, regardless of how the display is named or its
current IP address.
ipv4 string Get IP address of Solstice host.
Base port for host. The base port is always used along with the
port int Get
next two sequential ports.
user_
int Get Number of users currently connected to the host.
count
locked bool Get Checks if the display is locked
airplay_
bool Get Checks if AirPlay mirroring is enabled for the display.
enabled
Checks if the display is capable of starting a session. Would
session_
bool Get return ‘false’ if the host is a Windows PC that does not have the
capable
Solstice Software actively running.
in_ Checks if host is involved in an active session, defined by one
bool Get
session or more connections.
(Only shows if display has assigned tags). Returns array of
dictionaries including the assigned tags’ tag names (“tag_
name”:string) and color (“tag_color_index”:int). There are four
colors of tag:
tags array Get n 0 = blue
n 1 = orange
n 2 = green
n 3 = pink
session_ Only shows if in_session=true. Returns nothing unless a session
string Get
name name has been assigned, such as for a Multi-Room meeting.
synced_ Only shows if in_session=true. Returns nothing unless multiple
array Get
display_ displays are synced to the session, and then returns array of

35
ids display IDs.

36
Valid Time Zone Values
The currently set time zone on a device is returned from the API call “timeZone” by id.  The API call
“timeZones” returns a string array of all available time zones.

ID Name Offset (ms) Offset (hrs)


Pacific/Midway GMT-11:00, Midway Island -39600000 -11
Pacific/Honolulu GMT-10:00, Hawaii -36000000 -10
America/Anchorage GMT-8:00, Alaska -28800000 -8
America/Los_Angeles GMT-7:00, Pacific Time -25200000 -7
America/Tijuana GMT-7:00, Tijuana -25200000 -7
America/Phoenix GMT-7:00, Arizona -25200000 -7
America/Chihuahua GMT-6:00, Chihuahua -21600000 -6
America/Denver GMT-6:00, Mountain Time -21600000 -6
America/Costa_Rica GMT-6:00, Central America -21600000 -6
America/Regina GMT-6:00, Saskatchewan -21600000 -6
America/Chicago GMT-5:00, Central Time -18000000 -5
America/Mexico_City GMT-5:00, Mexico City -18000000 -5
America/Bogota GMT-5:00, Bogota -18000000 -5
America/Caracas GMT-4:30, Venezuela -16200000 -4.5
America/New_York GMT-4:00, Eastern Time -14400000 -4
GMT-4:00, Atlantic Time
America/Barbados -14400000 -4
(Barbados)
America/Manaus GMT-4:00, Manaus -14400000 -4
GMT-3:00, Atlantic Time
America/Halifax -10800000 -3
(Canada)
America/Santiago GMT-3:00, Santiago -10800000 -3
America/Sao_Paulo GMT-3:00, Brasilia -10800000 -3
America/Argentina/Buenos_
GMT-3:00, Buenos Aires -10800000 -3
Aires
America/Montevideo GMT-3:00, Montevideo -10800000 -3
America/St_Johns GMT-2:30, Newfoundland -9000000 -2.5
America/Godthab GMT-2:00, Greenland -7200000 -2
Atlantic/South_Georgia GMT-2:00, Mid-Atlantic -7200000 -2
GMT-1:00, Cape Verde
Atlantic/Cape_Verde -3600000 -1
Islands
Atlantic/Azores GMT+0:00, Azores 0 0

37
Africa/Casablanca GMT+0:00, Casablanca 0 0
Europe/London GMT+1:00, London, Dublin 3600000 1
Africa/Windhoek GMT+1:00, Windhoek 3600000 1
Africa/Brazzaville GMT+1:00, W. Africa Time 3600000 1
GMT+2:00, Amsterdam,
Europe/Amsterdam 7200000 2
Berlin
Europe/Belgrade GMT+2:00, Belgrade 7200000 2
Europe/Brussels GMT+2:00, Brussels 7200000 2
Europe/Sarajevo GMT+2:00, Sarajev 7200000 2
Africa/Cairo GMT+2:00, Cairo 7200000 2
Africa/Harare GMT+2:00, Harare 7200000 2
Asia/Amman GMT+3:00, Amman, Jordan 10800000 3
Europe/Athens GMT+3:00, Athens, Istanbul 10800000 3
Asia/Beirut GMT+3:00, Beirut, Lebanon 10800000 3
Europe/Helsinki GMT+3:00, Helsinki 10800000 3
Asia/Jerusalem GMT+3:00, Jerusalem 10800000 3
Europe/Minsk GMT+3:00, Minsk 10800000 3
Asia/Baghdad GMT+3:00, Baghdad 10800000 3
Europe/Moscow GMT+3:00, Moscow 10800000 3
Asia/Kuwait GMT+3:00, Kuwait 10800000 3
Africa/Nairobi GMT+3:00, Nairobi 10800000 3
Asia/Tbilisi GMT+4:00, Tbilisi 14400000 4
Asia/Yerevan GMT+4:00, Yerevan 14400000 4
Asia/Duba GMT+4:00, Dubai 14400000 4
Asia/Tehran GMT+4:30, Tehran 16200000 4.5
Asia/Kabul GMT+4:30, Kabul 16200000 4.5
Asia/Baku GMT+5:00, Baku 18000000 5
GMT+5:00, Islamabad,
Asia/Karachi 18000000 5
Karachi
Asia/Oral GMT+5:00, Ural\’sk 18000000 5
Asia/Yekaterinburg GMT+5:00, Yekaterinburg 18000000 5
Asia/Calcutta GMT+5:30, Kolkata 19800000 5.5
Asia/Colombo GMT+5:30, Sri Lanka 19800000 5.5
Asia/Katmandu GMT+5:45, Kathmandu 20700000 5.75
Asia/Almaty GMT+6:00, Astana 21600000 6

38
Asia/Rangoon GMT+6:30, Yangon 23400000 6.5
Asia/Krasnoyarsk GMT+7:00, Krasnoyarsk 25200000 7
Asia/Bangkok GMT+7:00, Bangkok 25200000 7
Asia/Shanghai GMT+8:00, Beijing 28800000 8
Asia/Hong_Kong GMT+8:00, Hong Kong 28800000 8
Asia/Irkutsk GMT+8:00, Irkutsk 28800000 8
Asia/Kuala_Lumpur GMT+8:00, Kuala Lumpur 28800000 8
Australia/Perth GMT+8:00, Perth 28800000 8
Asia/Taipei GMT+8:00, Taipei 28800000 8
Asia/Seoul GMT+9:00, Seoul 32400000 9
Asia/Tokyo GMT+9:00, Tokyo, Osaka 32400000 9
Asia/Yakutsk GMT+9:00, Yakutsk 32400000 9
Australia/Adelaide GMT+9:30, Adelaide 34200000 9.5
Australia/Darwin GMT+9:30, Darwin 34200000 9.5
Australia/Brisbane GMT+10:00, Brisbane 36000000 10
Australia/Hobart GMT+10:00, Hobart 36000000 10
GMT+10:00, Sydney,
Australia/Sydney 36000000 10
Canberra
Asia/Vladivostok GMT+10:00, Vladivostok 36000000 10
Pacific/Guam GMT+10:00, Guam 36000000 10
Asia/Magadan GMT+10:00, Magadan 36000000 10
GMT+12:00, Marshall
Pacific/Majuro 43200000 12
Islands
Pacific/Auckland GMT+12:00, Auckland 43200000 12
Pacific/Fiji GMT+12:00, Fiji 43200000 12
Pacific/Tongatapu GMT+13:00, Tonga 46800000 13

39

You might also like