#  ============LICENSE_START=======================================================
#  Copyright (C) 2020-2023 Nordix Foundation
#  Modifications Copyright (C) 2021 Pantheon.tech
#  Modifications Copyright (C) 2021 Bell Canada
#  ================================================================================
#  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:
  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>"
  license:
    name: Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License.
    url: http://www.apache.org/licenses/LICENSE-2.0
  title: A1 Policy Management Service
  version: 1.2.0
servers:
  - url: /
tags:
  - 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: Authorization API
  - description: Monitor and interact
    externalDocs:
      description: Spring Boot Actuator Web API Documentation
      url: https://docs.spring.io/spring-boot/docs/current/actuator-api/html/
    name: Actuator
paths:
  /a1-policy/v2/policy-instances:
    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: getPolicyInstances
      parameters:
        - description: Select policies with a given type identity.
          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.
          explode: true
          in: query
          name: service_id
          required: false
          schema:
            type: string
          style: form
        - description: Select policies of a given 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: Policies
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: "Near-RT RIC, policy type or service not found"
      summary: Query for A1 policy instances
      tags:
        - A1 Policy Management
  /example-authz-check:
    post:
      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":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/authorization_result'
          description: OK
      summary: Request for access authorization.
      tags:
        - Authorization API
  /actuator/threaddump:
    get:
      operationId: threaddump
      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 web endpoint 'threaddump'
      tags:
        - Actuator
  /a1-policy/v2/status:
    get:
      operationId: getStatus
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/status_info'
              examples:
                status_info:
                  $ref: '#/components/examples/status_info'
          description: Service is living
      summary: Returns status and statistics of this service
      tags:
        - Health Check
  /actuator/loggers:
    get:
      operationId: loggers
      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 web endpoint 'loggers'
      tags:
        - Actuator
  /actuator/health/**:
    get:
      operationId: health-path
      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 web endpoint 'health-path'
      tags:
        - Actuator
  /a1-policy/v2/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: managed_element_id
          required: false
          schema:
            type: string
          style: form
        - description: The identity of a Near-RT RIC to get information for.
          explode: true
          in: query
          name: ric_id
          required: false
          schema:
            type: string
          style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ric_info'
              examples:
                ric_info:
                  $ref: '#/components/examples/ric_info'
          description: Near-RT RIC is found
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Near-RT RIC is not found
      summary: Returns info for one Near-RT RIC
      tags:
        - NearRT-RIC Repository
  /actuator/shutdown:
    post:
      operationId: shutdown
      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 web endpoint 'shutdown'
      tags:
        - Actuator
  /a1-policy/v2/policy-types:
    get:
      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 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: Policy type IDs
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Near-RT RIC is not found
      summary: Query policy type identities
      tags:
        - A1 Policy Management
  /a1-policy/v2/policies/{policy_id}:
    delete:
      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: Not used
        "423":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/error_information'
          description: Near-RT RIC is not operational
        "204":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/void'
          description: Policy deleted
        "404":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/error_information'
          description: Policy is not found
      summary: Delete a policy
      tags:
        - A1 Policy Management
    get:
      operationId: getPolicy
      parameters:
        - explode: false
          in: path
          name: policy_id
          required: true
          schema:
            type: string
          style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy_info'
              examples:
                policy_info:
                  $ref: '#/components/examples/policy_info'
          description: Policy found
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Policy is not found
      summary: Returns a policy
      tags:
        - A1 Policy Management
  /actuator/metrics/{requiredMetricName}:
    get:
      operationId: metrics-requiredMetricName
      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 web endpoint 'metrics-requiredMetricName'
      tags:
        - Actuator
  /a1-policy/v2/configuration:
    get:
      operationId: getConfiguration
      responses:
        "200":
          content:
            application/json:
              schema:
                type: string
          description: Configuration
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: File is not found or readable
      summary: Returns the contents of the application configuration file
      tags:
        - configuration
    put:
      operationId: putConfiguration
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: true
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/void'
          description: Configuration updated
        "400":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/error_information'
          description: Invalid configuration provided
        "500":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/error_information'
          description: Something went wrong when replacing the configuration. Try
            again.
      summary: Replace the current configuration file with the given configuration
      tags:
        - configuration
  /actuator:
    get:
      operationId: links
      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 root web endpoint
      tags:
        - Actuator
  /actuator/loggers/{name}:
    get:
      operationId: loggers-name
      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 web endpoint 'loggers-name'
      tags:
        - Actuator
    post:
      operationId: loggers-name_2
      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 web endpoint 'loggers-name'
      tags:
        - Actuator
  /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 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: service_id
          required: true
          schema:
            type: string
          style: simple
      responses:
        "200":
          content:
            '*/*':
              schema:
                type: object
          description: "Service supervision timer refreshed, OK"
        "404":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/error_information'
          description: "The service is not found, needs re-registration"
      summary: Heartbeat indicates that the service is running
      tags:
        - Service Registry and Supervision
  /actuator/metrics:
    get:
      operationId: metrics
      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 web endpoint 'metrics'
      tags:
        - Actuator
  /a1-policy/v2/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: policytype_id
          required: false
          schema:
            type: string
          style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ric_info_list'
              examples:
                ric_info_list:
                  $ref: '#/components/examples/ric_info_list'
          description: OK
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Policy type is not found
      summary: Query Near-RT RIC information
      tags:
        - NearRT-RIC Repository
  /a1-policy/v2/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: service_id
          required: false
          schema:
            type: string
          style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/service_status_list'
              examples:
                service_status_list:
                  $ref: '#/components/examples/service_status_list'
          description: OK
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Service is not found
      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/service_registration_info'
        required: true
      responses:
        "200":
          content:
            '*/*':
              schema:
                type: object
          description: Service updated
        "201":
          content:
            '*/*':
              schema:
                type: object
          description: Service created
        "400":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/error_information'
          description: The ServiceRegistrationInfo is not accepted
      summary: Register a service
      tags:
        - Service Registry and Supervision
  /actuator/info:
    get:
      operationId: info
      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 web endpoint 'info'
      tags:
        - Actuator
  /status:
    get:
      operationId: getStatusV1
      responses:
        "200":
          content:
            '*/*':
              schema:
                type: string
          description: Service is living
      summary: Returns status and statistics of this service
      tags:
        - Health Check
  /a1-policy/v2/policy-types/{policytype_id}:
    get:
      operationId: getPolicyTypeDefinition
      parameters:
        - explode: false
          in: path
          name: policytype_id
          required: true
          schema:
            type: string
          style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy_type_definition'
              examples:
                policy_type_definition:
                  $ref: '#/components/examples/policy_type_definition'
          description: schema of the given policy type
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Policy type is not found
      summary: Returns a policy type definition
      tags:
        - A1 Policy Management
  /actuator/logfile:
    get:
      operationId: logfile
      responses:
        "200":
          content:
            text/plain;charset=UTF-8:
              schema:
                type: object
          description: OK
      summary: Actuator web endpoint 'logfile'
      tags:
        - Actuator
  /actuator/health:
    get:
      operationId: health
      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 web endpoint 'health'
      tags:
        - Actuator
  /a1-policy/v2/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: 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.
          explode: true
          in: query
          name: service_id
          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: 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: Policy identities
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Near-RT RIC or type not found
      summary: Query policy identities
      tags:
        - A1 Policy Management
    put:
      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: Policy updated
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/void'
          description: Policy created
        "423":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Near-RT RIC is not operational
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Near-RT RIC or policy type is not found
      summary: Create or update a policy
      tags:
        - A1 Policy Management
  /r-app/near-rt-ric-status:
    post:
      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'
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/void'
          description: OK
      summary: Callback for Near-RT RIC status
      tags:
        - Service callbacks
  /a1-policy/v2/services/{service_id}:
    delete:
      operationId: deleteService
      parameters:
        - explode: false
          in: path
          name: service_id
          required: true
          schema:
            type: string
          style: simple
      responses:
        "200":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/void'
          description: Not used
        "204":
          content:
            '*/*':
              schema:
                type: object
          description: Service unregistered
        "404":
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/error_information'
          description: Service not found
      summary: Unregister a service
      tags:
        - Service Registry and Supervision
  /actuator/heapdump:
    get:
      operationId: heapdump
      responses:
        "200":
          content:
            application/octet-stream:
              schema:
                type: object
          description: OK
      summary: Actuator web endpoint 'heapdump'
      tags:
        - Actuator
  /a1-policy/v2/policies/{policy_id}/status:
    get:
      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: Policy status
        "404":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_information'
          description: Policy is not found
      summary: Returns a policy status
      tags:
        - A1 Policy Management
components:
  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:
          - policy_ids
          - policy_ids
    policy_status_info:
      description: Status for one A1-P Policy
      value:
        last_modified: last_modified
        status: "{}"
    status_info:
      value:
        status: status
    ric_info:
      value:
        ric_id: ric_id
        managed_element_ids:
          - managed_element_ids
          - managed_element_ids
        state: UNAVAILABLE
        policytype_ids:
          - policytype_ids
          - policytype_ids
    ric_info_list:
      value:
        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
  schemas:
    policy_type_definition:
      description: Contains policy type schema definition
      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
    error_information:
      description: Problem as defined in https://tools.ietf.org/html/rfc7807
      properties:
        detail:
          description: ' A human-readable explanation specific to this occurrence
            of the problem.'
          example: Policy type 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
    void:
      description: Void/empty
      type: object
    status_info:
      properties:
        status:
          description: status text
          type: string
      type: object
    authorization_result:
      description: Result of authorization
      example:
        result: true
      properties:
        result:
          description: "If true, the access is granted"
          type: boolean
      required:
        - result
      type: object
    ric_info:
      description: Information for a Near-RT RIC
      properties:
        ric_id:
          description: identity of the Near-RT RIC
          type: string
        managed_element_ids:
          description: O1 identities for managed entities
          items:
            description: O1 identities for managed entities
            type: string
          type: array
        state:
          description: Represents the states for a Near-RT RIC
          enum:
            - UNAVAILABLE
            - AVAILABLE
            - SYNCHRONIZING
            - CONSISTENCY_CHECK
          type: string
        policytype_ids:
          description: supported policy types
          items:
            description: supported policy types
            type: string
          type: array
      type: object
    service_registration_info:
      description: Information for one service
      properties:
        callback_url:
          description: callback for notifying of Near-RT RIC state changes
          type: string
        service_id:
          description: identity of the service
          type: string
        keep_alive_interval_seconds:
          description: "keep alive interval for the service. This is used to enable\
            \ optional heartbeat supervision of the service. If set (> 0) the registered\
            \ service should regularly invoke a 'keepalive' REST call. When a service\
            \ fails to invoke this 'keepalive' call within the configured time, the\
            \ service is considered unavailable. An unavailable service will be automatically\
            \ deregistered and its policies will be deleted. Value 0 means timeout\
            \ supervision is disabled."
          format: int64
          type: integer
      required:
        - service_id
      type: object
    policy_info_list:
      description: List of policy information
      properties:
        policies:
          description: List of policy information
          items:
            $ref: '#/components/schemas/policy_info'
          type: array
      type: object
    policy_status_info:
      description: Status for one A1-P Policy
      properties:
        last_modified:
          description: "timestamp, last modification time"
          type: string
        status:
          description: the Policy status
          type: object
      type: object
    service_status:
      properties:
        callback_url:
          description: callback for notifying of RIC synchronization
          type: string
        service_id:
          description: identity of the service
          type: string
        keep_alive_interval_seconds:
          description: policy keep alive timeout
          format: int64
          type: integer
        time_since_last_activity_seconds:
          description: time since last invocation by the service
          format: int64
          type: integer
      type: object
    ric_info_list:
      description: List of Near-RT RIC information
      properties:
        rics:
          description: List of Near-RT RIC information
          items:
            $ref: '#/components/schemas/ric_info'
          type: array
      type: object
    input:
      description: input
      properties:
        access_type:
          description: Access type
          enum:
            - READ
            - WRITE
            - DELETE
          type: string
        auth_token:
          description: Authorization token
          type: string
        policy_type_id:
          description: Policy type identifier
          type: string
      required:
        - access_type
        - auth_token
        - policy_type_id
      type: object
    policy_authorization:
      description: Authorization request for A1 policy requests
      properties:
        input:
          $ref: '#/components/schemas/input'
      required:
        - input
      type: object
    policy_type_id_list:
      description: Information about policy types
      properties:
        policytype_ids:
          description: Policy type identities
          items:
            description: Policy type identities
            type: string
          type: array
      type: object
    policy_info:
      description: Information for one A1-P Policy
      properties:
        ric_id:
          description: identity of the target Near-RT RIC
          type: string
        policy_id:
          description: identity of the policy
          type: string
        transient:
          default: false
          description: "if true, the policy is deleted at RIC restart. If false, its\
            \ value is maintained by this service until explicitly deleted. Default\
            \ false."
          example: false
          nullable: false
          type: boolean
        service_id:
          description: the identity of the service owning the policy. This can be
            used to group the policies (it is possible to get all policies associated
            to a service). Note that the service does not need to be registered.
          type: string
          default: ""
        policy_data:
          description: the configuration of the policy
          type: object
        status_notification_uri:
          description: Callback URI for policy status updates
          type: string
        policytype_id:
          description: identity of the policy type
          type: string
      required:
        - ric_id
        - policy_id
        - policy_data
        - policytype_id
      type: object
    policy_id_list:
      description: A list of policy identities
      example:
        policy_ids:
          - policy_ids
          - policy_ids
      properties:
        policy_ids:
          description: Policy identities
          items:
            description: Policy identities
            type: string
          type: array
      type: object
    service_status_list:
      properties:
        service_list:
          description: List of service information
          items:
            $ref: '#/components/schemas/service_status'
          type: array
      type: object
    service_callback_info_v2:
      description: Information transferred as in Service callbacks (callback_url)
      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"
          enum:
            - AVAILABLE
          type: string
      required:
        - event_type
        - ric_id
      type: object
    Link:
      properties:
        templated:
          type: boolean
        href:
          type: string
      type: object
