Протокол¶
Оглавление¶
-
keyapis/user/v1/keyapis_user_user_v1.proto
- DeleteUserResponse
- DeleteUserResponse.Error
- DeleteUserSessionsRequest
- DeleteUserSessionsResponse
- DeleteUserSessionsResponse.Error
- GetUserCodeRequest
- GetUserCodeResponse
- GetUserCodeResponse.Error
- GetUserCodeResponse.Error.UserCodeNotFound
- GetUserCountRequest
- GetUserCountResponse
- GetUserCountResponse.Error
- GetUserListRequest
- GetUserListResponse
- GetUserListResponse.Error
- GetUserRequest
- GetUserResponse
- GetUserResponse.Error
- PostUserCodeCreateRequest
- PostUserCodeCreateResponse
- PostUserCodeCreateResponse.Error
- PostUserRequest
- PostUserResponse
- PostUserResponse.Error
- User
- User.SavingError
- User.SavingError.Conflict
- User.SavingError.CreatorMustBeAdmin
- User.SavingError.EmailIsAlreadyTaken
- User.SavingError.EntityNotFound
- User.SavingError.MrfIdRequiredForUserType
- User.SavingError.RfIdDoesNotMatchMrfId
- User.SavingError.UserStatusForbidden
- User.SavingError.UserTypeForbidden
- UserCode
- UserFilter
- UserPaging
- User.Type
- UserPaging.DirectionType
- UserPaging.OrderByType
Схема классов¶
keyapis/user/v1/keyapis_user_user_v1.proto¶
Сервис реализует функционал управления пользователями
UserService¶
Сервис пользователей
| Название метода | Описание | Тип запроса | Тип ответа |
|---|---|---|---|
| GetUser | Метод получения пользователей. Метод доступен для: admin, service, manager, bti, ltp_first, owner, empolyee. Роли owner или employee могут запрашивать только пользователей, принадлежащих их компании | keyapis.user.v1.GetUserRequest | keyapis.user.v1.GetUserResponse |
| GetUserList | Метод получения списка пользователей. Метод доступен для: admin, service, manager, bti, ltp_first, owner, empolyee. Если метод вызван ролями owner или employee в фильтре поле company_ids принудительно замещается их company_id | keyapis.user.v1.GetUserListRequest | keyapis.user.v1.GetUserListResponse stream |
| GetUserCount | Метод получения количества пользователей. Метод доступен для: admin, service, manager, bti, ltp_first, owner, empolyee. Если метод вызван ролями owner или employee в фильтре поле company_ids принудительно замещается их company_id | keyapis.user.v1.GetUserCountRequest | keyapis.user.v1.GetUserCountResponse |
| DeleteUser | Метод удаления пользователей. Метод доступен для: admin, service | keyapis.user.v1.DeleteUserRequest | keyapis.user.v1.DeleteUserResponse |
| DeleteUserSessions | Метод удаления всех пользовательских сессий. Метод доступен для: admin, service | keyapis.user.v1.DeleteUserSessionsRequest | keyapis.user.v1.DeleteUserSessionsResponse |
| GetUserCode | Метод получения идентификационного кода пользователя. Метод доступен для: admin, service, ltp_first | keyapis.user.v1.GetUserCodeRequest | keyapis.user.v1.GetUserCodeResponse |
| PostUserCodeCreate | Метод создания идентификационного кода пользователя. После создания кода отправляется событие SendingSmsTask. Метод доступен для: admin, service, ltp_first | keyapis.user.v1.PostUserCodeCreateRequest | keyapis.user.v1.PostUserCodeCreateResponse |
| PostUser | Метод создания пользователя. Метод доступен для: admin, service. Доступно создание пользователей с типом: ADMIN, MRF, BTI, LTP_FIRST, SERVICE, DEVICE_ADMIN, MANAGER | keyapis.user.v1.PostUserRequest | keyapis.user.v1.PostUserResponse |
DeleteUserRequest¶
Запрос удаления пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| id | Идентификатор | int32 | REQUIRED |
DeleteUserResponse¶
Ответ на запрос удаления пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| error | Ошибка | optional keyapis.user.v1.DeleteUserResponse.Error |
DeleteUserResponse.Error¶
Ошибка запроса удаления пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибка валидации | optional keyapis.user.v1.ValidationError | |
| saving | Ошибка сохранения | optional keyapis.user.v1.User.SavingError |
DeleteUserSessionsRequest¶
Запрос удаления всех пользовательских сессий
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| id | Идентификатор пользователя. # Диапазон: 1..2147483647 | int32 | REQUIRED |
DeleteUserSessionsResponse¶
Ответ на запрос удаления всех пользовательских сессий
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| error | Ошибка | optional keyapis.user.v1.DeleteUserSessionsResponse.Error |
DeleteUserSessionsResponse.Error¶
Ошибка запроса
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибка валидации | optional keyapis.user.v1.ValidationError |
GetUserCodeRequest¶
Запрос получения идентификационного кода пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| id | Идентификатор. # Диапазон: 0..2147483647 | int32 | REQUIRED |
GetUserCodeResponse¶
Ответ на запрос получения идентификационного кода пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| data | Идентификационный код | optional keyapis.user.v1.UserCode | |
| error | Ошибка | optional keyapis.user.v1.GetUserCodeResponse.Error |
GetUserCodeResponse.Error¶
Ошибка запроса получения идентификационного кода пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибка валидации | optional keyapis.user.v1.ValidationError | |
| user_code_not_found | У пользователя отсутствует идентификационный код | optional keyapis.user.v1.GetUserCodeResponse.Error.UserCodeNotFound |
GetUserCodeResponse.Error.UserCodeNotFound¶
У пользователя отсутствует идентификационный код
GetUserCountRequest¶
Запрос получения количества пользователей
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| filter | Фильтр | keyapis.user.v1.UserFilter |
GetUserCountResponse¶
Ответ на запрос получения количества пользователей
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| data | Всего пользователей | optional int32 | |
| error | Ошибка | optional keyapis.user.v1.GetUserCountResponse.Error |
GetUserCountResponse.Error¶
Ошибка запроса получения количества пользователей
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибка валидации | optional keyapis.user.v1.ValidationError |
GetUserListRequest¶
Запрос на получение списка пользователей
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| filter | Фильтр | keyapis.user.v1.UserFilter | |
| paging | Стандартный постраничный вывод | optional keyapis.user.v1.UserPaging |
GetUserListResponse¶
Ответ на получение списка пользователей
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| data | Пользователь | optional keyapis.user.v1.User | |
| error | Ошибка | optional keyapis.user.v1.GetUserListResponse.Error |
GetUserListResponse.Error¶
Ошибка запроса получения списка пользователей
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибка валидации | optional keyapis.user.v1.ValidationError |
GetUserRequest¶
Запрос получения пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| id | Идентификатор | int32 | REQUIRED |
GetUserResponse¶
Ответ на запрос получения пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| data | Пользователь | optional keyapis.user.v1.User | |
| error | Ошибка | optional keyapis.user.v1.GetUserResponse.Error |
GetUserResponse.Error¶
Ошибка запроса получения пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибка валидации | optional keyapis.user.v1.ValidationError |
PostUserCodeCreateRequest¶
Запрос создания идентификационного кода пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| user_code | Идентификационный код пользователя | keyapis.user.v1.UserCode | REQUIRED |
PostUserCodeCreateResponse¶
Ответ на запрос создания идентификационного кода пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| data | Идентификационный код пользователя | optional keyapis.user.v1.UserCode | |
| error | Ошибка | optional keyapis.user.v1.PostUserCodeCreateResponse.Error |
PostUserCodeCreateResponse.Error¶
Ошибка запроса создания идентификационного кода пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибка валидации | optional keyapis.user.v1.ValidationError |
PostUserRequest¶
Запрос на создание пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| data | Пользователь | keyapis.user.v1.User | REQUIRED |
PostUserResponse¶
Ответ на запрос на создание пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| data | Пользователь | optional keyapis.user.v1.User | |
| error | Ошибка | optional keyapis.user.v1.PostUserResponse.Error |
PostUserResponse.Error¶
Ошибка запроса сохранения пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| validation | Ошибка валидации | optional keyapis.user.v1.ValidationError | |
| saving | Ошибка сохранения | optional keyapis.user.v1.User.SavingError |
User¶
Пользователь
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| id | Идентификатор. # Диапазон: 0..2147483647 | int32 | |
| type | Тип пользователя | keyapis.user.v1.User.Type | REQUIRED |
| status_type | Статус пользователя | keyapis.user.v1.User.StatusType | OUTPUT_ONLY |
| login | Логин. # Диапазон: 3..64 | google.protobuf.StringValue | |
| Электронная почта. # Диапазон: 4..256 | google.protobuf.StringValue | ||
| phone_number | Номер телефона. # Диапазон: 5..14 | google.protobuf.StringValue | |
| company_id | Идентификатор компании. # Диапазон: 1..2147483647 | google.protobuf.Int32Value | |
| mrf_id | Идентификатор МРФ | google.protobuf.Int32Value | |
| rf_id | Идентификатор РФ | google.protobuf.Int32Value | |
| created_at | Дата создания. # Тип: DateTime | google.protobuf.Timestamp | OUTPUT_ONLY |
| changed_at | Дата изменения. # Тип: DateTime | google.protobuf.Timestamp | |
| activated_at | Дата активации. # Тип: DateTime | google.protobuf.Timestamp | OUTPUT_ONLY |
| blocked_at | Дата активации. # Тип: DateTime | google.protobuf.Timestamp | OUTPUT_ONLY |
| creator_user_id | Идентификатор создавшего пользователя. Берется из токена. # Диапазон: 1..2147483647 | google.protobuf.Int32Value | OUTPUT_ONLY |
| owner_user_id | Идентификатор пользователя-владельца. # Диапазон: 1..2147483647 | google.protobuf.Int32Value | |
| invoice_email | Электронная почта для чеков. # Диапазон: 4..256 | google.protobuf.StringValue | |
| vc_user_id | Идентификатор пользователя в Видеонаблюдении. Вычисляется на стороне сервера при создании пользователя | google.protobuf.Int32Value | OUTPUT_ONLY |
| description | Описание | google.protobuf.StringValue | |
| ustore_user_id | Идентификатор пользователя в сервисе ustore. Вычисляется на стороне сервера при создании пользователя | google.protobuf.Int32Value | OUTPUT_ONLY |
| env_url | Адрес окружения для внутренних пользователей | google.protobuf.StringValue |
User.SavingError¶
Ошибка сохранения. Эти проверки выполняются при работе с базой данных и сторонними сервисами
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| conflict | Конфликт версий | optional keyapis.user.v1.User.SavingError.Conflict | |
| user_type_forbidden | Нельзя удалять пользователя с данным типом | optional keyapis.user.v1.User.SavingError.UserTypeForbidden | |
| user_status_forbidden | Нельзя удалять пользователя в текущем статусе | optional keyapis.user.v1.User.SavingError.UserStatusForbidden | |
| mrf_id_is_required_for_user_type | Идентификатор МРФ обязателен | optional keyapis.user.v1.User.SavingError.MrfIdRequiredForUserType | |
| creator_must_be_admin | Создатель пользователя должен иметь роль Admin | optional keyapis.user.v1.User.SavingError.CreatorMustBeAdmin | |
| rf_id_does_not_match_mrf_id | Идентификатор РФ не соответствует идентификатору МРФ | optional keyapis.user.v1.User.SavingError.RfIdDoesNotMatchMrfId | |
| email_is_already_taken | Email уже занят | optional keyapis.user.v1.User.SavingError.EmailIsAlreadyTaken | |
| entity_not_found | Связанная с пользователем сущность не найдена | optional keyapis.user.v1.User.SavingError.EntityNotFound |
User.SavingError.Conflict¶
Конфликт версий. Причины: - В базе хранится другая версия строки, значения changed_at отличаются
User.SavingError.CreatorMustBeAdmin¶
Создатель пользователя должен иметь роль Admin
User.SavingError.EmailIsAlreadyTaken¶
Email уже занят
User.SavingError.EntityNotFound¶
Связанная с пользователем сущность не найдена. Например: компания по company_id, пользователь по owner_user_id
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| field | Поле | string |
User.SavingError.MrfIdRequiredForUserType¶
Для данного типа пользователя идентификатор МРФ обязателен
User.SavingError.RfIdDoesNotMatchMrfId¶
Идентификатор РФ не соответствует идентификатору МРФ
User.SavingError.UserStatusForbidden¶
Нельзя удалять пользователя в текущем статусе. В каких статусах можно удалить пользователя: - demo
User.SavingError.UserTypeForbidden¶
Нельзя удалять пользователя с данным типом. Доступные типы: - Жилец (мастер)
UserCode¶
Идентификационный код пользователя
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| code | Идентификационный код. Если поле не заполнено, генерируется автоматически. # Диапазон: 10000..99999 | int32 | |
| user_id | Идентификатор пользователя. # Диапазон: 0..2147483647 | int32 | REQUIRED |
| created_at | Дата создания. # Тип: DateTime | google.protobuf.Timestamp | OUTPUT_ONLY |
| creator_user_id | Идентификатор создателя кода | int32 | OUTPUT_ONLY |
| creator_user_type | Тип создателя кода | keyapis.user.v1.User.Type | OUTPUT_ONLY |
UserFilter¶
Фильтр по пользователям
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| company_ids | По идентификаторам компаний | repeated int32 | |
| user_types | По типам | repeated keyapis.user.v1.User.Type | |
| user_status_types | По статусам | repeated keyapis.user.v1.User.StatusType | |
| emails | По электронной почте | repeated string | |
| phone_numbers | По номеру телефона | repeated string | |
| logins | По логину | repeated string | |
| text | Поиск по тексту. Если значение не передано то поиск по нему не производится. # Диапазон: 3..64. # Поиск производится по полям: # - Описание | google.protobuf.StringValue | |
| contacts | Поиск по контактным данным пользователя (электронная почта или номер телефона). Если значение не передано то поиск по нему не производится. # Диапазон: 3..64. # Поиск производится по полям: # - Электронная почта; # - Номер телефона | google.protobuf.StringValue |
UserPaging¶
Постраничный вывод
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| order_by_type | Тип значения сортировки. Если значение не передано, то будет взято значение по умолчанию. # По умолчанию: CHANGED_AT | keyapis.user.v1.UserPaging.OrderByType | |
| direction_type | Тип направления сортировки. # По умолчанию: DESC | keyapis.user.v1.UserPaging.DirectionType | |
| limit | Количество записей на страницу. Если значение 0 (не передано), то будет взято значение по умолчанию. # Диапазон: 0..100. # По умолчанию: 20 | int32 | |
| offset | Сдвиг. # Диапазон: 0..2147483647 | int32 |
ValidationError¶
Ошибки валидации. Эти проверки выполняются до обращения в базу данных
| Поле | Описание | Тип | Признак |
|---|---|---|---|
| path | Путь к полю в формате наименования прото | string | REQUIRED |
| message | Валидационное сообщение | string | REQUIRED |
User.StatusType¶
Справочник типов статусов пользователей.
Тип: byte¶
| Номер | Тип | Название |
|---|---|---|
| 0 | STATUS_TYPE_UNKNOWN | Значение не указано |
| 1 | NEW | Не активный пользователь |
| 2 | DEMO | Демо пользователь |
| 3 | ACTIVE | Активный пользователь |
| 4 | BLOCKED | Архивный пользователь |
User.Type¶
Справочник типов пользователей.
Тип: byte¶
| Номер | Тип | Название |
|---|---|---|
| 0 | TYPE_UNKNOWN | Значение не указано |
| 1 | OWNER | Владелец УК |
| 2 | EMPLOYEE | Сотрудник УК |
| 3 | MASTER | Мастер житель |
| 4 | SLAVE | Подчиненный житель |
| 5 | ADMIN | Администратор |
| 6 | SELLER | Сотрудники ГАП |
| 7 | MRF | МРФ |
| 8 | BACKOFFICE | ГРЗУК |
| 9 | SERVICE | Сервис |
| 10 | ROOT | Супер админ |
| 11 | BTI | Сотрудник БТИ |
| 12 | LTP_FIRST | Сотрудник 1 ЛТП |
| 13 | EXTERNAL_SELLER | Сотрудник ГАП |
| 14 | APPLICATION | Приложение |
| 15 | MANAGER | Администратор точек продаж |
| 16 | DEVICE_ADMIN | Администратор устройств |
UserPaging.DirectionType¶
Справочник типов направлений сортировки.
Тип: byte¶
| Номер | Тип | Название |
|---|---|---|
| 0 | DIRECTION_TYPE_UNKNOWN | Значение не указано |
| 1 | DESC | От большего к меньшему |
| 2 | ASC | От меньшего к большему |
UserPaging.OrderByType¶
Справочник типов значений сортировки.
Тип: byte¶
| Номер | Тип | Название |
|---|---|---|
| 0 | ORDER_BY_TYPE_UNKNOWN | Значение не указано |
| 1 | ID | По идентификатору |
| 2 | CREATED_AT | По времени создания |
| 3 | CHANGED_AT | По времени изменения |
| 4 | По электронной почте | |
| 5 | RANK | По рангу для поиска по тексту. Применяется когда передано поле для поиска по тексту. В случае если текстовое поле не передано, применяется значение по умолчанию |
| 6 | DESCRIPTION | По описанию (collate-agnostic ordering) |
Скалярные типы значений¶
| .proto Type | Примечание | Python | Go | Ruby | C# | C++ | Java | PHP |
|---|---|---|---|---|---|---|---|---|
| double | float | float64 | Float | double | double | double | float | |
| float | float | float32 | Float | float | float | float | float | |
| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| uint32 | Uses variable-length encoding. | int/long | uint32 | Bignum or Fixnum (as required) | uint | uint32 | int | integer |
| uint64 | Uses variable-length encoding. | int/long | uint64 | Bignum or Fixnum (as required) | ulong | uint64 | long | integer/string |
| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | int | uint32 | Bignum or Fixnum (as required) | uint | uint32 | int | integer |
| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | int/long | uint64 | Bignum | ulong | uint64 | long | integer/string |
| sfixed32 | Always four bytes. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| sfixed64 | Always eight bytes. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| bool | boolean | bool | TrueClass/FalseClass | bool | bool | boolean | boolean | |
| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | str/unicode | string | String (UTF-8) | string | string | String | string |
| bytes | May contain any arbitrary sequence of bytes. | str | []byte | String (ASCII-8BIT) | ByteString | string | ByteString | string |