Update A1-PMS to ONAP J-Release version 00/13000/23
authorJohnKeeney <john.keeney@est.tech>
Fri, 21 Jun 2024 16:14:55 +0000 (17:14 +0100)
committerRaviteja Karumuri <raviteja.karumuri@est.tech>
Tue, 25 Jun 2024 13:04:55 +0000 (13:04 +0000)
Issue-ID: NONRTRIC-1016
Change-Id: I470dacf2c5e97dd519d1cda8e3fc496649b2d450
Signed-off-by: JohnKeeney <john.keeney@est.tech>
.gitignore
api/pms-api-v3.yaml [new file with mode: 0644]
api/pms-api.json
config/application.yaml
onap/oran
pom.xml

index f611457..3ecb7f2 100644 (file)
@@ -22,3 +22,4 @@ infer-out/
 .factorypath
 
 coverage.*
 .factorypath
 
 coverage.*
+bin/
\ No newline at end of file
diff --git a/api/pms-api-v3.yaml b/api/pms-api-v3.yaml
new file mode 100644 (file)
index 0000000..3d39056
--- /dev/null
@@ -0,0 +1,1213 @@
+#  ============LICENSE_START=======================================================
+#  Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved.
+#  ================================================================================
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+
+openapi: 3.0.3
+info:
+  title: 'A1 policy management API'
+  version: 1.0.0
+  x-api-id: a31c510b-20e6-4a08-af16-368c44d7fba8
+  x-audience: external-public
+  description: "<h2>General</h2><p>The O-RAN Non-RT RIC Policy Management Service\
+        \ provides a REST API for managemecnt of A1 policies. <br/>The main tasks of the\
+        \ service are:</p><ul><li>A1 Policy creation, modification and deletion.</li><li>Monitoring\
+        \ and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs</li><li>Maintaining\
+        \ a view of supported Near-RT RIC policy types</li><li>Supervision of using services\
+        \ (R-APPs). When a service is unavailable, its policies are removed.</li></ul><h2>APIs\
+        \ provided or defined by the service</h2><h3>A1 Policy Management</h3><p>This\
+        \ is an API for management of A1 Policies.</p><ul><li>A1 Policy retrieval, creation,\
+        \ modification and deletion.</li><li>Retrieval of supported A1 Policy types for\
+        \ a Near-RT RIC</li><li>Retrieval of status for existing A1 policies</li></ul><h3>Management\
+        \ of configuration</h3><p>API for updating and retrieval of the component configuration.\
+        \ Note that there other ways to maintain the configuration.</p><h3>Service callbacks</h3><p>These\
+        \ are endpoints that are invoked by this service. The callbacks are registered\
+        \ in this service at service registration.</p><h3>NearRT-RIC Repository</h3><p>This\
+        \ is an API that provides support for looking up a NearRT-RIC. Each A1 policy\
+        \ is targeted for one Near-RT RIC.</p><h3>Health Check</h3><p>API used for supervision\
+        \ of the PMS component.</p><h3>Service Registry and Supervision</h3><p>API used\
+        \ for registering services that uses PMS. Each A1 policy is optionally owned by\
+        \ a service. PMS can supervise each registered service by a heart-beat supervision\
+        \ and will automatically remove policies for unavailable services. Note that a\
+        \ service does not need to be registered in order to create A1 Policies. This\
+        \ is a feature that is optional to use.</p><h3>Authorization API</h3><p>API used\
+        \ for access control of A1 Policy access. If configured, an external authorization\
+        \ provider is requested to grant access to the A1 Policy type.</p>"
+  license:
+    name: Copyright (C) 2024 OpenInfra Foundation Europe. Licensed under the Apache License.
+    url: http://www.apache.org/licenses/LICENSE-2.0
+  contact:
+    url: https://www.onap.org/
+    email: discuss-list@onap.com
+servers:
+  - url: '{apiRoot}/a1policymanagement/v1'
+    variables:
+      apiRoot:
+        description: 'apiRoot is the Host:port/Domain name of the service  where the A1Pms running'
+        default: 'https://a1-pms.com'
+tags:
+  - name: A1 Policy Management
+    description: "API used to create polices, Policy Instances and get \ them as individual using an ID or get all policies/Instances."
+  - name: NearRT-RIC Repository
+    description: "API used to get the NearRT-RIC for the managed element."
+  - name: Service Registry and Supervision
+    description: "API used to keep the service Alive with in the timeout period"
+  - name: Health Check
+    description: "API used to get the health status and statistics of this service"
+  - name: Service callbacks
+  - name: Configuration
+    description: "API used to create or fetch the application configuration."
+paths:
+  /status:
+    get:
+      operationId: getStatus
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/StatusInfo'
+              examples:
+                status_info:
+                  $ref: '#/components/examples/StatusInfo'
+          description: OK- Service is living Ok
+      description: Returns status and statistics of this service
+      tags:
+        - Health Check
+  /rics/ric:
+    get:
+      description: Either a Near-RT RIC identity or a Managed Element identity can
+        be specified.<br>The intention with Managed Element identity is the ID used
+        in O1 for accessing the traffical element (such as the ID of CU).
+      operationId: getRic
+      parameters:
+        - description: "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned."
+          explode: true
+          in: query
+          name: managedElementId
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: The identity of a Near-RT RIC to get information for.
+          explode: true
+          in: query
+          name: ricId
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RicInfo'
+              examples:
+                ric_info:
+                  $ref: '#/components/examples/RicInfo'
+          description: OK - Near-RT RIC is found OK
+        "404":
+          $ref: '#/components/responses/404'
+      summary: Returns info for one Near-RT RIC
+      tags:
+        - NearRT-RIC Repository
+  /rics:
+    get:
+      description: The call returns all Near-RT RICs that supports a given policy
+        type identity
+      operationId: getRics
+      parameters:
+        - description: "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned"
+          explode: true
+          in: query
+          name: policyTypeId
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RicInfoList'
+              examples:
+                ric_info_list:
+                  $ref: '#/components/examples/RicInfoList'
+          description: OK
+        "404":
+          $ref: '#/components/responses/404'
+      summary: Query Near-RT RIC information
+      tags:
+        - NearRT-RIC Repository
+  /policytypes:
+    get:
+      operationId: getPolicyTypes
+      parameters:
+        - description: Select types for the given Near-RT RIC identity.
+          explode: true
+          in: query
+          name: nearRtRicId
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Select types with the given type name (type identity has the
+            format <typename_version>)
+          explode: true
+          in: query
+          name: typeName
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Select types that are compatible with the given version. This
+            parameter is only applicable in conjunction with type_name. As an example
+            version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching
+            types will be returned sorted in ascending order.
+          explode: true
+          in: query
+          name: compatibleWithVersion
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PolicyTypeInformation'
+                type: array
+
+          description: OK - Policy Type IDs found Ok
+        '400':
+          $ref: '#/components/responses/400'
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+        '406':
+          $ref: '#/components/responses/406'
+        '429':
+          $ref: '#/components/responses/429'
+        '500':
+          $ref: '#/components/responses/500'
+        '502':
+          $ref: '#/components/responses/502'
+        '503':
+          $ref: '#/components/responses/503'
+      description: Query policy type identities
+      tags:
+        - A1 Policy Management
+  /policytypes/{policyTypeId}:
+    get:
+      operationId: getPolicyTypeDefinition
+      parameters:
+        - explode: false
+          in: path
+          name: policyTypeId
+          required: true
+          schema:
+            type: string
+          style: simple
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PolicyObject'
+              examples:
+                policyObject:
+                  $ref: '#/components/examples/PolicyObject'
+          description: OK - schema of the given policy type
+        '400':
+          $ref: '#/components/responses/400'
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+        '406':
+          $ref: '#/components/responses/406'
+        '429':
+          $ref: '#/components/responses/429'
+        '500':
+          $ref: '#/components/responses/500'
+        '502':
+          $ref: '#/components/responses/502'
+        '503':
+          $ref: '#/components/responses/503'
+      description: Returns a policy type definition
+      tags:
+        - A1 Policy Management
+  /policies/{policyId}:
+    put:
+      operationId: putPolicy
+      parameters:
+        - name: policyId
+          in: path
+          required: true
+          schema:
+            type: string
+      requestBody:
+        required: true
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PolicyObject'
+            examples:
+              policyObject:
+                $ref: '#/components/examples/PolicyObject'
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PolicyObject'
+          description: OK - Policy updated
+        '400':
+          $ref: '#/components/responses/400'
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+        '406':
+          $ref: '#/components/responses/406'
+        '411':
+          $ref: '#/components/responses/411'
+        '413':
+          $ref: '#/components/responses/413'
+        '415':
+          $ref: '#/components/responses/415'
+        '423':
+          $ref: '#/components/responses/Locked'
+        '429':
+          $ref: '#/components/responses/429'
+        '500':
+          $ref: '#/components/responses/500'
+        '502':
+          $ref: '#/components/responses/502'
+        '503':
+          $ref: '#/components/responses/503'
+      description: update a policy
+      tags:
+        - A1 Policy Management
+    delete:
+      description: Deleting the policy using policyId.
+      operationId: deletePolicy
+      parameters:
+        - explode: false
+          in: path
+          name: policyId
+          required: true
+          schema:
+            type: string
+          style: simple
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      responses:
+        '204':
+          description: 'The created A1 policy was deleted'
+        '400':
+          $ref: '#/components/responses/400'
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+        '423':
+          $ref: '#/components/responses/Locked'
+        '429':
+          $ref: '#/components/responses/429'
+        '500':
+          $ref: '#/components/responses/500'
+        '502':
+          $ref: '#/components/responses/502'
+        '503':
+          $ref: '#/components/responses/503'
+      summary: Delete a policy
+      tags:
+        - A1 Policy Management
+    get:
+      operationId: getPolicy
+      parameters:
+        - explode: false
+          in: path
+          name: policyId
+          required: true
+          schema:
+            type: string
+          style: simple
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PolicyObject'
+              examples:
+                policyObject:
+                  $ref: '#/components/examples/PolicyObject'
+          description: OK - Policy found
+        '400':
+          $ref: '#/components/responses/400'
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+        '406':
+          $ref: '#/components/responses/406'
+        '429':
+          $ref: '#/components/responses/429'
+        '500':
+          $ref: '#/components/responses/500'
+        '502':
+          $ref: '#/components/responses/502'
+        '503':
+          $ref: '#/components/responses/503'
+      description: Returns a policy
+      tags:
+        - A1 Policy Management
+  /policies:
+    get:
+      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: getPolicyIds
+      parameters:
+        - description: Select policies of a given policy type identity.
+          explode: true
+          in: query
+          name: policyTypeId
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Select policies of a given Near-RT RIC identity.
+          explode: true
+          in: query
+          name: nearRtRicId
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Select policies owned by a given service.
+          explode: true
+          in: query
+          name: serviceId
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Select policies of types with the given type name (type identity
+            has the format <typename_version>)
+          explode: true
+          in: query
+          name: typeName
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PolicyInformation'
+                type: array
+          description: OK - Policy identities
+        '400':
+          $ref: '#/components/responses/400'
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+        '406':
+          $ref: '#/components/responses/406'
+        '429':
+          $ref: '#/components/responses/429'
+        '500':
+          $ref: '#/components/responses/500'
+        '502':
+          $ref: '#/components/responses/502'
+        '503':
+          $ref: '#/components/responses/503'
+      summary: Query policy identities
+      tags:
+        - A1 Policy Management
+    post:
+      operationId: createPolicy
+      requestBody:
+        required: true
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PolicyObjectInformation'
+      responses:
+        '201':
+          description: 'Success case 201 created'
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PolicyObjectInformation'
+          headers:
+            Location:
+              description: 'Contains the URI of the newly created resource'
+              required: true
+              schema:
+                type: string
+        '400':
+          $ref: '#/components/responses/400'
+        '401':
+          $ref: '#/components/responses/401'
+        '403':
+          $ref: '#/components/responses/403'
+        '404':
+          $ref: '#/components/responses/404'
+        '406':
+          $ref: '#/components/responses/406'
+        '423':
+          $ref: '#/components/responses/Locked'
+        '429':
+          $ref: '#/components/responses/429'
+        '500':
+          $ref: '#/components/responses/500'
+        '502':
+          $ref: '#/components/responses/502'
+        '503':
+          $ref: '#/components/responses/503'
+      description: 'To create A1 policies'
+      tags:
+        - A1 Policy Management
+  /configuration:
+    get:
+      operationId: getConfiguration
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                type: string
+          description: OK - Application configuration received
+        "404":
+          $ref: '#/components/responses/404'
+
+      description: Returns the contents of the application configuration
+      tags:
+        - Configuration
+    put:
+      operationId: putConfiguration
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: object
+        required: true
+      responses:
+        "200":
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/void'
+          description: OK - Configuration updated
+        "400":
+          $ref: '#/components/responses/400'
+      description: Replace the current configuration file with the given configuration
+      tags:
+        - Configuration
+  /services/{serviceId}/keepalive:
+    put:
+      description: A registered service should invoke this operation regularly to
+        indicate that it is still alive. If a registered service fails to invoke this
+        operation before the end of a timeout period the service will be deregistered
+        and all its A1 policies wil be removed. (This timeout can be set or disabled
+        when each service is initially registered)
+      operationId: keepAliveService
+      parameters:
+        - explode: false
+          in: path
+          name: serviceId
+          required: true
+          schema:
+            type: string
+          style: simple
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      requestBody:
+        required: false
+        content:
+          application/json:
+            schema:
+              type: string
+      responses:
+        "200":
+          content:
+            '*/*':
+              schema:
+                type: object
+          description: "OK - Service supervision timer refreshed, OK"
+        "404":
+          $ref: '#/components/responses/404'
+      summary: Heartbeat indicates that the service is running
+      tags:
+        - Service Registry and Supervision
+  /services:
+    get:
+      description: Either information about a registered service with given identity
+        or all registered services are returned.
+      operationId: getServices
+      parameters:
+        - description: The identity of the service
+          explode: true
+          in: query
+          name: serviceId
+          required: false
+          schema:
+            type: string
+          style: form
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ServiceStatusList'
+              examples:
+                service_status_list:
+                  $ref: '#/components/examples/ServiceStatusList'
+          description: OK
+        "404":
+          $ref: '#/components/responses/404'
+      summary: Returns service information
+      tags:
+        - Service Registry and Supervision
+    put:
+      description: "Registering a service is needed to:<ul><li>Get callbacks about\
+            \ available NearRT RICs.</li><li>Activate supervision of the service. If a\
+            \ service is inactive, its policies will automatically be deleted.</li></ul>Policies\
+            \ can be created even if the service is not registerred. This is a feature\
+            \ which it is optional to use."
+      operationId: putService
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ServiceRegistrationInfo'
+        required: true
+      responses:
+        "200":
+          content:
+            '*/*':
+              schema:
+                type: object
+          description: OK - Service updated
+        "201":
+          content:
+            '*/*':
+              schema:
+                type: object
+          description: Created - Service created
+        "400":
+          $ref: '#/components/responses/400'
+      summary: Register a service
+      tags:
+        - Service Registry and Supervision
+      callbacks:
+        RICStatus:
+          "{$request.body#/callback_url}":
+            post:
+              description: The URL to this call is registered at Service registration.
+              operationId: serviceCallback
+              requestBody:
+                content:
+                  application/json:
+                    schema:
+                      $ref: '#/components/schemas/ServiceCallbackInfo'
+                required: true
+              responses:
+                "200":
+                  content:
+                    application/json:
+                      schema:
+                        $ref: '#/components/schemas/void'
+                  description: OK
+                "404":
+                  $ref: '#/components/responses/404'
+              summary: Callback for Near-RT RIC status
+              tags:
+                - Service callbacks
+  /services/{serviceId}:
+    delete:
+      operationId: deleteService
+      parameters:
+        - explode: false
+          in: path
+          name: serviceId
+          required: true
+          schema:
+            type: string
+          style: simple
+        - description: Specifies the content type that the client expects to receive in response to the request.
+            Only application/json is allowed.
+          in: header
+          name: Accept
+          schema:
+            type: string
+            example: application/json
+      responses:
+        "204":
+          content:
+            '*/*':
+              schema:
+                type: object
+          description: No Content - Service unregistered
+        "404":
+          $ref: '#/components/responses/404'
+      description: Unregister a service
+      tags:
+        - Service Registry and Supervision
+components:
+  examples:
+    ServiceStatusList:
+      description: List of service information
+      value:
+        serviceList:
+          - callbackUrl: callbackUrl
+            serviceId: serviceId
+            keepAliveIntervalSeconds: 0
+            timeSinceLastActivitySeconds: 6
+          - callbackUrl: callbackUrl
+            serviceId: serviceId
+            keepAliveIntervalSeconds: 0
+            timeSinceLastActivitySeconds: 6
+    PolicyStatusInfo:
+      description: Status for one A1-P Policy
+      value:
+        lastModified: last_modified
+        status:
+          value:
+            status: status
+    StatusInfo:
+      value:
+        status: status
+    RicInfo:
+      value:
+        ricId: ricId
+        managedElementIds:
+          - managedElementId
+          - managedElementId
+        state: UNAVAILABLE
+        policyTypeIds:
+          - policyTypeId
+          - policyTypeId
+    RicInfoList:
+      value:
+        rics:
+          - ricId: ricId
+            managedElementIds:
+              - managedElementId
+              - managedElementId
+            state: UNAVAILABLE
+            policyTypeIds:
+              - policyTypeId
+              - policyTypeId
+          - ricId: ricId
+            managedElementIds:
+              - managedElementId
+              - managedElementId
+            state: UNAVAILABLE
+            policyTypeIds:
+              - policyTypeId
+              - policyTypeId
+    PolicyObject:
+      value:
+        scope:
+          ueId:
+            guRanUeId:
+              globalGnbId:
+                plmnId:
+                  mcc: "123"
+                  mnc: "45"
+                gnbId:
+                  gnbIdLength: 24
+                  gnbIdValue: 12345678
+              RanUeId: 'a31c510b20e64a74'
+          groupId:
+            spId: 123
+          qosId:
+            5qI: 1
+          cellId:
+            plmnId:
+              mcc: "123"
+              mnc: "45"
+            cId:
+              ncI: 123
+        qosObjectives:
+          gfbr: 100
+          mfbr: 200
+          priorityLevel: 3
+          pdb: 50
+  schemas:
+    PolicyTypeInformation:
+      description: >-
+        Available policy types and for each policy type identifier the Near-RT
+        RIC identifiers of those Near-RT RICs that support the related A1 policy
+        type
+      type: object
+      properties:
+        policyTypeId:
+          description: Identity of the policy type
+          type: string
+        nearRtRicId:
+          $ref: '#/components/schemas/NearRtRicId'
+      required:
+        - policyTypeId
+        - nearRtRicId
+    PolicyObjectInformation:
+      description: Information related to the creation of the policy
+      type: object
+      properties:
+        nearRtRicId:
+          description: identity of the target Near-RT RIC
+          type: string
+          example:
+            'Near-RT-Ric-ID'
+        transient:
+          default: false
+          description: "if true, the policy is deleted at RIC restart. If false, its\
+                \ value is maintained by this service until explicitly deleted. Default\
+                \ false."
+          nullable: false
+          type: boolean
+        policyId:
+          description: identity of the Policy
+          type: string
+          example:
+            'POLICY-ID'
+        serviceId:
+          description: the identity of the service owning the policy. This can be
+            used to group the policies (it is possible to get all policies associated
+            to a service). Note that the service does not need to be registered.
+          type: string
+          example:
+            'rApp ID'
+        policyObject:
+          $ref: '#/components/schemas/PolicyObject'
+        statusNotificationUri:
+          description: Callback URI for policy status updates
+          type: string
+        policyTypeId:
+          description: identity of the policy type
+          type: string
+          example: 'ORAN_QOS_1.0.0(typeName_SemVersion)'
+      required:
+        - nearRtRicId
+        - policyObject
+        - policyTypeId
+    ErrorInformation:
+      description: Problem as defined in https://tools.ietf.org/html/rfc7807
+      properties:
+        detail:
+          description: ' A human-readable explanation specific to this occurrence
+                of the problem.'
+          example: Policy type not found
+          type: string
+        title:
+          description: 'A specific error name'
+          type: string
+          example: Not Found
+        status:
+          description: 'The HTTP status code generated by the origin server for this
+                occurrence of the problem. '
+          example: 404
+          format: int32
+          type: integer
+      type: object
+    PolicyObject:
+      description: 'Policy Object is a JSON representation of an A1 policy'
+      type: object
+    void:
+      description: Void/empty
+      type: object
+    StatusInfo:
+      properties:
+        status:
+          description: status text
+          type: string
+      type: object
+    AuthorizationResult:
+      description: Result of authorization
+      example:
+        result: true
+      properties:
+        result:
+          description: "If true, the access is granted"
+          type: boolean
+      required:
+        - result
+      type: object
+    RicInfo:
+      description: Information for a Near-RT RIC
+      properties:
+        ricId:
+          description: identity of the Near-RT RIC
+          type: string
+        managedElementIds:
+          description: O1 identities for managed entities
+          items:
+            description: O1 identities for managed entities
+            type: string
+          type: array
+        state:
+          description: Represents the states for a Near-RT RIC
+          enum:
+            - UNAVAILABLE
+            - AVAILABLE
+            - SYNCHRONIZING
+            - CONSISTENCY_CHECK
+          type: string
+        policyTypeIds:
+          description: supported policy types
+          items:
+            description: supported policy types
+            type: string
+          type: array
+      type: object
+    ServiceRegistrationInfo:
+      description: Information for one service
+      properties:
+        callbackUrl:
+          description: callback for notifying of Near-RT RIC state changes
+          type: string
+        serviceId:
+          description: identity of the service
+          type: string
+        keepAliveIntervalSeconds:
+          description: "keep alive interval for the service. This is used to enable\
+                \ optional heartbeat supervision of the service. If set (> 0) the registered\
+                \ service should regularly invoke a 'keepalive' REST call. When a service\
+                \ fails to invoke this 'keepalive' call within the configured time, the\
+                \ service is considered unavailable. An unavailable service will be automatically\
+                \ deregistered and its policies will be deleted. Value 0 means timeout\
+                \ supervision is disabled."
+          format: int64
+          type: integer
+      required:
+        - serviceId
+      type: object
+    PolicyStatusInfo:
+      description: Status for one A1-P Policy
+      properties:
+        lastModified:
+          description: "timestamp, last modification time"
+          type: string
+        status:
+          description: the Policy status
+          type: object
+      type: object
+    ServiceStatus:
+      properties:
+        callbackUrl:
+          description: callback for notifying of RIC synchronization
+          type: string
+        serviceId:
+          description: identity of the service
+          type: string
+        keepAliveIntervalSeconds:
+          description: policy keep alive timeout
+          format: int64
+          type: integer
+        timeSinceLastActivitySeconds:
+          description: time since last invocation by the service
+          format: int64
+          type: integer
+      type: object
+    RicInfoList:
+      description: List of Near-RT RIC information
+      properties:
+        rics:
+          description: List of Near-RT RIC information
+          items:
+            $ref: '#/components/schemas/RicInfo'
+          type: array
+      type: object
+    input:
+      description: input
+      properties:
+        accessType:
+          description: Access type
+          enum:
+            - READ
+            - WRITE
+            - DELETE
+          type: string
+        authToken:
+          description: Authorization token
+          type: string
+        policyTypeId:
+          description: Policy type identifier
+          type: string
+      required:
+        - accessType
+        - authToken
+        - policyTypeId
+      type: object
+    PolicyAuthorization:
+      description: Authorization request for A1 policy requests
+      properties:
+        input:
+          $ref: '#/components/schemas/input'
+      required:
+        - input
+      type: object
+    NearRtRicId:
+      description: Identity of the policy
+      type: string
+    PolicyInformation:
+      description: >-
+        Near-RT RIC identifiers where A1 policies exist and for each Near-RT RIC
+        identifier the policy identifiers of those policies that exist in that
+        Near-RT RIC
+      type: object
+      properties:
+        policyId:
+          description: Identity of the policy
+          type: string
+        nearRtRicId:
+          $ref: '#/components/schemas/NearRtRicId'
+      required:
+        - policyId
+        - nearRtRicId
+    ServiceStatusList:
+      properties:
+        serviceList:
+          description: List of service information
+          items:
+            $ref: '#/components/schemas/ServiceStatus'
+          type: array
+      type: object
+    ServiceCallbackInfo:
+      description: Information transferred as in Service callbacks (callback_url)
+      properties:
+        ricId:
+          description: identity of a Near-RT RIC
+          type: string
+        eventType:
+          description: "values:\nAVAILABLE: the  Near-RT RIC has become available\
+                \ for A1 Policy management"
+          enum:
+            - AVAILABLE
+          type: string
+      required:
+        - eventType
+        - ricId
+      type: object
+    Link:
+      properties:
+        templated:
+          type: boolean
+        href:
+          type: string
+      type: object
+    ProblemDetails:
+      description: >-
+        A problem detail to carry details in an HTTP response according to RFC
+        7807
+      type: object
+      properties:
+        type:
+          description: >-
+            a URI reference according to IETF RFC 3986 that identifies the
+            problem type
+          type: string
+        title:
+          description: human-readable summary of the problem type
+          type: string
+        status:
+          description: the HTTP status code
+          type: number
+        detail:
+          description: 'human-readable explanation '
+          type: string
+        instance:
+          description: URI reference that identifies the specific occurrence of the problem
+          type: string
+  responses:
+    '400':
+      description: Bad Request
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '401':
+      description: Unauthorized
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '403':
+      description: Forbidden
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '404':
+      description: Not Found
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '405':
+      description: Method Not Allowed
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '406':
+      description: Not Acceptable
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '409':
+      description: Conflict
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '411':
+      description: Length Required
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '413':
+      description: Payload Too Large
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '415':
+      description: Unsupported Media Type
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '429':
+      description: Too Many Request
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '500':
+      description: Internal Server Error
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '502':
+      description: Bad Gateway
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    '503':
+      description: Service Unavailable
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ProblemDetails'
+    Locked:
+      description: "Locked - HTTP Status code which can be used when the state is Locked"
+      content:
+        application/problem+json:
+          schema:
+            $ref: '#/components/schemas/ErrorInformation'
+          example:
+            status: 423
+            title: Locked
+            detail: State is Locked in the  provided request.
index 00935a8..33fa5e1 100644 (file)
 {
 {
-  "openapi" : "3.0.3",
-  "info" : {
-    "title" : "A1 Policy Management Service",
-    "description" : "<h2>General</h2><p>The O-RAN Non-RT RIC Policy Management Service provides a REST API for managemecnt of A1 policies. <br/>The main tasks of the service are:</p><ul><li>A1 Policy creation, modification and deletion.</li><li>Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs</li><li>Maintaining a view of supported Near-RT RIC policy types</li><li>Supervision of using services (R-APPs). When a service is unavailable, its policies are removed.</li></ul><h2>APIs provided or defined by the service</h2><h3>A1 Policy Management</h3><p>This is an API for management of A1 Policies.</p><ul><li>A1 Policy retrieval, creation, modification and deletion.</li><li>Retrieval of supported A1 Policy types for a Near-RT RIC</li><li>Retrieval of status for existing A1 policies</li></ul><h3>Management of configuration</h3><p>API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.</p><h3>Service callbacks</h3><p>These are endpoints that are invoked by this service. The callbacks are registered in this service at service registration.</p><h3>NearRT-RIC Repository</h3><p>This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.</p><h3>Health Check</h3><p>API used for supervision of the PMS component.</p><h3>Service Registry and Supervision</h3><p>API used for registering services that uses PMS. Each A1 policy is optionally owned by a service. PMS can supervise each registered service by a heart-beat supervision and will automatically remove policies for unavailable services. Note that a service does not need to be registered in order to create A1 Policies. This is a feature that is optional to use.</p><h3>Authorization API</h3><p>API used for access control of A1 Policy access. If configured, an external authorization provider is requested to grant access to the A1 Policy type.</p><h3>Spring Boot Actuator</h3><p>Provides generic functions  used to monitor and manage the Spring web application.</p>",
-    "contact" : {
-      "url" : "https://www.onap.org/",
-      "email" : "discuss-list@onap.com"
-    },
-    "license" : {
-      "name" : "Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License.",
-      "url" : "http://www.apache.org/licenses/LICENSE-2.0"
-    },
-    "version" : "1.3.0",
-    "x-api-id" : "a31c510b-20e6-4a08-af16-368c44d7fba8",
-    "x-audience" : "external-public"
-  },
-  "servers" : [ {
-    "url" : "/"
-  } ],
-  "tags" : [ {
-    "name" : "A1 Policy Management",
-    "description" : "API used to create polices, Policy Instances and get them as individual using an ID or get all policies/Instances."
-  }, {
-    "name" : "NearRT-RIC Repository",
-    "description" : "API used to get the NearRT-RIC for the managed element."
-  }, {
-    "name" : "Service Registry and Supervision",
-    "description" : "API used to keep the service Alive with in the timeout period"
-  }, {
-    "name" : "Health Check",
-    "description" : "API used to get the health status and statistics of this service"
-  }, {
-    "name" : "Service callbacks"
-  }, {
-    "name" : "Authorization API",
-    "description" : "API used for authorization of information A1 policy access (this is provided by an authorization producer such as OPA). <br> Note that this API is called by PMS, it is not provided."
-  }, {
-    "name" : "Configuration",
-    "description" : "API used to create or fetch the application configuration."
-  }, {
-    "name" : "Actuator",
-    "description" : "Monitor and interact",
-    "externalDocs" : {
-      "description" : "Spring Boot Actuator Web API Documentation",
-      "url" : "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/"
-    }
-  } ],
-  "paths" : {
-    "/a1-policy/v2/policy-instances" : {
-      "get" : {
-        "tags" : [ "A1 Policy Management" ],
-        "summary" : "Query for A1 policy instances",
-        "description" : "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.",
-        "operationId" : "getPolicyInstances",
-        "parameters" : [ {
-          "name" : "policytype_id",
-          "in" : "query",
-          "description" : "Select policies with a given type identity.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        }, {
-          "name" : "ric_id",
-          "in" : "query",
-          "description" : "Select policies for a given Near-RT RIC identity.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        }, {
-          "name" : "service_id",
-          "in" : "query",
-          "description" : "Select policies owned by a given service.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        }, {
-          "name" : "type_name",
-          "in" : "query",
-          "description" : "Select policies of a given type name (type identity has the format <typename_version>)",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK - Returns A1 Policies which matches the criteria",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/policy_info_list"
+    "components": {"schemas": {
+        "error_information": {
+            "description": "Problem as defined in https://tools.ietf.org/html/rfc7807",
+            "type": "object",
+            "properties": {
+                "detail": {
+                    "description": " A human-readable explanation specific to this occurrence of the problem.",
+                    "type": "string",
+                    "example": "Policy type not found"
                 },
                 },
-                "examples" : {
-                  "policy_info_list" : {
-                    "$ref" : "#/components/examples/policy_info_list"
-                  }
-                }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found - Near-RT RIC, policy type or service not found",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/error_information"
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    "/example-authz-check" : {
-      "post" : {
-        "tags" : [ "Authorization API" ],
-        "summary" : "Request for access authorization.",
-        "description" : "The authorization function decides if access is granted.",
-        "operationId" : "performAccessControl",
-        "requestBody" : {
-          "content" : {
-            "application/json" : {
-              "schema" : {
-                "$ref" : "#/components/schemas/policy_authorization"
-              }
-            }
-          },
-          "required" : true
-        },
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/authorization_result"
-                }
-              }
-            }
-          },
-          "403" : {
-            "description" : "Forbidden",
-            "content" : {
-              "application/problem+json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/error_information"
+                "status": {
+                    "format": "int32",
+                    "description": "The HTTP status code generated by the origin server for this occurrence of the problem. ",
+                    "type": "integer",
+                    "example": 404
+                }
+            }
+        },
+        "void": {
+            "description": "Void/empty",
+            "type": "object"
+        },
+        "status_info_v2": {
+            "type": "object",
+            "properties": {"status": {
+                "description": "status text",
+                "type": "string"
+            }}
+        },
+        "authorization_result": {
+            "description": "Result of authorization",
+            "type": "object",
+            "required": ["result"],
+            "properties": {"result": {
+                "description": "If true, the access is granted",
+                "type": "boolean"
+            }}
+        },
+        "ric_info_v2": {
+            "description": "Information for a Near-RT RIC",
+            "type": "object",
+            "properties": {
+                "ric_id": {
+                    "description": "identity of the Near-RT RIC",
+                    "type": "string"
                 },
                 },
-                "example" : {
-                  "status" : 403,
-                  "title" : "Forbidden",
-                  "detail" : "Your role does not allow to perform this action. Contact System Administrator to change your access rights."
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    "/actuator/threaddump" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'threaddump'",
-        "operationId" : "threaddump",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "text/plain;charset=UTF-8" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/a1-policy/v2/status" : {
-      "get" : {
-        "tags" : [ "Health Check" ],
-        "description" : "Returns status and statistics of this service",
-        "operationId" : "getStatus",
-        "responses" : {
-          "200" : {
-            "description" : "OK- Service is living Ok",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/status_info"
+                "managed_element_ids": {
+                    "description": "O1 identities for managed entities",
+                    "type": "array",
+                    "items": {
+                        "description": "O1 identities for managed entities",
+                        "type": "string"
+                    }
                 },
                 },
-                "examples" : {
-                  "status_info" : {
-                    "$ref" : "#/components/examples/status_info"
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    "/actuator/loggers" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'loggers'",
-        "operationId" : "loggers",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/actuator/health/**" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'health-path'",
-        "operationId" : "health-path",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/a1-policy/v2/rics/ric" : {
-      "get" : {
-        "tags" : [ "NearRT-RIC Repository" ],
-        "summary" : "Returns info of Near-RT RIC queried by the ric-id and managed-element-id",
-        "description" : "Either a Near-RT RIC identity or a Managed Element identity can be specified.<br>The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).",
-        "operationId" : "getRic",
-        "parameters" : [ {
-          "name" : "managed_element_id",
-          "in" : "query",
-          "description" : "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        }, {
-          "name" : "ric_id",
-          "in" : "query",
-          "description" : "The identity of a Near-RT RIC to get information for.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK - Near-RT RIC is found",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/ric_info"
+                "state": {
+                    "description": "Represents the states for a Near-RT RIC",
+                    "type": "string",
+                    "enum": [
+                        "UNAVAILABLE",
+                        "AVAILABLE",
+                        "SYNCHRONIZING",
+                        "CONSISTENCY_CHECK"
+                    ]
                 },
                 },
-                "examples" : {
-                  "ric_info" : {
-                    "$ref" : "#/components/examples/ric_info"
-                  }
-                }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      }
-    },
-    "/actuator/shutdown" : {
-      "post" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'shutdown'",
-        "operationId" : "shutdown",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object"
+                "policytype_ids": {
+                    "description": "supported policy types",
+                    "type": "array",
+                    "items": {
+                        "description": "supported policy types",
+                        "type": "string"
+                    }
                 }
                 }
-              }
             }
             }
-          }
         },
         },
-        "x-internal" : true
-      }
-    },
-    "/a1-policy/v2/policy-types" : {
-      "get" : {
-        "tags" : [ "A1 Policy Management" ],
-        "description" : "Query policy type identities",
-        "operationId" : "getPolicyTypes",
-        "parameters" : [ {
-          "name" : "ric_id",
-          "in" : "query",
-          "description" : "Select types for the given Near-RT RIC identity.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        }, {
-          "name" : "type_name",
-          "in" : "query",
-          "description" : "Select types with the given type name (type identity has the format <typename_version>)",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        }, {
-          "name" : "compatible_with_version",
-          "in" : "query",
-          "description" : "Select types that are compatible with the given version. This parameter is only applicable in conjunction with type_name. As an example version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching types will be returned sorted in ascending order.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK - Policy Type IDs Found",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/policy_type_id_list"
+        "service_registration_info_v2": {
+            "description": "Information for one service",
+            "type": "object",
+            "required": ["service_id"],
+            "properties": {
+                "callback_url": {
+                    "description": "callback for notifying of Near-RT RIC state changes",
+                    "type": "string"
                 },
                 },
-                "examples" : {
-                  "policy_type_id_list" : {
-                    "$ref" : "#/components/examples/policy_type_id_list"
-                  }
-                }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      }
-    },
-    "/a1-policy/v2/policies/{policy_id}" : {
-      "get" : {
-        "tags" : [ "A1 Policy Management" ],
-        "description" : "Returns a policy",
-        "operationId" : "getPolicy",
-        "parameters" : [ {
-          "name" : "policy_id",
-          "in" : "path",
-          "required" : true,
-          "style" : "simple",
-          "explode" : false,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK - Policy found",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/policy_info"
+                "service_id": {
+                    "description": "identity of the service",
+                    "type": "string"
                 },
                 },
-                "examples" : {
-                  "policy_info" : {
-                    "$ref" : "#/components/examples/policy_info"
-                  }
-                }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      },
-      "delete" : {
-        "tags" : [ "A1 Policy Management" ],
-        "summary" : "Delete a policy",
-        "description" : "Deleting the policy using the Policy's Policy ID.",
-        "operationId" : "deletePolicy",
-        "parameters" : [ {
-          "name" : "policy_id",
-          "in" : "path",
-          "required" : true,
-          "style" : "simple",
-          "explode" : false,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK - Policy deleted",
-            "content" : {
-              "*/*" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/void"
-                }
-              }
-            }
-          },
-          "423" : {
-            "description" : "Locked - HTTP Status code which can be used when the state is Locked",
-            "content" : {
-              "application/problem+json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/error_information"
+                "keep_alive_interval_seconds": {
+                    "format": "int64",
+                    "description": "keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means timeout supervision is disabled.",
+                    "type": "integer"
+                }
+            }
+        },
+        "policy_info_list_v2": {
+            "description": "List of policy information",
+            "type": "object",
+            "properties": {"policies": {
+                "description": "List of policy information",
+                "type": "array",
+                "items": {"$ref": "#/components/schemas/policy_info_v2"}
+            }}
+        },
+        "policy_status_info_v2": {
+            "description": "Status for one A1-P Policy",
+            "type": "object",
+            "properties": {
+                "last_modified": {
+                    "description": "timestamp, last modification time",
+                    "type": "string"
                 },
                 },
-                "example" : {
-                  "status" : 423,
-                  "title" : "Locked",
-                  "detail" : "Requested resource is in a locked state."
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    "/actuator/metrics/{requiredMetricName}" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'metrics-requiredMetricName'",
-        "operationId" : "metrics-requiredMetricName",
-        "parameters" : [ {
-          "name" : "requiredMetricName",
-          "in" : "path",
-          "required" : true,
-          "style" : "simple",
-          "explode" : false,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object"
+                "status": {
+                    "description": "the Policy status",
+                    "type": "object"
                 }
                 }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
             }
             }
-          }
         },
         },
-        "x-internal" : true
-      }
-    },
-    "/a1-policy/v2/configuration" : {
-      "get" : {
-        "tags" : [ "Configuration" ],
-        "description" : "Returns the contents of the application configuration file",
-        "operationId" : "getConfiguration",
-        "responses" : {
-          "200" : {
-            "description" : "OK - Configuration",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "type" : "string"
+        "service_status_v2": {
+            "description": "List of service information",
+            "type": "object",
+            "properties": {
+                "callback_url": {
+                    "description": "callback for notifying of RIC synchronization",
+                    "type": "string"
+                },
+                "service_id": {
+                    "description": "identity of the service",
+                    "type": "string"
+                },
+                "keep_alive_interval_seconds": {
+                    "format": "int64",
+                    "description": "policy keep alive timeout",
+                    "type": "integer"
+                },
+                "time_since_last_activity_seconds": {
+                    "format": "int64",
+                    "description": "time since last invocation by the service",
+                    "type": "integer"
+                }
+            }
+        },
+        "ric_info_list_v2": {
+            "description": "List of Near-RT RIC information",
+            "type": "object",
+            "properties": {"rics": {
+                "description": "List of Near-RT RIC information",
+                "type": "array",
+                "items": {"$ref": "#/components/schemas/ric_info_v2"}
+            }}
+        },
+        "policytype_v2": {
+            "description": "Policy type",
+            "type": "object",
+            "properties": {"policy_schema": {
+                "description": "Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema",
+                "type": "object"
+            }}
+        },
+        "input": {
+            "description": "input",
+            "type": "object",
+            "required": [
+                "access_type",
+                "auth_token",
+                "policy_type_id"
+            ],
+            "properties": {
+                "access_type": {
+                    "description": "Access type",
+                    "type": "string",
+                    "enum": [
+                        "READ",
+                        "WRITE",
+                        "DELETE"
+                    ]
+                },
+                "auth_token": {
+                    "description": "Authorization token",
+                    "type": "string"
+                },
+                "policy_type_id": {
+                    "description": "Policy type identifier",
+                    "type": "string"
+                }
+            }
+        },
+        "policy_authorization": {
+            "description": "Authorization request for A1 policy requests",
+            "type": "object",
+            "required": ["input"],
+            "properties": {"input": {"$ref": "#/components/schemas/input"}}
+        },
+        "policytype_id_list_v2": {
+            "description": "Information about policy types",
+            "type": "object",
+            "properties": {"policytype_ids": {
+                "description": "Policy type identities",
+                "type": "array",
+                "items": {
+                    "description": "Policy type identities",
+                    "type": "string"
+                }
+            }}
+        },
+        "policy_info_v2": {
+            "description": "Information for one A1-P Policy",
+            "type": "object",
+            "required": [
+                "policy_data",
+                "policy_id",
+                "policytype_id",
+                "ric_id"
+            ],
+            "properties": {
+                "ric_id": {
+                    "description": "identity of the target Near-RT RIC",
+                    "type": "string"
+                },
+                "policy_id": {
+                    "description": "identity of the policy",
+                    "type": "string"
+                },
+                "transient": {
+                    "default": false,
+                    "description": "if true, the policy is deleted at RIC restart. If false, its value is maintained by this service until explicitly deleted. Default false.",
+                    "type": "boolean",
+                    "example": false
+                },
+                "service_id": {
+                    "description": "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered.",
+                    "type": "string"
+                },
+                "policy_data": {
+                    "description": "the configuration of the policy",
+                    "type": "object"
+                },
+                "status_notification_uri": {
+                    "description": "Callback URI for policy status updates",
+                    "type": "string"
+                },
+                "policytype_id": {
+                    "description": "identity of the policy type",
+                    "type": "string"
+                }
+            }
+        },
+        "policy_id_list_v2": {
+            "description": "A list of policy identities",
+            "type": "object",
+            "properties": {"policy_ids": {
+                "description": "Policy identities",
+                "type": "array",
+                "items": {
+                    "description": "Policy identities",
+                    "type": "string"
+                }
+            }}
+        },
+        "service_list_v2": {
+            "description": "List of service information",
+            "type": "object",
+            "properties": {"service_list": {
+                "description": "List of service information",
+                "type": "array",
+                "items": {"$ref": "#/components/schemas/service_status_v2"}
+            }}
+        },
+        "service_callback_info_v2": {
+            "description": "Information transferred as in Service callbacks (callback_url)",
+            "type": "object",
+            "required": [
+                "event_type",
+                "ric_id"
+            ],
+            "properties": {
+                "ric_id": {
+                    "description": "identity of a Near-RT RIC",
+                    "type": "string"
+                },
+                "event_type": {
+                    "description": "values:\nAVAILABLE: the  Near-RT RIC has become available for A1 Policy management",
+                    "type": "string",
+                    "enum": ["AVAILABLE"]
+                }
+            }
+        },
+        "Link": {
+            "type": "object",
+            "properties": {
+                "templated": {"type": "boolean"},
+                "href": {"type": "string"}
+            }
+        }
+    }},
+    "openapi": "3.0.1",
+    "paths": {
+        "/a1-policy/v2/policy-instances": {"get": {
+            "summary": "Query for A1 policy instances",
+            "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": "getPolicyInstances",
+            "responses": {
+                "200": {
+                    "description": "Policies",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_list_v2"}}}
+                },
+                "404": {
+                    "description": "Near-RT RIC, policy type or service not found",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                 }
                 }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      },
-      "put" : {
-        "tags" : [ "Configuration" ],
-        "description" : "Replace the current configuration with the given configuration",
-        "operationId" : "putConfiguration",
-        "requestBody" : {
-          "content" : {
-            "application/json" : {
-              "schema" : {
-                "type" : "object"
-              }
-            }
-          },
-          "required" : true
-        },
-        "responses" : {
-          "200" : {
-            "description" : "OK - Configuration updated",
-            "content" : {
-              "*/*" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/void"
+            },
+            "parameters": [
+                {
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "policytype_id",
+                    "description": "Select policies with a given type identity.",
+                    "required": false
+                },
+                {
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "ric_id",
+                    "description": "Select policies for a given Near-RT RIC identity.",
+                    "required": false
+                },
+                {
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "service_id",
+                    "description": "Select policies owned by a given service.",
+                    "required": false
+                },
+                {
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "type_name",
+                    "description": "Select policies of a given type name (type identity has the format <typename_version>)",
+                    "required": false
+                }
+            ],
+            "tags": ["A1 Policy Management"]
+        }},
+        "/example-authz-check": {"post": {
+            "summary": "Request for access authorization.",
+            "requestBody": {
+                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_authorization"}}},
+                "required": true
+            },
+            "description": "The authorization function decides if access is granted.",
+            "operationId": "performAccessControl",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/authorization_result"}}}
+            }},
+            "tags": ["Authorization API"]
+        }},
+        "/actuator/threaddump": {"get": {
+            "summary": "Actuator web endpoint 'threaddump'",
+            "operationId": "threaddump",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {
+                    "text/plain;charset=UTF-8": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/a1-policy/v2/status": {"get": {
+            "summary": "Returns status and statistics of this service",
+            "operationId": "getStatus",
+            "responses": {"200": {
+                "description": "Service is living",
+                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/status_info_v2"}}}
+            }},
+            "tags": ["Health Check"]
+        }},
+        "/actuator/loggers": {"get": {
+            "summary": "Actuator web endpoint 'loggers'",
+            "operationId": "loggers",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/actuator/health/**": {"get": {
+            "summary": "Actuator web endpoint 'health-path'",
+            "operationId": "health-path",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/a1-policy/v2/rics/ric": {"get": {
+            "summary": "Returns info for one Near-RT RIC",
+            "description": "Either a Near-RT RIC identity or a Managed Element identity can be specified.<br>The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).",
+            "operationId": "getRic",
+            "responses": {
+                "200": {
+                    "description": "Near-RT RIC is found",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ric_info_v2"}}}
+                },
+                "404": {
+                    "description": "Near-RT RIC is not found",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                 }
                 }
-              }
-            }
-          },
-          "400" : {
-            "description" : "Bad Request",
-            "content" : {
-              "application/problem+json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/error_information"
+            },
+            "parameters": [
+                {
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "managed_element_id",
+                    "description": "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.",
+                    "required": false
                 },
                 },
-                "example" : {
-                  "status" : 400,
-                  "title" : "Bad Request",
-                  "detail" : "The provided request is not valid."
+                {
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "ric_id",
+                    "description": "The identity of a Near-RT RIC to get information for.",
+                    "required": false
+                }
+            ],
+            "tags": ["NearRT-RIC Repository"]
+        }},
+        "/actuator/shutdown": {"post": {
+            "summary": "Actuator web endpoint 'shutdown'",
+            "operationId": "shutdown",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/a1-policy/v2/policy-types": {"get": {
+            "summary": "Query policy type identities",
+            "operationId": "getPolicyTypes",
+            "responses": {
+                "200": {
+                    "description": "Policy type IDs",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policytype_id_list_v2"}}}
+                },
+                "404": {
+                    "description": "Near-RT RIC is not found",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                 }
                 }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/actuator" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator root web endpoint",
-        "operationId" : "links",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object",
-                  "additionalProperties" : {
-                    "type" : "object",
-                    "additionalProperties" : {
-                      "$ref" : "#/components/schemas/Link"
+            },
+            "parameters": [
+                {
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "ric_id",
+                    "description": "Select types for the given Near-RT RIC identity.",
+                    "required": false
+                },
+                {
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "type_name",
+                    "description": "Select types with the given type name (type identity has the format <typename_version>)",
+                    "required": false
+                },
+                {
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "compatible_with_version",
+                    "description": "Select types that are compatible with the given version. This parameter is only applicable in conjunction with type_name. As an example version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching types will be returned sorted in ascending order.",
+                    "required": false
+                }
+            ],
+            "tags": ["A1 Policy Management"]
+        }},
+        "/a1-policy/v2/policies/{policy_id}": {
+            "get": {
+                "summary": "Returns a policy",
+                "operationId": "getPolicy",
+                "responses": {
+                    "200": {
+                        "description": "Policy found",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_v2"}}}
+                    },
+                    "404": {
+                        "description": "Policy is not found",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                     }
                     }
-                  }
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object",
-                  "additionalProperties" : {
-                    "type" : "object",
-                    "additionalProperties" : {
-                      "$ref" : "#/components/schemas/Link"
+                },
+                "parameters": [{
+                    "schema": {"type": "string"},
+                    "in": "path",
+                    "name": "policy_id",
+                    "required": true
+                }],
+                "tags": ["A1 Policy Management"]
+            },
+            "delete": {
+                "summary": "Delete a policy",
+                "operationId": "deletePolicy",
+                "responses": {
+                    "200": {
+                        "description": "Not used",
+                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
+                    },
+                    "423": {
+                        "description": "Near-RT RIC is not operational",
+                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+                    },
+                    "204": {
+                        "description": "Policy deleted",
+                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
+                    },
+                    "404": {
+                        "description": "Policy is not found",
+                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                     }
                     }
-                  }
-                }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object",
-                  "additionalProperties" : {
-                    "type" : "object",
-                    "additionalProperties" : {
-                      "$ref" : "#/components/schemas/Link"
+                },
+                "parameters": [{
+                    "schema": {"type": "string"},
+                    "in": "path",
+                    "name": "policy_id",
+                    "required": true
+                }],
+                "tags": ["A1 Policy Management"]
+            }
+        },
+        "/actuator/metrics/{requiredMetricName}": {"get": {
+            "summary": "Actuator web endpoint 'metrics-requiredMetricName'",
+            "operationId": "metrics-requiredMetricName",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
+            }},
+            "parameters": [{
+                "schema": {"type": "string"},
+                "in": "path",
+                "name": "requiredMetricName",
+                "required": true
+            }],
+            "tags": ["Actuator"]
+        }},
+        "/a1-policy/v2/configuration": {
+            "get": {
+                "summary": "Returns the contents of the application configuration file",
+                "operationId": "getConfiguration",
+                "responses": {
+                    "200": {
+                        "description": "Configuration",
+                        "content": {"application/json": {"schema": {"type": "object"}}}
+                    },
+                    "404": {
+                        "description": "File is not found or readable",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                     }
                     }
-                  }
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/actuator/loggers/{name}" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'loggers-name'",
-        "operationId" : "loggers-name",
-        "parameters" : [ {
-          "name" : "name",
-          "in" : "path",
-          "required" : true,
-          "style" : "simple",
-          "explode" : false,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      },
-      "post" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'loggers-name'",
-        "operationId" : "loggers-name_2",
-        "parameters" : [ {
-          "name" : "name",
-          "in" : "path",
-          "required" : true,
-          "style" : "simple",
-          "explode" : false,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "requestBody" : {
-          "content" : {
-            "application/json" : {
-              "schema" : {
-                "type" : "string",
-                "enum" : [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF" ]
-              }
-            }
-          }
-        },
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "*/*" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/a1-policy/v2/services/{service_id}/keepalive" : {
-      "put" : {
-        "tags" : [ "Service Registry and Supervision" ],
-        "summary" : "Heartbeat indicates that the service is running",
-        "description" : "A registered service should invoke this operation regularly to indicate that it is still alive. If a registered service fails to invoke this operation before the end of a timeout period the service will be deregistered and all its A1 policies wil be removed. (This timeout can be set or disabled when each service is initially registered)",
-        "operationId" : "keepAliveService",
-        "parameters" : [ {
-          "name" : "service_id",
-          "in" : "path",
-          "required" : true,
-          "style" : "simple",
-          "explode" : false,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK - Service supervision timer refreshed, OK",
-            "content" : {
-              "*/*" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      }
-    },
-    "/actuator/metrics" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'metrics'",
-        "operationId" : "metrics",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/a1-policy/v2/rics" : {
-      "get" : {
-        "tags" : [ "NearRT-RIC Repository" ],
-        "summary" : "Query Near-RT RIC information",
-        "description" : "The call returns all Near-RT RICs that supports a given policy type identity",
-        "operationId" : "getRics",
-        "parameters" : [ {
-          "name" : "policytype_id",
-          "in" : "query",
-          "description" : "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/ric_info_list"
                 },
                 },
-                "examples" : {
-                  "ric_info_list" : {
-                    "$ref" : "#/components/examples/ric_info_list"
-                  }
-                }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      }
-    },
-    "/a1-policy/v2/services" : {
-      "get" : {
-        "tags" : [ "Service Registry and Supervision" ],
-        "summary" : "Returns service information",
-        "description" : "Either information about a registered service with given identity or all registered services are returned.",
-        "operationId" : "getServices",
-        "parameters" : [ {
-          "name" : "service_id",
-          "in" : "query",
-          "description" : "The identity of the service",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/service_status_list"
+                "tags": ["Management of configuration"]
+            },
+            "put": {
+                "summary": "Replace the current configuration file with the given configuration",
+                "requestBody": {
+                    "content": {"application/json": {"schema": {"type": "object"}}},
+                    "required": true
                 },
                 },
-                "examples" : {
-                  "service_status_list" : {
-                    "$ref" : "#/components/examples/service_status_list"
-                  }
-                }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      },
-      "put" : {
-        "tags" : [ "Service Registry and Supervision" ],
-        "summary" : "Register a service",
-        "description" : "Registering a service is needed to:<ul><li>Get callbacks about available NearRT RICs.</li><li>Activate supervision of the service. If a service is inactive, its policies will automatically be deleted.</li></ul>Policies can be created even if the service is not registerred. This is a feature which it is optional to use.",
-        "operationId" : "putService",
-        "requestBody" : {
-          "content" : {
-            "application/json" : {
-              "schema" : {
-                "$ref" : "#/components/schemas/service_registration_info"
-              }
-            }
-          },
-          "required" : true
-        },
-        "responses" : {
-          "200" : {
-            "description" : "OK - Service updated",
-            "content" : {
-              "*/*" : {
-                "schema" : {
-                  "type" : "object"
+                "operationId": "putConfiguration",
+                "responses": {
+                    "200": {
+                        "description": "Configuration updated",
+                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
+                    },
+                    "400": {
+                        "description": "Invalid configuration provided",
+                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+                    },
+                    "500": {
+                        "description": "Something went wrong when replacing the configuration. Try again.",
+                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+                    }
+                },
+                "tags": ["Management of configuration"]
+            }
+        },
+        "/actuator": {"get": {
+            "summary": "Actuator root web endpoint",
+            "operationId": "links",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {
+                        "additionalProperties": {
+                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
+                            "type": "object"
+                        },
+                        "type": "object"
+                    }},
+                    "application/json": {"schema": {
+                        "additionalProperties": {
+                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
+                            "type": "object"
+                        },
+                        "type": "object"
+                    }},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {
+                        "additionalProperties": {
+                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
+                            "type": "object"
+                        },
+                        "type": "object"
+                    }}
+                }
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/actuator/loggers/{name}": {
+            "post": {
+                "summary": "Actuator web endpoint 'loggers-name'",
+                "requestBody": {"content": {"application/json": {"schema": {
+                    "type": "string",
+                    "enum": [
+                        "TRACE",
+                        "DEBUG",
+                        "INFO",
+                        "WARN",
+                        "ERROR",
+                        "FATAL",
+                        "OFF"
+                    ]
+                }}}},
+                "operationId": "loggers-name_2",
+                "responses": {"200": {
+                    "description": "OK",
+                    "content": {"*/*": {"schema": {"type": "object"}}}
+                }},
+                "parameters": [{
+                    "schema": {"type": "string"},
+                    "in": "path",
+                    "name": "name",
+                    "required": true
+                }],
+                "tags": ["Actuator"]
+            },
+            "get": {
+                "summary": "Actuator web endpoint 'loggers-name'",
+                "operationId": "loggers-name",
+                "responses": {"200": {
+                    "description": "OK",
+                    "content": {
+                        "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                        "application/json": {"schema": {"type": "object"}},
+                        "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                    }
+                }},
+                "parameters": [{
+                    "schema": {"type": "string"},
+                    "in": "path",
+                    "name": "name",
+                    "required": true
+                }],
+                "tags": ["Actuator"]
+            }
+        },
+        "/a1-policy/v2/services/{service_id}/keepalive": {"put": {
+            "summary": "Heartbeat indicates that the service is running",
+            "description": "A registered service should invoke this operation regularly to indicate that it is still alive. If a registered service fails to invoke this operation before the end of a timeout period the service will be deregistered and all its A1 policies wil be removed. (This timeout can be set or disabled when each service is initially registered)",
+            "operationId": "keepAliveService",
+            "responses": {
+                "200": {
+                    "description": "Service supervision timer refreshed, OK",
+                    "content": {"*/*": {"schema": {"type": "object"}}}
+                },
+                "404": {
+                    "description": "The service is not found, needs re-registration",
+                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                 }
                 }
-              }
-            }
-          },
-          "201" : {
-            "description" : "Created - Service created",
-            "content" : {
-              "*/*" : {
-                "schema" : {
-                  "type" : "object"
+            },
+            "parameters": [{
+                "schema": {"type": "string"},
+                "in": "path",
+                "name": "service_id",
+                "required": true
+            }],
+            "tags": ["Service Registry and Supervision"]
+        }},
+        "/actuator/metrics": {"get": {
+            "summary": "Actuator web endpoint 'metrics'",
+            "operationId": "metrics",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/a1-policy/v2/rics": {"get": {
+            "summary": "Query Near-RT RIC information",
+            "description": "The call returns all Near-RT RICs that supports a given policy type identity",
+            "operationId": "getRics",
+            "responses": {
+                "200": {
+                    "description": "OK",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ric_info_list_v2"}}}
+                },
+                "404": {
+                    "description": "Policy type is not found",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                 }
                 }
-              }
-            }
-          },
-          "400" : {
-            "description" : "Bad Request",
-            "content" : {
-              "application/problem+json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/error_information"
+            },
+            "parameters": [{
+                "schema": {"type": "string"},
+                "in": "query",
+                "name": "policytype_id",
+                "description": "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned",
+                "required": false
+            }],
+            "tags": ["NearRT-RIC Repository"]
+        }},
+        "/a1-policy/v2/services": {
+            "get": {
+                "summary": "Returns service information",
+                "description": "Either information about a registered service with given identity or all registered services are returned.",
+                "operationId": "getServices",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_list_v2"}}}
+                    },
+                    "404": {
+                        "description": "Service is not found",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+                    }
+                },
+                "parameters": [{
+                    "schema": {"type": "string"},
+                    "in": "query",
+                    "name": "service_id",
+                    "description": "The identity of the service",
+                    "required": false
+                }],
+                "tags": ["Service Registry and Supervision"]
+            },
+            "put": {
+                "summary": "Register a service",
+                "requestBody": {
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_registration_info_v2"}}},
+                    "required": true
                 },
                 },
-                "example" : {
-                  "status" : 400,
-                  "title" : "Bad Request",
-                  "detail" : "The provided request is not valid."
+                "description": "Registering a service is needed to:<ul><li>Get callbacks about available NearRT RICs.<\/li><li>Activate supervision of the service. If a service is inactive, its policies will automatically be deleted.<\/li><\/ul>Policies can be created even if the service is not registerred. This is a feature which it is optional to use.",
+                "operationId": "putService",
+                "responses": {
+                    "200": {
+                        "description": "Service updated",
+                        "content": {"*/*": {"schema": {"type": "object"}}}
+                    },
+                    "201": {
+                        "description": "Service created",
+                        "content": {"*/*": {"schema": {"type": "object"}}}
+                    },
+                    "400": {
+                        "description": "The ServiceRegistrationInfo is not accepted",
+                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+                    }
+                },
+                "tags": ["Service Registry and Supervision"]
+            }
+        },
+        "/actuator/info": {"get": {
+            "summary": "Actuator web endpoint 'info'",
+            "operationId": "info",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/status": {"get": {
+            "summary": "Returns status and statistics of this service",
+            "operationId": "getStatusV1",
+            "responses": {"200": {
+                "description": "Service is living",
+                "content": {"*/*": {"schema": {"type": "string"}}}
+            }},
+            "tags": ["Health Check"]
+        }},
+        "/a1-policy/v2/policy-types/{policytype_id}": {"get": {
+            "summary": "Returns a policy type definition",
+            "operationId": "getPolicyType",
+            "responses": {
+                "200": {
+                    "description": "Policy type",
+                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/policytype_v2"}}}
+                },
+                "404": {
+                    "description": "Policy type is not found",
+                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                 }
                 }
-              }
-            }
-          }
-        },
-        "callbacks" : {
-          "RICStatus" : {
-            "{$request.body#/callback_url}" : {
-              "post" : {
-                "tags" : [ "Service callbacks" ],
-                "summary" : "Callback for Near-RT RIC status",
-                "description" : "The URL to this call is registered at Service registration.",
-                "operationId" : "serviceCallback",
-                "requestBody" : {
-                  "content" : {
-                    "application/json" : {
-                      "schema" : {
-                        "$ref" : "#/components/schemas/service_callback_info_v2"
-                      }
+            },
+            "parameters": [{
+                "schema": {"type": "string"},
+                "in": "path",
+                "name": "policytype_id",
+                "required": true
+            }],
+            "tags": ["A1 Policy Management"]
+        }},
+        "/actuator/logfile": {"get": {
+            "summary": "Actuator web endpoint 'logfile'",
+            "operationId": "logfile",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {"text/plain;charset=UTF-8": {"schema": {"type": "object"}}}
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/actuator/health": {"get": {
+            "summary": "Actuator web endpoint 'health'",
+            "operationId": "health",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {
+                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
+                    "application/json": {"schema": {"type": "object"}},
+                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
+                }
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/a1-policy/v2/policies": {
+            "get": {
+                "summary": "Query policy identities",
+                "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": "getPolicyIds",
+                "responses": {
+                    "200": {
+                        "description": "Policy identities",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_id_list_v2"}}}
+                    },
+                    "404": {
+                        "description": "Near-RT RIC or type not found",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                     }
                     }
-                  },
-                  "required" : true
                 },
                 },
-                "responses" : {
-                  "200" : {
-                    "description" : "OK",
-                    "content" : {
-                      "application/json" : {
-                        "schema" : {
-                          "$ref" : "#/components/schemas/void"
-                        }
-                      }
+                "parameters": [
+                    {
+                        "schema": {"type": "string"},
+                        "in": "query",
+                        "name": "policytype_id",
+                        "description": "Select policies of a given policy type identity.",
+                        "required": false
+                    },
+                    {
+                        "schema": {"type": "string"},
+                        "in": "query",
+                        "name": "ric_id",
+                        "description": "Select policies of a given Near-RT RIC identity.",
+                        "required": false
+                    },
+                    {
+                        "schema": {"type": "string"},
+                        "in": "query",
+                        "name": "service_id",
+                        "description": "Select policies owned by a given service.",
+                        "required": false
+                    },
+                    {
+                        "schema": {"type": "string"},
+                        "in": "query",
+                        "name": "type_name",
+                        "description": "Select policies of types with the given type name (type identity has the format <typename_version>)",
+                        "required": false
                     }
                     }
-                  },
-                  "404" : {
-                    "description" : "Not Found",
-                    "content" : {
-                      "application/problem+json" : {
-                        "example" : [ ]
-                      }
+                ],
+                "tags": ["A1 Policy Management"]
+            },
+            "put": {
+                "summary": "Create or update a policy",
+                "requestBody": {
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_v2"}}},
+                    "required": true
+                },
+                "operationId": "putPolicy",
+                "responses": {
+                    "200": {
+                        "description": "Policy updated",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
+                    },
+                    "201": {
+                        "description": "Policy created",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
+                    },
+                    "423": {
+                        "description": "Near-RT RIC is not operational",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
+                    },
+                    "404": {
+                        "description": "Near-RT RIC or policy type is not found",
+                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                     }
                     }
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    "/actuator/info" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'info'",
-        "operationId" : "info",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/status" : {
-      "get" : {
-        "tags" : [ "Health Check" ],
-        "description" : "Returns status and statistics of this service",
-        "operationId" : "getStatusV1",
-        "responses" : {
-          "200" : {
-            "description" : "OK -  Service is living",
-            "content" : {
-              "*/*" : {
-                "schema" : {
-                  "type" : "string"
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    "/a1-policy/v2/policy-types/{policytype_id}" : {
-      "get" : {
-        "tags" : [ "A1 Policy Management" ],
-        "description" : "Returns a policy type definition",
-        "operationId" : "getPolicyTypeDefinition",
-        "parameters" : [ {
-          "name" : "policytype_id",
-          "in" : "path",
-          "required" : true,
-          "style" : "simple",
-          "explode" : false,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK - schema of the given policy type",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/policy_type_definition"
                 },
                 },
-                "examples" : {
-                  "policy_type_definition" : {
-                    "$ref" : "#/components/examples/policy_type_definition"
-                  }
-                }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      }
-    },
-    "/actuator/logfile" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'logfile'",
-        "operationId" : "logfile",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "text/plain;charset=UTF-8" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
+                "tags": ["A1 Policy Management"]
             }
             }
-          }
         },
         },
-        "x-internal" : true
-      }
-    },
-    "/actuator/health" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'health'",
-        "operationId" : "health",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/vnd.spring-boot.actuator.v3+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              },
-              "application/vnd.spring-boot.actuator.v2+json" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/a1-policy/v2/policies" : {
-      "get" : {
-        "tags" : [ "A1 Policy Management" ],
-        "summary" : "Query policy identities",
-        "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" : "getPolicyIds",
-        "parameters" : [ {
-          "name" : "policytype_id",
-          "in" : "query",
-          "description" : "Select policies of a given policy type identity.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        }, {
-          "name" : "ric_id",
-          "in" : "query",
-          "description" : "Select policies of a given Near-RT RIC identity.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        }, {
-          "name" : "service_id",
-          "in" : "query",
-          "description" : "Select policies owned by a given service.",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        }, {
-          "name" : "type_name",
-          "in" : "query",
-          "description" : "Select policies of types with the given type name (type identity has the format <typename_version>)",
-          "required" : false,
-          "style" : "form",
-          "explode" : true,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK - Policy identities",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/policy_id_list"
+        "/r-app/near-rt-ric-status": {"post": {
+            "summary": "Callback for Near-RT RIC status",
+            "requestBody": {
+                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_callback_info_v2"}}},
+                "required": true
+            },
+            "description": "The URL to this call is registered at Service registration.",
+            "operationId": "serviceCallback",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
+            }},
+            "tags": ["Service callbacks"]
+        }},
+        "/a1-policy/v2/services/{service_id}": {"delete": {
+            "summary": "Unregister a service",
+            "operationId": "deleteService",
+            "responses": {
+                "200": {
+                    "description": "Not used",
+                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
                 },
                 },
-                "examples" : {
-                  "policy_id_list" : {
-                    "$ref" : "#/components/examples/policy_id_list"
-                  }
-                }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      },
-      "put" : {
-        "tags" : [ "A1 Policy Management" ],
-        "description" : "Create or update a policy",
-        "operationId" : "putPolicy",
-        "requestBody" : {
-          "content" : {
-            "application/json" : {
-              "schema" : {
-                "$ref" : "#/components/schemas/policy_info"
-              }
-            }
-          },
-          "required" : true
-        },
-        "responses" : {
-          "200" : {
-            "description" : "OK - Policy updated",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/void"
-                }
-              }
-            }
-          },
-          "201" : {
-            "description" : "Created - Policy created",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/void"
-                }
-              }
-            }
-          },
-          "423" : {
-            "description" : "Locked - HTTP Status code which can be used when the state is Locked",
-            "content" : {
-              "application/problem+json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/error_information"
+                "204": {
+                    "description": "Service unregistered",
+                    "content": {"*/*": {"schema": {"type": "object"}}}
                 },
                 },
-                "example" : {
-                  "status" : 423,
-                  "title" : "Locked",
-                  "detail" : "Requested resource is in a locked state."
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    "/a1-policy/v2/services/{service_id}" : {
-      "delete" : {
-        "tags" : [ "Service Registry and Supervision" ],
-        "description" : "Unregister a service",
-        "operationId" : "deleteService",
-        "parameters" : [ {
-          "name" : "service_id",
-          "in" : "path",
-          "required" : true,
-          "style" : "simple",
-          "explode" : false,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "204" : {
-            "description" : "No Content - Service unregistered",
-            "content" : {
-              "*/*" : {
-                "schema" : {
-                  "type" : "object"
+                "404": {
+                    "description": "Service not found",
+                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                 }
                 }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      }
-    },
-    "/actuator/heapdump" : {
-      "get" : {
-        "tags" : [ "Actuator" ],
-        "summary" : "Actuator web endpoint 'heapdump'",
-        "operationId" : "heapdump",
-        "responses" : {
-          "200" : {
-            "description" : "OK",
-            "content" : {
-              "application/octet-stream" : {
-                "schema" : {
-                  "type" : "object"
-                }
-              }
-            }
-          }
-        },
-        "x-internal" : true
-      }
-    },
-    "/a1-policy/v2/policies/{policy_id}/status" : {
-      "get" : {
-        "tags" : [ "A1 Policy Management" ],
-        "description" : "Returns a policy status",
-        "operationId" : "getPolicyStatus",
-        "parameters" : [ {
-          "name" : "policy_id",
-          "in" : "path",
-          "required" : true,
-          "style" : "simple",
-          "explode" : false,
-          "schema" : {
-            "type" : "string"
-          }
-        } ],
-        "responses" : {
-          "200" : {
-            "description" : "OK -  Policy status",
-            "content" : {
-              "application/json" : {
-                "schema" : {
-                  "$ref" : "#/components/schemas/policy_status_info"
+            },
+            "parameters": [{
+                "schema": {"type": "string"},
+                "in": "path",
+                "name": "service_id",
+                "required": true
+            }],
+            "tags": ["Service Registry and Supervision"]
+        }},
+        "/actuator/heapdump": {"get": {
+            "summary": "Actuator web endpoint 'heapdump'",
+            "operationId": "heapdump",
+            "responses": {"200": {
+                "description": "OK",
+                "content": {"application/octet-stream": {"schema": {"type": "object"}}}
+            }},
+            "tags": ["Actuator"]
+        }},
+        "/a1-policy/v2/policies/{policy_id}/status": {"get": {
+            "summary": "Returns a policy status",
+            "operationId": "getPolicyStatus",
+            "responses": {
+                "200": {
+                    "description": "Policy status",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_status_info_v2"}}}
                 },
                 },
-                "examples" : {
-                  "policy_status_info" : {
-                    "$ref" : "#/components/examples/policy_status_info"
-                  }
+                "404": {
+                    "description": "Policy is not found",
+                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                 }
                 }
-              }
-            }
-          },
-          "404" : {
-            "description" : "Not Found",
-            "content" : {
-              "application/problem+json" : {
-                "example" : [ ]
-              }
-            }
-          }
-        }
-      }
-    }
-  },
-  "components" : {
-    "schemas" : {
-      "policy_type_definition" : {
-        "type" : "object",
-        "properties" : {
-          "policy_schema" : {
-            "type" : "object",
-            "description" : "Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema"
-          }
-        },
-        "description" : "Contains policy type schema definition"
-      },
-      "error_information" : {
-        "type" : "object",
-        "properties" : {
-          "detail" : {
-            "type" : "string",
-            "description" : " A human-readable explanation specific to this occurrence of the problem.",
-            "example" : "Policy type not found"
-          },
-          "title" : {
-            "type" : "string",
-            "description" : "A specific error name",
-            "example" : "Not Found"
-          },
-          "status" : {
-            "type" : "integer",
-            "description" : "The HTTP status code generated by the origin server for this occurrence of the problem. ",
-            "format" : "int32",
-            "example" : 404
-          }
-        },
-        "description" : "Problem as defined in https://tools.ietf.org/html/rfc7807"
-      },
-      "void" : {
-        "type" : "object",
-        "description" : "Void/empty"
-      },
-      "status_info" : {
-        "type" : "object",
-        "properties" : {
-          "status" : {
-            "type" : "string",
-            "description" : "status text"
-          }
-        }
-      },
-      "authorization_result" : {
-        "required" : [ "result" ],
-        "type" : "object",
-        "properties" : {
-          "result" : {
-            "type" : "boolean",
-            "description" : "If true, the access is granted"
-          }
-        },
-        "description" : "Result of authorization",
-        "example" : {
-          "result" : true
-        }
-      },
-      "ric_info" : {
-        "type" : "object",
-        "properties" : {
-          "ric_id" : {
-            "type" : "string",
-            "description" : "identity of the Near-RT RIC"
-          },
-          "managed_element_ids" : {
-            "type" : "array",
-            "description" : "O1 identities for managed entities",
-            "items" : {
-              "type" : "string",
-              "description" : "O1 identities for managed entities"
-            }
-          },
-          "state" : {
-            "type" : "string",
-            "description" : "Represents the states for a Near-RT RIC",
-            "enum" : [ "UNAVAILABLE", "AVAILABLE", "SYNCHRONIZING", "CONSISTENCY_CHECK" ]
-          },
-          "policytype_ids" : {
-            "type" : "array",
-            "description" : "supported policy types",
-            "items" : {
-              "type" : "string",
-              "description" : "supported policy types"
-            }
-          }
-        },
-        "description" : "Information for a Near-RT RIC"
-      },
-      "service_registration_info" : {
-        "required" : [ "service_id" ],
-        "type" : "object",
-        "properties" : {
-          "callback_url" : {
-            "type" : "string",
-            "description" : "callback for notifying of Near-RT RIC state changes"
-          },
-          "service_id" : {
-            "type" : "string",
-            "description" : "identity of the service"
-          },
-          "keep_alive_interval_seconds" : {
-            "type" : "integer",
-            "description" : "keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means timeout supervision is disabled.",
-            "format" : "int64"
-          }
-        },
-        "description" : "Information for one service"
-      },
-      "policy_info_list" : {
-        "type" : "object",
-        "properties" : {
-          "policies" : {
-            "type" : "array",
-            "description" : "List of policy information",
-            "items" : {
-              "$ref" : "#/components/schemas/policy_info"
-            }
-          }
-        },
-        "description" : "List of policy information"
-      },
-      "policy_status_info" : {
-        "type" : "object",
-        "properties" : {
-          "last_modified" : {
-            "type" : "string",
-            "description" : "timestamp, last modification time"
-          },
-          "status" : {
-            "type" : "object",
-            "description" : "the Policy status"
-          }
-        },
-        "description" : "Status for one A1-P Policy"
-      },
-      "service_status" : {
-        "type" : "object",
-        "properties" : {
-          "callback_url" : {
-            "type" : "string",
-            "description" : "callback for notifying of RIC synchronization"
-          },
-          "service_id" : {
-            "type" : "string",
-            "description" : "identity of the service"
-          },
-          "keep_alive_interval_seconds" : {
-            "type" : "integer",
-            "description" : "policy keep alive timeout",
-            "format" : "int64"
-          },
-          "time_since_last_activity_seconds" : {
-            "type" : "integer",
-            "description" : "time since last invocation by the service",
-            "format" : "int64"
-          }
-        }
-      },
-      "ric_info_list" : {
-        "type" : "object",
-        "properties" : {
-          "rics" : {
-            "type" : "array",
-            "description" : "List of Near-RT RIC information",
-            "items" : {
-              "$ref" : "#/components/schemas/ric_info"
-            }
-          }
-        },
-        "description" : "List of Near-RT RIC information"
-      },
-      "input" : {
-        "required" : [ "access_type", "auth_token", "policy_type_id" ],
-        "type" : "object",
-        "properties" : {
-          "access_type" : {
-            "type" : "string",
-            "description" : "Access type",
-            "enum" : [ "READ", "WRITE", "DELETE" ]
-          },
-          "auth_token" : {
-            "type" : "string",
-            "description" : "Authorization token"
-          },
-          "policy_type_id" : {
-            "type" : "string",
-            "description" : "Policy type identifier"
-          }
-        },
-        "description" : "input"
-      },
-      "policy_authorization" : {
-        "required" : [ "input" ],
-        "type" : "object",
-        "properties" : {
-          "input" : {
-            "$ref" : "#/components/schemas/input"
-          }
-        },
-        "description" : "Authorization request for A1 policy requests"
-      },
-      "policy_type_id_list" : {
-        "type" : "object",
-        "properties" : {
-          "policytype_ids" : {
-            "type" : "array",
-            "description" : "Policy type identities",
-            "items" : {
-              "type" : "string",
-              "description" : "Policy type identities"
-            }
-          }
-        },
-        "description" : "Information about policy types"
-      },
-      "policy_info" : {
-        "required" : [ "policy_data", "policy_id", "policytype_id", "ric_id", "service_id" ],
-        "type" : "object",
-        "properties" : {
-          "ric_id" : {
-            "type" : "string",
-            "description" : "identity of the target Near-RT RIC"
-          },
-          "policy_id" : {
-            "type" : "string",
-            "description" : "identity of the policy"
-          },
-          "transient" : {
-            "type" : "boolean",
-            "description" : "if true, the policy is deleted at RIC restart. If false, its value is maintained by this service until explicitly deleted. Default false.",
-            "nullable" : false,
-            "example" : false,
-            "default" : false
-          },
-          "service_id" : {
-            "type" : "string",
-            "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered."
-          },
-          "policy_data" : {
-            "type" : "object",
-            "description" : "the configuration of the policy"
-          },
-          "status_notification_uri" : {
-            "type" : "string",
-            "description" : "Callback URI for policy status updates"
-          },
-          "policytype_id" : {
-            "type" : "string",
-            "description" : "identity of the policy type"
-          }
-        },
-        "description" : "Information for one A1-P Policy"
-      },
-      "policy_id_list" : {
-        "type" : "object",
-        "properties" : {
-          "policy_ids" : {
-            "type" : "array",
-            "description" : "Policy identities",
-            "items" : {
-              "type" : "string",
-              "description" : "Policy identities"
-            }
-          }
-        },
-        "description" : "A list of policy identities",
-        "example" : {
-          "policy_ids" : [ "policy_ids", "policy_ids" ]
-        }
-      },
-      "service_status_list" : {
-        "type" : "object",
-        "properties" : {
-          "service_list" : {
-            "type" : "array",
-            "description" : "List of service information",
-            "items" : {
-              "$ref" : "#/components/schemas/service_status"
-            }
-          }
-        }
-      },
-      "service_callback_info_v2" : {
-        "required" : [ "event_type", "ric_id" ],
-        "type" : "object",
-        "properties" : {
-          "ric_id" : {
-            "type" : "string",
-            "description" : "identity of a Near-RT RIC"
-          },
-          "event_type" : {
-            "type" : "string",
-            "description" : "values:\nAVAILABLE: the  Near-RT RIC has become available for A1 Policy management",
-            "enum" : [ "AVAILABLE" ]
-          }
-        },
-        "description" : "Information transferred as in Service callbacks (callback_url)"
-      },
-      "Link" : {
-        "type" : "object",
-        "properties" : {
-          "templated" : {
-            "type" : "boolean"
-          },
-          "href" : {
-            "type" : "string"
-          }
-        }
-      }
-    },
-    "responses" : {
-      "Locked" : {
-        "description" : "Locked - HTTP Status code which can be used when the state is Locked",
-        "content" : {
-          "application/problem+json" : {
-            "schema" : {
-              "$ref" : "#/components/schemas/error_information"
-            },
-            "example" : {
-              "status" : 423,
-              "title" : "Locked",
-              "detail" : "Requested resource is in a locked state."
-            }
-          }
-        }
-      },
-      "BadRequest" : {
-        "description" : "Bad Request",
-        "content" : {
-          "application/problem+json" : {
-            "schema" : {
-              "$ref" : "#/components/schemas/error_information"
             },
             },
-            "example" : {
-              "status" : 400,
-              "title" : "Bad Request",
-              "detail" : "The provided request is not valid."
-            }
-          }
-        }
-      },
-      "Forbidden" : {
-        "description" : "Forbidden",
-        "content" : {
-          "application/problem+json" : {
-            "schema" : {
-              "$ref" : "#/components/schemas/error_information"
-            },
-            "example" : {
-              "status" : 403,
-              "title" : "Forbidden",
-              "detail" : "Your role does not allow to perform this action. Contact System Administrator to change your access rights."
-            }
-          }
-        }
-      },
-      "NotFound" : {
-        "description" : "Not Found",
-        "content" : {
-          "application/problem+json" : {
-            "example" : [ ]
-          }
-        }
-      }
+            "parameters": [{
+                "schema": {"type": "string"},
+                "in": "path",
+                "name": "policy_id",
+                "required": true
+            }],
+            "tags": ["A1 Policy Management"]
+        }}
     },
     },
-    "examples" : {
-      "service_status" : {
-        "description" : "List of service information",
-        "value" : {
-          "callback_url" : "callback_url",
-          "service_id" : "service_id",
-          "keep_alive_interval_seconds" : 0,
-          "time_since_last_activity_seconds" : 6
-        }
-      },
-      "service_status_list" : {
-        "description" : "List of service information",
-        "value" : {
-          "service_list" : [ {
-            "callback_url" : "callback_url",
-            "service_id" : "service_id",
-            "keep_alive_interval_seconds" : 0,
-            "time_since_last_activity_seconds" : 6
-          }, {
-            "callback_url" : "callback_url",
-            "service_id" : "service_id",
-            "keep_alive_interval_seconds" : 0,
-            "time_since_last_activity_seconds" : 6
-          } ]
-        }
-      },
-      "policy_type_definition" : {
-        "description" : "Schema of the given Policy type",
-        "value" : {
-          "policy_schema" : "{}"
-        }
-      },
-      "policy_type_id_list" : {
-        "description" : "Array of policy type id's",
-        "value" : {
-          "policy_type_id_list" : [ "policytype_id", "policytype_id" ]
-        }
-      },
-      "policy_info" : {
-        "description" : "Policy information of one A1-P policy",
-        "value" : {
-          "ric_id" : "ric_id",
-          "policy_id" : "policy_id",
-          "transient" : false,
-          "service_id" : "service_id",
-          "policy_data" : "{}",
-          "status_notification_uri" : "status_notification_uri",
-          "policytype_id" : "policytype_id"
-        }
-      },
-      "policy_info_list" : {
-        "description" : "List of policy information",
-        "value" : {
-          "policies" : [ {
-            "ric_id" : "ric_id",
-            "policy_id" : "policy_id",
-            "transient" : false,
-            "service_id" : "service_id",
-            "policy_data" : "{}",
-            "status_notification_uri" : "status_notification_uri",
-            "policytype_id" : "policytype_id"
-          }, {
-            "ric_id" : "ric_id",
-            "policy_id" : "policy_id",
-            "transient" : false,
-            "service_id" : "service_id",
-            "policy_data" : "{}",
-            "status_notification_uri" : "status_notification_uri",
-            "policytype_id" : "policytype_id"
-          } ]
-        }
-      },
-      "policy_id_list" : {
-        "description" : "A list of policy identities",
-        "value" : {
-          "policy_ids" : [ "some_policy_id", "some_policy_id" ]
-        }
-      },
-      "policy_status_info" : {
-        "description" : "Status for one A1-P Policy",
-        "value" : {
-          "last_modified" : "last_modified",
-          "status" : {
-            "value" : {
-              "status" : "status"
+    "info": {
+        "license": {
+            "name": "Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License.",
+            "url": "http://www.apache.org/licenses/LICENSE-2.0"
+        },
+        "description": "<h2>General<\/h2><p>The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policies. <br/>The main tasks of the service are:<\/p><ul><li>A1 Policy creation, modification and deletion.<\/li><li>Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs<\/li><li>Maintaining a view of supported Near-RT RIC policy types<\/li><li>Supervision of using services (R-APPs). When a service is unavailable, its policies are removed.<\/li><\/ul><h2>APIs provided or defined by the service<\/h2><h3>A1 Policy Management<\/h3><p>This is an API for management of A1 Policies.<\/p><ul><li>A1 Policy retrieval, creation, modification and deletion.<\/li><li>Retrieval of supported A1 Policy types for a Near-RT RIC<\/li><li>Retrieval of status for existing A1 policies<\/li><\/ul><h3>Management of configuration<\/h3><p>API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.<\/p><h3>Service callbacks<\/h3><p>These are endpoints that are invoked by this service. The callbacks are registered in this service at service registration.<\/p><h3>NearRT-RIC Repository<\/h3><p>This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.<\/p><h3>Health Check<\/h3><p>API used for supervision of the PMS component.<\/p><h3>Service Registry and Supervision<\/h3><p>API used for registering services that uses PMS. Each A1 policy is optionally owned by a service. PMS can supervise each registered service by a heart-beat supervision and will automatically remove policies for unavailable services. Note that a service does not need to be registered in order to create A1 Policies. This is a feature that is optional to use.<\/p><h3>Authorization API<\/h3><p>API used for access control of A1 Policy access. If configured, an external authorization provider is requested to grant access to the A1 Policy type.<\/p><h3>Spring Boot Actuator<\/h3><p>Provides generic functions  used to monitor and manage the Spring web application.<\/p>",
+        "title": "A1 Policy Management Service",
+        "version": "1.2.0"
+    },
+    "tags": [
+        {
+            "name": "Authorization API",
+            "description": "API used for authorization of information A1 policy access (this is provided by an authorization producer such as OPA).\nNote that this API is called by PMS, it is not provided.\n"
+        },
+        {
+            "name": "Actuator",
+            "description": "Monitor and interact",
+            "externalDocs": {
+                "description": "Spring Boot Actuator Web API Documentation",
+                "url": "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/"
             }
             }
-          }
-        }
-      },
-      "status_info" : {
-        "value" : {
-          "status" : "status"
-        }
-      },
-      "ric_info" : {
-        "value" : {
-          "ric_id" : "ric_id",
-          "managed_element_ids" : [ "some_managed_element_id", "some_managed_element_id" ],
-          "state" : "UNAVAILABLE",
-          "policytype_ids" : [ "some_policytype_id", "some_policytype_id" ]
-        }
-      },
-      "ric_info_list" : {
-        "value" : {
-          "rics" : [ {
-            "ric_id" : "ric_id",
-            "managed_element_ids" : [ "some_managed_element_id", "some_managed_element_id" ],
-            "state" : "UNAVAILABLE",
-            "policytype_ids" : [ "policytype_id", "policytype_id" ]
-          }, {
-            "ric_id" : "ric_id",
-            "managed_element_ids" : [ "managed_element_ids", "managed_element_ids" ],
-            "state" : "UNAVAILABLE",
-            "policytype_ids" : [ "policytype_ids", "policytype_ids" ]
-          } ]
         }
         }
-      }
-    }
-  }
+    ]
 }
\ No newline at end of file
 }
\ No newline at end of file
index 4f80d2e..52b70d1 100644 (file)
@@ -20,6 +20,8 @@
 # ============LICENSE_END=========================================================
 #
 spring:
 # ============LICENSE_END=========================================================
 #
 spring:
+  application:
+    name: a1-pms
   profiles:
     active: prod
   main:
   profiles:
     active: prod
   main:
@@ -27,6 +29,22 @@ spring:
   aop:
     auto: false
 management:
   aop:
     auto: false
 management:
+  otlp:
+    metrics:
+      export:
+        enabled: false
+  tracing:
+    sampler:
+      jaeger_remote:
+        endpoint: ${ONAP_OTEL_SAMPLER_JAEGER_REMOTE_ENDPOINT:http://jaeger:14250}
+    exporter:
+      endpoint: ${ONAP_OTEL_EXPORTER_ENDPOINT:http://jaeger:4317}
+      protocol: ${ONAP_OTEL_EXPORTER_PROTOCOL:grpc}
+    enabled: ${ONAP_TRACING_ENABLED:false}
+    propagation:
+      produce: ${ONAP_PROPAGATOR_PRODUCE:[W3C]}
+    sampling:
+      probability: 1.0
   endpoints:
     web:
       exposure:
   endpoints:
     web:
       exposure:
@@ -100,3 +118,8 @@ app:
     accessKeyId: minio
     secretAccessKey: miniostorage
     bucket:
     accessKeyId: minio
     secretAccessKey: miniostorage
     bucket:
+otel:
+  exporter:
+    otlp:
+      traces:
+        protocol: ${ONAP_OTEL_EXPORTER_OTLP_TRACES_PROTOCOL:grpc}
index ca358db..a183aeb 160000 (submodule)
--- a/onap/oran
+++ b/onap/oran
@@ -1 +1 @@
-Subproject commit ca358db2db62bda9604cff0af56c5b5106371811
+Subproject commit a183aebd04d1871fb1a6ad2dab2312b2344465ba
diff --git a/pom.xml b/pom.xml
index 309c95a..d9f427b 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -48,7 +48,7 @@
     </repositories>
     <properties>
         <java.version>17</java.version>
     </repositories>
     <properties>
         <java.version>17</java.version>
-        <software.amazon.awssdk.version>2.19.17</software.amazon.awssdk.version>
+        <software.amazon.awssdk.version>2.20.12</software.amazon.awssdk.version>
         <json.version>20231013</json.version>
         <commons-io.version>2.14.0</commons-io.version>
         <guava.version>32.0.1-jre</guava.version>
         <json.version>20231013</json.version>
         <commons-io.version>2.14.0</commons-io.version>
         <guava.version>32.0.1-jre</guava.version>
             <artifactId>lombok</artifactId>
             <scope>provided</scope>
         </dependency>
             <artifactId>lombok</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct</artifactId>
+            <version>1.5.5.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct-processor</artifactId>
+            <version>1.5.5.Final</version>
+        </dependency>
         <!-- Actuator dependencies -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
         <!-- Actuator dependencies -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>everit-json-schema</artifactId>
             <version>1.14.0</version>
         </dependency>
             <artifactId>everit-json-schema</artifactId>
             <version>1.14.0</version>
         </dependency>
+       <!-- For Tracing -->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-tracing-bridge-otel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.opentelemetry</groupId>
+            <artifactId>opentelemetry-exporter-otlp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.opentelemetry</groupId>
+            <artifactId>opentelemetry-sdk-extension-jaeger-remote-sampler</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.opentelemetry</groupId>
+            <artifactId>opentelemetry-sdk-extension-autoconfigure</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.opentelemetry.instrumentation</groupId>
+            <artifactId>opentelemetry-spring-webflux-5.3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>context-propagation</artifactId>
+            <version>1.0.2</version>
+        </dependency>
+        <!-- For ObservationRegistryCustomizer -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-actuator-autoconfigure</artifactId>
+        </dependency>
     </dependencies>
     </dependencies>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>io.opentelemetry</groupId>
+                <artifactId>opentelemetry-bom</artifactId>
+                <version>1.38.0</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.opentelemetry.instrumentation</groupId>
+                <artifactId>opentelemetry-instrumentation-bom-alpha</artifactId>
+                <version>2.4.0-alpha</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
     <build>
         <plugins>
             <plugin>
     <build>
         <plugins>
             <plugin>
                 <artifactId>openapi-generator-maven-plugin</artifactId>
                 <version>6.6.0</version>
                 <executions>
                 <artifactId>openapi-generator-maven-plugin</artifactId>
                 <version>6.6.0</version>
                 <executions>
+                    <execution>
+                        <id>generate-openapi-html</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            <inputSpec>${project.basedir}/api/pms-api.json</inputSpec>
+                            <generatorName>html2</generatorName>
+                            <output>${project.basedir}/api/pms-api</output>
+                            <skipOperationExample>false</skipOperationExample>
+                            <strictSpec>false</strictSpec>
+                            <configOptions>
+                                <appDescription>The O-RAN Non-RT RIC A1 Policy Management Service
+                                    provides a REST API for managing O-RAN A1 Policies.</appDescription>
+                                <appName>ONAP CCSDK A1 Policy Management Service</appName>
+                                <infoUrl>https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP</infoUrl>
+                                <licenseInfo>Copyright (C) 2020-2023 Nordix Foundation. Licensed
+                                    under the Apache License, and Copyright (C) 2024 OpenInfra
+                                    Foundation Europe. All rights reserved.</licenseInfo>
+                                <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
+                            </configOptions>
+                        </configuration>
+                    </execution>
                     <execution>
                         <id>generate-openapi-policy-api</id>
                         <phase>generate-sources</phase>
                     <execution>
                         <id>generate-openapi-policy-api</id>
                         <phase>generate-sources</phase>
                         </configuration>
                     </execution>
                     <execution>
                         </configuration>
                     </execution>
                     <execution>
-                        <id>generate-openapi-html</id>
-                        <phase>prepare-package</phase>
+                        <id>generate-policy-api-v3</id>
+                        <phase>generate-sources        </phase>
                         <goals>
                             <goal>generate</goal>
                         </goals>
                         <configuration>
                         <goals>
                             <goal>generate</goal>
                         </goals>
                         <configuration>
-                            <inputSpec>${project.basedir}/api/pms-api.json</inputSpec>
-                            <generatorName>html2</generatorName>
-                            <output>${project.basedir}/api/pms-api</output>
-                            <skipOperationExample>false</skipOperationExample>
-                            <strictSpec>false</strictSpec>
+                            <inputSpec>${project.basedir}/api/pms-api-v3.yaml</inputSpec>
+                            <invokerPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.v3</invokerPackage>
+                            <apiPackage>org.onap.ccsdk.oran.a1policymanagementservice.controllers.api.v3</apiPackage>
+                            <modelPackage>org.onap.ccsdk.oran.a1policymanagementservice.models.v3</modelPackage>
+                            <generateApiTests>false</generateApiTests>
+                            <generateModelTests>false</generateModelTests>
+                            <generatorName>spring</generatorName>
+                            <generateSupportingFiles>false</generateSupportingFiles>
+                            <skipValidateSpec>false</skipValidateSpec>
+                            <library>spring-boot</library>
                             <configOptions>
                             <configOptions>
-                                <appDescription>The O-RAN Non-RT RIC A1 Policy Management Service
-                                    provides a REST API for managing O-RAN A1 Policies.</appDescription>
-                                <appName>ONAP CCSDK A1 Policy Management Service</appName>
-                                <infoUrl>https://wiki.onap.org/display/DW/O-RAN+A1+Policies+in+ONAP</infoUrl>
-                                <licenseInfo>Copyright (C) 2020-2023 Nordix Foundation. Licensed
-                                    under the Apache License, and Copyright (C) 2024 OpenInfra
-                                    Foundation Europe. All rights reserved.</licenseInfo>
-                                <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>
+                                <interfaceOnly>true</interfaceOnly>
+                                <useTags>true</useTags>
+                                <reactive>true</reactive>
+                                <dateLibrary>java8</dateLibrary>
+                                <java8>true</java8>
+                                <unhandledException>true</unhandledException>
+                                <openApiNullable>false</openApiNullable>
+                                <skipDefaultInterface>true</skipDefaultInterface>
                             </configOptions>
                         </configuration>
                     </execution>
                             </configOptions>
                         </configuration>
                     </execution>
-                </executions>
+                 </executions>
             </plugin>
             <plugin>
                 <artifactId>maven-resources-plugin</artifactId>
             </plugin>
             <plugin>
                 <artifactId>maven-resources-plugin</artifactId>
                                     <includes>
                                         <include>pms-api.json</include>
                                         <include>pms-api.yaml</include>
                                     <includes>
                                         <include>pms-api.json</include>
                                         <include>pms-api.yaml</include>
+                                        <include>pms-api-v3.yaml</include>
                                     </includes>
                                     </resource>
                             </resources>
                                     </includes>
                                     </resource>
                             </resources>
                                     <directory>${project.basedir}/api/pms-api</directory>
                                     <includes>
                                         <include>pms-api.html</include>
                                     <directory>${project.basedir}/api/pms-api</directory>
                                     <includes>
                                         <include>pms-api.html</include>
+                                        <include>index.html</include>
                                     </includes>
                                 </resource>
                             </resources>
                                     </includes>
                                 </resource>
                             </resources>