Newer
Older
smart-home-server / docs / server-api-v1 / groups.md

Групы пользователей

  • В основном это нужно для назначения прав пользователям.
  • Группами пользователей может управлять только администратор или выше.

Group STRUCT

    {
        "id": 42,
        "alias": "home",
        "name": "Домашняя группа",
        "description": "Возможно написать короткое описание группы. Может пригодится например для описания правил или инструкции",
        "permissions": [
            {
                "type": "device", // "device" | "script"
                "id": 8, // Описывает право доступа к девайсу или скрипту с этим id 
                "access": "granted_at", // "granted" | "denied" | "granted_at"
                "granted_at": "05:00-18:30" // Если access = granted_at, то добавляется поле с указанием ренджа времени суток
            },
            ...
        ],
        "update_at": "2025-07-29 19:45",
        "create_at": "2025-07-28 18:35"
    }

GET /api/v1/groups/list

Получить список существующих груп

  • Примечание: Доступно лишь админу и выше.

Пример ответа

    {
        "status": "ok",
        "groups": {
            group_struct...
        },
        "total": 6
    }

Пример НЕ успешного ответа. Не хватает прав

    {
        "status": "error",
        "message": "Permissions error" // "Permission error"
    }

POST /api/v1/groups/new

Добавить новую групу.

  • Все права по умолчанию будут отключены.
  • Создавать группу может только админ или выше.

Пример запроса

    {
        "alias": "home", // Required
        "name": "Домашняя группа", // Required
        "description": "Возможно написать короткое описание группы. Может пригодится например для описания правил или инструкции"
    }

Пример ответа

    {
        "status": "ok",
        "group": group_struct...
    }

Пример НЕ успешного ответа. Не хватает прав

    {
        "status": "error",
        "message": "Permissions error" 
    }

Пример НЕ успешного ответа. Невалидные поля

    {
        "status": "error",
        "field": "alias", // alias | name
        "message": "Alias already exists"
    }

GET /api/v1/groups/id/{{id}} OR GET /api/v1/groups/alias/{{alias}}

Получить группу по id

Пример ответа

    {
        "status": "ok",
        "group": group_struct...
    }

POST /api/v1/groups/id/{{id}}/add_user

Добавить пользователя в группу

  • Доступно лишь админу и выше

Пример запроса

    {
        "user_id": 12
    }

GET /api/v1/groups/id/{{id}}/users OR GET /api/v1/groups/alias/{{alias}}/users

Получить список пользователей группы

Пример ответа

    {
        "status": "ok",
        "users": [
            user_struct...
        ],
        "total": 11
    }

GET /api/v1/groups/id/{{id}}/remove

Удалить группу, пользователи в этой группе должны стать безправными.

  • Доступно лишь админу и выше

Пример ответа

    {
        "status": "ok",
        "user": user_struct...
    }

Пример НЕ успешного ответа

    {
        "status": "error",
        "message": "User not found" // | "Permission error"
    }

POST /api/v1/groups/id/{{id}}/update

Редактировать группу

Пример запроса

    {
        "name": "Changed name",
        "description": "Something else"
    }

Пример ответа

    {
        "status": "ok",
        "group": group_struct...
    }

POST /api/v1/groups/id/{{id}}/permissions/update

Редактировать флаги доступа к устройствам и скриптам

Пример запроса

    {
        "permissions": {
            "id": 8, // Редактируем право доступа к девайсу или скрипту с этим id 
            "access": "granted_at", // устанавливаем "granted" | "denied" | "granted_at"
            "granted_at": "05:00-18:30" // Если access = granted_at, то добавляется поле с указанием ренджа времени суток
        }
    }

Пример ответа

    {
        "status": "ok",
        "group": group_struct...
    }

Пример НЕ успешного ответа

    {
        "status": "error",
        "message": "Device or script not found" // | "Permission error"
    }