openapi: 3.0.3
info:
  title: ecosystem
  version: 1.0.1782124931493
  description: Сервис ecosystem
  license:
    name: CC BY-NC-ND 4.0
    url: https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md
tags:
  - name: lego_adapter(auth)
    description: Методы lego_adapter. Требуют авторизацию. Доступны из интернета
  - name: system(public)
    description: Методы system. Не требуют авторизацию. Доступны из интернета
paths:
  "/ecosystem/api/v1/lego_adapter/service/check/{orpon}/{roomNumber}/{serviceType}":
    get:
      summary: >-
        Метод проверки услуги.

        Возвращает true если хотя бы у одного аккаунта на квартире есть нужный сервис и он содержит активный компонент.

        Метод доступен для: admin, service
      operationId: LegoAdapterService_GetLegoAdapterServiceCheck
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetLegoAdapterServiceCheckResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetLegoAdapterServiceCheckResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetLegoAdapterServiceCheckResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: orpon
          description: |-
            ОРПОН.
            Идентификатор дома.
            # Диапазон: 0..9223372036854775807
          in: path
          required: true
          schema:
            type: string
            format: int64
        - name: roomNumber
          description: |-
            Номер квартиры.
            # Паттерн: /^[0-9]{1,4}$/
          in: path
          required: true
          schema:
            type: string
        - name: serviceType
          description: Тип услуги
          in: path
          required: true
          schema:
            type: string
            enum:
              - SOTOVAYA_SVYAZ_MVNO
              - IPTV
              - SHPD
              - KABELNOE_TV
              - FIKSIROVANNAYA_SVYAZ
              - ROSTELECOM_LYCEUM
              - SMART_HOUSE
              - JURIST
              - WINK
              - SALE_EQUIPMENT
              - SMART_INTERCOM
              - SMART_BARRIER
              - WARRANTY_PLUS
              - ANALOG_CABLE_TV
              - OTT_PERSON
              - WIFI
        - 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:
        - lego_adapter(auth)
      security:
        - oauth2:
            - ecosystem:read
            - ecosystem:edit
          bearerHttp: []
  /ecosystem/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:
    ErrorEcosystemApiError:
      type: object
      title: Ошибка запроса к API экосистемы
    GetLegoAdapterServiceCheckResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации запроса информации об услугах пользователя
          allOf:
            - $ref: "#/components/schemas/v1ValidationError"
        ecosystemApiError:
          title: Ошибка запроса к API экосистемы
          allOf:
            - $ref: "#/components/schemas/ErrorEcosystemApiError"
      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: Ошибка транспортного слоя
    v1GetLegoAdapterServiceCheckResponse:
      type: object
      properties:
        data:
          type: boolean
          title: Наличие активной услуги на квартире
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/GetLegoAdapterServiceCheckResponseError"
      title: Результат запроса метода проверки услуги на квартире
    v1GetSystemStatusResponse:
      type: object
      title: Ответ на запрос проверки доступности сервиса
    v1ServiceType:
      type: string
      enum:
        - SOTOVAYA_SVYAZ_MVNO
        - IPTV
        - SHPD
        - KABELNOE_TV
        - FIKSIROVANNAYA_SVYAZ
        - ROSTELECOM_LYCEUM
        - SMART_HOUSE
        - JURIST
        - WINK
        - SALE_EQUIPMENT
        - SMART_INTERCOM
        - SMART_BARRIER
        - WARRANTY_PLUS
        - ANALOG_CABLE_TV
        - OTT_PERSON
        - WIFI
      description: |-
        - TYPE_UNKNOWN: Значение не указано
         - SOTOVAYA_SVYAZ_MVNO: Cотовая связь
         - IPTV: Цифровое интерактивное ТВ
         - SHPD: Домашний интернет
         - KABELNOE_TV: Кабельное цифровое ТВ
         - FIKSIROVANNAYA_SVYAZ: Стационарный телефон
         - ROSTELECOM_LYCEUM: Лицей
         - SMART_HOUSE: Умный дом
         - JURIST: Юрист
         - WINK: WINK ТВ
         - SALE_EQUIPMENT: Оборудование
         - SMART_INTERCOM: Ключ
         - SMART_BARRIER: Шлагбаум
         - WARRANTY_PLUS: Гарантия плюс
         - ANALOG_CABLE_TV: Аналоговое цифровое ТВ
         - OTT_PERSON: АЛЛЁ
         - WIFI: Беспроводной интернет
      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:
            ecosystem:edit: Предоставляет полный доступ в сервис ecosystem
            ecosystem:read: Предоставляет доступ на чтение данных из сервиса ecosystem
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
