# Протокол

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

- [deviceapis/device/v1/deviceapis_device_reader_v1.proto](#deviceapis_device_v1_deviceapis_device_reader_v1-proto)
    - [ReaderService](#deviceapis-device-v1-ReaderService)
  
    - [EditReaderRequest](#deviceapis-device-v1-EditReaderRequest)
    - [EditReaderResponse](#deviceapis-device-v1-EditReaderResponse)
    - [EditReaderResponse.Error](#deviceapis-device-v1-EditReaderResponse-Error)
    - [GetReaderRequest](#deviceapis-device-v1-GetReaderRequest)
    - [GetReaderResponse](#deviceapis-device-v1-GetReaderResponse)
    - [Reader](#deviceapis-device-v1-Reader)
    - [Reader.SavingError](#deviceapis-device-v1-Reader-SavingError)
    - [Reader.SavingError.ProfileIsNotSupported](#deviceapis-device-v1-Reader-SavingError-ProfileIsNotSupported)
    - [Reader.SavingError.ProfileNotFound](#deviceapis-device-v1-Reader-SavingError-ProfileNotFound)
    - [Reader.SavingError.ReaderNotFound](#deviceapis-device-v1-Reader-SavingError-ReaderNotFound)
  
    - [Reader.DirectionType](#deviceapis-device-v1-Reader-DirectionType)
  


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




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

## [deviceapis/device/v1/deviceapis_device_reader_v1.proto](/protos/key/deviceapis/device/v1/deviceapis_device_reader_v1.proto)
Сервис считывателей


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

### ReaderService
 Сервис считывателей

| Название метода | Описание | Тип запроса | Тип ответа |
| --------------- | -------- | ----------- | -----------|
| <a id="deviceapis-device-v1-EditReader"></a> [EditReader](#deviceapis-device-v1-EditReader) | Метод редактирования считывателя | [deviceapis.device.v1.EditReaderRequest](#deviceapis-device-v1-EditReaderRequest) | [deviceapis.device.v1.EditReaderResponse](#deviceapis-device-v1-EditReaderResponse) |
| <a id="deviceapis-device-v1-GetReader"></a> [GetReader](#deviceapis-device-v1-GetReader) | Метод получения считывателя | [deviceapis.device.v1.GetReaderRequest](#deviceapis-device-v1-GetReaderRequest) | [deviceapis.device.v1.GetReaderResponse](#deviceapis-device-v1-GetReaderResponse) |

 <!-- end services -->


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


### [EditReaderRequest](#deviceapis-device-v1-EditReaderRequest)
 Запрос редактирования считывателя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-EditReaderRequest-data"></a> [data](#deviceapis-device-v1-EditReaderRequest-data) | Считыватель |    [deviceapis.device.v1.Reader](#deviceapis-device-v1-Reader) | REQUIRED|
| <a id="deviceapis-device-v1-EditReaderRequest-update_mask"></a> [update_mask](#deviceapis-device-v1-EditReaderRequest-update_mask) | Маска полей обновления |    [google.protobuf.FieldMask](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | <nil>|






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


### [EditReaderResponse](#deviceapis-device-v1-EditReaderResponse)
 Ответ на запрос редактирования считывателя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-EditReaderResponse-error"></a> [error](#deviceapis-device-v1-EditReaderResponse-error) | Ошибка |  optional  [deviceapis.device.v1.EditReaderResponse.Error](#deviceapis-device-v1-EditReaderResponse-Error) | <nil>|






<a name="deviceapis-device-v1-EditReaderResponse-Error"></a>


### [EditReaderResponse.Error](#deviceapis-device-v1-EditReaderResponse-Error)
 Ошибка запроса


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-EditReaderResponse-Error-validation"></a> [validation](#deviceapis-device-v1-EditReaderResponse-Error-validation) | Ошибка валидации |  optional  [deviceapis.device.v1.ValidationError](#deviceapis-device-v1-ValidationError) | <nil>|
| <a id="deviceapis-device-v1-EditReaderResponse-Error-saving"></a> [saving](#deviceapis-device-v1-EditReaderResponse-Error-saving) | Ошибка сохранения |  optional  [deviceapis.device.v1.Reader.SavingError](#deviceapis-device-v1-Reader-SavingError) | <nil>|






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


### [GetReaderRequest](#deviceapis-device-v1-GetReaderRequest)
 Запрос получения считывателя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-GetReaderRequest-id"></a> [id](#deviceapis-device-v1-GetReaderRequest-id) | Идентификатор. id=100 - Считыватель внутренний. id=1 - Считыватель внешний №1. id=2 - Считыватель внешний №2 и тд |    [int32](#scalar-types) | REQUIRED|






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


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


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






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


### [Reader](#deviceapis-device-v1-Reader)
 Считыватель


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-Reader-id"></a> [id](#deviceapis-device-v1-Reader-id) | Идентификатор. id=100 - Считыватель внутренний. id=1 - Считыватель внешний №1. id=2 - Считыватель внешний №2 и тд |    [int32](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-Reader-encryption_profile_ids"></a> [encryption_profile_ids](#deviceapis-device-v1-Reader-encryption_profile_ids) | Список идентификаторов профилей шифрования |  repeated  [int32](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-Reader-relay_indexes"></a> [relay_indexes](#deviceapis-device-v1-Reader-relay_indexes) | Список идентификаторов реле. Диапазон: 1..64 |  repeated  [int32](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-Reader-is_none_secure_mode"></a> [is_none_secure_mode](#deviceapis-device-v1-Reader-is_none_secure_mode) | Считыватель работает не в безопасном режиме (по UID) |    [bool](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-Reader-direction_type"></a> [direction_type](#deviceapis-device-v1-Reader-direction_type) | Направление |    [deviceapis.device.v1.Reader.DirectionType](#deviceapis-device-v1-Reader-DirectionType) | <nil>|






<a name="deviceapis-device-v1-Reader-SavingError"></a>


### [Reader.SavingError](#deviceapis-device-v1-Reader-SavingError)
 Ошибки сохранения


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-Reader-SavingError-reader_not_found"></a> [reader_not_found](#deviceapis-device-v1-Reader-SavingError-reader_not_found) | Считыватель не найден |  optional  [deviceapis.device.v1.Reader.SavingError.ReaderNotFound](#deviceapis-device-v1-Reader-SavingError-ReaderNotFound) | <nil>|
| <a id="deviceapis-device-v1-Reader-SavingError-profile_is_not_supported"></a> [profile_is_not_supported](#deviceapis-device-v1-Reader-SavingError-profile_is_not_supported) | Профиль не поддерживается для этого считывателя |  optional  [deviceapis.device.v1.Reader.SavingError.ProfileIsNotSupported](#deviceapis-device-v1-Reader-SavingError-ProfileIsNotSupported) | <nil>|
| <a id="deviceapis-device-v1-Reader-SavingError-profile_not_found"></a> [profile_not_found](#deviceapis-device-v1-Reader-SavingError-profile_not_found) | Выбранный профиль не найден |  optional  [deviceapis.device.v1.Reader.SavingError.ProfileNotFound](#deviceapis-device-v1-Reader-SavingError-ProfileNotFound) | <nil>|






<a name="deviceapis-device-v1-Reader-SavingError-ProfileIsNotSupported"></a>


### [Reader.SavingError.ProfileIsNotSupported](#deviceapis-device-v1-Reader-SavingError-ProfileIsNotSupported)
 Профиль не поддерживается для этого считывателя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-Reader-SavingError-ProfileIsNotSupported-profile_ids"></a> [profile_ids](#deviceapis-device-v1-Reader-SavingError-ProfileIsNotSupported-profile_ids) | Список идентификаторов профилей, которые не поддерживаются на считывателе |  repeated  [int32](#scalar-types) | <nil>|






<a name="deviceapis-device-v1-Reader-SavingError-ProfileNotFound"></a>


### [Reader.SavingError.ProfileNotFound](#deviceapis-device-v1-Reader-SavingError-ProfileNotFound)
 Выбранный профиль не найден






<a name="deviceapis-device-v1-Reader-SavingError-ReaderNotFound"></a>


### [Reader.SavingError.ReaderNotFound](#deviceapis-device-v1-Reader-SavingError-ReaderNotFound)
 Считыватель не найден





 <!-- end messages -->



<a name="deviceapis-device-v1-Reader-DirectionType"></a>

### [Reader.DirectionType](#deviceapis-device-v1-Reader-DirectionType)
 Направление

| Номер | Тип | Название |
| ----- | --- | -------- |
| 0 | <a id="deviceapis-device-v1-Reader-DirectionType-DIRECTION_TYPE_UNKNOWN"></a> [DIRECTION_TYPE_UNKNOWN](#deviceapis-device-v1-Reader-DirectionType-DIRECTION_TYPE_UNKNOWN) | Значение не указано |
| 1 | <a id="deviceapis-device-v1-Reader-DirectionType-IN"></a> [IN](#deviceapis-device-v1-Reader-DirectionType-IN) | Вход |
| 2 | <a id="deviceapis-device-v1-Reader-DirectionType-OUT"></a> [OUT](#deviceapis-device-v1-Reader-DirectionType-OUT) | Выход |


 <!-- 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 |

