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

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

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695668.

        Метод доступен для: admin, manager, service
      operationId: AppService_PostApp
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostAppResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostAppResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostAppResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PostAppRequest"
        required: true
      tags:
        - app(auth)
      security:
        - oauth2:
            - multiapp: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, он никогда не
            будет перенаправлен на канареечный деплой
  /multiapp/api/v1/app/count:
    get:
      summary: >-
        Метод получения количества приложений.

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.

        Метод доступен для: admin, manager, service, ltp_first
      operationId: AppService_GetAppCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppCountResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppCountResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppCountResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.text
          description: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Системное наименование;
            # - Заголовок;
            # - Подзаголовок;
            # - Список тегов пользователей;
            # - Список тегов приложений
          in: query
          required: false
          schema:
            type: string
        - name: filter.types
          description: |-
            По типам приложений

             - TYPE_UNKNOWN: Значение не указано
             - STANDARD: Стандартное приложение
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - STANDARD
        - name: filter.partnerIds
          description: |-
            По идентификаторам партнера.
            # Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.statusTypes
          description: >-
            По статусам приложений.

            Если переданы все типы, то фильтр игнорируется(так как нужно вернуть всё)

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - BLOCKED: Заблокирован
             - ACTIVE: Активен
             - DELETED: Удален
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - BLOCKED
                - ACTIVE
                - DELETED
        - name: filter.userTags
          description: >-
            По пользовательским тегам.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 0..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.appTags
          description: >-
            По тегам приложений.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 0..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              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:
        - app(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
  /multiapp/api/v1/app/list:
    get:
      summary: >-
        Метод получения списка приложений.

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.

        Метод доступен для: admin, manager, service, ltp_first
      operationId: AppService_GetAppList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetAppListResponse"
                  error:
                    $ref: "#/components/schemas/rpcStatus"
                title: Поток объектов v1GetAppListResponse
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.text
          description: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Системное наименование;
            # - Заголовок;
            # - Подзаголовок;
            # - Список тегов пользователей;
            # - Список тегов приложений
          in: query
          required: false
          schema:
            type: string
        - name: filter.types
          description: |-
            По типам приложений

             - TYPE_UNKNOWN: Значение не указано
             - STANDARD: Стандартное приложение
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - STANDARD
        - name: filter.partnerIds
          description: |-
            По идентификаторам партнера.
            # Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.statusTypes
          description: >-
            По статусам приложений.

            Если переданы все типы, то фильтр игнорируется(так как нужно вернуть всё)

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - BLOCKED: Заблокирован
             - ACTIVE: Активен
             - DELETED: Удален
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - BLOCKED
                - ACTIVE
                - DELETED
        - name: filter.userTags
          description: >-
            По пользовательским тегам.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 0..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.appTags
          description: >-
            По тегам приложений.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 0..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: paging.orderByType
          description: >-
            Тип значения сортировки.

            Если значение не передано, то будет взято значение по умолчанию.

            # По умолчанию: CHANGED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - CHANGED_AT: Дата последнего изменения
             - CREATED_AT: Дата создания
             - RANK: По рангу для поиска по тексту.
            Применяется когда передано поле для поиска по тексту.

            В случае если текстовое поле не передано, применяется значение по умолчанию
          in: query
          required: false
          schema:
            type: string
            enum:
              - CHANGED_AT
              - CREATED_AT
              - RANK
        - 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:
        - app(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
  "/multiapp/api/v1/app/{id}":
    get:
      summary: >-
        Метод получения приложения.

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.

        Метод доступен для: admin, manager, service, ltp_first
      operationId: AppService_GetApp
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: id
          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:
        - app(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
    delete:
      summary: >-
        Метод удаления приложения.

        Soft delete, из базы не удаляется, проставляется статус.

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=682907591.

        Метод доступен для: admin, manager, service
      operationId: AppService_DeleteApp
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteAppResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteAppResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteAppResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: id
          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:
        - app(auth)
      security:
        - oauth2:
            - multiapp:edit
          bearerHttp: []
  "/multiapp/api/v1/app/{id}/code":
    get:
      summary: >-
        Метод получения кода для перехода в приложение.

        Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.

        Метод доступен для: admin, service, master, slave
      operationId: AppService_GetAppCode
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppCodeResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppCodeResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppCodeResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: id
          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:
        - app(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
  /multiapp/api/v1/app_lite/count:
    get:
      summary: >-
        Метод получения количества упрощённых приложений.

        Учитывает приложения не в статусе DELETED.

        Если не передан параметр app_lite_tag.platform_type возвращает 0.

        Если не передан параметр app_lite_tag.app_name возвращает 0.

        Если не передан параметр user_tags, либо user_tags пустой, возвращает 0.

        На основе переданных параметра app_lite_tag формируются app_tags по правилу: https://confluence.rt.ru/pages/viewpage.action?pageId=734713874.

        Не требует авторизации
      operationId: AppService_GetAppLiteCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppLiteCountResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppLiteCountResponse"
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppLiteCountResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.types
          description: |-
            По типам приложений

             - TYPE_UNKNOWN: Значение не указано
             - STANDARD: Стандартное приложение
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - STANDARD
        - name: filter.userTags
          description: >-
            По тегам пользователя.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 1..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.appLiteTag.platformType
          description: |-
            Тип платформы

             - PLATFORM_TYPE_UNKNOWN: Значение не указано
             - IOS: Платформа iOS.
            Приложение размещается в App Store
             - ANDROID: Платформа Android.
            Приложение размещается в Google Play, App Gallery или прочих сторах
             - WEB: Платформа Web.
            Приложение размещается по интернет адресу
          in: query
          required: false
          schema:
            type: string
            enum:
              - IOS
              - ANDROID
              - WEB
        - name: filter.appLiteTag.appName
          description: |-
            Название приложения, которое работает с данным сервисом.
            Для МП и PWA значение "1".
            # Паттерн: /^[0-9A-Z-]{1,19}$/
          in: query
          required: false
          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:
        - app_lite(public)
  /multiapp/api/v1/app_lite/list:
    get:
      summary: >-
        Метод получения списка упрощённых приложений.

        Возвращает приложения не в статусе DELETED.

        Если не передан параметр app_lite_tag.platform_type возвращает пустой список.

        Если не передан параметр app_lite_tag.app_name возвращает пустой список.

        Если не передан параметр user_tags, либо user_tags пустой, возвращает пустой список.

        На основе переданных параметра app_lite_tag формируются app_tags по правилу: https://confluence.rt.ru/pages/viewpage.action?pageId=734713874.

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695692.

        Не требует авторизации
      operationId: AppService_GetAppLiteList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetAppLiteListResponse"
                  error:
                    $ref: "#/components/schemas/rpcStatus"
                title: Поток объектов v1GetAppLiteListResponse
        "400":
          description: Ошибка
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.types
          description: |-
            По типам приложений

             - TYPE_UNKNOWN: Значение не указано
             - STANDARD: Стандартное приложение
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - STANDARD
        - name: filter.userTags
          description: >-
            По тегам пользователя.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 1..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.appLiteTag.platformType
          description: |-
            Тип платформы

             - PLATFORM_TYPE_UNKNOWN: Значение не указано
             - IOS: Платформа iOS.
            Приложение размещается в App Store
             - ANDROID: Платформа Android.
            Приложение размещается в Google Play, App Gallery или прочих сторах
             - WEB: Платформа Web.
            Приложение размещается по интернет адресу
          in: query
          required: false
          schema:
            type: string
            enum:
              - IOS
              - ANDROID
              - WEB
        - name: filter.appLiteTag.appName
          description: |-
            Название приложения, которое работает с данным сервисом.
            Для МП и PWA значение "1".
            # Паттерн: /^[0-9A-Z-]{1,19}$/
          in: query
          required: false
          schema:
            type: string
        - name: paging.orderByType
          description: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CREATED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - CHANGED_AT: Дата последнего изменения
             - CREATED_AT: Дата создания
          in: query
          required: false
          schema:
            type: string
            enum:
              - CHANGED_AT
              - CREATED_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:
        - app_lite(public)
  "/multiapp/api/v1/app_lite/{id}":
    get:
      summary: |-
        Метод получения упрощённого приложения.
        Не требует авторизации
      operationId: AppService_GetAppLite
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppLiteResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppLiteResponse"
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetAppLiteResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: id
          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:
        - app_lite(public)
  /multiapp/api/v1/notification:
    post:
      summary: >-
        Метод отправки уведомления уведомления.

        Метод доступен для: partner.

        Роль partner определяется по наличию заголовка X-API-KEY вместо Authorization
      operationId: NotificationService_PostNotification
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostNotificationResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostNotificationResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostNotificationResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PostNotificationRequest"
        required: true
      tags:
        - notification(auth)
      security:
        - oauth2:
            - multiapp: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, он никогда не
            будет перенаправлен на канареечный деплой
  /multiapp/api/v1/notification_template:
    post:
      summary: >-
        Метод сохранения шаблона уведомления.

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

        Поддерживает mustache теги в переменных template_header и template_text.

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=774989444.

        Метод доступен для: admin, manager, service
      operationId: NotificationTemplateService_PostNotificationTemplate
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostNotificationTemplateResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostNotificationTemplateResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostNotificationTemplateResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PostNotificationTemplateRequest"
        required: true
      tags:
        - notification_template(auth)
      security:
        - oauth2:
            - multiapp: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, он никогда не
            будет перенаправлен на канареечный деплой
  /multiapp/api/v1/notification_template/count:
    get:
      summary: >-
        Метод получения количества шаблонов уведомлений.

        Метод доступен для: admin, manager, service, partner.

        Роль partner определяется по наличию заголовка X-API-KEY вместо Authorization.

        Если метод вызван ролью partner в фильтре поле partner_ids принудительно замещается его идентификатором
      operationId: NotificationTemplateService_GetNotificationTemplateCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetNotificationTemplateCountResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetNotificationTemplateCountResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetNotificationTemplateCountResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.text
          description: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Заголовок шаблона;
            # - Тело шаблона;
            # - Системное наименование
          in: query
          required: false
          schema:
            type: string
        - name: filter.partnerIds
          description: |-
            По идентификаторам партнера.
            # Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.isShowDeleted
          description: Показывать удаленные
          in: query
          required: false
          schema:
            type: boolean
        - 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:
        - notification_template(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
  /multiapp/api/v1/notification_template/list:
    get:
      summary: >-
        Метод получения списка шаблонов уведомлений.

        Метод доступен для: admin, manager, service, partner.

        Роль partner определяется по наличию заголовка X-API-KEY вместо Authorization.

        Если метод вызван ролью partner в фильтре поле partner_ids принудительно замещается его идентификатором
      operationId: NotificationTemplateService_GetNotificationTemplateList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetNotificationTemplateListResponse"
                  error:
                    $ref: "#/components/schemas/rpcStatus"
                title: Поток объектов v1GetNotificationTemplateListResponse
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.text
          description: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Заголовок шаблона;
            # - Тело шаблона;
            # - Системное наименование
          in: query
          required: false
          schema:
            type: string
        - name: filter.partnerIds
          description: |-
            По идентификаторам партнера.
            # Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.isShowDeleted
          description: Показывать удаленные
          in: query
          required: false
          schema:
            type: boolean
        - name: paging.orderByType
          description: >-
            Тип значения сортировки.

            Если значение не передано, то будет взято значение по умолчанию.

            # По умолчанию: CHANGED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - CHANGED_AT: Дата последнего изменения
             - CREATED_AT: Дата создания
             - RANK: По рангу для поиска по тексту.
            Применяется когда передано поле для поиска по тексту.

            В случае если текстовое поле не передано, применяется значение по умолчанию
          in: query
          required: false
          schema:
            type: string
            enum:
              - CHANGED_AT
              - CREATED_AT
              - RANK
        - 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:
        - notification_template(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
  "/multiapp/api/v1/notification_template/{id}":
    get:
      summary: >-
        Метод получения шаблона уведомления.

        Метод доступен для: admin, manager, service, partner.

        Роль partner определяется по наличию заголовка X-API-KEY вместо Authorization.

        Роли partner доступны только связанные с ней шаблоны
      operationId: NotificationTemplateService_GetNotificationTemplate
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetNotificationTemplateResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetNotificationTemplateResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetNotificationTemplateResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: id
          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:
        - notification_template(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
    delete:
      summary: |-
        Метод удаления шаблона уведомления.
        Устанавливает текущую дату и время в параметр deleted_at.
        Метод доступен для: admin, manager, service
      operationId: NotificationTemplateService_DeleteNotificationTemplate
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteNotificationTemplateResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteNotificationTemplateResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteNotificationTemplateResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: id
          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:
        - notification_template(auth)
      security:
        - oauth2:
            - multiapp:edit
          bearerHttp: []
  "/multiapp/api/v1/notification_template/{notificationTemplatePartner.notificationTemplateId}/partner/{notificationTemplatePartner.partnerId}/attach":
    put:
      summary: |-
        Метод создания связи шаблона уведомления и партнера.
        Метод доступен для: admin, manager, service
      operationId: NotificationTemplateService_PutNotificationTemplatePartnerAttach
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutNotificationTemplatePartnerAttachResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutNotificationTemplatePartnerAttachResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutNotificationTemplatePartnerAttachResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: notificationTemplatePartner.notificationTemplateId
          description: |-
            Идентификатор шаблона уведомления.
            # Тип: Guid
          in: path
          required: true
          schema:
            type: string
        - name: notificationTemplatePartner.partnerId
          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:
        - notification_template(auth)
      security:
        - oauth2:
            - multiapp:edit
          bearerHttp: []
  "/multiapp/api/v1/notification_template/{notificationTemplatePartner.notificationTemplateId}/partner/{notificationTemplatePartner.partnerId}/detach":
    put:
      summary: |-
        Метод удаления связи шаблона уведомления и партнера.
        Метод доступен для: admin, manager, service
      operationId: NotificationTemplateService_PutNotificationTemplatePartnerDetach
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutNotificationTemplatePartnerDetachResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutNotificationTemplatePartnerDetachResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutNotificationTemplatePartnerDetachResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: notificationTemplatePartner.notificationTemplateId
          description: |-
            Идентификатор шаблона уведомления.
            # Тип: Guid
          in: path
          required: true
          schema:
            type: string
        - name: notificationTemplatePartner.partnerId
          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:
        - notification_template(auth)
      security:
        - oauth2:
            - multiapp:edit
          bearerHttp: []
  /multiapp/api/v1/partner:
    post:
      summary: >-
        Метод сохранения партнера.

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

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695525.

        Метод доступен для: admin, manager, service
      operationId: PartnerService_PostPartner
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostPartnerResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostPartnerResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostPartnerResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PostPartnerRequest"
        required: true
      tags:
        - partner(auth)
      security:
        - oauth2:
            - multiapp: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, он никогда не
            будет перенаправлен на канареечный деплой
  "/multiapp/api/v1/partner/address/orpon/{orpon}":
    get:
      summary: >-
        Метод получения адреса дома по ОРПОНу.

        Адресная строка должны быть в формате "{Регион}, {Город}, {Улица}, {Дом}, {Строение}".

        Партнер может получить адрес только по доступному ему ОРПОНу.

        Доступные ОРПОНы для партнера может получить через привязанные app в поле app_tags и user_tags.

        Метод доступен для: admin, manager, service, partner.

        Роль partner определяется по наличию заголовка X-API-KEY вместо Authorization
      operationId: PartnerService_GetPartnerAddressOrpon
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerAddressOrponResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerAddressOrponResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerAddressOrponResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: orpon
          description: |-
            ОРПОН.
            # Диапазон: 1..9223372036854775807
          in: path
          required: true
          schema:
            type: string
            format: int64
        - 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:
        - partner(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
  /multiapp/api/v1/partner/count:
    get:
      summary: |-
        Метод получения количества партнеров.
        Метод доступен для: admin, manager, service, ltp_first
      operationId: PartnerService_GetPartnerCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerCountResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerCountResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerCountResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.text
          description: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Наименование
          in: query
          required: false
          schema:
            type: string
        - 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: filter.templateIds
          description: |-
            По идентификаторам доступных шаблонов.
            # Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.isShowDeleted
          description: Показывать удаленные
          in: query
          required: false
          schema:
            type: boolean
        - 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:
        - partner(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
  /multiapp/api/v1/partner/list:
    get:
      summary: |-
        Метод получения списка партнеров.
        Метод доступен для: admin, manager, service, ltp_first
      operationId: PartnerService_GetPartnerList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetPartnerListResponse"
                  error:
                    $ref: "#/components/schemas/rpcStatus"
                title: Поток объектов v1GetPartnerListResponse
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.text
          description: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Наименование
          in: query
          required: false
          schema:
            type: string
        - 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: filter.templateIds
          description: |-
            По идентификаторам доступных шаблонов.
            # Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.isShowDeleted
          description: Показывать удаленные
          in: query
          required: false
          schema:
            type: boolean
        - name: paging.orderByType
          description: >-
            Тип значения сортировки.

            Если значение не передано, то будет взято значение по умолчанию.

            # По умолчанию: CHANGED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - CHANGED_AT: Дата последнего изменения
             - CREATED_AT: Дата создания
             - RANK: По рангу для поиска по тексту.
            Применяется когда передано поле для поиска по тексту.

            В случае если текстовое поле не передано, применяется значение по умолчанию
          in: query
          required: false
          schema:
            type: string
            enum:
              - CHANGED_AT
              - CREATED_AT
              - RANK
        - 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:
        - partner(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
  /multiapp/api/v1/partner/public_key:
    post:
      summary: >-
        Метод обновления публичного ключа партнёра.

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

        Метод доступен для: partner.

        Требует передачи аутентификационного ключа в заголовке X-API-KEY.

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695525
      operationId: PartnerService_PostPartnerPublicKey
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostPartnerPublicKeyResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostPartnerPublicKeyResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostPartnerPublicKeyResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PostPartnerPublicKeyRequest"
        required: true
      tags:
        - partner(auth)
      security:
        - oauth2:
            - multiapp: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, он никогда не
            будет перенаправлен на канареечный деплой
  /multiapp/api/v1/partner/token:
    get:
      summary: >-
        Метод получения токена.

        Access токен возможно получить только для пользователей с типом master в статусе active, demo и new.

        Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=664695865.

        Не требует авторизации
      operationId: PartnerService_GetPartnerToken
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerTokenResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerTokenResponse"
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerTokenResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: code
          description: |-
            Код.
            # Тип: Guid
          in: query
          required: true
          schema:
            type: string
        - name: response_type
          description: |-
            Тип ответа.
            # Допустимые значения: "id_token", "token", "id_token token"
          in: query
          required: true
          schema:
            type: string
        - name: nonce
          description: Ваучер
          in: query
          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:
        - partner(public)
  "/multiapp/api/v1/partner/{id}":
    get:
      summary: |-
        Метод получения партнера.
        Метод доступен для: admin, manager, service, ltp_first
      operationId: PartnerService_GetPartner
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetPartnerResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: id
          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:
        - partner(auth)
      security:
        - oauth2:
            - multiapp:read
            - multiapp:edit
          bearerHttp: []
    delete:
      summary: >-
        Метод удаления партнёра.

        Сценарий использования метода: https://confluence.rt.ru/pages/viewpage.action?pageId=804302306.

        Метод доступен для: admin, manager, service
      operationId: PartnerService_DeletePartner
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePartnerResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePartnerResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeletePartnerResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: id
          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:
        - partner(auth)
      security:
        - oauth2:
            - multiapp:edit
          bearerHttp: []
  /multiapp/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:
    AppGrantType:
      type: string
      enum:
        - GET_ACCESS_TOKEN
        - GET_ID_TOKEN
        - POST_NOTIF_NO_ASSIGN_CHECK
      description: >-
        - GRANT_TYPE_UNKNOWN: Значение не указано
         - GET_ACCESS_TOKEN: Разрешение на получение авторизационного токена посредством метода GET /multiapp/api/v1/partner/token
         - GET_ID_TOKEN: Разрешение на получение идентификационного доступа посредством метода GET /multiapp/api/v1/partner/token
         - POST_NOTIF_NO_ASSIGN_CHECK: Разрешение на отправку уведомлений без проверки назначений приложения методом POST /multiapp/api/v1/notification
      title: Справочник разрешений
    AppLink:
      type: object
      properties:
        platformType:
          title: |-
            Тип платформы.
            Обязательное
          allOf:
            - $ref: "#/components/schemas/AppPlatformType"
        type:
          title: |-
            Тип ссылки.
            Обязательное
          allOf:
            - $ref: "#/components/schemas/AppLinkType"
        url:
          type: string
          title: |-
            Значение ссылки для перехода.
            Обязательное.
            # Диапазон: 12..512
        packages:
          type: array
          items:
            type: string
          title: >-
            Список пакетов.

            Если пусто попытка перехода осуществляется безусловно.

            Если заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве, иначе обработка переходит к следующей ссылке.

            # Диапазон: 0..20
      title: Ссылка
      required:
        - platformType
        - type
        - url
    AppLinkType:
      type: string
      enum:
        - INTERNAL_APP
        - EXTERNAL_APP
        - WEB_VIEW
        - WEB_BROWSER
        - EXTERNAL_WEB_VIEW
      description: >-
        - TYPE_UNKNOWN: Значение не указано
         - INTERNAL_APP: Ссылка для перехода на раздел текущего приложения
         - EXTERNAL_APP: Ссылка для перехода на стороннее приложение
         - WEB_VIEW: Ссылка для перехода на веб-вью внутренних (своих) приложений.
        В окне отсутствует адресаная строка.

        Для iOS используется WKWebView, для Android используется WebView
         - WEB_BROWSER: Ссылка для перехода на веб-браузер
         - EXTERNAL_WEB_VIEW: Ссылка для перехода на веб-вью внешних (партнёрских) приложений.
        В окне присутствует адресаная строка.

        Для iOS используется SFSafariViewController, для Android используется ChromeCustomTabs
      title: |-
        Справочник типов ссылок.
        # Тип: byte
    AppLiteFilterAppLiteTag:
      type: object
      properties:
        platformType:
          title: Тип платформы
          allOf:
            - $ref: "#/components/schemas/AppPlatformType"
        appName:
          type: string
          title: |-
            Название приложения, которое работает с данным сервисом.
            Для МП и PWA значение "1".
            # Паттерн: /^[0-9A-Z-]{1,19}$/
      title: Тег для приложения
    AppLiteLinkLite:
      type: object
      properties:
        platformType:
          title: |-
            Тип платформы.
            Обязательное
          allOf:
            - $ref: "#/components/schemas/AppPlatformType"
        type:
          title: |-
            Тип ссылки.
            Обязательное
          allOf:
            - $ref: "#/components/schemas/AppLinkType"
        url:
          type: string
          title: |-
            Значение ссылки для перехода.
            Обязательное
        packages:
          type: array
          items:
            type: string
          title: >-
            Список пакетов.

            Если пусто попытка перехода осуществляется безусловно.

            Если заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве, иначе обработка переходит к следующей ссылке
      title: Упрощённая ссылка
      required:
        - platformType
        - type
        - url
    AppPlatformType:
      type: string
      enum:
        - IOS
        - ANDROID
        - WEB
      description: |-
        - PLATFORM_TYPE_UNKNOWN: Значение не указано
         - IOS: Платформа iOS.
        Приложение размещается в App Store
         - ANDROID: Платформа Android.
        Приложение размещается в Google Play, App Gallery или прочих сторах
         - WEB: Платформа Web.
        Приложение размещается по интернет адресу
      title: |-
        Справочник платформ.
        # Тип: byte
    AppStatusType:
      type: string
      enum:
        - BLOCKED
        - ACTIVE
        - DELETED
      description: |-
        - STATUS_TYPE_UNKNOWN: Значение не указано
         - BLOCKED: Заблокирован
         - ACTIVE: Активен
         - DELETED: Удален
      title: |-
        Справочник статусов приложений.
        # Тип: byte
    ErrorAppAssignmentError:
      type: object
      title: |-
        Ошибка свзяанная с назначениями приложения.
        Причины:
        - Приложение назначено не только по ОРПОНу или ОРПОНу и номеру квартиры;
        - Приложение не назначено на переданные orpon и room_number
    ErrorAppBlockedError:
      type: object
      title: Приложение находится в статусе "Заблокировано"
    ErrorAppIsInactive:
      type: object
      title: Приложение не в статусе ACTIVE
    ErrorCodeNotFoundOrExpiredError:
      type: object
      title: >-
        Некорректный код.

        Причины:

        - Передан неверный код;

        - Превышен допустимый временной интервал между запросом на формирование кода и запросом на получение идентификационного токена
    ErrorIncorrectDataTypeError:
      type: object
      title: |-
        Некорректный тип данных для переменной в шаблоне.
        Список допустимых типов данных:
        - Number;
        - Date;
        - Phone;
        - Time
    ErrorIncorrectTagFormatError:
      type: object
      title: Некорректный формат Mustache тегов
    ErrorIncorrectVariableNameError:
      type: object
      title: Некорректное наименование переменной в шаблоне
    ErrorLinkedAppExists:
      type: object
      title: У партнера есть хотя бы одно приложение
    ErrorMissingApiKeyOnCreation:
      type: object
      title: Api-Key обязателен при создании партнера
    ErrorPartnerKeyDoesNotExist:
      type: object
      title: Ошибка наличия публичного ключа у партнера
    ErrorResponseTypeIsNotSupported:
      type: object
      title: Переданный тип ответа не поддерживается
    ErrorTokenGenerationError:
      type: object
      title: |-
        Ошибка формирования токена.
        Причины:
        - Ошибка в сервисе KMS.
        - Ошибка в сервисе Identity
    ErrorUserNotFoundError:
      type: object
      title: >-
        Данные пользователя для формирования идентификационного токена не
        найдены.

        Причины:

        - Пользователь с таким идентификатором отсутсвует в БД ключа;

        - Ошибка взаимодействия с сервисом Домохозяйств
    ErrorValuesError:
      type: object
      title: Значения для подстановки не соответствуют шаблону уведомления
    SavingErrorApiKeyExists:
      type: object
      title: >-
        API-key уже существует.

        Может появиться только в случае создания партнера.

        Причины:

        - В базе уже хранится такой api_key, он должен быть уникален для каждого партнера
    SavingErrorPartnerIsNotExist:
      type: object
      title: |-
        Переданный партнер не существует.
        Причины:
        - В базе нет партнера с переданным partner_id
    SavingErrorTemplateIsDeleted:
      type: object
      title: Шаблон удален
    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: Ошибка транспортного слоя
    v1App:
      type: object
      properties:
        id:
          type: string
          title: |-
            Идентификатор.
            Если не передан создаётся сервером.
            # Тип: Guid
        partnerId:
          type: string
          title: |-
            Идентификатор партнера.
            # Тип: Guid
        type:
          title: Тип приложения
          allOf:
            - $ref: "#/components/schemas/v1AppType"
        title:
          type: string
          title: |-
            Системное наименование.
            Не отображается пользователям.
            # Диапазон: 3..256
        header:
          type: string
          title: |-
            Заголовок.
            # Диапазон: 3..30
        subtitle:
          type: string
          title: |-
            Подзаголовок.
            # Диапазон: 3..60
        backgroundColor:
          type: string
          title: |-
            Цвет заднего плана(подложки).
            Все цвета должны быть в формате hex #RRGGBBAA.
            Пример: #7e00c380.
            # Диапазон: 9..9.
            # Паттерн: /^#[0-9a-fA-F]{8}$/
        statusType:
          title: Статус приложения
          allOf:
            - $ref: "#/components/schemas/AppStatusType"
        links:
          type: array
          items:
            $ref: "#/components/schemas/AppLink"
          title: |-
            Ссылки для переходов.
            # Диапазон: 0..100
        userTags:
          type: array
          items:
            type: string
          title: >-
            Список тегов пользователей.

            Обязательное.

            Описывает кто может видеть приложение.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 1..100.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
        appTags:
          type: array
          items:
            type: string
          title: >-
            Список тегов приложений.

            Обязательное.

            Описывает какие клиенты могут видеть приложение.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 1..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
        createdAt:
          type: string
          format: date-time
          title: |-
            Дата создания.
            # Тип: DateTime
          readOnly: true
        changedAt:
          type: string
          format: date-time
          title: |-
            Дата последнего изменения.
            Заполняется и обновляется сервером.
            При изменении должен совпадать со значением из БД.
            Является версией объекта.
            # Тип: DateTime
        grantTypes:
          type: array
          items:
            $ref: "#/components/schemas/AppGrantType"
          title: Список разрешений
      title: |-
        Приложение.
        # Описание модели
      required:
        - partnerId
        - type
        - title
        - statusType
        - userTags
        - appTags
    v1AppFilter:
      type: object
      properties:
        text:
          type: string
          title: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Системное наименование;
            # - Заголовок;
            # - Подзаголовок;
            # - Список тегов пользователей;
            # - Список тегов приложений
        types:
          type: array
          items:
            $ref: "#/components/schemas/v1AppType"
          title: По типам приложений
        partnerIds:
          type: array
          items:
            type: string
          title: |-
            По идентификаторам партнера.
            # Тип: Guid
        statusTypes:
          type: array
          items:
            $ref: "#/components/schemas/AppStatusType"
          title: >-
            По статусам приложений.

            Если переданы все типы, то фильтр игнорируется(так как нужно вернуть всё)
        userTags:
          type: array
          items:
            type: string
          title: >-
            По пользовательским тегам.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 0..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
        appTags:
          type: array
          items:
            type: string
          title: >-
            По тегам приложений.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 0..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
      title: Фильтр приложений
    v1AppLite:
      type: object
      properties:
        id:
          type: string
          title: |-
            Идентификатор.
            # Тип: Guid
        title:
          type: string
          title: |-
            Наименование.
            Не отображается пользователям.
            # Диапазон: 3..256
        header:
          type: string
          title: |-
            Заголовок.
            # Диапазон: 3..30
        subtitle:
          type: string
          title: |-
            Подзаголовок.
            # Диапазон: 3..60
        backgroundColor:
          type: string
          title: |-
            Цвет заднего плана(подложки).
            Все цвета должны быть в формате hex #RRGGBBAA.
            Пример: #7e00c380.
            # Диапазон: 9..9.
            # Паттерн: /^#[0-9a-fA-F]{8}$/
        statusType:
          title: Статус приложения
          allOf:
            - $ref: "#/components/schemas/AppStatusType"
        links:
          type: array
          items:
            $ref: "#/components/schemas/AppLiteLinkLite"
          title: Ссылки для переходов
      title: Облегчённое приложение
      required:
        - title
        - statusType
    v1AppLiteFilter:
      type: object
      properties:
        types:
          type: array
          items:
            $ref: "#/components/schemas/v1AppType"
          title: По типам приложений
        userTags:
          type: array
          items:
            type: string
          title: >-
            По тегам пользователя.

            Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.

            # Диапазон: 1..20.

            # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
        appLiteTag:
          title: Тег для приложения
          allOf:
            - $ref: "#/components/schemas/AppLiteFilterAppLiteTag"
      title: Упрощённый фильтр по приложениям
    v1AppLitePaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CREATED_AT
          allOf:
            - $ref: "#/components/schemas/v1AppLitePagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1AppLitePagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Пагинация упрощенных приложений
    v1AppLitePagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    v1AppLitePagingOrderByType:
      type: string
      enum:
        - CHANGED_AT
        - CREATED_AT
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - CHANGED_AT: Дата последнего изменения
         - CREATED_AT: Дата создания
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1AppPaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CHANGED_AT
          allOf:
            - $ref: "#/components/schemas/v1AppPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1AppPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Пагинация приложений
    v1AppPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    v1AppPagingOrderByType:
      type: string
      enum:
        - CHANGED_AT
        - CREATED_AT
        - RANK
      description: >-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - CHANGED_AT: Дата последнего изменения
         - CREATED_AT: Дата создания
         - RANK: По рангу для поиска по тексту.
        Применяется когда передано поле для поиска по тексту.

        В случае если текстовое поле не передано, применяется значение по умолчанию
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1AppSavingError:
      type: object
      properties:
        conflict:
          title: Конфликт версий
          allOf:
            - $ref: "#/components/schemas/v1AppSavingErrorConflict"
        partnerIsNotExist:
          title: Переданный партнер не существует
          allOf:
            - $ref: "#/components/schemas/SavingErrorPartnerIsNotExist"
        partnerIsDeleted:
          title: Переданный партнер удален
          allOf:
            - $ref: "#/components/schemas/v1AppSavingErrorPartnerIsDeleted"
      title: >-
        Ошибка сохранения.

        Эти проверки выполняются при работе с базой данных и сторонними сервисами
    v1AppSavingErrorConflict:
      type: object
      title: |-
        Конфликт версий.
        Причины:
        - В базе хранится другая версия строки, значения changed_at отличаются
    v1AppSavingErrorPartnerIsDeleted:
      type: object
      title: |-
        Переданный партнер удален.
        Причины:
        - В базе удален партнер с переданным partner_id
    v1AppType:
      type: string
      enum:
        - STANDARD
      description: |-
        - TYPE_UNKNOWN: Значение не указано
         - STANDARD: Стандартное приложение
      title: |-
        Справочник типов приложений.
        # Тип: byte
    v1DeleteAppResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1DeleteAppResponseError"
      title: Ответ на запрос удаления приложения
    v1DeleteAppResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения упрощённого приложения
    v1DeleteNotificationTemplateResponse:
      type: object
      properties:
        error:
          title: Ошибка при удалении
          allOf:
            - $ref: "#/components/schemas/v1DeleteNotificationTemplateResponseError"
      title: Ответ на запрос удаления шаблона уведомления
    v1DeleteNotificationTemplateResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка удаления шаблона уведомления
    v1DeletePartnerResponse:
      type: object
      properties:
        error:
          title: Ошибка при удалении
          allOf:
            - $ref: "#/components/schemas/v1DeletePartnerResponseError"
      title: Ответ на запрос удаления партнёра
    v1DeletePartnerResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        linkedAppExists:
          title: У партнера есть хотя бы одно приложение
          allOf:
            - $ref: "#/components/schemas/ErrorLinkedAppExists"
      title: Ошибка удаления партнёра
    v1GetAppCodeResponse:
      type: object
      properties:
        data:
          type: string
          title: Код
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetAppCodeResponseError"
      title: Ответ на запрос на получение кода для перехода в приложение
    v1GetAppCodeResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        partnerKeyDoesNotExist:
          title: Ошибка наличия публичного ключа у партнера
          allOf:
            - $ref: "#/components/schemas/ErrorPartnerKeyDoesNotExist"
        appIsInactive:
          title: Приложение не в статусе ACTIVE
          allOf:
            - $ref: "#/components/schemas/ErrorAppIsInactive"
      title: Ошибка запроса получения ссылки на приложение
    v1GetAppCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего приложений
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetAppCountResponseError"
      title: Ответ на запрос получения количества приложений
    v1GetAppCountResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения количества приложений
    v1GetAppListResponse:
      type: object
      properties:
        data:
          title: Приложение
          allOf:
            - $ref: "#/components/schemas/v1App"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetAppListResponseError"
      title: Ответ на запрос получения списка приложений
    v1GetAppListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения списка приложений
    v1GetAppLiteCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего упрощенных приложений
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetAppLiteCountResponseError"
      title: Ответ на запрос получения количества упрощённых приложений
    v1GetAppLiteCountResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения списка приложений
    v1GetAppLiteListResponse:
      type: object
      properties:
        data:
          title: Упрощённое приложение
          allOf:
            - $ref: "#/components/schemas/v1AppLite"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetAppLiteListResponseError"
      title: Ответ на запрос получения списка упрощённых приложений
    v1GetAppLiteListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения списка приложений
    v1GetAppLiteResponse:
      type: object
      properties:
        data:
          title: Упрощённое приложение
          allOf:
            - $ref: "#/components/schemas/v1AppLite"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetAppLiteResponseError"
      title: Ответ на запрос получения упрощённого приложения
    v1GetAppLiteResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения упрощённого приложения
    v1GetAppResponse:
      type: object
      properties:
        data:
          title: Приложение
          allOf:
            - $ref: "#/components/schemas/v1App"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetAppResponseError"
      title: Ответ на запрос получения приложения
    v1GetAppResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения приложения
    v1GetNotificationTemplateCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего шаблонов уведомлений
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetNotificationTemplateCountResponseError"
      title: Ответ на запрос получения количества шаблонов уведомлений
    v1GetNotificationTemplateCountResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения количества шаблонов уведомлений
    v1GetNotificationTemplateListResponse:
      type: object
      properties:
        data:
          title: Шаблон уведомления
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplate"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetNotificationTemplateListResponseError"
      title: Ответ на запрос получения списка шаблонов уведомлений
    v1GetNotificationTemplateListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения списка шаблонов уведомлений
    v1GetNotificationTemplateResponse:
      type: object
      properties:
        data:
          title: Шаблон уведомления
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplate"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetNotificationTemplateResponseError"
      title: Ответ на запрос получения шаблона уведомления
    v1GetNotificationTemplateResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения шаблона уведомления
    v1GetPartnerAddressOrponResponse:
      type: object
      properties:
        data:
          type: string
          title: Адрес
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetPartnerAddressOrponResponseError"
      title: Ответ на запрос получения адреса по ОРПОНу
    v1GetPartnerAddressOrponResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        permissionDenied:
          title: Доступ запрещен
          allOf:
            - $ref: "#/components/schemas/v1GetPartnerAddressOrponResponseErrorPermissionDeni\
                ed"
      title: Ошибка
    v1GetPartnerAddressOrponResponseErrorPermissionDenied:
      type: object
      title: |-
        Доступ запрещен.
        Причины:
        - У партнера нет разрешения на переданный ОРПОН
    v1GetPartnerCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего партнеров
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetPartnerCountResponseError"
      title: Ответ на запрос получения количества партнеров
    v1GetPartnerCountResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения количества партнеров
    v1GetPartnerListResponse:
      type: object
      properties:
        data:
          title: Партнер
          allOf:
            - $ref: "#/components/schemas/v1Partner"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetPartnerListResponseError"
      title: Ответ на запрос получения списка партнеров
    v1GetPartnerListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения списка партнеров
    v1GetPartnerResponse:
      type: object
      properties:
        data:
          title: Партнер
          allOf:
            - $ref: "#/components/schemas/v1Partner"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetPartnerResponseError"
      title: Ответ на запрос получения партнера
    v1GetPartnerResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса получения партнера
    v1GetPartnerTokenResponse:
      type: object
      properties:
        data:
          title: Токен
          allOf:
            - $ref: "#/components/schemas/v1Token"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetPartnerTokenResponseError"
      title: Ответ на запрос получения токена
    v1GetPartnerTokenResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        userNotFound:
          title: "Ошибка: пользователь не найден"
          allOf:
            - $ref: "#/components/schemas/ErrorUserNotFoundError"
        tokenGenerationError:
          title: "Ошибка: формирования токена"
          allOf:
            - $ref: "#/components/schemas/ErrorTokenGenerationError"
        codeNotFoundOrExpiredError:
          title: "Ошибка: некорректный код"
          allOf:
            - $ref: "#/components/schemas/ErrorCodeNotFoundOrExpiredError"
        responseTypeIsNotSupported:
          title: Переданный тип ответа не поддерживается
          allOf:
            - $ref: "#/components/schemas/ErrorResponseTypeIsNotSupported"
        permissionDenied:
          title: Доступ запрещен
          allOf:
            - $ref: "#/components/schemas/v1GetPartnerTokenResponseErrorPermissionDenied"
      title: Ошибка
    v1GetPartnerTokenResponseErrorPermissionDenied:
      type: object
      title: |-
        Доступ запрещен.
        Причины:
        - У запрашивающего приложения нет разрешения на выбранный тип ответа
    v1GetSystemStatusResponse:
      type: object
      title: Ответ на запрос проверки доступности сервиса
    v1Notification:
      type: object
      properties:
        appId:
          type: string
          title: |-
            Идентификатор приложения.
            # Тип: Guid
        orpon:
          type: string
          format: int64
          title: |-
            ОРПОН.
            # Диапазон 1..9223372036854775807
        roomNumbers:
          type: array
          items:
            type: string
          title: |-
            Номер квартиры.
            # Диапазон: 1..150
        templateId:
          type: string
          title: |-
            Идентификатор шаблона.
            # Тип: Guid
        values:
          type: object
          additionalProperties:
            type: string
          title: Значения для подстановки в текст шаблона
        payload:
          type: object
          additionalProperties:
            type: string
          title: Полезная нагрузка
      title: Уведомление
      required:
        - appId
        - orpon
        - roomNumbers
        - templateId
        - values
    v1NotificationTemplate:
      type: object
      properties:
        id:
          type: string
          title: |-
            Идентификатор.
            Если не передан создаётся сервером.
            # Тип: Guid
        templateHeader:
          type: string
          title: 'template: :2: function "название" not defined'
        templateText:
          type: string
          title: 'template: :2: function "название" not defined'
        createdAt:
          type: string
          format: date-time
          title: |-
            Дата создания.
            # Тип: DateTime
          readOnly: true
        changedAt:
          type: string
          format: date-time
          title: |-
            Дата последнего изменения.
            Заполняется и обновляется сервером.
            При изменении должен совпадать со значением из БД.
            Является версией объекта.
            # Тип: DateTime
        deletedAt:
          type: string
          format: date-time
          title: |-
            Дата удаления.
            # Тип: DateTime?
          readOnly: true
        title:
          type: string
          title: |-
            Системное наименование.
            # Диапазон: 3..256
      title: |-
        Шаблон уведомления.
        # Описание модели
      required:
        - templateHeader
        - templateText
        - title
    v1NotificationTemplateFilter:
      type: object
      properties:
        text:
          type: string
          title: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Заголовок шаблона;
            # - Тело шаблона;
            # - Системное наименование
        partnerIds:
          type: array
          items:
            type: string
          title: |-
            По идентификаторам партнера.
            # Тип: Guid
        isShowDeleted:
          type: boolean
          title: Показывать удаленные
      title: Фильтр шаблонов уведомлений
    v1NotificationTemplatePaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CHANGED_AT
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplatePagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplatePagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Пагинация шаблонов уведомлений
    v1NotificationTemplatePagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    v1NotificationTemplatePagingOrderByType:
      type: string
      enum:
        - CHANGED_AT
        - CREATED_AT
        - RANK
      description: >-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - CHANGED_AT: Дата последнего изменения
         - CREATED_AT: Дата создания
         - RANK: По рангу для поиска по тексту.
        Применяется когда передано поле для поиска по тексту.

        В случае если текстовое поле не передано, применяется значение по умолчанию
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1NotificationTemplatePartner:
      type: object
      properties:
        notificationTemplateId:
          type: string
          title: |-
            Идентификатор шаблона уведомления.
            # Тип: Guid
        partnerId:
          type: string
          title: |-
            Идентификатор партнера.
            # Тип: Guid
      title: |-
        Связь шаблона уведомлений и партнера.
        # Описание модели
      required:
        - notificationTemplateId
        - partnerId
    v1NotificationTemplatePartnerSavingError:
      type: object
      properties:
        partnerIsDeleted:
          title: Партнер удален
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplatePartnerSavingErrorPartnerIsDe\
                leted"
        templateIsDeleted:
          title: Шаблон удален
          allOf:
            - $ref: "#/components/schemas/SavingErrorTemplateIsDeleted"
      title: >-
        Ошибка сохранения.

        Эти проверки выполняются при работе с базой данных и сторонними сервисами
    v1NotificationTemplatePartnerSavingErrorPartnerIsDeleted:
      type: object
      title: Партнер удален
    v1NotificationTemplateSavingError:
      type: object
      properties:
        conflict:
          title: Конфликт версий
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplateSavingErrorConflict"
      title: >-
        Ошибка сохранения.

        Эти проверки выполняются при работе с базой данных и сторонними сервисами
    v1NotificationTemplateSavingErrorConflict:
      type: object
      title: |-
        Конфликт версий.
        Причины:
        - В базе хранится другая версия строки, значения changed_at отличаются
    v1Partner:
      type: object
      properties:
        id:
          type: string
          title: |-
            Идентификатор.
            Если не передан создаётся сервером.
            # Тип: Guid
        name:
          type: string
          title: |-
            Наименование.
            # Диапазон: 2..256
        apiKey:
          type: string
          title: |-
            API ключ.
            # Тип: Guid?
        publicKey:
          type: string
          title: Публичный ключ
          readOnly: true
        createdAt:
          type: string
          format: date-time
          title: |-
            Дата создания партнера.
            # Тип: DateTime
          readOnly: true
        changedAt:
          type: string
          format: date-time
          title: |-
            Дата обновления партнера.
            # Тип: DateTime
        deletedAt:
          type: string
          format: date-time
          title: |-
            Дата удаления партнера.
            # Тип: DateTime?
          readOnly: true
        apiKeyHash:
          type: string
          title: Хэш от API ключа
          readOnly: true
        apiKeyMasked:
          type: string
          title: API ключ маскированный
          readOnly: true
      title: |-
        Партнер.
        # Описание модели
      required:
        - name
    v1PartnerFilter:
      type: object
      properties:
        text:
          type: string
          title: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Наименование
        beginChangedAt:
          type: string
          format: date-time
          title: От даты обновления партнера включительно (больше или равно)
        endChangedAt:
          type: string
          format: date-time
          title: До даты обновления партнера (меньше)
        templateIds:
          type: array
          items:
            type: string
          title: |-
            По идентификаторам доступных шаблонов.
            # Тип: Guid
        isShowDeleted:
          type: boolean
          title: Показывать удаленные
      title: Фильтр партнеров
    v1PartnerPaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CHANGED_AT
          allOf:
            - $ref: "#/components/schemas/v1PartnerPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1PartnerPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Пагинация партнеров
    v1PartnerPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    v1PartnerPagingOrderByType:
      type: string
      enum:
        - CHANGED_AT
        - CREATED_AT
        - RANK
      description: >-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - CHANGED_AT: Дата последнего изменения
         - CREATED_AT: Дата создания
         - RANK: По рангу для поиска по тексту.
        Применяется когда передано поле для поиска по тексту.

        В случае если текстовое поле не передано, применяется значение по умолчанию
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1PartnerSavingError:
      type: object
      properties:
        conflict:
          title: Конфликт версий
          allOf:
            - $ref: "#/components/schemas/v1PartnerSavingErrorConflict"
        apiKeyExists:
          title: API-key уже существует
          allOf:
            - $ref: "#/components/schemas/SavingErrorApiKeyExists"
        partnerIsDeleted:
          title: Партнёр удалён
          allOf:
            - $ref: "#/components/schemas/v1PartnerSavingErrorPartnerIsDeleted"
      title: >-
        Ошибка сохранения.

        Эти проверки выполняются при работе с базой данных и сторонними сервисами
    v1PartnerSavingErrorConflict:
      type: object
      title: |-
        Конфликт версий.
        Причины:
        - В базе хранится другая версия строки, значения changed_at отличаются
    v1PartnerSavingErrorPartnerIsDeleted:
      type: object
      title: |-
        Партнёр удалён.
        Причины:
        - Переданный публичный ключ принадлежит удалённому партнеру
    v1PostAppRequest:
      type: object
      properties:
        data:
          title: Приложение
          allOf:
            - $ref: "#/components/schemas/v1App"
      title: Запрос сохранения приложения
      required:
        - data
    v1PostAppResponse:
      type: object
      properties:
        data:
          title: Приложение
          allOf:
            - $ref: "#/components/schemas/v1App"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PostAppResponseError"
      title: Ответ на запрос сохранения приложения
    v1PostAppResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        saving:
          title: Ошибка сохранения
          allOf:
            - $ref: "#/components/schemas/v1AppSavingError"
      title: Ошибка запроса сохранения приложения
    v1PostNotificationRequest:
      type: object
      properties:
        data:
          title: Уведомление
          allOf:
            - $ref: "#/components/schemas/v1Notification"
      title: Запрос сохранения уведомления
      required:
        - data
    v1PostNotificationResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PostNotificationResponseError"
      title: Ответ на запрос сохранения уведомления
    v1PostNotificationResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        values:
          title: Значения для подстановки не соответствуют шаблону уведомления
          allOf:
            - $ref: "#/components/schemas/ErrorValuesError"
        appBlocked:
          title: Приложение находится в статусе "Заблокировано"
          allOf:
            - $ref: "#/components/schemas/ErrorAppBlockedError"
        appAssignment:
          title: Ошибка связанная с назначениями приложения
          allOf:
            - $ref: "#/components/schemas/ErrorAppAssignmentError"
      title: Ошибка запроса сохранения уведомления
    v1PostNotificationTemplateRequest:
      type: object
      properties:
        data:
          title: Приложение
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplate"
      title: Запрос сохранения приложения
      required:
        - data
    v1PostNotificationTemplateResponse:
      type: object
      properties:
        data:
          title: Шаблон уведомления
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplate"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PostNotificationTemplateResponseError"
      title: Ответ на запрос сохранения шаблона уведомления
    v1PostNotificationTemplateResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        saving:
          title: Ошибка сохранения
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplateSavingError"
        incorrectDataType:
          title: Некорректный тип данных для переменной в шаблоне
          allOf:
            - $ref: "#/components/schemas/ErrorIncorrectDataTypeError"
        incorrectVariableNameError:
          title: Некорректное наименование переменной в шаблоне
          allOf:
            - $ref: "#/components/schemas/ErrorIncorrectVariableNameError"
        incorrectTagFormatError:
          title: Некорректный формат Mustache тегов
          allOf:
            - $ref: "#/components/schemas/ErrorIncorrectTagFormatError"
      title: Ошибка запроса сохранения шаблона уведомления
    v1PostPartnerPublicKeyRequest:
      type: object
      properties:
        publicKey:
          type: string
          title: Публичный ключ
      title: Запрос сохранения публичного ключа партнера
      required:
        - publicKey
    v1PostPartnerPublicKeyResponse:
      type: object
      properties:
        data:
          title: Партнер
          allOf:
            - $ref: "#/components/schemas/v1Partner"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PostPartnerPublicKeyResponseError"
      title: Ответ на запрос сохранения публичного ключа партнера
    v1PostPartnerPublicKeyResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        saving:
          title: Ошибка сохранения
          allOf:
            - $ref: "#/components/schemas/v1PartnerSavingError"
      title: Ошибка запроса сохранения публичного ключа партнера
    v1PostPartnerRequest:
      type: object
      properties:
        data:
          title: Партнер
          allOf:
            - $ref: "#/components/schemas/v1Partner"
      title: Запрос сохранения партнера
      required:
        - data
    v1PostPartnerResponse:
      type: object
      properties:
        data:
          title: Партнер
          allOf:
            - $ref: "#/components/schemas/v1Partner"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PostPartnerResponseError"
      title: Ответ на запрос сохранения партнера
    v1PostPartnerResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        saving:
          title: Ошибка сохранения
          allOf:
            - $ref: "#/components/schemas/v1PartnerSavingError"
        missingApiKeyOnCreation:
          title: Api-Key обязателен при создании партнера
          allOf:
            - $ref: "#/components/schemas/ErrorMissingApiKeyOnCreation"
      title: Ошибка запроса сохранения партнера
    v1PutNotificationTemplatePartnerAttachResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PutNotificationTemplatePartnerAttachResponseError"
      title: Ответ на запрос создания связи шаблона уведомления и партнера
    v1PutNotificationTemplatePartnerAttachResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        saving:
          title: Ошибка сохранения
          allOf:
            - $ref: "#/components/schemas/v1NotificationTemplatePartnerSavingError"
      title: Ошибка запроса на создание шаблона уведомления и партнера
    v1PutNotificationTemplatePartnerDetachResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PutNotificationTemplatePartnerDetachResponseError"
      title: Ответ на запрос удаление связи шаблона уведомления и партнера
    v1PutNotificationTemplatePartnerDetachResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
      title: Ошибка запроса на удаление шаблона уведомления и партнера
    v1Token:
      type: object
      properties:
        id_token:
          type: string
          title: ID токен в формате nested JWT
          readOnly: true
        access_token:
          type: string
          title: Авторизационный токен
          readOnly: true
        token_type:
          type: string
          title: Тип авторизационного токена
          readOnly: true
        refresh_token:
          type: string
          title: Токен, используемый для получения нового Access Token после истечения
            срока действия текущего токена доступа
          readOnly: true
        expires_in:
          type: integer
          format: int32
          title: Время (в секундах), через которое истечет срок действия Access Token
          readOnly: true
      title: Ответ на запрос токена
    v1ValidationError:
      type: object
      properties:
        path:
          type: string
          title: Путь к полю в формате наименования прото
        message:
          type: string
          title: Валидационное сообщение
      title: |-
        Ошибки валидации.
        Эти проверки выполняются до обращения в базу данных
      required:
        - path
        - message
  securitySchemes:
    bearerHttp:
      type: http
      scheme: bearer
      bearerFormat: JWT
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://oauth2-staging.k8s.key.rt.ru/oauth2/token
          scopes:
            multiapp:edit: Предоставляет полный доступ в сервис multiapp
            multiapp:read: Предоставляет доступ на чтение данных из сервиса multiapp
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
