Configuration API v1
Solstice Pod 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 |
m_displayId | string | Get | This is the unique identifier that Solstice uses to manage a single instance, regardless of how the display is named or its current IP Address |
m_serverVersion | string | Get | The current software version running on the Solstice Pod |
m_productName | string | Get | The name of the Solstice software (Solstice). |
m_productVariant | string | Get | The generation and type of Pod hardware as a name. For example, ‘Gen1’ or ‘Gen2’ |
m_productHardwareVersion | int | Get | The Pod hardware generation as a version number (Pod-only). For example, 1 or 2. Software returns 9999. |
Solstice Display Communications Settings
m_displayInformation | |||
Key | Type | Get/Post | Description |
m_ipv4 | string | Get | The current primary IP Address assigned to the Solstice display/endpoint. |
m_displayName | string | Get/Post | The display name used for Solstice discovery. This name is shown on the Solstice splash-screen and appears in the client discovery list for connecting to the Solstice display. |
m_hostName | string | Get/Post | The Solstice Pod device’s current hostname. |
m_port | int | Get/Post | The base port that Solstice will use for TCP/IP communications. Solstice uses three ports defined by the base port value, +1, and +2. |
Global Display Settings
m_generalCuration | |||
Key | Type | Get/Post | Description |
language | string | Get/Post | A code that denotes the current language setting. Valid options are: “en_US” for US English, “ja_JP” for Japanese, “de_DE” for German, “fr_FR” for French, “es_ES” for Spanish, “zh_TW” for Traditional Chinese, and “xx”. |
showSplashScreen | bool | Get | Show or hide the splash screen background image when the splash-screen is visible. |
localConfigEnabled | bool | Get | Enable or disable access to the local Configuration Panel on the Solstice Pod (via mouse/keyboard). When disabled the onscreen configuration menu is no longer visible to users. |
browserConfigEnabled | bool | Get | If this is disabled, the API cannot interact with Solstice since it considers the API browser configuration. |
autoConnectOnClientLaunch | bool | Get/Post | Enable or disable quick-connect auto launch. |
hideOnLastClientDisconnect | bool | Get | Windows Only – hide the display software if no connections are active. |
launchOnClientConnect | bool | Get | Windows Only – bring display software to foreground when a connection is made. |
launchOnSystemStart | bool | Get | Windows Only – start display software when Windows machine boots. |
theme | int | Get | Windows Only – selects between the 6 preset themes. Zero indexed, so the options are 0-5. |
advancedRenderingEnabled | bool | Get/Post | Windows Only – enable (1) or disable (0) advanced rendering for better animations at the expense of Solstice processing cycles. |
hdmiOutDisplayMode | int | Post | Gen3 Pods Only – Change the dual display mode to Mirror (1), Seamless Extend (2), or Extend (3). |
inkEnabled | bool | Post | Enable or disable support for Solstice Ink. |
windowMode | int | Get | Windows Only – shows whether Solstice is displayed as window app (0), fixed size (1) , or fullscreen (2). |
windowTop | int | Get | Windows Only – if windowMode = 1, this is the top coordinate for the fixed window. |
windowLeft | int | Get | Windows Only – if windowMode = 1, this is the left coordinate for the fixed window. |
windowWidth | int | Get | Windows Only – if windowMode = 1, this is the width in pixels of the fixed window. |
windowHeight | int | Get | Windows Only – if windowMode = 1, this is the height in pixels of the fixed window. |
Authentication Modes
m_authenticationCuration | |||
Key | Type | Get/Post | Description |
authenticationMode | int | Get | Pre 3.0 Solstice only – security is open (0), screen key (1), password (2), moderated (3), or select at runtime (4) |
screenKeyEnabled | bool | Get/Post | Check whether screen is key protected |
moderatorApprovalDisabled | bool | Get/Post | Check whether moderator mode is enabled or disallowed |
sessionKey | string | Get | The current session key currently displayed 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, must 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 | |||||||||||||||||||||||||||||
Key | Type | Get/Post | Description | ||||||||||||||||||||||||||
connectionShowFlags | Bitwise flags (post as decimal int) | Get/Post | Bitwise flags for showing various connection related information on the 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. NoteNOTE: The modern splash screen only supports bits 4 through 8. Pod only. Windows Software returns 32 ‘1’s.
| ||||||||||||||||||||||||||
discoveryBroadcastEnabled | bool | Get/Post | Enable or Disable UDP Discovery broadcast. When enabled the Solstice Pod will broadcast discovery information on local network every 5 seconds allowing clients to discover and connect. | ||||||||||||||||||||||||||
publishToNameServer | bool | Get/Post | Publish discovery information to Solstice Discovery Service so clients can discover the Solstice Pod without the need for broadcast traffic/discovery. | ||||||||||||||||||||||||||
maximumConnections | int | Get/Post | The current number of maximum allowable simultaneous connections. Cannot be set past maximum allowable based on Solstice license. | ||||||||||||||||||||||||||
maximumLicensedConnections | int | Get | Number of maximum allowable simultaneous connections based on the installed license. | ||||||||||||||||||||||||||
maximumImageSize | int | Get/Post | Maximum size of an image, in bytes, shared by clients. Clients that share images past the maximum will automatically be resized (to save resources). | ||||||||||||||||||||||||||
maximumPublished | int | Get/Post | Maximum number of posts allowed. Users who post past this limit will be given a message that the system is busy. | ||||||||||||||||||||||||||
maximumAirPlayUsers | int | Get/Post | Maximum number of simultaneous AirPlay users allowed (ie iOS mirroring posts). Cannot be set higher than 4. | ||||||||||||||||||||||||||
sdsHostName | string | Get/Post | Primary hostname or IP Address of Solstice Discovery Service to list discovery information. | ||||||||||||||||||||||||||
sdsHostName2 | string | Get/Post | Secondary hostname or IP Address of Solstice Discovery Service to list discovery information. | ||||||||||||||||||||||||||
remoteViewMode | int | Get/Post | Enable or disable Browser Look-In feature. 0=disabled, 1=enabled, 2=allow users to toggle on/off at runtime. Passing a value other than 0,1, or 2 disables look-in. | ||||||||||||||||||||||||||
firewallMode | int | Get/Post | Modifies Dual-Network firewall (Pod only) to enable or disable internet traffic between two network 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). | ||||||||||||||||||||||||||
vlansEnabled | bool | Get | See if VLANs are enabled or disabled. For more information on how to set configurations, see VLANs. | ||||||||||||||||||||||||||
postTypeDesktopSupported | bool | Get/Post | Enable or disable support for PC/desktop full screen sharing. | ||||||||||||||||||||||||||
postTypeApplicationWindowSupported | bool | Get/Post | Enable or disable support for application window sharing. | ||||||||||||||||||||||||||
postTypeMediaFilesSupported | bool | Get/Post | Enable or disable support for image and video file sharing. | ||||||||||||||||||||||||||
postTypeAirPlaySupported | bool | Get/Post | Enable or disable support for iOS mirroring. | ||||||||||||||||||||||||||
postTypeAndroidMirroringSupported | bool | Get/Post | Enable or disable support for Android full screen mirroring. | ||||||||||||||||||||||||||
bonjourProxyEnabled | bool | Get/Post | Enable or disable the Bonjour Proxy feature that allows iOS users to discover display to mirror to via the Solstice App instead of the Bonjour protocol. | ||||||||||||||||||||||||||
ethernetEnabled | bool | Get/Post | Enable or disable the Ethernet network adapter (Pod-only). | ||||||||||||||||||||||||||
ethernetGatewayCheckEnabled | bool | Get/Post | Enable or disable the gateway check (Pod-only). | ||||||||||||||||||||||||||
wifiMode | int | Get/Post | Set the wireless network adaptor mode 0 = Off, 1 = Client Mode/Attach to existing wireless, 2= Wireless Access Point, 3 = Wireless Miracast. | ||||||||||||||||||||||||||
wifiAllowAdmin | bool | Get/Post | Enable or disable administrative access to Solstice configurations on the wireless network. | ||||||||||||||||||||||||||
localOTAEnabled | bool | Get/Post | Enable or disable Solstice locating software updates using a local web server. Useful when Pods don’t have direct or web proxy-based access to the Mersive web server for updates. The localOTAUrl value is used for the URL that would be used to find the updates. Learn more about Local OTA here. | ||||||||||||||||||||||||||
localOTAUrl | string | Get/Post | URL of the local web server and path to use when localOTAEnabled = true (localOTAUrl is ignored if localOTAEnabled = false). Useful when Pods don’t have direct or web proxy-based access to the Mersive web server for updates. | ||||||||||||||||||||||||||
bulletinEnabled | bool | Get/Post | Enable or disable bulletin text across top of Solstice-enabled Display | ||||||||||||||||||||||||||
bulletinText | string | Get/Post | Text to be displayed in bulletin | ||||||||||||||||||||||||||
emergencyEnabled | bool | Get/Post | Enable or disable the emergency broadcast | ||||||||||||||||||||||||||
emergencyText | bool | Get/Post | Text of emergency broadcast | ||||||||||||||||||||||||||
wifiConfig (Pod only) | |||||||||||||||||||||||||||||
ssid | string | Get/Post | SSID of the wireless network to connect to Solstice via wireless client mode. | ||||||||||||||||||||||||||
security | int | Get/Post | Security protocol of the Pod wireless network (Pod-only). 0=open, 1=WEP, 2=WPA, 3=WPA2, 4=EAP | ||||||||||||||||||||||||||
eap | int | Get/Post | EAP method of authentication when in EAP mode (Pod-only). 0=None, 1=PEAP, 2=TLS, 3=TTLS, 4=PWD, 5=SIM, 6=SIM | ||||||||||||||||||||||||||
phase2 | int | Get/Post | Phase2 authentication method. 0=None, 1=PAP, 2=MSCHAP, 3=MSCHAPv2, 4=GTC. | ||||||||||||||||||||||||||
password | string | Get/Post | Password used to authenticate to network. Get returns “*” | ||||||||||||||||||||||||||
dhcp | bool | Get/Post | Enable or disable DHCP protocol on wireless interface. | ||||||||||||||||||||||||||
staticIP | string | Get/Post | Static IP address to assign to device on wireless interface. | ||||||||||||||||||||||||||
gateway | string | Get/Post | Wireless interface gateway. | ||||||||||||||||||||||||||
prefixlength | int | Get/Post | Prefix setting for wireless interface. | ||||||||||||||||||||||||||
dns1 | string | Get/Post | First DNS for wireless interface. | ||||||||||||||||||||||||||
dns2 | string | Get/Post | Second DNS for wireless interface. | ||||||||||||||||||||||||||
apConfig (Pod only) | |||||||||||||||||||||||||||||
SSID | string | Get/Post | SSID for standalone wireless access point. | ||||||||||||||||||||||||||
SecurityMode | int | Get/Post | Security protocol for wireless interface when in WAP mode (Pod-only). 0=open, 3=WPA2. | ||||||||||||||||||||||||||
PSK | string | Get/Post | Password to use for authenticating users connecting to wireless access point. | ||||||||||||||||||||||||||
ethernet (Pod only) | |||||||||||||||||||||||||||||
dhcp | bool | Get/Post | Enable or disable DHCP for the Ethernet network interface. | ||||||||||||||||||||||||||
staticIP | string | Get/Post | Static IP to assign the device’s Ethernet network interface (Pod-only). | ||||||||||||||||||||||||||
gateway | string | Get/Post | Gateway IP Address for the Ethernet network interface (Pod-only). | ||||||||||||||||||||||||||
prefixLength | int | Get/Post | Prefix length value (netmask, Pod-only). | ||||||||||||||||||||||||||
dns1 | string | Get/Post | First DNS Server IP Address (Pod-only). | ||||||||||||||||||||||||||
dns2 | string | Get/Post | Second DNS Server IP Address (Pod-only). | ||||||||||||||||||||||||||
allowAdmin | bool | Get/Post | Enable or disable administrative access to Solstice configurations on the wireless network. | ||||||||||||||||||||||||||
vlans (Pod only) | |||||||||||||||||||||||||||||
label | string | Get/Post | Name of the network to be displayed on the Pod's welcome screen instructions. | ||||||||||||||||||||||||||
tag | int | Get/Post | Integer between 1 and 4094 that specifies your VLAN ID. | ||||||||||||||||||||||||||
enabled | bool | Get/Post | Enable or disable the VLAN settings. | ||||||||||||||||||||||||||
dhcp | bool | Get/Post | Enable or disable DHCP for the Ethernet network interface. | ||||||||||||||||||||||||||
staticIP | string | Get/Post | Static IP to assign the device’s Ethernet network interface (Pod-only). | ||||||||||||||||||||||||||
gateway | string | Get/Post | Gateway IP Address for the Ethernet network interface (Pod-only). | ||||||||||||||||||||||||||
prefixLength | int | Get/Post | Prefix length value (netmask, Pod-only). | ||||||||||||||||||||||||||
dns1 | string | Get/Post | First DNS Server IP Address (Pod-only). | ||||||||||||||||||||||||||
dns2 | string | Get/Post | Second DNS Server IP Address (Pod-only). | ||||||||||||||||||||||||||
allowAdmin | bool | Get/Post | Enable or disable administrative access to Solstice configurations on the network. | ||||||||||||||||||||||||||
httpProxyServerSettings | |||||||||||||||||||||||||||||
enabled | bool | Get/Post | Enable or disable use of an HTTP Proxy. | ||||||||||||||||||||||||||
ip | string | Get/Post | IP Address of HTTP proxy server. | ||||||||||||||||||||||||||
port | int | Get/Post | Communications port of HTTP proxy server. | ||||||||||||||||||||||||||
username | string | Get/Post | Username to be used when authenticating to the HTTP proxy server. | ||||||||||||||||||||||||||
password | string | Get/Post | Password to be used when authenticating to the HTTP proxy server. | ||||||||||||||||||||||||||
excludeLocalSubnet | bool | Get/Post | Enable or disable the setting that allows addresses on the same subnet as the Pod to bypass the proxy server. | ||||||||||||||||||||||||||
httpsProxyServerSettings | |||||||||||||||||||||||||||||
enabled | bool | Get/Post | Enable or disable use of an HTTPS Proxy. | ||||||||||||||||||||||||||
ip | string | Get/Post | IP Address of HTTPS proxy server. | ||||||||||||||||||||||||||
port | int | Get/Post | Communications port of HTTPS proxy server. | ||||||||||||||||||||||||||
username | string | Get/Post | Username to be used when authenticating to the HTTPS proxy server. | ||||||||||||||||||||||||||
password | string | Get/Post | Password to be used when authenticating to the HTTPS proxy server. | ||||||||||||||||||||||||||
excludeLocalSubnet | bool | Get/Post | Enable or disable the setting that allows addresses on the same subnet 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 keeps the Pod in dual network mode with the wireless settings still enabled but is not connected to a network. This was implemented to increase performance for streaming via Miracast.
Licensing
m_licenseCuration | |||
Key | Type | Get/Post | Description |
licenseStatus | int | Get | 0=No license; 1=Error reading license; 2=License OK; 3=License Expired |
trustFlags | int | Get | 7=fully trusted; <7 and the license isn’t trusted and must be repaired |
fulfillmentType | string | Get | “PUBLISHER ACTIVATION” or “TRIAL” |
enabled | bool | Get | Tells whether the license on the machine is enabled (1) or disabled (0) |
fulfillmentId | string | Get | A unique numerical ID used to distinguish between different machines |
entitlementId | string | Get | activation code used to activate the license on this machine |
productId | string | Get | “Solstice” |
suiteId | string | Get | Should be blank. Internal use. |
expirationDate | string | Get | “permanent” or the date the license will expire |
featureLine | string | Get | The license string returned from the license server |
numDaysToExpiration | int | Get | 999999999 if the license is permanent, otherwise the number of days until it expires |
maxUsers | string | Get | max number of users allowed by license. eg. “Unlimited”, “4” |
licensing_maxPosts | int | Get | maximum number of posts allowed by the license type. |
licensing_maxPostsIsConfigurable | bool | Get | Is the user allowed to change the value of maxPosts? |
licensing_atMaxPostsReplace | bool | Get | When the max post count is reached, should the next post replace (1) or not display (0)? |
licensing_maxUsers | int | Get | maximum users allowed (0=Unlimited) |
licensing_maxUsersIsConfigurable | bool | Get | Is the user allowed to change the value of maxUsers? |
licensing_remoteViewEnabled | bool | Get | Can remote view be enabled? |
licensing_remoteViewIsConfigurable | bool | Get | Is remote view able to be configured? |
licensing_runtimeAccessControls | bool | Get | Can users can select the runtime access (moderated, screen key, etc.)? |
Passwords
m_userGroupCuration | |||
Key | Type | Get/Post | Description |
adminPassword | string | Post | Administrative password for Solstice. Note – Get on this value will always return “unknown”. |
passwordValidationEnabled | bool | Get/Post | Enable/Disable validation of admin password using the following rules: • Minimum of 8 characters. • 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 |
autoDateTime | bool | Get/Post | Enable or disable the use of an NTP time server. If disabled, date and time is set manually. |
ntpServer | string | Get/Post | Non-default NTP time server IP Address. If left blank, a default internet time server will be used when autoDateTime is true. |
dateTime | int | Get | Date and time value, represented as a 64-bit integer in milliseconds since January 1, 1970, 00:00:00 GMT. |
timeZone | string | Get/Post | Time zone code represented as a string from the set of available time zones. |
timeZones | string array | Get | Array of available time zone strings. See the Valid Time Zone Values v1 topic. |
scheduledRestartEnabled | bool | Get/Post | Enable or disable a daily Pod restart. Restarting the pod helps refresh memory usage and maximize performance. |
scheduledRestartTime | string | Get/Post | View and set the time for the daily Pod restart. The format is “hh:mm”. Hours are 00 – 23 and minutes are 00 – 59. |
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.
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 Pod.
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 Pod.
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 4th 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 5th 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 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. |
weekdaysAllDay | bool | Get/Post | On weekdays power management applies all day. |
weekdaysBegin | string | Get/Post | When All Day is false, this is the hour and minute that power management starts. 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 inactivity until the Pod turns off the display. The accepted range is 1 – 120. |
weekdaysEnd | string | Get/Post | When All Day is false, this is the hour and minute that power management ends. The format is “hh:mm”. Hours are 00 – 23 and minutes are 00 – 59. |
weekendAllDay | bool | Get/Post | On weekends power management applies all day. |
weekendBegin | string | Get/Post | When All Day is false, this is the hour and minute that power management starts. The format is “hh:mm”. Hours are 00 – 23 and minutes are 00 – 59. |
weekendDelayMinutes | int | Get/Post | On weekdays this is the number of minutes of inactivity until the Pod turns off the display. The accepted range is 1 – 120. |
weekendEnd | string | Get/Post | When All Day is false, this is the hour and minute that power management ends. 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.
GET IPAddress/api/control/suspend immediately puts the Pod in standby mode.
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}
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 is 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}
Note
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
.