X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=enrichment-coordinator-service%2Fapi%2Fecs-api.json;h=c89d6138551ea27f56ae279868198c537d18620d;hb=refs%2Fchanges%2F42%2F6642%2F1;hp=79ab5d354d79e49126a2ba3f94f8497acc0bc178;hpb=bfe1c4049297589c4ade863b12e3d6a6cb7abc99;p=nonrtric.git diff --git a/enrichment-coordinator-service/api/ecs-api.json b/enrichment-coordinator-service/api/ecs-api.json index 79ab5d35..c89d6138 100644 --- a/enrichment-coordinator-service/api/ecs-api.json +++ b/enrichment-coordinator-service/api/ecs-api.json @@ -1,744 +1,938 @@ { - "basePath": "/", + "components": {"schemas": { + "consumer_information_type": { + "description": "Information for an Information type", + "type": "object", + "required": ["job_data_schema"], + "properties": {"job_data_schema": { + "description": "Json schema for the job data", + "type": "object" + }} + }, + "EiTypeObject": { + "description": "Information for an EI type", + "type": "object" + }, + "status_info": { + "type": "object", + "required": [ + "no_of_jobs", + "no_of_producers", + "no_of_types", + "status" + ], + "properties": { + "no_of_producers": { + "format": "int32", + "description": "Number of Information Producers", + "type": "integer" + }, + "no_of_types": { + "format": "int32", + "description": "Number of Information Types", + "type": "integer" + }, + "no_of_jobs": { + "format": "int32", + "description": "Number of Information Jobs", + "type": "integer" + }, + "status": { + "description": "status text", + "type": "string" + } + } + }, + "producer_registration_info": { + "description": "Information for an Information Producer", + "type": "object", + "required": [ + "info_job_callback_url", + "info_producer_supervision_callback_url", + "supported_info_types" + ], + "properties": { + "info_producer_supervision_callback_url": { + "description": "callback for producer supervision", + "type": "string" + }, + "supported_info_types": { + "description": "Supported Information Type IDs", + "type": "array", + "items": { + "description": "Supported Information Type IDs", + "type": "string" + } + }, + "info_job_callback_url": { + "description": "callback for Information Job", + "type": "string" + } + } + }, + "ProblemDetails": { + "description": "A problem detail to carry details in a HTTP response according to RFC 7807", + "type": "object", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.", + "type": "string", + "example": "Information Job type not found" + }, + "status": { + "format": "int32", + "description": "The HTTP status code generated by the origin server for this occurrence of the problem.", + "type": "integer", + "example": 404 + } + } + }, + "EiJobStatusObject": { + "description": "Status for an EI job", + "type": "object", + "required": ["eiJobStatus"], + "properties": {"eiJobStatus": { + "description": "Allowed values for EI job status", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }} + }, + "consumer_job_status": { + "description": "Status for an Information Job", + "type": "object", + "required": [ + "info_job_status", + "producers" + ], + "properties": { + "info_job_status": { + "description": "Allowed values for Information Job status", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "producers": { + "description": "An array of all registerred Information Producer Identifiers.", + "type": "array", + "items": { + "description": "An array of all registerred Information Producer Identifiers.", + "type": "string" + } + } + } + }, + "EiJobObject": { + "description": "Information for an Enrichment Information Job", + "type": "object", + "required": [ + "eiTypeId", + "jobDefinition", + "jobOwner", + "jobResultUri" + ], + "properties": { + "eiTypeId": { + "description": "EI type Idenitifier of the EI job", + "type": "string" + }, + "jobResultUri": { + "description": "The target URI of the EI data", + "type": "string" + }, + "jobOwner": { + "description": "Identity of the owner of the job", + "type": "string" + }, + "statusNotificationUri": { + "description": "The target of EI job status notifications", + "type": "string" + }, + "jobDefinition": { + "description": "EI type specific job data", + "type": "object" + } + } + }, + "producer_info_type_info": { + "description": "Information for an Information Type", + "type": "object", + "required": ["info_job_data_schema"], + "properties": {"info_job_data_schema": { + "description": "Json schema for the job data", + "type": "object" + }} + }, + "producer_info_job_request": { + "description": "The body of the Information Producer callbacks for Information Job creation and deletion", + "type": "object", + "required": ["info_job_identity"], + "properties": { + "owner": { + "description": "The owner of the job", + "type": "string" + }, + "last_updated": { + "description": "The time when the job was last updated or created (ISO-8601)", + "type": "string" + }, + "info_job_identity": { + "description": "Identity of the Information Job", + "type": "string" + }, + "target_uri": { + "description": "URI for the target of the produced Information", + "type": "string" + }, + "info_job_data": { + "description": "Json for the job data", + "type": "object" + }, + "info_type_identity": { + "description": "Type identity for the job", + "type": "string" + } + } + }, + "consumer_job": { + "description": "Information for an Enrichment Information Job", + "type": "object", + "required": [ + "info_type_id", + "job_definition", + "job_owner", + "job_result_uri" + ], + "properties": { + "info_type_id": { + "description": "Information type Idenitifier of the subscription job", + "type": "string" + }, + "job_result_uri": { + "description": "The target URI of the subscribed information", + "type": "string" + }, + "job_owner": { + "description": "Identity of the owner of the job", + "type": "string" + }, + "job_definition": { + "description": "Information type specific job data", + "type": "object" + }, + "status_notification_uri": { + "description": "The target of Information subscription job status notifications", + "type": "string" + } + } + }, + "producer_status": { + "description": "Status for an Info Producer", + "type": "object", + "required": ["operational_state"], + "properties": {"operational_state": { + "description": "Represents the operational states", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }} + }, + "Void": { + "description": "Void/empty ", + "type": "object" + } + }}, + "openapi": "3.0.1", "paths": { - "/producer_simulator/ei_job": {"post": { - "summary": "Callback for EI job creation", - "deprecated": false, - "produces": ["application/json"], - "operationId": "jobCreatedCallbackUsingPOST", - "responses": { - "200": {"description": "OK"}, - "201": {"description": "Created"}, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": {"description": "Not Found"} - }, - "parameters": [{ - "schema": {"$ref": "#/definitions/producer_ei_job_request"}, - "in": "body", - "name": "request", - "description": "request", - "required": true - }], - "tags": ["Producer Callbacks"], - "consumes": ["application/json"] + "/data-producer/v1/info-types": {"get": { + "summary": "Info Type identifiers", + "operationId": "getInfoTypdentifiers", + "responses": {"200": { + "description": "Info Type identifiers", + "content": {"application/json": {"schema": { + "type": "array", + "items": {"type": "string"} + }}} + }}, + "tags": ["Data producer (registration)"] }}, "/A1-EI/v1/eitypes/{eiTypeId}": {"get": { "summary": "Individual EI type", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getEiTypeUsingGET", + "operationId": "getEiType", "responses": { "200": { - "schema": {"$ref": "#/definitions/EiTypeObject"}, - "description": "EI type" + "description": "EI type", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EiTypeObject"}}} }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, "404": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information type is not found" + "description": "Enrichment Information type is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } }, "parameters": [{ + "schema": {"type": "string"}, "in": "path", "name": "eiTypeId", - "description": "eiTypeId", - "type": "string", "required": true }], - "tags": ["A1-EI (enrichment information)"] + "tags": ["A1-EI (registration)"] }}, - "/consumer_simulator/eijobs/{eiJobId}/status": {"post": { - "summary": "Callback for EI job status", - "deprecated": false, - "produces": ["application/json"], - "operationId": "jobStatusCallbackUsingPOST", - "responses": { - "200": {"description": "OK"}, - "201": {"description": "Created"}, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": {"description": "Not Found"} - }, - "parameters": [ - { + "/data-producer/v1/info-types/{infoTypeId}": { + "get": { + "summary": "Individual Information Type", + "operationId": "getInfoType", + "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"}}} + } + }, + "parameters": [{ + "schema": {"type": "string"}, "in": "path", - "name": "eiJobId", - "description": "eiJobId", - "type": "string", + "name": "infoTypeId", "required": true + }], + "tags": ["Data producer (registration)"] + }, + "delete": { + "summary": "Individual Information Type", + "operationId": "deleteInfoType", + "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"}}} + }, + "406": { + "description": "The Information type has one or several active producers", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} + } }, - { - "schema": {"$ref": "#/definitions/EiJobStatusObject"}, - "in": "body", - "name": "status", - "description": "status", + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "infoTypeId", "required": true - } - ], - "tags": ["Consumer Callbacks"], - "consumes": ["application/json"] - }}, - "/ei-producer/v1/eitypes": {"get": { - "summary": "EI type identifiers", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getEiTypeIdentifiersUsingGET_1", - "responses": { - "200": { - "schema": { - "type": "array", - "items": {"type": "string"} + }], + "tags": ["Data producer (registration)"] + }, + "put": { + "summary": "Individual Information Type", + "requestBody": { + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/producer_info_type_info"}}}, + "required": true + }, + "operationId": "putInfoType", + "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"}}} }, - "description": "EI type identifiers" + "400": { + "description": "Bad request", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} + } }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": {"description": "Not Found"} - }, - "tags": ["Enrichment Data Producer API"] - }}, + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "infoTypeId", + "required": true + }], + "tags": ["Data producer (registration)"] + } + }, "/A1-EI/v1/eitypes": {"get": { "summary": "EI type identifiers", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getEiTypeIdentifiersUsingGET", - "responses": { - "200": { - "schema": { - "type": "array", - "items": {"type": "string"} - }, - "description": "EI type identifiers" - }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": {"description": "Not Found"} - }, - "tags": ["A1-EI (enrichment information)"] - }}, - "/ei-producer/v1/eiproducers/{eiProducerId}/status": {"get": { - "summary": "EI producer status", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getEiProducerStatusUsingGET", - "responses": { - "200": { - "schema": {"$ref": "#/definitions/producer_status"}, - "description": "EI jobs" - }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information producer is not found" - } - }, - "parameters": [{ - "in": "path", - "name": "eiProducerId", - "description": "eiProducerId", - "type": "string", - "required": true - }], - "tags": ["Enrichment Data Producer API"] + "operationId": "getEiTypeIdentifiers", + "responses": {"200": { + "description": "EI type identifiers", + "content": {"application/json": {"schema": { + "type": "array", + "items": {"type": "string"} + }}} + }}, + "tags": ["A1-EI (registration)"] }}, - "/producer_simulator/ei_job/{eiJobId}": {"delete": { - "summary": "Callback for EI job deletion", - "deprecated": false, - "produces": ["application/json"], - "operationId": "jobDeletedCallbackUsingDELETE", - "responses": { - "200": {"description": "OK"}, - "401": {"description": "Unauthorized"}, - "204": {"description": "No Content"}, - "403": {"description": "Forbidden"} - }, - "parameters": [{ - "in": "path", - "name": "eiJobId", - "description": "eiJobId", - "type": "string", - "required": true - }], - "tags": ["Producer Callbacks"] + "/data-consumer/v1/info-types": {"get": { + "summary": "Information type identifiers", + "operationId": "getinfoTypeIdentifiers", + "responses": {"200": { + "description": "Information type identifiers", + "content": {"application/json": {"schema": { + "type": "array", + "items": {"type": "string"} + }}} + }}, + "tags": ["Data consumer"] }}, - "/ei-producer/v1/eiproducers": {"get": { - "summary": "EI producer identifiers", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getEiProducerIdentifiersUsingGET", - "responses": { - "200": { - "schema": { - "type": "array", - "items": {"type": "string"} + "/data-producer/v1/info-producers/{infoProducerId}": { + "get": { + "summary": "Individual Information Producer", + "operationId": "getInfoProducer", + "responses": { + "200": { + "description": "Information producer", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/producer_registration_info"}}} }, - "description": "EI producer identifiers" + "404": { + "description": "Information producer is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} + } }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": {"description": "Not Found"} + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "infoProducerId", + "required": true + }], + "tags": ["Data producer (registration)"] }, - "tags": ["Enrichment Data Producer API"] - }}, - "/ei-producer/v1/eitypes/{eiTypeId}": {"get": { - "summary": "Individual EI type", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getEiTypeUsingGET_1", - "responses": { - "200": { - "schema": {"$ref": "#/definitions/producer_ei_type_info"}, - "description": "EI type" + "delete": { + "summary": "Individual Information Producer", + "operationId": "deleteInfoProducer", + "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"}}} + } }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information type is not found" - } + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "infoProducerId", + "required": true + }], + "tags": ["Data producer (registration)"] }, + "put": { + "summary": "Individual Information Producer", + "requestBody": { + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/producer_registration_info"}}}, + "required": true + }, + "operationId": "putInfoProducer", + "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"}}} + }, + "404": { + "description": "Producer not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} + } + }, + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "infoProducerId", + "required": true + }], + "tags": ["Data producer (registration)"] + } + }, + "/producer_simulator/info_job/{infoJobId}": {"delete": { + "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", + "responses": {"200": { + "description": "OK", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Void"}}} + }}, "parameters": [{ + "schema": {"type": "string"}, "in": "path", - "name": "eiTypeId", - "description": "eiTypeId", - "type": "string", + "name": "infoJobId", "required": true }], - "tags": ["Enrichment Data Producer API"] + "tags": ["Data producer (callbacks)"] }}, "/status": {"get": { "summary": "Returns status and statistics of this service", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getStatusUsingGET", - "responses": { - "200": { - "schema": {"$ref": "#/definitions/status_info"}, - "description": "Service is living" - }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": {"description": "Not Found"} - }, + "operationId": "getStatus", + "responses": {"200": { + "description": "Service is living", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/status_info"}}} + }}, "tags": ["Service status"] }}, "/A1-EI/v1/eijobs/{eiJobId}": { "get": { "summary": "Individual EI job", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getIndividualEiJobUsingGET", + "operationId": "getIndividualEiJob_1", "responses": { "200": { - "schema": {"$ref": "#/definitions/EiJobObject"}, - "description": "EI job" + "description": "EI job", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EiJobObject"}}} }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, "404": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information job is not found" + "description": "Enrichment Information job is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } }, "parameters": [{ + "schema": {"type": "string"}, "in": "path", "name": "eiJobId", - "description": "eiJobId", - "type": "string", "required": true }], - "tags": ["A1-EI (enrichment information)"] + "tags": ["A1-EI (registration)"] }, "delete": { "summary": "Individual EI job", - "deprecated": false, - "produces": ["application/json"], - "operationId": "deleteIndividualEiJobUsingDELETE", + "operationId": "deleteIndividualEiJob_1", "responses": { - "200": {"description": "Not used"}, - "401": {"description": "Unauthorized"}, - "204": {"description": "Job deleted"}, - "403": {"description": "Forbidden"}, + "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": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information job is not found" + "description": "Enrichment Information job is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } }, "parameters": [{ + "schema": {"type": "string"}, "in": "path", "name": "eiJobId", - "description": "eiJobId", - "type": "string", "required": true }], - "tags": ["A1-EI (enrichment information)"] + "tags": ["A1-EI (registration)"] }, "put": { "summary": "Individual EI job", - "deprecated": false, - "produces": ["application/json"], - "operationId": "putIndividualEiJobUsingPUT", - "responses": { - "200": {"description": "Job updated"}, - "201": {"description": "Job created"}, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information type is not found" - } + "requestBody": { + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EiJobObject"}}}, + "required": true }, - "parameters": [ - { - "in": "path", - "name": "eiJobId", - "description": "eiJobId", - "type": "string", - "required": true + "operationId": "putIndividualEiJob", + "responses": { + "200": { + "description": "Job updated", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Void"}}} }, - { - "schema": {"$ref": "#/definitions/EiJobObject"}, - "in": "body", - "name": "eiJobObject", - "description": "eiJobObject", - "required": true + "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"}}} } - ], - "tags": ["A1-EI (enrichment information)"], - "consumes": ["application/json"] + }, + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "eiJobId", + "required": true + }], + "tags": ["A1-EI (registration)"] } }, - "/ei-producer/v1/eiproducers/{eiProducerId}": { + "/producer_simulator/health_check": {"get": { + "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"}}} + }}, + "tags": ["Data producer (callbacks)"] + }}, + "/data-consumer/v1/info-jobs": {"get": { + "summary": "Information Job identifiers", + "description": "query for information job identifiers", + "operationId": "getJobIds", + "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"}}} + } + }, + "parameters": [ + { + "schema": {"type": "string"}, + "in": "query", + "name": "infoTypeId", + "description": "selects subscription jobs of matching information type", + "required": false + }, + { + "schema": {"type": "string"}, + "in": "query", + "name": "owner", + "description": "selects subscription jobs for one job owner", + "required": false + } + ], + "tags": ["Data consumer"] + }}, + "/data-consumer/v1/info-jobs/{infoJobId}": { "get": { - "summary": "Individual EI producer", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getEiProducerUsingGET", + "summary": "Individual data subscription job", + "operationId": "getIndividualEiJob", "responses": { "200": { - "schema": {"$ref": "#/definitions/producer_registration_info"}, - "description": "EI jobs" + "description": "Information subscription job", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/consumer_job"}}} }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, "404": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information producer is not found" + "description": "Information subscription job is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } }, "parameters": [{ + "schema": {"type": "string"}, "in": "path", - "name": "eiProducerId", - "description": "eiProducerId", - "type": "string", + "name": "infoJobId", "required": true }], - "tags": ["Enrichment Data Producer API"] + "tags": ["Data consumer"] }, "delete": { - "summary": "Individual EI producer", - "deprecated": false, - "produces": ["application/json"], - "operationId": "deleteEiProducerUsingDELETE", + "summary": "Individual data subscription job", + "operationId": "deleteIndividualEiJob", "responses": { - "200": {"description": "Not used"}, - "401": {"description": "Unauthorized"}, - "204": {"description": "Producer deleted"}, - "403": {"description": "Forbidden"}, + "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": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Producer is not found" + "description": "Information subscription job is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } }, "parameters": [{ + "schema": {"type": "string"}, "in": "path", - "name": "eiProducerId", - "description": "eiProducerId", - "type": "string", + "name": "infoJobId", "required": true }], - "tags": ["Enrichment Data Producer API"] + "tags": ["Data consumer"] }, "put": { - "summary": "Individual EI producer", - "deprecated": false, - "produces": ["application/json"], - "operationId": "putEiProducerUsingPUT", + "summary": "Individual data subscription job", + "requestBody": { + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/consumer_job"}}}, + "required": true + }, + "description": "The job will be enabled when a producer is available", + "operationId": "putIndividualInfoJob", "responses": { - "200": {"description": "Producer updated"}, - "201": {"description": "Producer created"}, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": {"description": "Not Found"} + "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": "Information type is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} + } }, "parameters": [ { + "schema": {"type": "string"}, "in": "path", - "name": "eiProducerId", - "description": "eiProducerId", - "type": "string", + "name": "infoJobId", "required": true }, { - "schema": {"$ref": "#/definitions/producer_registration_info"}, - "in": "body", - "name": "registrationInfo", - "description": "registrationInfo", - "required": true + "schema": { + "default": false, + "type": "boolean" + }, + "in": "query", + "name": "typeCheck", + "description": "when true, a validation of that the type exists and that the job matches the type schema.", + "required": false } ], - "tags": ["Enrichment Data Producer API"], - "consumes": ["application/json"] + "tags": ["Data consumer"] } }, - "/producer_simulator/health_check": {"get": { - "summary": "Producer supervision", - "deprecated": false, - "produces": ["application/json"], - "operationId": "producerSupervisionUsingGET", - "responses": { - "200": { - "schema": {"type": "string"}, - "description": "OK" - }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, - "404": {"description": "Not Found"} - }, - "tags": ["Producer Callbacks"] + "/data-producer/v1/info-producers": {"get": { + "summary": "Information producer identifiers", + "operationId": "getInfoProducerIdentifiers", + "responses": {"200": { + "description": "Information producer identifiers", + "content": {"application/json": {"schema": { + "type": "array", + "items": {"type": "string"} + }}} + }}, + "parameters": [{ + "schema": {"type": "string"}, + "in": "query", + "name": "info_type_id", + "description": "If given, only the producers for the EI Data type is returned.", + "required": false + }], + "tags": ["Data producer (registration)"] }}, - "/ei-producer/v1/eiproducers/{eiProducerId}/eijobs": {"get": { - "summary": "EI job definitions", - "deprecated": false, - "produces": ["application/json"], - "description": "EI job definitions for one EI producer", - "operationId": "getEiProducerJobsUsingGET", + "/data-consumer/v1/info-types/{infoTypeId}": {"get": { + "summary": "Individual information type", + "operationId": "getInfoType_1", "responses": { "200": { - "schema": { - "type": "array", - "items": {"$ref": "#/definitions/producer_ei_job_request"} - }, - "description": "EI jobs" + "description": "Information type", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/consumer_information_type"}}} }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, "404": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information producer is not found" + "description": "Information type is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } }, "parameters": [{ + "schema": {"type": "string"}, "in": "path", - "name": "eiProducerId", - "description": "eiProducerId", - "type": "string", + "name": "infoTypeId", + "required": true + }], + "tags": ["Data consumer"] + }}, + "/producer_simulator/info_job": {"post": { + "summary": "Callback for Information Job creation/modification", + "requestBody": { + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/producer_info_job_request"}}}, + "required": true + }, + "description": "The call is invoked to activate or to modify a data subscription. The endpoint is provided by the Information Producer.", + "operationId": "jobCreatedCallback", + "responses": {"200": { + "description": "OK", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Void"}}} + }}, + "tags": ["Data producer (callbacks)"] + }}, + "/example_dataconsumer/info_jobs/{infoJobId}/status": {"post": { + "summary": "Callback for changed Information Job status", + "requestBody": { + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EiJobStatusObject"}}}, + "required": true + }, + "description": "The primitive is implemented by the data consumer and is invoked when a Information Job status has been changed.", + "operationId": "jobStatusCallback", + "responses": {"200": { + "description": "OK", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Void"}}} + }}, + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "infoJobId", "required": true }], - "tags": ["Enrichment Data Producer API"] + "tags": ["A1-EI (callbacks)"] }}, "/A1-EI/v1/eijobs": {"get": { "summary": "EI job identifiers", - "deprecated": false, - "produces": ["application/json"], "description": "query for EI job identifiers", - "operationId": "getEiJobIdsUsingGET", + "operationId": "getEiJobIds", "responses": { "200": { - "schema": { + "description": "EI job identifiers", + "content": {"application/json": {"schema": { "type": "array", "items": {"type": "string"} - }, - "description": "EI job identifiers" + }}} }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, "404": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information type is not found" + "description": "Enrichment Information type is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } }, "parameters": [ { + "schema": {"type": "string"}, "in": "query", - "allowEmptyValue": false, "name": "eiTypeId", "description": "selects EI jobs of matching EI type", - "type": "string", "required": false }, { + "schema": {"type": "string"}, "in": "query", - "allowEmptyValue": false, "name": "owner", "description": "selects EI jobs for one EI job owner", - "type": "string", "required": false } ], - "tags": ["A1-EI (enrichment information)"] + "tags": ["A1-EI (registration)"] }}, "/A1-EI/v1/eijobs/{eiJobId}/status": {"get": { "summary": "EI job status", - "deprecated": false, - "produces": ["application/json"], - "operationId": "getEiJobStatusUsingGET", + "operationId": "getEiJobStatus_1", "responses": { "200": { - "schema": {"$ref": "#/definitions/EiJobStatusObject"}, - "description": "EI job status" + "description": "EI job status", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EiJobStatusObject"}}} }, - "401": {"description": "Unauthorized"}, - "403": {"description": "Forbidden"}, "404": { - "schema": {"$ref": "#/definitions/ProblemDetails"}, - "description": "Enrichment Information job is not found" + "description": "Enrichment Information job is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } }, "parameters": [{ + "schema": {"type": "string"}, "in": "path", "name": "eiJobId", - "description": "eiJobId", - "type": "string", "required": true }], - "tags": ["A1-EI (enrichment information)"] - }} - }, - "definitions": { - "producer_ei_job_request": { - "description": "The body of the EI producer callbacks for EI job creation and deletion", - "type": "object", - "title": "producer_ei_job_request", - "required": ["ei_job_identity"], - "properties": { - "owner": { - "description": "The owner of the job", - "type": "string" - }, - "ei_job_identity": { - "description": "Idenitity of the EI job", - "type": "string" - }, - "ei_job_data": { - "description": "Json for the job data", - "type": "object" - }, - "target_uri": { - "description": "URI for the target of the EI", - "type": "string" - }, - "ei_type_identity": { - "description": "Type idenitity for the job", - "type": "string" - } - } - }, - "EiTypeObject": { - "description": "Information for an EI type", - "type": "object", - "title": "EiTypeObject" - }, - "producer_ei_type_registration_info": { - "description": "Information for an EI type", - "type": "object", - "title": "producer_ei_type_registration_info", - "required": ["ei_type_identity"], - "properties": { - "ei_type_identity": { - "description": "EI type identity", - "type": "string" - }, - "ei_job_data_schema": { - "description": "Json schema for the job data", - "type": "object" - } - } - }, - "status_info": { - "type": "object", - "title": "status_info", - "properties": { - "no_of_producers": { - "format": "int32", - "description": "Number of EI producers", - "type": "integer" - }, - "no_of_jobs": { - "format": "int32", - "description": "Number of EI jobs", - "type": "integer" - }, - "no_of_types": { - "format": "int32", - "description": "Number of EI types", - "type": "integer" - }, - "status": { - "description": "status text", - "type": "string" - } - } - }, - "Mono«ResponseEntity«object»»": { - "type": "object", - "title": "Mono«ResponseEntity«object»»" - }, - "producer_ei_type_info": { - "description": "Information for an EI type", - "type": "object", - "title": "producer_ei_type_info", - "properties": { - "ei_producer_ids": { - "description": "Registered producers", - "type": "array", - "items": {"type": "string"} - }, - "ei_job_data_schema": { - "description": "Json schema for the job data", - "type": "object" - } - } - }, - "producer_registration_info": { - "description": "Information for an EI producer", - "type": "object", - "title": "producer_registration_info", - "required": [ - "ei_job_callback_url", - "ei_producer_supervision_callback_url", - "supported_ei_types" - ], - "properties": { - "supported_ei_types": { - "description": "Supported EI types", - "type": "array", - "items": {"$ref": "#/definitions/producer_ei_type_registration_info"} - }, - "ei_producer_supervision_callback_url": { - "description": "callback for producer supervision", - "type": "string" + "tags": ["A1-EI (registration)"] + }}, + "/data-producer/v1/info-producers/{infoProducerId}/status": {"get": { + "summary": "Information producer status", + "operationId": "getInfoProducerStatus", + "responses": { + "200": { + "description": "Information producer status", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/producer_status"}}} }, - "ei_job_callback_url": { - "description": "callback for EI job", - "type": "string" + "404": { + "description": "Information producer is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } - } - }, - "producer_status": { - "description": "Status for an EI Producer", - "type": "object", - "title": "producer_status", - "required": ["operational_state"], - "properties": {"operational_state": { - "description": "Operational state, values:\nENABLED: TBD\nDISABLED: TBD.", - "type": "string", - "enum": [ - "ENABLED", - "DISABLED" - ] - }} - }, - "ProblemDetails": { - "description": "A problem detail to carry details in a HTTP response according to RFC 7807", - "type": "object", - "title": "ProblemDetails", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.", - "type": "string", - "example": "EI job type not found" + }, + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "infoProducerId", + "required": true + }], + "tags": ["Data producer (registration)"] + }}, + "/data-producer/v1/info-producers/{infoProducerId}/info-jobs": {"get": { + "summary": "Information Job definitions", + "description": "Information Job definitions for one Information Producer", + "operationId": "getInfoProducerJobs", + "responses": { + "200": { + "description": "Information producer", + "content": {"application/json": {"schema": { + "type": "array", + "items": {"$ref": "#/components/schemas/producer_info_job_request"} + }}} }, - "status": { - "format": "int32", - "description": "The HTTP status code generated by the origin server for this occurrence of the problem.", - "type": "integer", - "example": 404 + "404": { + "description": "Information producer is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } - } - }, - "Void": { - "description": "Void/empty", - "type": "object", - "title": "Void" - }, - "EiJobStatusObject": { - "description": "Status for an EI job", - "type": "object", - "title": "EiJobStatusObject", - "required": ["eiJobStatus"], - "properties": {"eiJobStatus": { - "description": "values:\nENABLED: the A1-EI producer is able to deliver EI result for the EI job\nDISABLED: the A1-EI producer is unable to deliver EI result for the EI job", - "type": "string", - "enum": [ - "ENABLED", - "DISABLED" - ] - }} - }, - "EiJobObject": { - "description": "Information for an Enrichment Information Job", - "type": "object", - "title": "EiJobObject", - "required": [ - "eiTypeId", - "jobDefinition", - "jobOwner", - "jobResultUri" - ], - "properties": { - "eiTypeId": { - "description": "EI type Idenitifier of the EI job", - "type": "string" - }, - "jobResultUri": { - "description": "The target URI of the EI data", - "type": "string" - }, - "jobOwner": { - "description": "Identity of the owner of the job", - "type": "string" - }, - "jobStatusNotificationUri": { - "description": "The target of EI job status notifications", - "type": "string" + }, + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "infoProducerId", + "required": true + }], + "tags": ["Data producer (registration)"] + }}, + "/data-consumer/v1/info-jobs/{infoJobId}/status": {"get": { + "summary": "Job status", + "operationId": "getEiJobStatus", + "responses": { + "200": { + "description": "Information subscription job status", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/consumer_job_status"}}} }, - "jobDefinition": { - "description": "EI type specific job data", - "type": "object" + "404": { + "description": "Information subscription job is not found", + "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProblemDetails"}}} } - } - } + }, + "parameters": [{ + "schema": {"type": "string"}, + "in": "path", + "name": "infoJobId", + "required": true + }], + "tags": ["Data consumer"] + }} }, - "swagger": "2.0", "info": { - "description": "This page lists all the rest apis for the service.", - "title": "Enrichment Data service", + "license": { + "name": "Copyright (C) 2020 Nordix Foundation. Licensed under the Apache License.", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + }, + "description": "
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.
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>
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>
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.<\/p>", + "title": "Data management and exposure", "version": "1.0" }, "tags": [ { - "name": "A1-EI (enrichment information)", - "description": "Consumer Controller" + "name": "A1-EI (registration)", + "description": "Data consumer EI job registration" }, { - "name": "Consumer Callbacks", - "description": "Consumer Simulator Controller" + "name": "A1-EI (callbacks)", + "description": "Data consumer EI job status callbacks" }, { - "name": "Enrichment Data Producer API", - "description": "Producer Controller" + "name": "Data producer (callbacks)", + "description": "API implemented by data producers" }, { - "name": "Producer Callbacks", - "description": "Producer Simulator Controller" + "name": "Data producer (registration)", + "description": "API for data producers" }, { "name": "Service status", - "description": "Status Controller" + "description": "API for monitoring of the service" + }, + { + "name": "Data consumer", + "description": "API for data consumers" } ] } \ No newline at end of file