Presentations
Update a Capability Presentation
Changed onUpdate a Capability presentation. Note: This API functionality is in BETA
put/capabilities/{capabilityId}/{capabilityVersion}/presentation
Request
- Base URLhttps://api.smartthings.com/v1
- AuthOAuth 2Implicithttps://auth-global.api.smartthings.comScopesw:customcapability
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Headers
X-ST-Organizationstring ^(?:([0-9a-fA-F]{32})|([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))$
Organization id. If not provided, default user organization will be used.
Request body
Example request
{
"dashboard": {
"states": [
{
"label": "Motion: {{motion.value}}",
"alternatives": [
{
"key": "detected",
"value": "Detected",
"type": "active"
},
{
"key": "clear",
"value": "None",
"type": "inactive"
}
]
}
],
"actions": [
{
"displayType": "switch",
"switch": {
"command": {
"name": "setLock",
"on": "locked",
"off": "unlocked"
},
"state": {
"value": "lock.value",
"on": "locked",
"off": "unlocked"
}
}
}
],
"panelItems": [
{
"label": "Volume",
"displayType": "stepper",
"stepper": {
"command": {
"name": "setVolume"
},
"state": {
"value": "volume.value",
"label": "{{volume.value}}"
},
"step": 1,
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value",
"availableSize": [
"1x1",
"2x1",
"4x1"
]
}
}
]
},
"detailView": [
{
"label": "Front door",
"toggleSwitch": {
"command": {
"name": "setLock",
"on": "locked",
"off": "unlocked"
},
"state": {
"value": "lock.value",
"on": "locked",
"off": "unlocked"
}
},
"standbyPowerSwitch": {
"command": {
"name": "setLock",
"on": "locked",
"off": "unlocked"
},
"state": {
"value": "lock.value",
"on": "locked",
"off": "unlocked"
}
},
"switch": {
"command": {
"name": "setLock",
"on": "locked",
"off": "unlocked"
},
"state": {
"value": "lock.value",
"on": "locked",
"off": "unlocked"
}
},
"slider": {
"command": "setVolume",
"value": "volume.value"
},
"pushButton": {
"command": "setButton",
"argument": "push"
},
"textButton": {
"command": "setThermostatMode",
"value": "switch.value",
"buttons": [
{
"key": "cooling",
"label": "Cooling",
"state": "Cooling"
}
],
"supportedValues": "supportedThermostatModes.value"
},
"playPause": {
"command": {
"name": "setPlaybackState",
"play": "play",
"pause": "pause"
},
"state": {
"value": "playbackState.value",
"play": "playing",
"pause": "paused",
"alternatives": [
{
"key": "playing",
"value": "Playing",
"type": "active"
},
{
"key": "paused",
"value": "Paused",
"type": "inactive"
}
]
}
},
"playStop": {
"state": {
"value": "playbackState.value",
"play": "playing",
"stop": "stopped",
"alternatives": [
{
"key": "playing",
"value": "Playing",
"type": "active"
},
{
"key": "stopped",
"value": "Stopped",
"type": "inactive"
}
]
}
},
"list": {
"command": {
"name": "setCleaningMode",
"alternatives": [
{
"key": "spot",
"value": "Spot cleaning mode"
},
{
"key": "auto",
"value": "Auto cleaning mode"
}
]
},
"state": {
"value": "cleaningMode.value",
"alternatives": [
{
"key": "spot",
"value": "Spot cleaning mode"
},
{
"key": "auto",
"value": "Auto cleaning mode"
}
]
}
},
"textField": {
"command": "sendNotification",
"value": "notification.value"
},
"numberField": {
"value": "volume.value",
"unit": "volume.unit",
"command": "setVolume",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"stepper": {
"value": "volume.value"
},
"state": {
"label": "{{temperatureMeasurement.value}}",
"unit": "level.unit",
"alternatives": [
{
"key": "on",
"value": "Motion detected",
"iconUrl": "icon://example_icon_url"
}
]
},
"visibleCondition": {
"value": "switch.value",
"operator": "EQUALS",
"operand": "on"
}
}
],
"automation": {
"conditions": [
{
"label": "Audio volume",
"slider": {
"value": "volume.value"
},
"list": {
"value": "thermostatMode.value",
"alternatives": [
{
"key": "spot",
"value": "Spot cleaning mode",
"iconUrl": "preload://ic_thermostatmode_spot"
},
{
"key": "auto",
"value": "Auto cleaning mode",
"iconUrl": "preload://ic_thermostatmode_auto"
}
],
"multiSelectable": false
},
"dynamicList": {
"value": "switch.value",
"valueType": "string",
"supportedValues": {
"value": "supportedSwitchModes.value",
"valueMap": {
"key": "{{it.id}}",
"value": "{{it.name}}"
}
},
"alternatives": [
{
"key": "on",
"value": "Motion detected",
"iconUrl": "icon://example_icon_url"
}
]
},
"numberField": {
"value": "volume.value",
"unit": "volume.unit",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"textField": {
"value": "notification.value"
},
"enumSlider": {
"value": "dustHealthConcern.value",
"alternatives": [
{
"key": "hazardous",
"value": "Hazardous"
},
{
"key": "veryUnhealthy",
"value": "Very Unhealthy"
},
{
"key": "unhealthy",
"value": "Unhealthy"
},
{
"key": "moderate",
"value": "Moderate"
},
{
"key": "good",
"value": "Good"
}
],
"supportedOperators": [
{
"operator": "EQUALS",
"label": "Equals to"
},
{
"operator": "GREATER_THAN_OR_EQUALS",
"label": "Greater than or equals to"
}
]
},
"numberPicker": {
"value": "volume.value",
"unit": "volume.unit",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"visibleCondition": {
"value": "switch.value",
"operator": "EQUALS",
"operand": "on"
}
}
],
"actions": [
{
"label": "Audio volume",
"slider": {
"command": "setTemperature"
},
"list": {
"command": "setThermostatMode"
},
"dynamicList": {
"command": "setSwitchMode",
"argumentType": "string",
"supportedValues": {
"value": "supportedSwitchModes.value",
"valueMap": {
"key": "{{it.id}}",
"value": "{{it.name}}"
}
},
"alternatives": [
{
"key": "on",
"value": "Motion detected",
"iconUrl": "icon://example_icon_url"
}
]
},
"textField": {
"command": "sendNotification",
"range": [
0,
20
]
},
"numberField": {
"command": "setVolume",
"unit": "volume.unit",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"numberPicker": {
"command": "setVolume",
"unit": "volume.unit",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"multiArgCommand": {
"command": "playTrack",
"arguments": [
{
"label": "Audio volume",
"slider": {
"name": "level",
"range": [
0,
100
],
"unit": "level.unit"
},
"list": {
"name": "mode"
},
"textField": {
"name": "uri",
"range": [
5,
50
]
},
"numberField": {
"name": "level",
"unit": "level.unit",
"range": [
0,
10
]
}
}
],
"supportedValues": "supportedArguments.value"
},
"visibleCondition": {
"value": "switch.value",
"operator": "EQUALS",
"operand": "on"
}
}
]
},
"presentationSettings": {
"temperatureConversions": [
{
"value": "switch.value",
"unit": "level.unit"
}
]
}
}Response
The custom Capability presentation
Example response
{
"id": "audioVolume",
"version": 1,
"dashboard": {
"states": [
{
"label": "Motion: {{motion.value}}",
"alternatives": [
{
"key": "detected",
"value": "Detected",
"type": "active"
},
{
"key": "clear",
"value": "None",
"type": "inactive"
}
]
}
],
"actions": [
{
"displayType": "switch",
"switch": {
"command": {
"name": "setLock",
"on": "locked",
"off": "unlocked"
},
"state": {
"value": "lock.value",
"on": "locked",
"off": "unlocked"
}
}
}
],
"panelItems": [
{
"label": "Volume",
"displayType": "stepper",
"stepper": {
"command": {
"name": "setVolume"
},
"state": {
"value": "volume.value",
"label": "{{volume.value}}"
},
"step": 1,
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value",
"availableSize": [
"1x1",
"2x1",
"4x1"
]
}
}
]
},
"detailView": [
{
"label": "Front door",
"toggleSwitch": {
"command": {
"name": "setLock",
"on": "locked",
"off": "unlocked"
},
"state": {
"value": "lock.value",
"on": "locked",
"off": "unlocked"
}
},
"standbyPowerSwitch": {
"command": {
"name": "setLock",
"on": "locked",
"off": "unlocked"
},
"state": {
"value": "lock.value",
"on": "locked",
"off": "unlocked"
}
},
"switch": {
"command": {
"name": "setLock",
"on": "locked",
"off": "unlocked"
},
"state": {
"value": "lock.value",
"on": "locked",
"off": "unlocked"
}
},
"slider": {
"command": "setVolume",
"value": "volume.value"
},
"pushButton": {
"command": "setButton",
"argument": "push"
},
"textButton": {
"command": "setThermostatMode",
"value": "switch.value",
"buttons": [
{
"key": "cooling",
"label": "Cooling",
"state": "Cooling"
}
],
"supportedValues": "supportedThermostatModes.value"
},
"playPause": {
"command": {
"name": "setPlaybackState",
"play": "play",
"pause": "pause"
},
"state": {
"value": "playbackState.value",
"play": "playing",
"pause": "paused",
"alternatives": [
{
"key": "playing",
"value": "Playing",
"type": "active"
},
{
"key": "paused",
"value": "Paused",
"type": "inactive"
}
]
}
},
"playStop": {
"state": {
"value": "playbackState.value",
"play": "playing",
"stop": "stopped",
"alternatives": [
{
"key": "playing",
"value": "Playing",
"type": "active"
},
{
"key": "stopped",
"value": "Stopped",
"type": "inactive"
}
]
}
},
"list": {
"command": {
"name": "setCleaningMode",
"alternatives": [
{
"key": "spot",
"value": "Spot cleaning mode"
},
{
"key": "auto",
"value": "Auto cleaning mode"
}
]
},
"state": {
"value": "cleaningMode.value",
"alternatives": [
{
"key": "spot",
"value": "Spot cleaning mode"
},
{
"key": "auto",
"value": "Auto cleaning mode"
}
]
}
},
"textField": {
"command": "sendNotification",
"value": "notification.value"
},
"numberField": {
"value": "volume.value",
"unit": "volume.unit",
"command": "setVolume",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"stepper": {
"value": "volume.value"
},
"state": {
"label": "{{temperatureMeasurement.value}}",
"unit": "level.unit",
"alternatives": [
{
"key": "on",
"value": "Motion detected",
"iconUrl": "icon://example_icon_url"
}
]
},
"visibleCondition": {
"value": "switch.value",
"operator": "EQUALS",
"operand": "on"
}
}
],
"automation": {
"conditions": [
{
"label": "Audio volume",
"slider": {
"value": "volume.value"
},
"list": {
"value": "thermostatMode.value",
"alternatives": [
{
"key": "spot",
"value": "Spot cleaning mode",
"iconUrl": "preload://ic_thermostatmode_spot"
},
{
"key": "auto",
"value": "Auto cleaning mode",
"iconUrl": "preload://ic_thermostatmode_auto"
}
],
"multiSelectable": false
},
"dynamicList": {
"value": "switch.value",
"valueType": "string",
"supportedValues": {
"value": "supportedSwitchModes.value",
"valueMap": {
"key": "{{it.id}}",
"value": "{{it.name}}"
}
},
"alternatives": [
{
"key": "on",
"value": "Motion detected",
"iconUrl": "icon://example_icon_url"
}
]
},
"numberField": {
"value": "volume.value",
"unit": "volume.unit",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"textField": {
"value": "notification.value"
},
"enumSlider": {
"value": "dustHealthConcern.value",
"alternatives": [
{
"key": "hazardous",
"value": "Hazardous"
},
{
"key": "veryUnhealthy",
"value": "Very Unhealthy"
},
{
"key": "unhealthy",
"value": "Unhealthy"
},
{
"key": "moderate",
"value": "Moderate"
},
{
"key": "good",
"value": "Good"
}
],
"supportedOperators": [
{
"operator": "EQUALS",
"label": "Equals to"
},
{
"operator": "GREATER_THAN_OR_EQUALS",
"label": "Greater than or equals to"
}
]
},
"numberPicker": {
"value": "volume.value",
"unit": "volume.unit",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"visibleCondition": {
"value": "switch.value",
"operator": "EQUALS",
"operand": "on"
}
}
],
"actions": [
{
"label": "Audio volume",
"slider": {
"command": "setTemperature"
},
"list": {
"command": "setThermostatMode"
},
"dynamicList": {
"command": "setSwitchMode",
"argumentType": "string",
"supportedValues": {
"value": "supportedSwitchModes.value",
"valueMap": {
"key": "{{it.id}}",
"value": "{{it.name}}"
}
},
"alternatives": [
{
"key": "on",
"value": "Motion detected",
"iconUrl": "icon://example_icon_url"
}
]
},
"textField": {
"command": "sendNotification",
"range": [
0,
20
]
},
"numberField": {
"command": "setVolume",
"unit": "volume.unit",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"numberPicker": {
"command": "setVolume",
"unit": "volume.unit",
"range": [
0,
100
],
"supportedValues": "supportedVolumes.value"
},
"multiArgCommand": {
"command": "playTrack",
"arguments": [
{
"label": "Audio volume",
"slider": {
"name": "level",
"range": [
0,
100
],
"unit": "level.unit"
},
"list": {
"name": "mode"
},
"textField": {
"name": "uri",
"range": [
5,
50
]
},
"numberField": {
"name": "level",
"unit": "level.unit",
"range": [
0,
10
]
}
}
],
"supportedValues": "supportedArguments.value"
},
"visibleCondition": {
"value": "switch.value",
"operator": "EQUALS",
"operand": "on"
}
}
]
},
"presentationSettings": {
"temperatureConversions": [
{
"value": "switch.value",
"unit": "level.unit"
}
]
}
}Changes
- info
added the new optional
headerrequest parameterX-ST-Organization
- info