aboutsummaryrefslogtreecommitdiffstats
path: root/a1-policy-management/open-api-fragments
diff options
context:
space:
mode:
Diffstat (limited to 'a1-policy-management/open-api-fragments')
-rw-r--r--a1-policy-management/open-api-fragments/custom-openapi-license-template/license-header.mustache18
-rw-r--r--a1-policy-management/open-api-fragments/custom-openapi-license-template/openapi.mustache3
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/actuator-api.yaml368
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/authz-api.yaml24
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/configuration-api.yaml42
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/examples.yaml104
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/healthcheck-api.yaml31
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/pms-api.yaml149
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/pms-lcm-api.yaml301
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/responses.yaml37
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/ric-api.yaml71
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/schemas.yaml273
-rw-r--r--a1-policy-management/open-api-fragments/v2-fragments/service-api.yaml150
-rw-r--r--a1-policy-management/open-api-fragments/v3-fragments/configuration-api.yaml41
-rw-r--r--a1-policy-management/open-api-fragments/v3-fragments/examples.yaml112
-rw-r--r--a1-policy-management/open-api-fragments/v3-fragments/healthcheck-api.yaml19
-rw-r--r--a1-policy-management/open-api-fragments/v3-fragments/pms-api-v3.yaml108
-rw-r--r--a1-policy-management/open-api-fragments/v3-fragments/pms-lcm-api.yaml462
-rw-r--r--a1-policy-management/open-api-fragments/v3-fragments/responses.yaml95
-rw-r--r--a1-policy-management/open-api-fragments/v3-fragments/ric-api.yaml72
-rw-r--r--a1-policy-management/open-api-fragments/v3-fragments/schemas.yaml310
-rw-r--r--a1-policy-management/open-api-fragments/v3-fragments/service-api.yaml178
22 files changed, 2968 insertions, 0 deletions
diff --git a/a1-policy-management/open-api-fragments/custom-openapi-license-template/license-header.mustache b/a1-policy-management/open-api-fragments/custom-openapi-license-template/license-header.mustache
new file mode 100644
index 00000000..1d9be65a
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/custom-openapi-license-template/license-header.mustache
@@ -0,0 +1,18 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2020-2023 Nordix Foundation. All rights reserved.
+# Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END========================================================= \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/custom-openapi-license-template/openapi.mustache b/a1-policy-management/open-api-fragments/custom-openapi-license-template/openapi.mustache
new file mode 100644
index 00000000..b95f5e6c
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/custom-openapi-license-template/openapi.mustache
@@ -0,0 +1,3 @@
+{{> license-header}}
+
+{{{openapi-yaml}}} \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/actuator-api.yaml b/a1-policy-management/open-api-fragments/v2-fragments/actuator-api.yaml
new file mode 100644
index 00000000..ab0a6f4c
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/actuator-api.yaml
@@ -0,0 +1,368 @@
+actuator:
+ get:
+ x-internal: true
+ operationId: actuatorLinks
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint.
+ Returns a set of links to available/enabled actuator endpoints.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Root (actuatorLinks)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ additionalProperties:
+ additionalProperties:
+ $ref: 'schemas.yaml#/schemas/Link'
+ type: object
+ type: object
+ application/json:
+ schema:
+ additionalProperties:
+ additionalProperties:
+ $ref: 'schemas.yaml#/schemas/Link'
+ type: object
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ additionalProperties:
+ additionalProperties:
+ $ref: 'schemas.yaml#/schemas/Link'
+ type: object
+ type: object
+ description: OK
+
+heapdump:
+ get:
+ x-internal: true
+ operationId: actuatorHeapdump
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - HeapDump.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Heapdump (actuatorHeapdump)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ application/octet-stream:
+ schema:
+ type: object
+ description: OK
+
+actuator-info:
+ get:
+ x-internal: true
+ operationId: actuatorInfo
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Info.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Info (actuatorInfo)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ type: object
+ application/json:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ type: object
+ description: OK
+
+threaddump:
+ get:
+ x-internal: true
+ operationId: actuatorThreaddump
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - ThreadDump.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Threaddump (actuatorThreaddump)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ text/plain;charset=UTF-8:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ type: object
+ application/json:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ type: object
+ description: OK
+
+loggers:
+ get:
+ x-internal: true
+ operationId: actuatorLoggers
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Get a list of Loggers.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Get Loggers (actuatorLoggers)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ type: object
+ application/json:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ type: object
+ description: OK
+
+logger:
+ get:
+ x-internal: true
+ operationId: actuatorGetLogger
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Get a single named Logger.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Get Logger (actuatorGetLogger)
+ tags:
+ - Actuator API
+ parameters:
+ - explode: false
+ in: path
+ name: name
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ type: object
+ application/json:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ type: object
+ description: OK
+ post:
+ x-internal: true
+ operationId: actuatorSetlogger
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Create or Update single named Logger.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Set Logger (actuatorSetlogger)
+ tags:
+ - Actuator API
+ parameters:
+ - explode: false
+ in: path
+ name: name
+ required: true
+ schema:
+ type: string
+ style: simple
+ requestBody:
+ content:
+ application/json:
+ schema:
+ enum:
+ - TRACE
+ - DEBUG
+ - INFO
+ - WARN
+ - ERROR
+ - FATAL
+ - "OFF"
+ type: string
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ type: object
+ description: OK
+
+logfile:
+ get:
+ x-internal: true
+ operationId: actuatorGetLogFile
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Get the Log file.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Log File (actuatorGetLogFile)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ text/plain;charset=UTF-8:
+ schema:
+ type: object
+ description: OK
+
+health:
+ get:
+ x-internal: true
+ operationId: actuatorHealth
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Health Check.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Health (actuatorHealth)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ type: object
+ application/json:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ type: object
+ description: OK
+
+health-all:
+ get:
+ x-internal: true
+ operationId: actuatorHealthComponent
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Health Status for an Application Component.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Component Health (actuatorHealthComponent)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ type: object
+ application/json:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ type: object
+ description: OK
+
+shutdown:
+ post:
+ x-internal: true
+ operationId: actuatorShutdown
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Shutdown the Application.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Shutdown (actuatorShutdown)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ type: object
+ application/json:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ type: object
+ description: OK
+
+metrics:
+ get:
+ x-internal: true
+ operationId: actuatorMetrics
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Get a list of Application metrics names.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Metrics (actuatorMetrics)
+ tags:
+ - Actuator API
+ responses:
+ "200":
+ content:
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ type: object
+ application/json:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ type: object
+ description: OK
+
+metric:
+ get:
+ x-internal: true
+ operationId: actuatorGetMetric
+ description: >
+ A1-PMS Springboot Service Actuator web endpoint - Get the value for a named Application metric.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+ summary: Actuator endpoint - Get Metric (actuatorGetMetric)
+ parameters:
+ - explode: false
+ in: path
+ name: requiredMetricName
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ application/vnd.spring-boot.actuator.v3+json:
+ schema:
+ type: object
+ application/json:
+ schema:
+ type: object
+ application/vnd.spring-boot.actuator.v2+json:
+ schema:
+ type: object
+ description: OK \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/authz-api.yaml b/a1-policy-management/open-api-fragments/v2-fragments/authz-api.yaml
new file mode 100644
index 00000000..ca8752cd
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/authz-api.yaml
@@ -0,0 +1,24 @@
+authz:
+ post:
+ description: >
+ A template endpoint for callout requests to an external authorization function.
+ The authorization function, if enabled, decides if individual operations are permitted.
+ operationId: performAccessControl
+ summary: Callout request for access authorization (performAccessControl)
+ tags:
+ - Authorization API
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/policy_authorization'
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/authorization_result'
+ description: OK
+ "403":
+ $ref: 'responses.yaml#/responses/Forbidden' \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/configuration-api.yaml b/a1-policy-management/open-api-fragments/v2-fragments/configuration-api.yaml
new file mode 100644
index 00000000..6ac239fe
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/configuration-api.yaml
@@ -0,0 +1,42 @@
+configuration:
+ get:
+ description: Returns the entire contents of the Application Configuration.
+ tags:
+ - Configuration
+ operationId: getConfiguration
+ summary: Get the Application Configuration (getConfiguration)
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ type: string
+ description: OK - Configuration
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+ description: Not Found - Configuration is not found or is not readable
+ put:
+ description: >
+ Replace the current Application Configuration with a new configuration.
+ The new configuration, if accepted, will take effect after a short delay.
+ The new configuration must comply with the Application Configuration schema,
+ which can be found from the the Application Documentation (Developer Guide)
+ tags:
+ - Configuration
+ operationId: putConfiguration
+ summary: Set/Replace the Application Configuration (putConfiguration)
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ required: true
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: 'schemas.yaml#/schemas/void'
+ description: OK - Configuration updated
+ "400":
+ $ref: 'responses.yaml#/responses/BadRequest' \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/examples.yaml b/a1-policy-management/open-api-fragments/v2-fragments/examples.yaml
new file mode 100644
index 00000000..2ea2d19f
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/examples.yaml
@@ -0,0 +1,104 @@
+examples:
+ service_status:
+ description: List of service information
+ value:
+ callback_url: callback_url
+ service_id: service_id
+ keep_alive_interval_seconds: 0
+ time_since_last_activity_seconds: 6
+
+ service_status_list:
+ description: List of service information
+ value:
+ service_list:
+ - callback_url: callback_url
+ service_id: service_id
+ keep_alive_interval_seconds: 0
+ time_since_last_activity_seconds: 6
+ - callback_url: callback_url
+ service_id: service_id
+ keep_alive_interval_seconds: 0
+ time_since_last_activity_seconds: 6
+ policy_type_definition:
+ description: Schema of the given A1 Policy Type
+ value:
+ policy_schema: "{}"
+ policy_type_id_list:
+ description: Array of A1 Policy Type id's
+ value:
+ policy_type_id_list:
+ - policytype_id
+ - policytype_id
+ policy_info:
+ description: Information for an A1 Policy Instance
+ value:
+ ric_id: ric_id1
+ policy_id: policy_id1
+ transient: false
+ service_id: service_id1
+ policy_data: "{}"
+ status_notification_uri: status_notification_uri
+ policytype_id: policytype_id1
+ policy_info_list:
+ description: List of policy information
+ value:
+ policies:
+ - ric_id: ric_id1
+ policy_id: policy_id1
+ transient: false
+ service_id: service_id1
+ policy_data: "{}"
+ status_notification_uri: status_notification_uri
+ policytype_id: policytype_id1
+ - ric_id: ric_id2
+ policy_id: policy_id2
+ transient: true
+ service_id: service_id2
+ policy_data: "{}"
+ status_notification_uri: status_notification_uri
+ policytype_id: policytype_id2
+ policy_id_list:
+ description: A list of policy identities
+ value:
+ policy_ids:
+ - some_policy_id
+ - some_policy_id
+ policy_status_info:
+ description: Status for one A1-P Policy
+ value:
+ last_modified: last_modified
+ status:
+ value:
+ status: status
+ status_info:
+ value:
+ status: status
+ ric_info:
+ value:
+ ric_id: ric_id
+ managed_element_ids:
+ - some_managed_element_id
+ - some_managed_element_id
+ state: UNAVAILABLE
+ policytype_ids:
+ - some_policytype_id
+ - some_policytype_id
+ ric_info_list:
+ value:
+ rics:
+ - ric_id: ric_id
+ managed_element_ids:
+ - some_managed_element_id
+ - some_managed_element_id
+ state: UNAVAILABLE
+ policytype_ids:
+ - policytype_id
+ - policytype_id
+ - ric_id: ric_id
+ managed_element_ids:
+ - managed_element_ids
+ - managed_element_ids
+ state: UNAVAILABLE
+ policytype_ids:
+ - policytype_ids
+ - policytype_ids \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/healthcheck-api.yaml b/a1-policy-management/open-api-fragments/v2-fragments/healthcheck-api.yaml
new file mode 100644
index 00000000..f8d75612
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/healthcheck-api.yaml
@@ -0,0 +1,31 @@
+status:
+ get:
+ operationId: getStatusV1
+ description: Returns status and statistics of this service
+ summary: Get Status (getStatusV1)
+ tags:
+ - Health Check
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ type: string
+ description: OK - Service is living
+status-v2:
+ get:
+ operationId: getStatus
+ description: Returns status and statistics of this service
+ summary: Get Status (getStatus)
+ tags:
+ - Health Check
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/status_info'
+ examples:
+ status_info:
+ $ref: 'examples.yaml#/examples/status_info'
+ description: OK- Service is living Ok \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/pms-api.yaml b/a1-policy-management/open-api-fragments/v2-fragments/pms-api.yaml
new file mode 100644
index 00000000..57fe3a4e
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/pms-api.yaml
@@ -0,0 +1,149 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2020-2023 Nordix Foundation. All rights reserved.
+# Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+openapi: 3.0.3
+info:
+ x-api-id: a31c510b-20e6-4a08-af16-368c44d7fba8
+ x-audience: external-public
+ description: "<h2>General</h2><p>The ONAP CCSDK A1 Policy Management Service\
+ \ provides a REST API for managing A1 policies. <br/>This document describes an older pre-spec API set
+ \ to perform tasks for: </p><ul><li>A1 Policy creation, modification and deletion.</li><li>Monitoring\
+ \ and maintaining consistency of the SMO view of A1 Policies and the Near-RT RICs</li><li>Maintaining\
+ \ a view of each Near-RT RIC's supported A1 Policy Types</li><li>Supervision of registered services\
+ \ (rApps). When a registered service is unavailable, its policies are removed.</li></ul><h2>APIs\
+ \ provided or defined by the service</h2><h3>A1 Policy Management (Older pre-spec version) </h3>\
+ \ <p>This is an older API for managing A1 Policies:</p><ul><li>A1 Policy retrieval, creation,\
+ \ modification and deletion.</li><li>Retrieval of supported A1 Policy Types for\
+ \ a Near-RT RIC</li><li>Retrieval of status for existing A1 policies</li></ul><h3>Management\
+ \ of configuration</h3><p>API for updating and retrieval of the component configuration.\
+ \ Note that there other ways to maintain the configuration.</p><h3>Service Callbacks</h3><p>These\
+ \ are endpoints that are invoked by this service. The callbacks are registered\
+ \ in this service at service registration.</p><h3>NearRT-RIC Repository (Older version)</h3>\
+ \ <p>This is an API that provides support for looking up a NearRT-RIC. Each A1 policy\
+ \ is targeted towards one Near-RT RIC.</p><h3>Health Check</h3><p>API used for supervision\
+ \ of the A1 Policy Management Service .</p><h3>Service Registry and Supervision</h3>\
+ \ <p>API used for registering services/clients/rApps. Each A1 Policy can be tagged with an owner.\
+ \ If the owner service is registered, then the service can be monitored by a heart-beat supervision\
+ \ mechanism, and if the registered service becomes unavailable, then its A1 Policies are removed. Note \
+ \ that services do not need to be registered to create A1 Policies, but unregistered services are not \
+ \ supervised. This is a feature that is optional to use.</p><h3>Authorization API</h3><p>API used\
+ \ for access control of A1 Policy access. If configured, an external authorization\
+ \ provider is requested to grant access to the A1 Policy Type.</p><h3>Spring Boot\
+ \ Actuator</h3><p>Provides built-in functions used to monitor and configure the Spring\
+ \ web application hosting the service.</p>"
+ license:
+ name: |
+ Copyright (C) 2020-2023 Nordix Foundation, and Copyright (C) 2024-2025 OpenInfra Foundation Europe.
+ All rights reserved. Licensed under the Apache 2 License.
+ url: http://www.apache.org/licenses/LICENSE-2.0
+ title: ONAP CCSDK - Pre-Spec A1 Policy Management API
+ version: 1.3.0
+ contact:
+ name: ONAP CCSDK Project
+ url: https://www.onap.org/
+ email: discuss-list@onap.com
+servers:
+ - url: /
+tags:
+ - name: A1 Policy Management
+ description: >
+ Older pre-spec API used to get, create, update and delete A1 Policy Instances. Also used to query A1 Policy Types.
+ - name: NearRT-RIC Repository
+ description: >
+ Older API used to get information about registered Near-RT RICs.
+ - name: Service Registry and Supervision
+ description: >
+ Older API used to manage registered services, and control their keep-alive status via heart-beat messages.
+ - name: Health Check
+ description: >
+ API used to get the health status and statistics of this service
+ - name: Service Callbacks
+ description: >
+ Callout to registered services to indicate a status changes for a Near-RT RIC.
+ Note that these operations are called by the A1 Policy Management Service, not provided.
+ - name: Authorization API
+ description: >
+ API used for authorization of information A1 policy access (this is
+ provided by an authorization producer such as OPA).
+ Note that these operations are called by the A1 Policy Management Service, not provided.
+ - name: Configuration
+ description: >
+ API used to create or fetch the application configuration.
+ - name: Actuator API
+ description: >
+ API used to monitor and configure the A1-PMS Springboot Service.
+ externalDocs:
+ description: Spring Boot Actuator Web API Documentation
+ url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
+
+paths:
+ /status:
+ $ref: 'healthcheck-api.yaml#/status'
+ /a1-policy/v2/status:
+ $ref: 'healthcheck-api.yaml#/status-v2'
+ /a1-policy/v2/rics/ric:
+ $ref: 'ric-api.yaml#/ric'
+ /a1-policy/v2/policy-types:
+ $ref: 'pms-lcm-api.yaml#/policy-types'
+ /a1-policy/v2/policies/{policy_id}:
+ $ref: 'pms-lcm-api.yaml#/policy'
+ /a1-policy/v2/services/{service_id}/keepalive:
+ $ref: 'service-api.yaml#/keep-alive'
+ /a1-policy/v2/rics:
+ $ref: 'ric-api.yaml#/rics'
+ /a1-policy/v2/services:
+ $ref: 'service-api.yaml#/services'
+ /a1-policy/v2/policy-types/{policytype_id}:
+ $ref: 'pms-lcm-api.yaml#/policy-type'
+ /a1-policy/v2/policies:
+ $ref: 'pms-lcm-api.yaml#/policies'
+ /a1-policy/v2/policy-instances:
+ $ref: 'pms-lcm-api.yaml#/policy-instances'
+ /a1-policy/v2/services/{service_id}:
+ $ref: 'service-api.yaml#/service'
+ /a1-policy/v2/policies/{policy_id}/status:
+ $ref: 'pms-lcm-api.yaml#/policy-status'
+ /a1-policy/v2/configuration:
+ $ref: 'configuration-api.yaml#/configuration'
+ /example-authz-check:
+ $ref: 'authz-api.yaml#/authz'
+ /actuator:
+ $ref: 'actuator-api.yaml#/actuator'
+ /actuator/heapdump:
+ $ref: 'actuator-api.yaml#/heapdump'
+ /actuator/info:
+ $ref: 'actuator-api.yaml#/actuator-info'
+ /actuator/threaddump:
+ $ref: 'actuator-api.yaml#/threaddump'
+ /actuator/loggers:
+ $ref: 'actuator-api.yaml#/loggers'
+ /actuator/loggers/{name}:
+ $ref: 'actuator-api.yaml#/logger'
+ /actuator/logfile:
+ $ref: 'actuator-api.yaml#/logfile'
+ /actuator/health:
+ $ref: 'actuator-api.yaml#/health'
+ /actuator/health/**:
+ $ref: 'actuator-api.yaml#/health-all'
+ /actuator/shutdown:
+ $ref: 'actuator-api.yaml#/shutdown'
+ /actuator/metrics:
+ $ref: 'actuator-api.yaml#/metrics'
+ /actuator/metrics/{requiredMetricName}:
+ $ref: 'actuator-api.yaml#/metric'
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/pms-lcm-api.yaml b/a1-policy-management/open-api-fragments/v2-fragments/pms-lcm-api.yaml
new file mode 100644
index 00000000..7eeffc4c
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/pms-lcm-api.yaml
@@ -0,0 +1,301 @@
+policy-types:
+ get:
+ operationId: getPolicyTypes
+ description: Query A1 Policy Type identities using query parameters
+ summary: Get A1 Policy Types (getPolicyTypes)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - description: Select types for the given Near-RT RIC identity.
+ explode: true
+ in: query
+ name: ric_id
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select types compatible with the given type name (type identity has the
+ format 'typename_version')
+ explode: true
+ in: query
+ name: type_name
+ required: false
+ schema:
+ type: string
+ style: form
+ - 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. Matching
+ types will be returned sorted in ascending order.
+ explode: true
+ in: query
+ name: compatible_with_version
+ required: false
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ policy_type_id_list:
+ $ref: 'examples.yaml#/examples/policy_type_id_list'
+ schema:
+ $ref: 'schemas.yaml#/schemas/policy_type_id_list'
+ description: OK - Policy Type IDs Found
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+ description: 'Not Found - Requested Policy Type IDs Not Found'
+
+policy-type:
+ get:
+ description: Get an A1 Policy Type definition using its policy type ID
+ operationId: getPolicyTypeDefinition
+ summary: Get an A1 Policy Type definition (getPolicyTypeDefinition)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - explode: false
+ in: path
+ name: policytype_id
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/policy_type_definition'
+ examples:
+ policy_type_definition:
+ $ref: 'examples.yaml#/examples/policy_type_definition'
+ description: OK - schema of the requested A1 Policy Type
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+
+policy-instances:
+ get:
+ description: >
+ Returns a collection of A1 Policy Instance information for policies that match given search criteria.
+ If several query parameters are defined, the policies matching all conditions are returned.
+ operationId: getPolicyInstances
+ summary: Query for A1 Policy instances (getPolicyInstances)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - description: Select policies with a given A1 Policy Type ID.
+ explode: true
+ in: query
+ name: policytype_id
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select policies for a given Near-RT RIC identity.
+ explode: true
+ in: query
+ name: ric_id
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select policies owned by a given service (registered or unregistered).
+ explode: true
+ in: query
+ name: service_id
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select policies of a given A1 Policy Type name (type identity has the format 'typename_version').
+ explode: true
+ in: query
+ name: type_name
+ required: false
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ policy_info_list:
+ $ref: 'examples.yaml#/examples/policy_info_list'
+ schema:
+ $ref: 'schemas.yaml#/schemas/policy_info_list'
+ description: OK - Returns A1 Policy Instances which match the criteria
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/error_information'
+ description: Not Found - Near-RT RIC, A1 Policy Type or service was not found
+
+policy-status:
+ get:
+ description: Retrieve the status information for an A1 Policy Instance.
+ tags:
+ - A1 Policy Management
+ operationId: getPolicyStatus
+ summary: Get an A1 Policy Instance's status (getPolicyStatus)
+ parameters:
+ - explode: false
+ in: path
+ name: policy_id
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/policy_status_info'
+ examples:
+ policy_status_info:
+ $ref: 'examples.yaml#/examples/policy_status_info'
+ description: OK - Policy status
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+
+policies:
+ get:
+ description: >
+ Retrieve a list of A1 Policy Instance IDs for policies that match given search criteria.
+ If multiple query parameters are given, the policies matching all conditions are returned.
+ operationId: getPolicyIds
+ summary: Query A1 Policy Instances (getPolicyIds)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - description: Select policies of a given A1 Policy Type ID.
+ explode: true
+ in: query
+ name: policytype_id
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select policies of a given Near-RT RIC identity.
+ explode: true
+ in: query
+ name: ric_id
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select policies owned by a given service. (Both registered and unregistered services)
+ explode: true
+ in: query
+ name: service_id
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: >
+ Select policies of types with the given A1 Policy Type name
+ (type names have the format 'typename_version')
+ explode: true
+ in: query
+ name: type_name
+ required: false
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ policy_id_list:
+ $ref: 'examples.yaml#/examples/policy_id_list'
+ schema:
+ $ref: 'schemas.yaml#/schemas/policy_id_list'
+ description: OK - Policy identities
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+ put:
+ description: Create or Update an A1 Policy Instance
+ tags:
+ - A1 Policy Management
+ operationId: putPolicy
+ summary: Create or Update an A1 Policy Instance (putPolicy)
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/policy_info'
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/void'
+ description: OK - Policy updated
+ "201":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/void'
+ description: Created - Policy created
+ "423":
+ $ref: 'responses.yaml#/responses/Locked'
+
+policy:
+ delete:
+ description: Delete an A1 Policy instance using its policy ID.
+ operationId: deletePolicy
+ summary: Delete an A1 Policy instance (deletePolicy)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - explode: false
+ in: path
+ name: policy_id
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: 'schemas.yaml#/schemas/void'
+ description: OK - Policy deleted
+ "423":
+ $ref: 'responses.yaml#/responses/Locked'
+ description: 'The requested policy using policy_id is Locked'
+ get:
+ description: Get an A1 Policy instance using its policy ID
+ operationId: getPolicy
+ summary: Get an A1 Policy instance (getPolicy)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - explode: false
+ in: path
+ name: policy_id
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/policy_info'
+ examples:
+ policy_info:
+ $ref: 'examples.yaml#/examples/policy_info'
+ description: OK - Policy found
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+ description: 'Not Found - Requested Policy using policy_id is not found' \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/responses.yaml b/a1-policy-management/open-api-fragments/v2-fragments/responses.yaml
new file mode 100644
index 00000000..32dfb3e9
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/responses.yaml
@@ -0,0 +1,37 @@
+responses:
+ Locked:
+ description: Locked - HTTP Status code which can be used when the state is Locked
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/error_information'
+ example:
+ status: 423
+ title: Locked
+ detail: Requested resource is in a locked state.
+ BadRequest:
+ description: Bad Request
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/error_information'
+ example:
+ status: 400
+ title: Bad Request
+ detail: The provided request is not valid.
+ Forbidden:
+ description: Forbidden
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/error_information'
+ example:
+ status: 403
+ title: Forbidden
+ detail: Your role does not allow to perform this action. Contact System Administrator to change your access rights.
+ NotFound:
+ description: Not Found
+ content:
+ application/problem+json:
+ example:
+ [ ] \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/ric-api.yaml b/a1-policy-management/open-api-fragments/v2-fragments/ric-api.yaml
new file mode 100644
index 00000000..ae79956e
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/ric-api.yaml
@@ -0,0 +1,71 @@
+ric:
+ get:
+ description: >
+ Query information about a Near-RT RIC. Either a Near-RT RIC identity or a Managed Element
+ identity can be specified. The intention with Managed Element identity is the ID used
+ in O1 for accessing the traffical element (such as the ID of CU).
+ operationId: getRic
+ summary: Get a Near-RT RIC (getRic)
+ tags:
+ - NearRT-RIC Repository
+ parameters:
+ - description: >
+ The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.
+ explode: true
+ in: query
+ name: managed_element_id
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: The identity of a Near-RT RIC to get information for.
+ explode: true
+ in: query
+ name: ric_id
+ required: false
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ric_info'
+ examples:
+ ric_info:
+ $ref: 'examples.yaml#/examples/ric_info'
+ description: OK - Near-RT RIC is found
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+ description: NotFound - Requested NearRT-RIC Not Found
+rics:
+ get:
+ description: Get all Near-RT RICs that supports a given A1 Policy Type ID
+ operationId: getRics
+ summary: Get Near-RT RICs for A1 Policy Type (getRics)
+ tags:
+ - NearRT-RIC Repository
+ parameters:
+ - description: >
+ The identity of an A1 Policy Type. If given, all Near-RT RICs supporting
+ the A1 Policy Type are returned.
+ explode: true
+ in: query
+ name: policytype_id
+ required: false
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ric_info_list'
+ examples:
+ ric_info_list:
+ $ref: 'examples.yaml#/examples/ric_info_list'
+ description: OK
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound' \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/schemas.yaml b/a1-policy-management/open-api-fragments/v2-fragments/schemas.yaml
new file mode 100644
index 00000000..fcb2761a
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/schemas.yaml
@@ -0,0 +1,273 @@
+schemas:
+ policy_type_definition:
+ description: Contains A1 Policy Type schema definition
+ type: object
+ properties:
+ policy_schema:
+ description: A1 Policy Type json schema. The schema is a json object following
+ http://json-schema.org/draft-07/schema
+ type: object
+ error_information:
+ description: Problem as defined in https://tools.ietf.org/html/rfc7807
+ properties:
+ detail:
+ description: ' A human-readable explanation specific to this occurrence
+ of the problem.'
+ example: A1 Policy Type not found
+ type: string
+ title:
+ description: 'A specific error name'
+ type: string
+ example: Not Found
+ status:
+ description: 'The HTTP status code generated by the origin server for this
+ occurrence of the problem. '
+ example: 404
+ format: int32
+ type: integer
+ type: object
+ void:
+ description: Void/empty
+ type: object
+ status_info:
+ properties:
+ status:
+ description: status text
+ type: string
+ type: object
+ authorization_result:
+ description: Result of authorization
+ example:
+ result: true
+ properties:
+ result:
+ description: If true, the access is granted
+ type: boolean
+ required:
+ - result
+ type: object
+ ric_info:
+ description: Information for a Near-RT RIC
+ properties:
+ ric_id:
+ description: identity of the Near-RT RIC
+ type: string
+ managed_element_ids:
+ description: O1 identities for managed entities
+ items:
+ description: O1 identities for managed entities
+ type: string
+ type: array
+ state:
+ description: Represents the states for a Near-RT RIC
+ enum:
+ - UNAVAILABLE
+ - AVAILABLE
+ - SYNCHRONIZING
+ - CONSISTENCY_CHECK
+ type: string
+ policytype_ids:
+ description: supported A1 Policy Types
+ items:
+ description: supported A1 Policy Types
+ type: string
+ type: array
+ type: object
+ service_registration_info:
+ description: Information for one service
+ properties:
+ callback_url:
+ description: Callback for notifying of Near-RT RIC state changes
+ type: string
+ service_id:
+ description: identity of the service
+ type: string
+ keep_alive_interval_seconds:
+ description: >
+ Keep alive interval for the service. This is used to enable
+ optional heartbeat supervision of the service. If set (> 0) the registered
+ service should regularly invoke a 'keepalive' REST call. When a service
+ fails to invoke this 'keepalive' call within the configured time, the
+ service is considered unavailable. An unavailable service will be automatically
+ deregistered and its policies will be deleted. Value 0 means timeout
+ supervision is disabled.
+ format: int64
+ type: integer
+ required:
+ - service_id
+ type: object
+ policy_info_list:
+ description: List of policy information
+ properties:
+ policies:
+ description: List of policy information
+ items:
+ $ref: '#/schemas/policy_info'
+ type: array
+ type: object
+ policy_status_info:
+ description: Status for one A1-P Policy
+ properties:
+ last_modified:
+ description: timestamp, last modification time
+ type: string
+ status:
+ description: the Policy status
+ type: object
+ type: object
+ service_status:
+ properties:
+ callback_url:
+ description: callback for notifying of RIC synchronization
+ type: string
+ service_id:
+ description: identity of the service
+ type: string
+ keep_alive_interval_seconds:
+ description: policy keep alive timeout
+ format: int64
+ type: integer
+ time_since_last_activity_seconds:
+ description: time since last invocation by the service
+ format: int64
+ type: integer
+ type: object
+ ric_info_list:
+ description: List of Near-RT RIC information
+ properties:
+ rics:
+ description: List of Near-RT RIC information
+ items:
+ $ref: '#/schemas/ric_info'
+ type: array
+ type: object
+ input:
+ description: input
+ properties:
+ access_type:
+ description: Access type
+ enum:
+ - READ
+ - WRITE
+ - DELETE
+ type: string
+ auth_token:
+ description: Authorization token
+ type: string
+ policy_type_id:
+ description: A1 Policy Type identifier
+ type: string
+ required:
+ - access_type
+ - auth_token
+ - policy_type_id
+ type: object
+ policy_authorization:
+ description: Authorization request for A1 policy requests
+ properties:
+ input:
+ $ref: '#/schemas/input'
+ required:
+ - input
+ type: object
+ policy_type_id_list:
+ description: Information about A1 Policy Types
+ properties:
+ policytype_ids:
+ description: A1 Policy Type identities
+ items:
+ description: A1 Policy Type identities
+ type: string
+ type: array
+ type: object
+ policy_info:
+ description: Information for one A1-P Policy
+ properties:
+ ric_id:
+ description: identity of the target Near-RT RIC
+ type: string
+ policy_id:
+ description: identity of the policy
+ type: string
+ transient:
+ default: false
+ description: >
+ If true, the policy is automatically deleted if the targeted Near-RT RIC restarts
+ or recovers. If false, the A1 Policy Instance remains, and is re-pushed to the targeted
+ Near-RT RIC after a restart or recovery. If false, the A1 Policy Instance is maintained and
+ must be deleted separately in the event of Near-RT RIC restart or recovery. Default is false.
+ example: false
+ nullable: false
+ type: boolean
+ service_id:
+ description: >
+ The identity of the service owning the policy. This can be
+ used to group the policies (it is possible to get all policies associated
+ to a service). Note that the service does not need to be registered.
+ If the service is registered, the A1 Policy Instance will be
+ subject to the same supervision rules as the the service's other policies.
+ type: string
+ default: ""
+ policy_data:
+ description: the configuration of the policy
+ type: object
+ status_notification_uri:
+ description: Callback URI for policy status updates
+ type: string
+ policytype_id:
+ description: identity of the A1 Policy Type
+ type: string
+ required:
+ - ric_id
+ - policy_id
+ - policy_data
+ - policytype_id
+ type: object
+ policy_id_list:
+ description: A list of policy identities
+ example:
+ policy_ids:
+ - policy_ids
+ - policy_ids
+ properties:
+ policy_ids:
+ description: Policy identities
+ items:
+ description: Policy identities
+ type: string
+ type: array
+ type: object
+ service_status_list:
+ properties:
+ service_list:
+ description: List of service information
+ items:
+ $ref: '#/schemas/service_status'
+ type: array
+ type: object
+ service_callback_info_v2:
+ description: |
+ Information transferred in Service callbacks,
+ if a callback URL was provided for a registered service
+ properties:
+ ric_id:
+ description: identity of a Near-RT RIC
+ type: string
+ event_type:
+ description: >
+ values:
+ AVAILABLE: the Near-RT RIC has become available for A1 Policy management
+ enum:
+ - AVAILABLE
+ type: string
+ required:
+ - event_type
+ - ric_id
+ type: object
+ Link:
+ properties:
+ templated:
+ type: boolean
+ href:
+ type: string
+ type: object \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v2-fragments/service-api.yaml b/a1-policy-management/open-api-fragments/v2-fragments/service-api.yaml
new file mode 100644
index 00000000..d8bb484a
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v2-fragments/service-api.yaml
@@ -0,0 +1,150 @@
+keep-alive:
+ put:
+ description: A registered service should invoke this operation regularly to
+ indicate that it is still alive. If a registered service fails to invoke some operation,
+ or this operation, before the end of a timeout period the service will be deregistered
+ and all its A1 policies wil be removed. This operation is only intended for registered
+ services. (This timeout can be set or disabled when each service is initially registered)
+ operationId: keepAliveService
+ summary: Heartbeat message from a service (keepAliveService)
+ tags:
+ - Service Registry and Supervision
+ parameters:
+ - explode: false
+ in: path
+ name: service_id
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ type: object
+ description: OK - Service supervision timer refreshed, OK
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+
+services:
+ get:
+ description: >
+ Get information about all registered services, or a single registered service.
+ If the service ID of a registered service is included in the query, information about that
+ service is returned. Otherwise Information about all registered is returned.
+ This operation does not retrieve information about unregistered services.
+ operationId: getServices
+ summary: Get Services (getServices)
+ tags:
+ - Service Registry and Supervision
+ parameters:
+ - description: The identity of the registered service
+ explode: true
+ in: query
+ name: service_id
+ required: false
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/service_status_list'
+ examples:
+ service_status_list:
+ $ref: 'examples.yaml#/examples/service_status_list'
+ description: OK
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+ put:
+ description: >
+ Register a single service, or update a previous registtration.
+ Service registration is required to get callbacks about available NearRT RICs
+ and to enable supervision of the service's active status. If a registered
+ service becomes inactive, its policies can be automatically deleted.
+ A1 Policy instances can also be created for unregistered services.
+ If an unregistered service is later registered, the service's policies are
+ retained when the service becomes registered. This feature is optional to use.
+ operationId: putService
+ summary: Register or update a Service (putService)
+ tags:
+ - Service Registry and Supervision
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/service_registration_info'
+ required: true
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ type: object
+ description: OK - Service updated
+ "201":
+ content:
+ '*/*':
+ schema:
+ type: object
+ description: Created - Service created
+ "400":
+ $ref: 'responses.yaml#/responses/BadRequest'
+ callbacks:
+ RICStatus:
+ "{$request.body#/callback_url}":
+ post:
+ description: |
+ Callouts to indicate Near-RT RIC status changes relevant for Services.
+ The URL invoked by this callback is provided at Service registration.
+ operationId: serviceCallback
+ summary: Callback for Near-RT RIC status (serviceCallback)
+ tags:
+ - Service Registry and Supervision
+ - Service Callbacks
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/service_callback_info_v2'
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/void'
+ description: OK
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound'
+
+service:
+ delete:
+ description: >
+ Unregister a registered Service using its service ID.
+ Only registered services can be unregistered. All A1 Policy Instances
+ for the previously registered service will be removed.
+ tags:
+ - Service Registry and Supervision
+ operationId: deleteService
+ summary: Unregister a Service (deleteService)
+ parameters:
+ - explode: false
+ in: path
+ name: service_id
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "204":
+ content:
+ '*/*':
+ schema:
+ type: object
+ description: No Content - Service unregistered
+ "404":
+ $ref: 'responses.yaml#/responses/NotFound' \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v3-fragments/configuration-api.yaml b/a1-policy-management/open-api-fragments/v3-fragments/configuration-api.yaml
new file mode 100644
index 00000000..2a7ef5bf
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v3-fragments/configuration-api.yaml
@@ -0,0 +1,41 @@
+configuration:
+ get:
+ operationId: getConfiguration
+ description: Returns the entire contents of the Application Configuration.
+ tags:
+ - Configuration
+ summary: Get the Application Configuration (getConfiguration)
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ type: string
+ description: OK - Application configuration received
+ "404":
+ $ref: 'responses.yaml#/responses/404'
+ put:
+ operationId: putConfiguration
+ description: >
+ Replace the current Application Configuration with a new configuration.
+ The new configuration, if accepted, will take effect after a short delay.
+ The new configuration must comply with the Application Configuration schema,
+ which can be found from the the Application Documentation (Developer Guide)
+ tags:
+ - Configuration
+ summary: Set/Replace the Application Configuration (putConfiguration)
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ required: true
+ responses:
+ "200":
+ content:
+ 'application/json':
+ schema:
+ $ref: 'schemas.yaml#/schemas/void'
+ description: OK - Configuration updated
+ "400":
+ $ref: 'responses.yaml#/responses/400' \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v3-fragments/examples.yaml b/a1-policy-management/open-api-fragments/v3-fragments/examples.yaml
new file mode 100644
index 00000000..415d3b0f
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v3-fragments/examples.yaml
@@ -0,0 +1,112 @@
+examples:
+ ServiceStatusList:
+ description: List of service information
+ value:
+ serviceList:
+ - callbackUrl: http://callback.url
+ serviceId: serviceId1
+ keepAliveIntervalSeconds: 0
+ timeSinceLastActivitySeconds: 6
+ - callbackUrl: http://callback.url
+ serviceId: serviceId2
+ keepAliveIntervalSeconds: 500
+ timeSinceLastActivitySeconds: 401
+ StatusInfo:
+ value:
+ status: success
+ RicInfo:
+ value:
+ ricId: ricId1
+ managedElementIds:
+ - "Note #1"
+ - "Athlone small cells"
+ - "Some optional string"
+ state: UNAVAILABLE
+ policyTypeIds:
+ - policyTypeId1
+ - policyTypeId2
+ RicInfoList:
+ value:
+ rics:
+ - ricId: ricId1
+ managedElementIds:
+ - "Note #1"
+ - "Athlone small cells"
+ - "Fake Cells"
+ state: UNAVAILABLE
+ policyTypeIds:
+ - policyTypeId1
+ - policyTypeId2
+ - ricId: ricId2
+ managedElementIds:
+ - "My test element"
+ - "Another test element"
+ state: UNAVAILABLE
+ policyTypeIds:
+ - policyTypeId3
+ - policyTypeId4
+ PolicyObject:
+ value:
+ scope:
+ ueId:
+ guRanUeId:
+ globalGnbId:
+ plmnId:
+ mcc: "123"
+ mnc: "45"
+ gnbId:
+ gnbIdLength: 24
+ gnbIdValue: 12345678
+ RanUeId: 'a31c510b20e64a74'
+ groupId:
+ spId: 123
+ qosId:
+ 5qI: 1
+ cellId:
+ plmnId:
+ mcc: "123"
+ mnc: "45"
+ cId:
+ ncI: 123
+ qosObjectives:
+ gfbr: 100
+ mfbr: 200
+ priorityLevel: 3
+ pdb: 50
+ PolicyTypeInformation:
+ value:
+ - policyTypeId: STD_QOS2_0.1.0
+ nearRtRicId: ric_g3_2
+ - policyTypeId: STD_QOS_0_2_0
+ nearRtRicId: ric_g3_2
+ - policyTypeId: STD_QOS2_0.1.0
+ nearRtRicId: ric_g3_1
+ - policyTypeId: STD_QOS_0_2_0
+ nearRtRicId: ric_g3_1
+ PolicyTypeObject:
+ value:
+ policySchema:
+ "$schema": http://json-schema.org/draft-07/schema#
+ title: STD_QOS_0_2_0
+ description: STD QOS2 policy type
+ type: object
+ properties:
+ scope:
+ type: object
+ properties:
+ ueId:
+ type: string
+ qosId:
+ type: string
+ additionalProperties: false
+ required:
+ - ueId
+ - qosId
+ qosObjectives:
+ type: object
+ properties:
+ priorityLevel:
+ type: number
+ additionalProperties: false
+ required:
+ - priorityLevel \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v3-fragments/healthcheck-api.yaml b/a1-policy-management/open-api-fragments/v3-fragments/healthcheck-api.yaml
new file mode 100644
index 00000000..a1703016
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v3-fragments/healthcheck-api.yaml
@@ -0,0 +1,19 @@
+status:
+ get:
+ operationId: getStatus
+ description: Returns status and statistics of this service
+ summary: Get Status (getStatus)
+ tags:
+ - Health Check
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/StatusInfo'
+ examples:
+ status_info:
+ $ref: 'examples.yaml#/examples/StatusInfo'
+ description: OK- Service is living Ok
+ "404":
+ $ref: 'responses.yaml#/responses/404' \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v3-fragments/pms-api-v3.yaml b/a1-policy-management/open-api-fragments/v3-fragments/pms-api-v3.yaml
new file mode 100644
index 00000000..a9abd726
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v3-fragments/pms-api-v3.yaml
@@ -0,0 +1,108 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2020-2023 Nordix Foundation. All rights reserved.
+# Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+openapi: 3.0.3
+info:
+ title: ONAP CCSDK - A1 Policy Management API
+ version: 1.0.0
+ x-api-id: e9776a07-0813-4fca-9801-6f892f0a7c13
+ x-audience: external-public
+ description: "<h2>General</h2><p>The ONAP CCSDK A1 Policy Management Service\
+ \ provides a REST API for managing A1 policies. <br/>This document describes the latest API set
+ \ to perform tasks for: </p><ul><li>A1 Policy creation, modification and deletion.</li><li>Monitoring\
+ \ and maintaining consistency of the SMO view of A1 Policies and the Near-RT RICs</li><li>Maintaining\
+ \ a view of each Near-RT RIC's supported A1 Policy Types</li><li>Supervision of registered services\
+ \ (rApps). When a registered service is unavailable, its policies are removed.</li></ul><h2>APIs\
+ \ provided or defined by the service</h2>\
+ \ <p>Note: parts of this API are strongly based on extracts of the O-RAN Alliance R1 Interface specification\
+ \ for A1 Policy Management, and those parts should be considered '© O-RAN ALLIANCE - All rights reserved.'</p>\
+ \ <h3>A1 Policy Management</h3>\
+ \ <p>This is the latest API for managing A1 Policies. This API is partially compliant with O-RAN\
+ \ Alliance R1 Interface specifications for A1 Policy Management:</p><ul><li>A1 Policy retrieval, creation,\
+ \ modification and deletion.</li><li>Retrieval of supported A1 Policy Types for\
+ \ a Near-RT RIC</li><li>Retrieval of status for existing A1 policies</li></ul><h3>Management\
+ \ of configuration</h3><p>API for updating and retrieval of the component configuration.\
+ \ Note that there other ways to maintain the configuration.</p><h3>Service Callbacks</h3><p>These\
+ \ are endpoints that are invoked by this service. The callbacks are registered\
+ \ in this service at service registration.</p><h3>NearRT-RIC Repository (Older version)</h3>\
+ \ <p>This is an API that provides support for looking up a NearRT-RIC. Each A1 policy\
+ \ is targeted towards one Near-RT RIC.</p><h3>Health Check</h3><p>API used for supervision\
+ \ of the A1 Policy Management Service.</p><h3>Service Registry and Supervision</h3>\
+ \ <p>API used for registering services/clients/rApps. Each A1 Policy can be tagged with an owner.\
+ \ If the owner service is registered, then the service can be optionally monitored by a heart-beat supervision\
+ \ mechanism, and if the registered service becomes unavailable, then it is removed and all its A1 Policies are \
+ \ deleted. Note that services do not need to be registered to create A1 Policies, but unregistered \
+ \ services are not supervised. This is a feature that is optional to use.</p>"
+ license:
+ name: Copyright (C) 2024 - 2025 OpenInfra Foundation Europe. Licensed under the Apache 2 License.
+ url: http://www.apache.org/licenses/LICENSE-2.0
+ contact:
+ url: https://www.onap.org/
+ email: discuss-list@onap.com
+externalDocs:
+ description: 'Based on parts of O-RAN ALLIANCE specification: O-RAN.WG2.R1AP-v07.00'
+ url: 'https://www.o-ran.org/specifications'
+servers:
+ - url: '{apiRoot}/a1-policy-management/v1'
+ variables:
+ apiRoot:
+ default: 'https://example.com'
+ description: 'This is the Host:Port or Address where the A1-Policy Management Service can be accessed.
+ Note: This URL path format aligns with the O-RAN Alliance R1-AP specifications for A1 Policy Management'
+tags:
+ - name: A1 Policy Management
+ description: >
+ API used to get, create, update and delete A1 Policy Instances. Also used to query A1 Policy Types.
+ - name: NearRT-RIC Repository
+ description: >
+ API used to get information about registered Near-RT RICs.
+ - name: Service Registry and Supervision
+ description: >
+ API used to manage registered services, and control their keep-alive status via heart-beat messages.
+ - name: Health Check
+ description: >
+ API used to get the health status and statistics of this service.
+ - name: Configuration
+ description: >
+ API used to create or fetch the application configuration.
+paths:
+ /status:
+ $ref: 'healthcheck-api.yaml#/status'
+ /rics/{ricId}:
+ $ref: 'ric-api.yaml#/ric'
+ /rics:
+ $ref: 'ric-api.yaml#/rics'
+ /policy-types:
+ $ref: 'pms-lcm-api.yaml#/policy-types'
+ /policy-types/{policyTypeId}:
+ $ref: 'pms-lcm-api.yaml#/policy-type'
+ /policies/{policyId}:
+ $ref: 'pms-lcm-api.yaml#/policy'
+ /policies/{policyId}/status:
+ $ref: 'pms-lcm-api.yaml#/policy-status'
+ /policies:
+ $ref: 'pms-lcm-api.yaml#/policies'
+ /configuration:
+ $ref: 'configuration-api.yaml#/configuration'
+ /services/{serviceId}/keepalive:
+ $ref: 'service-api.yaml#/keep-alive'
+ /services:
+ $ref: 'service-api.yaml#/services'
+ /services/{serviceId}:
+ $ref: 'service-api.yaml#/service'
diff --git a/a1-policy-management/open-api-fragments/v3-fragments/pms-lcm-api.yaml b/a1-policy-management/open-api-fragments/v3-fragments/pms-lcm-api.yaml
new file mode 100644
index 00000000..3ef0174c
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v3-fragments/pms-lcm-api.yaml
@@ -0,0 +1,462 @@
+policy-types:
+ get:
+ description: Query A1 Policy Type identities using query parameters
+ operationId: getPolicyTypes
+ summary: Get A1 Policy Types (getPolicyTypes)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - description: Select types for the given Near-RT RIC identity.
+ explode: true
+ in: query
+ name: nearRtRicId
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select types compatible with the given type name (type identity has the format 'typename_version')
+ explode: true
+ in: query
+ name: typeName
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: >
+ Select types that are compatible with the given version. This
+ parameter is only applicable in conjunction with typeName. As an example
+ version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching
+ types will be returned sorted in ascending order.
+ explode: true
+ in: query
+ name: compatibleWithVersion
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ '200':
+ content:
+ application/json:
+ schema:
+ items:
+ $ref: 'schemas.yaml#/schemas/PolicyTypeInformation'
+ type: array
+ examples:
+ PolicyTypeInformation:
+ $ref: 'examples.yaml#/examples/PolicyTypeInformation'
+ description: OK - Policy Type IDs found Ok
+ '400':
+ $ref: 'responses.yaml#/responses/400'
+ '401':
+ $ref: 'responses.yaml#/responses/401'
+ '403':
+ $ref: 'responses.yaml#/responses/403'
+ '404':
+ $ref: 'responses.yaml#/responses/404'
+ '406':
+ $ref: 'responses.yaml#/responses/406'
+ '429':
+ $ref: 'responses.yaml#/responses/429'
+ '500':
+ $ref: 'responses.yaml#/responses/500'
+ '502':
+ $ref: 'responses.yaml#/responses/502'
+ '503':
+ $ref: 'responses.yaml#/responses/503'
+
+policy-type:
+ get:
+ operationId: getPolicyTypeDefinition
+ description: Get an A1 Policy Type definition using its policy type ID
+ summary: Get an A1 Policy Type definition (getPolicyTypeDefinition)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - explode: false
+ in: path
+ name: policyTypeId
+ required: true
+ schema:
+ type: string
+ style: simple
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ '200':
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/PolicyTypeObject'
+ examples:
+ PolicyTypeObject:
+ $ref: 'examples.yaml#/examples/PolicyTypeObject'
+ description: OK - details and schema of the requested A1 Policy Type
+ '400':
+ $ref: 'responses.yaml#/responses/400'
+ '401':
+ $ref: 'responses.yaml#/responses/401'
+ '403':
+ $ref: 'responses.yaml#/responses/403'
+ '404':
+ $ref: 'responses.yaml#/responses/404'
+ '406':
+ $ref: 'responses.yaml#/responses/406'
+ '429':
+ $ref: 'responses.yaml#/responses/429'
+ '500':
+ $ref: 'responses.yaml#/responses/500'
+ '502':
+ $ref: 'responses.yaml#/responses/502'
+ '503':
+ $ref: 'responses.yaml#/responses/503'
+
+policy:
+ put:
+ operationId: updatePolicy
+ description: Update an existing A1 Policy instance's policy data using its policy ID.
+ summary: Update an A1 Policy's policy data (updatePolicy)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - name: policyId
+ in: path
+ required: true
+ schema:
+ type: string
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/PolicyObject'
+ examples:
+ policyObject:
+ $ref: 'examples.yaml#/examples/PolicyObject'
+ responses:
+ '200':
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/PolicyObject'
+ description: OK - Policy updated
+ '400':
+ $ref: 'responses.yaml#/responses/400'
+ '401':
+ $ref: 'responses.yaml#/responses/401'
+ '403':
+ $ref: 'responses.yaml#/responses/403'
+ '404':
+ $ref: 'responses.yaml#/responses/404'
+ '406':
+ $ref: 'responses.yaml#/responses/406'
+ '411':
+ $ref: 'responses.yaml#/responses/411'
+ '413':
+ $ref: 'responses.yaml#/responses/413'
+ '415':
+ $ref: 'responses.yaml#/responses/415'
+ '423':
+ $ref: 'responses.yaml#/responses/Locked'
+ '429':
+ $ref: 'responses.yaml#/responses/429'
+ '500':
+ $ref: 'responses.yaml#/responses/500'
+ '502':
+ $ref: 'responses.yaml#/responses/502'
+ '503':
+ $ref: 'responses.yaml#/responses/503'
+ delete:
+ operationId: deletePolicy
+ description: Delete an existing A1 Policy instance using its policy ID.
+ summary: Delete an A1 Policy instance (deletePolicy)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - explode: false
+ in: path
+ name: policyId
+ required: true
+ schema:
+ type: string
+ style: simple
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ '204':
+ description: 'No Content'
+ '400':
+ $ref: 'responses.yaml#/responses/400'
+ '401':
+ $ref: 'responses.yaml#/responses/401'
+ '403':
+ $ref: 'responses.yaml#/responses/403'
+ '404':
+ $ref: 'responses.yaml#/responses/404'
+ '405':
+ $ref: 'responses.yaml#/responses/405'
+ '406':
+ $ref: 'responses.yaml#/responses/406'
+ '423':
+ $ref: 'responses.yaml#/responses/Locked'
+ '429':
+ $ref: 'responses.yaml#/responses/429'
+ '500':
+ $ref: 'responses.yaml#/responses/500'
+ '502':
+ $ref: 'responses.yaml#/responses/502'
+ '503':
+ $ref: 'responses.yaml#/responses/503'
+ get:
+ operationId: getPolicy
+ description: Get an A1 Policy instance's policy data using its policy ID
+ summary: Get an A1 Policy's policy data (getPolicy)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - explode: false
+ in: path
+ name: policyId
+ required: true
+ schema:
+ type: string
+ style: simple
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ '200':
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/PolicyObject'
+ examples:
+ policyObject:
+ $ref: 'examples.yaml#/examples/PolicyObject'
+ description: OK - Policy found
+ '400':
+ $ref: 'responses.yaml#/responses/400'
+ '401':
+ $ref: 'responses.yaml#/responses/401'
+ '403':
+ $ref: 'responses.yaml#/responses/403'
+ '404':
+ $ref: 'responses.yaml#/responses/404'
+ '406':
+ $ref: 'responses.yaml#/responses/406'
+ '429':
+ $ref: 'responses.yaml#/responses/429'
+ '500':
+ $ref: 'responses.yaml#/responses/500'
+ '502':
+ $ref: 'responses.yaml#/responses/502'
+ '503':
+ $ref: 'responses.yaml#/responses/503'
+
+policy-status:
+ get:
+ operationId: getPolicyStatus
+ description: Retrieve the status information for an A1 Policy Instance using its policy ID.
+ summary: Get an A1 Policy Instance's status (getPolicyStatus)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - explode: false
+ in: path
+ name: policyId
+ required: true
+ schema:
+ type: string
+ style: simple
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ '200':
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/PolicyStatusObject'
+ description: OK
+ '400':
+ $ref: 'responses.yaml#/responses/400'
+ '401':
+ $ref: 'responses.yaml#/responses/401'
+ '403':
+ $ref: 'responses.yaml#/responses/403'
+ '404':
+ $ref: 'responses.yaml#/responses/404'
+ '406':
+ $ref: 'responses.yaml#/responses/406'
+ '429':
+ $ref: 'responses.yaml#/responses/429'
+ '500':
+ $ref: 'responses.yaml#/responses/500'
+ '502':
+ $ref: 'responses.yaml#/responses/502'
+ '503':
+ $ref: 'responses.yaml#/responses/503'
+
+policies:
+ get:
+ operationId: getPolicyIds
+ description: >
+ Returns a collection of A1 Policy Instance IDs for policies that match given search criteria.
+ If several query parameters are defined, the policies matching all conditions are returned.
+ summary: Query for A1 Policy instances (getPolicyIds)
+ tags:
+ - A1 Policy Management
+ parameters:
+ - description: Select policies with a given A1 Policy Type ID.
+ explode: true
+ in: query
+ name: policyTypeId
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select policies for a given Near-RT RIC identity.
+ explode: true
+ in: query
+ name: nearRtRicId
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select policies owned by a given service (registered or unregistered).
+ explode: true
+ in: query
+ name: serviceId
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Select policies of a given A1 Policy Type name (type identity has the format 'typename_version').
+ explode: true
+ in: query
+ name: typeName
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ '200':
+ content:
+ application/json:
+ schema:
+ items:
+ $ref: 'schemas.yaml#/schemas/PolicyInformation'
+ type: array
+ description: OK - Policy identities
+ '400':
+ $ref: 'responses.yaml#/responses/400'
+ '401':
+ $ref: 'responses.yaml#/responses/401'
+ '403':
+ $ref: 'responses.yaml#/responses/403'
+ '404':
+ $ref: 'responses.yaml#/responses/404'
+ '406':
+ $ref: 'responses.yaml#/responses/406'
+ '429':
+ $ref: 'responses.yaml#/responses/429'
+ '500':
+ $ref: 'responses.yaml#/responses/500'
+ '502':
+ $ref: 'responses.yaml#/responses/502'
+ '503':
+ $ref: 'responses.yaml#/responses/503'
+ post:
+ operationId: createPolicy
+ description: Create an A1 Policy Instance
+ summary: Create an A1 Policy Instance (createPolicy)
+ tags:
+ - A1 Policy Management
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/PolicyObjectInformation'
+ responses:
+ '201':
+ description: 'Created'
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/PolicyObjectInformation'
+ headers:
+ Location:
+ description: >
+ Contains the URI of the newly created A1 Policy Instances.
+ This URI includes the A1 Policy Instance ID for the newly
+ created policy instance.
+ required: true
+ schema:
+ type: string
+ Content-Type:
+ description: 'Media Type of the response'
+ schema:
+ type: string
+ example: application/json
+
+ '400':
+ $ref: 'responses.yaml#/responses/400'
+ '401':
+ $ref: 'responses.yaml#/responses/401'
+ '403':
+ $ref: 'responses.yaml#/responses/403'
+ '404':
+ $ref: 'responses.yaml#/responses/404'
+ '405':
+ $ref: 'responses.yaml#/responses/405'
+ '406':
+ $ref: 'responses.yaml#/responses/406'
+ '409':
+ $ref: 'responses.yaml#/responses/409'
+ '413':
+ $ref: 'responses.yaml#/responses/413'
+ '415':
+ $ref: 'responses.yaml#/responses/415'
+ '423':
+ $ref: 'responses.yaml#/responses/Locked'
+ '429':
+ $ref: 'responses.yaml#/responses/429'
+ '500':
+ $ref: 'responses.yaml#/responses/500'
+ '502':
+ $ref: 'responses.yaml#/responses/502'
+ '503':
+ $ref: 'responses.yaml#/responses/503' \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v3-fragments/responses.yaml b/a1-policy-management/open-api-fragments/v3-fragments/responses.yaml
new file mode 100644
index 00000000..4b26f093
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v3-fragments/responses.yaml
@@ -0,0 +1,95 @@
+responses:
+ '400':
+ description: Bad Request
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '401':
+ description: Unauthorized
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '403':
+ description: Forbidden
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '404':
+ description: Not Found
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '405':
+ description: Method Not Allowed
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '406':
+ description: Not Acceptable
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '409':
+ description: Conflict
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '411':
+ description: Length Required
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '413':
+ description: Payload Too Large
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '415':
+ description: Unsupported Media Type
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '429':
+ description: Too Many Requests
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '500':
+ description: Internal Server Error
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '502':
+ description: Bad Gateway
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ '503':
+ description: Service Unavailable
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ProblemDetails'
+ Locked:
+ description: Locked - HTTP Status code which can be used when the state is Locked
+ content:
+ application/problem+json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ErrorInformation'
+ example:
+ status: 423
+ title: Locked
+ detail: State is Locked in the provided request. \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v3-fragments/ric-api.yaml b/a1-policy-management/open-api-fragments/v3-fragments/ric-api.yaml
new file mode 100644
index 00000000..2b381544
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v3-fragments/ric-api.yaml
@@ -0,0 +1,72 @@
+ric:
+ get:
+ operationId: getRic
+ description: Get information about a Near-RT RIC
+ summary: Get a Near-RT RIC (getRic)
+ tags:
+ - NearRT-RIC Repository
+ parameters:
+ - description: The identity of a Near-RT RIC to get information for.
+ explode: true
+ in: path
+ name: ricId
+ required: true
+ schema:
+ type: string
+ nullable: false
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/RicInfo'
+ examples:
+ ric_info:
+ $ref: 'examples.yaml#/examples/RicInfo'
+ description: OK - Near-RT RIC is found OK
+ "404":
+ $ref: 'responses.yaml#/responses/404'
+rics:
+ get:
+ operationId: getRics
+ description: Get all Near-RT RICs that supports a given A1 Policy Type ID
+ summary: Get Near-RT RICs for A1 Policy Type (getRics)
+ tags:
+ - NearRT-RIC Repository
+ parameters:
+ - description: >
+ The identity of an A1 Policy Type. If given, all Near-RT RICs supporting
+ the A1 Policy Type are returned.
+ explode: true
+ in: query
+ name: policyTypeId
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/RicInfoList'
+ examples:
+ ric_info_list:
+ $ref: 'examples.yaml#/examples/RicInfoList'
+ description: OK
+ "404":
+ $ref: 'responses.yaml#/responses/404' \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v3-fragments/schemas.yaml b/a1-policy-management/open-api-fragments/v3-fragments/schemas.yaml
new file mode 100644
index 00000000..86f02a30
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v3-fragments/schemas.yaml
@@ -0,0 +1,310 @@
+schemas:
+ PolicyTypeInformation:
+ description: >-
+ A data tuple to indicate that an identified A1 Policy Type is supported at an identified Near-RT RIC.
+ type: object
+ properties:
+ policyTypeId:
+ description: A1 Policy Type identifier
+ type: string
+ nearRtRicId:
+ $ref: '#/schemas/NearRtRicId'
+ required:
+ - policyTypeId
+ - nearRtRicId
+ example:
+ policyTypeId: STD_QOS2_0.1.0
+ nearRtRicId: ric_g3_2
+ PolicyObjectInformation:
+ description: Information to create an A1 Policy Instance
+ type: object
+ properties:
+ nearRtRicId:
+ description: Identity of the target Near-RT RIC
+ type: string
+ example:
+ 'Near-RT-Ric-ID1'
+ transient:
+ default: false
+ description: >
+ If true, the policy is automatically deleted if the targeted Near-RT RIC restarts
+ or recovers. If false, the A1 Policy Instance remains, and is re-pushed to the targeted
+ Near-RT RIC after a restart or recovery. If false, the A1 Policy Instance is maintained and
+ must be deleted separately in the event of Near-RT RIC restart or recovery. Default is false.
+ nullable: false
+ type: boolean
+ policyId:
+ description: >
+ An optional identity to be used for the new A1 Policy Instance.
+ If this value is present, it must be unique. If not present the new A1
+ Policy Instance will be assigned a newly generated unique ID, and the
+ new ID can be extracted from the 'Location' header in the response.
+ type: string
+ example:
+ 'POLICY-ID1'
+ serviceId:
+ description: the identity of the service owning the policy. This can be
+ used to group the policies (it is possible to get all policies associated
+ to a service). Note that the service does not need to be registered.
+ If the service is registered, the newly created A1 Policy Instance will be
+ subject to the same supervision rules as the the service's other policies.
+ type: string
+ example:
+ 'rApp 1'
+ default: ""
+ policyObject:
+ $ref: '#/schemas/PolicyObject'
+ policyTypeId:
+ description: A1 Policy Type identity
+ type: string
+ example: ORAN_QOS_1.0.0 '(typeName_SemVersion)'
+ required:
+ - nearRtRicId
+ - policyObject
+ - policyTypeId
+ ErrorInformation:
+ description: Problem as defined in https://tools.ietf.org/html/rfc7807
+ properties:
+ detail:
+ description: A human-readable explanation specific to this occurrence of the problem.
+ example: Policy type not found
+ type: string
+ title:
+ description: A specific error name
+ type: string
+ example: Not Found
+ status:
+ description: |
+ The HTTP status code generated by the origin server for this occurrence of the problem.
+ example: 404
+ format: int32
+ type: integer
+ type: object
+ PolicyObject:
+ description: >
+ Policy Object is a JSON representation policy data for an A1 Policy Instance.
+ The schema for this policy data is defined in the corresponding A1 Policy Type.
+ type: object
+ PolicyTypeObject:
+ description: An A1 Policy Type, as defined in O-RAN Alliance A1TD
+ type: object
+ properties:
+ policySchema:
+ $ref: '#/schemas/PolicySchema'
+ statusSchema:
+ $ref: '#/schemas/StatusSchema'
+ required:
+ - policySchema
+ example:
+ policySchema:
+ "$schema": http://json-schema.org/draft-07/schema#
+ title: STD_QOS_0_2_0
+ description: Policy data schema for STD_QOS_0.2.0 A1 Policy Instances.
+ type: object
+ properties:
+ scope:
+ type: object
+ properties:
+ ueId:
+ type: string
+ qosId:
+ type: string
+ additionalProperties: false
+ required:
+ - ueId
+ - qosId
+ qosObjectives:
+ type: object
+ properties:
+ priorityLevel:
+ type: number
+ additionalProperties: false
+ required:
+ - priorityLevel
+ statusSchema:
+ "$schema": http://json-schema.org/draft-07/schema#
+ title: STD_QOS_0.2.0
+ description: Status schema for STD_QOS_0.2.0 A1 Policy Instances.
+ type: object
+ properties:
+ enforceStatus:
+ type: string
+ enforceReason:
+ type: string
+ additionalProperties: false
+ required:
+ - enforceStatus
+ PolicySchema:
+ description: >
+ A schema to define the policy data contents of A1 Policy Instances.
+ Policy data schemas are Policy Type specific.
+ All A1 Policy Instances of an A1 Policy Type should comply with the type's policy data schema.
+ type: object
+ StatusSchema:
+ description: >
+ A schema to define the contents of the status information for A1 Policy Instances.
+ Status schemas are Policy Type specific.
+ All status information for all A1 Policy Instances of an A1 Policy Type should comply
+ with the type's status schema.
+ type: object
+ PolicyStatusObject:
+ description: >
+ A generic policy status object that can be used to transport any policy status.
+ Additionally, a schema for policy status can be defined in the corresponding A1 Policy Type.
+ type: object
+ void:
+ description: Void/empty
+ type: object
+ StatusInfo:
+ properties:
+ status:
+ description: Status text
+ type: string
+ type: object
+ RicInfo:
+ description: Information for a Near-RT RIC
+ properties:
+ ricId:
+ description: Identity of the Near-RT RIC
+ type: string
+ managedElementIds:
+ description: Identities for managed entities
+ items:
+ description: Identity for a managed entity
+ type: string
+ type: array
+ state:
+ description: Represents the state of a Near-RT RIC
+ enum:
+ - UNAVAILABLE
+ - AVAILABLE
+ - SYNCHRONIZING
+ - CONSISTENCY_CHECK
+ type: string
+ policyTypeIds:
+ description: Supported A1 Policy Types
+ items:
+ description: Supported A1 Policy Type ID
+ type: string
+ type: array
+ type: object
+ ServiceRegistrationInfo:
+ description: Information for a service to be registered
+ properties:
+ callbackUrl:
+ description: Callback URL for notifying of Near-RT RIC state changes
+ type: string
+ serviceId:
+ description: Identity of the service
+ type: string
+ keepAliveIntervalSeconds:
+ description: >
+ Keep alive interval for the service. This is used to enable
+ optional heartbeat supervision of the service. If set (> 0) the registered
+ service should regularly invoke a 'keepalive' REST call. When a service
+ fails to invoke this 'keepalive' call within the configured time, the
+ service is considered unavailable. An unavailable service will be automatically
+ deregistered and its policies will be deleted. Value 0 means timeout
+ supervision is disabled.
+ format: int64
+ type: integer
+ required:
+ - serviceId
+ type: object
+ ServiceStatus:
+ description: Information about a previously registered service
+ properties:
+ callbackUrl:
+ description: Callback URL for notifying of Near-RT RIC state changes
+ type: string
+ serviceId:
+ description: Identity of the service
+ type: string
+ keepAliveIntervalSeconds:
+ description: >
+ Keep alive interval (seconds) for the service. This is used to enable
+ optional heartbeat supervision of the service. If set (> 0) the registered
+ service should regularly invoke a 'keepalive' REST call. When a service
+ fails to invoke this 'keepalive' call within the configured time, the
+ service is considered unavailable. An unavailable service will be automatically
+ deregistered and its policies will be deleted. Value 0 means timeout
+ supervision is disabled.
+ format: int64
+ type: integer
+ timeSinceLastActivitySeconds:
+ description: Time (seconds) since last recorded operation by the service
+ format: int64
+ type: integer
+ type: object
+ RicInfoList:
+ description: Collection of Near-RT RIC information objects
+ properties:
+ rics:
+ description: List of Near-RT RIC information objects
+ items:
+ $ref: '#/schemas/RicInfo'
+ type: array
+ type: object
+ NearRtRicId:
+ description: Identity of the Near-RT RIC
+ type: string
+ PolicyInformation:
+ description: >
+ Information tuple for a single A1 Policy Instance.
+ Contains the A1 Policy Instance ID, and the ID of the Near-RT RIC where the policy is created.
+ type: object
+ properties:
+ policyId:
+ description: Identity of the A1 Policy Instance
+ type: string
+ nearRtRicId:
+ $ref: '#/schemas/NearRtRicId'
+ required:
+ - policyId
+ - nearRtRicId
+ ServiceStatusList:
+ properties:
+ serviceList:
+ description: List of Service Status objects, describing a collection of registered services.
+ items:
+ $ref: '#/schemas/ServiceStatus'
+ type: array
+ type: object
+ ServiceCallbackInfo:
+ description: |
+ Information transferred in Service callbacks,
+ if a callback URL was provided for a registered service
+ properties:
+ ricId:
+ description: Identity of a Near-RT RIC
+ type: string
+ eventType:
+ description: >
+ values:
+ AVAILABLE: the Near-RT RIC has become available for A1 Policy management
+ enum:
+ - AVAILABLE
+ type: string
+ required:
+ - eventType
+ - ricId
+ type: object
+ ProblemDetails:
+ description: Object to carry details about a problem in an HTTP response according to IETF RFC 7807
+ type: object
+ properties:
+ type:
+ description: URI reference according to IETF RFC 3986 that identifies the problem type
+ type: string
+ title:
+ description: Human-readable summary of the problem type
+ type: string
+ status:
+ description: HTTP status code
+ type: number
+ detail:
+ description: Human-readable explanation
+ type: string
+ instance:
+ description: URI reference that identifies the specific occurrence of the problem
+ type: string \ No newline at end of file
diff --git a/a1-policy-management/open-api-fragments/v3-fragments/service-api.yaml b/a1-policy-management/open-api-fragments/v3-fragments/service-api.yaml
new file mode 100644
index 00000000..bec1de4d
--- /dev/null
+++ b/a1-policy-management/open-api-fragments/v3-fragments/service-api.yaml
@@ -0,0 +1,178 @@
+keep-alive:
+ put:
+ operationId: keepAliveService
+ description: A registered service should invoke this operation regularly to
+ indicate that it is still alive. If a registered service fails to invoke some operation,
+ or this operation, before the end of a timeout period the service will be deregistered
+ and all its A1 policies wil be removed and the service is deleted.
+ This operation is only intended for registered services. (This timeout can be set or disabled when
+ each service is initially registered). Unregistered services do not need to invoke this operation,
+ since the optional keep-alive monitoring feature can only be enabled for registered services.
+ summary: Heartbeat message from a service (keepAliveService)
+ tags:
+ - Service Registry and Supervision
+ parameters:
+ - explode: false
+ in: path
+ name: serviceId
+ required: true
+ schema:
+ type: string
+ style: simple
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ requestBody:
+ required: false
+ content:
+ application/json:
+ schema:
+ type: string
+ responses:
+ "200":
+ content:
+ 'application/json':
+ schema:
+ type: object
+ description: OK - Service supervision timer refreshed, OK
+ "404":
+ $ref: 'responses.yaml#/responses/404'
+
+services:
+ get:
+ operationId: getServices
+ description: >
+ Get information about all registered services, or a single registered service.
+ If the service ID of a registered service is included in the query, information about that
+ service is returned. Otherwise Information about all registered is returned.
+ This operation does not retrieve information about unregistered services.
+ summary: Get Services (getServices)
+ tags:
+ - Service Registry and Supervision
+ parameters:
+ - description: The identity of the registered service
+ explode: true
+ in: query
+ name: serviceId
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ServiceStatusList'
+ examples:
+ service_status_list:
+ $ref: 'examples.yaml#/examples/ServiceStatusList'
+ description: OK
+ "404":
+ $ref: 'responses.yaml#/responses/404'
+ put:
+ operationId: putService
+ description: >
+ Register a single service, or update a previous registration.
+ Service registration is required to get callbacks about available NearRT RICs
+ and to enable supervision of the service's active status. If a registered
+ service becomes inactive, its policies can be automatically deleted.
+ A1 Policy instances can also be created for unregistered services.
+ If an unregistered service is later registered, the service's policies are
+ retained when the service becomes registered. This feature is optional to use.
+ summary: Register or update a Service (putService)
+ tags:
+ - Service Registry and Supervision
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ServiceRegistrationInfo'
+ required: true
+ responses:
+ "200":
+ content:
+ 'application/json':
+ schema:
+ type: object
+ description: OK - Service updated
+ "201":
+ content:
+ 'application/json':
+ schema:
+ type: object
+ description: Created - Service created
+ "400":
+ $ref: 'responses.yaml#/responses/400'
+ callbacks:
+ RICStatus:
+ "{$request.body#/callback_url}":
+ post:
+ operationId: serviceCallback
+ description: |
+ Callouts to indicate Near-RT RIC status changes relevant for Services.
+ The URL invoked by this callback is provided at Service registration.
+ summary: Callback for Near-RT RIC status (serviceCallback)
+ tags:
+ - Service Registry and Supervision
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/ServiceCallbackInfo'
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: 'schemas.yaml#/schemas/void'
+ description: OK
+ "404":
+ $ref: 'responses.yaml#/responses/404'
+
+service:
+ delete:
+ operationId: deleteService
+ description: >
+ Unregister a registered Service using its service ID.
+ Only registered services can be unregistered. All A1 Policy Instances
+ for the previously registered service will be removed.
+ tags:
+ - Service Registry and Supervision
+ summary: Unregister a Service (deleteService)
+ parameters:
+ - explode: false
+ in: path
+ name: serviceId
+ required: true
+ schema:
+ type: string
+ style: simple
+ - description: Specifies the content type that the client expects to receive in response to the request.
+ Only application/json is allowed.
+ in: header
+ name: Accept
+ schema:
+ type: string
+ example: application/json
+ responses:
+ "204":
+ content:
+ 'application/json':
+ schema:
+ type: object
+ description: No Content - Service unregistered
+ "404":
+ $ref: 'responses.yaml#/responses/404' \ No newline at end of file