#  ============LICENSE_START=======================================================
#  Copyright (C) 2020-2023 Nordix Foundation. All rights reserved.
#  Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
#  ================================================================================
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
#  SPDX-License-Identifier: Apache-2.0
#  ============LICENSE_END=========================================================

openapi: 3.0.3
info:
  contact:
    email: discuss-list@onap.com
    name: ONAP CCSDK Project
    url: https://www.onap.org/
  description: "<h2>General</h2><p>The ONAP CCSDK A1 Policy Management Service provides\
    \ a REST API for managing A1 policies. <br/>This document describes an older pre-spec\
    \ API set  to perform tasks for: </p><ul><li>A1 Policy creation, modification\
    \ and deletion.</li><li>Monitoring and maintaining consistency of the SMO view\
    \ of A1 Policies and the Near-RT RICs</li><li>Maintaining a view of each Near-RT\
    \ RIC's supported A1 Policy Types</li><li>Supervision of registered services (rApps).\
    \ When a registered service is unavailable, its policies are removed.</li></ul><h2>APIs\
    \ provided or defined by the service</h2><h3>A1 Policy Management (Older pre-spec\
    \ version) </h3> <p>This is an older API for managing A1 Policies:</p><ul><li>A1\
    \ Policy retrieval, creation, modification and deletion.</li><li>Retrieval of\
    \ supported A1 Policy Types for a Near-RT RIC</li><li>Retrieval of status for\
    \ existing A1 policies</li></ul><h3>Management of configuration</h3><p>API for\
    \ updating and retrieval of the component configuration. Note that there other\
    \ ways to maintain the configuration.</p><h3>Service Callbacks</h3><p>These are\
    \ endpoints that are invoked by this service. The callbacks are registered in\
    \ this service at service registration.</p><h3>NearRT-RIC Repository  (Older version)</h3>\
    \ <p>This is an API that provides support for looking up a NearRT-RIC. Each A1\
    \ policy is targeted towards one Near-RT RIC.</p><h3>Health Check</h3><p>API used\
    \ for supervision of the A1 Policy Management Service .</p><h3>Service Registry\
    \ and Supervision</h3> <p>API used for registering services/clients/rApps. Each\
    \ A1 Policy can be tagged with an owner. If the owner service is registered, then\
    \ the service can be monitored by a heart-beat supervision mechanism, and if the\
    \ registered service becomes unavailable, then its A1 Policies are removed. Note\
    \  that services do not need to be registered to create A1 Policies, but unregistered\
    \ services are not  supervised. This is a feature that is optional to use.</p><h3>Authorization\
    \ API</h3><p>API used for access control of A1 Policy access. If configured, an\
    \ external authorization provider is requested to grant access to the A1 Policy\
    \ Type.</p><h3>Spring Boot Actuator</h3><p>Provides built-in functions used to\
    \ monitor and configure the Spring web application hosting the service.</p>"
  license:
    name: "Copyright (C) 2020-2023 Nordix Foundation, and Copyright (C) 2024-2025\
      \ OpenInfra Foundation Europe. \nAll rights reserved. Licensed under the Apache\
      \ 2 License.\n"
    url: http://www.apache.org/licenses/LICENSE-2.0
  title: ONAP CCSDK - Pre-Spec A1 Policy Management API
  version: 1.3.0
  x-api-id: a31c510b-20e6-4a08-af16-368c44d7fba8
  x-audience: external-public
servers:
- url: /
tags:
- description: |
    Older pre-spec API used to get, create, update and delete A1 Policy Instances. Also used to query A1 Policy Types.
  name: A1 Policy Management
- description: |
    Older API used to get information about registered Near-RT RICs.
  name: NearRT-RIC Repository
- description: |
    Older API used to manage registered services, and control their keep-alive status via heart-beat messages.
  name: Service Registry and Supervision
- description: |
    API used to get the health status and statistics of this service
  name: Health Check
- description: |
    Callout to registered services to indicate a status changes for a Near-RT RIC. Note that these operations are called by the A1 Policy Management Service, not provided.
  name: Service Callbacks
- description: |
    API used for authorization of information A1 policy access (this is provided by an authorization producer such as OPA).  Note that these operations are called by the A1 Policy Management Service, not provided.
  name: Authorization API
- description: |
    API used to create or fetch the application configuration.
  name: Configuration
- description: |
    API used to monitor and configure the A1-PMS Springboot Service.
  externalDocs:
    description: Spring Boot Actuator Web API Documentation
    url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
  name: Actuator API
paths:
  /status:
    get:
      description: Returns status and statistics of this service
      operationId: getStatusV1
      responses:
        "200":
          content:
            '*/*':
              schema:
                type: string
          description: OK -  Service is living
      summary: Get Status (getStatusV1)
      tags:
      - Health Check
  /a1-policy/v2/status:
    get:
      description: Returns status and statistics of this service
      operationId: getStatus
      responses:
        "200":
          content:
            application/json:
              examples:
                status_info:
                  $ref: '#/components/examples/status_info'
              schema:
                $ref: '#/components/schemas/status_info'
          description: OK- Service is living Ok
      summary: Get Status (getStatus)
      tags:
      - Health Check
  /a1-policy/v2/rics/ric:
    get:
      description: |
        Query information about a Near-RT RIC. Either a Near-RT RIC identity or a Managed Element  identity can be specified. The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).
      operationId: getRic
      parameters:
      - description: |
          The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.
        explode: true
        in: query
        name: managed_element_id
        required: false
        schema:
          type: string
        style: form
      - description: The identity of a Near-RT RIC to get information for.
        explode: true
        in: query
        name: ric_id
        required: false
        schema:
          type: string
        style: form
      responses:
        "200":
          content:
            application/json:
              examples:
                ric_info:
                  $ref: '#/components/examples/ric_info'
              schema:
                $ref: '#/components/schemas/ric_info'
          description: OK - Near-RT RIC is found
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Get a Near-RT RIC (getRic)
      tags:
      - NearRT-RIC Repository
  /a1-policy/v2/policy-types:
    get:
      description: Query A1 Policy Type identities using query parameters
      operationId: getPolicyTypes
      parameters:
      - description: Select types for the given Near-RT RIC identity.
        explode: true
        in: query
        name: ric_id
        required: false
        schema:
          type: string
        style: form
      - description: Select types compatible with the given type name (type identity
          has the format 'typename_version')
        explode: true
        in: query
        name: type_name
        required: false
        schema:
          type: string
        style: form
      - description: Select types that are compatible with the given version. This
          parameter is only applicable in conjunction with type_name. As an example
          version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching
          types will be returned sorted in ascending order.
        explode: true
        in: query
        name: compatible_with_version
        required: false
        schema:
          type: string
        style: form
      responses:
        "200":
          content:
            application/json:
              examples:
                policy_type_id_list:
                  $ref: '#/components/examples/policy_type_id_list'
              schema:
                $ref: '#/components/schemas/policy_type_id_list'
          description: OK - Policy Type IDs Found
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Get A1 Policy Types (getPolicyTypes)
      tags:
      - A1 Policy Management
  /a1-policy/v2/policies/{policy_id}:
    delete:
      description: Delete an A1 Policy instance using its policy ID.
      operationId: deletePolicy
      parameters:
      - explode: false
        in: path
        name: policy_id
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/void'
          description: OK - Policy deleted
        "423":
          content:
            application/problem+json:
              example:
                status: 423
                title: Locked
                detail: Requested resource is in a locked state.
              schema:
                $ref: '#/components/schemas/error_information'
          description: Locked - HTTP Status code which can be used when the state
            is Locked
      summary: Delete an A1 Policy instance (deletePolicy)
      tags:
      - A1 Policy Management
    get:
      description: Get an A1 Policy instance using its policy ID
      operationId: getPolicy
      parameters:
      - explode: false
        in: path
        name: policy_id
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              examples:
                policy_info:
                  $ref: '#/components/examples/policy_info'
              schema:
                $ref: '#/components/schemas/policy_info'
          description: OK - Policy found
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Get an A1 Policy instance (getPolicy)
      tags:
      - A1 Policy Management
  /a1-policy/v2/services/{service_id}/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\
        \ some operation, or this operation, before the end of a timeout period the\
        \ service will be deregistered and all its A1 policies wil be removed. This\
        \ operation is only intended for registered services. (This timeout can be\
        \ set or disabled when each service is initially registered)"
      operationId: keepAliveService
      parameters:
      - explode: false
        in: path
        name: service_id
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            '*/*':
              schema:
                type: object
          description: "OK - Service supervision timer refreshed, OK"
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Heartbeat message from a service (keepAliveService)
      tags:
      - Service Registry and Supervision
  /a1-policy/v2/rics:
    get:
      description: Get all Near-RT RICs that supports a given A1 Policy Type ID
      operationId: getRics
      parameters:
      - description: |
          The identity of an A1 Policy Type. If given, all Near-RT RICs supporting the A1 Policy Type are returned.
        explode: true
        in: query
        name: policytype_id
        required: false
        schema:
          type: string
        style: form
      responses:
        "200":
          content:
            application/json:
              examples:
                ric_info_list:
                  $ref: '#/components/examples/ric_info_list'
              schema:
                $ref: '#/components/schemas/ric_info_list'
          description: OK
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Get Near-RT RICs for A1 Policy Type (getRics)
      tags:
      - NearRT-RIC Repository
  /a1-policy/v2/services:
    get:
      description: |
        Get information about all registered services, or a single registered service.  If the service ID of a registered service is included in the query, information about that  service is returned. Otherwise Information about all registered is returned. This operation does not retrieve information about unregistered services.
      operationId: getServices
      parameters:
      - description: The identity of the registered service
        explode: true
        in: query
        name: service_id
        required: false
        schema:
          type: string
        style: form
      responses:
        "200":
          content:
            application/json:
              examples:
                service_status_list:
                  $ref: '#/components/examples/service_status_list'
              schema:
                $ref: '#/components/schemas/service_status_list'
          description: OK
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Get Services (getServices)
      tags:
      - Service Registry and Supervision
    put:
      callbacks:
        RICStatus:
          '{$request.body#/callback_url}':
            post:
              description: "Callouts to indicate Near-RT RIC status changes relevant\
                \ for Services. \nThe URL invoked by this callback is provided at\
                \ Service registration.\n"
              operationId: serviceCallback
              requestBody:
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/service_callback_info_v2'
                required: true
              responses:
                "200":
                  content:
                    application/json:
                      schema:
                        $ref: '#/components/schemas/void'
                  description: OK
                "404":
                  content:
                    application/problem+json:
                      example: []
                  description: Not Found
              summary: Callback for Near-RT RIC status (serviceCallback)
              tags:
              - Service Registry and Supervision
              - Service Callbacks
              x-callback-request: true
      description: |
        Register a single service, or update a previous registtration.  Service registration is required to get callbacks about available NearRT RICs  and to enable supervision of the service's active status. If a registered service becomes inactive, its policies can be automatically deleted. A1 Policy instances can also be created for unregistered services.  If an unregistered service is later registered, the service's policies are  retained when the service becomes registered. This feature is optional to use.
      operationId: putService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/service_registration_info'
        required: true
      responses:
        "200":
          content:
            '*/*':
              schema:
                type: object
          description: OK - Service updated
        "201":
          content:
            '*/*':
              schema:
                type: object
          description: Created - Service created
        "400":
          content:
            application/problem+json:
              example:
                status: 400
                title: Bad Request
                detail: The provided request is not valid.
              schema:
                $ref: '#/components/schemas/error_information'
          description: Bad Request
      summary: Register or update a Service (putService)
      tags:
      - Service Registry and Supervision
  /a1-policy/v2/policy-types/{policytype_id}:
    get:
      description: Get an A1 Policy Type definition using its policy type ID
      operationId: getPolicyTypeDefinition
      parameters:
      - explode: false
        in: path
        name: policytype_id
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              examples:
                policy_type_definition:
                  $ref: '#/components/examples/policy_type_definition'
              schema:
                $ref: '#/components/schemas/policy_type_definition'
          description: OK - schema of the requested A1 Policy Type
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Get an A1 Policy Type definition (getPolicyTypeDefinition)
      tags:
      - A1 Policy Management
  /a1-policy/v2/policies:
    get:
      description: |
        Retrieve a list of A1 Policy Instance IDs for policies that match given search criteria.  If multiple query parameters are given, the policies matching all conditions are returned.
      operationId: getPolicyIds
      parameters:
      - description: Select policies of a given A1 Policy Type ID.
        explode: true
        in: query
        name: policytype_id
        required: false
        schema:
          type: string
        style: form
      - description: Select policies of a given Near-RT RIC identity.
        explode: true
        in: query
        name: ric_id
        required: false
        schema:
          type: string
        style: form
      - description: Select policies owned by a given service. (Both registered and
          unregistered services)
        explode: true
        in: query
        name: service_id
        required: false
        schema:
          type: string
        style: form
      - description: |
          Select policies of types with the given A1 Policy Type name  (type names have the format 'typename_version')
        explode: true
        in: query
        name: type_name
        required: false
        schema:
          type: string
        style: form
      responses:
        "200":
          content:
            application/json:
              examples:
                policy_id_list:
                  $ref: '#/components/examples/policy_id_list'
              schema:
                $ref: '#/components/schemas/policy_id_list'
          description: OK - Policy identities
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Query A1 Policy Instances (getPolicyIds)
      tags:
      - A1 Policy Management
    put:
      description: Create or Update an A1 Policy Instance
      operationId: putPolicy
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy_info'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/void'
          description: OK - Policy updated
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/void'
          description: Created - Policy created
        "423":
          content:
            application/problem+json:
              example:
                status: 423
                title: Locked
                detail: Requested resource is in a locked state.
              schema:
                $ref: '#/components/schemas/error_information'
          description: Locked - HTTP Status code which can be used when the state
            is Locked
      summary: Create or Update an A1 Policy Instance (putPolicy)
      tags:
      - A1 Policy Management
  /a1-policy/v2/policy-instances:
    get:
      description: |
        Returns a collection of A1 Policy Instance information for policies that match given search criteria.  If several query parameters are defined, the policies matching all conditions are returned.
      operationId: getPolicyInstances
      parameters:
      - description: Select policies with a given A1 Policy Type ID.
        explode: true
        in: query
        name: policytype_id
        required: false
        schema:
          type: string
        style: form
      - description: Select policies for a given Near-RT RIC identity.
        explode: true
        in: query
        name: ric_id
        required: false
        schema:
          type: string
        style: form
      - description: Select policies owned by a given service (registered or unregistered).
        explode: true
        in: query
        name: service_id
        required: false
        schema:
          type: string
        style: form
      - description: Select policies of a given A1 Policy Type name (type identity
          has the format 'typename_version').
        explode: true
        in: query
        name: type_name
        required: false
        schema:
          type: string
        style: form
      responses:
        "200":
          content:
            application/json:
              examples:
                policy_info_list:
                  $ref: '#/components/examples/policy_info_list'
              schema:
                $ref: '#/components/schemas/policy_info_list'
          description: OK - Returns A1 Policy Instances which match the criteria
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: "Not Found - Near-RT RIC, A1 Policy Type or service was not\
            \ found"
      summary: Query for A1 Policy instances (getPolicyInstances)
      tags:
      - A1 Policy Management
  /a1-policy/v2/services/{service_id}:
    delete:
      description: |
        Unregister a registered Service using its service ID.  Only registered services can be unregistered. All A1 Policy Instances  for the previously registered service will be removed.
      operationId: deleteService
      parameters:
      - explode: false
        in: path
        name: service_id
        required: true
        schema:
          type: string
        style: simple
      responses:
        "204":
          content:
            '*/*':
              schema:
                type: object
          description: No Content - Service unregistered
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Unregister a Service (deleteService)
      tags:
      - Service Registry and Supervision
  /a1-policy/v2/policies/{policy_id}/status:
    get:
      description: Retrieve the status information for an A1 Policy Instance.
      operationId: getPolicyStatus
      parameters:
      - explode: false
        in: path
        name: policy_id
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              examples:
                policy_status_info:
                  $ref: '#/components/examples/policy_status_info'
              schema:
                $ref: '#/components/schemas/policy_status_info'
          description: OK -  Policy status
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Get an A1 Policy Instance's status (getPolicyStatus)
      tags:
      - A1 Policy Management
  /a1-policy/v2/configuration:
    get:
      description: Returns the entire contents of the Application Configuration.
      operationId: getConfiguration
      responses:
        "200":
          content:
            application/json:
              schema:
                type: string
          description: OK - Configuration
        "404":
          content:
            application/problem+json:
              example: []
          description: Not Found
      summary: Get the Application Configuration (getConfiguration)
      tags:
      - Configuration
    put:
      description: |
        Replace the current Application Configuration with a new configuration. The new configuration, if accepted, will take effect after a short delay.  The new configuration must comply with the Application Configuration schema,  which can be found from the the Application Documentation (Developer Guide)
      operationId: putConfiguration
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: true
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/void'
          description: OK - Configuration updated
        "400":
          content:
            application/problem+json:
              example:
                status: 400
                title: Bad Request
                detail: The provided request is not valid.
              schema:
                $ref: '#/components/schemas/error_information'
          description: Bad Request
      summary: Set/Replace the Application Configuration (putConfiguration)
      tags:
      - Configuration
  /example-authz-check:
    post:
      description: |
        A template endpoint for callout requests to an external authorization function.  The authorization function, if enabled, decides if individual operations are permitted.
      operationId: performAccessControl
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy_authorization'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/authorization_result'
          description: OK
        "403":
          content:
            application/problem+json:
              example:
                status: 403
                title: Forbidden
                detail: Your role does not allow to perform this action. Contact System
                  Administrator to change your access rights.
              schema:
                $ref: '#/components/schemas/error_information'
          description: Forbidden
      summary: Callout request for access authorization (performAccessControl)
      tags:
      - Authorization API
  /actuator:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint.  Returns a set of links to available/enabled actuator endpoints.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorLinks
      responses:
        "200":
          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
          description: OK
      summary: Actuator endpoint - Root (actuatorLinks)
      tags:
      - Actuator API
      x-internal: true
  /actuator/heapdump:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - HeapDump.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorHeapdump
      responses:
        "200":
          content:
            application/octet-stream:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Heapdump (actuatorHeapdump)
      tags:
      - Actuator API
      x-internal: true
  /actuator/info:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Info.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorInfo
      responses:
        "200":
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Info (actuatorInfo)
      tags:
      - Actuator API
      x-internal: true
  /actuator/threaddump:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - ThreadDump.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorThreaddump
      responses:
        "200":
          content:
            text/plain;charset=UTF-8:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Threaddump (actuatorThreaddump)
      tags:
      - Actuator API
      x-internal: true
  /actuator/loggers:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Get a list of Loggers.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorLoggers
      responses:
        "200":
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Get Loggers (actuatorLoggers)
      tags:
      - Actuator API
      x-internal: true
  /actuator/loggers/{name}:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Get a single named Logger.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorGetLogger
      parameters:
      - explode: false
        in: path
        name: name
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Get Logger (actuatorGetLogger)
      tags:
      - Actuator API
      x-internal: true
    post:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Create or Update single named Logger.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorSetlogger
      parameters:
      - explode: false
        in: path
        name: name
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              enum:
              - TRACE
              - DEBUG
              - INFO
              - WARN
              - ERROR
              - FATAL
              - "OFF"
              type: string
      responses:
        "200":
          content:
            '*/*':
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Set Logger (actuatorSetlogger)
      tags:
      - Actuator API
      x-internal: true
  /actuator/logfile:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Get the Log file.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorGetLogFile
      responses:
        "200":
          content:
            text/plain;charset=UTF-8:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Log File (actuatorGetLogFile)
      tags:
      - Actuator API
      x-internal: true
  /actuator/health:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Health Check.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorHealth
      responses:
        "200":
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Health (actuatorHealth)
      tags:
      - Actuator API
      x-internal: true
  /actuator/health/**:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Health Status for an Application Component.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorHealthComponent
      responses:
        "200":
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Component Health (actuatorHealthComponent)
      tags:
      - Actuator API
      x-internal: true
  /actuator/shutdown:
    post:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Shutdown the Application.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorShutdown
      responses:
        "200":
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Shutdown (actuatorShutdown)
      tags:
      - Actuator API
      x-internal: true
  /actuator/metrics:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Get a list of Application metrics names.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorMetrics
      responses:
        "200":
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Metrics (actuatorMetrics)
      tags:
      - Actuator API
      x-internal: true
  /actuator/metrics/{requiredMetricName}:
    get:
      description: |
        A1-PMS Springboot Service Actuator web endpoint - Get the value for a named Application metric.
      externalDocs:
        description: Spring Boot Actuator Web API Documentation
        url: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
      operationId: actuatorGetMetric
      parameters:
      - explode: false
        in: path
        name: requiredMetricName
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/vnd.spring-boot.actuator.v3+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
            application/vnd.spring-boot.actuator.v2+json:
              schema:
                type: object
          description: OK
      summary: Actuator endpoint - Get Metric (actuatorGetMetric)
      x-internal: true
components:
  examples:
    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
    policy_type_id_list:
      description: Array of A1 Policy Type id's
      value:
        policy_type_id_list:
        - policytype_id
        - policytype_id
    policy_info:
      description: Information for an A1 Policy Instance
      value:
        ric_id: ric_id1
        policy_id: policy_id1
        transient: false
        service_id: service_id1
        policy_data: "{}"
        status_notification_uri: status_notification_uri
        policytype_id: policytype_id1
    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
    service_status_list:
      description: List of service information
      value:
        service_list:
        - callback_url: callback_url
          service_id: service_id
          keep_alive_interval_seconds: 0
          time_since_last_activity_seconds: 6
        - callback_url: callback_url
          service_id: service_id
          keep_alive_interval_seconds: 0
          time_since_last_activity_seconds: 6
    policy_type_definition:
      description: Schema of the given A1 Policy Type
      value:
        policy_schema: "{}"
    policy_id_list:
      description: A list of policy identities
      value:
        policy_ids:
        - some_policy_id
        - some_policy_id
    policy_info_list:
      description: List of policy information
      value:
        policies:
        - ric_id: ric_id1
          policy_id: policy_id1
          transient: false
          service_id: service_id1
          policy_data: "{}"
          status_notification_uri: status_notification_uri
          policytype_id: policytype_id1
        - ric_id: ric_id2
          policy_id: policy_id2
          transient: true
          service_id: service_id2
          policy_data: "{}"
          status_notification_uri: status_notification_uri
          policytype_id: policytype_id2
    policy_status_info:
      description: Status for one A1-P Policy
      value:
        last_modified: last_modified
        status:
          value:
            status: status
  responses:
    NotFound:
      content:
        application/problem+json:
          example: []
      description: Not Found
    Locked:
      content:
        application/problem+json:
          example:
            status: 423
            title: Locked
            detail: Requested resource is in a locked state.
          schema:
            $ref: '#/components/schemas/error_information'
      description: Locked - HTTP Status code which can be used when the state is Locked
    BadRequest:
      content:
        application/problem+json:
          example:
            status: 400
            title: Bad Request
            detail: The provided request is not valid.
          schema:
            $ref: '#/components/schemas/error_information'
      description: Bad Request
    Forbidden:
      content:
        application/problem+json:
          example:
            status: 403
            title: Forbidden
            detail: Your role does not allow to perform this action. Contact System
              Administrator to change your access rights.
          schema:
            $ref: '#/components/schemas/error_information'
      description: Forbidden
  schemas:
    status_info:
      example:
        status: status
      properties:
        status:
          description: status text
          type: string
      type: object
    ric_info:
      description: Information for a Near-RT RIC
      example:
        ric_id: ric_id
        managed_element_ids:
        - managed_element_ids
        - managed_element_ids
        state: UNAVAILABLE
        policytype_ids:
        - policytype_ids
        - policytype_ids
      properties:
        ric_id:
          description: identity of the Near-RT RIC
          type: string
        managed_element_ids:
          description: O1 identities for managed entities
          items:
            description: O1 identities for managed entities
            type: string
          type: array
        state:
          description: Represents the states for a Near-RT RIC
          enum:
          - UNAVAILABLE
          - AVAILABLE
          - SYNCHRONIZING
          - CONSISTENCY_CHECK
          type: string
        policytype_ids:
          description: supported A1 Policy Types
          items:
            description: supported A1 Policy Types
            type: string
          type: array
      type: object
    policy_type_id_list:
      description: Information about A1 Policy Types
      example:
        policytype_ids:
        - policytype_ids
        - policytype_ids
      properties:
        policytype_ids:
          description: A1 Policy Type identities
          items:
            description: A1 Policy Type identities
            type: string
          type: array
      type: object
    policy_info:
      description: Information for one A1-P Policy
      example:
        ric_id: ric_id
        policy_id: policy_id
        transient: false
        service_id: ""
        policy_data: "{}"
        status_notification_uri: status_notification_uri
        policytype_id: policytype_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 automatically deleted if the targeted Near-RT RIC restarts  or recovers. If false, the A1 Policy Instance remains, and is re-pushed to the targeted  Near-RT RIC after a restart or recovery. If false, the A1 Policy Instance is maintained and  must be deleted separately in the event of Near-RT RIC restart or recovery. Default is false.
          example: false
          nullable: false
          type: boolean
        service_id:
          default: ""
          description: |
            The identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered.  If the service is registered, the A1 Policy Instance will be  subject to the same supervision rules as the the service's other policies.
          type: string
        policy_data:
          description: the configuration of the policy
          type: object
        status_notification_uri:
          description: Callback URI for policy status updates
          type: string
        policytype_id:
          description: identity of the A1 Policy Type
          type: string
      required:
      - policy_data
      - policy_id
      - policytype_id
      - ric_id
      type: object
    void:
      description: Void/empty
      type: object
    error_information:
      description: Problem as defined in https://tools.ietf.org/html/rfc7807
      example:
        detail: A1 Policy Type not found
        title: Not Found
        status: 404
      properties:
        detail:
          description: ' A human-readable explanation specific to this occurrence
            of the problem.'
          example: A1 Policy Type not found
          type: string
        title:
          description: A specific error name
          example: Not Found
          type: string
        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
    ric_info_list:
      description: List of Near-RT RIC information
      example:
        rics:
        - ric_id: ric_id
          managed_element_ids:
          - managed_element_ids
          - managed_element_ids
          state: UNAVAILABLE
          policytype_ids:
          - policytype_ids
          - policytype_ids
        - ric_id: ric_id
          managed_element_ids:
          - managed_element_ids
          - managed_element_ids
          state: UNAVAILABLE
          policytype_ids:
          - policytype_ids
          - policytype_ids
      properties:
        rics:
          description: List of Near-RT RIC information
          items:
            $ref: '#/components/schemas/ric_info'
          type: array
      type: object
    service_status_list:
      example:
        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
      properties:
        service_list:
          description: List of service information
          items:
            $ref: '#/components/schemas/service_status'
          type: array
      type: object
    service_status:
      example:
        callback_url: callback_url
        service_id: service_id
        keep_alive_interval_seconds: 0
        time_since_last_activity_seconds: 6
      properties:
        callback_url:
          description: callback for notifying of RIC synchronization
          type: string
        service_id:
          description: identity of the service
          type: string
        keep_alive_interval_seconds:
          description: policy keep alive timeout
          format: int64
          type: integer
        time_since_last_activity_seconds:
          description: time since last invocation by the service
          format: int64
          type: integer
      type: object
    service_registration_info:
      description: Information for one service
      properties:
        callback_url:
          description: Callback for notifying of Near-RT RIC state changes
          type: string
        service_id:
          description: identity of the service
          type: string
        keep_alive_interval_seconds:
          description: |
            Keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means timeout supervision is disabled.
          format: int64
          type: integer
      required:
      - service_id
      type: object
    service_callback_info_v2:
      description: "Information transferred in Service callbacks, \nif a callback\
        \ URL was provided for a registered service\n"
      properties:
        ric_id:
          description: identity of a Near-RT RIC
          type: string
        event_type:
          description: "values: \n  AVAILABLE: the  Near-RT RIC has become available\
            \ for A1 Policy management\n"
          enum:
          - AVAILABLE
          type: string
      required:
      - event_type
      - ric_id
      type: object
    policy_type_definition:
      description: Contains A1 Policy Type schema definition
      example:
        policy_schema: "{}"
      properties:
        policy_schema:
          description: A1 Policy Type json schema. The schema is a json object following
            http://json-schema.org/draft-07/schema
          type: object
      type: object
    policy_id_list:
      description: A list of policy identities
      example:
        policy_ids:
        - policy_ids
        - policy_ids
      properties:
        policy_ids:
          description: Policy identities
          items:
            description: Policy identities
            type: string
          type: array
      type: object
    policy_info_list:
      description: List of policy information
      example:
        policies:
        - ric_id: ric_id
          policy_id: policy_id
          transient: false
          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: ""
          policy_data: "{}"
          status_notification_uri: status_notification_uri
          policytype_id: policytype_id
      properties:
        policies:
          description: List of policy information
          items:
            $ref: '#/components/schemas/policy_info'
          type: array
      type: object
    policy_status_info:
      description: Status for one A1-P Policy
      example:
        last_modified: last_modified
        status: "{}"
      properties:
        last_modified:
          description: "timestamp, last modification time"
          type: string
        status:
          description: the Policy status
          type: object
      type: object
    policy_authorization:
      description: Authorization request for A1 policy requests
      properties:
        input:
          $ref: '#/components/schemas/input'
      required:
      - input
      type: object
    input:
      description: input
      properties:
        access_type:
          description: Access type
          enum:
          - READ
          - WRITE
          - DELETE
          type: string
        auth_token:
          description: Authorization token
          type: string
        policy_type_id:
          description: A1 Policy Type identifier
          type: string
      required:
      - access_type
      - auth_token
      - policy_type_id
      type: object
    authorization_result:
      description: Result of authorization
      example:
        result: true
      properties:
        result:
          description: "If true, the access is granted"
          type: boolean
      required:
      - result
      type: object
    Link:
      properties:
        templated:
          type: boolean
        href:
          type: string
      type: object
