| 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 |