openapi: 3.0.1
info:
  title: Data management and exposure
  description: <h1>API documentation</h1><h2>General</h2><p>  The service is mainly
    a broker between data producers and data consumers. A data producer has the ability
    to produce one or several types of data (Information Type). One type of data can
    be produced by zero to many producers. <br /><br />A data consumer can have several
    active data subscriptions (Information Job). One Information Job consists of the
    type of data to produce and additional parameters for filtering of the data. These
    parameters are different for different data types.</p><h2>APIs provided by the
    service</h2><h4>A1-EI</h4><p>  This API is between Near-RT RIC and the Non-RT
    RIC.  The Near-RT RIC is a data consumer, which creates Information Jobs to subscribe
    for data.  In this context, the information is referred to as 'Enrichment Information',
    EI.</p><h4>Data producer API</h4><p>  This API is provided by the Non-RT RIC platform
    and is intended to be part of the O-RAN R1 interface.  The API is for use by different
    kinds of data producers and provides support for:<ul><li>Registry of supported
    information types and which parameters needed to setup a subscription.</li><li>Registry
    of existing data producers.</li><li>Callback API provided by producers to setup
    subscriptions.</li></ul></p><h4>Data consumer API</h4><p>  This API is provided
    by the Non-RT RIC platform and is intended to be part of the O-RAN R1 interface.  The
    API is for use by different kinds of data consumers and provides support for:<ul><li>Querying
    of available types of data to consume.</li><li>Management of data subscription
    jobs</li><li>Optional callback API provided by consumers to get notification on
    added and removed information types.</li></ul></p><h4>Service status</h4><p>  This
    API provides a means to monitor the health of this service.</p>
  license:
    name: Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License.
    url: http://www.apache.org/licenses/LICENSE-2.0
  version: "1.0"
servers:
- url: /
tags:
- name: A1-EI (registration)
  description: Data consumer EI job registration
- name: A1-EI (callbacks)
  description: Data consumer EI job status callbacks
- name: Data consumer (callbacks)
  description: API for data consumers
- name: Data producer (registration)
  description: API for data producers
- name: Data producer (callbacks)
  description: API implemented by data producers
- name: Data consumer
  description: API for data consumers
- name: Service status
  description: API for monitoring of the service
- 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/
- name: Authorization API
  description: API used for authorization of information job access (this is provided
    by an authorization producer such as OPA)
paths:
  /example-authz-check:
    post:
      tags:
      - Authorization API
      summary: Request for access authorization.
      description: The authorization function decides if access is granted.
      operationId: subscriptionAuth
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/subscription_authorization'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/authorization_result'
  /data-producer/v1/info-types:
    get:
      tags:
      - Data producer (registration)
      summary: Info Type identifiers
      operationId: getInfoTypdentifiers
      responses:
        200:
          description: Info Type identifiers
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /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
  /A1-EI/v1/eitypes/{eiTypeId}:
    get:
      tags:
      - A1-EI (registration)
      summary: Individual EI type
      operationId: getEiType
      parameters:
      - name: eiTypeId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: EI type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EiTypeObject'
        404:
          description: Enrichment Information type is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /data-producer/v1/info-types/{infoTypeId}:
    get:
      tags:
      - Data producer (registration)
      summary: Individual Information Type
      operationId: getInfoType
      parameters:
      - name: infoTypeId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Info Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/producer_info_type_info'
        404:
          description: Information type is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Data producer (registration)
      summary: Individual Information Type
      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: Type updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        201:
          description: Type created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        400:
          description: Input validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Data producer (registration)
      summary: Individual Information Type
      description: Existing jobs of the type will be automatically deleted.
      operationId: deleteInfoType
      parameters:
      - name: infoTypeId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Not used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        204:
          description: Producer deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        404:
          description: Information type is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        409:
          description: The Information type has one or several active producers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /data-consumer/v1/info-type-subscription/{subscriptionId}:
    get:
      tags:
      - Data consumer
      summary: Individual subscription for information types (registration/deregistration)
      operationId: getIndividualTypeSubscription
      parameters:
      - name: subscriptionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Type subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/consumer_type_subscription_info'
        404:
          description: Subscription is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Data consumer
      summary: Individual subscription for information types (registration/deregistration)
      description: This service operation is used to subscribe to notifications for
        changes in the availability of data types.
      operationId: putIndividualTypeSubscription
      parameters:
      - name: subscriptionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/consumer_type_subscription_info'
        required: true
      responses:
        200:
          description: Subscription updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        201:
          description: Subscription created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
    delete:
      tags:
      - Data consumer
      summary: Individual subscription for information types (registration/deregistration)
      operationId: deleteIndividualTypeSubscription
      parameters:
      - name: subscriptionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Not used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        204:
          description: Subscription deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        404:
          description: Subscription is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /example-dataproducer/health-check:
    get:
      tags:
      - Data producer (callbacks)
      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
  /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
  /data-consumer/v1/info-types:
    get:
      tags:
      - Data consumer
      summary: Information type identifiers
      operationId: getinfoTypeIdentifiers
      responses:
        200:
          description: Information type identifiers
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /example-dataconsumer/info-type-status:
    post:
      tags:
      - Data consumer (callbacks)
      summary: Callback for changed Information type registration status
      description: The primitive is implemented by the data consumer and is invoked
        when a Information type status has been changed. <br/>Subscription are managed
        by primitives in 'Data consumer'
      operationId: typeStatusCallback
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/consumer_type_registration_info'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
  /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
  /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
  /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'
  /data-consumer/v1/info-jobs:
    get:
      tags:
      - Data consumer
      summary: Information Job identifiers
      description: query for information job identifiers
      operationId: getJobIds
      parameters:
      - name: infoTypeId
        in: query
        description: selects subscription jobs of matching information type
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: owner
        in: query
        description: selects result for one owner
        required: false
        style: form
        explode: true
        schema:
          type: string
      responses:
        200:
          description: Information information job identifiers
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        404:
          description: Information type is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Data consumer
      summary: Information Jobs
      description: delete all jobs for one owner
      operationId: deleteJobsForOwner
      parameters:
      - name: owner
        in: query
        description: selects result for one owner
        required: true
        style: form
        explode: true
        schema:
          type: string
      responses:
        204:
          description: No Content
          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
  /example-dataproducer/info-job:
    post:
      tags:
      - Data producer (callbacks)
      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:
              $ref: '#/components/schemas/producer_info_job_request'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
  /example-dataproducer/info-job/{infoJobId}:
    delete:
      tags:
      - Data producer (callbacks)
      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'
  /A1-EI/v1/eijobs/{eiJobId}/status:
    get:
      tags:
      - A1-EI (registration)
      summary: EI job status
      operationId: getEiJobStatus
      parameters:
      - name: eiJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: EI job status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EiJobStatusObject'
        404:
          description: Enrichment Information job is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /data-producer/v1/info-producers/{infoProducerId}/status:
    get:
      tags:
      - Data producer (registration)
      summary: Information producer status
      operationId: getInfoProducerStatus
      parameters:
      - name: infoProducerId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Information producer status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/producer_status'
        404:
          description: Information producer is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /data-consumer/v1/info-jobs/{infoJobId}/status:
    get:
      tags:
      - Data consumer
      summary: Job status
      operationId: getInfoJobStatus
      parameters:
      - name: infoJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Information subscription job status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/consumer_job_status'
        404:
          description: Information subscription job is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /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
  /example-dataconsumer/info-jobs/{infoJobId}/status:
    post:
      tags:
      - A1-EI (callbacks)
      summary: Callback for changed Information Job status
      description: The primitive is implemented by the data consumer and is invoked
        when a Information Job status has been changed.
      operationId: jobStatusCallback
      parameters:
      - name: infoJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EiJobStatusObject'
        required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
  /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
  /A1-EI/v1/eitypes:
    get:
      tags:
      - A1-EI (registration)
      summary: EI type identifiers
      operationId: getEiTypeIdentifiers
      responses:
        200:
          description: EI type identifiers
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /data-producer/v1/info-producers/{infoProducerId}:
    get:
      tags:
      - Data producer (registration)
      summary: Individual Information Producer
      operationId: getInfoProducer
      parameters:
      - name: infoProducerId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Information producer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/producer_registration_info'
        404:
          description: Information producer is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Data producer (registration)
      summary: Individual Information Producer
      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: Producer updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        201:
          description: Producer created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        400:
          description: Input validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        404:
          description: Producer type not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Data producer (registration)
      summary: Individual Information Producer
      operationId: deleteInfoProducer
      parameters:
      - name: infoProducerId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Not used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        204:
          description: Producer deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        404:
          description: Producer is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /status:
    get:
      tags:
      - Service status
      summary: Returns status and statistics of this service
      operationId: getStatus
      responses:
        200:
          description: Service is living
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/service_status_info'
  /data-consumer/v1/info-type-subscription:
    get:
      tags:
      - Data consumer
      summary: Information type subscription identifiers
      description: query for information type subscription identifiers
      operationId: getInfoTypeSubscriptions
      parameters:
      - name: owner
        in: query
        description: selects result for one owner
        required: false
        style: form
        explode: true
        schema:
          type: string
      responses:
        200:
          description: Information type subscription identifiers
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /A1-EI/v1/eijobs/{eiJobId}:
    get:
      tags:
      - A1-EI (registration)
      summary: Individual EI job
      operationId: getIndividualEiJob
      parameters:
      - name: eiJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: EI job
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EiJobObject'
        404:
          description: Enrichment Information job is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - A1-EI (registration)
      summary: Individual EI job
      description: If the requested info_type_id is not found, an attempt to find
        a compatible version is made. As an example, 'type_1.9.0' is backwards compatible
        with 'type_1.0.0'
      operationId: putIndividualEiJob
      parameters:
      - name: eiJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EiJobObject'
        required: true
      responses:
        200:
          description: Job updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        201:
          description: Job created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        400:
          description: Input validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        404:
          description: Enrichment Information type is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        409:
          description: Cannot modify job type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - A1-EI (registration)
      summary: Individual EI job
      operationId: deleteIndividualEiJob
      parameters:
      - name: eiJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Not used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        204:
          description: Job deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        404:
          description: Enrichment Information job is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /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}:
    get:
      tags:
      - Data consumer
      summary: Individual data subscription job
      operationId: getIndividualInfoJob
      parameters:
      - name: infoJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Information subscription job
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/consumer_job'
        404:
          description: Information subscription job is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - Data consumer
      summary: Individual data subscription job
      description: The job will be enabled when a producer is available. If the requested
        info_type_id is not found, an attempt to find a compatible version is made.
        As an example, 'type_1.9.0' is backwards compatible with 'type_1.0.0'
      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: Job updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        201:
          description: Job created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        400:
          description: Input validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        404:
          description: Information type is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        409:
          description: Cannot modify job type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
      - Data consumer
      summary: Individual data subscription job
      operationId: deleteIndividualInfoJob
      parameters:
      - name: infoJobId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Not used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        204:
          description: Job deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Void'
        404:
          description: Information subscription job is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /data-producer/v1/info-producers:
    get:
      tags:
      - Data producer (registration)
      summary: Information producer identifiers
      operationId: getInfoProducerIdentifiers
      parameters:
      - name: infoTypeId
        in: query
        description: If given, only the producers for the Info Type is returned.
        required: false
        style: form
        explode: true
        schema:
          type: string
      responses:
        200:
          description: Information producer identifiers
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /data-consumer/v1/info-types/{infoTypeId}:
    get:
      tags:
      - Data consumer
      summary: Individual information type
      operationId: getInfoType_1
      parameters:
      - name: infoTypeId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Information type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/consumer_information_type'
        404:
          description: Information type is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /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
  /A1-EI/v1/eijobs:
    get:
      tags:
      - A1-EI (registration)
      summary: EI job identifiers
      description: query for EI job identifiers
      operationId: getEiJobIds
      parameters:
      - name: eiTypeId
        in: query
        description: selects EI jobs of matching EI type
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: owner
        in: query
        description: selects EI jobs for one EI job owner
        required: false
        style: form
        explode: true
        schema:
          type: string
      responses:
        200:
          description: EI job identifiers
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        404:
          description: Enrichment Information type is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /data-producer/v1/info-producers/{infoProducerId}/info-jobs:
    get:
      tags:
      - Data producer (registration)
      summary: Information Job definitions
      description: Information Job definitions for one Information Producer
      operationId: getInfoProducerJobs
      parameters:
      - name: infoProducerId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        200:
          description: Information producer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/producer_info_job_request'
        404:
          description: Information producer is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /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:
    consumer_information_type:
      required:
      - job_data_schema
      - no_of_producers
      - type_status
      type: object
      properties:
        no_of_producers:
          type: integer
          description: The number of registered producers for the type
          format: int32
        type_status:
          type: string
          description: 'Allowed values: <br/>ENABLED: one or several producers for
            the information type are available <br/>DISABLED: no producers for the
            information type are available'
          enum:
          - ENABLED
          - DISABLED
        job_data_schema:
          type: object
          description: Json schema for the job data
      description: Information for an Information type
    EiTypeObject:
      type: object
      description: Information for an EI type
    authorization_result:
      required:
      - result
      type: object
      properties:
        result:
          type: boolean
          description: If true, the access is granted
      description: Result of authorization
    service_status_info:
      required:
      - no_of_jobs
      - no_of_producers
      - no_of_types
      - status
      type: object
      properties:
        no_of_producers:
          type: integer
          description: Number of Information Producers
          format: int32
        no_of_types:
          type: integer
          description: Number of Information Types
          format: int32
        no_of_jobs:
          type: integer
          description: Number of Information Jobs
          format: int32
        status:
          type: string
          description: status text
    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
    consumer_type_registration_info:
      required:
      - info_type_id
      - job_data_schema
      - status
      type: object
      properties:
        info_type_id:
          type: string
          description: Information type identifier
        job_data_schema:
          type: object
          description: Json schema for the job data
        status:
          type: string
          description: 'Allowed values: <br/>REGISTERED: the information type has
            been registered <br/>DEREGISTERED: the information type has been removed'
          enum:
          - REGISTERED
          - DEREGISTERED
      description: Information for an Information type
    ProblemDetails:
      type: object
      properties:
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of
            the problem.
          example: Information Job 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: 404
      description: A problem detail to carry details in a HTTP response according
        to RFC 7807
    EiJobStatusObject:
      required:
      - eiJobStatus
      type: object
      properties:
        eiJobStatus:
          type: string
          description: 'Allowed values for EI job status: <br/>ENABLED: the A1-EI
            producer is able to deliver EI result for the EI job <br/>DISABLED: the
            A1-EI producer is unable to deliver EI result for the EI job'
          enum:
          - ENABLED
          - DISABLED
      description: Status for an EI job
    consumer_job_status:
      required:
      - info_job_status
      - producers
      type: object
      properties:
        info_job_status:
          type: string
          description: 'Allowed values: <br/>ENABLED: the A1-Information producer
            is able to deliver result for the Information Job <br/>DISABLED: the A1-Information
            producer is unable to deliver result for the Information Job'
          enum:
          - ENABLED
          - DISABLED
        producers:
          type: array
          description: An array of all registered Information Producer Identifiers.
          items:
            type: string
            description: An array of all registered Information Producer Identifiers.
      description: Status for an Information Job
    EiJobObject:
      required:
      - eiTypeId
      - jobDefinition
      - jobOwner
      - jobResultUri
      type: object
      properties:
        eiTypeId:
          type: string
          description: EI type Idenitifier of the EI job
        jobResultUri:
          type: string
          description: The target URI of the EI data
        jobOwner:
          type: string
          description: Identity of the owner of the job
        statusNotificationUri:
          type: string
          description: The target of EI job status notifications
        jobDefinition:
          type: object
          description: EI type specific job data
      description: Information for an Enrichment Information Job
    subscription_authorization:
      required:
      - input
      type: object
      properties:
        input:
          $ref: '#/components/schemas/input'
      description: Authorization request for subscription requests
    producer_info_type_info:
      required:
      - info_job_data_schema
      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
    producer_info_job_request:
      required:
      - info_job_identity
      type: object
      properties:
        owner:
          type: string
          description: The owner of the job. This is a string that indentifies the
            job owner, which could be an application, a POD or something else.
        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
        target_uri:
          type: string
          description: URI for the target of the produced Information. Note, this
            is deprecated and will be removed. The information on how the data is
            delivered is type specific and should be defined in the type specific
            info_job_data.
        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
    input:
      required:
      - access_type
      - auth_token
      - info_type_id
      - job_definition
      type: object
      properties:
        access_type:
          type: string
          description: Access type
          enum:
          - READ
          - WRITE
        info_type_id:
          type: string
          description: Information type identifier
        job_definition:
          type: object
          description: Information type specific job data
        auth_token:
          type: string
          description: Authorization token
      description: input
    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
    producer_status:
      required:
      - operational_state
      type: object
      properties:
        operational_state:
          type: string
          description: Represents the operational states
          enum:
          - ENABLED
          - DISABLED
      description: Status for an Info Producer
    Void:
      type: object
      description: 'Void/empty '
    Link:
      type: object
      properties:
        templated:
          type: boolean
        href:
          type: string
    consumer_type_subscription_info:
      required:
      - owner
      - status_result_uri
      type: object
      properties:
        owner:
          type: string
          description: Identity of the owner of the subscription
        status_result_uri:
          type: string
          description: The target URI of the subscribed information
      description: Information for an information type subscription
