Add documentation for PMS 82/113682/3
authorelinuxhenrik <henrik.b.andersson@est.tech>
Thu, 8 Oct 2020 12:36:37 +0000 (14:36 +0200)
committerelinuxhenrik <henrik.b.andersson@est.tech>
Fri, 9 Oct 2020 06:42:26 +0000 (08:42 +0200)
Change-Id: I4b496142f1c21edd9a044b76d35592ba2ec8c083
Issue-ID: CCSDK-2833
Signed-off-by: elinuxhenrik <henrik.b.andersson@est.tech>
docs/architecture/architecture.rst [new file with mode: 0755]
docs/consumedapis/consumedapis.rst [new file with mode: 0755]
docs/guide/developer-guide.rst
docs/humaninterfaces/humaninterfaces.rst [new file with mode: 0644]
docs/index.rst
docs/media/o-ran-onap-integration.png [new file with mode: 0755]
docs/media/yaml_logo.png [new file with mode: 0755]
docs/offeredapis/offeredapis.rst
docs/offeredapis/swagger/pms-api.yaml [new file with mode: 0644]
docs/releasenotes/release-notes.rst [moved from docs/release-notes.rst with 100% similarity]

diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst
new file mode 100755 (executable)
index 0000000..3997950
--- /dev/null
@@ -0,0 +1,33 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+.. Copyright 2020 Nordix Foundation
+.. _architecture:
+
+
+Architecture
+============
+
+************
+Introduction
+************
+
+
+The CCSDK ORAN components provides handling of the O-RAN A1 interface.
+
+
+*********************************************
+Global NBI architecture for Frankfurt release
+*********************************************
+
+Following illustration provides a global view about Non-Real-Time-RIC architecture,
+integration with other ONAP components and API resource/operation provided.
+
+.. image:: ../media/o-ran-onap-integration.png
+   :width: 800pt
+
+
+***************
+Developer Guide
+***************
+
+Technical information about the ORAN components (dependencies, configuration, running & testing) could be found in :ref:`developer_guide`.
+
diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst
new file mode 100755 (executable)
index 0000000..bcf7267
--- /dev/null
@@ -0,0 +1,18 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+.. Copyright 2020 Nordix Foundation
+
+Consumed APIs
+=============
+
+
+Policy Management Service application is interacting with one ONAP API.
+
+*******
+CBS API
+*******
+
+This API is used to get the dynamic configuration of the service, such as available Near-RT RICs.
+
+::
+
+    CBS_GET_ALL
index 1818254..b6d4ce8 100644 (file)
@@ -2,23 +2,26 @@
 .. http://creativecommons.org/licenses/by/4.0
 .. Copyright (C) 2020 Nordix Foundation.
 
+.. _developer_guide:
+
 Developer Guide
 ===============
 
 This document provides a quickstart for developers of the CCSDK ORAN parts.
 
-A1 Adapter
-++++++++++
+Source tree
++++++++++++
 
-TBD
+This application provides CCSDK Policy Management Service and A1 Adapter as main functional resources.
+Each resource is implemented independently in a package corresponding to its name.
 
-The A1 Adapter can be accessed over the REST API. See :ref:`offered_apis` for how to use the API.
+A1 Policy Management Service
+++++++++++++++++++++++++++++
 
+The CCSDK Policy Management Service (PMS) is a Java 11 web application built over Spring Framework.
+Using Spring Boot dependencies, it runs as a standalone application.
 
-A1 Policy Management
-++++++++++++++++++++
-
-The CCSDK Policy Management Service (PMS) provides a REST API for management of policices. It provides support for:
+PMS provides a REST API for management of policices. It provides support for:
 
  * Supervision of clients (R-APPs) to eliminate stray policies in case of failure
  * Consistency monitoring of the SMO view of policies and the actual situation in the RICs
@@ -31,8 +34,31 @@ The CCSDK Policy Management Service (PMS) provides a REST API for management of
 
 The Policy Management Service can be accessed over the REST API. See :ref:`pms_api` for how to use the API.
 
+Dependencies
+------------
+This project uses various frameworks which are managed with Maven
+dependency management tool (see *pom.xml* file at root level) :
+
+- Swagger annotations
+- `Spring Framework <https://github.com/spring-projects/spring-boot>`_
+- `Springfox <https://github.com/springfox/springfox>`_ Automated JSON API documentation for API's built with Spring
+- `Immutable <https://immutables.github.io/>`_ to generate simple, safe and consistent value objects
+- `JSON in Java <https://github.com/stleary/JSON-java>`_ to parse JSON documents into Java objects
+- `Apache Commons Net <https://github.com/apache/commons-net>`_ for network utilities and protocol implementations
+- `DCAE SDK <https://github.com/onap/dcaegen2-services-sdk>`_ to get configuration from CBS
+- `Lombok <https://github.com/rzwitserloot/lombok>`_ to generate code, such as getters and setters
+- `Awaitility <https://github.com/awaitility/awaitility>`_ to test asynchronous functionality
+
+Configuration
+-------------
+
+There are two configuration files for PMS, *config/application_configuration.json* and *config/application.yaml*.
+The first one contains configuration of data needed by the application, such as which Near-RT RICs
+that are available. The second contains logging and security configurations.
+
 Configuration of certs
 ----------------------
+
 The Policy Management Service uses the default keystore and truststore that are built into the container. The paths and passwords for these stores are located in a yaml file:
  oran/a1-policy-management/config/application.yaml
 
@@ -54,3 +80,10 @@ The target paths in the container should not be modified.
 Example docker run command for mounting new files (assuming they are located in the current directory):
 
 `docker run -p 8081:8081 -p 8433:8433 --name=policy-agent-container --network=nonrtric-docker-net --volume "$PWD/new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks" --volume "$PWD/new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks" --volume "$PWD/new_application.yaml:/opt/app/policy-agent/config/application.yaml" o-ran-sc/nonrtric-policy-agent:2.1.0-SNAPSHOT`
+
+A1 Adapter
+++++++++++
+
+TBD
+
+The A1 Adapter can be accessed over the REST API. See :ref:`offered_apis` for how to use the API.
diff --git a/docs/humaninterfaces/humaninterfaces.rst b/docs/humaninterfaces/humaninterfaces.rst
new file mode 100644 (file)
index 0000000..ab7d421
--- /dev/null
@@ -0,0 +1,11 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+.. Copyright 2020 Nordix Foundation
+
+
+Human Interfaces
+================
+
+The NON-RT RIC Control Panel in O-RAN-SC can be used to interact with the Policy Management Service.
+See `NON-RT RIC Control Panel repo <https://gerrit.o-ran-sc.org/r/admin/repos/portal/nonrtric-controlpanel>`_.
+
+Any "Rest Client" application may be used (Postman, ...) to interact with the Policy Management Service application.
index 65db292..613ff56 100644 (file)
@@ -10,6 +10,9 @@ ccsdk/oran
    :maxdepth: 1
    :caption: Contents:
 
-   ./offeredapis/offeredapis.rst
+   ./architecture/architecture.rst
    ./guide/developer-guide.rst
-   ./release-notes.rst
+   ./offeredapis/offeredapis.rst
+   ./consumedapis/consumedapis.rst
+   ./humaninterfaces/humaninterfaces.rst
+   ./releasenotes/release-notes.rst
diff --git a/docs/media/o-ran-onap-integration.png b/docs/media/o-ran-onap-integration.png
new file mode 100755 (executable)
index 0000000..5c66ae6
Binary files /dev/null and b/docs/media/o-ran-onap-integration.png differ
diff --git a/docs/media/yaml_logo.png b/docs/media/yaml_logo.png
new file mode 100755 (executable)
index 0000000..0492eb4
Binary files /dev/null and b/docs/media/yaml_logo.png differ
index 7d32acb..c3a7c95 100644 (file)
@@ -68,12 +68,15 @@ API Table
 .. |swagger-icon| image:: ../media/swagger.png
                   :width: 40px
 
+.. |yaml-icon| image:: ../media/yaml_logo.png
+                  :width: 40px
+
 
 .. csv-table::
-   :header: "API name", "|swagger-icon|"
-   :widths: 10,5
+   :header: "API name", "|swagger-icon|", "|yaml-icon|"
+   :widths: 10,5, 5
 
-   "PMS API", ":download:`link <./swagger/pms-api.json>`"
+   "PMS API", ":download:`link <./swagger/pms-api.json>`", ":download:`link <./swagger/pms-api.yaml>`"
 
 
 .. _pms_api:
diff --git a/docs/offeredapis/swagger/pms-api.yaml b/docs/offeredapis/swagger/pms-api.yaml
new file mode 100644 (file)
index 0000000..ac10f4b
--- /dev/null
@@ -0,0 +1,842 @@
+openapi: 3.0.1
+info:
+  title: A1 Policy management service
+  description: 'The O-RAN Non-RT RIC PolicyAgent provides a REST API for management of policices. It provides support for: -Supervision of clients (R-APPs) to eliminate stray policies in case of failure -Consistency monitoring of the SMO view of policies and the actual situation in the RICs -Consistency monitoring of RIC capabilities (policy types) -Policy configuration. This includes: -One REST API towards all RICs in the network -Query functions that can find all policies in a RIC, all policies owned by a service (R-APP), all policies of a type etc. -Maps O1 resources (ManagedElement) as defined in O1 to the controlling RIC
+    of A1 policices.'
+  version: "1.0"
+servers:
+- url: https://localhost:8433/
+- url: http://localhost:8081/
+tags:
+- name: A1 Policy Management
+  description: Policy Controller
+- name: Health check
+  description: Status Controller
+- name: RIC Repository
+  description: Ric Repository Controller
+- name: Service registry and supervision
+  description: Service Controller
+paths:
+  /policies:
+    get:
+      tags:
+      - A1 Policy Management
+      summary: Query policies
+      operationId: getPoliciesUsingGET
+      parameters:
+      - name: ric
+        in: query
+        description: The name of the Near-RT RIC to get policies for.
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'ric1'
+      - name: service
+        in: query
+        description: The name of the service to get policies for.
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'controlpanel'
+      - name: type
+        in: query
+        description: The name of the policy type to get policies for.
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: '1'
+      responses:
+        200:
+          description: Policies
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/PolicyInfo'
+              examples:
+                OSC:
+                  $ref: '#/components/examples/Policies-OSC'
+                STD:
+                  $ref: '#/components/examples/Policies-STD'
+        404:
+          description: RIC or type not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: RIC not found
+      deprecated: false
+  /policy:
+    get:
+      tags:
+      - A1 Policy Management
+      summary: Returns a policy configuration
+      operationId: getPolicyUsingGET
+      parameters:
+      - name: id
+        in: query
+        description: The identity of the policy instance.
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'e26d76e1-b43f-427e-a3c2-b7c4e05a6431'
+      responses:
+        200:
+          description: Policy found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: object
+              examples:
+                OSC:
+                  $ref: '#/components/examples/Policy-OSC'
+                STD:
+                  $ref: '#/components/examples/Policy-STD'
+        404:
+          description: Policy is not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: 'Could not find policy: e26d76e1-b43f-427e-a3c2-b7c4e05a6431'
+      deprecated: false
+    put:
+      tags:
+      - A1 Policy Management
+      summary: Put a policy
+      operationId: putPolicyUsingPUT
+      parameters:
+      - name: id
+        in: query
+        description: The identity of the policy instance.
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: '73428e58-1670-4972-8498-e7e8f1003631'
+      - name: ric
+        in: query
+        description: The name of the Near-RT RIC where the policy will be created.
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'ric1'
+      - name: service
+        in: query
+        description: The name of the service creating the policy.
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'Service1'
+      - name: transient
+        in: query
+        description: If the policy is transient or not (boolean defaulted to false).
+          A policy is transient if it will be forgotten when the service needs to
+          reconnect to the Near-RT RIC.
+        allowEmptyValue: false
+        schema:
+          type: boolean
+          default: false
+        example: false
+      - name: type
+        in: query
+        description: The name of the policy type. The policy type is mandatory for OSC A1 version and should not be provided for STD A1 version.
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'STD_PolicyModelUnconstrained_0.2.0'
+      requestBody:
+        description: jsonBody
+        content:
+          application/json:
+            schema:
+              type: object
+              example:
+                scope:
+                  qosId: "3"
+                  ueId: "1"
+                statement:
+                  priorityLevel: 1
+        required: true
+      responses:
+        200:
+          description: Policy updated
+        201:
+          description: Policy created
+        404:
+          description: RIC or policy type is not found
+        423:
+          description: RIC is not operational
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: 'Ric is not operational, RIC name:ric1, state:UNAVAILABLE'
+    delete:
+      tags:
+      - A1 Policy Management
+      summary: Delete a policy
+      operationId: deletePolicyUsingDELETE
+      parameters:
+      - name: id
+        in: query
+        description: The identity of the policy instance.
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: '73428e58-1670-4972-8498-e7e8f1003631'
+      responses:
+        200:
+          description: OK
+        204:
+          description: Policy deleted
+        404:
+          description: Policy is not found
+        423:
+          description: RIC is not operational
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: 'Ric is not operational, RIC name:ric1,state:UNAVAILABLE'
+      deprecated: false
+  /policy_ids:
+    get:
+      tags:
+      - A1 Policy Management
+      summary: Query policies, only IDs returned
+      operationId: getPolicyIdsUsingGET
+      parameters:
+      - name: ric
+        in: query
+        description: The name of the Near-RT RIC to get policies for.
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'ric1'
+      - name: service
+        in: query
+        description: The name of the service to get policies for.
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'Service1'
+      - name: type
+        in: query
+        description: The name of the policy type to get policies for.
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: '1'
+      responses:
+        200:
+          description: Policy ids
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: array
+                items:
+                  type: string
+              examples:
+                OSC:
+                  value:
+                    - 73428e58-1670-4972-8498-e7e8f1003631
+                    - 73428e58-1670-4972-8498-e7e8f100363e
+                STD:
+                  value:
+                    - 73428e58-1670-4972-8498-e7e8f1003632
+                    - 73428e58-1670-4972-8498-e7e8f1003634
+        404:
+          description: RIC or type not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: RIC not found
+      deprecated: false
+  /policy_schema:
+    get:
+      tags:
+      - A1 Policy Management
+      summary: Returns one policy type schema definition. Applicable only for OSC Version.
+      operationId: getPolicySchemaUsingGET
+      parameters:
+      - name: id
+        in: query
+        description: The identity of the policy type to get the definition for.
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: '11'
+      responses:
+        200:
+          description: Policy schema
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: object
+              examples:
+                OSC:
+                  value:
+                    $schema: http://json-schema.org/draft-07/schema#
+                    description: QoS policy type
+                    title: "1"
+                    type: object
+                    properties:
+                      scope:
+                        additionalProperties: false
+                        type: object
+                        properties:
+                          qosId:
+                            type: string
+                          ueId:
+                            type: string
+                        required:
+                        - ueId
+                        - qosId
+                      statement:
+                        additionalProperties: false
+                        type: object
+                        properties:
+                          priorityLevel:
+                            type: number
+                        required:
+                        - priorityLevel
+        404:
+          description: Type not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: 'org.oransc.policyagent.exceptions.ServiceException: Could
+                  not find type: 11'
+      deprecated: false
+  /policy_schemas:
+    get:
+      tags:
+      - A1 Policy Management
+      summary: Returns policy type schema definitions
+      operationId: getPolicySchemasUsingGET
+      parameters:
+      - name: ric
+        in: query
+        description: The name of the Near-RT RIC to get the definitions for.
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: ric1
+      responses:
+        200:
+          description: Policy schemas
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: array
+                items:
+                  type: object
+                  properties: {}
+              examples:
+                OSC:
+                  value:
+                    - $schema: http://json-schema.org/draft-07/schema#
+                      description: QoS policy type
+                      title: "1"
+                      type: object
+                      properties:
+                        scope:
+                          additionalProperties: false
+                          type: object
+                          properties:
+                            qosId:
+                              type: string
+                            ueId:
+                              type: string
+                          required:
+                          - ueId
+                          - qosId
+                        statement:
+                          additionalProperties: false
+                          type: object
+                          properties:
+                            priorityLevel:
+                              type: number
+                          required:
+                          - priorityLevel
+        404:
+          description: RIC is not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: 'org.oransc.policyagent.exceptions.ServiceException: Could
+                  not find ric: ric1'
+      deprecated: false
+  /policy_status:
+    get:
+      tags:
+      - A1 Policy Management
+      summary: Returns a policy status
+      operationId: getPolicyStatusUsingGET
+      parameters:
+      - name: id
+        in: query
+        description: The identity of the policy.
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 73428e58-1670-4972-8498-e7e8f100363q
+      responses:
+        200:
+          description: Policy status
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: object
+              examples:
+                OSC:
+                  value:
+                    instance_status: NOT IN EFFECT
+                    has_been_deleted: "false"
+                    created_at: 07/20/2020, 17:15:39
+                STD:
+                  value:
+                    enforceStatus: UNDEFINED
+        404:
+          description: Policy is not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: 'Could not find policy: 73428e58-1670-4972-8498-e7e8f100363q'
+      deprecated: false
+  /policy_types:
+    get:
+      tags:
+      - A1 Policy Management
+      summary: Query policy type names
+      operationId: getPolicyTypesUsingGET
+      parameters:
+      - name: ric
+        in: query
+        description: The name of the Near-RT RIC to get types for.
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'ric11'
+      responses:
+        200:
+          description: Policy type names
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: array
+                items:
+                  type: string
+              examples:
+                OSC:
+                  value:
+                    - "1"
+        404:
+          description: RIC is not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: 'org.oransc.policyagent.exceptions.ServiceException: Could
+                  not find ric: ric11'
+      deprecated: false
+  /ric:
+    get:
+      tags:
+      - RIC Repository
+      summary: Returns the name of a RIC managing one Mananged Element
+      operationId: getRicUsingGET
+      parameters:
+      - name: managedElementId
+        in: query
+        description: The identity of the Managed Element
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'Node 1'
+      responses:
+        200:
+          description: RIC is found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: ric1
+        404:
+          description: RIC is not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: No RIC found
+      deprecated: false
+  /rics:
+    get:
+      tags:
+      - RIC Repository
+      summary: Query Near-RT RIC information
+      operationId: getRicsUsingGET
+      parameters:
+      - name: policyType
+        in: query
+        description: The name of the policy type
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'STD_PolicyModelUnconstrained_0.2.0'
+      responses:
+        200:
+          description: OK
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/RicInfo'
+        404:
+          description: Policy type is not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: Policy type not found
+      deprecated: false
+  /service:
+    put:
+      tags:
+      - Service registry and supervision
+      summary: Register a service
+      operationId: putServiceUsingPUT
+      requestBody:
+        description: registrationInfo
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ServiceRegistrationInfo'
+        required: true
+      responses:
+        200:
+          description: Service updated
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+              example: OK
+        201:
+          description: Service created
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: OK
+        400:
+          description: The ServiceRegistrationInfo is not accepted
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: Missing mandatory parameter 'serviceName'
+        404:
+          description: Not Found
+      deprecated: false
+      x-codegen-request-body-name: registrationInfo
+  /services:
+    get:
+      tags:
+      - Service registry and supervision
+      summary: Returns service information
+      operationId: getServicesUsingGET
+      parameters:
+      - name: name
+        in: query
+        description: The name of the service
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'service1'
+      responses:
+        200:
+          description: OK
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: array
+                example:
+                - serviceName: "service1"
+                  keepAliveIntervalSeconds: 1000
+                  timeSinceLastActivitySeconds: 7
+                  callbackUrl: http://localhost:8080
+                items:
+                  $ref: '#/components/schemas/ServiceStatus'
+        404:
+          description: Service is not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: Service not found
+      deprecated: false
+    delete:
+      tags:
+      - Service registry and supervision
+      summary: Delete a service
+      operationId: deleteServiceUsingDELETE
+      parameters:
+      - name: name
+        in: query
+        description: The name of the service
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'service1'
+      responses:
+        200:
+          description: OK
+        204:
+          description: OK
+        404:
+          description: Service not found
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: 'Could not find service: service1'
+      deprecated: false
+  /services/keepalive:
+    put:
+      tags:
+      - Service registry and supervision
+      summary: Heartbeat from a serice
+      operationId: keepAliveServiceUsingPUT
+      parameters:
+      - name: name
+        in: query
+        description: The name of the service
+        required: true
+        allowEmptyValue: false
+        schema:
+          type: string
+        example: 'service1'
+      responses:
+        200:
+          description: Service supervision timer refreshed, OK
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: OK
+        201:
+          description: Created
+        404:
+          description: The service is not found, needs re-registration
+          content:
+            text/plain;charset=ISO-8859-1:
+              schema:
+                type: string
+                example: 'Could not find service: service1'
+      deprecated: false
+  /status:
+    get:
+      tags:
+      - Health check
+      summary: Returns status and statistics of this service
+      operationId: getStatusUsingGET
+      responses:
+        200:
+          description: Service is living
+          content:
+            '*/*':
+              schema:
+                type: string
+                example: alive
+        404:
+          description: Not Found
+      deprecated: false
+components:
+  schemas:
+    PolicyInfo:
+      title: PolicyInfo
+      type: object
+      properties:
+        id:
+          type: string
+          description: identity of the policy
+        json:
+          type: object
+          properties: {}
+          description: the configuration of the policy
+        lastModified:
+          type: string
+          description: timestamp, last modification time
+        ric:
+          type: string
+          description: identity of the target Near-RT RIC
+        service:
+          type: string
+          description: the name of the service owning the policy
+        type:
+          type: string
+          description: name of the policy type
+    RicInfo:
+      title: RicInfo
+      type: object
+      properties:
+        managedElementIds:
+          type: array
+          description: O1 identities for managed entities
+          items:
+            type: string
+        policyTypes:
+          type: array
+          description: supported policy types
+          items:
+            type: string
+        ricName:
+          type: string
+          description: identity of the ric
+        state:
+          type: string
+          description: state info
+      example:
+      - ricName: ric1
+        managedElementIds:
+          - ME-1
+          - ME-2
+        policyTypes:
+          - '1'
+        state: AVAILABLE
+      - ricName: ric3
+        managedElementIds:
+          - ME-1
+          - ME-2
+        policyTypes:
+          - ''
+        state: AVAILABLE
+      - ricName: ric2
+        managedElementIds:
+          - ME-1
+          - ME-2
+        policyTypes: []
+        state: AVAILABLE
+      - ricName: ric4
+        managedElementIds:
+          - ME-1
+          - ME-2
+        policyTypes:
+          - ''
+        state: AVAILABLE
+    ServiceRegistrationInfo:
+      title: ServiceRegistrationInfo
+      required:
+      - serviceName
+      type: object
+      properties:
+        callbackUrl:
+          type: string
+          description: callback for notifying of RIC synchronization
+        keepAliveIntervalSeconds:
+          type: integer
+          description: keep alive interval for the service. This is a heartbeat supervision
+            of the service, which in regular intevals must invoke a 'keepAlive' REST
+            call. When a service does not invoke this call within the given time,
+            it is considered unavailble. An unavailable service will be automatically
+            deregistered and its policies will be deleted. Value 0 means no timeout
+            supervision.
+          format: int64
+        serviceName:
+          type: string
+          description: identity of the service
+      example:
+        callbackUrl: http://localhost:9080
+        keepAliveIntervalSeconds: 1000
+        serviceName: service1
+    ServiceStatus:
+      title: ServiceStatus
+      type: object
+      properties:
+        callbackUrl:
+          type: string
+          description: callback for notifying of RIC synchronization
+        keepAliveIntervalSeconds:
+          type: integer
+          description: policy keep alive timeout
+          format: int64
+        serviceName:
+          type: string
+          description: identity of the service
+        timeSinceLastActivitySeconds:
+          type: integer
+          description: time since last invocation by the service
+          format: int64
+  examples:
+    Policies-STD:
+      value:
+        - id: a986eb38-aac3-4897-bdf5-0333ea2bf730
+          type: ''
+          ric: ric3
+          json:
+            scope:
+              ueId: ue1
+              groupId: group1
+              sliceId: slice1
+              qosId: qos1
+              cellId: cell1
+            statement:
+              priorityLevel: 5
+          service: controlpanel
+          lastModified: '2020-07-22T12:21:48.157854Z'
+    Policies-OSC:
+      value:
+        - id: 73428e58-1670-4972-8498-e7e8f1003631
+          type: '1'
+          ric: ric1
+          json:
+            scope:
+              qosId: '36'
+              ueId: '1'
+            statement:
+              priorityLevel: 1
+          service: c
+          lastModified: '2020-07-20T17:16:18.244383Z'
+        - id: 73428e58-1670-4972-8498-e7e8f100363e
+          type: '1'
+          ric: ric1
+          json:
+            scope:
+              qosId: '34'
+              ueId: '1'
+            statement:
+              priorityLevel: 1
+          service: controlpanel
+          lastModified: '2020-07-20T17:15:39.320469Z'
+    Policy-STD:
+      value:
+        scope:
+          ueId: ue1
+          groupId: group1
+          sliceId: slice1
+          qosId: qos1
+          cellId: cell1
+        statement:
+          priorityLevel: 5
+    Policy-OSC:
+      value:
+        scope:
+          qosId: '36'
+          ueId: '1'
+        statement:
+          priorityLevel: 1
\ No newline at end of file