blob: c4463b0285cbca72d45b626dcda3c18985bff4da [file] [log] [blame]
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 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 producer (callbacks)
description: API implemented by data producers
- name: Data producer (registration)
description: API for data producers
- name: Service status
description: API for monitoring of the service
- name: Data consumer
description: API for data consumers
paths:
/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'
/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
/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'
/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'
/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
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
/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 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_1
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
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_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:
schema:
$ref: '#/components/schemas/EiJobStatusObject'
required: true
responses:
200:
description: OK
content:
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. <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'
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
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
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
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
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
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 Enrichment 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 '
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