blob: ac10f4b6b9e0a80b70ddb22aaa6becf0367ae63f [file] [log] [blame]
openapi: 3.0.1
info:
title: A1 Policy management service
description: 'The O-RAN Non-RT RIC PolicyAgent provides a REST API for management of policices. It provides support for: -Supervision of clients (R-APPs) to eliminate stray policies in case of failure -Consistency monitoring of the SMO view of policies and the actual situation in the RICs -Consistency monitoring of RIC capabilities (policy types) -Policy configuration. This includes: -One REST API towards all RICs in the network -Query functions that can find all policies in a RIC, all policies owned by a service (R-APP), all policies of a type etc. -Maps O1 resources (ManagedElement) as defined in O1 to the controlling RIC
of A1 policices.'
version: "1.0"
servers:
- url: https://localhost:8433/
- url: http://localhost:8081/
tags:
- name: A1 Policy Management
description: Policy Controller
- name: Health check
description: Status Controller
- name: RIC Repository
description: Ric Repository Controller
- name: Service registry and supervision
description: Service Controller
paths:
/policies:
get:
tags:
- A1 Policy Management
summary: Query policies
operationId: getPoliciesUsingGET
parameters:
- name: ric
in: query
description: The name of the Near-RT RIC to get policies for.
allowEmptyValue: false
schema:
type: string
example: 'ric1'
- name: service
in: query
description: The name of the service to get policies for.
allowEmptyValue: false
schema:
type: string
example: 'controlpanel'
- name: type
in: query
description: The name of the policy type to get policies for.
allowEmptyValue: false
schema:
type: string
example: '1'
responses:
200:
description: Policies
content:
text/plain;charset=ISO-8859-1:
schema:
type: array
items:
$ref: '#/components/schemas/PolicyInfo'
examples:
OSC:
$ref: '#/components/examples/Policies-OSC'
STD:
$ref: '#/components/examples/Policies-STD'
404:
description: RIC or type not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: RIC not found
deprecated: false
/policy:
get:
tags:
- A1 Policy Management
summary: Returns a policy configuration
operationId: getPolicyUsingGET
parameters:
- name: id
in: query
description: The identity of the policy instance.
required: true
allowEmptyValue: false
schema:
type: string
example: 'e26d76e1-b43f-427e-a3c2-b7c4e05a6431'
responses:
200:
description: Policy found
content:
text/plain;charset=ISO-8859-1:
schema:
type: object
examples:
OSC:
$ref: '#/components/examples/Policy-OSC'
STD:
$ref: '#/components/examples/Policy-STD'
404:
description: Policy is not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: 'Could not find policy: e26d76e1-b43f-427e-a3c2-b7c4e05a6431'
deprecated: false
put:
tags:
- A1 Policy Management
summary: Put a policy
operationId: putPolicyUsingPUT
parameters:
- name: id
in: query
description: The identity of the policy instance.
required: true
allowEmptyValue: false
schema:
type: string
example: '73428e58-1670-4972-8498-e7e8f1003631'
- name: ric
in: query
description: The name of the Near-RT RIC where the policy will be created.
required: true
allowEmptyValue: false
schema:
type: string
example: 'ric1'
- name: service
in: query
description: The name of the service creating the policy.
required: true
allowEmptyValue: false
schema:
type: string
example: 'Service1'
- name: transient
in: query
description: If the policy is transient or not (boolean defaulted to false).
A policy is transient if it will be forgotten when the service needs to
reconnect to the Near-RT RIC.
allowEmptyValue: false
schema:
type: boolean
default: false
example: false
- name: type
in: query
description: The name of the policy type. The policy type is mandatory for OSC A1 version and should not be provided for STD A1 version.
allowEmptyValue: false
schema:
type: string
example: 'STD_PolicyModelUnconstrained_0.2.0'
requestBody:
description: jsonBody
content:
application/json:
schema:
type: object
example:
scope:
qosId: "3"
ueId: "1"
statement:
priorityLevel: 1
required: true
responses:
200:
description: Policy updated
201:
description: Policy created
404:
description: RIC or policy type is not found
423:
description: RIC is not operational
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: 'Ric is not operational, RIC name:ric1, state:UNAVAILABLE'
delete:
tags:
- A1 Policy Management
summary: Delete a policy
operationId: deletePolicyUsingDELETE
parameters:
- name: id
in: query
description: The identity of the policy instance.
required: true
allowEmptyValue: false
schema:
type: string
example: '73428e58-1670-4972-8498-e7e8f1003631'
responses:
200:
description: OK
204:
description: Policy deleted
404:
description: Policy is not found
423:
description: RIC is not operational
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: 'Ric is not operational, RIC name:ric1,state:UNAVAILABLE'
deprecated: false
/policy_ids:
get:
tags:
- A1 Policy Management
summary: Query policies, only IDs returned
operationId: getPolicyIdsUsingGET
parameters:
- name: ric
in: query
description: The name of the Near-RT RIC to get policies for.
allowEmptyValue: false
schema:
type: string
example: 'ric1'
- name: service
in: query
description: The name of the service to get policies for.
allowEmptyValue: false
schema:
type: string
example: 'Service1'
- name: type
in: query
description: The name of the policy type to get policies for.
allowEmptyValue: false
schema:
type: string
example: '1'
responses:
200:
description: Policy ids
content:
text/plain;charset=ISO-8859-1:
schema:
type: array
items:
type: string
examples:
OSC:
value:
- 73428e58-1670-4972-8498-e7e8f1003631
- 73428e58-1670-4972-8498-e7e8f100363e
STD:
value:
- 73428e58-1670-4972-8498-e7e8f1003632
- 73428e58-1670-4972-8498-e7e8f1003634
404:
description: RIC or type not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: RIC not found
deprecated: false
/policy_schema:
get:
tags:
- A1 Policy Management
summary: Returns one policy type schema definition. Applicable only for OSC Version.
operationId: getPolicySchemaUsingGET
parameters:
- name: id
in: query
description: The identity of the policy type to get the definition for.
required: true
allowEmptyValue: false
schema:
type: string
example: '11'
responses:
200:
description: Policy schema
content:
text/plain;charset=ISO-8859-1:
schema:
type: object
examples:
OSC:
value:
$schema: http://json-schema.org/draft-07/schema#
description: QoS policy type
title: "1"
type: object
properties:
scope:
additionalProperties: false
type: object
properties:
qosId:
type: string
ueId:
type: string
required:
- ueId
- qosId
statement:
additionalProperties: false
type: object
properties:
priorityLevel:
type: number
required:
- priorityLevel
404:
description: Type not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: 'org.oransc.policyagent.exceptions.ServiceException: Could
not find type: 11'
deprecated: false
/policy_schemas:
get:
tags:
- A1 Policy Management
summary: Returns policy type schema definitions
operationId: getPolicySchemasUsingGET
parameters:
- name: ric
in: query
description: The name of the Near-RT RIC to get the definitions for.
allowEmptyValue: false
schema:
type: string
example: ric1
responses:
200:
description: Policy schemas
content:
text/plain;charset=ISO-8859-1:
schema:
type: array
items:
type: object
properties: {}
examples:
OSC:
value:
- $schema: http://json-schema.org/draft-07/schema#
description: QoS policy type
title: "1"
type: object
properties:
scope:
additionalProperties: false
type: object
properties:
qosId:
type: string
ueId:
type: string
required:
- ueId
- qosId
statement:
additionalProperties: false
type: object
properties:
priorityLevel:
type: number
required:
- priorityLevel
404:
description: RIC is not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: 'org.oransc.policyagent.exceptions.ServiceException: Could
not find ric: ric1'
deprecated: false
/policy_status:
get:
tags:
- A1 Policy Management
summary: Returns a policy status
operationId: getPolicyStatusUsingGET
parameters:
- name: id
in: query
description: The identity of the policy.
required: true
allowEmptyValue: false
schema:
type: string
example: 73428e58-1670-4972-8498-e7e8f100363q
responses:
200:
description: Policy status
content:
text/plain;charset=ISO-8859-1:
schema:
type: object
examples:
OSC:
value:
instance_status: NOT IN EFFECT
has_been_deleted: "false"
created_at: 07/20/2020, 17:15:39
STD:
value:
enforceStatus: UNDEFINED
404:
description: Policy is not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: 'Could not find policy: 73428e58-1670-4972-8498-e7e8f100363q'
deprecated: false
/policy_types:
get:
tags:
- A1 Policy Management
summary: Query policy type names
operationId: getPolicyTypesUsingGET
parameters:
- name: ric
in: query
description: The name of the Near-RT RIC to get types for.
allowEmptyValue: false
schema:
type: string
example: 'ric11'
responses:
200:
description: Policy type names
content:
text/plain;charset=ISO-8859-1:
schema:
type: array
items:
type: string
examples:
OSC:
value:
- "1"
404:
description: RIC is not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: 'org.oransc.policyagent.exceptions.ServiceException: Could
not find ric: ric11'
deprecated: false
/ric:
get:
tags:
- RIC Repository
summary: Returns the name of a RIC managing one Mananged Element
operationId: getRicUsingGET
parameters:
- name: managedElementId
in: query
description: The identity of the Managed Element
required: true
allowEmptyValue: false
schema:
type: string
example: 'Node 1'
responses:
200:
description: RIC is found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: ric1
404:
description: RIC is not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: No RIC found
deprecated: false
/rics:
get:
tags:
- RIC Repository
summary: Query Near-RT RIC information
operationId: getRicsUsingGET
parameters:
- name: policyType
in: query
description: The name of the policy type
allowEmptyValue: false
schema:
type: string
example: 'STD_PolicyModelUnconstrained_0.2.0'
responses:
200:
description: OK
content:
text/plain;charset=ISO-8859-1:
schema:
type: array
items:
$ref: '#/components/schemas/RicInfo'
404:
description: Policy type is not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: Policy type not found
deprecated: false
/service:
put:
tags:
- Service registry and supervision
summary: Register a service
operationId: putServiceUsingPUT
requestBody:
description: registrationInfo
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceRegistrationInfo'
required: true
responses:
200:
description: Service updated
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: OK
201:
description: Service created
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: OK
400:
description: The ServiceRegistrationInfo is not accepted
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: Missing mandatory parameter 'serviceName'
404:
description: Not Found
deprecated: false
x-codegen-request-body-name: registrationInfo
/services:
get:
tags:
- Service registry and supervision
summary: Returns service information
operationId: getServicesUsingGET
parameters:
- name: name
in: query
description: The name of the service
allowEmptyValue: false
schema:
type: string
example: 'service1'
responses:
200:
description: OK
content:
text/plain;charset=ISO-8859-1:
schema:
type: array
example:
- serviceName: "service1"
keepAliveIntervalSeconds: 1000
timeSinceLastActivitySeconds: 7
callbackUrl: http://localhost:8080
items:
$ref: '#/components/schemas/ServiceStatus'
404:
description: Service is not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: Service not found
deprecated: false
delete:
tags:
- Service registry and supervision
summary: Delete a service
operationId: deleteServiceUsingDELETE
parameters:
- name: name
in: query
description: The name of the service
required: true
allowEmptyValue: false
schema:
type: string
example: 'service1'
responses:
200:
description: OK
204:
description: OK
404:
description: Service not found
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: 'Could not find service: service1'
deprecated: false
/services/keepalive:
put:
tags:
- Service registry and supervision
summary: Heartbeat from a serice
operationId: keepAliveServiceUsingPUT
parameters:
- name: name
in: query
description: The name of the service
required: true
allowEmptyValue: false
schema:
type: string
example: 'service1'
responses:
200:
description: Service supervision timer refreshed, OK
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: OK
201:
description: Created
404:
description: The service is not found, needs re-registration
content:
text/plain;charset=ISO-8859-1:
schema:
type: string
example: 'Could not find service: service1'
deprecated: false
/status:
get:
tags:
- Health check
summary: Returns status and statistics of this service
operationId: getStatusUsingGET
responses:
200:
description: Service is living
content:
'*/*':
schema:
type: string
example: alive
404:
description: Not Found
deprecated: false
components:
schemas:
PolicyInfo:
title: PolicyInfo
type: object
properties:
id:
type: string
description: identity of the policy
json:
type: object
properties: {}
description: the configuration of the policy
lastModified:
type: string
description: timestamp, last modification time
ric:
type: string
description: identity of the target Near-RT RIC
service:
type: string
description: the name of the service owning the policy
type:
type: string
description: name of the policy type
RicInfo:
title: RicInfo
type: object
properties:
managedElementIds:
type: array
description: O1 identities for managed entities
items:
type: string
policyTypes:
type: array
description: supported policy types
items:
type: string
ricName:
type: string
description: identity of the ric
state:
type: string
description: state info
example:
- ricName: ric1
managedElementIds:
- ME-1
- ME-2
policyTypes:
- '1'
state: AVAILABLE
- ricName: ric3
managedElementIds:
- ME-1
- ME-2
policyTypes:
- ''
state: AVAILABLE
- ricName: ric2
managedElementIds:
- ME-1
- ME-2
policyTypes: []
state: AVAILABLE
- ricName: ric4
managedElementIds:
- ME-1
- ME-2
policyTypes:
- ''
state: AVAILABLE
ServiceRegistrationInfo:
title: ServiceRegistrationInfo
required:
- serviceName
type: object
properties:
callbackUrl:
type: string
description: callback for notifying of RIC synchronization
keepAliveIntervalSeconds:
type: integer
description: keep alive interval for the service. This is a heartbeat supervision
of the service, which in regular intevals must invoke a 'keepAlive' REST
call. When a service does not invoke this call within the given time,
it is considered unavailble. An unavailable service will be automatically
deregistered and its policies will be deleted. Value 0 means no timeout
supervision.
format: int64
serviceName:
type: string
description: identity of the service
example:
callbackUrl: http://localhost:9080
keepAliveIntervalSeconds: 1000
serviceName: service1
ServiceStatus:
title: ServiceStatus
type: object
properties:
callbackUrl:
type: string
description: callback for notifying of RIC synchronization
keepAliveIntervalSeconds:
type: integer
description: policy keep alive timeout
format: int64
serviceName:
type: string
description: identity of the service
timeSinceLastActivitySeconds:
type: integer
description: time since last invocation by the service
format: int64
examples:
Policies-STD:
value:
- id: a986eb38-aac3-4897-bdf5-0333ea2bf730
type: ''
ric: ric3
json:
scope:
ueId: ue1
groupId: group1
sliceId: slice1
qosId: qos1
cellId: cell1
statement:
priorityLevel: 5
service: controlpanel
lastModified: '2020-07-22T12:21:48.157854Z'
Policies-OSC:
value:
- id: 73428e58-1670-4972-8498-e7e8f1003631
type: '1'
ric: ric1
json:
scope:
qosId: '36'
ueId: '1'
statement:
priorityLevel: 1
service: c
lastModified: '2020-07-20T17:16:18.244383Z'
- id: 73428e58-1670-4972-8498-e7e8f100363e
type: '1'
ric: ric1
json:
scope:
qosId: '34'
ueId: '1'
statement:
priorityLevel: 1
service: controlpanel
lastModified: '2020-07-20T17:15:39.320469Z'
Policy-STD:
value:
scope:
ueId: ue1
groupId: group1
sliceId: slice1
qosId: qos1
cellId: cell1
statement:
priorityLevel: 5
Policy-OSC:
value:
scope:
qosId: '36'
ueId: '1'
statement:
priorityLevel: 1