aboutsummaryrefslogtreecommitdiffstats
path: root/a1-policy-management
diff options
context:
space:
mode:
authorelinuxhenrik <henrik.b.andersson@est.tech>2020-07-30 15:42:23 +0200
committerelinuxhenrik <henrik.b.andersson@est.tech>2020-07-30 15:42:30 +0200
commit39b0ae8275440fed45ea68bb8941e90a2a5f1d28 (patch)
treee00f35a8f65b04ae328b7296196b8d8f5d412b7c /a1-policy-management
parente5b384a218eda52e2c9ce9c8d9a349c12eb1245a (diff)
Add the Policy Management Service API
Change-Id: I1c816846ebc2d459d0619550c6e127735652d076 Issue-ID: CCSDK-2597 Signed-off-by: elinuxhenrik <henrik.b.andersson@est.tech>
Diffstat (limited to 'a1-policy-management')
-rw-r--r--a1-policy-management/api/api.yaml842
1 files changed, 842 insertions, 0 deletions
diff --git a/a1-policy-management/api/api.yaml b/a1-policy-management/api/api.yaml
new file mode 100644
index 00000000..b41d4fc0
--- /dev/null
+++ b/a1-policy-management/api/api.yaml
@@ -0,0 +1,842 @@
+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 ID 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 ID 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 ID 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 ID 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 ID 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 ID 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 \ No newline at end of file