Назначение: управление физическими областями (Areas), а не абстрактными пространствами (Spaces).
{
"id": 2,
"type": "room",
"alias": "kitchen",
"display_name": "Кухня",
"parent_area_id": 0
}
/api/v1/areas/listПолучить список всех областей в системе
{
"status": true,
"data": {
"areas": [
{
"id": 2,
"type": "room",
"alias": "kitchen",
"display_name": "Кухня"
}
],
"total": 1
}
}
/api/v1/areas/id/{{area_id}}/listПолучить список вложенных областей указанной области (child areas).
{
"status": true,
"data": {
"areas": [
{
"id": 5,
"type": "room",
"alias": "bedroom",
"display_name": "Спальня"
}
],
"total": 1
}
}
{
"status": false,
"error_alias": "parent_area_not_found"
}
/api/v1/areas/new-areaДобавить новую физическую область.
{
"type": "room",
"alias": "kitchen",
"display_name": "Кухня"
}
{
"status": true,
"data": {
"alias": "kitchen",
"area": {
"id": 2,
"type": "room",
"alias": "kitchen",
"display_name": "Кухня"
}
}
}
{
"status": false,
"error_alias": "alias_already_exists", // empty_field | area_not_exists
"failed_fields": ["alias"] // display_name, type
}
/api/v1/areas/id/{{area_id}}/removeУдалить область.
Поведение:
{
"status": true
}
{
"status": false,
"error_alias": "invalid_id", // area_not_exists | undefined_error
"failed_fields": ["area_id"]
}
/api/v1/areas/place-in-areaПоместить одну область в другую (сделать вложенной).
{
"target_area_id": 5,
"place_in_area_id": 2
}
{
"status": true
}
{
"status": false,
"error_alias": "invalid_id", // area_not_exists | undefined_error
"failed_fields": ["target_area_id"] // place_in_area_id
}
/api/v1/areas/update-display-nameПереименовать область (изменить display_name).
{
"area_id": 2,
"display_name": "Кухня (1 этаж)"
}
{
"status": true,
"data": {
"alias": "kitchen",
"area": {
"id": 2,
"type": "room",
"alias": "kitchen",
"display_name": "Кухня (1 этаж)"
}
}
}
{
"status": false,
"error_alias": "invalid_id", // empty_field | area_not_exists | undefined_error
"failed_fields": ["display_name"]
}
/api/v1/areas/update-aliasИзменить alias области. Предупреждение: если alias используется в скриптах — это может сломать скрипты.
{
"area_id": 2,
"new_alias": "kitchen_floor_1"
}
{
"status": true,
"data": {
"alias": "kitchen_floor_1",
"area": {
"id": 2,
"type": "room",
"alias": "kitchen_floor_1",
"display_name": "Кухня"
}
}
}
{
"status": false,
"error_alias": "invalid_id", // empty_field | alias_already_exists | area_not_exists | undefined_error
"failed_fields": ["area_id"] // new_alias, alias,
}
/api/v1/areas/id/{{area_id}}/devicesПолучить список устройств, помещённых в область (включая вложенные области), т.к. вызывается get_inner_devices(true).
{
"status": true,
"data": {
"devices": [
{
"id": 12,
"alias": "pump_relay",
"name": "Реле помпы септика"
}
],
"total": 1
}
}
{
"status": false,
"error_alias": "invalid_id", // area_not_exists
"failed_fields": ["area_id"]
}
/api/v1/areas/id/{{area_id}}/unassign-from-areaОтвязать область от родительской области (сделать её верхнеуровневой). Устройства внутри области остаются. Ограничение: area_id должен быть числом > 1.
{
"status": true
}
{
"status": false,
"error_alias": "invalid_id", // area_not_exists | undefined_error
"failed_fields": ["area_id"]
}
/api/v1/areas/reboot_devices OR GET /api/v1/areas/id/{{area_id}}/reboot_devicesПерезагрузить все устройства, или все устройства находящиеся в указанной области (и вложенных областях)
{
"status": true,
"data": {
"results": {
"kitchen:pump_relay": {
"status": true
}
},
"total": 1
}
}
{
"status": false,
"error_alias": "area_not_exists"
}
/api/v1/areas/types/listПолучить список существующих пользовательских типов областей из БД.
{
"status": true,
"data": {
"types": ["room", "floor", "building"]
}
}