# Протокол

## Оглавление

- [deviceapis/device/v1/deviceapis_device_user_v1.proto](#deviceapis_device_v1_deviceapis_device_user_v1-proto)
    - [UserService](#deviceapis-device-v1-UserService)
  
    - [DeleteUserRequest](#deviceapis-device-v1-DeleteUserRequest)
    - [DeleteUserResponse](#deviceapis-device-v1-DeleteUserResponse)
    - [GetUserListRequest](#deviceapis-device-v1-GetUserListRequest)
    - [GetUserListResponse](#deviceapis-device-v1-GetUserListResponse)
    - [PostUserNameReplaceRequest](#deviceapis-device-v1-PostUserNameReplaceRequest)
    - [PostUserNameReplaceRequest.ReplaceTo](#deviceapis-device-v1-PostUserNameReplaceRequest-ReplaceTo)
    - [PostUserNameReplaceResponse](#deviceapis-device-v1-PostUserNameReplaceResponse)
    - [PostUserPasswordReplaceRequest](#deviceapis-device-v1-PostUserPasswordReplaceRequest)
    - [PostUserPasswordReplaceRequest.ReplaceTo](#deviceapis-device-v1-PostUserPasswordReplaceRequest-ReplaceTo)
    - [PostUserPasswordReplaceResponse](#deviceapis-device-v1-PostUserPasswordReplaceResponse)
    - [PostUserPermissionReplaceRequest](#deviceapis-device-v1-PostUserPermissionReplaceRequest)
    - [PostUserPermissionReplaceRequest.ReplaceTo](#deviceapis-device-v1-PostUserPermissionReplaceRequest-ReplaceTo)
    - [PostUserPermissionReplaceResponse](#deviceapis-device-v1-PostUserPermissionReplaceResponse)
    - [SaveUserRequest](#deviceapis-device-v1-SaveUserRequest)
    - [SaveUserResponse](#deviceapis-device-v1-SaveUserResponse)
    - [User](#deviceapis-device-v1-User)
    - [User.Permission](#deviceapis-device-v1-User-Permission)
  


## [Схема классов](/svg/protos/key/deviceapis/device/v1/deviceapis_device_user_v1.proto.svg)
<a href="/svg/protos/key/deviceapis/device/v1/deviceapis_device_user_v1.proto.svg"><img src="/svg/protos/key/deviceapis/device/v1/deviceapis_device_user_v1.proto.svg" alt="/svg/protos/key/deviceapis/device/v1/deviceapis_device_user_v1.proto.svg" style="height:100%;"></a>




<a name="deviceapis_device_v1_deviceapis_device_user_v1-proto"></a>

## [deviceapis/device/v1/deviceapis_device_user_v1.proto](/protos/key/deviceapis/device/v1/deviceapis_device_user_v1.proto)
Спецификация АПИ управления сущностью User


<a name="deviceapis-device-v1-UserService"></a>

### UserService
 Сервис управления пользователями

| Название метода | Описание | Тип запроса | Тип ответа |
| --------------- | -------- | ----------- | -----------|
| <a id="deviceapis-device-v1-DeleteUser"></a> [DeleteUser](#deviceapis-device-v1-DeleteUser) | Метод удаления единичной сущности User по ключу | [deviceapis.device.v1.DeleteUserRequest](#deviceapis-device-v1-DeleteUserRequest) | [deviceapis.device.v1.DeleteUserResponse](#deviceapis-device-v1-DeleteUserResponse) |
| <a id="deviceapis-device-v1-GetUserList"></a> [GetUserList](#deviceapis-device-v1-GetUserList) | Метод получения списка сущностей User по фильтру | [deviceapis.device.v1.GetUserListRequest](#deviceapis-device-v1-GetUserListRequest) | [deviceapis.device.v1.GetUserListResponse](#deviceapis-device-v1-GetUserListResponse) |
| <a id="deviceapis-device-v1-PostUserNameReplace"></a> [PostUserNameReplace](#deviceapis-device-v1-PostUserNameReplace) | Метод замены имени пользователя | [deviceapis.device.v1.PostUserNameReplaceRequest](#deviceapis-device-v1-PostUserNameReplaceRequest) | [deviceapis.device.v1.PostUserNameReplaceResponse](#deviceapis-device-v1-PostUserNameReplaceResponse) |
| <a id="deviceapis-device-v1-PostUserPasswordReplace"></a> [PostUserPasswordReplace](#deviceapis-device-v1-PostUserPasswordReplace) | Метод замены пароля пользователя | [deviceapis.device.v1.PostUserPasswordReplaceRequest](#deviceapis-device-v1-PostUserPasswordReplaceRequest) | [deviceapis.device.v1.PostUserPasswordReplaceResponse](#deviceapis-device-v1-PostUserPasswordReplaceResponse) |
| <a id="deviceapis-device-v1-PostUserPermissionReplace"></a> [PostUserPermissionReplace](#deviceapis-device-v1-PostUserPermissionReplace) | Метод замены пароля пользователя. Будут изменены только явно переданные в data.permission разрешения | [deviceapis.device.v1.PostUserPermissionReplaceRequest](#deviceapis-device-v1-PostUserPermissionReplaceRequest) | [deviceapis.device.v1.PostUserPermissionReplaceResponse](#deviceapis-device-v1-PostUserPermissionReplaceResponse) |
| <a id="deviceapis-device-v1-SaveUser"></a> [SaveUser](#deviceapis-device-v1-SaveUser) | Метод создания/редактирования сущности User | [deviceapis.device.v1.SaveUserRequest](#deviceapis-device-v1-SaveUserRequest) | [deviceapis.device.v1.SaveUserResponse](#deviceapis-device-v1-SaveUserResponse) |

 <!-- end services -->


<a name="deviceapis-device-v1-DeleteUserRequest"></a>


### [DeleteUserRequest](#deviceapis-device-v1-DeleteUserRequest)
 Запрос удаления единичной сущности User по ключу


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-DeleteUserRequest-username"></a> [username](#deviceapis-device-v1-DeleteUserRequest-username) | Имя пользователя |    [string](#scalar-types) | REQUIRED|






<a name="deviceapis-device-v1-DeleteUserResponse"></a>


### [DeleteUserResponse](#deviceapis-device-v1-DeleteUserResponse)
 Ответ на запрос удаления единичной сущности User по ключу






<a name="deviceapis-device-v1-GetUserListRequest"></a>


### [GetUserListRequest](#deviceapis-device-v1-GetUserListRequest)
 Запрос получения списка сущностей User по фильтру






<a name="deviceapis-device-v1-GetUserListResponse"></a>


### [GetUserListResponse](#deviceapis-device-v1-GetUserListResponse)
 Ответ на запрос получения списка сущностей User по фильтру


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-GetUserListResponse-data"></a> [data](#deviceapis-device-v1-GetUserListResponse-data) | Список User |  repeated  [deviceapis.device.v1.User](#deviceapis-device-v1-User) | <nil>|






<a name="deviceapis-device-v1-PostUserNameReplaceRequest"></a>


### [PostUserNameReplaceRequest](#deviceapis-device-v1-PostUserNameReplaceRequest)
 Запрос замены имени пользователя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-PostUserNameReplaceRequest-username"></a> [username](#deviceapis-device-v1-PostUserNameReplaceRequest-username) | Имя пользователя |    [string](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-PostUserNameReplaceRequest-data"></a> [data](#deviceapis-device-v1-PostUserNameReplaceRequest-data) | Поле на замену |    [deviceapis.device.v1.PostUserNameReplaceRequest.ReplaceTo](#deviceapis-device-v1-PostUserNameReplaceRequest-ReplaceTo) | REQUIRED|






<a name="deviceapis-device-v1-PostUserNameReplaceRequest-ReplaceTo"></a>


### [PostUserNameReplaceRequest.ReplaceTo](#deviceapis-device-v1-PostUserNameReplaceRequest-ReplaceTo)
 Поле на замену


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-PostUserNameReplaceRequest-ReplaceTo-target_username"></a> [target_username](#deviceapis-device-v1-PostUserNameReplaceRequest-ReplaceTo-target_username) | Имя пользователя |    [string](#scalar-types) | REQUIRED|






<a name="deviceapis-device-v1-PostUserNameReplaceResponse"></a>


### [PostUserNameReplaceResponse](#deviceapis-device-v1-PostUserNameReplaceResponse)
 Ответ на запрос замены имени пользователя






<a name="deviceapis-device-v1-PostUserPasswordReplaceRequest"></a>


### [PostUserPasswordReplaceRequest](#deviceapis-device-v1-PostUserPasswordReplaceRequest)
 Запрос замены пароля пользователя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-PostUserPasswordReplaceRequest-username"></a> [username](#deviceapis-device-v1-PostUserPasswordReplaceRequest-username) | Имя пользователя |    [string](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-PostUserPasswordReplaceRequest-data"></a> [data](#deviceapis-device-v1-PostUserPasswordReplaceRequest-data) | Поле на замену |    [deviceapis.device.v1.PostUserPasswordReplaceRequest.ReplaceTo](#deviceapis-device-v1-PostUserPasswordReplaceRequest-ReplaceTo) | REQUIRED|






<a name="deviceapis-device-v1-PostUserPasswordReplaceRequest-ReplaceTo"></a>


### [PostUserPasswordReplaceRequest.ReplaceTo](#deviceapis-device-v1-PostUserPasswordReplaceRequest-ReplaceTo)
 Поле на замену


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-PostUserPasswordReplaceRequest-ReplaceTo-password"></a> [password](#deviceapis-device-v1-PostUserPasswordReplaceRequest-ReplaceTo-password) | Пароль |    [string](#scalar-types) | <nil>|






<a name="deviceapis-device-v1-PostUserPasswordReplaceResponse"></a>


### [PostUserPasswordReplaceResponse](#deviceapis-device-v1-PostUserPasswordReplaceResponse)
 Ответ на запрос замены пароля пользователя






<a name="deviceapis-device-v1-PostUserPermissionReplaceRequest"></a>


### [PostUserPermissionReplaceRequest](#deviceapis-device-v1-PostUserPermissionReplaceRequest)
 Запрос замены разрешений пользователя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-PostUserPermissionReplaceRequest-username"></a> [username](#deviceapis-device-v1-PostUserPermissionReplaceRequest-username) | Имя пользователя |    [string](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-PostUserPermissionReplaceRequest-data"></a> [data](#deviceapis-device-v1-PostUserPermissionReplaceRequest-data) | Поле на замену |    [deviceapis.device.v1.PostUserPermissionReplaceRequest.ReplaceTo](#deviceapis-device-v1-PostUserPermissionReplaceRequest-ReplaceTo) | REQUIRED|






<a name="deviceapis-device-v1-PostUserPermissionReplaceRequest-ReplaceTo"></a>


### [PostUserPermissionReplaceRequest.ReplaceTo](#deviceapis-device-v1-PostUserPermissionReplaceRequest-ReplaceTo)
 Поле на замену


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-PostUserPermissionReplaceRequest-ReplaceTo-permission"></a> [permission](#deviceapis-device-v1-PostUserPermissionReplaceRequest-ReplaceTo-permission) | Права доступа |  repeated  [deviceapis.device.v1.User.Permission](#deviceapis-device-v1-User-Permission) | <nil>|






<a name="deviceapis-device-v1-PostUserPermissionReplaceResponse"></a>


### [PostUserPermissionReplaceResponse](#deviceapis-device-v1-PostUserPermissionReplaceResponse)
 Ответ на запрос замены разрешений пользователя






<a name="deviceapis-device-v1-SaveUserRequest"></a>


### [SaveUserRequest](#deviceapis-device-v1-SaveUserRequest)
 Запрос на создания/редактирование сущности User


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-SaveUserRequest-data"></a> [data](#deviceapis-device-v1-SaveUserRequest-data) | Пользователь |    [deviceapis.device.v1.User](#deviceapis-device-v1-User) | REQUIRED|






<a name="deviceapis-device-v1-SaveUserResponse"></a>


### [SaveUserResponse](#deviceapis-device-v1-SaveUserResponse)
 Ответ на запрос на создания/редактирование сущности User


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-SaveUserResponse-data"></a> [data](#deviceapis-device-v1-SaveUserResponse-data) | Пользователь |  optional  [deviceapis.device.v1.User](#deviceapis-device-v1-User) | <nil>|






<a name="deviceapis-device-v1-User"></a>


### [User](#deviceapis-device-v1-User)
 Пользователь


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-User-username"></a> [username](#deviceapis-device-v1-User-username) | Имя пользователя |    [string](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-User-password"></a> [password](#deviceapis-device-v1-User-password) | Пароль. Не возвращается с сервера. TODO: в генерации сваггера не показывать INPUT_ONLY поля в ответах |    [string](#scalar-types) | INPUT_ONLY|
| <a id="deviceapis-device-v1-User-permission"></a> [permission](#deviceapis-device-v1-User-permission) | Права доступа |  repeated  [deviceapis.device.v1.User.Permission](#deviceapis-device-v1-User-Permission) | <nil>|






<a name="deviceapis-device-v1-User-Permission"></a>


### [User.Permission](#deviceapis-device-v1-User-Permission)
 Права доступа


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-User-Permission-permission_name"></a> [permission_name](#deviceapis-device-v1-User-Permission-permission_name) | Имя разрешения |    [string](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-User-Permission-is_enabled"></a> [is_enabled](#deviceapis-device-v1-User-Permission-is_enabled) | Наличие разрешения |    [bool](#scalar-types) | REQUIRED|





 <!-- end messages -->

 <!-- end enums -->

 <!-- end HasExtensions -->



## Скалярные типы значений
<a id="scalar-types"></a>

| .proto Type | Примечание | Python | Go | Ruby | C# | C++ | Java | PHP |
| ----------- | ---------- | ------ | -- | ---- | -- | --- | ---- | --- |
| [double](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) |  | float | float64 | Float | double | double | double | float |
| [float](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) |  | float | float32 | Float | float | float | float | float |
| [int32](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | 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](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | 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](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Uses variable-length encoding. | int/long | uint32 | Bignum or Fixnum (as required) | uint | uint32 | int | integer |
| [uint64](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Uses variable-length encoding. | int/long | uint64 | Bignum or Fixnum (as required) | ulong | uint64 | long | integer/string |
| [sint32](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | 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](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | 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](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | 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](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | 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](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Always four bytes. | int | int32 | Bignum or Fixnum (as required) | int | int32 | int | integer |
| [sfixed64](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | Always eight bytes. | int/long | int64 | Bignum | long | int64 | long | integer/string |
| [bool](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) |  | boolean | bool | TrueClass/FalseClass | bool | bool | boolean | boolean |
| [string](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | A string must always contain UTF-8 encoded or 7-bit ASCII text. | str/unicode | string | String (UTF-8) | string | string | String | string |
| [bytes](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | May contain any arbitrary sequence of bytes. | str | []byte | String (ASCII-8BIT) | ByteString | string | ByteString | string |

