openapi: 3.0.1 info: title: A1 Policy management service description:

General

The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policices.
The main tasks of the service are:

APIs provided by the service

A1 Policy Management

This is an API for management of A1 Policies.

Management of configuration

API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.

Callbacks

These are endpoints that are invoked by this service. The callbacks are registerred in this service at service registration.

NearRT-RIC Repository

This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.

Health Check

API used for supervision of the PMS component.

Service Registry and Supervision

API used for registerring services that uses PMS. Each A1 policy is owned by a service. PMS can supervise each registerred service and will automatically remove policies for unavailable services.

license: name: Copyright (C) 2020 Nordix Foundation. Licensed under the Apache License. url: http://www.apache.org/licenses/LICENSE-2.0 version: 1.1.0 servers: - url: / tags: - name: A1 Policy Management V1.0 description: (deprecated primitves) - name: Management of configuration - name: A1 Policy Management - name: NearRT-RIC Repository - name: Service Registry and Supervision - name: Health Check - name: Callbacks paths: /policy_types: get: tags: - A1 Policy Management V1.0 summary: Query policy type identities operationId: getPolicyTypes parameters: - name: ric in: query description: The name of the Near-RT RIC to get types for. required: false style: form explode: true schema: type: string responses: 200: description: Policy type identities content: '*/*': schema: type: array items: type: string 404: description: Near-RT RIC is not found content: '*/*': schema: $ref: '#/components/schemas/error_information' /a1-policy/v2/policy-instances: get: tags: - A1 Policy Management summary: Query for A1 policy instances description: Returns a list of A1 policies matching given search criteria.
If several query parameters are defined, the policies matching all conditions are returned. operationId: getPolicyInstances parameters: - name: policytype_id in: query description: Select policies with a given type identity. required: false style: form explode: true schema: type: string - name: ric_id in: query description: Select policies for a given Near-RT RIC identity. required: false style: form explode: true schema: type: string - name: service_id in: query description: Select policies owned by a given service. required: false style: form explode: true schema: type: string - name: type_name in: query description: Select policies of a given type name (type identity has the format ) required: false style: form explode: true schema: type: string responses: 200: description: Policies content: application/json: schema: $ref: '#/components/schemas/policy_info_list_v2' 404: description: Near-RT RIC, policy type or service not found content: application/json: schema: $ref: '#/components/schemas/error_information' /a1-policy/v2/status: get: tags: - Health Check summary: Returns status and statistics of this service operationId: getStatus_1 responses: 200: description: Service is living content: application/json: schema: $ref: '#/components/schemas/status_info_v2' /services: get: tags: - A1 Policy Management V1.0 summary: Returns service information operationId: getServices parameters: - name: name in: query description: The name of the service required: false style: form explode: true schema: type: string responses: 200: description: OK content: '*/*': schema: type: array items: $ref: '#/components/schemas/service_status_v1' 404: description: Service is not found content: '*/*': schema: type: string delete: tags: - A1 Policy Management V1.0 summary: Unregister a service operationId: deleteService parameters: - name: name in: query description: The name of the service required: true style: form explode: true schema: type: string responses: 204: description: Service unregistered content: '*/*': schema: $ref: '#/components/schemas/void' 404: description: Service not found content: '*/*': schema: type: string /a1-policy/v2/rics/ric: get: tags: - NearRT-RIC Repository summary: Returns info for one Near-RT RIC description: Either a Near-RT RIC identity or a Mananged Element identity can be specified.
The intention with Mananged Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU). operationId: getRic_1 parameters: - name: managed_element_id in: query description: The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned. required: false style: form explode: true schema: type: string - name: ric_id in: query description: The identity of a Near-RT RIC to get information for. required: false style: form explode: true schema: type: string responses: 200: description: Near-RT RIC is found content: application/json: schema: $ref: '#/components/schemas/ric_info_v2' 404: description: Near-RT RIC is not found content: application/json: schema: $ref: '#/components/schemas/error_information' /a1-policy/v2/policy-types: get: tags: - A1 Policy Management summary: Query policy type identities operationId: getPolicyTypes_1 parameters: - name: ric_id in: query description: Select types for the given Near-RT RIC identity. required: false style: form explode: true schema: type: string - name: type_name in: query description: Select types with the given type name (type identity has the format ) required: false style: form explode: true schema: type: string - name: compatible_with_version in: query description: Select types that are compatible with the given version. This parameter is only applicable in conjunction with type_name. As an example version 1.9.1 is compatible with 1.0.0 but not the other way around. required: false style: form explode: true schema: type: string responses: 200: description: Policy type IDs content: application/json: schema: $ref: '#/components/schemas/policytype_id_list_v2' 404: description: Near-RT RIC is not found content: application/json: schema: $ref: '#/components/schemas/error_information' /a1-policy/v2/policies/{policy_id}: get: tags: - A1 Policy Management summary: Returns a policy operationId: getPolicy_1 parameters: - name: policy_id in: path required: true style: simple explode: false schema: type: string responses: 200: description: Policy found content: application/json: schema: $ref: '#/components/schemas/policy_info_v2' 404: description: Policy is not found content: application/json: schema: $ref: '#/components/schemas/error_information' delete: tags: - A1 Policy Management summary: Delete a policy operationId: deletePolicy_1 parameters: - name: policy_id in: path required: true style: simple explode: false schema: type: string responses: 200: description: Not used content: '*/*': schema: $ref: '#/components/schemas/void' 423: description: Near-RT RIC is not operational content: '*/*': schema: $ref: '#/components/schemas/error_information' 204: description: Policy deleted content: '*/*': schema: $ref: '#/components/schemas/void' 404: description: Policy is not found content: '*/*': schema: $ref: '#/components/schemas/error_information' /a1-policy/v2/configuration: get: tags: - Management of configuration summary: Returns the contents of the configuration file description: Note that the file contents is not relevant if the Consul is used. operationId: getConfiguration responses: 200: description: Configuration content: application/json: schema: type: object 404: description: File is not found or readable content: application/json: schema: $ref: '#/components/schemas/error_information' put: tags: - Management of configuration summary: Replace the current configuration file with the given configuration description: Note that the file is ignored if the Consul is used. operationId: putConfiguration requestBody: content: application/json: schema: type: object required: true responses: 200: description: Configuration updated content: '*/*': schema: $ref: '#/components/schemas/void' 400: description: Invalid configuration provided content: '*/*': schema: $ref: '#/components/schemas/error_information' 500: description: Something went wrong when replacing the configuration. Try again. content: '*/*': schema: $ref: '#/components/schemas/error_information' /policy: get: tags: - A1 Policy Management V1.0 summary: Returns a policy configuration operationId: getPolicy parameters: - name: id in: query description: The identity of the policy instance. required: true style: form explode: true schema: type: string responses: 200: description: Policy found content: '*/*': schema: type: object 404: description: Policy is not found content: '*/*': schema: $ref: '#/components/schemas/error_information' put: tags: - A1 Policy Management V1.0 summary: Put a policy operationId: putPolicy parameters: - name: type in: query description: The name of the policy type. required: false style: form explode: true schema: type: string default: "" - name: id in: query description: The identity of the policy instance. required: true style: form explode: true schema: type: string - name: ric in: query description: The name of the Near-RT RIC where the policy will be created. required: true style: form explode: true schema: type: string - name: service in: query description: The name of the service creating the policy. required: true style: form explode: true schema: type: string - 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. required: false style: form explode: true schema: type: boolean default: false requestBody: content: application/json: schema: type: object required: true responses: 200: description: Policy updated content: '*/*': schema: $ref: '#/components/schemas/void' 201: description: Policy created content: '*/*': schema: $ref: '#/components/schemas/void' 423: description: Near-RT RIC is not operational content: '*/*': schema: type: string 404: description: Near-RT RIC or policy type is not found content: '*/*': schema: type: string delete: tags: - A1 Policy Management V1.0 summary: Delete a policy operationId: deletePolicy parameters: - name: id in: query description: The identity of the policy instance. required: true style: form explode: true schema: type: string responses: 200: description: Not used content: '*/*': schema: $ref: '#/components/schemas/void' 423: description: Near-RT RIC is not operational content: '*/*': schema: type: string 204: description: Policy deleted content: '*/*': schema: $ref: '#/components/schemas/void' 404: description: Policy is not found content: '*/*': schema: type: string /policies: get: tags: - A1 Policy Management V1.0 summary: Query policies operationId: getPolicies parameters: - name: type in: query description: The name of the policy type to get policies for. required: false style: form explode: true schema: type: string - name: ric in: query description: The name of the Near-RT RIC to get policies for. required: false style: form explode: true schema: type: string - name: service in: query description: The name of the service to get policies for. required: false style: form explode: true schema: type: string responses: 200: description: Policies content: '*/*': schema: type: array items: $ref: '#/components/schemas/policy_info_v1' 404: description: Near-RT RIC or type not found content: '*/*': schema: type: string /a1-policy/v2/services/{service_id}/keepalive: put: tags: - Service Registry and Supervision summary: Heartbeat indicates that the service is running description: A registerred service must call this in regular intervals to indicate that it is in operation. Absence of this call will lead to that teh service will be deregisterred and all its policies are removed. operationId: keepAliveService_1 parameters: - name: service_id in: path required: true style: simple explode: false schema: type: string responses: 200: description: Service supervision timer refreshed, OK content: '*/*': schema: type: object 404: description: The service is not found, needs re-registration content: '*/*': schema: $ref: '#/components/schemas/error_information' /rics: get: tags: - A1 Policy Management V1.0 summary: Query Near-RT RIC information operationId: getRics parameters: - name: policyType in: query description: The name of the policy type required: false style: form explode: true schema: type: string responses: 200: description: OK content: '*/*': schema: type: array items: $ref: '#/components/schemas/ric_info_v1' 404: description: Policy type is not found content: '*/*': schema: type: string /policy_schema: get: tags: - A1 Policy Management V1.0 summary: Returns one policy type schema definition operationId: getPolicySchema parameters: - name: id in: query description: The identity of the policy type to get the definition for. required: true style: form explode: true schema: type: string responses: 200: description: Policy schema content: '*/*': schema: type: object 404: description: The policy type is not found content: '*/*': schema: $ref: '#/components/schemas/error_information' /policy_status: get: tags: - A1 Policy Management V1.0 summary: Returns a policy status operationId: getPolicyStatus parameters: - name: id in: query description: The identity of the policy. required: true style: form explode: true schema: type: string responses: 200: description: Policy status content: '*/*': schema: type: object 404: description: Policy is not found content: '*/*': schema: type: string /a1-policy/v2/rics: get: tags: - NearRT-RIC Repository summary: Query Near-RT RIC information description: The call returns all Near-RT RICs that supports a given policy type identity operationId: getRics_1 parameters: - name: policytype_id in: query description: The identity of a policy type. If given, all Near-RT RICs supporteing the policy type are returned required: false style: form explode: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ric_info_list_v2' 404: description: Policy type is not found content: application/json: schema: $ref: '#/components/schemas/error_information' /policy_schemas: get: tags: - A1 Policy Management V1.0 summary: Returns policy type schema definitions operationId: getPolicySchemas parameters: - name: ric in: query description: The name of the Near-RT RIC to get the definitions for. required: false style: form explode: true schema: type: string responses: 200: description: Policy schemas content: '*/*': schema: type: array items: type: object 404: description: Near-RT RIC is not found content: '*/*': schema: $ref: '#/components/schemas/error_information' /policy_ids: get: tags: - A1 Policy Management V1.0 summary: Query policies, only policy identities returned operationId: getPolicyIds parameters: - name: type in: query description: The name of the policy type to get policies for. required: false style: form explode: true schema: type: string - name: ric in: query description: The name of the Near-RT RIC to get policies for. required: false style: form explode: true schema: type: string - name: service in: query description: The name of the service to get policies for. required: false style: form explode: true schema: type: string responses: 200: description: Policy identitiess content: '*/*': schema: type: array items: type: string 404: description: Near-RT RIC or type not found content: '*/*': schema: type: string /a1-policy/v2/services: get: tags: - Service Registry and Supervision summary: Returns service information description: Either information about a registered service with given identity or all registered services are returned. operationId: getServices_1 parameters: - name: service_id in: query description: The identity of the service required: false style: form explode: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/service_list_v2' 404: description: Service is not found content: application/json: schema: $ref: '#/components/schemas/error_information' put: tags: - Service Registry and Supervision summary: Register a service description: Registering a service is needed to: operationId: putService_1 requestBody: content: application/json: schema: $ref: '#/components/schemas/service_registration_info_v2' required: true responses: 200: description: Service updated content: '*/*': schema: type: object 201: description: Service created content: '*/*': schema: type: object 400: description: The ServiceRegistrationInfo is not accepted content: '*/*': schema: $ref: '#/components/schemas/error_information' /ric: get: tags: - A1 Policy Management V1.0 summary: Returns the name of a RIC managing one Mananged Element operationId: getRic parameters: - name: managedElementId in: query description: The identity of the Managed Element required: true style: form explode: true schema: type: string responses: 200: description: Near-RT RIC is found content: '*/*': schema: type: string 404: description: Near-RT RIC is not found content: '*/*': schema: type: string /services/keepalive: put: tags: - A1 Policy Management V1.0 summary: Heartbeat from a service operationId: keepAliveService parameters: - name: name in: query description: The name of the service required: true style: form explode: true schema: type: string responses: 200: description: Service supervision timer refreshed, OK content: '*/*': schema: type: string 404: description: The service is not found, needs re-registration content: '*/*': schema: type: string /status: get: tags: - A1 Policy Management V1.0 summary: Returns status and statistics of this service operationId: getStatus responses: 200: description: Service is living content: '*/*': schema: type: string /a1-policy/v2/policy-types/{policytype_id}: get: tags: - A1 Policy Management summary: Returns a policy type definition operationId: getPolicyType parameters: - name: policytype_id in: path required: true style: simple explode: false schema: type: string responses: 200: description: Policy type content: '*/*': schema: $ref: '#/components/schemas/policytype_v2' 404: description: Policy type is not found content: '*/*': schema: $ref: '#/components/schemas/error_information' /a1-policy/v2/policies: get: tags: - A1 Policy Management summary: Query policy identities description: Returns a list of A1 policies matching given search criteria.
If several query parameters are defined, the policies matching all conditions are returned. operationId: getPolicyIds_1 parameters: - name: policytype_id in: query description: Select policies of a given policy type identity. required: false style: form explode: true schema: type: string - name: ric_id in: query description: Select policies of a given Near-RT RIC identity. required: false style: form explode: true schema: type: string - name: service_id in: query description: Select policies owned by a given service. required: false style: form explode: true schema: type: string - name: type_name in: query description: Select policies of types with the given type name (type identity has the format ) required: false style: form explode: true schema: type: string responses: 200: description: Policy identities content: application/json: schema: $ref: '#/components/schemas/policy_id_list_v2' 404: description: Near-RT RIC or type not found content: application/json: schema: $ref: '#/components/schemas/error_information' put: tags: - A1 Policy Management summary: Create or update a policy operationId: putPolicy_1 requestBody: content: application/json: schema: $ref: '#/components/schemas/policy_info_v2' required: true responses: 200: description: Policy updated content: application/json: schema: $ref: '#/components/schemas/void' 201: description: Policy created content: application/json: schema: $ref: '#/components/schemas/void' 423: description: Near-RT RIC is not operational content: application/json: schema: $ref: '#/components/schemas/error_information' 404: description: Near-RT RIC or policy type is not found content: application/json: schema: $ref: '#/components/schemas/error_information' /r-app/near-rt-ric-status: post: tags: - Callbacks summary: Callback for Near-RT RIC status description: The URL to this call is registerred at Service registration. operationId: serviceCallback requestBody: content: application/json: schema: $ref: '#/components/schemas/service_callback_info_v2' required: true responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/void' /service: put: tags: - A1 Policy Management V1.0 summary: Register a service operationId: putService requestBody: content: application/json: schema: $ref: '#/components/schemas/service_registration_info_v1' required: true responses: 200: description: Service updated content: '*/*': schema: type: string 201: description: Service created content: '*/*': schema: type: string 400: description: The ServiceRegistrationInfo is not accepted content: '*/*': schema: type: string /a1-policy/v2/services/{service_id}: delete: tags: - Service Registry and Supervision summary: Unregister a service operationId: deleteService_1 parameters: - name: service_id in: path required: true style: simple explode: false schema: type: string responses: 200: description: Not used content: '*/*': schema: $ref: '#/components/schemas/void' 204: description: Service unregistered content: '*/*': schema: type: object 404: description: Service not found content: '*/*': schema: $ref: '#/components/schemas/error_information' /a1-policy/v2/policies/{policy_id}/status: get: tags: - A1 Policy Management summary: Returns a policy status operationId: getPolicyStatus_1 parameters: - name: policy_id in: path required: true style: simple explode: false schema: type: string responses: 200: description: Policy status content: application/json: schema: $ref: '#/components/schemas/policy_status_info_v2' 404: description: Policy is not found content: application/json: schema: $ref: '#/components/schemas/error_information' components: schemas: error_information: type: object properties: detail: type: string description: ' A human-readable explanation specific to this occurrence of the problem.' example: Policy 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: Problem as defined in https://tools.ietf.org/html/rfc7807 void: type: object description: Void/empty status_info_v2: type: object properties: status: type: string description: status text policy_info_v1: type: object properties: service: type: string description: the name of the service owning the policy json: type: object description: the configuration of the policy id: type: string description: identity of the policy lastModified: type: string description: timestamp, last modification time type: type: string description: name of the policy type ric: type: string description: identity of the target Near-RT RIC service_registration_info_v1: type: object properties: 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 callbackUrl: type: string description: callback for notifying of RIC synchronization serviceName: type: string ric_info_v2: type: object properties: ric_id: type: string description: identity of the Near-RT RIC managed_element_ids: type: array description: O1 identities for managed entities items: type: string description: O1 identities for managed entities state: type: string description: Represents the states for a Near-RT RIC enum: - UNAVAILABLE - AVAILABLE - SYNCHRONIZING - CONSISTENCY_CHECK policytype_ids: type: array description: supported policy types items: type: string description: supported policy types description: Information for a Near-RT RIC service_registration_info_v2: required: - service_id type: object properties: callback_url: type: string description: callback for notifying of Near-RT RIC state changes service_id: type: string description: identity of the service keep_alive_interval_seconds: 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 description: Information for one service policy_info_list_v2: type: object properties: policies: type: array description: List of policy information items: $ref: '#/components/schemas/policy_info_v2' description: List of policy information ric_info_v1: type: object properties: managedElementIds: type: array description: O1 identities for managed entities items: type: string description: O1 identities for managed entities policyTypes: type: array description: supported policy types items: type: string description: supported policy types state: type: string description: state info ricName: type: string description: identity of the Near-RT RIC service_status_v1: type: object properties: keepAliveIntervalSeconds: type: integer description: policy keep alive timeout format: int64 timeSinceLastActivitySeconds: type: integer description: time since last invocation by the service format: int64 callbackUrl: type: string description: callback for notifying of RIC synchronization serviceName: type: string description: identity of the service policy_status_info_v2: type: object properties: last_modified: type: string description: timestamp, last modification time status: type: object description: the Policy status description: Status for one A1-P Policy service_status_v2: type: object properties: callback_url: type: string description: callback for notifying of RIC synchronization service_id: type: string description: identity of the service keep_alive_interval_seconds: type: integer description: policy keep alive timeout format: int64 time_since_last_activity_seconds: type: integer description: time since last invocation by the service format: int64 description: List of service information ric_info_list_v2: type: object properties: rics: type: array description: List of Near-RT RIC information items: $ref: '#/components/schemas/ric_info_v2' description: List of Near-RT RIC information policytype_v2: type: object properties: policy_schema: type: object description: Policy type json scema. The schema is a json object following http://json-schema.org/draft-07/schema description: Policy type policytype_id_list_v2: type: object properties: policytype_ids: type: array description: Policy type identities items: type: string description: Policy type identities description: Information about policy types policy_info_v2: required: - policy_data - policy_id - policytype_id - ric_id - service_id type: object properties: ric_id: type: string description: identity of the target Near-RT RIC policy_id: type: string description: identity of the policy transient: type: boolean description: if true, the policy is deleted at RIC restart. If false, its value is maintained by this service until explicitly deleted. Default false. service_id: type: string description: the identity of the service owning the policy policy_data: type: object description: the configuration of the policy status_notification_uri: type: string description: Callback URI for policy status updates policytype_id: type: string description: identity of the policy type description: Information for one A1-P Policy policy_id_list_v2: type: object properties: policy_ids: type: array description: Policy identities items: type: string description: Policy identities description: A list of policy identities service_list_v2: type: object properties: service_list: type: array description: List of service information items: $ref: '#/components/schemas/service_status_v2' description: List of service information service_callback_info_v2: required: - event_type - ric_id type: object properties: ric_id: type: string description: identity of a Near-RT RIC event_type: type: string description: |- values: AVAILABLE: the Near-RT RIC has become available for A1 Policy management enum: - AVAILABLE description: Information transferred as in Service callbacks (callback_url)