openapi: 3.0.3
info:
  title: notification
  version: 1.0.1776938023255
  description: Сервис notification
  license:
    name: CC BY-NC-ND 4.0
    url: https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md
tags:
  - name: push_token(auth)
    description: Методы push_token. Требуют авторизацию. Доступны из интернета
  - name: system(public)
    description: Методы system. Не требуют авторизацию. Доступны из интернета
paths:
  /notification/api/v1/push_token:
    post:
      summary: >-
        Метод сохранения пуш-токенов.

        Поддерживает создание и обновление.

        Метод доступен для: admin, master, employee, owner, service, application(notification:edit).

        Для ролей master, employee, owner можно сохранять только собственные пуш-токены.

        Для ролей admin, service доступны все пуш-токены
      operationId: PushTokenService_PostPushToken
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostPushTokenResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostPushTokenResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostPushTokenResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PostPushTokenRequest"
        required: true
      tags:
        - push_token(auth)
      security:
        - oauth2:
            - notification:edit
          bearerHttp: []
      parameters:
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
  /notification/api/v1/push_token/count:
    get:
      summary: >-
        Метод получения количества пуш-токенов.

        Метод доступен для: admin, master, employee, owner, service, application(notification:read или notification:edit).

        Для ролей master, employee, owner можно просматривать только собственные пуш-токены.

        Для ролей admin, service доступны все пуш-токены
      operationId: PushTokenService_GetPushTokenCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPushTokenCountResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPushTokenCountResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPushTokenCountResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.types
          description: |-
            По типам пуш-токенов

             - TYPE_UNKNOWN: Не указан
             - MOBILE_FCM: Для Mobile Firebase Cloud Messaging
             - MOBILE_HMS: Для Mobile Huawei Messaging System
             - MOBILE_APNS_TEXT: Для Mobile Apple PushToken System для текста
             - MOBILE_APNS_CALL: Для Mobile Apple PushToken System для звонков
             - PWA_FCM: Для PWA Firebase Cloud Messaging
             - PWA_APNS: Для PWA Apple PushToken System
             - MOBILE_RUSTORE: Для Mobile RuStore
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - MOBILE_FCM
                - MOBILE_HMS
                - MOBILE_APNS_TEXT
                - MOBILE_APNS_CALL
                - PWA_FCM
                - PWA_APNS
                - MOBILE_RUSTORE
        - name: filter.userAppIds
          description: |-
            По идентификаторам устройств пользователя.
            # Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.userIds
          description: По идентификаторам пользователя
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.beginCreatedAt
          description: От даты создания включительно (>=)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.endCreatedAt
          description: До даты создания (<)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.beginChangedAt
          description: От даты изменения включительно (>=)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.endChangedAt
          description: До даты изменения (<)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
      tags:
        - push_token(auth)
      security:
        - oauth2:
            - notification:read
            - notification:edit
          bearerHttp: []
  /notification/api/v1/push_token/list:
    get:
      summary: >-
        Метод получения пуш-токенов.

        Метод доступен для: admin, master, employee, owner, service, application(notification:read или notification:edit).

        Для ролей master, employee, owner можно просматривать только собственные пуш-токены.

        Для ролей admin, service доступны все пуш-токены
      operationId: PushTokenService_GetPushTokenList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetPushTokenListResponse"
                  error:
                    $ref: "#/components/schemas/rpcStatus"
                title: Поток объектов v1GetPushTokenListResponse
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.types
          description: |-
            По типам пуш-токенов

             - TYPE_UNKNOWN: Не указан
             - MOBILE_FCM: Для Mobile Firebase Cloud Messaging
             - MOBILE_HMS: Для Mobile Huawei Messaging System
             - MOBILE_APNS_TEXT: Для Mobile Apple PushToken System для текста
             - MOBILE_APNS_CALL: Для Mobile Apple PushToken System для звонков
             - PWA_FCM: Для PWA Firebase Cloud Messaging
             - PWA_APNS: Для PWA Apple PushToken System
             - MOBILE_RUSTORE: Для Mobile RuStore
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - MOBILE_FCM
                - MOBILE_HMS
                - MOBILE_APNS_TEXT
                - MOBILE_APNS_CALL
                - PWA_FCM
                - PWA_APNS
                - MOBILE_RUSTORE
        - name: filter.userAppIds
          description: |-
            По идентификаторам устройств пользователя.
            # Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.userIds
          description: По идентификаторам пользователя
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.beginCreatedAt
          description: От даты создания включительно (>=)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.endCreatedAt
          description: До даты создания (<)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.beginChangedAt
          description: От даты изменения включительно (>=)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.endChangedAt
          description: До даты изменения (<)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: paging.orderByType
          description: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: ID

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - ID: По идентификатору
             - CREATED_AT: По времени создания
             - CHANGED_AT: По времени изменения
          in: query
          required: false
          schema:
            type: string
            enum:
              - ID
              - CREATED_AT
              - CHANGED_AT
        - name: paging.directionType
          description: |-
            Тип направления сортировки.
            # По умолчанию: DESC

             - DIRECTION_TYPE_UNKNOWN: Значение не указано
             - DESC: От большего к меньшему
             - ASC: От меньшего к большему
          in: query
          required: false
          schema:
            type: string
            enum:
              - DESC
              - ASC
        - name: paging.limit
          description: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: paging.offset
          description: |-
            Сдвиг.
            # Диапазон: 0..2147483647
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
      tags:
        - push_token(auth)
      security:
        - oauth2:
            - notification:read
            - notification:edit
          bearerHttp: []
  "/notification/api/v1/push_token/user_app_id/{userAppId}":
    delete:
      summary: >-
        Метод удаления пуш-токена по идентификатору устройства пользователя.

        Метод доступен для: admin, master, employee, owner, service, application(notification:edit).

        Для ролей master, employee, owner можно удалять только собственные пуш-токены.

        Для ролей admin, service можно удалять все пуш-токены
      operationId: PushTokenService_DeletePushTokenUserAppId
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePushTokenUserAppIdResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePushTokenUserAppIdResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePushTokenUserAppIdResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: userAppId
          description: |-
            Идентификатор устройства пользователя.
            # Тип: Guid
          in: path
          required: true
          schema:
            type: string
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
      tags:
        - push_token(auth)
      security:
        - oauth2:
            - notification:edit
          bearerHttp: []
  "/notification/api/v1/push_token/user_id/{userId}":
    delete:
      summary: >-
        Метод удаления пуш-токенов по идентификатору пользователя.

        Метод доступен для: admin, master, employee, owner, service, application(notification:edit).

        Для ролей master, employee, owner можно удалять только собственные пуш-токены.

        Для ролей admin, service можно удалять все пуш-токены
      operationId: PushTokenService_DeletePushTokenUserId
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePushTokenUserIdResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePushTokenUserIdResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePushTokenUserIdResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: userId
          description: |-
            Идентификатор пользователя.
            # Диапазон: 1..2147483647
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
      tags:
        - push_token(auth)
      security:
        - oauth2:
            - notification:edit
          bearerHttp: []
  "/notification/api/v1/push_token/{id}":
    delete:
      summary: >-
        Метод удаления пуш-токена.

        Метод доступен для: admin, master, employee, owner, service, application(notification:edit).

        Для ролей master, employee, owner можно удалять только собственные пуш-токены.

        Для ролей admin, service можно удалять все пуш-токены
      operationId: PushTokenService_DeletePushToken
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePushTokenResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePushTokenResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePushTokenResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: id
          description: |-
            Идентификатор.
            # Диапазон: 0..2147483647
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
      tags:
        - push_token(auth)
      security:
        - oauth2:
            - notification:edit
          bearerHttp: []
  /notification/api/v1/system/status:
    get:
      summary: |-
        Метод получения статуса сервиса.
        Не требует авторизации
      operationId: SystemService_GetSystemStatus
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetSystemStatusResponse"
        "400":
          description: Ошибка
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      tags:
        - system(public)
      parameters:
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
components:
  schemas:
    PushTokenPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    PushTokenPagingOrderByType:
      type: string
      enum:
        - ID
        - CREATED_AT
        - CHANGED_AT
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - ID: По идентификатору
         - CREATED_AT: По времени создания
         - CHANGED_AT: По времени изменения
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    PushTokenSavingError:
      type: object
      properties:
        userAppIdExists:
          title: Идентификатор устройства пользователя уже используется
          allOf:
            - $ref: "#/components/schemas/SavingErrorUserAppIdExists"
        conflict:
          title: Конфликт версий
          allOf:
            - $ref: "#/components/schemas/SavingErrorConflict"
      title: >-
        Ошибка сохранения пуш-токена.

        Эти проверки выполняются при работе с базой данных и сторонними сервисами
    SavingErrorConflict:
      type: object
      title: |-
        Конфликт версий.
        Причины:
        - В базе хранится другая версия строки, значения changed_at отличаются
    SavingErrorUserAppIdExists:
      type: object
      title: >-
        Причины:
         - Переданный индентификатор устройства пользователя уже существует с другим токеном
    notificationv1ValidationError:
      type: object
      properties:
        path:
          type: string
          title: Путь к полю в формате наименования прото
        message:
          type: string
          title: Валидационное сообщение
      title: |-
        Ошибки валидации.
        Эти проверки выполняются до обращения в базу данных
      required:
        - path
        - message
    protobufAny:
      type: object
      properties:
        "@type":
          type: string
      additionalProperties: {}
      title: Произвольный JSON
    rpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            $ref: "#/components/schemas/protobufAny"
      title: Ошибка транспортного слоя
    v1DeletePushTokenResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1DeletePushTokenResponseError"
      title: Ответ на запрос удаления пуш-токена
    v1DeletePushTokenResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/notificationv1ValidationError"
      title: Ошибка удаления пуш-токена
    v1DeletePushTokenUserAppIdResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1DeletePushTokenUserAppIdResponseError"
      title: Ответ на запрос удаления пуш-токена по идентификатору устройства
        пользователя
    v1DeletePushTokenUserAppIdResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/notificationv1ValidationError"
      title: Ошибка удаления пуш-токена
    v1DeletePushTokenUserIdResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1DeletePushTokenUserIdResponseError"
      title: Ответ на запрос удаления пуш-токенов по идентификатору пользователя
    v1DeletePushTokenUserIdResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/notificationv1ValidationError"
      title: Ошибка удаления пуш-токенов
    v1GetPushTokenCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего пуш-токенов
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetPushTokenCountResponseError"
      title: Ответ на запрос получения количества пуш-токенов
    v1GetPushTokenCountResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/notificationv1ValidationError"
      title: Ошибка запроса получения количества пуш-токенов
    v1GetPushTokenListResponse:
      type: object
      properties:
        data:
          title: Пуш-токен
          allOf:
            - $ref: "#/components/schemas/v1PushToken"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetPushTokenListResponseError"
      title: Ответ на получение списка пуш-токенов
    v1GetPushTokenListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/notificationv1ValidationError"
      title: Ошибка запроса получения списка пуш-токенов
    v1GetSystemStatusResponse:
      type: object
      title: Ответ на запрос проверки доступности сервиса
    v1PostPushTokenRequest:
      type: object
      properties:
        data:
          title: Пуш-токен
          allOf:
            - $ref: "#/components/schemas/v1PushToken"
      title: Запрос на создание/изменение пуш-токена
      required:
        - data
    v1PostPushTokenResponse:
      type: object
      properties:
        data:
          title: Пуш-токен
          allOf:
            - $ref: "#/components/schemas/v1PushToken"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PostPushTokenResponseError"
      title: Ответ на запрос на создание/изменение пуш-токена
    v1PostPushTokenResponseError:
      type: object
      properties:
        pushTokenSaving:
          title: Ошибка сохранения пуш-токена
          allOf:
            - $ref: "#/components/schemas/PushTokenSavingError"
        validation:
          title: Ошибка валидации пуш-токена
          allOf:
            - $ref: "#/components/schemas/notificationv1ValidationError"
      title: Ошибка запроса сохранения пуш-токена
    v1PushToken:
      type: object
      properties:
        id:
          type: integer
          format: int32
          title: |-
            Идентификатор.
            # Диапазон: 0..2147483647
        type:
          title: Тип
          allOf:
            - $ref: "#/components/schemas/v1PushTokenType"
        token:
          type: string
          title: |-
            Токен.
            # Диапазон: 16..256
        userAppId:
          type: string
          title: |-
            Идентификатор устройства пользователя.
            # Тип: Guid
        userId:
          type: integer
          format: int32
          title: |-
            Идентификатор пользователя.
            # Диапазон: 1..2147483647
          readOnly: true
        createdAt:
          type: string
          format: date-time
          title: |-
            Дата и время создания.
            # Тип: DateTime
          readOnly: true
        changedAt:
          type: string
          format: date-time
          title: |-
            Дата последнего изменения.
            Заполняется и обновляется сервером.
            Заполняется при создании и изменении.
            Является версией объекта.
            # Тип: DateTime
          readOnly: true
        appVersion:
          type: string
          title: |-
            Версия приложения.
            # Диапазон: 3..256
      title: |-
        Пуш-токен.
        # Описание модели
      required:
        - type
        - token
        - userAppId
        - appVersion
    v1PushTokenFilter:
      type: object
      properties:
        types:
          type: array
          items:
            $ref: "#/components/schemas/v1PushTokenType"
          title: По типам пуш-токенов
        userAppIds:
          type: array
          items:
            type: string
          title: |-
            По идентификаторам устройств пользователя.
            # Тип: Guid
        userIds:
          type: array
          items:
            type: integer
            format: int32
          title: По идентификаторам пользователя
        beginCreatedAt:
          type: string
          format: date-time
          title: От даты создания включительно (>=)
        endCreatedAt:
          type: string
          format: date-time
          title: До даты создания (<)
        beginChangedAt:
          type: string
          format: date-time
          title: От даты изменения включительно (>=)
        endChangedAt:
          type: string
          format: date-time
          title: До даты изменения (<)
      title: Фильтр по пуш-токенам
    v1PushTokenPaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: ID
          allOf:
            - $ref: "#/components/schemas/PushTokenPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/PushTokenPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Постраничный вывод
    v1PushTokenType:
      type: string
      enum:
        - MOBILE_FCM
        - MOBILE_HMS
        - MOBILE_APNS_TEXT
        - MOBILE_APNS_CALL
        - PWA_FCM
        - PWA_APNS
        - MOBILE_RUSTORE
      description: |-
        - TYPE_UNKNOWN: Не указан
         - MOBILE_FCM: Для Mobile Firebase Cloud Messaging
         - MOBILE_HMS: Для Mobile Huawei Messaging System
         - MOBILE_APNS_TEXT: Для Mobile Apple PushToken System для текста
         - MOBILE_APNS_CALL: Для Mobile Apple PushToken System для звонков
         - PWA_FCM: Для PWA Firebase Cloud Messaging
         - PWA_APNS: Для PWA Apple PushToken System
         - MOBILE_RUSTORE: Для Mobile RuStore
      title: |-
        Справочников типов пуш-токенов.
        # Тип: byte
  securitySchemes:
    bearerHttp:
      type: http
      scheme: bearer
      bearerFormat: JWT
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://oauth2-staging.k8s.key.rt.ru/oauth2/token
          scopes:
            notification:edit: Предоставляет полный доступ в сервис notification
            notification:read: Предоставляет доступ на чтение данных из сервиса notification
servers:
  - url: https://keyapis-staging.k8s.key.rt.ru
    description: staging
  - url: https://{feature}.k8s.key.rt.ru/
    description: https feature
    variables:
      feature:
        default: ""
        description: Feature name
  - url: http://{feature}.k8s.key.rt.ru/
    description: http feature
    variables:
      feature:
        default: ""
        description: Feature name
  - url: https://localhost:3001
    description: localhost
  - url: https://keyapis.key.rt.ru
    description: production
