Notification about device state change
Notifies Yandex Smart Home about the changed device state.
Example situation when the current request is sent: the user passed the motion sensor, the sensor triggered.
Note
The notification service is available only for published skills. If your skill is still under development, you can make it private for the testing period so that external users can't access it.
Request format
POST https://dialogs.yandex.net/api/v1/skills/{skill_id}/callback/state
Request headers
Parameter |
Description |
Required |
Authorization |
Authorization token of the skill owner. |
Yes |
Content-Type |
The format of sent/submitted data. Possible values: application/json. |
Yes, in operations with HTTP POST |
Request body format
{
"ts": Float,
"payload": {
"user_id": String,
"devices": [{
"id": String,
"status": String,
"capabilities": [
"<capability1>": Object,
"<capability2>": Object
...
],
"properties": [
"<property1>": Object,
"<property2>": Object
...
]
}]
}
}
Parameter |
Type |
Description |
Required |
ts |
Float |
Time of the event in seconds (UNIX timestamp format). |
Yes |
payload |
Object |
Object with devices. |
Yes |
payload
object
Parameter |
Type |
Description |
Required |
user_id |
String |
User identifier sent in response to the Information about user devices request. |
Yes |
devices |
Array of objects |
Array of the devices that changed their state. |
Yes |
devices
object
Parameter |
Type |
Description |
Required |
id |
String |
Device ID. It must be unique among all the manufacturer's devices. |
Yes |
status |
String |
Device status. Acceptable values:
If the device is unavailable, the |
No |
capabilities |
Array of objects |
Array with information about the new states of capabilities of the devices. |
Yes, if the |
properties |
Array of objects |
Array with information about the new states of properties. |
Yes, if the |
capabilities
object
Parameter |
Type |
Description |
Required |
<capability1> |
Object |
Describing a new capability state. For more information about the list of available capabilities and their parameters, see About capabilities. The format for describing a new state is the same as used in the response to the Information about the states of user devices. |
No |
<capability2> |
Object |
Describing a new capability state. For more information about the list of available capabilities and their parameters, see About capabilities. The format for describing a new state is the same as used in the response to the Information about the states of user devices. |
No |
properties
object
Parameter |
Type |
Description |
Required |
<property1> |
Object |
Description of the new property state. For more information about the list of available properties and their parameters, see About properties. The format for describing a new state is the same as used in the response to the Information about the states of user devices. |
No |
<property2> |
Object |
Description of the new property state. For more information about the list of available properties and their parameters, see About properties. The format for describing a new state is the same as used in the response to the Information about the states of user devices. |
No |
Example of a request when the device status changes
curl -i -X POST 'https://dialogs.yandex.net/api/v1/skills/user-test-skill/callback/state' \ -H 'Authorization: OAuth 123qwe456a...' \ -H 'Content-Type: application/json' \ -d '{ "ts": 1602703322.1, "payload": { "user_id": "provider-user-id-1", "devices": [{ "id": "sensor-001-snsr", "status": "offline" }] } }'
Response format
HTTP/1.1 202 Accepted
{
"request_id": String,
"status": "ok"
}
Parameter |
Type |
Description |
Required |
request_id |
String |
Request ID. Must be logged for the purpose of incident investigation. |
Yes |
status |
String |
Status of processing the request. Acceptable values:
|
Yes |
HTTP/1.1 400
{
"request_id": String,
"status": "error",
"error_code": String,
"error_message": String
}
Parameter |
Type |
Description |
Required |
request_id |
String |
Request ID. Must be logged for the purpose of incident investigation. |
Yes |
status |
String |
Status of processing the request. Acceptable values:
|
Yes |
error_code |
String |
Error code. Acceptable values:
|
No |
error_message |
String |
Error message. |
No |
Example
RequestResponse successfulResponse with error
curl -i -X POST 'https://dialogs.yandex.net/api/v1/skills/user-test-skill/callback/state' \ -H 'Authorization: OAuth 123qwe456a...' \ -H 'Content-Type: application/json' \ -d '{ "ts": 1602703322.1, "payload": { "user_id": "provider-user-id-1", "devices": [{ "id": "sensor-001-snsr", "capabilities": [], "properties": [{ "type": "devices.properties.event", "state": { "instance": "motion", "value": "detected" } }] }] } }'
HTTP/1.1 202 Accepted { "request_id": "75442486-0878-440c-9db1-a7006c25a39f", "status": "ok" }
HTTP/1.1 400 { "request_id": "same-as-in-request", "status": "error", "error_code": "UNKNOWN_USER", "error_message": "User not found" }
Floating-point number with a precision of 6-9 decimal digits.
String enclosed in quotation marks, for example: "Hello, world"
.
List of "key": value
pairs separated by commas. The list is enclosed in curly brackets {}
.
{
"name": "John",
"surname": "Smith"
}
An array of elements separated by a comma. As array items, you can use standard JSON elements: a string, number, true
, false
, object, or array. Arrays are enclosed in square brackets []
:
"cities": ["Moscow", "Tokyo", "New York"]
ID of the skill invoked (assigned at creation).
To find out your skill ID, open the skill in the developer console: you can copy the skill ID in the General information tab at the bottom of the page.