asyncapi: 2.6.0
info:
  title: PCP RequestTask API
  version: 0.0.1
  description: "Сервис для приема и подтверждения заявок на съемку, а так же для формирования\
    \ и \nбронирования схем покрытия заявок.\n"
servers:
  production:
    url: kafka://broker.example.com:9092
    protocol: kafka
defaultContentType: application/json
channels:
  pcp.slot.cover.task:
    description: 'СПО ПЦП подписывается на заказ схемы покрытия.

      Содержимое сообщения содержит заявку на съемку.

      '
    subscribe:
      summary: Запрос на схему покрытия.
      message:
        $ref: '#/components/messages/SlotCoverRequest'
  pcp.slot.cover.ready:
    description: 'СПО ПЦП публикует сформированную схему покрытия.

      Содержимое сообщения содержит схему покрытия.

      '
    publish:
      summary: Публикация схемы покрытия слотами.
      message:
        $ref: '#/components/messages/SlotCoverReady'
  pcp.slot.cover.book:
    description: 'СПО ПЦП подписывается на топик с запросом на бронирование схемы
      покрытия.

      Содержимое сообщения содержит идентификаторы слотов схемы покрытия, утвержденную
      потребителем.

      '
    subscribe:
      summary: Запрос на бронирование слотов.
      message:
        $ref: '#/components/messages/SlotCoverBooking'
  pcp.slot.cover.ack:
    description: 'СПО ПЦП публикует подтверждение бронирования схемы покрытия.

      Содержимое сообщения содержит идентификаторы слотов подтвержденной схемы покрытия.

      '
    publish:
      summary: Публикация подтверждения бронирования слотов.
      message:
        $ref: '#/components/messages/SlotCoverCommited'
  pcp.spacecraft.plan.ready:
    description: СПО ПЦП публикует сформированный план работы КА.
    publish:
      summary: Публикация плана работы КА.
      message:
        $ref: '#/components/messages/SpacecraftPlanReady'
  pcp.groundstation.change:
    description: СПО ПЦП подписывается на уведомления об изменении параметров земных
      станций (без передачи данных).
    subscribe:
      summary: Факт изменения параметров ЗС.
      message:
        $ref: '#/components/messages/GroundStationChanged'
  pcp.spacecraft.nu.change:
    description: СПО ПЦП подписывается на уведомления об изменении начальных условий
      КА (без передачи данных).
    subscribe:
      summary: Факт изменения начальных условий КА.
      message:
        $ref: '#/components/messages/SpacecraftNuChanged'
  pcp.spacecraft.bls.change:
    description: СПО ПЦП подписывается на уведомления об изменении блока состояния
      КА (без передачи данных).
    subscribe:
      summary: Факт изменения блока состояния КА.
      message:
        $ref: '#/components/messages/SpacecraftBlsChanged'
  pcp.spacecraft.control.time:
    description: СПО ПЦП подписывается на события о приходе/обновлении графика управления
      КА.
    subscribe:
      summary: Приход графика управления КА.
      message:
        $ref: '#/components/messages/SpacecraftControlTime'
components:
  messages:
    SlotCoverRequest:
      name: slotCoverRequest
      title: Схема покрытия.
      summary: Запрос схемы покрытия от СПО ПЦП.
      contentType: application/json
      headers:
        $ref: '#/components/schemas/EventHeaders'
      payload:
        $ref: '#/components/schemas/Request'
      bindings:
        kafka:
          valueFormat: json
    SlotCoverReady:
      name: slotCoverReady
      title: Схема покрытия.
      summary: Сформированная схема покрытия.
      contentType: application/json
      headers:
        $ref: '#/components/schemas/EventHeaders'
      payload:
        type: array
        items:
          $ref: '#/components/schemas/SurveySlot'
        description: Список слотов (схема покрытия)
      bindings:
        kafka:
          valueFormat: json
    SlotCoverBooking:
      name: slotCoverBooking
      title: Схема покрытия, бронирование.
      summary: Запрос на бронирование схемы покрытия.
      contentType: application/json
      headers:
        $ref: '#/components/schemas/EventHeaders'
      payload:
        properties:
          slots:
            type: array
            items:
              $ref: '#/components/schemas/SurveySlotInfo'
              description: Список слотов для бронирования.
          request:
            $ref: '#/components/schemas/Request'
        type: object
        required:
        - slots
        - request
      bindings:
        kafka:
          valueFormat: json
    SlotCoverCommited:
      name: slotCoverCommitted
      title: Схема покрытия, бронирование.
      summary: Подтверждение от СПО ПЦП бронирования схемы покрытия.
      contentType: application/json
      headers:
        $ref: '#/components/schemas/EventHeaders'
      payload:
        type: array
        items:
          $ref: '#/components/schemas/SurveySlotInfo'
        description: Список забронированных слотов.
      bindings:
        kafka:
          valueFormat: json
    SpacecraftPlanReady:
      name: SpacecraftPlanReady
      title: План работы КА готов
      summary: Публикация сформированного плана работы КА (маршруты съемки + сбросы)
        для потребителей.
      contentType: application/json
      headers:
        $ref: '#/components/schemas/EventHeaders'
      payload:
        $ref: '#/components/schemas/SpacecraftWorkPlan'
      bindings:
        kafka:
          valueFormat: json
    GroundStationChanged:
      name: GroundStationChanged
      title: Изменение параметров земной станции
      summary: Уведомление о факте изменения параметров земной станции (без передачи
        данных) (payload содержит только идентификатор).
      contentType: application/json
      headers:
        $ref: '#/components/schemas/EventHeaders'
      payload:
        $ref: '#/components/schemas/GroundStationChangedPayload'
      bindings:
        kafka:
          valueFormat: json
      examples:
      - payload:
          stationId: 101
    SpacecraftNuChanged:
      name: SpacecraftNuChanged
      title: Изменение начальных условий КА
      summary: Уведомление о факте изменения начальных условий КА (без передачи данных)
        (payload содержит только идентификатор).
      contentType: application/json
      headers:
        $ref: '#/components/schemas/EventHeaders'
      payload:
        $ref: '#/components/schemas/SpacecraftChangedPayload'
      bindings:
        kafka:
          valueFormat: json
      examples:
      - payload:
          spacecraftId: 205
    SpacecraftBlsChanged:
      name: SpacecraftBlsChanged
      title: Изменение параметров блока состояния КА
      summary: Уведомление о факте изменения блока состояния КА (без передачи данных)
        (payload содержит только идентификатор).
      contentType: application/json
      headers:
        $ref: '#/components/schemas/EventHeaders'
      payload:
        $ref: '#/components/schemas/SpacecraftChangedPayload'
      bindings:
        kafka:
          valueFormat: json
      examples:
      - payload:
          spacecraftId: 205
    SpacecraftControlTime:
      name: SpacecraftControlTime
      title: График управления КА
      summary: Событие о приходе/обновлении графика управления КА (основная/корректирующая
        закладки и интервал планирования).
      contentType: application/json
      headers:
        $ref: '#/components/schemas/EventHeaders'
      payload:
        $ref: '#/components/schemas/SpacecraftControlTimeEvent'
      bindings:
        kafka:
          valueFormat: json
      examples:
      - payload:
          spacecraftId: 205
          mainUploadAt: '2026-02-20T10:00:00'
          correctionUploadAt: '2026-02-20T14:00:00'
          planningBegin: '2026-02-20T00:00:00'
          planningEnd: '2026-02-27T00:00:00'
  schemas:
    Request:
      type: object
      description: Заявка на съемку. Необходимо указать хотя бы одно требование по
        аппаратуре.
      properties:
        id:
          type: string
          format: uuid
          description: Идентификатор заявки UUID.
        name:
          type: string
          maxLength: 255
          description: Наименование заявки. Не более 255 символов.
        kpp:
          type: array
          items:
            type: integer
          description: Список номеров КПП для сброса. Если не указано, сброс производится
            на все доступные КПП.
        highPriorityTransmit:
          type: boolean
          default: false
          description: Признак высокоприоритетной передачи.
        intervalBegin:
          type: string
          format: date-time
          description: Дата‑время начала выполнения заявки. Не может быть менее чем
            сегодня.
        intervalEnd:
          type: string
          format: date-time
          description: Дата‑время конца выполнения заявки. Минимальный интервал съемки
            - 7 дней.
        optics:
          $ref: '#/components/schemas/OpticsConstraints'
          nullable: true
          description: Ограничения по оптике (null – не используется).
        rsa:
          $ref: '#/components/schemas/RSAConstraints'
          nullable: true
          description: Ограничения по РСА (null – не используется).
        geometry:
          type: string
          format: wkt
          description: Геометрия заявки в формате WKT. Геометрия должна быть Polygon.
      additionalProperties: false
      required:
      - id
      - name
      - intervalBegin
      - intervalEnd
      - geometry
      anyOf:
      - required:
        - optics
      - required:
        - rsa
    RSAConstraints:
      type: object
      description: Ограничения на съемку, РСА
      properties:
        resultType:
          $ref: '#/components/schemas/RsaResultType'
          description: Режим работы РСА (детальный(Spotlight), маршрутный(StripMap),
            обзорный(ScanSar))
        interferometry:
          type: boolean
          description: Признак интерферометрии
        polarisation:
          $ref: '#/components/schemas/PolarisationType'
          description: Поляризация
        resolution:
          type: number
          format: double
          default: 20
          description: Требуемое разрешение, м.
      additionalProperties: false
      required:
      - resultType
      - resolution
      - polarisation
    OpticsConstraints:
      type: object
      description: Ограничения на съемку, оптика.
      properties:
        resultType:
          $ref: '#/components/schemas/OpticsResultType'
          description: Тип требуемого продукта (панхром, мультиспектр, паншарпенинг).
        resolution:
          type: number
          format: double
          description: Требуемое разрешение, м.
        sunAngleMin:
          type: number
          format: double
          default: 0
          minimum: 0
          maximum: 90
          description: Минимальный угол солнца.
        sunAngleMax:
          type: number
          format: double
          default: 90
          minimum: 0
          maximum: 90
          description: Максимальный угол солнца.
        clouds:
          type: number
          format: double
          default: 100
          minimum: 0
          maximum: 100
          description: Облачность. Максимально допустимое значение.
      additionalProperties: false
      required:
      - resultType
      - resolution
    PolarisationType:
      type: string
      enum:
      - HH
      - VV
      description: Тип поляризации.
    OpticsResultType:
      type: string
      enum:
      - PANCHROMATIC
      - MULTISPECTRAL
      - PANSHARPENING
      description: Результат оптической съемки.
    RsaResultType:
      type: string
      enum:
      - SPOTLIGHT
      - STRIPMAP
      - SCANSAR
      description: Режим работы РСА.
    SurveySlot:
      type: object
      description: Слот наблюдения (часть схемы покрытия).
      properties:
        slotNumber:
          type: integer
          format: int64
          default: 0
          description: Номер слота.
        cycle:
          type: integer
          format: int64
          default: 0
          description: Цикл замыкания.
        ka:
          type: integer
          format: int64
          default: 0
          description: Идентификатор КА.
        tn:
          type: string
          format: date-time
          description: Время начала наблюдения слота.
        tk:
          type: string
          format: date-time
          description: Время конца наблюдения слота.
        roll:
          type: number
          format: double
          description: Угол визирования.
        contour:
          type: string
          description: Геометрия слота, WKT, WGS 84.
        revolution:
          type: integer
          format: int64
          default: 0
          description: Виток наблюдения.
        revolutionSign:
          $ref: '#/components/schemas/RevolutionSign'
          description: Признак ветви (восходящая/нисходящая).
        state:
          type: integer
          format: int16
          default: 0
          description: Статус бронирования (0 - нет, 1 - да).
      additionalProperties: false
      required:
      - cycle
      - ka
      - tn
      - tk
      - roll
      - contour
      - revolution
      - revolutionSign
      - slotNumber
      - state
    SurveySlotInfo:
      type: object
      description: Краткая информация слота, необходимая для бронирования.
      properties:
        slotNumber:
          type: integer
          format: int64
          default: 0
          description: Номер слота.
        cycle:
          type: integer
          format: int64
          default: 0
          description: Цикл замыкания.
        noradId:
          type: integer
          format: int64
          default: 0
          description: Идентификатор НОРАД.
      additionalProperties: false
      required:
      - slotNumber
      - cycle
      - noradId
    RevolutionSign:
      type: string
      enum:
      - ASC
      - DESC
      description: Признак ветви – восходящая/нисходящая.
    RequestType:
      type: string
      enum:
      - RESERVATION
      - COMMON
      description: Тип заявки. Бронь или обычная.
    EventType:
      type: string
      description: Тип события. Значение обязательно и используется для маршрутизации
        и диагностики.
      enum:
      - NEW_REQUEST
      - NEW_REQUEST_COMMITED
      - REQUEST_CANCEL
      - REQUEST_CANCEL_COMMITED
      - ORDER_SLOT_COVER
      - SLOT_COVER_READY
      - SLOT_COVER_BOOKING
      - SLOT_COVER_BOOKED
      - GROUNDSTATION_CHANGED
      - SPACECRAFT_NU_CHANGED
      - SPACECRAFT_BLS_CHANGED
    EventHeaders:
      type: object
      required:
      - event_id
      - event_type
      - produced_at
      properties:
        event_id:
          type: string
          description: Уникальный идентификатор события.
        event_type:
          $ref: '#/components/schemas/EventType'
        produced_at:
          type: string
          format: date-time
          description: Время формирования события.
        trace_id:
          type: string
          nullable: true
          description: Идентификатор трассировки.
        schema_version:
          type: string
          nullable: true
          description: Версия схемы сообщения.
          example: v1
    SpacecraftWorkPlan:
      type: object
      description: План работы КА
      properties:
        planningBegin:
          type: string
          format: date-time
        planningEnd:
          type: string
          format: date-time
        imagingRoutes:
          type: array
          items:
            $ref: '#/components/schemas/RoutePlanItem'
          default: []
        downlinks:
          type: array
          items:
            $ref: '#/components/schemas/DownlinkPlanItem'
          default: []
      required:
      - planningBegin
      - planningEnd
      additionalProperties: false
    RoutePlanItem:
      type: object
      description: Маршрут съемки в плане работы КА
      properties:
        activationNumber:
          type: integer
          format: int32
        routeNumber:
          type: integer
          format: int32
        revolution:
          type: integer
          format: int64
        routeOnRevolutionNumber:
          type: integer
          format: int32
        startTime:
          type: string
          format: date-time
        durationSec:
          type: integer
          format: int64
        payloadType:
          $ref: '#/components/schemas/PayloadType'
        targetWkt:
          type: string
          description: Координаты точки прицеливания (например WKT)
        rollDeg:
          type: number
          format: double
        pitchDeg:
          type: number
          format: double
        yawDeg:
          type: number
          format: double
        sunAngleBeginDeg:
          type: number
          format: double
        sunAngleEndDeg:
          type: number
          format: double
        slantRangeBeginMeters:
          type: number
          format: double
        slantRangeEndMeters:
          type: number
          format: double
      required:
      - activationNumber
      - routeNumber
      - revolution
      - routeOnRevolutionNumber
      - startTime
      - durationSec
      - payloadType
      - targetWkt
      - rollDeg
      - pitchDeg
      - yawDeg
      - sunAngleBeginDeg
      - sunAngleEndDeg
      - slantRangeBeginMeters
      - slantRangeEndMeters
      additionalProperties: false
    DownlinkPlanItem:
      type: object
      description: Сброс в плане работы КА
      properties:
        activationNumber:
          type: integer
          format: int32
        downlinkNumber:
          type: integer
          format: int32
        revolution:
          type: integer
          format: int64
        stationId:
          type: integer
          format: int64
        begin:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        routeKeys:
          type: array
          items:
            $ref: '#/components/schemas/RouteKey'
          default: []
      required:
      - activationNumber
      - downlinkNumber
      - revolution
      - stationId
      - begin
      - end
      additionalProperties: false
    RouteKey:
      type: object
      description: Составной ключ маршрута (порядковый номер включения + номер витка
        + номер на витке)
      properties:
        activationNumber:
          type: integer
          format: int32
        revolution:
          type: integer
          format: int64
        routeOnRevolutionNumber:
          type: integer
          format: int32
      required:
      - activationNumber
      - revolution
      - routeOnRevolutionNumber
      additionalProperties: false
    PayloadType:
      type: string
      description: Данные по аппаратуре
      enum:
      - RADAR
      - OPTICS
    GroundStationCoordinates:
      type: object
      description: 'Координаты ЗС в WGS-84.

        Можно передавать либо b/l/h, либо WKT Point(x,y,z).

        '
      properties:
        b:
          type: number
          format: double
          description: Широта (градусы)
        l:
          type: number
          format: double
          description: Долгота (градусы)
        h:
          type: number
          format: double
          description: Превышение/высота (метры)
        wktPoint:
          type: string
          description: WKT Point (x
          y: null
          z): null
      additionalProperties: false
    GroundStationParams:
      type: object
      description: Параметры земной станции (ЗС)
      properties:
        stationId:
          type: integer
          format: int64
          description: Идентификатор ЗС
        coordinates:
          $ref: '#/components/schemas/GroundStationCoordinates'
        minAngleDeg:
          type: number
          format: double
          description: Минимальный угол (градусы)
        maxAngleDeg:
          type: number
          format: double
          description: Максимальный угол (градусы)
        retargetingTimeSec:
          type: integer
          format: int64
          description: Время перенацеливания (секунды)
        receiveIntervalSec:
          type: integer
          format: int64
          description: Интервал между последовательными приемами (секунды)
      required:
      - stationId
      - coordinates
      - minAngleDeg
      - maxAngleDeg
      - retargetingTimeSec
      - receiveIntervalSec
      additionalProperties: false
    GroundStationBanInterval:
      type: object
      description: Интервал запрета на работу с ЗС
      properties:
        stationId:
          type: integer
          format: int64
          description: Идентификатор ЗС
        begin:
          type: string
          format: date-time
          description: Время начала интервала запрета
        end:
          type: string
          format: date-time
          description: Время конца интервала запрета
      required:
      - stationId
      - begin
      - end
      additionalProperties: false
    RadarStateConstraints:
      type: object
      description: Ограничения для локации (РСА) на уровне блока состояния
      properties:
        scanSarRouteMinDurationSec:
          type: integer
          format: int64
        scanSarRouteMaxDurationSec:
          type: integer
          format: int64
        stripMapRouteMinDurationSec:
          type: integer
          format: int64
        stripMapRouteMaxDurationSec:
          type: integer
          format: int64
        scanSarMaxModesPerOrbit:
          type: integer
          format: int32
        scanSarMaxModesPerDay:
          type: integer
          format: int32
        stripMapMaxModesPerOrbit:
          type: integer
          format: int32
        stripMapMaxModesPerDay:
          type: integer
          format: int32
        spotLightMaxModesPerOrbit:
          type: integer
          format: int32
        spotLightMaxModesPerDay:
          type: integer
          format: int32
      required:
      - scanSarRouteMinDurationSec
      - scanSarRouteMaxDurationSec
      - stripMapRouteMinDurationSec
      - stripMapRouteMaxDurationSec
      - scanSarMaxModesPerOrbit
      - scanSarMaxModesPerDay
      - stripMapMaxModesPerOrbit
      - stripMapMaxModesPerDay
      - spotLightMaxModesPerOrbit
      - spotLightMaxModesPerDay
      additionalProperties: false
    OpticsStateConstraints:
      type: object
      description: Ограничения для оптики на уровне блока состояния
      properties:
        pssCaptureAngleDeg:
          type: number
          format: double
        mssCaptureAngleDeg:
          type: number
          format: double
        mssMaxDurationPerOrbitSec:
          type: integer
          format: int64
        mssMaxDurationPerDaySec:
          type: integer
          format: int64
        pssMaxDurationPerOrbitSec:
          type: integer
          format: int64
        pssMaxDurationPerDaySec:
          type: integer
          format: int64
        jointMaxDurationPerOrbitSec:
          type: integer
          format: int64
        jointMaxDurationPerDaySec:
          type: integer
          format: int64
      required:
      - pssCaptureAngleDeg
      - mssCaptureAngleDeg
      - mssMaxDurationPerOrbitSec
      - mssMaxDurationPerDaySec
      - pssMaxDurationPerOrbitSec
      - pssMaxDurationPerDaySec
      - jointMaxDurationPerOrbitSec
      - jointMaxDurationPerDaySec
      additionalProperties: false
    SpacecraftStateBlock:
      type: object
      description: Блок состояния КА
      properties:
        spacecraftId:
          type: integer
          format: int64
          description: Идентификатор КА
        stationIds:
          type: array
          description: Перечень станций (идентификаторы ЗС), с которыми работает аппарат
          items:
            type: integer
            format: int64
          default: []
        rollMinDeg:
          type: number
          format: double
        rollMaxDeg:
          type: number
          format: double
        pitchMinDeg:
          type: number
          format: double
        pitchMaxDeg:
          type: number
          format: double
        yawMinDeg:
          type: number
          format: double
        yawMaxDeg:
          type: number
          format: double
        imagingMaxDurationPerDaySec:
          type: integer
          format: int64
        imagingMaxDurationPerOrbitSec:
          type: integer
          format: int64
        downlinkMaxDurationPerDaySec:
          type: integer
          format: int64
        downlinkMaxDurationPerOrbitSec:
          type: integer
          format: int64
        imagingModesPerOrbit:
          type: integer
          format: int32
        imagingModesPerDay:
          type: integer
          format: int32
        downlinkModesPerOrbit:
          type: integer
          format: int32
        downlinkModesPerDay:
          type: integer
          format: int32
        imagingToImagingIntervalSec:
          type: integer
          format: int64
        downlinkToDownlinkIntervalSec:
          type: integer
          format: int64
        imagingToDownlinkIntervalSec:
          type: integer
          format: int64
        downlinkToImagingIntervalSec:
          type: integer
          format: int64
        minInterRouteIntervalSec:
          type: integer
          format: int64
        radarConstraints:
          $ref: '#/components/schemas/RadarStateConstraints'
        opticsConstraints:
          $ref: '#/components/schemas/OpticsStateConstraints'
      required:
      - spacecraftId
      - rollMinDeg
      - rollMaxDeg
      - pitchMinDeg
      - pitchMaxDeg
      - yawMinDeg
      - yawMaxDeg
      - imagingMaxDurationPerDaySec
      - imagingMaxDurationPerOrbitSec
      - downlinkMaxDurationPerDaySec
      - downlinkMaxDurationPerOrbitSec
      - imagingModesPerOrbit
      - imagingModesPerDay
      - downlinkModesPerOrbit
      - downlinkModesPerDay
      - imagingToImagingIntervalSec
      - downlinkToDownlinkIntervalSec
      - imagingToDownlinkIntervalSec
      - downlinkToImagingIntervalSec
      - minInterRouteIntervalSec
      - radarConstraints
      - opticsConstraints
      additionalProperties: false
    PdcmEntry:
      type: object
      description: Запись ПДЦМ (позиция/скорость) на момент времени
      properties:
        time:
          type: string
          format: date-time
        revolution:
          type: integer
          format: int64
        vx:
          type: number
          format: double
        vy:
          type: number
          format: double
        vz:
          type: number
          format: double
        x:
          type: number
          format: double
        y:
          type: number
          format: double
        z:
          type: number
          format: double
      required:
      - time
      - revolution
      - vx
      - vy
      - vz
      - x
      - y
      - z
      additionalProperties: false
    PdcmInterval:
      type: object
      description: ПДЦМ на интервал (оперативный или программной орбиты)
      properties:
        spacecraftId:
          type: integer
          format: int64
        begin:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        entries:
          type: array
          items:
            $ref: '#/components/schemas/PdcmEntry'
      required:
      - spacecraftId
      - begin
      - end
      - entries
      additionalProperties: false
    UploadSchedule:
      type: object
      description: График закладки (основная/корректирующая + интервал планирования)
      properties:
        spacecraftId:
          type: integer
          format: int64
        mainUploadAt:
          type: string
          format: date-time
        correctiveUploadAt:
          type: string
          format: date-time
        planningBegin:
          type: string
          format: date-time
        planningEnd:
          type: string
          format: date-time
      required:
      - spacecraftId
      - mainUploadAt
      - correctiveUploadAt
      - planningBegin
      - planningEnd
      additionalProperties: false
    SpacecraftInitialConditions:
      type: object
      description: Начальные условия КА для расчётов (состояние в момент epoch).
      properties:
        spacecraftId:
          type: integer
          format: int64
          description: Идентификатор КА.
        epoch:
          type: string
          format: date-time
          description: Момент времени, для которого заданы начальные условия (UTC).
        frame:
          type: string
          description: Система координат/фрейм (например, ECI).
          default: ECI
        positionMeters:
          type: array
          description: Вектор положения [x,y,z] в метрах в указанной системе координат.
          items:
            type: number
            format: double
          minItems: 3
          maxItems: 3
        velocityMetersPerSec:
          type: array
          description: Вектор скорости [vx,vy,vz] в м/с в указанной системе координат.
          items:
            type: number
            format: double
          minItems: 3
          maxItems: 3
        source:
          type: string
          nullable: true
          description: Источник/поставщик расчёта начальных условий (опционально).
        version:
          type: string
          nullable: true
          description: Версия/ревизия набора начальных условий (опционально).
      required:
      - spacecraftId
      - epoch
      - positionMeters
      - velocityMetersPerSec
      additionalProperties: false
    ChangeType:
      type: string
      enum:
      - CREATED
      - UPDATED
      - DELETED
      description: Тип изменения
    EntityType:
      type: string
      description: Тип сущности, которая изменилась
      enum:
      - GROUND_STATION
      - GROUND_STATION_BAN_INTERVALS
      - SPACECRAFT_STATE_BLOCK
      - SPACECRAFT_NU
      - UPLOAD_SCHEDULE
      - SPACECRAFT_WORKPLAN
      - CONTROL_TIME
    ChangeEvent:
      type: object
      description: Уведомление о факте изменения данных у поставщика. Сами данные
        передаются/запрашиваются отдельно.
      required:
      - eventId
      - occurredAt
      - entityType
      - entityIds
      - changeType
      properties:
        eventId:
          type: string
          format: uuid
          description: Уникальный идентификатор события
        occurredAt:
          type: string
          format: date-time
          description: Время изменения у поставщика (UTC/ISO 8601).
        entityType:
          $ref: '#/components/schemas/EntityType'
        entityIds:
          type: array
          minItems: 1
          items:
            type: integer
            format: int64
          description: Идентификаторы сущностей, затронутых изменением
        changeType:
          $ref: '#/components/schemas/ChangeType'
        effectiveFrom:
          type: string
          format: date-time
          nullable: true
          description: (Опционально) начало интервала влияния
        effectiveTo:
          type: string
          format: date-time
          nullable: true
          description: (Опционально) конец интервала влияния
        version:
          type: string
          nullable: true
          description: (Опционально) версия/ревизия данных у поставщика
        reason:
          type: string
          nullable: true
          description: (Опционально) пояснение причины изменения
        correlationId:
          type: string
          nullable: true
          description: (Опционально) идентификатор корреляции
        source:
          type: string
          nullable: true
          description: (Опционально) идентификатор поставщика/источника
      additionalProperties: false
    SpacecraftControlTimeEvent:
      type: object
      description: Сообщение о приходе (или обновлении) графика управления КА. Все
        времена — LocalDateTime (без часового пояса).
      required:
      - spacecraftId
      - mainUploadAt
      - correctionUploadAt
      - planningBegin
      - planningEnd
      properties:
        spacecraftId:
          type: integer
          format: int64
          description: Идентификатор КА.
        mainUploadAt:
          type: string
          format: date-time
          description: Дата-время основной закладки (LocalDateTime, без offset).
        correctionUploadAt:
          type: string
          format: date-time
          description: Дата-время корректирующей закладки (LocalDateTime, без offset).
        planningBegin:
          type: string
          format: date-time
          description: Начало интервала планирования (LocalDateTime, без offset).
        planningEnd:
          type: string
          format: date-time
          description: Конец интервала планирования (LocalDateTime, без offset).
      additionalProperties: false
    GroundStationChangeEvent:
      type: object
      description: Уведомление о факте изменения данных земной станции (без передачи
        данных).
      required:
      - eventId
      - occurredAt
      - changeType
      - stationId
      properties:
        eventId:
          type: string
          format: uuid
          description: Уникальный идентификатор события
        occurredAt:
          type: string
          format: date-time
          description: Время изменения у поставщика (UTC/ISO 8601).
        changeType:
          $ref: '#/components/schemas/ChangeType'
        stationId:
          type: integer
          format: int64
          description: Идентификатор земной станции.
        version:
          type: string
          nullable: true
          description: (Опционально) версия/ревизия данных у поставщика
        reason:
          type: string
          nullable: true
          description: (Опционально) пояснение причины изменения
        correlationId:
          type: string
          nullable: true
          description: (Опционально) идентификатор корреляции
        source:
          type: string
          nullable: true
          description: (Опционально) идентификатор поставщика/источника
      additionalProperties: false
    SpacecraftChangeEvent:
      type: object
      description: Уведомление о факте изменения данных КА (без передачи данных).
      required:
      - eventId
      - occurredAt
      - changeType
      - spacecraftId
      properties:
        eventId:
          type: string
          format: uuid
          description: Уникальный идентификатор события
        occurredAt:
          type: string
          format: date-time
          description: Время изменения у поставщика (UTC/ISO 8601).
        changeType:
          $ref: '#/components/schemas/ChangeType'
        spacecraftId:
          type: integer
          format: int64
          description: Идентификатор космического аппарата.
        version:
          type: string
          nullable: true
          description: (Опционально) версия/ревизия данных у поставщика
        reason:
          type: string
          nullable: true
          description: (Опционально) пояснение причины изменения
        correlationId:
          type: string
          nullable: true
          description: (Опционально) идентификатор корреляции
        source:
          type: string
          nullable: true
          description: (Опционально) идентификатор поставщика/источника
      additionalProperties: false
    GroundStationChangedPayload:
      type: object
      description: Факт изменения параметров земной станции. Payload содержит только
        идентификатор станции.
      required:
      - stationId
      properties:
        stationId:
          type: integer
          format: int64
          description: Идентификатор земной станции.
      additionalProperties: false
    SpacecraftChangedPayload:
      type: object
      description: Факт изменения параметров КА/НУ/БЛС. Payload содержит только идентификатор
        аппарата.
      required:
      - spacecraftId
      properties:
        spacecraftId:
          type: integer
          format: int64
          description: Идентификатор космического аппарата.
      additionalProperties: false
