# Протокол

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

- [deviceapis/device/v1/deviceapis_device_safe_emergency_v1.proto](#deviceapis_device_v1_deviceapis_device_safe_emergency_v1-proto)
    - [SafeCityEmergencyService](#deviceapis-device-v1-SafeCityEmergencyService)
  
    - [EmergencyScenario](#deviceapis-device-v1-EmergencyScenario)
    - [GetSafeCityEmergencyStatusRequest](#deviceapis-device-v1-GetSafeCityEmergencyStatusRequest)
    - [GetSafeCityEmergencyStatusResponse](#deviceapis-device-v1-GetSafeCityEmergencyStatusResponse)
    - [GetSafeCityEmergencyStatusResponse.CurrentStatus](#deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus)
    - [PostSafeCityEmergencyStartRequest](#deviceapis-device-v1-PostSafeCityEmergencyStartRequest)
    - [PostSafeCityEmergencyStartResponse](#deviceapis-device-v1-PostSafeCityEmergencyStartResponse)
    - [PostSafeCityEmergencyStartResponse.Error](#deviceapis-device-v1-PostSafeCityEmergencyStartResponse-Error)
    - [PostSafeCityEmergencyStartResponse.Error.SoundFileNotFound](#deviceapis-device-v1-PostSafeCityEmergencyStartResponse-Error-SoundFileNotFound)
    - [PostSafeCityEmergencyStopRequest](#deviceapis-device-v1-PostSafeCityEmergencyStopRequest)
    - [PostSafeCityEmergencyStopResponse](#deviceapis-device-v1-PostSafeCityEmergencyStopResponse)
  
    - [EmergencyScenario.PlayOrderType](#deviceapis-device-v1-EmergencyScenario-PlayOrderType)
  


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




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

## [deviceapis/device/v1/deviceapis_device_safe_emergency_v1.proto](/protos/key/deviceapis/device/v1/deviceapis_device_safe_emergency_v1.proto)
Сервис управления оповещением


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

### SafeCityEmergencyService
 Сервис управления оповещением

| Название метода | Описание | Тип запроса | Тип ответа |
| --------------- | -------- | ----------- | -----------|
| <a id="deviceapis-device-v1-PostSafeCityEmergencyStart"></a> [PostSafeCityEmergencyStart](#deviceapis-device-v1-PostSafeCityEmergencyStart) | Старт оповещения. Где Tick - один цикл оповещения на одном или двух направлениях (трубка, динамик или трубка и динамик). playbacks_per_tick - Количество воспроизведений файла в каждом цикле оповещения на одном направлении (трубка или динамик). tick_count - Количество воспроизведений циклов оповещения. Длительность оповещения = tick_count * (Х * playbacks_per_tick (трубка) + Х * playbacks_per_tick (динамик)). total_duration - Максимальная общая длительность оповещения. По истечении total_duration секунд оповещение прекращается независимо от количества циклов | [deviceapis.device.v1.PostSafeCityEmergencyStartRequest](#deviceapis-device-v1-PostSafeCityEmergencyStartRequest) | [deviceapis.device.v1.PostSafeCityEmergencyStartResponse](#deviceapis-device-v1-PostSafeCityEmergencyStartResponse) |
| <a id="deviceapis-device-v1-PostSafeCityEmergencyStop"></a> [PostSafeCityEmergencyStop](#deviceapis-device-v1-PostSafeCityEmergencyStop) | Прекращение оповещения | [deviceapis.device.v1.PostSafeCityEmergencyStopRequest](#deviceapis-device-v1-PostSafeCityEmergencyStopRequest) | [deviceapis.device.v1.PostSafeCityEmergencyStopResponse](#deviceapis-device-v1-PostSafeCityEmergencyStopResponse) |
| <a id="deviceapis-device-v1-GetSafeCityEmergencyStatus"></a> [GetSafeCityEmergencyStatus](#deviceapis-device-v1-GetSafeCityEmergencyStatus) | Получение статуса оповещения | [deviceapis.device.v1.GetSafeCityEmergencyStatusRequest](#deviceapis-device-v1-GetSafeCityEmergencyStatusRequest) | [deviceapis.device.v1.GetSafeCityEmergencyStatusResponse](#deviceapis-device-v1-GetSafeCityEmergencyStatusResponse) |

 <!-- end services -->


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


### [EmergencyScenario](#deviceapis-device-v1-EmergencyScenario)
 Сценарий оповещения


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-EmergencyScenario-file_name"></a> [file_name](#deviceapis-device-v1-EmergencyScenario-file_name) | Имя файла |    [string](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-EmergencyScenario-total_duration"></a> [total_duration](#deviceapis-device-v1-EmergencyScenario-total_duration) | Максимальная общая длительность оповещения, в секундах. # Диапазон: 0..65536 |    [int32](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-EmergencyScenario-playback_per_tick"></a> [playback_per_tick](#deviceapis-device-v1-EmergencyScenario-playback_per_tick) | Количество воспроизведений файла в каждом цикле оповещения на одном направлении (трубка или динамик). # Диапазон: 0..65536 |    [int32](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-EmergencyScenario-tick_count"></a> [tick_count](#deviceapis-device-v1-EmergencyScenario-tick_count) | Количество воспроизведений циклов оповещения. # Диапазон: 0..65536 |    [int32](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-EmergencyScenario-play_order_type"></a> [play_order_type](#deviceapis-device-v1-EmergencyScenario-play_order_type) | Тип проигрывания |    [deviceapis.device.v1.EmergencyScenario.PlayOrderType](#deviceapis-device-v1-EmergencyScenario-PlayOrderType) | REQUIRED|






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


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






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


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


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-data"></a> [data](#deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-data) | Статус оповещения |    [deviceapis.device.v1.GetSafeCityEmergencyStatusResponse.CurrentStatus](#deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus) | <nil>|






<a name="deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus"></a>


### [GetSafeCityEmergencyStatusResponse.CurrentStatus](#deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus)
 Статус оповещения


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus-is_running"></a> [is_running](#deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus-is_running) | Признак работающего оповещения в текущий момент |    [bool](#scalar-types) | REQUIRED|
| <a id="deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus-emergency_scenario_play_order_type"></a> [emergency_scenario_play_order_type](#deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus-emergency_scenario_play_order_type) | Тип проигрывания |    [deviceapis.device.v1.EmergencyScenario.PlayOrderType](#deviceapis-device-v1-EmergencyScenario-PlayOrderType) | <nil>|
| <a id="deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus-file_name"></a> [file_name](#deviceapis-device-v1-GetSafeCityEmergencyStatusResponse-CurrentStatus-file_name) | Имя файла |    [string](#scalar-types) | <nil>|






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


### [PostSafeCityEmergencyStartRequest](#deviceapis-device-v1-PostSafeCityEmergencyStartRequest)
 Запрос на старт оповещения


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-PostSafeCityEmergencyStartRequest-data"></a> [data](#deviceapis-device-v1-PostSafeCityEmergencyStartRequest-data) | Сценарий оповещения |    [deviceapis.device.v1.EmergencyScenario](#deviceapis-device-v1-EmergencyScenario) | REQUIRED|






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


### [PostSafeCityEmergencyStartResponse](#deviceapis-device-v1-PostSafeCityEmergencyStartResponse)
 Ответ на запрос на старт оповещения


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






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


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


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="deviceapis-device-v1-PostSafeCityEmergencyStartResponse-Error-validation"></a> [validation](#deviceapis-device-v1-PostSafeCityEmergencyStartResponse-Error-validation) | Ошибка валидации |  optional  [deviceapis.device.v1.ValidationError](#deviceapis-device-v1-ValidationError) | <nil>|
| <a id="deviceapis-device-v1-PostSafeCityEmergencyStartResponse-Error-sound_file_not_found"></a> [sound_file_not_found](#deviceapis-device-v1-PostSafeCityEmergencyStartResponse-Error-sound_file_not_found) | Звуковой файл не найден |  optional  [deviceapis.device.v1.PostSafeCityEmergencyStartResponse.Error.SoundFileNotFound](#deviceapis-device-v1-PostSafeCityEmergencyStartResponse-Error-SoundFileNotFound) | <nil>|






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


### [PostSafeCityEmergencyStartResponse.Error.SoundFileNotFound](#deviceapis-device-v1-PostSafeCityEmergencyStartResponse-Error-SoundFileNotFound)
 Звуковой файл не найден






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


### [PostSafeCityEmergencyStopRequest](#deviceapis-device-v1-PostSafeCityEmergencyStopRequest)
 Запрос на прекращение оповещения через домофон






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


### [PostSafeCityEmergencyStopResponse](#deviceapis-device-v1-PostSafeCityEmergencyStopResponse)
 Ответ на запрос на прекращение оповещения через домофон





 <!-- end messages -->



<a name="deviceapis-device-v1-EmergencyScenario-PlayOrderType"></a>

### [EmergencyScenario.PlayOrderType](#deviceapis-device-v1-EmergencyScenario-PlayOrderType)
 Тип проигрывания.
# Тип: byte

| Номер | Тип | Название |
| ----- | --- | -------- |
| 0 | <a id="deviceapis-device-v1-EmergencyScenario-PlayOrderType-PLAY_ORDER_TYPE_UNKNOWN"></a> [PLAY_ORDER_TYPE_UNKNOWN](#deviceapis-device-v1-EmergencyScenario-PlayOrderType-PLAY_ORDER_TYPE_UNKNOWN) | Значение не указано |
| 1 | <a id="deviceapis-device-v1-EmergencyScenario-PlayOrderType-HANDSET_ONLY"></a> [HANDSET_ONLY](#deviceapis-device-v1-EmergencyScenario-PlayOrderType-HANDSET_ONLY) | Только на аналоговые трубки |
| 2 | <a id="deviceapis-device-v1-EmergencyScenario-PlayOrderType-SPEAKER_ONLY"></a> [SPEAKER_ONLY](#deviceapis-device-v1-EmergencyScenario-PlayOrderType-SPEAKER_ONLY) | Tолько на динамик домофона |
| 3 | <a id="deviceapis-device-v1-EmergencyScenario-PlayOrderType-HANDSET_FIRST"></a> [HANDSET_FIRST](#deviceapis-device-v1-EmergencyScenario-PlayOrderType-HANDSET_FIRST) | Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона |
| 4 | <a id="deviceapis-device-v1-EmergencyScenario-PlayOrderType-SPEAKER_FIRST"></a> [SPEAKER_FIRST](#deviceapis-device-v1-EmergencyScenario-PlayOrderType-SPEAKER_FIRST) | Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки |
| 5 | <a id="deviceapis-device-v1-EmergencyScenario-PlayOrderType-HANDSET_AND_SPEAKER"></a> [HANDSET_AND_SPEAKER](#deviceapis-device-v1-EmergencyScenario-PlayOrderType-HANDSET_AND_SPEAKER) | Одновременно на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона |


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

