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

        Метод доступен для: admin, service
      operationId: MessageService_PostMessageMobilePushCall
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostMessageMobilePushCallResponse"
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PostMessageMobilePushCallRequest"
        required: true
      tags:
        - message_mobile_push_call(auth)
      security:
        - oauth2:
            - exchange: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, он никогда не
            будет перенаправлен на канареечный деплой
  /exchange/api/v1/message_push_call:
    post:
      summary: |-
        Метод отправки задач и получения их результатов выполнения.
        Метод доступен для: admin, service, application(exchange:edit)
      operationId: MessageService_PostMessagePushCall
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostMessagePushCallResponse"
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PostMessagePushCallRequest"
        required: true
      tags:
        - message_push_call(auth)
      security:
        - oauth2:
            - exchange: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, он никогда не
            будет перенаправлен на канареечный деплой
  /exchange/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:
    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: Ошибка транспортного слоя
    v1GetSystemStatusResponse:
      type: object
      title: Ответ на запрос проверки доступности сервиса
    v1MessageMobilePushCall:
      type: object
      properties:
        message:
          title: Сообщение
          allOf:
            - $ref: "#/components/schemas/v1MessageMobilePushCallMessage"
        pushCall:
          title: Звонковый пуш
          allOf:
            - $ref: "#/components/schemas/v1MessageMobilePushCallPushCall"
      title: Звонковое сообщение для мобильных приложений
      required:
        - message
        - pushCall
    v1MessageMobilePushCallMessage:
      type: object
      properties:
        title:
          type: string
          title: Заголовок уведомления
        deviceId:
          type: integer
          format: int32
          title: Идентификатор устройства источника
        deviceTitle:
          type: string
          title: Название устройства источника
        deviceCameraId:
          type: string
          title: |-
            Идентификатор камеры устройства источника.
            Тип: Guid
        sipToken:
          type: string
          title: SIP-токен
        sipServerHost:
          type: string
          title: Адрес SIP сервера
        sipServerPort:
          type: integer
          format: int32
          title: Порт SIP сервера
        sipAccountLogin:
          type: string
          title: Логин SIP аккаунта
        sipAccountPassword:
          type: string
          title: Пароль SIP аккаунта
        stunServerHost:
          type: string
          title: Адрес STUN сервера
        stunServerPort:
          type: integer
          format: int32
          title: Порт STUN сервера
        callCreatedAt:
          type: string
          format: date-time
          title: Момент инициации звонка
      title: Сообщение
      required:
        - title
        - deviceId
        - sipToken
        - callCreatedAt
    v1MessageMobilePushCallPushCall:
      type: object
      properties:
        token:
          type: string
          title: Пуш-токен адресата звонка
        type:
          title: Тип пуш-токена
          allOf:
            - $ref: "#/components/schemas/v1MessageMobilePushCallPushCallType"
      title: Звонковый пуш
      required:
        - token
        - type
    v1MessageMobilePushCallPushCallType:
      type: string
      enum:
        - MOBILE_FCM
        - MOBILE_HMS
        - MOBILE_APNS_TEXT
        - MOBILE_APNS_CALL
        - 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 для звонков
         - MOBILE_RUSTORE: Для Mobile RuStore
      title: Тип пуш-токена
    v1MessagePushCall:
      type: object
      properties:
        message:
          title: Сообщение
          allOf:
            - $ref: "#/components/schemas/v1MessagePushCallMessage"
        pushCall:
          title: Звонковый пуш
          allOf:
            - $ref: "#/components/schemas/v1MessagePushCallPushCall"
      title: Звонковое сообщение
      required:
        - message
        - pushCall
    v1MessagePushCallMessage:
      type: object
      properties:
        title:
          type: string
          title: Заголовок уведомления
        deviceId:
          type: integer
          format: int32
          title: Идентификатор устройства источника
        deviceTitle:
          type: string
          title: Название устройства источника
        deviceCameraId:
          type: string
          title: |-
            Идентификатор камеры устройства источника.
            Тип: Guid
        sipServerHost:
          type: string
          title: Адрес SIP сервера
        sipServerPort:
          type: integer
          format: int32
          title: Порт SIP сервера
        sipAccountLogin:
          type: string
          title: Логин SIP аккаунта
        sipAccountPassword:
          type: string
          title: Пароль SIP аккаунта
        callCreatedAt:
          type: string
          format: date-time
          title: Момент инициации звонка
      title: Сообщение
      required:
        - title
        - deviceId
        - sipServerHost
        - sipServerPort
        - sipAccountLogin
        - sipAccountPassword
        - callCreatedAt
    v1MessagePushCallPushCall:
      type: object
      properties:
        token:
          type: string
          title: Пуш-токен адресата звонка
        type:
          title: Тип пуш-токена
          allOf:
            - $ref: "#/components/schemas/v1MessagePushCallPushCallType"
      title: Звонковый пуш
      required:
        - token
        - type
    v1MessagePushCallPushCallType:
      type: string
      enum:
        - PWA_FCM
        - PWA_APNS
      description: |-
        - TYPE_UNKNOWN: Не указан
         - PWA_FCM: Для PWA Firebase Cloud Messaging
         - PWA_APNS: Для PWA Apple Notification System
      title: Тип пуш-токена
    v1PostMessageFullDuplexResponse:
      type: object
      properties:
        requestId:
          type: string
          title: Идентификатор ответа
        postMessagePushCall:
          title: Ответ на отправку звонкового сообщения
          allOf:
            - $ref: "#/components/schemas/v1PostMessagePushCallResponse"
      title: Поток ответов на задачи
      required:
        - requestId
    v1PostMessageMobilePushCallRequest:
      type: object
      properties:
        data:
          title: Звонковый пуш
          allOf:
            - $ref: "#/components/schemas/v1MessageMobilePushCall"
      title: Запрос на отправку звонкового пуш сообщения для мобильного приложения
      required:
        - data
    v1PostMessageMobilePushCallResponse:
      type: object
      title: Ответ на запрос на отправку звонкового пуш сообщения для мобильного
        приложения
    v1PostMessagePushCallRequest:
      type: object
      properties:
        data:
          title: Звонковый пуш
          allOf:
            - $ref: "#/components/schemas/v1MessagePushCall"
      title: Запрос на отправку звонкового пуш сообщения
      required:
        - data
    v1PostMessagePushCallResponse:
      type: object
      title: Ответ на запрос на отправку звонкового пуш сообщения
  securitySchemes:
    bearerHttp:
      type: http
      scheme: bearer
      bearerFormat: JWT
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://oauth2-staging.k8s.key.rt.ru/oauth2/token
          scopes:
            exchange:edit: Предоставляет полный доступ в сервис exchange
            exchange:read: Предоставляет доступ на чтение данных из сервиса exchange
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
