Add documentation 23/114923/1
authorelinuxhenrik <henrik.b.andersson@est.tech>
Mon, 16 Nov 2020 08:31:07 +0000 (09:31 +0100)
committerelinuxhenrik <henrik.b.andersson@est.tech>
Mon, 16 Nov 2020 13:02:09 +0000 (14:02 +0100)
Change-Id: Ie27c53fcb38ae75b9771a42dc7dec39f4a1fd672
Issue-ID: CCSDK-2966
Signed-off-by: elinuxhenrik <henrik.b.andersson@est.tech>
23 files changed:
a1-policy-management/api/api.yaml [deleted file]
a1-policy-management/api/api_generated.yaml [deleted file]
docs/.gitignore [new file with mode: 0644]
docs/_static/css/ribbon.css [new file with mode: 0644]
docs/_static/favicon.ico [new file with mode: 0644]
docs/_static/logo_onap_2017.png [new file with mode: 0644]
docs/architecture/architecture.rst [new file with mode: 0644]
docs/conf.py [new file with mode: 0644]
docs/conf.yaml [new file with mode: 0644]
docs/consumedapis/consumedapis.rst [new file with mode: 0644]
docs/guide/developer-guide.rst [new file with mode: 0644]
docs/humaninterfaces/humaninterfaces.rst [new file with mode: 0644]
docs/index.rst [new file with mode: 0644]
docs/media/o-ran-onap-integration.png [new file with mode: 0644]
docs/media/oran_architecture.png [new file with mode: 0644]
docs/media/swagger.png [new file with mode: 0644]
docs/media/yaml_logo.png [new file with mode: 0644]
docs/offeredapis/offeredapis.rst [new file with mode: 0644]
docs/offeredapis/swagger/a1-adapter-api.json [new file with mode: 0644]
docs/offeredapis/swagger/pms-api.json [new file with mode: 0644]
docs/releasenotes/release-notes.rst [new file with mode: 0644]
docs/requirements-docs.txt [new file with mode: 0644]
docs/tox.ini [new file with mode: 0644]

diff --git a/a1-policy-management/api/api.yaml b/a1-policy-management/api/api.yaml
deleted file mode 100644 (file)
index ac10f4b..0000000
+++ /dev/null
@@ -1,842 +0,0 @@
-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
diff --git a/a1-policy-management/api/api_generated.yaml b/a1-policy-management/api/api_generated.yaml
deleted file mode 100644 (file)
index fd7b312..0000000
+++ /dev/null
@@ -1,1341 +0,0 @@
-swagger: '2.0'
-info:
-  description: |-
-    The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policices. 
-    It provides support for:<ul><li>A1 Policy creation and modification.</li><li>Maintaining a view of supported Near-RT RIC policy types </li><li>Supervision of using services (R-APPs). When a service is unavailble, its policies are removed. </li> <li>Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs </li></ul>
-  version: 1.1.0
-  title: A1 Policy management service
-  contact:
-    name: Ericsson Software Technology
-    email: nonrtric@est.tech
-  x-api-id: 60f9a0e7-343f-43bf-9194-d8d65688d465
-  x-audience: external-partner
-host: 'localhost:8081'
-basePath: /
-tags:
-  - name: A1 Policy Management Version 1.0
-    description: Policy Controller
-  - name: A1 Policy Management Version 2.0 (in progress)
-    description: Policy management
-paths:
-  /policies:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Query policies
-      operationId: getPoliciesUsingGET_1
-      produces:
-        - '*/*'
-      parameters:
-        - name: ric
-          in: query
-          description: The name of the Near-RT RIC to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: service
-          in: query
-          description: The name of the service to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: type
-          in: query
-          description: The name of the policy type to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policies
-          schema:
-            type: array
-            items:
-              $ref: '#/definitions/policy_info_v1'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC or type not found
-          schema:
-            type: string
-      deprecated: false
-  /policy:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Returns a policy configuration
-      operationId: getPolicyUsingGET_1
-      produces:
-        - '*/*'
-      parameters:
-        - name: id
-          in: query
-          description: The identity of the policy instance.
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy found
-          schema:
-            type: object
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Policy is not found
-      deprecated: false
-    put:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Put a policy
-      operationId: putPolicyUsingPUT_1
-      consumes:
-        - application/json
-      produces:
-        - '*/*'
-      parameters:
-        - name: id
-          in: query
-          description: The identity of the policy instance.
-          required: true
-          type: string
-          allowEmptyValue: false
-        - in: body
-          name: jsonBody
-          description: jsonBody
-          required: true
-          schema:
-            type: object
-        - name: ric
-          in: query
-          description: The name of the Near-RT RIC where the policy will be created.
-          required: true
-          type: string
-          allowEmptyValue: false
-        - name: service
-          in: query
-          description: The name of the service creating the policy.
-          required: true
-          type: string
-          allowEmptyValue: false
-        - name: transient
-          in: query
-          description: If the policy is transient or not (boolean defaulted to false). A policy is transient if it will be forgotten when the service needs to reconnect to the Near-RT RIC.
-          required: false
-          type: boolean
-          default: false
-          allowEmptyValue: false
-          x-example: false
-        - name: type
-          in: query
-          description: The name of the policy type.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy updated
-        '201':
-          description: Policy created
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC or policy type is not found
-          schema:
-            type: string
-        '423':
-          description: Near-RT RIC is not operational
-          schema:
-            type: string
-      deprecated: false
-    delete:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Delete a policy
-      operationId: deletePolicyUsingDELETE_1
-      produces:
-        - '*/*'
-      parameters:
-        - name: id
-          in: query
-          description: The identity of the policy instance.
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Not used
-        '204':
-          description: Policy deleted
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Policy is not found
-          schema:
-            type: string
-        '423':
-          description: Near-RT RIC is not operational
-          schema:
-            type: string
-      deprecated: false
-  /policy_ids:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: 'Query policies, only policy identities returned'
-      operationId: getPolicyIdsUsingGET_1
-      produces:
-        - '*/*'
-      parameters:
-        - name: ric
-          in: query
-          description: The name of the Near-RT RIC to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: service
-          in: query
-          description: The name of the service to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: type
-          in: query
-          description: The name of the policy type to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy identitiess
-          schema:
-            type: array
-            items:
-              type: string
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC or type not found
-          schema:
-            type: string
-      deprecated: false
-  /policy_schema:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Returns one policy type schema definition
-      operationId: getPolicySchemaUsingGET
-      produces:
-        - '*/*'
-      parameters:
-        - name: id
-          in: query
-          description: The identity of the policy type to get the definition for.
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy schema
-          schema:
-            type: object
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: The policy type is not found
-          schema:
-            type: string
-      deprecated: false
-  /policy_schemas:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Returns policy type schema definitions
-      operationId: getPolicySchemasUsingGET_1
-      produces:
-        - '*/*'
-      parameters:
-        - name: ric
-          in: query
-          description: The name of the Near-RT RIC to get the definitions for.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy schemas
-          schema:
-            type: array
-            items:
-              type: object
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC is not found
-          schema:
-            type: string
-      deprecated: false
-  /policy_status:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Returns a policy status
-      operationId: getPolicyStatusUsingGET_1
-      produces:
-        - '*/*'
-      parameters:
-        - name: id
-          in: query
-          description: The identity of the policy.
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy status
-          schema:
-            type: object
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Policy is not found
-          schema:
-            type: string
-      deprecated: false
-  /policy_types:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Query policy type names
-      operationId: getPolicyTypesUsingGET_1
-      produces:
-        - '*/*'
-      parameters:
-        - name: ric
-          in: query
-          description: The name of the Near-RT RIC to get types for.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy type names
-          schema:
-            type: array
-            items:
-              type: string
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC is not found
-          schema:
-            type: string
-      deprecated: false
-  /ric:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Returns the name of a RIC managing one Mananged Element
-      operationId: getRicUsingGET
-      produces:
-        - '*/*'
-      parameters:
-        - name: managedElementId
-          in: query
-          description: The identity of the Managed Element
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Near-RT RIC is found
-          schema:
-            type: string
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC is not found
-          schema:
-            type: string
-      deprecated: false
-  /rics:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Query Near-RT RIC information
-      operationId: getRicsUsingGET
-      produces:
-        - '*/*'
-      parameters:
-        - name: policyType
-          in: query
-          description: The name of the policy type
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: OK
-          schema:
-            type: array
-            items:
-              $ref: '#/definitions/ric_info_v1'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Policy type is not found
-          schema:
-            type: string
-      deprecated: false
-  /service:
-    put:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Register a service
-      operationId: putServiceUsingPUT_1
-      consumes:
-        - application/json
-      produces:
-        - '*/*'
-      parameters:
-        - in: body
-          name: registrationInfo
-          description: registrationInfo
-          required: true
-          schema:
-            $ref: '#/definitions/service_registration_info_v1'
-      responses:
-        '200':
-          description: Service updated
-          schema:
-            type: string
-        '201':
-          description: Service created
-          schema:
-            type: string
-        '400':
-          description: The ServiceRegistrationInfo is not accepted
-          schema:
-            type: string
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Not Found
-      deprecated: false
-  /services:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Returns service information
-      operationId: getServicesUsingGET_1
-      produces:
-        - '*/*'
-      parameters:
-        - name: name
-          in: query
-          description: The name of the service
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: OK
-          schema:
-            type: array
-            items:
-              $ref: '#/definitions/service_status_v1'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Service is not found
-          schema:
-            type: string
-      deprecated: false
-    delete:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Delete a service
-      operationId: deleteServiceUsingDELETE_1
-      produces:
-        - '*/*'
-      parameters:
-        - name: name
-          in: query
-          description: The name of the service
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: OK
-          schema:
-            type: string
-        '204':
-          description: Service deleted
-          schema:
-            type: string
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Service not found
-          schema:
-            type: string
-      deprecated: false
-  /services/keepalive:
-    put:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Heartbeat from a serice
-      operationId: keepAliveServiceUsingPUT_1
-      consumes:
-        - application/json
-      produces:
-        - '*/*'
-      parameters:
-        - name: name
-          in: query
-          description: The name of the service
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: 'Service supervision timer refreshed, OK'
-          schema:
-            type: string
-        '201':
-          description: Created
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: 'The service is not found, needs re-registration'
-      deprecated: false
-  /status:
-    get:
-      tags:
-        - A1 Policy Management Version 1.0
-      summary: Returns status and statistics of this service
-      operationId: getStatusUsingGET_1
-      produces:
-        - '*/*'
-      responses:
-        '200':
-          description: Service is living
-          schema:
-            type: string
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Not Found
-      deprecated: false
-  /v2/policies:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Query for existing A1 policies
-      description: 'Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.'
-      operationId: getPoliciesUsingGET
-      produces:
-        - application/json
-      parameters:
-        - name: policytype_id
-          in: query
-          description: The identity of the policy type to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: ric_id
-          in: query
-          description: The identity of the Near-RT RIC to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: service_id
-          in: query
-          description: The identity of the service to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policies
-          schema:
-            $ref: '#/definitions/policy_info_list_v2'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: 'Near-RT RIC, policy type or service not found'
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/policy:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Returns a policy configuration
-      operationId: getPolicyUsingGET
-      produces:
-        - application/json
-      parameters:
-        - name: policy_id
-          in: query
-          description: The identity of the policy instance.
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy found
-          schema:
-            $ref: '#/definitions/json_object'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Policy is not found
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-    put:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Create or update a policy
-      operationId: putPolicyUsingPUT
-      consumes:
-        - application/json
-      produces:
-        - application/json
-      parameters:
-        - in: body
-          name: jsonBody
-          description: jsonBody
-          required: true
-          schema:
-            type: object
-        - name: policy_id
-          in: query
-          description: The identity of the policy instance.
-          required: true
-          type: string
-          allowEmptyValue: false
-        - name: policytype_id
-          in: query
-          description: The identity of the policy type.
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: ric_id
-          in: query
-          description: The identity of the Near-RT RIC where the policy will be created.
-          required: true
-          type: string
-          allowEmptyValue: false
-        - name: service_id
-          in: query
-          description: The identity of the service creating the policy.
-          required: true
-          type: string
-          allowEmptyValue: false
-        - name: transient
-          in: query
-          description: If the policy is transient or not (boolean defaulted to false). A policy is transient if it will not be recreated in the Near-RT RIC when it has been lost (for instance due to a restart)
-          required: false
-          type: boolean
-          default: false
-          allowEmptyValue: false
-          x-example: false
-      responses:
-        '200':
-          description: Policy updated
-        '201':
-          description: Policy created
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC or policy type is not found
-          schema:
-            $ref: '#/definitions/error_information'
-        '423':
-          description: Near-RT RIC is not operational
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-    delete:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Delete a policy
-      operationId: deletePolicyUsingDELETE
-      produces:
-        - '*/*'
-      parameters:
-        - name: policy_id
-          in: query
-          description: The identity of the policy instance.
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Not used
-        '204':
-          description: Policy deleted
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Policy is not found
-          schema:
-            $ref: '#/definitions/error_information'
-        '423':
-          description: Near-RT RIC is not operational
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/policy-ids:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: 'Query policies, only policy identities are returned'
-      description: 'Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.'
-      operationId: getPolicyIdsUsingGET
-      produces:
-        - application/json
-      parameters:
-        - name: policytype_id
-          in: query
-          description: The identity of the policy type to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: ric_id
-          in: query
-          description: The identity of the Near-RT RIC to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: service_id
-          in: query
-          description: The identity of the service to get policies for.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy identities
-          schema:
-            $ref: '#/definitions/policy_id_list_v2'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC or type not found
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/policy-schemas:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Returns policy type schema definitions
-      operationId: getPolicySchemasUsingGET
-      produces:
-        - application/json
-      parameters:
-        - name: policytype_id
-          in: query
-          description: 'The identity of the policy type to get the definition for. When this parameter is given, max one schema will be returned'
-          required: true
-          type: string
-          allowEmptyValue: false
-        - name: ric_id
-          in: query
-          description: The identity of the Near-RT RIC to get the definitions for.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy schemas
-          schema:
-            $ref: '#/definitions/policy_schema_list_v2'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC is not found
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/policy-status:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Returns a policy status
-      operationId: getPolicyStatusUsingGET
-      produces:
-        - application/json
-      parameters:
-        - name: policy_id
-          in: query
-          description: The identity of the policy.
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy status
-          schema:
-            $ref: '#/definitions/json_object'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Policy is not found
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/policy-types:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Query policy type identities
-      operationId: getPolicyTypesUsingGET
-      produces:
-        - application/json
-      parameters:
-        - name: ric_id
-          in: query
-          description: The identity of the Near-RT RIC to get types for.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Policy type IDs
-          schema:
-            $ref: '#/definitions/policy_type_id_list_v2'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC is not found
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/ric:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Returns info for a Near-RT RIC
-      description: Either a Near-RT RIC identity or a Mananged Element identity can be specified.<br>The intention with Mananged Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).
-      operationId: getRicUsingGET_1
-      produces:
-        - application/json
-      parameters:
-        - name: managed_element_id
-          in: query
-          description: 'The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.'
-          required: false
-          type: string
-          allowEmptyValue: false
-        - name: ric_id
-          in: query
-          description: The identity of a Near-RT RIC to get information for.
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Near-RT RIC is found
-          schema:
-            $ref: '#/definitions/ric_info_v2'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Near-RT RIC is not found
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/rics:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Query Near-RT RIC information
-      description: The call returns all Near-RT RICs that supports a given policy type identity
-      operationId: getRicsUsingGET_1
-      produces:
-        - application/json
-      parameters:
-        - name: policytype_id
-          in: query
-          description: 'The identity of a policy type. If given, all Near-RT RICs supporteing the policy type are returned'
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: OK
-          schema:
-            $ref: '#/definitions/ric_info_list_v2'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Policy type is not found
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/services:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Returns service information
-      description: Either information about a registered service with given identity or all registered services are returned.
-      operationId: getServicesUsingGET
-      produces:
-        - application/json
-      parameters:
-        - name: service_id
-          in: query
-          description: The identity of the service
-          required: false
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: OK
-          schema:
-            $ref: '#/definitions/service_list_v2'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Service is not found
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-    put:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Register a service
-      description: 'Registering a service is needed to:<ul><li>Get callbacks.</li><li>Activate supervision of the service. If a service is inactive, its policies will be deleted.</li></ul>'
-      operationId: putServiceUsingPUT
-      consumes:
-        - application/json
-      produces:
-        - '*/*'
-      parameters:
-        - in: body
-          name: registrationInfo
-          description: registrationInfo
-          required: true
-          schema:
-            $ref: '#/definitions/service_registration_info_v2'
-      responses:
-        '200':
-          description: Service updated
-          schema:
-            type: object
-        '201':
-          description: Service created
-          schema:
-            type: object
-        '400':
-          description: The ServiceRegistrationInfo is not accepted
-          schema:
-            $ref: '#/definitions/error_information'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Not Found
-      deprecated: false
-    delete:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Unregister a service
-      operationId: deleteServiceUsingDELETE
-      produces:
-        - '*/*'
-      parameters:
-        - name: service_id
-          in: query
-          description: The idenitity of the service
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: Not used
-        '204':
-          description: Service unregistered
-          schema:
-            type: object
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Service not found
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/services/keepalive:
-    put:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Heartbeat indicates that the service is running
-      operationId: keepAliveServiceUsingPUT
-      consumes:
-        - application/json
-      produces:
-        - '*/*'
-      parameters:
-        - name: service_id
-          in: query
-          description: The identity of the service
-          required: true
-          type: string
-          allowEmptyValue: false
-      responses:
-        '200':
-          description: 'Service supervision timer refreshed, OK'
-          schema:
-            type: object
-        '201':
-          description: Created
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: 'The service is not found, needs re-registration'
-          schema:
-            $ref: '#/definitions/error_information'
-      deprecated: false
-  /v2/status:
-    get:
-      tags:
-        - A1 Policy Management Version 2.0 (in progress)
-      summary: Returns status and statistics of this service
-      operationId: getStatusUsingGET
-      produces:
-        - application/json
-      responses:
-        '200':
-          description: Service is living
-          schema:
-            $ref: '#/definitions/status_info_v2'
-        '401':
-          description: Unauthorized
-        '403':
-          description: Forbidden
-        '404':
-          description: Not Found
-      deprecated: false
-definitions:
-  Mono«ResponseEntity«object»»:
-    type: object
-    title: Mono«ResponseEntity«object»»
-  Mono«ResponseEntity«string»»:
-    type: object
-    title: Mono«ResponseEntity«string»»
-  error_information:
-    type: object
-    properties:
-      detail:
-        type: string
-        example: Policy type not found
-        description: ' A human-readable explanation specific to this occurrence of the problem.'
-      status:
-        type: integer
-        format: int32
-        example: 503
-        description: 'The HTTP status code generated by the origin server for this occurrence of the problem. '
-    title: error_information
-    description: 'Problem as defined in https://tools.ietf.org/html/rfc7807'
-  json_object:
-    type: object
-    title: json_object
-    description: A JSON object defining the configuration of the policy. The schema is defined by the Policy Type.
-  policy_id_list_v2:
-    type: object
-    properties:
-      policy_ids:
-        type: array
-        description: Policy identities
-        items:
-          type: string
-    title: policy_id_list_v2
-    description: A list of policy identities
-  policy_info_list_v2:
-    type: object
-    properties:
-      policies:
-        type: array
-        description: List of policy information
-        items:
-          $ref: '#/definitions/policy_info_v2'
-    title: policy_info_list_v2
-    description: List of policy information
-  policy_info_v1:
-    type: object
-    properties:
-      id:
-        type: string
-        description: identity of the policy
-      json:
-        type: object
-        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
-    title: policy_info_v1
-  policy_info_v2:
-    type: object
-    properties:
-      last_modified:
-        type: string
-        description: 'timestamp, last modification time'
-      policy_data:
-        type: object
-        description: the configuration of the policy
-      policy_id:
-        type: string
-        description: identity of the policy
-      policy_type_id:
-        type: string
-        description: name of the policy type
-      ric_id:
-        type: string
-        description: identity of the target Near-RT RIC
-      service_id:
-        type: string
-        description: the name of the service owning the policy
-    title: policy_info_v2
-    description: Information for one A1-P Policy
-  policy_schema_list_v2:
-    type: object
-    properties:
-      policy_schemas:
-        type: array
-        description: 'Policy type json schemas. The schema is a json object following http://json-schema.org/draft-07/schema'
-        items:
-          type: object
-    title: policy_schema_list_v2
-    description: Policy type json schemas
-  policy_type_id_list_v2:
-    type: object
-    properties:
-      policy_type_ids:
-        type: array
-        description: Policy type identities
-        items:
-          type: string
-    title: policy_type_id_list_v2
-    description: Information about policy types
-  ric_info_list_v2:
-    type: object
-    properties:
-      rics:
-        type: array
-        description: List of Near-RT RIC information
-        items:
-          $ref: '#/definitions/ric_info_v2'
-    title: ric_info_list_v2
-    description: List of Near-RT RIC information
-  ric_info_v1:
-    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 Near-RT RIC
-      state:
-        type: string
-        description: state info
-    title: ric_info_v1
-  ric_info_v2:
-    type: object
-    properties:
-      managed_element_ids:
-        type: array
-        description: O1 identities for managed entities
-        items:
-          type: string
-      policy_type_ids:
-        type: array
-        description: supported policy types
-        items:
-          type: string
-      ric_id:
-        type: string
-        description: identity of the Near-RT RIC
-      state:
-        type: string
-        description: |-
-          State for the Near-RT RIC, values: 
-          UNAVAILABLE: The Near-RT RIC is not avialable, information may be inconsistent 
-          AVAILABLE: The normal state. Policies can be configured. +
-          SYNCHRONIZING: The Policy Management Service is synchronizing the view of the Near-RT RIC. Policies cannot be configured. 
-          CONSISTENCY_CHECK: A consistency check between the Policy Management Service and the Near-RT RIC. Policies cannot be configured.
-        enum:
-          - UNAVAILABLE
-          - AVAILABLE
-          - SYNCHRONIZING
-          - CONSISTENCY_CHECK
-    title: ric_info_v2
-    description: Information for a Near-RT RIC
-  service_list_v2:
-    type: object
-    properties:
-      service_list:
-        type: array
-        description: List of service information
-        items:
-          $ref: '#/definitions/service_status_v2'
-    title: service_list_v2
-    description: List of service information
-  service_registration_info_v1:
-    type: object
-    properties:
-      callbackUrl:
-        type: string
-        description: callback for notifying of RIC synchronization
-      keepAliveIntervalSeconds:
-        type: integer
-        format: int64
-        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.'
-      serviceName:
-        type: string
-    title: service_registration_info_v1
-  service_registration_info_v2:
-    type: object
-    required:
-      - service_id
-    properties:
-      callback_url:
-        type: string
-        description: callback for notifying of RIC synchronization
-      keep_alive_interval_seconds:
-        type: integer
-        format: int64
-        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.'
-      service_id:
-        type: string
-        description: identity of the service
-    title: service_registration_info_v2
-    description: Information for one service
-  service_status_v1:
-    type: object
-    properties:
-      callbackUrl:
-        type: string
-        description: callback for notifying of RIC synchronization
-      keepAliveIntervalSeconds:
-        type: integer
-        format: int64
-        description: policy keep alive timeout
-      serviceName:
-        type: string
-        description: identity of the service
-      timeSinceLastActivitySeconds:
-        type: integer
-        format: int64
-        description: time since last invocation by the service
-    title: service_status_v1
-  service_status_v2:
-    type: object
-    properties:
-      callback_url:
-        type: string
-        description: callback for notifying of RIC synchronization
-      keep_alive_interval_seconds:
-        type: integer
-        format: int64
-        description: policy keep alive timeout
-      service_id:
-        type: string
-        description: identity of the service
-      time_since_last_activity_seconds:
-        type: integer
-        format: int64
-        description: time since last invocation by the service
-    title: service_status_v2
-  status_info_v2:
-    type: object
-    properties:
-      status:
-        type: string
-        description: status text
-    title: status_info_v2
-  void:
-    type: object
-    title: void
-    description: Void/empty
-
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644 (file)
index 0000000..43ca5b6
--- /dev/null
@@ -0,0 +1,3 @@
+/.tox
+/_build/*
+/__pycache__/*
diff --git a/docs/_static/css/ribbon.css b/docs/_static/css/ribbon.css
new file mode 100644 (file)
index 0000000..6008cb1
--- /dev/null
@@ -0,0 +1,63 @@
+.ribbon {
+  z-index: 1000;
+  background-color: #a00;
+  overflow: hidden;
+  white-space: nowrap;
+  position: fixed;
+  top: 25px;
+  right: -50px;
+  -webkit-transform: rotate(45deg);
+     -moz-transform: rotate(45deg);
+      -ms-transform: rotate(45deg);
+       -o-transform: rotate(45deg);
+          transform: rotate(45deg);
+  -webkit-box-shadow: 0 0 10px #888;
+     -moz-box-shadow: 0 0 10px #888;
+          box-shadow: 0 0 10px #888;
+
+}
+
+.ribbon a {
+  border: 1px solid #faa;
+  color: #fff;
+  display: block;
+  font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif;
+  margin: 1px 0;
+  padding: 10px 50px;
+  text-align: center;
+  text-decoration: none;
+  text-shadow: 0 0 5px #444;
+  transition: 0.5s;
+}
+
+.ribbon a:hover {
+  background: #c11;
+  color: #fff;
+}
+
+
+/* override table width restrictions */
+@media screen and (min-width: 767px) {
+
+   .wy-table-responsive table td, .wy-table-responsive table th {
+      /* !important prevents the common CSS stylesheets from overriding
+         this as on RTD they are loaded after this stylesheet */
+      white-space: normal !important;
+   }
+
+   .wy-table-responsive {
+      overflow: visible !important;
+   }
+}
+
+@media screen and (max-width: 767px) {
+    .wy-table-responsive table td {
+        white-space: nowrap;
+    }
+}
+
+/* fix width of the screen */
+
+.wy-nav-content {
+    max-width: none;
+}
diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico
new file mode 100644 (file)
index 0000000..cb712eb
Binary files /dev/null and b/docs/_static/favicon.ico differ
diff --git a/docs/_static/logo_onap_2017.png b/docs/_static/logo_onap_2017.png
new file mode 100644 (file)
index 0000000..5d064f4
Binary files /dev/null and b/docs/_static/logo_onap_2017.png differ
diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst
new file mode 100644 (file)
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/conf.py b/docs/conf.py
new file mode 100644 (file)
index 0000000..29923a0
--- /dev/null
@@ -0,0 +1,34 @@
+from docs_conf.conf import *
+
+branch = 'latest'
+master_doc = 'index'
+
+linkcheck_ignore = [
+    'http://localhost',
+]
+
+extensions = ['sphinx_tabs.tabs', 'sphinxcontrib.redoc',]
+
+redoc = [
+            {
+                'name': 'PMS API',
+                'page': 'offeredapis/pms-api',
+                'spec': './offeredapis/swagger/pms-api.json',
+                'embed': True,
+            },
+            {
+                'name': 'A1 ADAPTER API',
+                'page': 'offeredapis/a1-adapter-api',
+                'spec': './offeredapis/swagger/a1-adapter-api.json',
+                'embed': True,
+            }
+        ]
+
+redoc_uri = 'https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js'
+
+intersphinx_mapping = {}
+
+html_last_updated_fmt = '%d-%b-%y %H:%M'
+
+def setup(app):
+    app.add_css_file("css/ribbon.css")
diff --git a/docs/conf.yaml b/docs/conf.yaml
new file mode 100644 (file)
index 0000000..ab59281
--- /dev/null
@@ -0,0 +1,7 @@
+---
+project_cfg: onap
+project: onap
+
+# Change this to ReleaseBranchName to modify the header
+default-version: latest
+#
diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst
new file mode 100644 (file)
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
diff --git a/docs/guide/developer-guide.rst b/docs/guide/developer-guide.rst
new file mode 100644 (file)
index 0000000..f067a3f
--- /dev/null
@@ -0,0 +1,95 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. 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.
+
+Source tree
++++++++++++
+
+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.
+
+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.
+
+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
+ * 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.
+
+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
+
+There is also Policy Management Service's own cert in the default truststore for mocking purposes and unit-testing
+(ApplicationTest.java).
+
+The default keystore, truststore, and application.yaml files can be overridden by mounting new files using the "volumes"
+field of docker-compose or docker run command.
+
+Assuming that the keystore, truststore, and application.yaml files are located in the same directory as docker-compose,
+the volumes field should have these entries: ::
+
+   `volumes:`
+      `- ./new_keystore.jks:/opt/app/policy-agent/etc/cert/keystore.jks:ro`
+
+      `- ./new_truststore.jks:/opt/app/policy-agent/etc/cert/truststore.jks:ro`
+
+      `- ./new_application.yaml:/opt/app/policy-agent/config/application.yaml:ro`
+
+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 (Internal)
++++++++++++++++++++++
+
+The O-RAN A1 Adapter provides an internal REST CONF API for management of A1 policices, useful for test and verification.
+
+The A1 Adapter can be accessed over the REST CONF API. See :ref:`a1_adapter_api` 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.
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644 (file)
index 0000000..613ff56
--- /dev/null
@@ -0,0 +1,18 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2020 Nordix Foundation.
+.. _master_index:
+
+ccsdk/oran
+----------
+
+.. toctree::
+   :maxdepth: 1
+   :caption: Contents:
+
+   ./architecture/architecture.rst
+   ./guide/developer-guide.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 100644 (file)
index 0000000..5c66ae6
Binary files /dev/null and b/docs/media/o-ran-onap-integration.png differ
diff --git a/docs/media/oran_architecture.png b/docs/media/oran_architecture.png
new file mode 100644 (file)
index 0000000..3f99e09
Binary files /dev/null and b/docs/media/oran_architecture.png differ
diff --git a/docs/media/swagger.png b/docs/media/swagger.png
new file mode 100644 (file)
index 0000000..f5a9e0c
Binary files /dev/null and b/docs/media/swagger.png differ
diff --git a/docs/media/yaml_logo.png b/docs/media/yaml_logo.png
new file mode 100644 (file)
index 0000000..0492eb4
Binary files /dev/null and b/docs/media/yaml_logo.png differ
diff --git a/docs/offeredapis/offeredapis.rst b/docs/offeredapis/offeredapis.rst
new file mode 100644 (file)
index 0000000..14fb881
--- /dev/null
@@ -0,0 +1,83 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+   International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2020 Nordix Foundation
+
+.. _offered_apis:
+
+
+Offered APIs
+============
+
+Introduction
+************
+
+The north bound REST API of the Policy Management Service provides convenient methods to handle policies.
+
+
+Global ORAN architecture
+************************
+
+Following illustration provides a global view about **ORAN** architecture,
+integration with other ONAP components and API resource/operation provided.
+
+.. image:: ../media/oran_architecture.png
+   :width: 500pt
+
+
+API Table
+*********
+
+.. |swagger-icon| image:: ../media/swagger.png
+                  :width: 40px
+
+.. csv-table::
+   :header: "API name", "|swagger-icon|"
+   :widths: 10,5
+
+   "PMS API", ":download:`link <./swagger/pms-api.json>`"
+   "A1 ADAPTER API (Internal)", ":download:`link <./swagger/a1-adapter-api.json>`"
+
+
+.. _pms_api:
+
+PMS API
+.......
+`PMS API <./pms-api.html>`_
+
+.. _a1_adapter_api:
+
+A1 ADAPTER API
+..............
+`A1 ADAPTER API (Internal) <./a1-adapter-api.html>`_
+
+
+API Version
+***********
+
+APIs are described with a  state version with "v" following the API Name,
+e.g.:  ``v2/policy``.
+The schema associated with a REST API must have its version number aligned
+with that of the REST API.
+
+The version number has major, minor and revision numbers. E.g. v1.0.0
+The version number (without the revision number) is held in the URI.
+
+The major version number is incremented for an incompatible change.
+The minor version number is incremented for a compatible change.
+For minor modifications of the API, version numbering must not be updated,
+provided the following  backward compatibility rules are respected:
+
+- New elements in a data type must be optional (``minOccurs=0``)
+- Changes in the cardinality of an attribute in a data type must be from
+  mandatory to optional or from lower to greater
+- New attributes defined in an element must be optional (absence of
+  ``use="required"``).
+- If new enumerated values are included, the former ones and its meaning must
+  be kept.
+- If new operations are added, the existing operations must be kept
+- New parameters added to existing operations must be optional and existing
+  parameters must be kept
+
+For major modifications of the API, not backward compatible and forcing client
+implementations to be changed, the version number must be updated.
diff --git a/docs/offeredapis/swagger/a1-adapter-api.json b/docs/offeredapis/swagger/a1-adapter-api.json
new file mode 100644 (file)
index 0000000..1295127
--- /dev/null
@@ -0,0 +1,378 @@
+{
+  "apiVersion": "1.0.0",
+  "swagger": "2.0",
+  "basePath": "/",
+    "info": {
+        "x-audience": "external-partner",
+        "contact": {
+            "name": "Ericsson Software Technology",
+            "email": "nonrtric@est.tech"
+        },
+        "description": "The O-RAN A1 Adapter provides an internal REST CONF API for management of A1 policices, useful for test and verification. <b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html should be used!",
+        "title": "A1 Adapter",
+        "version": "1.1.0"
+    },
+  "paths": {
+      "/restconf/operations/A1-ADAPTER-API:putA1Policy": {"post": {
+          "summary": "Create or update a policy",
+          "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html PUT /policy method should be used!",
+          "nickname": "putA1Policy",
+          "produces": "application/json",
+          "responses": {
+              "200": {
+                  "schema": {"$ref": "#/models/(putA1Policy)output"},
+                  "description": "Policy created/updated",
+                  "examples": {
+                      "application/json": {
+                          "A1-ADAPTER-API:body": {},
+                          "A1-ADAPTER-API:http-status": 200
+                      }
+                  }
+              }
+          },
+          "parameters": [
+            {
+                "schema": {"$ref": "#/models/(putA1Policy)input"},
+                "in": "body",
+                "name": null,
+                "description": null,
+                "required": false
+            }
+          ]
+        }
+    },
+      "/operations/A1-ADAPTER-API:getA1Policy": {"post": {
+          "summary": "Get policy configuration/s",
+          "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html GET /policy method should be used!",
+          "nickname": "getA1Policy",
+          "produces": "application/json",
+          "responses": {
+              "200": {
+                  "schema": {"$ref": "#/models/(getA1Policy)output"},
+                  "description": "Policy found",
+                  "examples": {
+                      "application/json": {
+                          "A1-ADAPTER-API:body": {
+                              "id": "Policy 1",
+                              "json": {
+                                "scope": {
+                                  "ueId": "UE1 ",
+                                  "cellId": "Cell 1"
+                                },
+                                "qosObjectives": {
+                                  "gfbr": 319.5,
+                                  "mfbr": 782.75,
+                                  "priorityLevel": 268.5,
+                                  "pdb": 44.0
+                                },
+                                "qoeObjectives": {
+                                  "qoeScore": 329.0,
+                                  "initialBuffering": 27.75,
+                                  "reBuffFreq": 539.0,
+                                  "stallRatio": 343.0
+                                },
+                                "resources": []
+                              },
+                              "ownerServiceName": "Service 1",
+                              "ric": "ric1",
+                              "type": "STD_PolicyModelUnconstrained_0.2.0",
+                              "lastModified": "Wed, 01 Apr 2020 07:45:45 GMT"
+                          },
+                          "A1-ADAPTER-API:http-status": 200
+                      }
+                  }
+              }
+          },
+          "parameters": [
+            {
+                "schema": {"$ref": "#/models/(getA1Policy)input"},
+                "in": "body",
+                "name": null,
+                "description": null,
+                "required": false
+            }
+          ]
+        }
+    },
+      "/restconf/operations/A1-ADAPTER-API:getA1PolicyStatus": {"post": {
+          "summary": "Get a policy status",
+          "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html GET /policy-status method should be used!",
+          "nickname": "getA1PolicyStatus",
+          "produces": "application/json",
+          "responses": {
+              "200": {
+                  "schema": {"$ref": "#/models/(getA1PolicyStatus)output"},
+                  "description": "Policy status",
+                  "examples": {
+                      "application/json": {
+                          "A1-ADAPTER-API:body": {
+                              "enforceStatus": "UNDEFINED"
+                          },
+                          "A1-ADAPTER-API:http-status": 200
+                      }
+                  }
+              }
+          },
+          "parameters": [
+            {
+                "schema": {"$ref": "#/models/(getA1PolicyStatus)input"},
+                "in": "body",
+                "name": null,
+                "description": null,
+                "required": false
+            }
+          ]
+        }
+    },
+      "/restconf/operations/A1-ADAPTER-API:getA1PolicyType": {"post": {
+          "summary": "Get a policy type schema definition",
+          "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html GET /policy-types method should be used!",
+          "nickname": "getA1PolicyType",
+          "produces": "application/json",
+          "responses": {
+              "200": {
+                  "schema": {"$ref": "#/models/(getA1PolicyType)output"},
+                  "description": "Policy schema",
+                  "examples": {
+                      "application/json": {
+                          "A1-ADAPTER-API:body": {
+                              "$schema": "http://json-schema.org/draft-07/schema#",
+                              "title": "Example_QoETarget_1.0.0",
+                              "description": "Example QoE Target policy type",
+                              "type": "object",
+                              "properties": {
+                                "scope": {
+                                  "type": "object",
+                                  "properties": {
+                                    "ueId": {
+                                      "type": "string"
+                                    },
+                                    "sliceId": {
+                                      "type": "string"
+                                    },
+                                    "qosId": {
+                                      "type": "string"
+                                    },
+                                    "cellId": {
+                                      "type": "string"
+                                    }
+                                  },
+                                  "additionalProperties": false,
+                                  "required": [
+                                    "ueId",
+                                    "sliceId"
+                                  ]
+                                },
+                                "statement": {
+                                  "type": "object",
+                                  "properties": {
+                                    "qoeScore": {
+                                      "type": "number"
+                                    },
+                                    "initialBuffering": {
+                                      "type": "number"
+                                    },
+                                    "reBuffFreq": {
+                                      "type": "number"
+                                    },
+                                    "stallRatio": {
+                                      "type": "number"
+                                    }
+                                  },
+                                  "minProperties": 1,
+                                  "additionalProperties": false
+                                }
+                              }
+                          },
+                          "A1-ADAPTER-API:http-status": 200
+                      }
+                  }
+              }
+          },
+          "parameters": [
+            {
+                "schema": {"$ref": "#/models/(getA1PolicyType)input"},
+                "in": "body",
+                "name": null,
+                "description": null,
+                "required": false
+            }
+          ]
+        }
+    },
+      "/restconf/operations/A1-ADAPTER-API:deleteA1Policy": {"post": {
+          "summary": "Delete a policy",
+          "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html DELETE /policy method should be used!",
+          "nickname": "deleteA1Policy",
+          "produces": "application/json",
+          "responses": {
+              "200": {
+                  "schema": {"$ref": "#/models/(deleteA1Policy)output"},
+                  "description": "Policy deleted",
+                  "examples": {
+                      "application/json": {
+                          "A1-ADAPTER-API:body": {},
+                          "A1-ADAPTER-API:http-status": 200
+                      }
+                  }
+              }
+          },
+          "parameters": [
+            {
+                "schema": {"$ref": "#/models/(deleteA1Policy)input"},
+                "in": "body",
+                "name": null,
+                "description": null,
+                "required": false
+            }
+          ]
+        }
+    }
+  },
+  "models": {
+    "(putA1Policy)input": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:near-rt-ric-url": {
+          "required": false,
+          "type": "Some near-rt-ric-url",
+          "example": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000"
+        },
+        "A1-ADAPTER-API:body": {
+          "required": false,
+          "type": "Some body",
+          "example": {
+              "blocking_rate":20,
+              "enforce":true,
+              "trigger_threshold":10,
+              "window_length":10
+          }
+        }
+      },
+      "id": "(putA1Policy)input"
+    },
+    "(putA1Policy)output": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:body": {
+          "required": false,
+          "type": "Some body"
+        },
+        "A1-ADAPTER-API:http-status": {
+          "required": false,
+          "type": "-2147483648"
+        }
+      },
+      "id": "(putA1Policy)output"
+    },
+    "(getA1Policy)input": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:near-rt-ric-url": {
+          "required": false,
+          "type": "Some near-rt-ric-url",
+          "example": "http://localhost:8081/policy?id=Policy 1"
+        }
+      },
+      "id": "(getA1Policy)input"
+    },
+    "(getA1Policy)output": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:body": {
+          "required": false,
+          "type": "object"        },
+        "A1-ADAPTER-API:http-status": {
+          "required": false,
+          "type": "-2147483648"
+        }
+      },
+      "id": "(getA1Policy)output"
+    },
+    "(getA1PolicyStatus)input": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:near-rt-ric-url": {
+          "required": false,
+          "type": "Some near-rt-ric-url",
+          "example": "http://ricsim_g2_1:8085/A1-P/v1/policies/5000/status"
+        }
+      },
+      "id": "(getA1PolicyStatus)input"
+    },
+    "(getA1PolicyStatus)output": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:body": {
+          "required": false,
+          "type": "Some body"
+        },
+        "A1-ADAPTER-API:http-status": {
+          "required": false,
+          "type": "-2147483648"
+        }
+      },
+      "id": "(getA1PolicyStatus)output"
+    },
+    "(getA1PolicyType)input": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:near-rt-ric-url": {
+          "required": false,
+          "type": "Some near-rt-ric-url",
+          "example": "http://nearRtRic-sim1:8085/a1-p/policytypes/11"
+        }
+      },
+      "id": "(getA1PolicyType)input"
+    },
+    "(getA1PolicyType)output": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:body": {
+          "required": false,
+          "type": "Some body"
+        },
+        "A1-ADAPTER-API:http-status": {
+          "required": false,
+          "type": "-2147483648"
+        }
+      },
+      "id": "(getA1PolicyType)output"
+    },
+    "(deleteA1Policy)input": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:near-rt-ric-url": {
+          "required": false,
+          "type": "Some near-rt-ric-url",
+          "example": "http://localhost:8282/restconf/operations/A1-ADAPTER-API:deleteA1Policy"
+        }
+      },
+      "id": "(deleteA1Policy)input"
+    },
+    "(deleteA1Policy)output": {
+      "$schema": "http://json-schema.org/draft-04/schema",
+      "type": "object",
+      "properties": {
+        "A1-ADAPTER-API:body": {
+          "required": false,
+          "type": "Some body"
+        },
+        "A1-ADAPTER-API:http-status": {
+          "required": false,
+          "type": "-2147483648"
+        }
+      },
+      "id": "(deleteA1Policy)output"
+    }
+  }
+}
\ No newline at end of file
diff --git a/docs/offeredapis/swagger/pms-api.json b/docs/offeredapis/swagger/pms-api.json
new file mode 100644 (file)
index 0000000..1837e09
--- /dev/null
@@ -0,0 +1,1259 @@
+{
+  "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
diff --git a/docs/releasenotes/release-notes.rst b/docs/releasenotes/release-notes.rst
new file mode 100644 (file)
index 0000000..c46e7ad
--- /dev/null
@@ -0,0 +1,66 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2020 Nordix Foundation.
+
+=============
+Release-Notes
+=============
+
+
+This document provides the release notes for the release of the different parts of the ORAN project.
+
+.. contents::
+   :depth: 3
+   :local:
+
+
+Version history Policy Management Service
+=========================================
+
++------------+----------+------------+----------------+
+| **Date**   | **Ver.** | **Author** | **Comment**    |
+|            |          |            |                |
++------------+----------+------------+----------------+
+| 2020-09-10 | 1.0.0    | Dan Timony | First version  |
+|            |          |            | Guilin Release |
++------------+----------+------------+----------------+
+
+
+Summary
+-------
+First version.
+
+
+Version history A1 Adapter
+==========================
+
++------------+----------+------------+----------------+
+| **Date**   | **Ver.** | **Author** | **Comment**    |
+|            |          |            |                |
++------------+----------+------------+----------------+
+| 2019-09-10 | 1.0.0    | Dan Timony | First version  |
+|            |          |            | Guilin Release |
++------------+----------+------------+----------------+
+
+
+Release Data
+============
+
+Guilin
+------
++-----------------------------+-----------------------------------------------------+
+| **Project**                 | CCSDK ORAN                                          |
+|                             |                                                     |
++-----------------------------+-----------------------------------------------------+
+| **Repo/commit-ID**          | ccsdk-oran/ec3829493c0b71c5e5908a430edd1e493504178e |
+|                             |                                                     |
++-----------------------------+-----------------------------------------------------+
+| **Release designation**     | Guilin                                              |
+|                             |                                                     |
++-----------------------------+-----------------------------------------------------+
+| **Release date**            | 2020-09-10                                          |
+|                             |                                                     |
++-----------------------------+-----------------------------------------------------+
+| **Purpose of the delivery** | Introducing ORAN                                    |
+|                             |                                                     |
++-----------------------------+-----------------------------------------------------+
diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt
new file mode 100644 (file)
index 0000000..aeda4ee
--- /dev/null
@@ -0,0 +1,17 @@
+tox
+Sphinx>=2,<4
+doc8
+docutils
+setuptools
+six
+sphinx-tabs
+sphinx_rtd_theme>=0.4.3
+sphinxcontrib-blockdiag
+sphinxcontrib-needs>=0.2.3
+sphinxcontrib-nwdiag
+sphinxcontrib-seqdiag
+sphinxcontrib-swaggerdoc
+sphinxcontrib-plantuml
+sphinx_bootstrap_theme
+sphinxcontrib-redoc
+lfdocs-conf
\ No newline at end of file
diff --git a/docs/tox.ini b/docs/tox.ini
new file mode 100644 (file)
index 0000000..edac8c3
--- /dev/null
@@ -0,0 +1,22 @@
+[tox]
+minversion = 1.6
+envlist = docs,
+skipsdist = true
+
+[testenv:docs]
+basepython = python3
+deps = -r{toxinidir}/requirements-docs.txt
+commands =
+    sphinx-build -b html -n -d {envtmpdir}/doctrees ./ {toxinidir}/_build/html
+    echo "Generated docs available in {toxinidir}/_build/html"
+whitelist_externals =
+    echo
+    git
+    sh
+
+[testenv:docs-linkcheck]
+basepython = python3
+#deps = -r{toxinidir}/requirements-docs.txt
+commands = echo "Link Checking not enforced"
+#commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./ {toxinidir}/_build/linkcheck
+whitelist_externals = echo