X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=enrichment-coordinator-service%2Fapi%2Fecs-api.yaml;h=c4463b0285cbca72d45b626dcda3c18985bff4da;hb=refs%2Fchanges%2F36%2F6936%2F1;hp=beb5512d5b7bcdb3b4109a2ae92908902ff3572a;hpb=e5960c828297899da146313f695222ef190bacc1;p=nonrtric.git diff --git a/enrichment-coordinator-service/api/ecs-api.yaml b/enrichment-coordinator-service/api/ecs-api.yaml index beb5512d..c4463b02 100644 --- a/enrichment-coordinator-service/api/ecs-api.yaml +++ b/enrichment-coordinator-service/api/ecs-api.yaml @@ -1,18 +1,28 @@ openapi: 3.0.1 info: - title: Enrichment Information Service + title: Data management and exposure description:
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
- by zero to many producers.
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.
This - API is between Near-RT RIC, which is a data consumer, and the Non-RT RIC.
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.
This - API provides a means to monitor the service.
+ to produce one or several types of data (Information Type). One type of data can + be produced by zero to many producers.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.
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:
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:
This + API provides a means to monitor the health of this service.
license: name: Copyright (C) 2020 Nordix Foundation. Licensed under the Apache License. url: http://www.apache.org/licenses/LICENSE-2.0 @@ -28,38 +38,21 @@ 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: + /example_dataproducer/info_job/{infoJobId}: + delete: tags: - Data producer (callbacks) - summary: Callback for EI job creation/modification - description: The call is invoked to activate or to modify a data subscription. - The endpoint is provided by the EI producer. - operationId: jobCreatedCallback - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/producer_ei_job_request' - required: true - responses: - 200: - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/Void' - /A1-EI/v1/eitypes/{eiTypeId}: - get: - tags: - - A1-EI (registration) - summary: Individual EI type - operationId: getEiType_1 + 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: eiTypeId + - name: infoJobId in: path required: true style: simple @@ -68,55 +61,34 @@ paths: type: string responses: 200: - description: EI type - content: - application/json: - schema: - $ref: '#/components/schemas/EiTypeObject' - 404: - description: Enrichment Information type is not found + description: OK content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' - /ei-producer/v1/eitypes: + $ref: '#/components/schemas/Void' + /data-producer/v1/info-types: get: tags: - Data producer (registration) - summary: EI type identifiers - operationId: getEiTypeIdentifiers + summary: Info Type identifiers + operationId: getInfoTypdentifiers responses: 200: - description: EI type identifiers + description: Info Type identifiers content: application/json: schema: type: array items: type: string - /A1-EI/v1/eitypes: + /A1-EI/v1/eitypes/{eiTypeId}: get: tags: - A1-EI (registration) - summary: EI type identifiers - operationId: getEiTypeIdentifiers_1 - responses: - 200: - description: EI type identifiers - content: - application/json: - schema: - type: array - items: - type: string - /ei-producer/v1/eiproducers/{eiProducerId}/status: - get: - tags: - - Data producer (registration) - summary: EI producer status - operationId: getEiProducerStatus + summary: Individual EI type + operationId: getEiType parameters: - - name: eiProducerId + - name: eiTypeId in: path required: true style: simple @@ -125,33 +97,31 @@ paths: type: string responses: 200: - description: EI producer status + description: EI type content: application/json: schema: - $ref: '#/components/schemas/producer_status' + $ref: '#/components/schemas/EiTypeObject' 404: - description: Enrichment Information producer is not found + description: Enrichment Information type is not found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - /producer_simulator/ei_job/{eiJobId}: - delete: + /example_dataproducer/info_job: + post: tags: - Data producer (callbacks) - summary: Callback for EI job deletion - description: The call is invoked to terminate a data subscription. The endpoint - is provided by the EI producer. - operationId: jobDeletedCallback - parameters: - - name: eiJobId - in: path + 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 - style: simple - explode: false - schema: - type: string responses: 200: description: OK @@ -159,14 +129,14 @@ paths: application/json: schema: $ref: '#/components/schemas/Void' - /ei-producer/v1/eitypes/{eiTypeId}: + /data-producer/v1/info-types/{infoTypeId}: get: tags: - Data producer (registration) - summary: Individual EI type - operationId: getEiType + summary: Individual Information Type + operationId: getInfoType parameters: - - name: eiTypeId + - name: infoTypeId in: path required: true style: simple @@ -175,13 +145,13 @@ paths: type: string responses: 200: - description: EI type + description: Info Type content: application/json: schema: - $ref: '#/components/schemas/producer_ei_type_info' + $ref: '#/components/schemas/producer_info_type_info' 404: - description: Enrichment Information type is not found + description: Information type is not found content: application/json: schema: @@ -189,10 +159,10 @@ paths: put: tags: - Data producer (registration) - summary: Individual EI type - operationId: putEiType + summary: Individual Information Type + operationId: putInfoType parameters: - - name: eiTypeId + - name: infoTypeId in: path required: true style: simple @@ -203,7 +173,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/producer_ei_type_info' + $ref: '#/components/schemas/producer_info_type_info' required: true responses: 200: @@ -219,7 +189,7 @@ paths: schema: $ref: '#/components/schemas/Void' 400: - description: Bad request + description: Input validation failed content: application/json: schema: @@ -227,10 +197,10 @@ paths: delete: tags: - Data producer (registration) - summary: Individual EI type - operationId: deleteEiType + summary: Individual Information Type + operationId: deleteInfoType parameters: - - name: eiTypeId + - name: infoTypeId in: path required: true style: simple @@ -251,62 +221,25 @@ paths: schema: $ref: '#/components/schemas/Void' 404: - description: Enrichment Information type is not found + description: Information type is not found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - 406: - description: The Enrichment Information type has one or several active producers + 409: + description: The Information type has one or several active producers content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - /status: - get: - tags: - - EI 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/status_info' - /ei-producer/v1/eiproducers: - get: - tags: - - Data producer (registration) - summary: EI producer identifiers - operationId: getEiProducerIdentifiers - parameters: - - name: ei_type_id - in: query - description: If given, only the producers for the EI Data type is returned. - required: false - style: form - explode: true - schema: - type: string - responses: - 200: - description: EI producer identifiers - content: - application/json: - schema: - type: array - items: - type: string - /A1-EI/v1/eijobs/{eiJobId}: + /data-consumer/v1/info-type-subscription/{subscriptionId}: get: tags: - - A1-EI (registration) - summary: Individual EI job - operationId: getIndividualEiJob + - Data consumer + summary: Individual subscription for information types (registration/deregistration) + operationId: getIndividualTypeSubscription parameters: - - name: eiJobId + - name: subscriptionId in: path required: true style: simple @@ -315,24 +248,26 @@ paths: type: string responses: 200: - description: EI job + description: Type subscription content: application/json: schema: - $ref: '#/components/schemas/EiJobObject' + $ref: '#/components/schemas/consumer_type_subscription_info' 404: - description: Enrichment Information job is not found + description: Subscription is not found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' put: tags: - - A1-EI (registration) - summary: Individual EI job - operationId: putIndividualEiJob + - 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: eiJobId + - name: subscriptionId in: path required: true style: simple @@ -343,34 +278,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/EiJobObject' + $ref: '#/components/schemas/consumer_type_subscription_info' required: true responses: 200: - description: Job updated + description: Subscription updated content: application/json: schema: $ref: '#/components/schemas/Void' 201: - description: Job created + description: Subscription 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: - - A1-EI (registration) - summary: Individual EI job - operationId: deleteIndividualEiJob + - Data consumer + summary: Individual subscription for information types (registration/deregistration) + operationId: deleteIndividualTypeSubscription parameters: - - name: eiJobId + - name: subscriptionId in: path required: true style: simple @@ -385,25 +314,70 @@ paths: schema: $ref: '#/components/schemas/Void' 204: - description: Job deleted + description: Subscription deleted content: application/json: schema: $ref: '#/components/schemas/Void' 404: - description: Enrichment Information job is not found + description: Subscription is not found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - /ei-producer/v1/eiproducers/{eiProducerId}: + /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 + /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-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 + /data-producer/v1/info-producers/{infoProducerId}: get: tags: - Data producer (registration) - summary: Individual EI producer - operationId: getEiProducer + summary: Individual Information Producer + operationId: getInfoProducer parameters: - - name: eiProducerId + - name: infoProducerId in: path required: true style: simple @@ -412,13 +386,13 @@ paths: type: string responses: 200: - description: EI producer + description: Information producer content: application/json: schema: $ref: '#/components/schemas/producer_registration_info' 404: - description: Enrichment Information producer is not found + description: Information producer is not found content: application/json: schema: @@ -426,10 +400,10 @@ paths: put: tags: - Data producer (registration) - summary: Individual EI producer - operationId: putEiProducer + summary: Individual Information Producer + operationId: putInfoProducer parameters: - - name: eiProducerId + - name: infoProducerId in: path required: true style: simple @@ -455,13 +429,25 @@ paths: 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 EI producer - operationId: deleteEiProducer + summary: Individual Information Producer + operationId: deleteInfoProducer parameters: - - name: eiProducerId + - name: infoProducerId in: path required: true style: simple @@ -487,70 +473,30 @@ paths: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - /producer_simulator/health_check: - get: - tags: - - Data producer (callbacks) - summary: Producer supervision - description: The endpoint is provided by the EI producer and is used for supervision - of the producer. - operationId: producerSupervision - responses: - 200: - description: The producer is OK - content: - application/json: - schema: - type: string - /ei-producer/v1/eiproducers/{eiProducerId}/eijobs: + /status: get: tags: - - Data producer (registration) - summary: EI job definitions - description: EI job definitions for one EI producer - operationId: getEiProducerJobs - parameters: - - name: eiProducerId - in: path - required: true - style: simple - explode: false - schema: - type: string + - Service status + summary: Returns status and statistics of this service + operationId: getStatus responses: 200: - description: EI producer - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/producer_ei_job_request' - 404: - description: Enrichment Information producer is not found + description: Service is living content: application/json: schema: - $ref: '#/components/schemas/ProblemDetails' - /A1-EI/v1/eijobs: + $ref: '#/components/schemas/service_status_info' + /data-consumer/v1/info-type-subscription: get: tags: - - A1-EI (registration) - summary: EI job identifiers - description: query for EI job identifiers - operationId: getEiJobIds + - Data consumer + summary: Information type subscription identifiers + description: query for information type subscription identifiers + operationId: getInfoTypeSubscriptions 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 + description: selects result for one owner required: false style: form explode: true @@ -558,25 +504,19 @@ paths: type: string responses: 200: - description: EI job identifiers + description: Information type subscription 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' - /A1-EI/v1/eijobs/{eiJobId}/status: + /A1-EI/v1/eijobs/{eiJobId}: get: tags: - A1-EI (registration) - summary: EI job status - operationId: getEiJobStatus + summary: Individual EI job + operationId: getIndividualEiJob_1 parameters: - name: eiJobId in: path @@ -587,25 +527,22 @@ paths: type: string responses: 200: - description: EI job status + description: EI job content: application/json: schema: - $ref: '#/components/schemas/EiJobStatusObject' + $ref: '#/components/schemas/EiJobObject' 404: description: Enrichment Information job is not found content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - /example_dataconsumer/eijobs/{eiJobId}/status: - post: + put: tags: - - A1-EI (callbacks) - summary: Callback for changed EI job status - description: The primitive is implemented by the data consumer and is invoked - when a EI job status has been changed. - operationId: jobStatusCallback + - A1-EI (registration) + summary: Individual EI job + operationId: putIndividualEiJob parameters: - name: eiJobId in: path @@ -614,6 +551,301 @@ paths: 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_1 + 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' + /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' + /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/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 + operationId: putIndividualInfoJob + parameters: + - name: infoJobId + in: path + required: true + style: simple + explode: false + schema: + type: string + - name: typeCheck + in: query + description: when true, a validation of that the type exists and that the + job matches the type schema. + required: false + style: form + explode: true + schema: + type: boolean + default: false + 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: 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' + /data-producer/v1/info-producers: + get: + tags: + - Data producer (registration) + summary: Information producer identifiers + operationId: getInfoProducerIdentifiers + parameters: + - name: info_type_id + in: query + description: If given, only the producers for the EI Data 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' + /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: @@ -627,36 +859,207 @@ paths: application/json: schema: $ref: '#/components/schemas/Void' + /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' + /A1-EI/v1/eijobs/{eiJobId}/status: + get: + tags: + - A1-EI (registration) + summary: EI job status + operationId: getEiJobStatus_1 + 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-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' + /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/consumer_job_status' + 404: + description: Information subscription job is not found + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /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.