Added Information consumer API
[nonrtric.git] / enrichment-coordinator-service / api / ecs-api.yaml
index beb5512..f94743e 100644 (file)
@@ -1,18 +1,25 @@
 openapi: 3.0.1
 info:
-  title: Enrichment Information Service
+  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 producer one or several type of data (EI type). One type of data can be produced
+    to produce one or several types of data (EI type). One type of data can be produced
     by zero to many producers. <br /><br />A data consumer can have several active
     data subscriptions (EI job). One EI 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, which is a data consumer, and the Non-RT RIC. </p><h4>Data
-    producer API</h4><p>  This API is between data producers and this service. It
-    is divivided into two parts, where one is provided by this service (registration)
-    and one part is provided by the data producer.</p><h4>EI Service status</h4><p>  This
-    API provides a means to monitor the service.</p>
+    API is between Near-RT RIC and the Non-RT RIC.  The Near-RT RIC is a data consumer,
+    which creates Enrichment Information Jobs to subscribe for data.</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></ul></p><h4>EI
+    Service status</h4><p>  This API provides a means to monitor the service.</p>
   license:
     name: Copyright (C) 2020 Nordix Foundation. Licensed under the Apache License.
     url: http://www.apache.org/licenses/LICENSE-2.0
@@ -28,8 +35,10 @@ tags:
   description: API implemented by data producers
 - name: Data producer (registration)
   description: API for data producers
-- name: EI Service status
+- name: Service status
   description: API for monitoring of the service
+- name: Data consumer
+  description: API for data consumers
 paths:
   /producer_simulator/ei_job:
     post:
@@ -109,6 +118,21 @@ paths:
                 type: array
                 items:
                   type: string
+  /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
   /ei-producer/v1/eiproducers/{eiProducerId}/status:
     get:
       tags:
@@ -265,7 +289,7 @@ paths:
   /status:
     get:
       tags:
-      - EI Service status
+      - Service status
       summary: Returns status and statistics of this service
       operationId: getStatus
       responses:
@@ -304,7 +328,7 @@ paths:
       tags:
       - A1-EI (registration)
       summary: Individual EI job
-      operationId: getIndividualEiJob
+      operationId: getIndividualEiJob_1
       parameters:
       - name: eiJobId
         in: path
@@ -368,7 +392,7 @@ paths:
       tags:
       - A1-EI (registration)
       summary: Individual EI job
-      operationId: deleteIndividualEiJob
+      operationId: deleteIndividualEiJob_1
       parameters:
       - name: eiJobId
         in: path
@@ -455,6 +479,12 @@ paths:
             application/json:
               schema:
                 $ref: '#/components/schemas/Void'
+        404:
+          description: Producer not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
     delete:
       tags:
       - Data producer (registration)
@@ -502,6 +532,142 @@ paths:
             application/json:
               schema:
                 type: string
+  /data-consumer/v1/info-jobs:
+    get:
+      tags:
+      - Data consumer
+      summary: EI 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 subscription jobs for one job 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'
+  /data-consumer/v1/info-jobs/{infoJobId}:
+    get:
+      tags:
+      - Data consumer
+      summary: Individual data subscription job
+      operationId: getIndividualEiJob
+      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/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
+      operationId: putIndividualInfoJob
+      parameters:
+      - name: infoJobId
+        in: path
+        required: true
+        style: simple
+        explode: false
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/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'
+        404:
+          description: Enrichment Information type is not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
+    delete:
+      tags:
+      - Data consumer
+      summary: Individual data subscription job
+      operationId: deleteIndividualEiJob
+      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'
   /ei-producer/v1/eiproducers/{eiProducerId}/eijobs:
     get:
       tags:
@@ -532,6 +698,33 @@ paths:
             application/json:
               schema:
                 $ref: '#/components/schemas/ProblemDetails'
+  /data-consumer/v1/info-types/{infoTypeId}:
+    get:
+      tags:
+      - Data consumer
+      summary: Individual information type
+      operationId: getInfoType
+      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/InformationType'
+        404:
+          description: Information type is not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
   /A1-EI/v1/eijobs:
     get:
       tags:
@@ -576,7 +769,7 @@ paths:
       tags:
       - A1-EI (registration)
       summary: EI job status
-      operationId: getEiJobStatus
+      operationId: getEiJobStatus_1
       parameters:
       - name: eiJobId
         in: path
@@ -627,6 +820,33 @@ paths:
             application/json:
               schema:
                 $ref: '#/components/schemas/Void'
+  /data-consumer/v1/info-jobs/{infoJobId}/status:
+    get:
+      tags:
+      - Data consumer
+      summary: Job status
+      operationId: getEiJobStatus
+      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/JobStatus'
+        404:
+          description: Information subscription job is not found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ProblemDetails'
 components:
   schemas:
     producer_ei_job_request:
@@ -708,18 +928,6 @@ components:
           type: string
           description: callback for EI job
       description: Information for an EI producer
-    producer_status:
-      required:
-      - operational_state
-      type: object
-      properties:
-        operational_state:
-          type: string
-          description: Represents the operational states
-          enum:
-          - ENABLED
-          - DISABLED
-      description: Status for an EI Producer
     ProblemDetails:
       type: object
       properties:
@@ -736,9 +944,6 @@ components:
           example: 404
       description: A problem detail to carry details in a HTTP response according
         to RFC 7807
-    Void:
-      type: object
-      description: 'Void/empty '
     EiJobStatusObject:
       required:
       - eiJobStatus
@@ -775,3 +980,63 @@ components:
           type: object
           description: EI type specific job data
       description: Information for an Enrichment Information Job
+    JobStatus:
+      required:
+      - eiJobStatus
+      type: object
+      properties:
+        eiJobStatus:
+          type: string
+          description: Allowed values for EI job status
+          enum:
+          - ENABLED
+          - DISABLED
+      description: Status for an EI 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 EI Producer
+    Void:
+      type: object
+      description: 'Void/empty '
+    Job:
+      required:
+      - infoTypeId
+      - jobDefinition
+      - jobOwner
+      - jobResultUri
+      type: object
+      properties:
+        jobResultUri:
+          type: string
+          description: The target URI of the subscribed information
+        infoTypeId:
+          type: string
+          description: Information type Idenitifier of the subscription job
+        jobOwner:
+          type: string
+          description: Identity of the owner of the job
+        statusNotificationUri:
+          type: string
+          description: The target of Information subscription job status notifications
+        jobDefinition:
+          type: object
+          description: Information type specific job data
+      description: Information for an Enrichment Information Job
+    InformationType:
+      required:
+      - consumer_job_data_schema
+      type: object
+      properties:
+        consumer_job_data_schema:
+          type: object
+          description: Json schema for the job data
+      description: Information for an Information type