Управление пользователями

Учётные записи используются для идентификации запросов к API сервиса: для этого имя учётной записи пользователя передаётся в токене аутентификации. Учётная запись пользователя всегда является частью домена. Полномочия пользователя определяются назначенными ему ролями.

Получение информации о текущем пользователе

Для получения данных о текущем пользователе отправьте GET-запрос к /user. Используйте параметр запроса _detailed = true, чтобы получить данные учётной записи и сведения о группах и домене пользователя, или _detailed = false для получения информации только об учётной записи.

Пример запроса на получение полной информации о пользователе

curl -X GET \
--header 'Accept: application/json' \
--header 'Authorization: AR-REST dGVzdF91c2VyQHRlc3RfZG9tYWluOjE0ODM2MzQ3MjM6OTk5OTk5OTk5OjN3ZzgyRXVUd2VjMjkvT3ZRN215eUE9PQ==' \
'https://b2b-api.spectrumdata.ru/b2b/api/v1/user/_content=true'

Пример информации о пользователе

{
  "state": "ok",
  "size": 1,
  "stamp": "2021-09-16T08:11:16.540Z",
  "data": [
    {
      "login": "test_user@test_domain",
      "email": "test_user@spectrumdata.ru",
      "contacts": " тел. +7 111-111-11-11",
      "state": "ACTIVE",
      "domain_uid": "test_domain",
      "domain": {
        "state": "ACTIVE",
        "roles": "CLIENT,USER",
        "uid": "test_domain",
        "name": "Домен для системы тестирования",
        "comment": "Домен для системы тестирования test_domain",
        "tags": "test",
        "created_at": "2021-07-07T07:38:48.312Z",
        "created_by": "system",
        "updated_at": "2021-08-26T08:46:58.599Z",
        "updated_by": "system",
        "active_from": "1900-01-01T00:00:00.000Z",
        "active_to": "3000-01-01T00:00:00.000Z"
      },
      "groups": [
        {
          "roles": "USER",
          "uid": "USERS@test_domain",
          "name": "Пользователи",
          "comment": "",
          "tags": "",
          "created_at": "2021-07-07T07:38:48.326Z",
          "created_by": "system",
          "updated_at": "2021-08-26T08:46:58.696Z",
          "updated_by": "system",
          "active_from": "1900-01-01T00:00:00.000Z",
          "active_to": "3000-01-01T00:00:00.000Z"
        }
      ],
      "roles": "ADMIN,DOMAIN,ALL_REPORTS_READ,ALL_REPORTS_WRITE",
      "data": {},
      "uid": "test_user@test_domain",
      "name": "Пользователь для системы тестирования",
      "comment": "Пользователь для системы тестирования",
      "tags": "",
      "created_at": "2021-07-07T07:38:48.357Z",
      "created_by": "system",
      "updated_at": "2021-08-26T08:46:58.825Z",
      "updated_by": "system",
      "active_from": "1900-01-01T00:00:00.000Z",
      "active_to": "3000-01-01T00:00:00.000Z"
    }
  ]
}

Создание и обновление пользователей

Для создания новых или изменения существующих учётных записей пользователей отправьте POST-запрос к /domain/users. В теле запроса передайте параметры учётной записи.

Если пользователя с указанным uid ещё нет в системе, он будет создан. Если такой пользователь уже существует, то будут обновлены параметры этой учётной записи, указанные в теле запроса.

Возможные статусы пользователя: ACTIVATION_REQUIRED, ACTIVE, BANNED.

Группы, в которых состоит пользователь, перечисляются в массиве groups_refs. Для исключения пользователя из группы перед её идентификатором указывается префикс ! или -. Если группа с указанным идентификатором не существует, она будет проигнорирована.

Пример запроса на обновление данных пользователя

curl -X GET \
--header 'Accept: application/json' \
--header 'Authorization: AR-REST dGVzdF91c2VyQHRlc3RfZG9tYWluOjE0ODM2MzQ3MjM6OTk5OTk5OTk5OjN3ZzgyRXVUd2VjMjkvT3ZRN215eUE9PQ==' \
'https://b2b-api.spectrumdata.ru/b2b/api/v1//domain/users'

Пример тела запроса на обновление данных пользователя

{
  "data": [
    {
      "uid": "test_user@test_domain",
      "name": "Пользователь для системы тестирования",
      "comment": "Пользователь для системы тестирования",
      "email": "test_user@spectrumdata.ru",
      "contacts": " тел. +7 111-111-11-11",
      "roles": "ADMIN",
      "pass_hash": "ICy5YqxZB1uWSwcVLSNLcA==",
      "groups_refs": [
        "USERS1",
        "-USERS2",
        "!USERS3"
      ]
    },
    {
      "uid": "test_user1@test_domain",
      "name": "Пользователь для системы тестирования_1",
      "comment": "Пользователь для системы тестирования",
      "email": "test_user1@spectrumdata.ru",
      "contacts": " тел. +7 111-111-11-11",
      "roles": "ADMIN,DOMAIN_ADMIN,ALL_REPORTS_READ,ALL_REPORTS_WRITE",
      "pass_hash": "A1QQQQQQQT1R9w==",
      "groups_refs": [
        "USERS1"
      ]
    }
  ]
}

Пример ответа при успешной обработке запроса

{
  "state": "ok",
  "size": 1,
  "stamp": "2021-09-16T13:30:34.612Z",
  "data": [
    true
  ]
}

Создание и обновление групп пользователей

Для создания новых или изменения существующих групп пользователей отправьте POST-запрос к /domain/groups. В теле запроса передайте параметры группы.

Если группы с указанным uid ещё нет в системе, она будет создана. Если такая группа существует, то будут обновлены параметры группы, указанные в теле запроса.

Пример запроса на обновление группы пользователя

curl -X GET \
--header 'Accept: application/json' \
--header 'Authorization: AR-REST dGVzdF91c2VyQHRlc3RfZG9tYWluOjE0ODM2MzQ3MjM6OTk5OTk5OTk5OjN3ZzgyRXVUd2VjMjkvT3ZRN215eUE9PQ==' \
'https://b2b-api.spectrumdata.ru/b2b/api/v1/domain/groups'

Пример тела запроса на обновление группы пользователей

{
  "data": [
    {
      "uid": "USERS",
      "name": "Пользователи",
      "roles": "USER"
    },
    {
      "uid": "OPERATORS",
      "name": "Операторы",
      "roles": "OPERATOR"
    }
  ]
}

Пример ответа при успешной обработке запроса

{
  "state": "ok",
  "size": 1,
  "stamp": "2021-09-17T07:04:20.390Z",
  "data": [
    true
  ]
}

Система разграничения прав доступа

Для доступа к управлению доменом (конечные точки раздела /domain) пользователь должен иметь роль ADMIN. Для выполнения пользовательских запросов (конечные точки раздела /user) пользователь должен иметь роль USER.

Доступ к операциям с отчётами определяется разрешениями для типа отчёта. Роль пользователя определяет права доступа ко всем отчётам домена.

Операция Разрешения Роль
Генерация нового отчёта WRITE_REPORT ALL_REPORTS_WRITE
Просмотр содержимого отчёта READ_REPORT_CONTENT ALL_REPORTS_READ
Получение списка отчётов READ_REPORT_LIST