Skip to main content
Skip table of contents

Создание суб-пользователя

При создании суб-пользователя выбираются камеры, пермишены, группы, раскладки, которые будут доступны суб-пользователю.

Если среди пермишенов будут те, которые отвечают за аналитику, то тогда необходимо будет прислать в запросе количество лицензий того типа, к которому даётся доступ.

На текущий момент создавать суб-пользователей могут только пользователи, которые являются юридическими лицами. Перед добавлением идёт запрос в биллинг, если он прошел успешно, то суб-пользователь создаётся иначе 400 ошибка

При создании пользователей с большим количеством камер, необходимо будет послать несколько запросов. В одном запросе может быть до 500 камер. Подробнее см. ниже в описании параметра.

Для включения дополнительного функционала синхронизации на внешнем сервисе необходимо указать адрес, на который будет посылаться http запрос для тригера создания суб-пользователя на внешнем сервисе.

Сам адрес нужно указать в переменных (.env), а конкретно прописать переменную BILLING_URL_TO_STORE_SUB_USER.

Пример адреса: http://localhost:7082/api/vms/users/subusers

POST/api/v1/users/subusers

Headers

Authorization

Bearer token

Accept

application/json

X-Client

ios-cctv|android-cctv|thick-legal|web

X-UUID

unique device id

Body

json

JSON
{
    "name": "Пользователь",
    "email": "user@mail.com",
    "password": "password",
    "password_confirmation": "password",
    "analytic_l2": 1,
    "analytic_l3": 1,
    "cameras_to_attach": [
        752,
        758
    ],
    "layouts": [
        209
    ],
    "groups": [
        43
    ],
    "permissions": [
        15,
        13
    ],
    "marks": [
        19
    ]
}

namerequired

string

Имя суб-пользователя

emailrequired

string

Уникальный логин (используется email) для суб-пользователя

passwordrequired

string

Пароль для суб-пользователя

password_confirmationrequired

string

Повторный ввод пароля, чтобы убедиться, что пароль введен правильно

analytic_l1required

int

Количество лицензий аналитики уровня один, сколько сможет создать суб-пользователь, обязательно только в том случае, если есть пермишены для кейсов этой лицензии

analytic_l2required

int

Количество лицензий аналитики уровня два, сколько сможет создать суб-пользователь, обязательно только в том случае, если есть пермишены для кейсов этой лицензии

analytic_l3required

int

Количество лицензий аналитики уровня три, сколько сможет создать суб-пользователь, обязательно только в том случае, если есть пермишены для кейсов этой лицензии

cameras_to_attachrequired

array

Массив id камер, которые будут доступны суб-пользователю. В запросе можно прислать максимум 500 элементов. Если нужно будет больше, то нужно будет сразу после создания отправить Обновление суб-пользователя с остальными камерами

layoutsrequired

array

Массив id раскладок, которые будут доступны суб-пользователю

groupsrequired

array

Массив id групп, которые будут доступны суб-пользователю, даётся доступ именно к сущности группы, а не к камерам внутри группы, к ним нужно отдельно давать доступ

marksrequired

array

Массив id меток, которые будут доступны суб-пользователю, на web этого функционала нет, но api позволяет, но для доступа к метке необходим доступ к самой камере

Response

200

Успешный ответ

JSON
{
    "id": 44,
    "login": "user@mai.com",
    "name": "user@mai.com",
    "parent_id": 13,
    "permissions": [
        {
            "id": 22,
            "name": "camera-events-index",
            "display_name": "Просмотр событий камеры"
        },
        {
            "id": 240,
            "name": "analytic-cases-camera-obstacle",
            "display_name": "Бизнес-кейс - детекция повреждения / перекрытия / вандализма камеры"
        },
        {
            "id": 239,
            "name": "analytic-cases-line-intersection",
            "display_name": "Бизнес-кейс - детекция пересечения линии"
        },
        {
            "id": 49,
            "name": "analytic-cases-index",
            "display_name": "Список бизнес-кейсов"
        }
    ],
    "cameras": [
        {
            "id": 765,
            "group_id": 100,
            "status": "active",
            "type": "media_server_v2",
            "start_at": "2022-04-06 12:13:58",
            "created_at": "2022-01-27 20:16:28",
            "billing_id": null,
            "pretty_name": "Камера 1",
            "lat": null,
            "lng": null,
            "azimuth": null,
            "is_archive_recording": true,
            "is_bridge": false,
            "is_favorite": false,
            "user_status": "active",
            "name": "Камера 1"
        },
        {
            "id": 761,
            "group_id": 100,
            "status": "active",
            "type": "media_server_v2",
            "start_at": "2022-04-06 12:13:58",
            "created_at": "2022-01-27 20:10:24",
            "billing_id": null,
            "pretty_name": "Камера 2",
            "lat": null,
            "lng": null,
            "azimuth": null,
            "is_archive_recording": true,
            "is_bridge": false,
            "is_favorite": false,
            "user_status": "active",
            "name": "Камера 2"
        }
    ],
    "groups": [
        {
            "id": 43,
            "name": "test"
        }
    ],
    "layouts": [
        {
            "id": 209,
            "name": "01",
            "layout_template_id": 11,
            "layout_template": "Grid91",
            "user_id": 13,
            "grid": [
                null,
                {
                    "id": 753,
                    "group_id": 101,
                    "status": "active",
                    "type": "media_server_v2",
                    "start_at": "2022-04-06 12:13:58",
                    "created_at": "2022-01-27 19:48:31",
                    "billing_id": null,
                    "pretty_name": "Камера 3",
                    "pretty_text": "Камеры",
                    "short_address": "Камеры",
                    "full_address": "Камеры",
                    "lat": null,
                    "lng": null,
                    "azimuth": null,
                    "streams": [
                        {
                            "id": 748,
                            "type": "high",
                            "camera_id": 753,
                            "is_preview_from_server": true,
                            "is_archive_from_server": null,
                            "status": "active",
                            "has_sound": false,
                            "layout_priority": "reserve",
                            "width": 2048,
                            "height": 1536
                        },
                        {
                            "id": 749,
                            "type": "low",
                            "camera_id": 753,
                            "is_preview_from_server": true,
                            "is_archive_from_server": null,
                            "status": "active",
                            "has_sound": false,
                            "layout_priority": "main",
                            "width": 2048,
                            "height": 1536
                        }
                    ],
                    "services": {
                        "ptz": false,
                        "motion_detect": false
                    },
                    "has_sound": false,
                    "is_archive_recording": true,
                    "is_bridge": false,
                    "is_favorite": false,
                    "user_status": "active",
                    "name": "Камера 3"
                },
                null,
                {
                    "id": 765,
                    "group_id": 100,
                    "status": "active",
                    "type": "media_server_v2",
                    "start_at": "2022-04-06 12:13:58",
                    "created_at": "2022-01-27 20:16:28",
                    "billing_id": null,
                    "pretty_name": "Камера 1",
                    "pretty_text": "Камеры",
                    "short_address": "Камеры",
                    "full_address": "Камеры",
                    "lat": null,
                    "lng": null,
                    "azimuth": null,
                    "streams": [
                        {
                            "id": 772,
                            "type": "high",
                            "camera_id": 765,
                            "is_preview_from_server": true,
                            "is_archive_from_server": null,
                            "status": "active",
                            "has_sound": false,
                            "layout_priority": "reserve",
                            "width": 1920,
                            "height": 1080
                        },
                        {
                            "id": 773,
                            "type": "low",
                            "camera_id": 765,
                            "is_preview_from_server": true,
                            "is_archive_from_server": null,
                            "status": "active",
                            "has_sound": false,
                            "layout_priority": "main",
                            "width": 704,
                            "height": 576
                        }
                    ],
                    "services": {
                        "ptz": false,
                        "motion_detect": false
                    },
                    "has_sound": false,
                    "is_archive_recording": true,
                    "is_bridge": false,
                    "is_favorite": false,
                    "user_status": "active",
                    "name": "Камера 1"
                },
                null,
                null,
                null
            ],
            "created_at": "2021-09-15 18:50:19",
            "updated_at": "2022-02-08 09:41:30"
        }
    ],
    "marks": [
        {
            "id": 485887,
            "type": "mark",
            "type_pretty": "Метка",
            "title": "Новая метка",
            "can_delete": true,
            "from": "2022-02-18 07:43:40",
            "to": null,
            "camera_id": 752,
            "created_at": "2022-02-18 16:43:07",
            "updated_at": "2022-02-18 16:43:07"
        }
    ],
    "created_at": "2021-11-24 23:52:20",
    "updated_at": "2021-12-09 18:44:38",
    "access_token_id": null,
    "can_update_password": false,
    "analytic_license": [
        {
            "type": "analytic_l1",
            "type_pretty": "LIC-XXXX-YY-L1",
            "all": 1,
            "free": 1,
            "used": 0
        },
        {
            "type": "analytic_l2",
            "type_pretty": "LIC-XXXX-YY-L2",
            "all": 1,
            "free": 1,
            "used": 0
        },
        {
            "type": "analytic_l3",
            "type_pretty": "LIC-XXXX-YY-L3",
            "all": 1,
            "free": 1,
            "used": 0
        }
    ]
}
400

Если пользователь не является юридическим лицом и не получилось сделать запрос в биллинг

401

Токен авторизации не передан или не валидный, см. Получение токена

Пример

JSON
curl -k --location --request POST 'https://vms.local/api/v1/users/subusers' \
--header 'Authorization:Bearer token' \
--header 'Accept:application/json' \
--header 'X-Client:ios-cctv|android-cctv|thick-legal|web' \
--header 'X-UUID:unique device id' \
--header 'Content-Type: application/json \
--data-raw '{
    "name": "Пользователь",
    "email": "user@mail.com",
    "password": "password",
    "password_confirmation": "password",
    "analytic_l2": 1,
    "analytic_l3": 1,
    "cameras_to_attach": [
        752,
        758
    ],
    "layouts": [
        209
    ],
    "groups": [
        43
    ],
    "permissions": [
        15,
        13
    ],
    "marks": [
        19
    ]
}'
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.