# Протокол

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

- [keyapis/notification/v1/keyapis_notification_push_token_v1.proto](#keyapis_notification_v1_keyapis_notification_push_token_v1-proto)
    - [PushTokenService](#keyapis-notification-v1-PushTokenService)
  
    - [DeletePushTokenRequest](#keyapis-notification-v1-DeletePushTokenRequest)
    - [DeletePushTokenResponse](#keyapis-notification-v1-DeletePushTokenResponse)
    - [DeletePushTokenResponse.Error](#keyapis-notification-v1-DeletePushTokenResponse-Error)
    - [DeletePushTokenUserAppIdRequest](#keyapis-notification-v1-DeletePushTokenUserAppIdRequest)
    - [DeletePushTokenUserAppIdResponse](#keyapis-notification-v1-DeletePushTokenUserAppIdResponse)
    - [DeletePushTokenUserAppIdResponse.Error](#keyapis-notification-v1-DeletePushTokenUserAppIdResponse-Error)
    - [DeletePushTokenUserIdRequest](#keyapis-notification-v1-DeletePushTokenUserIdRequest)
    - [DeletePushTokenUserIdResponse](#keyapis-notification-v1-DeletePushTokenUserIdResponse)
    - [DeletePushTokenUserIdResponse.Error](#keyapis-notification-v1-DeletePushTokenUserIdResponse-Error)
    - [GetPushTokenCountRequest](#keyapis-notification-v1-GetPushTokenCountRequest)
    - [GetPushTokenCountResponse](#keyapis-notification-v1-GetPushTokenCountResponse)
    - [GetPushTokenCountResponse.Error](#keyapis-notification-v1-GetPushTokenCountResponse-Error)
    - [GetPushTokenListRequest](#keyapis-notification-v1-GetPushTokenListRequest)
    - [GetPushTokenListResponse](#keyapis-notification-v1-GetPushTokenListResponse)
    - [GetPushTokenListResponse.Error](#keyapis-notification-v1-GetPushTokenListResponse-Error)
    - [PostPushTokenRequest](#keyapis-notification-v1-PostPushTokenRequest)
    - [PostPushTokenResponse](#keyapis-notification-v1-PostPushTokenResponse)
    - [PostPushTokenResponse.Error](#keyapis-notification-v1-PostPushTokenResponse-Error)
    - [PushToken](#keyapis-notification-v1-PushToken)
    - [PushToken.SavingError](#keyapis-notification-v1-PushToken-SavingError)
    - [PushToken.SavingError.Conflict](#keyapis-notification-v1-PushToken-SavingError-Conflict)
    - [PushToken.SavingError.UserAppIdExists](#keyapis-notification-v1-PushToken-SavingError-UserAppIdExists)
    - [PushToken.ValidationError](#keyapis-notification-v1-PushToken-ValidationError)
    - [PushToken.ValidationError.UserAppIdInvalid](#keyapis-notification-v1-PushToken-ValidationError-UserAppIdInvalid)
    - [PushTokenFilter](#keyapis-notification-v1-PushTokenFilter)
    - [PushTokenFilter.ValidationError](#keyapis-notification-v1-PushTokenFilter-ValidationError)
    - [PushTokenFilter.ValidationError.UserAppIdsInvalid](#keyapis-notification-v1-PushTokenFilter-ValidationError-UserAppIdsInvalid)
    - [PushTokenPaging](#keyapis-notification-v1-PushTokenPaging)
    - [PushTokenPaging.ValidationError](#keyapis-notification-v1-PushTokenPaging-ValidationError)
    - [PushTokenPaging.ValidationError.LimitInvalid](#keyapis-notification-v1-PushTokenPaging-ValidationError-LimitInvalid)
    - [PushTokenPaging.ValidationError.OffsetInvalid](#keyapis-notification-v1-PushTokenPaging-ValidationError-OffsetInvalid)
    - [ValidationError](#keyapis-notification-v1-ValidationError)
  
    - [PushToken.Type](#keyapis-notification-v1-PushToken-Type)
    - [PushTokenPaging.DirectionType](#keyapis-notification-v1-PushTokenPaging-DirectionType)
    - [PushTokenPaging.OrderByType](#keyapis-notification-v1-PushTokenPaging-OrderByType)
  


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




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

## [keyapis/notification/v1/keyapis_notification_push_token_v1.proto](/protos/key/keyapis/notification/v1/keyapis_notification_push_token_v1.proto)
Сервис реализует функционал управления пуш-токенами устройств.
Используется как отдельное хранилихе пуш токенов, на первом этапе будет хранить только PWA токены


<a name="keyapis-notification-v1-PushTokenService"></a>

### PushTokenService
 Сервис пуш-токенов устройств

| Название метода | Описание | Тип запроса | Тип ответа |
| --------------- | -------- | ----------- | -----------|
| <a id="keyapis-notification-v1-PostPushToken"></a> [PostPushToken](#keyapis-notification-v1-PostPushToken) | Метод сохранения пуш-токенов. Поддерживает создание и обновление. Метод доступен для: admin, master, employee, owner, service, application(notification:edit). Для ролей master, employee, owner можно сохранять только собственные пуш-токены. Для ролей admin, service доступны все пуш-токены | [keyapis.notification.v1.PostPushTokenRequest](#keyapis-notification-v1-PostPushTokenRequest) | [keyapis.notification.v1.PostPushTokenResponse](#keyapis-notification-v1-PostPushTokenResponse) |
| <a id="keyapis-notification-v1-GetPushTokenList"></a> [GetPushTokenList](#keyapis-notification-v1-GetPushTokenList) | Метод получения пуш-токенов. Метод доступен для: admin, master, employee, owner, service, application(notification:read или notification:edit). Для ролей master, employee, owner можно просматривать только собственные пуш-токены. Для ролей admin, service доступны все пуш-токены | [keyapis.notification.v1.GetPushTokenListRequest](#keyapis-notification-v1-GetPushTokenListRequest) | [keyapis.notification.v1.GetPushTokenListResponse](#keyapis-notification-v1-GetPushTokenListResponse) stream |
| <a id="keyapis-notification-v1-GetPushTokenCount"></a> [GetPushTokenCount](#keyapis-notification-v1-GetPushTokenCount) | Метод получения количества пуш-токенов. Метод доступен для: admin, master, employee, owner, service, application(notification:read или notification:edit). Для ролей master, employee, owner можно просматривать только собственные пуш-токены. Для ролей admin, service доступны все пуш-токены | [keyapis.notification.v1.GetPushTokenCountRequest](#keyapis-notification-v1-GetPushTokenCountRequest) | [keyapis.notification.v1.GetPushTokenCountResponse](#keyapis-notification-v1-GetPushTokenCountResponse) |
| <a id="keyapis-notification-v1-DeletePushToken"></a> [DeletePushToken](#keyapis-notification-v1-DeletePushToken) | Метод удаления пуш-токена. Метод доступен для: admin, master, employee, owner, service, application(notification:edit). Для ролей master, employee, owner можно удалять только собственные пуш-токены. Для ролей admin, service можно удалять все пуш-токены | [keyapis.notification.v1.DeletePushTokenRequest](#keyapis-notification-v1-DeletePushTokenRequest) | [keyapis.notification.v1.DeletePushTokenResponse](#keyapis-notification-v1-DeletePushTokenResponse) |
| <a id="keyapis-notification-v1-DeletePushTokenUserAppId"></a> [DeletePushTokenUserAppId](#keyapis-notification-v1-DeletePushTokenUserAppId) | Метод удаления пуш-токена по идентификатору устройства пользователя. Метод доступен для: admin, master, employee, owner, service, application(notification:edit). Для ролей master, employee, owner можно удалять только собственные пуш-токены. Для ролей admin, service можно удалять все пуш-токены | [keyapis.notification.v1.DeletePushTokenUserAppIdRequest](#keyapis-notification-v1-DeletePushTokenUserAppIdRequest) | [keyapis.notification.v1.DeletePushTokenUserAppIdResponse](#keyapis-notification-v1-DeletePushTokenUserAppIdResponse) |
| <a id="keyapis-notification-v1-DeletePushTokenUserId"></a> [DeletePushTokenUserId](#keyapis-notification-v1-DeletePushTokenUserId) | Метод удаления пуш-токенов по идентификатору пользователя. Метод доступен для: admin, master, employee, owner, service, application(notification:edit). Для ролей master, employee, owner можно удалять только собственные пуш-токены. Для ролей admin, service можно удалять все пуш-токены | [keyapis.notification.v1.DeletePushTokenUserIdRequest](#keyapis-notification-v1-DeletePushTokenUserIdRequest) | [keyapis.notification.v1.DeletePushTokenUserIdResponse](#keyapis-notification-v1-DeletePushTokenUserIdResponse) |

 <!-- end services -->


<a name="keyapis-notification-v1-DeletePushTokenRequest"></a>


### [DeletePushTokenRequest](#keyapis-notification-v1-DeletePushTokenRequest)
 Запрос удаления пуш-токена


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-DeletePushTokenRequest-id"></a> [id](#keyapis-notification-v1-DeletePushTokenRequest-id) | Идентификатор. # Диапазон: 0..2147483647 |    [int32](#scalar-types) | REQUIRED|






<a name="keyapis-notification-v1-DeletePushTokenResponse"></a>


### [DeletePushTokenResponse](#keyapis-notification-v1-DeletePushTokenResponse)
 Ответ на запрос удаления пуш-токена


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






<a name="keyapis-notification-v1-DeletePushTokenResponse-Error"></a>


### [DeletePushTokenResponse.Error](#keyapis-notification-v1-DeletePushTokenResponse-Error)
 Ошибка удаления пуш-токена


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-DeletePushTokenResponse-Error-validation"></a> [validation](#keyapis-notification-v1-DeletePushTokenResponse-Error-validation) | Ошибка валидации |  optional  [keyapis.notification.v1.ValidationError](#keyapis-notification-v1-ValidationError) | <nil>|






<a name="keyapis-notification-v1-DeletePushTokenUserAppIdRequest"></a>


### [DeletePushTokenUserAppIdRequest](#keyapis-notification-v1-DeletePushTokenUserAppIdRequest)
 Запрос удаления пуш-токена по идентификатору устройства пользователя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-DeletePushTokenUserAppIdRequest-user_app_id"></a> [user_app_id](#keyapis-notification-v1-DeletePushTokenUserAppIdRequest-user_app_id) | Идентификатор устройства пользователя. # Тип: Guid |    [string](#scalar-types) | REQUIRED|






<a name="keyapis-notification-v1-DeletePushTokenUserAppIdResponse"></a>


### [DeletePushTokenUserAppIdResponse](#keyapis-notification-v1-DeletePushTokenUserAppIdResponse)
 Ответ на запрос удаления пуш-токена по идентификатору устройства пользователя


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






<a name="keyapis-notification-v1-DeletePushTokenUserAppIdResponse-Error"></a>


### [DeletePushTokenUserAppIdResponse.Error](#keyapis-notification-v1-DeletePushTokenUserAppIdResponse-Error)
 Ошибка удаления пуш-токена


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-DeletePushTokenUserAppIdResponse-Error-validation"></a> [validation](#keyapis-notification-v1-DeletePushTokenUserAppIdResponse-Error-validation) | Ошибка валидации |  optional  [keyapis.notification.v1.ValidationError](#keyapis-notification-v1-ValidationError) | <nil>|






<a name="keyapis-notification-v1-DeletePushTokenUserIdRequest"></a>


### [DeletePushTokenUserIdRequest](#keyapis-notification-v1-DeletePushTokenUserIdRequest)
 Запрос удаления пуш-токенов по идентификатору пользователя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-DeletePushTokenUserIdRequest-user_id"></a> [user_id](#keyapis-notification-v1-DeletePushTokenUserIdRequest-user_id) | Идентификатор пользователя. # Диапазон: 1..2147483647 |    [int32](#scalar-types) | REQUIRED|






<a name="keyapis-notification-v1-DeletePushTokenUserIdResponse"></a>


### [DeletePushTokenUserIdResponse](#keyapis-notification-v1-DeletePushTokenUserIdResponse)
 Ответ на запрос удаления пуш-токенов по идентификатору пользователя


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






<a name="keyapis-notification-v1-DeletePushTokenUserIdResponse-Error"></a>


### [DeletePushTokenUserIdResponse.Error](#keyapis-notification-v1-DeletePushTokenUserIdResponse-Error)
 Ошибка удаления пуш-токенов


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-DeletePushTokenUserIdResponse-Error-validation"></a> [validation](#keyapis-notification-v1-DeletePushTokenUserIdResponse-Error-validation) | Ошибка валидации |  optional  [keyapis.notification.v1.ValidationError](#keyapis-notification-v1-ValidationError) | <nil>|






<a name="keyapis-notification-v1-GetPushTokenCountRequest"></a>


### [GetPushTokenCountRequest](#keyapis-notification-v1-GetPushTokenCountRequest)
 Запрос получения количества пуш-токенов


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-GetPushTokenCountRequest-filter"></a> [filter](#keyapis-notification-v1-GetPushTokenCountRequest-filter) | Фильтр |    [keyapis.notification.v1.PushTokenFilter](#keyapis-notification-v1-PushTokenFilter) | <nil>|






<a name="keyapis-notification-v1-GetPushTokenCountResponse"></a>


### [GetPushTokenCountResponse](#keyapis-notification-v1-GetPushTokenCountResponse)
 Ответ на запрос получения количества пуш-токенов


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-GetPushTokenCountResponse-data"></a> [data](#keyapis-notification-v1-GetPushTokenCountResponse-data) | Всего пуш-токенов |  optional  [int32](#scalar-types) | <nil>|
| <a id="keyapis-notification-v1-GetPushTokenCountResponse-error"></a> [error](#keyapis-notification-v1-GetPushTokenCountResponse-error) | Ошибка |  optional  [keyapis.notification.v1.GetPushTokenCountResponse.Error](#keyapis-notification-v1-GetPushTokenCountResponse-Error) | <nil>|






<a name="keyapis-notification-v1-GetPushTokenCountResponse-Error"></a>


### [GetPushTokenCountResponse.Error](#keyapis-notification-v1-GetPushTokenCountResponse-Error)
 Ошибка запроса получения количества пуш-токенов


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-GetPushTokenCountResponse-Error-push_token_filter_validation"></a> [push_token_filter_validation](#keyapis-notification-v1-GetPushTokenCountResponse-Error-push_token_filter_validation) | **Deprecated.** Ошибка фильтрации |  optional  [keyapis.notification.v1.PushTokenFilter.ValidationError](#keyapis-notification-v1-PushTokenFilter-ValidationError) | <nil>|
| <a id="keyapis-notification-v1-GetPushTokenCountResponse-Error-validation"></a> [validation](#keyapis-notification-v1-GetPushTokenCountResponse-Error-validation) | Ошибка валидации |  optional  [keyapis.notification.v1.ValidationError](#keyapis-notification-v1-ValidationError) | <nil>|






<a name="keyapis-notification-v1-GetPushTokenListRequest"></a>


### [GetPushTokenListRequest](#keyapis-notification-v1-GetPushTokenListRequest)
 Запрос на получение пуш-токенов пользователя


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-GetPushTokenListRequest-filter"></a> [filter](#keyapis-notification-v1-GetPushTokenListRequest-filter) | Фильтр |    [keyapis.notification.v1.PushTokenFilter](#keyapis-notification-v1-PushTokenFilter) | <nil>|
| <a id="keyapis-notification-v1-GetPushTokenListRequest-paging"></a> [paging](#keyapis-notification-v1-GetPushTokenListRequest-paging) | Стандартный постраничный вывод |  optional  [keyapis.notification.v1.PushTokenPaging](#keyapis-notification-v1-PushTokenPaging) | <nil>|






<a name="keyapis-notification-v1-GetPushTokenListResponse"></a>


### [GetPushTokenListResponse](#keyapis-notification-v1-GetPushTokenListResponse)
 Ответ на получение списка пуш-токенов


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-GetPushTokenListResponse-data"></a> [data](#keyapis-notification-v1-GetPushTokenListResponse-data) | Пуш-токен |  optional  [keyapis.notification.v1.PushToken](#keyapis-notification-v1-PushToken) | <nil>|
| <a id="keyapis-notification-v1-GetPushTokenListResponse-error"></a> [error](#keyapis-notification-v1-GetPushTokenListResponse-error) | Ошибка |  optional  [keyapis.notification.v1.GetPushTokenListResponse.Error](#keyapis-notification-v1-GetPushTokenListResponse-Error) | <nil>|






<a name="keyapis-notification-v1-GetPushTokenListResponse-Error"></a>


### [GetPushTokenListResponse.Error](#keyapis-notification-v1-GetPushTokenListResponse-Error)
 Ошибка запроса получения списка пуш-токенов


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-GetPushTokenListResponse-Error-push_token_filter_validation"></a> [push_token_filter_validation](#keyapis-notification-v1-GetPushTokenListResponse-Error-push_token_filter_validation) | **Deprecated.** Ошибка фильтрации |  optional  [keyapis.notification.v1.PushTokenFilter.ValidationError](#keyapis-notification-v1-PushTokenFilter-ValidationError) | <nil>|
| <a id="keyapis-notification-v1-GetPushTokenListResponse-Error-push_token_paging_validation"></a> [push_token_paging_validation](#keyapis-notification-v1-GetPushTokenListResponse-Error-push_token_paging_validation) | **Deprecated.** Ошибка пагинации по страницам |  optional  [keyapis.notification.v1.PushTokenPaging.ValidationError](#keyapis-notification-v1-PushTokenPaging-ValidationError) | <nil>|
| <a id="keyapis-notification-v1-GetPushTokenListResponse-Error-validation"></a> [validation](#keyapis-notification-v1-GetPushTokenListResponse-Error-validation) | Ошибка валидации |  optional  [keyapis.notification.v1.ValidationError](#keyapis-notification-v1-ValidationError) | <nil>|






<a name="keyapis-notification-v1-PostPushTokenRequest"></a>


### [PostPushTokenRequest](#keyapis-notification-v1-PostPushTokenRequest)
 Запрос на создание/изменение пуш-токена


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PostPushTokenRequest-data"></a> [data](#keyapis-notification-v1-PostPushTokenRequest-data) | Пуш-токен |    [keyapis.notification.v1.PushToken](#keyapis-notification-v1-PushToken) | REQUIRED|






<a name="keyapis-notification-v1-PostPushTokenResponse"></a>


### [PostPushTokenResponse](#keyapis-notification-v1-PostPushTokenResponse)
 Ответ на запрос на создание/изменение пуш-токена


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PostPushTokenResponse-data"></a> [data](#keyapis-notification-v1-PostPushTokenResponse-data) | Пуш-токен |  optional  [keyapis.notification.v1.PushToken](#keyapis-notification-v1-PushToken) | <nil>|
| <a id="keyapis-notification-v1-PostPushTokenResponse-error"></a> [error](#keyapis-notification-v1-PostPushTokenResponse-error) | Ошибка |  optional  [keyapis.notification.v1.PostPushTokenResponse.Error](#keyapis-notification-v1-PostPushTokenResponse-Error) | <nil>|






<a name="keyapis-notification-v1-PostPushTokenResponse-Error"></a>


### [PostPushTokenResponse.Error](#keyapis-notification-v1-PostPushTokenResponse-Error)
 Ошибка запроса сохранения пуш-токена


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PostPushTokenResponse-Error-push_token_validation"></a> [push_token_validation](#keyapis-notification-v1-PostPushTokenResponse-Error-push_token_validation) | **Deprecated.** Ошибка валидации пуш-токена |  optional  [keyapis.notification.v1.PushToken.ValidationError](#keyapis-notification-v1-PushToken-ValidationError) | <nil>|
| <a id="keyapis-notification-v1-PostPushTokenResponse-Error-push_token_saving"></a> [push_token_saving](#keyapis-notification-v1-PostPushTokenResponse-Error-push_token_saving) | Ошибка сохранения пуш-токена |  optional  [keyapis.notification.v1.PushToken.SavingError](#keyapis-notification-v1-PushToken-SavingError) | <nil>|
| <a id="keyapis-notification-v1-PostPushTokenResponse-Error-validation"></a> [validation](#keyapis-notification-v1-PostPushTokenResponse-Error-validation) | Ошибка валидации пуш-токена |  optional  [keyapis.notification.v1.ValidationError](#keyapis-notification-v1-ValidationError) | <nil>|






<a name="keyapis-notification-v1-PushToken"></a>


### [PushToken](#keyapis-notification-v1-PushToken)
 Пуш-токен.
# Описание модели


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PushToken-id"></a> [id](#keyapis-notification-v1-PushToken-id) | Идентификатор. # Диапазон: 0..2147483647 |    [int32](#scalar-types) | <nil>|
| <a id="keyapis-notification-v1-PushToken-type"></a> [type](#keyapis-notification-v1-PushToken-type) | Тип |    [keyapis.notification.v1.PushToken.Type](#keyapis-notification-v1-PushToken-Type) | REQUIRED|
| <a id="keyapis-notification-v1-PushToken-token"></a> [token](#keyapis-notification-v1-PushToken-token) | Токен. # Диапазон: 16..256 |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-notification-v1-PushToken-user_app_id"></a> [user_app_id](#keyapis-notification-v1-PushToken-user_app_id) | Идентификатор устройства пользователя. # Тип: Guid |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-notification-v1-PushToken-user_id"></a> [user_id](#keyapis-notification-v1-PushToken-user_id) | Идентификатор пользователя. # Диапазон: 1..2147483647 |    [google.protobuf.Int32Value](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | OUTPUT_ONLY|
| <a id="keyapis-notification-v1-PushToken-created_at"></a> [created_at](#keyapis-notification-v1-PushToken-created_at) | Дата и время создания. # Тип: DateTime |    [google.protobuf.Timestamp](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | OUTPUT_ONLY|
| <a id="keyapis-notification-v1-PushToken-changed_at"></a> [changed_at](#keyapis-notification-v1-PushToken-changed_at) | Дата последнего изменения. Заполняется и обновляется сервером. Заполняется при создании и изменении. Является версией объекта. # Тип: DateTime |    [google.protobuf.Timestamp](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | OUTPUT_ONLY|
| <a id="keyapis-notification-v1-PushToken-app_version"></a> [app_version](#keyapis-notification-v1-PushToken-app_version) | Версия приложения. # Диапазон: 3..256 |    [string](#scalar-types) | REQUIRED|






<a name="keyapis-notification-v1-PushToken-SavingError"></a>


### [PushToken.SavingError](#keyapis-notification-v1-PushToken-SavingError)
 Ошибка сохранения пуш-токена.
Эти проверки выполняются при работе с базой данных и сторонними сервисами


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PushToken-SavingError-user_app_id_exists"></a> [user_app_id_exists](#keyapis-notification-v1-PushToken-SavingError-user_app_id_exists) | Идентификатор устройства пользователя уже используется |  optional  [keyapis.notification.v1.PushToken.SavingError.UserAppIdExists](#keyapis-notification-v1-PushToken-SavingError-UserAppIdExists) | <nil>|
| <a id="keyapis-notification-v1-PushToken-SavingError-conflict"></a> [conflict](#keyapis-notification-v1-PushToken-SavingError-conflict) | Конфликт версий |  optional  [keyapis.notification.v1.PushToken.SavingError.Conflict](#keyapis-notification-v1-PushToken-SavingError-Conflict) | <nil>|






<a name="keyapis-notification-v1-PushToken-SavingError-Conflict"></a>


### [PushToken.SavingError.Conflict](#keyapis-notification-v1-PushToken-SavingError-Conflict)
 Конфликт версий.
Причины:
- В базе хранится другая версия строки, значения changed_at отличаются






<a name="keyapis-notification-v1-PushToken-SavingError-UserAppIdExists"></a>


### [PushToken.SavingError.UserAppIdExists](#keyapis-notification-v1-PushToken-SavingError-UserAppIdExists)
 Причины:
 - Переданный индентификатор устройства пользователя уже существует с другим токеном






<a name="keyapis-notification-v1-PushToken-ValidationError"></a>


### [PushToken.ValidationError](#keyapis-notification-v1-PushToken-ValidationError)
 Ошибка валидации пуш-токена.
Эти проверки выполняются до обращения в базу данных


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PushToken-ValidationError-user_app_id"></a> [user_app_id](#keyapis-notification-v1-PushToken-ValidationError-user_app_id) | Передан некоректный идентификатор устройства пользователя |  optional  [keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid](#keyapis-notification-v1-PushToken-ValidationError-UserAppIdInvalid) | <nil>|






<a name="keyapis-notification-v1-PushToken-ValidationError-UserAppIdInvalid"></a>


### [PushToken.ValidationError.UserAppIdInvalid](#keyapis-notification-v1-PushToken-ValidationError-UserAppIdInvalid)
 Причины:
- Cодержит значение не Guid






<a name="keyapis-notification-v1-PushTokenFilter"></a>


### [PushTokenFilter](#keyapis-notification-v1-PushTokenFilter)
 Фильтр по пуш-токенам


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PushTokenFilter-types"></a> [types](#keyapis-notification-v1-PushTokenFilter-types) | По типам пуш-токенов |  repeated  [keyapis.notification.v1.PushToken.Type](#keyapis-notification-v1-PushToken-Type) | <nil>|
| <a id="keyapis-notification-v1-PushTokenFilter-user_app_ids"></a> [user_app_ids](#keyapis-notification-v1-PushTokenFilter-user_app_ids) | По идентификаторам устройств пользователя. # Тип: Guid |  repeated  [string](#scalar-types) | <nil>|
| <a id="keyapis-notification-v1-PushTokenFilter-user_ids"></a> [user_ids](#keyapis-notification-v1-PushTokenFilter-user_ids) | По идентификаторам пользователя |  repeated  [int32](#scalar-types) | <nil>|
| <a id="keyapis-notification-v1-PushTokenFilter-begin_created_at"></a> [begin_created_at](#keyapis-notification-v1-PushTokenFilter-begin_created_at) | От даты создания включительно (>=) |    [google.protobuf.Timestamp](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | <nil>|
| <a id="keyapis-notification-v1-PushTokenFilter-end_created_at"></a> [end_created_at](#keyapis-notification-v1-PushTokenFilter-end_created_at) | До даты создания (<) |    [google.protobuf.Timestamp](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | <nil>|
| <a id="keyapis-notification-v1-PushTokenFilter-begin_changed_at"></a> [begin_changed_at](#keyapis-notification-v1-PushTokenFilter-begin_changed_at) | От даты изменения включительно (>=) |    [google.protobuf.Timestamp](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | <nil>|
| <a id="keyapis-notification-v1-PushTokenFilter-end_changed_at"></a> [end_changed_at](#keyapis-notification-v1-PushTokenFilter-end_changed_at) | До даты изменения (<) |    [google.protobuf.Timestamp](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf/) | <nil>|






<a name="keyapis-notification-v1-PushTokenFilter-ValidationError"></a>


### [PushTokenFilter.ValidationError](#keyapis-notification-v1-PushTokenFilter-ValidationError)
 Ошибки валидации фильтра по фильтру пуш-токенов.
Эти проверки выполняются до обращения в базу данных


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PushTokenFilter-ValidationError-user_app_ids"></a> [user_app_ids](#keyapis-notification-v1-PushTokenFilter-ValidationError-user_app_ids) | Идентификаторы устройств пользователя переданы некоректно |  optional  [keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid](#keyapis-notification-v1-PushTokenFilter-ValidationError-UserAppIdsInvalid) | <nil>|






<a name="keyapis-notification-v1-PushTokenFilter-ValidationError-UserAppIdsInvalid"></a>


### [PushTokenFilter.ValidationError.UserAppIdsInvalid](#keyapis-notification-v1-PushTokenFilter-ValidationError-UserAppIdsInvalid)
 Причины:
- Cодержит значение не Guid






<a name="keyapis-notification-v1-PushTokenPaging"></a>


### [PushTokenPaging](#keyapis-notification-v1-PushTokenPaging)
 Постраничный вывод


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PushTokenPaging-order_by_type"></a> [order_by_type](#keyapis-notification-v1-PushTokenPaging-order_by_type) | Тип значения сортировки. Если значение не передано, то будет взято значение по умолчанию. # По умолчанию: ID |    [keyapis.notification.v1.PushTokenPaging.OrderByType](#keyapis-notification-v1-PushTokenPaging-OrderByType) | <nil>|
| <a id="keyapis-notification-v1-PushTokenPaging-direction_type"></a> [direction_type](#keyapis-notification-v1-PushTokenPaging-direction_type) | Тип направления сортировки. # По умолчанию: DESC |    [keyapis.notification.v1.PushTokenPaging.DirectionType](#keyapis-notification-v1-PushTokenPaging-DirectionType) | <nil>|
| <a id="keyapis-notification-v1-PushTokenPaging-limit"></a> [limit](#keyapis-notification-v1-PushTokenPaging-limit) | Количество записей на страницу. Если значение 0 (не передано), то будет взято значение по умолчанию. # Диапазон: 0..100. # По умолчанию: 20 |    [int32](#scalar-types) | <nil>|
| <a id="keyapis-notification-v1-PushTokenPaging-offset"></a> [offset](#keyapis-notification-v1-PushTokenPaging-offset) | Сдвиг. # Диапазон: 0..2147483647 |    [int32](#scalar-types) | <nil>|






<a name="keyapis-notification-v1-PushTokenPaging-ValidationError"></a>


### [PushTokenPaging.ValidationError](#keyapis-notification-v1-PushTokenPaging-ValidationError)
 Ошибка валидации постраничной пагинации по пуш-токенам.
Эти проверки выполняются до обращения в базу данных


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-PushTokenPaging-ValidationError-limit"></a> [limit](#keyapis-notification-v1-PushTokenPaging-ValidationError-limit) | Количество передано некорректно |  optional  [keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid](#keyapis-notification-v1-PushTokenPaging-ValidationError-LimitInvalid) | <nil>|
| <a id="keyapis-notification-v1-PushTokenPaging-ValidationError-offset"></a> [offset](#keyapis-notification-v1-PushTokenPaging-ValidationError-offset) | Сдвиг передан некорректно |  optional  [keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid](#keyapis-notification-v1-PushTokenPaging-ValidationError-OffsetInvalid) | <nil>|






<a name="keyapis-notification-v1-PushTokenPaging-ValidationError-LimitInvalid"></a>


### [PushTokenPaging.ValidationError.LimitInvalid](#keyapis-notification-v1-PushTokenPaging-ValidationError-LimitInvalid)
 Причины:
- Значение количества < 0 или > 100






<a name="keyapis-notification-v1-PushTokenPaging-ValidationError-OffsetInvalid"></a>


### [PushTokenPaging.ValidationError.OffsetInvalid](#keyapis-notification-v1-PushTokenPaging-ValidationError-OffsetInvalid)
 Причины:
- Значение сдвига < 0






<a name="keyapis-notification-v1-ValidationError"></a>


### [ValidationError](#keyapis-notification-v1-ValidationError)
 Ошибки валидации.
Эти проверки выполняются до обращения в базу данных


| Поле | Описание | Тип | Признак |
| ---- | -------- | --- | ------- |
| <a id="keyapis-notification-v1-ValidationError-path"></a> [path](#keyapis-notification-v1-ValidationError-path) | Путь к полю в формате наименования прото |    [string](#scalar-types) | REQUIRED|
| <a id="keyapis-notification-v1-ValidationError-message"></a> [message](#keyapis-notification-v1-ValidationError-message) | Валидационное сообщение |    [string](#scalar-types) | REQUIRED|





 <!-- end messages -->



<a name="keyapis-notification-v1-PushToken-Type"></a>

### [PushToken.Type](#keyapis-notification-v1-PushToken-Type)
 Справочников типов пуш-токенов.
# Тип: byte

| Номер | Тип | Название |
| ----- | --- | -------- |
| 0 | <a id="keyapis-notification-v1-PushToken-Type-TYPE_UNKNOWN"></a> [TYPE_UNKNOWN](#keyapis-notification-v1-PushToken-Type-TYPE_UNKNOWN) | Не указан |
| 1 | <a id="keyapis-notification-v1-PushToken-Type-MOBILE_FCM"></a> [MOBILE_FCM](#keyapis-notification-v1-PushToken-Type-MOBILE_FCM) | Для Mobile Firebase Cloud Messaging |
| 2 | <a id="keyapis-notification-v1-PushToken-Type-MOBILE_HMS"></a> [MOBILE_HMS](#keyapis-notification-v1-PushToken-Type-MOBILE_HMS) | Для Mobile Huawei Messaging System |
| 3 | <a id="keyapis-notification-v1-PushToken-Type-MOBILE_APNS_TEXT"></a> [MOBILE_APNS_TEXT](#keyapis-notification-v1-PushToken-Type-MOBILE_APNS_TEXT) | Для Mobile Apple PushToken System для текста |
| 4 | <a id="keyapis-notification-v1-PushToken-Type-MOBILE_APNS_CALL"></a> [MOBILE_APNS_CALL](#keyapis-notification-v1-PushToken-Type-MOBILE_APNS_CALL) | Для Mobile Apple PushToken System для звонков |
| 5 | <a id="keyapis-notification-v1-PushToken-Type-PWA_FCM"></a> [PWA_FCM](#keyapis-notification-v1-PushToken-Type-PWA_FCM) | Для PWA Firebase Cloud Messaging |
| 6 | <a id="keyapis-notification-v1-PushToken-Type-PWA_APNS"></a> [PWA_APNS](#keyapis-notification-v1-PushToken-Type-PWA_APNS) | Для PWA Apple PushToken System |
| 7 | <a id="keyapis-notification-v1-PushToken-Type-MOBILE_RUSTORE"></a> [MOBILE_RUSTORE](#keyapis-notification-v1-PushToken-Type-MOBILE_RUSTORE) | Для Mobile RuStore |




<a name="keyapis-notification-v1-PushTokenPaging-DirectionType"></a>

### [PushTokenPaging.DirectionType](#keyapis-notification-v1-PushTokenPaging-DirectionType)
 Справочник типов направлений сортировки.
# Тип: byte

| Номер | Тип | Название |
| ----- | --- | -------- |
| 0 | <a id="keyapis-notification-v1-PushTokenPaging-DirectionType-DIRECTION_TYPE_UNKNOWN"></a> [DIRECTION_TYPE_UNKNOWN](#keyapis-notification-v1-PushTokenPaging-DirectionType-DIRECTION_TYPE_UNKNOWN) | Значение не указано |
| 1 | <a id="keyapis-notification-v1-PushTokenPaging-DirectionType-DESC"></a> [DESC](#keyapis-notification-v1-PushTokenPaging-DirectionType-DESC) | От большего к меньшему |
| 2 | <a id="keyapis-notification-v1-PushTokenPaging-DirectionType-ASC"></a> [ASC](#keyapis-notification-v1-PushTokenPaging-DirectionType-ASC) | От меньшего к большему |




<a name="keyapis-notification-v1-PushTokenPaging-OrderByType"></a>

### [PushTokenPaging.OrderByType](#keyapis-notification-v1-PushTokenPaging-OrderByType)
 Справочник типов значений сортировки.
# Тип: byte

| Номер | Тип | Название |
| ----- | --- | -------- |
| 0 | <a id="keyapis-notification-v1-PushTokenPaging-OrderByType-ORDER_BY_TYPE_UNKNOWN"></a> [ORDER_BY_TYPE_UNKNOWN](#keyapis-notification-v1-PushTokenPaging-OrderByType-ORDER_BY_TYPE_UNKNOWN) | Значение не указано |
| 1 | <a id="keyapis-notification-v1-PushTokenPaging-OrderByType-ID"></a> [ID](#keyapis-notification-v1-PushTokenPaging-OrderByType-ID) | По идентификатору |
| 2 | <a id="keyapis-notification-v1-PushTokenPaging-OrderByType-CREATED_AT"></a> [CREATED_AT](#keyapis-notification-v1-PushTokenPaging-OrderByType-CREATED_AT) | По времени создания |
| 3 | <a id="keyapis-notification-v1-PushTokenPaging-OrderByType-CHANGED_AT"></a> [CHANGED_AT](#keyapis-notification-v1-PushTokenPaging-OrderByType-CHANGED_AT) | По времени изменения |


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

