diff --git a/validation_schemas/alexa_smart_home_message_schema.json b/validation_schemas/alexa_smart_home_message_schema.json index 969ea29..ed2435d 100644 --- a/validation_schemas/alexa_smart_home_message_schema.json +++ b/validation_schemas/alexa_smart_home_message_schema.json @@ -30,6 +30,14 @@ "type": "string", "minLength": 1 }, + "armState": { + "enum": [ + "ARMED_AWAY", + "ARMED_STAY", + "ARMED_NIGHT", + "DISARMED" + ] + }, "temperature": { "type": "object", "required": [ @@ -50,6 +58,15 @@ } } }, + "thermostatMode": { + "enum": [ + "AUTO", + "COOL", + "HEAT", + "ECO", + "OFF" + ] + }, "channel": { "type": "object", "additionalProperties": false, @@ -66,9 +83,86 @@ }, "minProperties": 1 }, + "equalizerBands": { + "enum": [ + "BASS", + "MIDRANGE", + "TREBLE" + ] + }, + "equalizerMode": { + "enum": [ + "MOVIE", + "MUSIC", + "NIGHT", + "SPORT", + "TV" + ] + }, "input": { - "type": "string", - "minLength": 1 + "enum": [ + "AUX 1", + "AUX 2", + "AUX 3", + "AUX 4", + "AUX 5", + "AUX 6", + "AUX 7", + "BLURAY", + "CABLE", + "CD", + "COAX 1", + "COAX 2", + "COMPOSITE 1", + "DVD", + "GAME", + "HD RADIO", + "HDMI 1", + "HDMI 2", + "HDMI 3", + "HDMI 4", + "HDMI 5", + "HDMI 6", + "HDMI 7", + "HDMI 8", + "HDMI 9", + "HDMI 10", + "HDMI ARC", + "INPUT 1", + "INPUT 2", + "INPUT 3", + "INPUT 4", + "INPUT 5", + "INPUT 6", + "INPUT 7", + "INPUT 8", + "INPUT 9", + "INPUT 10", + "IPOD", + "LINE 1", + "LINE 2", + "LINE 3", + "LINE 4", + "LINE 5", + "LINE 6", + "LINE 7", + "MEDIA PLAYER", + "OPTICAL 1", + "OPTICAL 2", + "PHONO", + "PLAYSTATION", + "PLAYSTATION 3", + "PLAYSTATION 4", + "SATELLITE", + "SMARTCAST", + "TUNER", + "TV", + "USB DAC", + "VIDEO 1", + "VIDEO 2", + "VIDEO 3", + "XBOX" + ] }, "volume": { "type": "integer", @@ -238,8 +332,10 @@ "es-MX", "fr-CA", "fr-FR", + "hi-IN", "it-IT", - "ja-JP" + "ja-JP", + "pt-BR" ] }, "text": { @@ -334,6 +430,22 @@ } } }, + "semantics": { + "actions": { + "enum": [ + "Alexa.Actions.Close", + "Alexa.Actions.Open", + "Alexa.Actions.Lower", + "Alexa.Actions.Raise" + ] + }, + "states": { + "enum": [ + "Alexa.States.Closed", + "Alexa.States.Open" + ] + } + }, "interfaces": { "Alexa": { "capabilities": { @@ -1364,14 +1476,7 @@ ] }, "value": { - "enum": [ - "HEAT", - "COOL", - "AUTO", - "ECO", - "OFF", - "CUSTOM" - ] + "$ref": "#/definitions/common.properties/thermostatMode" }, "timeOfSample": { "$ref": "#/definitions/common.properties/timestamp" @@ -1453,14 +1558,7 @@ "type": "array", "uniqueItems": true, "items": { - "type": "string", - "enum": [ - "HEAT", - "COOL", - "AUTO", - "ECO", - "OFF" - ] + "$ref": "#/definitions/common.properties/thermostatMode" } } } @@ -1698,7 +1796,8 @@ "required": [ "type", "interface", - "version" + "version", + "inputs" ], "additionalProperties": false, "properties": { @@ -1715,38 +1814,19 @@ "version": { "$ref": "#/definitions/common.properties/version" }, - "properties": { - "type": "object", - "required": [ - "supported", - "proactivelyReported", - "retrievable" - ], - "additionalProperties": false, - "properties": { - "supported": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "object", - "required": [ - "name" - ], - "additionalProperties": false, - "properties": { - "name": { - "enum": [ - "input" - ] - } - } + "inputs": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "name" + ], + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/definitions/common.properties/input" } - }, - "proactivelyReported": { - "type": "boolean" - }, - "retrievable": { - "type": "boolean" } } } @@ -1881,6 +1961,32 @@ } } }, + "StepSpeaker": { + "capabilities": { + "type": "object", + "required": [ + "type", + "interface", + "version" + ], + "additionalProperties": true, + "properties": { + "type": { + "enum": [ + "AlexaInterface" + ] + }, + "interface": { + "enum": [ + "Alexa.StepSpeaker" + ] + }, + "version": { + "$ref": "#/definitions/common.properties/version" + } + } + } + }, "SceneController": { "capabilities": { "type": "object", @@ -2034,10 +2140,96 @@ { "type": "boolean" }, + "nonControllable": { + "type": "boolean" + }, "readOnly":{ "type": "boolean" } } + }, + "semantics": { + "type": "object", + "anyOf": [ + { + "required": [ + "actionMappings" + ] + }, + { + "required": [ + "stateMappings" + ] + } + ], + "additionalProperties": false, + "properties": { + "actionMappings": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "@type", + "actions", + "directive" + ], + "additionalProperties": false, + "properties": { + "@type": { + "enum": [ + "ActionsToDirective" + ] + }, + "actions": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/common.properties/semantics/actions" + } + }, + "directive": { + "$ref": "#/definitions/common.properties/directives/toggleState" + } + } + } + }, + "stateMappings": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "@type", + "states", + "value" + ], + "additionalProperties": false, + "properties": { + "@type": { + "enum": [ + "StatesToValue" + ] + }, + "states": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/common.properties/semantics/states" + } + }, + "value": { + "enum": [ + "ON", + "OFF" + ] + } + } + } + } + } } } } @@ -2148,6 +2340,9 @@ "retrievable": { "type": "boolean" }, + "nonControllable": { + "type": "boolean" + }, "readOnly":{ "type": "boolean" } @@ -2199,6 +2394,86 @@ } } } + }, + "semantics": { + "type": "object", + "anyOf": [ + { + "required": [ + "actionMappings" + ] + }, + { + "required": [ + "stateMappings" + ] + } + ], + "additionalProperties": false, + "properties": { + "actionMappings": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "@type", + "actions", + "directive" + ], + "additionalProperties": false, + "properties": { + "@type": { + "enum": [ + "ActionsToDirective" + ] + }, + "actions": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/common.properties/semantics/actions" + } + }, + "directive": { + "$ref": "#/definitions/common.properties/directives/mode" + } + } + } + }, + "stateMappings": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "@type", + "states", + "value" + ], + "additionalProperties": false, + "properties": { + "@type": { + "enum": [ + "StatesToValue" + ] + }, + "states": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/common.properties/semantics/states" + } + }, + "value": { + "type": "string" + } + } + } + } + } } } } @@ -2307,6 +2582,9 @@ "retrievable": { "type": "boolean" }, + "nonControllable": { + "type": "boolean" + }, "readOnly":{ "type": "boolean" } @@ -2375,63 +2653,133 @@ } } } - } - } - } - }, - "DoorbellEventSource": { - "capabilities": { - "type": "object", - "required": [ - "type", - "interface", - "version" - ], - "additionalProperties": true, - "properties": { - "type": { - "enum": [ - "AlexaInterface" - ] - }, - "interface": { - "enum": [ - "Alexa.DoorbellEventSource" - ] - }, - "version": { - "$ref": "#/definitions/common.properties/version" - } - } - } - }, - "RTCSessionController": { - "capabilities": { - "type": "object", - "required": [ - "type", - "interface", - "version" - ], - "additionalProperties": true, - "properties": { - "type": { - "enum": [ - "AlexaInterface" - ] - }, - "interface": { - "enum": [ - "Alexa.RTCSessionController" - ] }, - "version": { - "$ref": "#/definitions/common.properties/version" - } - } - } + "semantics": { + "type": "object", + "anyOf": [ + { + "required": [ + "actionMappings" + ] + }, + { + "required": [ + "stateMappings" + ] + } + ], + "additionalProperties": false, + "properties": { + "actionMappings": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "@type", + "actions", + "directive" + ], + "additionalProperties": false, + "properties": { + "@type": { + "enum": [ + "ActionsToDirective" + ] + }, + "actions": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/common.properties/semantics/actions" + } + }, + "directive": { + "$ref": "#/definitions/common.properties/directives/rangeValue" + } + } + } + }, + "stateMappings": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "object", + "oneOf": [ + { + "required": [ + "@type", + "states", + "range" + ], + "additionalProperties": false, + "properties": { + "@type": { + "enum": [ + "StatesToRange" + ] + }, + "states": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/common.properties/semantics/states" + } + }, + "range": { + "type": "object", + "required": [ + "minimumValue", + "maximumValue" + ], + "additionalProperties": false, + "properties": { + "minimumValue": { + "type": "number" + }, + "maximumValue": { + "type": "number" + } + } + } + } + }, + { + "required": [ + "@type", + "states", + "value" + ], + "additionalProperties": false, + "properties": { + "@type": { + "enum": [ + "StatesToValue" + ] + }, + "states": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/common.properties/semantics/states" + } + }, + "value": { + "type": "number" + } + } + } + ] + } + } + } + } + } + } }, - "MediaMetadata": { + "DoorbellEventSource": { "capabilities": { "type": "object", "required": [ @@ -2448,7 +2796,7 @@ }, "interface": { "enum": [ - "Alexa.MediaMetadata" + "Alexa.DoorbellEventSource" ] }, "version": { @@ -2457,7 +2805,7 @@ } } }, - "EqualizerController": { + "RTCSessionController": { "capabilities": { "type": "object", "required": [ @@ -2474,7 +2822,7 @@ }, "interface": { "enum": [ - "Alexa.EqualizerController" + "Alexa.RTCSessionController" ] }, "version": { @@ -2483,7 +2831,7 @@ } } }, - "MotionSensor": { + "MediaMetadata": { "capabilities": { "type": "object", "required": [ @@ -2500,7 +2848,7 @@ }, "interface": { "enum": [ - "Alexa.MotionSensor" + "Alexa.MediaMetadata" ] }, "version": { @@ -2509,7 +2857,221 @@ } } }, - "ContactSensor": { + "EqualizerController": { + "bands": { + "property": { + "type": "object", + "required": [ + "namespace", + "name", + "value", + "timeOfSample", + "uncertaintyInMilliseconds" + ], + "additionalProperties": false, + "properties": { + "namespace": { + "enum": [ + "Alexa.EqualizerController" + ] + }, + "name": { + "enum": [ + "bands" + ] + }, + "value": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "name", + "value" + ], + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/definitions/common.properties/equalizerBands" + }, + "value": { + "type": "number" + } + } + } + }, + "timeOfSample": { + "$ref": "#/definitions/common.properties/timestamp" + }, + "uncertaintyInMilliseconds": { + "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds" + } + } + } + }, + "mode": { + "property": { + "type": "object", + "required": [ + "namespace", + "name", + "value", + "timeOfSample", + "uncertaintyInMilliseconds" + ], + "additionalProperties": false, + "properties": { + "namespace": { + "enum": [ + "Alexa.EqualizerController" + ] + }, + "name": { + "enum": [ + "mode" + ] + }, + "value": { + "$ref": "#/definitions/common.properties/equalizerMode" + }, + "timeOfSample": { + "$ref": "#/definitions/common.properties/timestamp" + }, + "uncertaintyInMilliseconds": { + "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds" + } + } + } + }, + "capabilities": { + "type": "object", + "required": [ + "type", + "interface", + "version", + "configurations" + ], + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "AlexaInterface" + ] + }, + "interface": { + "enum": [ + "Alexa.EqualizerController" + ] + }, + "version": { + "$ref": "#/definitions/common.properties/version" + }, + "configurations": { + "type": "object", + "additionalProperties": false, + "properties": { + "bands": { + "type": "object", + "additionalProperties": false, + "properties": { + "supported": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "name" + ], + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/definitions/common.properties/equalizerBands" + } + } + } + }, + "range": { + "type": "object", + "required": [ + "minimum", + "maximum" + ], + "additionalProperties": false, + "properties": { + "minimum": { + "type": "number" + }, + "maximum": { + "type": "number" + } + } + } + } + }, + "modes": { + "type": "object", + "additionalProperties": false, + "properties": { + "supported": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "name" + ], + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/definitions/common.properties/equalizerMode" + } + } + } + } + } + } + } + }, + "properties": { + "type": "object", + "required": [ + "supported", + "proactivelyReported", + "retrievable" + ], + "additionalProperties": false, + "properties": { + "supported": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "name" + ], + "additionalProperties": false, + "properties": { + "name": { + "enum": [ + "bands", + "modes" + ] + } + } + } + }, + "proactivelyReported": { + "type": "boolean" + }, + "retrievable": { + "type": "boolean" + } + } + } + } + } + }, + "PlaybackController": { "capabilities": { "type": "object", "required": [ @@ -2517,7 +3079,7 @@ "interface", "version" ], - "additionalProperties": true, + "additionalProperties": false, "properties": { "type": { "enum": [ @@ -2526,11 +3088,511 @@ }, "interface": { "enum": [ - "Alexa.ContactSensor" + "Alexa.PlaybackController" ] }, - "version": { - "$ref": "#/definitions/common.properties/version" + "version": { + "$ref": "#/definitions/common.properties/version" + }, + "supportedOperations": { + "type": "array", + "uniqueItems": true, + "items": { + "enum": [ + "Play", + "Pause", + "Stop", + "StartOver", + "Previous", + "Next", + "Rewind", + "FastForward" + ] + } + } + } + } + }, + "PlaybackStateReporter": { + "playbackState": { + "property": { + "type": "object", + "required": [ + "namespace", + "name", + "value", + "timeOfSample", + "uncertaintyInMilliseconds" + ], + "additionalProperties": false, + "properties": { + "namespace": { + "enum": [ + "Alexa.PlaybackStateReporter" + ] + }, + "name": { + "enum": [ + "playbackState" + ] + }, + "value": { + "type": "object", + "required": [ + "state" + ], + "additionalProperties": false, + "properties": { + "state": { + "enum": [ + "PLAYING", + "PAUSED", + "STOPPED" + ] + } + } + }, + "timeOfSample": { + "$ref": "#/definitions/common.properties/timestamp" + }, + "uncertaintyInMilliseconds": { + "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds" + } + } + } + }, + "capabilities": { + "type": "object", + "required": [ + "type", + "interface", + "version" + ], + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "AlexaInterface" + ] + }, + "interface": { + "enum": [ + "Alexa.PlaybackStateReporter" + ] + }, + "version": { + "$ref": "#/definitions/common.properties/version" + }, + "properties": { + "type": "object", + "required": [ + "supported", + "proactivelyReported", + "retrievable" + ], + "additionalProperties": false, + "properties": { + "supported": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "name" + ], + "additionalProperties": false, + "properties": { + "name": { + "enum": [ + "playbackState" + ] + } + } + } + }, + "proactivelyReported": { + "type": "boolean" + }, + "retrievable": { + "type": "boolean" + } + } + } + } + } + }, + "MotionSensor": { + "detectionState": { + "property": { + "type": "object", + "required": [ + "namespace", + "name", + "value", + "timeOfSample", + "uncertaintyInMilliseconds" + ], + "additionalProperties": false, + "properties": { + "namespace": { + "enum": [ + "Alexa.MotionSensor" + ] + }, + "name": { + "enum": [ + "detectionState" + ] + }, + "value": { + "enum": [ + "DETECTED", + "NOT_DETECTED" + ] + }, + "timeOfSample": { + "$ref": "#/definitions/common.properties/timestamp" + }, + "uncertaintyInMilliseconds": { + "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds" + } + } + } + }, + "capabilities": { + "type": "object", + "required": [ + "type", + "interface", + "version" + ], + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "AlexaInterface" + ] + }, + "interface": { + "enum": [ + "Alexa.MotionSensor" + ] + }, + "version": { + "$ref": "#/definitions/common.properties/version" + }, + "properties": { + "type": "object", + "required": [ + "supported", + "proactivelyReported", + "retrievable" + ], + "additionalProperties": false, + "properties": { + "supported": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "name" + ], + "additionalProperties": false, + "properties": { + "name": { + "enum": [ + "detectionState" + ] + } + } + } + }, + "proactivelyReported": { + "type": "boolean" + }, + "retrievable": { + "type": "boolean" + } + } + } + } + } + }, + "ContactSensor": { + "detectionState": { + "property": { + "type": "object", + "required": [ + "namespace", + "name", + "value", + "timeOfSample", + "uncertaintyInMilliseconds" + ], + "additionalProperties": false, + "properties": { + "namespace": { + "enum": [ + "Alexa.ContactSensor" + ] + }, + "name": { + "enum": [ + "detectionState" + ] + }, + "value": { + "enum": [ + "DETECTED", + "NOT_DETECTED" + ] + }, + "timeOfSample": { + "$ref": "#/definitions/common.properties/timestamp" + }, + "uncertaintyInMilliseconds": { + "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds" + } + } + } + }, + "capabilities": { + "type": "object", + "required": [ + "type", + "interface", + "version" + ], + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "AlexaInterface" + ] + }, + "interface": { + "enum": [ + "Alexa.ContactSensor" + ] + }, + "version": { + "$ref": "#/definitions/common.properties/version" + }, + "properties": { + "type": "object", + "required": [ + "supported", + "proactivelyReported", + "retrievable" + ], + "additionalProperties": false, + "properties": { + "supported": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "name" + ], + "additionalProperties": false, + "properties": { + "name": { + "enum": [ + "detectionState" + ] + } + } + } + }, + "proactivelyReported": { + "type": "boolean" + }, + "retrievable": { + "type": "boolean" + } + } + } + } + } + }, + "SecurityPanelController": { + "alarmState": { + "property": { + "type": "object", + "required": [ + "namespace", + "name", + "value", + "timeOfSample", + "uncertaintyInMilliseconds" + ], + "additionalProperties": false, + "properties": { + "namespace": { + "enum": [ + "Alexa.SecurityPanelController" + ] + }, + "name": { + "enum": [ + "burglaryAlarm", + "fireAlarm", + "carbonMonoxideAlarm", + "waterAlarm" + ] + }, + "value": { + "enum": [ + "OK", + "ALARM" + ] + }, + "timeOfSample": { + "$ref": "#/definitions/common.properties/timestamp" + }, + "uncertaintyInMilliseconds": { + "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds" + } + } + } + }, + "armState": { + "property": { + "type": "object", + "required": [ + "namespace", + "name", + "value", + "timeOfSample", + "uncertaintyInMilliseconds" + ], + "additionalProperties": false, + "properties": { + "namespace": { + "enum": [ + "Alexa.SecurityPanelController" + ] + }, + "name": { + "enum": [ + "armState" + ] + }, + "value": { + "$ref": "#/definitions/common.properties/armState" + }, + "timeOfSample": { + "$ref": "#/definitions/common.properties/timestamp" + }, + "uncertaintyInMilliseconds": { + "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds" + } + } + } + }, + "capabilities": { + "type": "object", + "required": [ + "type", + "interface", + "version", + "configuration" + ], + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "AlexaInterface" + ] + }, + "interface": { + "enum": [ + "Alexa.SecurityPanelController" + ] + }, + "version": { + "$ref": "#/definitions/common.properties/version" + }, + "properties": { + "type": "object", + "required": [ + "supported", + "proactivelyReported", + "retrievable" + ], + "additionalProperties": false, + "properties": { + "supported": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "name" + ], + "additionalProperties": false, + "properties": { + "name": { + "enum": [ + "armState", + "burglaryAlarm", + "fireAlarm", + "carbonMonoxideAlarm", + "waterAlarm" + ] + } + } + } + }, + "proactivelyReported": { + "type": "boolean" + }, + "retrievable": { + "type": "boolean" + } + } + }, + "configuration": { + "type": "object", + "additionalProperties": false, + "properties": { + "supportedAuthorizationTypes": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "type" + ], + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "FOUR_DIGIT_PIN" + ] + } + } + } + }, + "supportedArmStates": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "required": [ + "value" + ], + "additionalProperties": false, + "properties": { + "value": { + "$ref": "#/definitions/common.properties/armState" + } + } + } + } + } } } } @@ -2595,6 +3657,27 @@ }, { "$ref": "#/definitions/common.properties/interfaces/ModeController/mode/property" + }, + { + "$ref": "#/definitions/common.properties/interfaces/EqualizerController/bands/property" + }, + { + "$ref": "#/definitions/common.properties/interfaces/EqualizerController/mode/property" + }, + { + "$ref": "#/definitions/common.properties/interfaces/PlaybackStateReporter/playbackState/property" + }, + { + "$ref": "#/definitions/common.properties/interfaces/MotionSensor/detectionState/property" + }, + { + "$ref": "#/definitions/common.properties/interfaces/ContactSensor/detectionState/property" + }, + { + "$ref": "#/definitions/common.properties/interfaces/SecurityPanelController/alarmState/property" + }, + { + "$ref": "#/definitions/common.properties/interfaces/SecurityPanelController/armState/property" } ] } @@ -2608,6 +3691,82 @@ } } }, + "directives": { + "mode": { + "type": "object", + "required": [ + "name", + "payload" + ], + "additionalProperties": false, + "properties": { + "name": { + "enum": [ + "SetMode", + "AdjustMode" + ] + }, + "payload": { + "oneOf": [ + { + "$ref": "#/definitions/common.properties/payload/mode" + }, + { + "$ref": "#/definitions/common.properties/payload/modeDelta" + } + ] + } + } + }, + "rangeValue": { + "type": "object", + "required": [ + "name", + "payload" + ], + "additionalProperties": false, + "properties": { + "name": { + "enum": [ + "SetRangeValue", + "AdjustRangeValue" + ] + }, + "payload": { + "oneOf": [ + { + "$ref": "#/definitions/common.properties/payload/rangeValue" + }, + { + "$ref": "#/definitions/common.properties/payload/rangeValueDelta" + } + ] + } + } + }, + "toggleState": { + "type": "object", + "required": [ + "name", + "payload" + ], + "additionalProperties": false, + "properties": { + "name": { + "enum": [ + "TurnOn", + "TurnOff" + ] + }, + "payload": { + "type": "object", + "additionalProperties": false, + "properties": {}, + "maxProperties": 0 + } + } + } + }, "payload": { "cameraStreams": { "type": "object", @@ -2627,6 +3786,58 @@ } } }, + "mode": { + "type": "object", + "required": [ + "mode" + ], + "additionalProperties": false, + "properties": { + "mode": { + "type": "string" + } + } + }, + "modeDelta": { + "type": "object", + "required": [ + "modeDelta" + ], + "additionalProperties": false, + "properties": { + "modeDelta": { + "type": "integer" + } + } + }, + "rangeValue": { + "type": "object", + "required": [ + "rangeValue" + ], + "additionalProperties": false, + "properties": { + "rangeValue": { + "type": "number" + } + } + }, + "rangeValueDelta": { + "type": "object", + "required": [ + "rangeValueDelta", + "rangeValueDeltaDefault" + ], + "additionalProperties": false, + "properties": { + "rangeValueDelta": { + "type": "number" + }, + "rangeValueDeltaDefault": { + "type": "boolean" + } + } + }, "sceneActivationDeactivation": { "type": "object", "required": [ @@ -2642,6 +3853,17 @@ "$ref": "#/definitions/common.properties/timestamp" } } + }, + "securityPanelArm": { + "type": "object", + "additionalProperties": false, + "properties": { + "exitDelayInSeconds": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + } } }, "discoveredEndpointArray": { @@ -2699,6 +3921,23 @@ "SMARTLOCK", "SCENE_TRIGGER", "ACTIVITY_TRIGGER", + "SECURITY_PANEL", + "COMPUTER", + "EXTERIOR_BLIND", + "FAN", + "GAME_CONSOLE", + "GARAGE_DOOR", + "INTERIOR_BLIND", + "LAPTOP", + "MOBILE_PHONE", + "MUSIC_SYSTEM", + "NETWORK_HARDWARE", + "OVEN", + "PHONE", + "SCREEN", + "STREAMING_DEVICE", + "TABLET", + "WEARABLE", "OTHER" ] } @@ -2761,6 +4000,9 @@ { "$ref": "#/definitions/common.properties/interfaces/Speaker/capabilities" }, + { + "$ref": "#/definitions/common.properties/interfaces/StepSpeaker/capabilities" + }, { "$ref": "#/definitions/common.properties/interfaces/SceneController/capabilities" }, @@ -2788,11 +4030,20 @@ { "$ref": "#/definitions/common.properties/interfaces/EqualizerController/capabilities" }, + { + "$ref": "#/definitions/common.properties/interfaces/PlaybackController/capabilities" + }, + { + "$ref": "#/definitions/common.properties/interfaces/PlaybackStateReporter/capabilities" + }, { "$ref": "#/definitions/common.properties/interfaces/ContactSensor/capabilities" }, { "$ref": "#/definitions/common.properties/interfaces/MotionSensor/capabilities" + }, + { + "$ref": "#/definitions/common.properties/interfaces/SecurityPanelController/capabilities" } ] } @@ -2945,6 +4196,35 @@ } } }, + "header.SecurityPanelController": { + "type": "object", + "required": [ + "namespace", + "name", + "payloadVersion", + "messageId" + ], + "additionalProperties": false, + "properties": { + "namespace": { + "enum": [ + "Alexa.SecurityPanelController" + ] + }, + "name": { + "$ref": "#/definitions/ErrorResponse.properties/name" + }, + "payloadVersion": { + "$ref": "#/definitions/common.properties/payloadVersion" + }, + "messageId": { + "$ref": "#/definitions/common.properties/messageId" + }, + "correlationToken": { + "$ref": "#/definitions/common.properties/correlationToken" + } + } + }, "header.ColorTemperatureController": { "type": "object", "required": [ @@ -3171,6 +4451,50 @@ "$ref": "#/definitions/common.properties/temperature" } } + }, + "payload.SecurityPanelController.general": { + "type": "object", + "required": [ + "type" + ], + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "AUTHORIZATION_REQUIRED", + "BYPASS_NEEDED", + "NOT_READY", + "UNAUTHORIZED", + "UNCLEARED_ALARM", + "UNCLEARED_TROUBLE" + ] + }, + "message": { + "$ref": "#/definitions/common.properties/message" + } + } + }, + "payload.ColorTemperatureController.NOT_SUPPORTED_IN_CURRENT_MODE": { + "type": "object", + "required": [ + "type" + ], + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "NOT_SUPPORTED_IN_CURRENT_MODE" + ] + }, + "message": { + "$ref": "#/definitions/common.properties/message" + }, + "currentDeviceMode": { + "enum": [ + "COLOR" + ] + } + } } }, "ResponseOrStateReport.properties": { @@ -3180,7 +4504,8 @@ "StateReport", "ActivationStarted", "DeactivationStarted", - "AcceptGrant.Response" + "AcceptGrant.Response", + "Arm.Response" ] }, "with.payload": { @@ -3214,7 +4539,8 @@ "namespace": { "enum": [ "Alexa.CameraStreamController", - "Alexa.SceneController" + "Alexa.SceneController", + "Alexa.SecurityPanelController" ] }, "name": { @@ -3241,6 +4567,9 @@ }, { "$ref": "#/definitions/common.properties/payload/sceneActivationDeactivation" + }, + { + "$ref": "#/definitions/common.properties/payload/securityPanelArm" } ], "minProperties": 1 @@ -3280,7 +4609,8 @@ "namespace": { "enum": [ "Alexa", - "Alexa.Authorization" + "Alexa.Authorization", + "Alexa.SecurityPanelController" ] }, "name": { @@ -3401,6 +4731,34 @@ } } }, + { + "additionalProperties": false, + "properties": { + "header": { + "$ref": "#/definitions/ErrorResponse.properties/header.SecurityPanelController" + }, + "endpoint": { + "$ref": "#/definitions/common.properties/endpoint" + }, + "payload": { + "$ref": "#/definitions/ErrorResponse.properties/payload.SecurityPanelController.general" + } + } + }, + { + "additionalProperties": false, + "properties": { + "header": { + "$ref": "#/definitions/ErrorResponse.properties/header.ColorTemperatureController" + }, + "endpoint": { + "$ref": "#/definitions/common.properties/endpoint" + }, + "payload": { + "$ref": "#/definitions/ErrorResponse.properties/payload.ColorTemperatureController.NOT_SUPPORTED_IN_CURRENT_MODE" + } + } + }, { "additionalProperties": false, "properties": {