openapi: 3.0.1
info:
  title: PM Measuremenet Data Producer
  description: Distributes PM Measuremenet Data to consumers
  license:
    name: Copyright (C) 2023 Nordix Foundation. Licensed under the Apache License.
    url: http://www.apache.org/licenses/LICENSE-2.0
  version: "1.0"
servers:
- url: /
tags:
- name: Actuator
  description: Monitor and interact
  externalDocs:
    description: Spring Boot Actuator Web API Documentation
    url: https://docs.spring.io/spring-boot/docs/current/actuator-api/html/
paths:
  /actuator/threaddump:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'threaddump'
      operationId: threaddump
      responses:
        200:
          description: OK
          content:
            text/plain;charset=UTF-8:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
  /actuator/info:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'info'
      operationId: info
      responses:
        200:
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
  /data-producer/v1/info-types/{infoTypeId}:
    put:
      tags:
      - Information Coordinator Service Simulator (exists only in test)
      operationId: putInfoType
      parameters:
      - name: infoTypeId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/producer_info_type_info'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
  /statistics:
    get:
      tags:
      - Producer job control API
      summary: Returns statistics
      operationId: getStatistics
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statistics_info'
  /generic_dataproducer/health_check:
    get:
      tags:
      - Producer job control API
      summary: Producer supervision
      description: The endpoint is provided by the Information Producer and is used
        for supervision of the producer.
      operationId: producerSupervision
      responses:
        200:
          description: The producer is OK
          content:
            application/json:
              schema:
                type: string
  /generic_dataproducer/info_job:
    get:
      tags:
      - Producer job control API
      summary: Get all jobs
      description: Returns all info jobs, can be used for trouble shooting
      operationId: getJobs
      responses:
        200:
          description: Information jobs
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/producer_info_job_request'
    post:
      tags:
      - Producer job control API
      summary: Callback for Information Job creation/modification
      description: The call is invoked to activate or to modify a data subscription.
        The endpoint is provided by the Information Producer.
      operationId: jobCreatedCallback
      requestBody:
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/void'
        400:
          description: Other error in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
        404:
          description: Information type is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
  /actuator/loggers:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'loggers'
      operationId: loggers
      responses:
        200:
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
  /actuator/health/**:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'health-path'
      operationId: health-path
      responses:
        200:
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
  /actuator/shutdown:
    post:
      tags:
      - Actuator
      summary: Actuator web endpoint 'shutdown'
      operationId: shutdown
      responses:
        200:
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
  /data-producer/v1/info-producers/{infoProducerId}:
    get:
      tags:
      - Information Coordinator Service Simulator (exists only in test)
      operationId: getInfoProducer
      parameters:
      - name: infoProducerId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
    put:
      tags:
      - Information Coordinator Service Simulator (exists only in test)
      operationId: putInfoProducer
      parameters:
      - name: infoProducerId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/producer_registration_info'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
  /actuator/metrics/{requiredMetricName}:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'metrics-requiredMetricName'
      operationId: metrics-requiredMetricName
      parameters:
      - name: requiredMetricName
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
  /generic_dataproducer/info_job/{infoJobId}:
    delete:
      tags:
      - Producer job control API
      summary: Callback for Information Job deletion
      description: The call is invoked to terminate a data subscription. The endpoint
        is provided by the Information Producer.
      operationId: jobDeletedCallback
      parameters:
      - name: infoJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/void'
  /actuator:
    get:
      tags:
      - Actuator
      summary: Actuator root web endpoint
      operationId: links
      responses:
        200:
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    $ref: '#/components/schemas/Link'
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    $ref: '#/components/schemas/Link'
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    $ref: '#/components/schemas/Link'
  /actuator/logfile:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'logfile'
      operationId: logfile
      responses:
        200:
          description: OK
          content:
            text/plain;charset=UTF-8:
              schema:
                type: object
  /data-consumer/v1/info-jobs/{infoJobId}:
    put:
      tags:
      - Information Coordinator Service Simulator (exists only in test)
      operationId: putIndividualInfoJob
      parameters:
      - name: infoJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/consumer_job'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
  /actuator/loggers/{name}:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'loggers-name'
      operationId: loggers-name
      parameters:
      - name: name
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
    post:
      tags:
      - Actuator
      summary: Actuator web endpoint 'loggers-name'
      operationId: loggers-name_2
      parameters:
      - name: name
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: string
              enum:
              - TRACE
              - DEBUG
              - INFO
              - WARN
              - ERROR
              - FATAL
              - OFF
      responses:
        200:
          description: OK
          content:
            '*/*':
              schema:
                type: object
  /actuator/health:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'health'
      operationId: health
      responses:
        200:
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
  /actuator/metrics:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'metrics'
      operationId: metrics
      responses:
        200:
          description: OK
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
  /actuator/heapdump:
    get:
      tags:
      - Actuator
      summary: Actuator web endpoint 'heapdump'
      operationId: heapdump
      responses:
        200:
          description: OK
          content:
            application/octet-stream:
              schema:
                type: object
components:
  schemas:
    producer_info_job_request:
      required:
      - info_job_identity
      type: object
      properties:
        owner:
          type: string
          description: The owner of the job
        last_updated:
          type: string
          description: The time when the job was last updated or created (ISO-8601)
        info_job_identity:
          type: string
          description: Identity of the Information Job
        info_job_data:
          type: object
          description: Json for the job data
        info_type_identity:
          type: string
          description: Type identity for the job
      description: The body of the Information Producer callbacks for Information
        Job creation and deletion
    error_information:
      type: object
      properties:
        detail:
          type: string
          description: ' A human-readable explanation specific to this occurrence
            of the problem.'
          example: Policy type not found
        status:
          type: integer
          description: 'The HTTP status code generated by the origin server for this
            occurrence of the problem. '
          format: int32
          example: 503
      description: Problem as defined in https://tools.ietf.org/html/rfc7807
    consumer_job:
      required:
      - info_type_id
      - job_definition
      - job_owner
      - job_result_uri
      type: object
      properties:
        info_type_id:
          type: string
          description: Information type Idenitifier of the subscription job
        job_result_uri:
          type: string
          description: The target URI of the subscribed information
        job_owner:
          type: string
          description: Identity of the owner of the job
        job_definition:
          type: object
          description: Information type specific job data
        status_notification_uri:
          type: string
          description: The target of Information subscription job status notifications
      description: Information for an Information Job
    void:
      type: object
      description: Void/empty
    job_statistics:
      required:
      - jobId
      - noOfReceivedBytes
      - noOfReceivedObjects
      - noOfSentBytes
      - noOfSentObjects
      - typeId
      type: object
      properties:
        noOfSentObjects:
          type: integer
          format: int64
        jobId:
          type: string
        outputTopic:
          type: string
        noOfSentBytes:
          type: integer
          format: int64
        clientId:
          type: string
        groupId:
          type: string
        noOfReceivedBytes:
          type: integer
          format: int64
        typeId:
          type: string
        inputTopic:
          type: string
        noOfReceivedObjects:
          type: integer
          format: int64
      description: Statistics information for one job
    statistics_info:
      type: object
      properties:
        jobStatistics:
          type: array
          description: Statistics per job
          items:
            $ref: '#/components/schemas/job_statistics'
      description: Statistics information
    producer_registration_info:
      required:
      - info_job_callback_url
      - info_producer_supervision_callback_url
      - supported_info_types
      type: object
      properties:
        info_producer_supervision_callback_url:
          type: string
          description: callback for producer supervision
        supported_info_types:
          type: array
          description: Supported Information Type IDs
          items:
            type: string
            description: Supported Information Type IDs
        info_job_callback_url:
          type: string
          description: callback for Information Job
      description: Information for an Information Producer
    Link:
      type: object
      properties:
        templated:
          type: boolean
        href:
          type: string
    producer_info_type_info:
      required:
      - info_job_data_schema
      - info_type_information
      type: object
      properties:
        info_type_information:
          type: object
          description: Type specific information for the information type
        info_job_data_schema:
          type: object
          description: Json schema for the job data
      description: Information for an Information Type
