diff options
Diffstat (limited to 'docs/offeredapis/swagger')
-rw-r--r-- | docs/offeredapis/swagger/pms-api.json | 2713 | ||||
-rw-r--r-- | docs/offeredapis/swagger/pms-api.yaml | 878 |
2 files changed, 2220 insertions, 1371 deletions
diff --git a/docs/offeredapis/swagger/pms-api.json b/docs/offeredapis/swagger/pms-api.json index 33fa5e18..d6d212f0 100644 --- a/docs/offeredapis/swagger/pms-api.json +++ b/docs/offeredapis/swagger/pms-api.json @@ -1,1020 +1,1791 @@ { - "components": {"schemas": { - "error_information": { - "description": "Problem as defined in https://tools.ietf.org/html/rfc7807", - "type": "object", - "properties": { - "detail": { - "description": " A human-readable explanation specific to this occurrence of the problem.", - "type": "string", - "example": "Policy type not found" + "openapi" : "3.0.3", + "info" : { + "title" : "A1 Policy Management Service", + "description" : "<h2>General</h2><p>The O-RAN Non-RT RIC Policy Management Service provides a REST API for 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, and Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved.", + "url" : "http://www.apache.org/licenses/LICENSE-2.0" + }, + "version" : "1.2.0" + }, + "servers" : [ { + "url" : "/" + } ], + "tags" : [ { + "name" : "Authorization API", + "description" : "API used for authorization of information A1 policy access (this is provided by an authorization producer such as OPA). <br> Note that this API is called by PMS, it is not provided." + }, { + "name" : "Actuator", + "description" : "Monitor and interact", + "externalDocs" : { + "description" : "Spring Boot Actuator Web API Documentation", + "url" : "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/" + } + } ], + "paths" : { + "/a1-policy/v2/policy-instances" : { + "get" : { + "tags" : [ "A1 Policy Management" ], + "summary" : "Query for A1 policy instances", + "description" : "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.", + "operationId" : "getPolicyInstances", + "parameters" : [ { + "name" : "policytype_id", + "in" : "query", + "description" : "Select policies with a given type identity.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + }, { + "name" : "ric_id", + "in" : "query", + "description" : "Select policies for a given Near-RT RIC identity.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + }, { + "name" : "service_id", + "in" : "query", + "description" : "Select policies owned by a given service.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + }, { + "name" : "type_name", + "in" : "query", + "description" : "Select policies of a given type name (type identity has the format <typename_version>)", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Policies", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_info_list" }, - "status": { - "format": "int32", - "description": "The HTTP status code generated by the origin server for this occurrence of the problem. ", - "type": "integer", - "example": 404 + "examples" : { + "policy_info_list" : { + "$ref" : "#/components/examples/policy_info_list" + } } + } } - }, - "void": { - "description": "Void/empty", - "type": "object" - }, - "status_info_v2": { - "type": "object", - "properties": {"status": { - "description": "status text", - "type": "string" - }} - }, - "authorization_result": { - "description": "Result of authorization", - "type": "object", - "required": ["result"], - "properties": {"result": { - "description": "If true, the access is granted", - "type": "boolean" - }} - }, - "ric_info_v2": { - "description": "Information for a Near-RT RIC", - "type": "object", - "properties": { - "ric_id": { - "description": "identity of the Near-RT RIC", - "type": "string" - }, - "managed_element_ids": { - "description": "O1 identities for managed entities", - "type": "array", - "items": { - "description": "O1 identities for managed entities", - "type": "string" - } - }, - "state": { - "description": "Represents the states for a Near-RT RIC", - "type": "string", - "enum": [ - "UNAVAILABLE", - "AVAILABLE", - "SYNCHRONIZING", - "CONSISTENCY_CHECK" - ] - }, - "policytype_ids": { - "description": "supported policy types", - "type": "array", - "items": { - "description": "supported policy types", - "type": "string" - } + }, + "404" : { + "description" : "Near-RT RIC, policy type or service not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" } + } + } + } + } + } + }, + "/example-authz-check" : { + "post" : { + "tags" : [ "Authorization API" ], + "summary" : "Request for access authorization.", + "description" : "The authorization function decides if access is granted.", + "operationId" : "performAccessControl", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_authorization" + } } + }, + "required" : true }, - "service_registration_info_v2": { - "description": "Information for one service", - "type": "object", - "required": ["service_id"], - "properties": { - "callback_url": { - "description": "callback for notifying of Near-RT RIC state changes", - "type": "string" - }, - "service_id": { - "description": "identity of the service", - "type": "string" - }, - "keep_alive_interval_seconds": { - "format": "int64", - "description": "keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means timeout supervision is disabled.", - "type": "integer" + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/authorization_result" } + } } - }, - "policy_info_list_v2": { - "description": "List of policy information", - "type": "object", - "properties": {"policies": { - "description": "List of policy information", - "type": "array", - "items": {"$ref": "#/components/schemas/policy_info_v2"} - }} - }, - "policy_status_info_v2": { - "description": "Status for one A1-P Policy", - "type": "object", - "properties": { - "last_modified": { - "description": "timestamp, last modification time", - "type": "string" - }, - "status": { - "description": "the Policy status", - "type": "object" + } + } + } + }, + "/actuator/threaddump" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'threaddump'", + "operationId" : "threaddump", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "text/plain;charset=UTF-8" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } } - }, - "service_status_v2": { - "description": "List of service information", - "type": "object", - "properties": { - "callback_url": { - "description": "callback for notifying of RIC synchronization", - "type": "string" - }, - "service_id": { - "description": "identity of the service", - "type": "string" + } + } + } + }, + "/a1-policy/v2/status" : { + "get" : { + "tags" : [ "Health Check" ], + "summary" : "Returns status and statistics of this service", + "operationId" : "getStatus", + "responses" : { + "200" : { + "description" : "Service is living", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/status_info" }, - "keep_alive_interval_seconds": { - "format": "int64", - "description": "policy keep alive timeout", - "type": "integer" + "examples" : { + "status_info" : { + "$ref" : "#/components/examples/status_info" + } + } + } + } + } + } + } + }, + "/actuator/loggers" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'loggers'", + "operationId" : "loggers", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/actuator/health/**" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'health-path'", + "operationId" : "health-path", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/a1-policy/v2/rics/ric" : { + "get" : { + "tags" : [ "NearRT-RIC Repository" ], + "summary" : "Returns info for one Near-RT RIC", + "description" : "Either a Near-RT RIC identity or a Managed Element identity can be specified.<br>The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).", + "operationId" : "getRic", + "parameters" : [ { + "name" : "managed_element_id", + "in" : "query", + "description" : "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + }, { + "name" : "ric_id", + "in" : "query", + "description" : "The identity of a Near-RT RIC to get information for.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Near-RT RIC is found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ric_info" }, - "time_since_last_activity_seconds": { - "format": "int64", - "description": "time since last invocation by the service", - "type": "integer" + "examples" : { + "ric_info" : { + "$ref" : "#/components/examples/ric_info" + } } + } } - }, - "ric_info_list_v2": { - "description": "List of Near-RT RIC information", - "type": "object", - "properties": {"rics": { - "description": "List of Near-RT RIC information", - "type": "array", - "items": {"$ref": "#/components/schemas/ric_info_v2"} - }} - }, - "policytype_v2": { - "description": "Policy type", - "type": "object", - "properties": {"policy_schema": { - "description": "Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema", - "type": "object" - }} - }, - "input": { - "description": "input", - "type": "object", - "required": [ - "access_type", - "auth_token", - "policy_type_id" - ], - "properties": { - "access_type": { - "description": "Access type", - "type": "string", - "enum": [ - "READ", - "WRITE", - "DELETE" - ] + }, + "404" : { + "description" : "Near-RT RIC is not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + } + }, + "/actuator/shutdown" : { + "post" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'shutdown'", + "operationId" : "shutdown", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/a1-policy/v2/policy-types" : { + "get" : { + "tags" : [ "A1 Policy Management" ], + "summary" : "Query policy type identities", + "operationId" : "getPolicyTypes", + "parameters" : [ { + "name" : "ric_id", + "in" : "query", + "description" : "Select types for the given Near-RT RIC identity.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + }, { + "name" : "type_name", + "in" : "query", + "description" : "Select types with the given type name (type identity has the format <typename_version>)", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + }, { + "name" : "compatible_with_version", + "in" : "query", + "description" : "Select types that are compatible with the given version. This parameter is only applicable in conjunction with type_name. As an example version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching types will be returned sorted in ascending order.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Policy type IDs", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_type_id_list" }, - "auth_token": { - "description": "Authorization token", - "type": "string" + "examples" : { + "policy_type_id_list" : { + "$ref" : "#/components/examples/policy_type_id_list" + } + } + } + } + }, + "404" : { + "description" : "Near-RT RIC is not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + } + }, + "/a1-policy/v2/policies/{policy_id}" : { + "get" : { + "tags" : [ "A1 Policy Management" ], + "summary" : "Returns a policy", + "operationId" : "getPolicy", + "parameters" : [ { + "name" : "policy_id", + "in" : "path", + "required" : true, + "style" : "simple", + "explode" : false, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Policy found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_info" }, - "policy_type_id": { - "description": "Policy type identifier", - "type": "string" + "examples" : { + "policy_info" : { + "$ref" : "#/components/examples/policy_info" + } } + } } + }, + "404" : { + "description" : "Policy is not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + }, + "delete" : { + "tags" : [ "A1 Policy Management" ], + "summary" : "Delete a policy", + "operationId" : "deletePolicy", + "parameters" : [ { + "name" : "policy_id", + "in" : "path", + "required" : true, + "style" : "simple", + "explode" : false, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Not used", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + } + }, + "423" : { + "description" : "Near-RT RIC is not operational", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + }, + "204" : { + "description" : "Policy deleted", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + } + }, + "404" : { + "description" : "Policy is not found", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + } + }, + "/actuator/metrics/{requiredMetricName}" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'metrics-requiredMetricName'", + "operationId" : "metrics-requiredMetricName", + "parameters" : [ { + "name" : "requiredMetricName", + "in" : "path", + "required" : true, + "style" : "simple", + "explode" : false, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/a1-policy/v2/configuration" : { + "get" : { + "tags" : [ "configuration" ], + "summary" : "Returns the contents of the application configuration file", + "operationId" : "getConfiguration", + "responses" : { + "200" : { + "description" : "Configuration", + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "404" : { + "description" : "File is not found or readable", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + }, + "put" : { + "tags" : [ "configuration" ], + "summary" : "Replace the current configuration file with the given configuration", + "operationId" : "putConfiguration", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object" + } + } + }, + "required" : true }, - "policy_authorization": { - "description": "Authorization request for A1 policy requests", - "type": "object", - "required": ["input"], - "properties": {"input": {"$ref": "#/components/schemas/input"}} - }, - "policytype_id_list_v2": { - "description": "Information about policy types", - "type": "object", - "properties": {"policytype_ids": { - "description": "Policy type identities", - "type": "array", - "items": { - "description": "Policy type identities", - "type": "string" - } - }} + "responses" : { + "200" : { + "description" : "Configuration updated", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + } + }, + "400" : { + "description" : "Invalid configuration provided", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + }, + "500" : { + "description" : "Something went wrong when replacing the configuration. Try again.", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + } + }, + "/actuator" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator root web endpoint", + "operationId" : "links", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object", + "additionalProperties" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/components/schemas/Link" + } + } + } + }, + "application/json" : { + "schema" : { + "type" : "object", + "additionalProperties" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/components/schemas/Link" + } + } + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object", + "additionalProperties" : { + "type" : "object", + "additionalProperties" : { + "$ref" : "#/components/schemas/Link" + } + } + } + } + } + } + } + } + }, + "/actuator/loggers/{name}" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'loggers-name'", + "operationId" : "loggers-name", + "parameters" : [ { + "name" : "name", + "in" : "path", + "required" : true, + "style" : "simple", + "explode" : false, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + } + } + } + }, + "post" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'loggers-name'", + "operationId" : "loggers-name_2", + "parameters" : [ { + "name" : "name", + "in" : "path", + "required" : true, + "style" : "simple", + "explode" : false, + "schema" : { + "type" : "string" + } + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string", + "enum" : [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF" ] + } + } + } }, - "policy_info_v2": { - "description": "Information for one A1-P Policy", - "type": "object", - "required": [ - "policy_data", - "policy_id", - "policytype_id", - "ric_id" - ], - "properties": { - "ric_id": { - "description": "identity of the target Near-RT RIC", - "type": "string" - }, - "policy_id": { - "description": "identity of the policy", - "type": "string" - }, - "transient": { - "default": false, - "description": "if true, the policy is deleted at RIC restart. If false, its value is maintained by this service until explicitly deleted. Default false.", - "type": "boolean", - "example": false - }, - "service_id": { - "description": "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered.", - "type": "string" - }, - "policy_data": { - "description": "the configuration of the policy", - "type": "object" + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/a1-policy/v2/services/{service_id}/keepalive" : { + "put" : { + "tags" : [ "Service Registry and Supervision" ], + "summary" : "Heartbeat indicates that the service is running", + "description" : "A registered service should invoke this operation regularly to indicate that it is still alive. If a registered service fails to invoke this operation before the end of a timeout period the service will be deregistered and all its A1 policies wil be removed. (This timeout can be set or disabled when each service is initially registered)", + "operationId" : "keepAliveService", + "parameters" : [ { + "name" : "service_id", + "in" : "path", + "required" : true, + "style" : "simple", + "explode" : false, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Service supervision timer refreshed, OK", + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + } + }, + "404" : { + "description" : "The service is not found, needs re-registration", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + } + }, + "/actuator/metrics" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'metrics'", + "operationId" : "metrics", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/a1-policy/v2/rics" : { + "get" : { + "tags" : [ "NearRT-RIC Repository" ], + "summary" : "Query Near-RT RIC information", + "description" : "The call returns all Near-RT RICs that supports a given policy type identity", + "operationId" : "getRics", + "parameters" : [ { + "name" : "policytype_id", + "in" : "query", + "description" : "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ric_info_list" }, - "status_notification_uri": { - "description": "Callback URI for policy status updates", - "type": "string" + "examples" : { + "ric_info_list" : { + "$ref" : "#/components/examples/ric_info_list" + } + } + } + } + }, + "404" : { + "description" : "Policy type is not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + } + }, + "/a1-policy/v2/services" : { + "get" : { + "tags" : [ "Service Registry and Supervision" ], + "summary" : "Returns service information", + "description" : "Either information about a registered service with given identity or all registered services are returned.", + "operationId" : "getServices", + "parameters" : [ { + "name" : "service_id", + "in" : "query", + "description" : "The identity of the service", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/service_status_list" }, - "policytype_id": { - "description": "identity of the policy type", - "type": "string" + "examples" : { + "service_status_list" : { + "$ref" : "#/components/examples/service_status_list" + } } + } } + }, + "404" : { + "description" : "Service is not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + }, + "put" : { + "tags" : [ "Service Registry and Supervision" ], + "summary" : "Register a service", + "description" : "Registering a service is needed to:<ul><li>Get callbacks about available NearRT RICs.</li><li>Activate supervision of the service. If a service is inactive, its policies will automatically be deleted.</li></ul>Policies can be created even if the service is not registerred. This is a feature which it is optional to use.", + "operationId" : "putService", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/service_registration_info" + } + } + }, + "required" : true }, - "policy_id_list_v2": { - "description": "A list of policy identities", - "type": "object", - "properties": {"policy_ids": { - "description": "Policy identities", - "type": "array", - "items": { - "description": "Policy identities", - "type": "string" - } - }} - }, - "service_list_v2": { - "description": "List of service information", - "type": "object", - "properties": {"service_list": { - "description": "List of service information", - "type": "array", - "items": {"$ref": "#/components/schemas/service_status_v2"} - }} - }, - "service_callback_info_v2": { - "description": "Information transferred as in Service callbacks (callback_url)", - "type": "object", - "required": [ - "event_type", - "ric_id" - ], - "properties": { - "ric_id": { - "description": "identity of a Near-RT RIC", - "type": "string" - }, - "event_type": { - "description": "values:\nAVAILABLE: the Near-RT RIC has become available for A1 Policy management", - "type": "string", - "enum": ["AVAILABLE"] + "responses" : { + "200" : { + "description" : "Service updated", + "content" : { + "*/*" : { + "schema" : { + "type" : "object" } + } } + }, + "201" : { + "description" : "Service created", + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + } + }, + "400" : { + "description" : "The ServiceRegistrationInfo is not accepted", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } }, - "Link": { - "type": "object", - "properties": { - "templated": {"type": "boolean"}, - "href": {"type": "string"} - } - } - }}, - "openapi": "3.0.1", - "paths": { - "/a1-policy/v2/policy-instances": {"get": { - "summary": "Query for A1 policy instances", - "description": "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.", - "operationId": "getPolicyInstances", - "responses": { - "200": { - "description": "Policies", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_list_v2"}}} - }, - "404": { - "description": "Near-RT RIC, policy type or service not found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [ - { - "schema": {"type": "string"}, - "in": "query", - "name": "policytype_id", - "description": "Select policies with a given type identity.", - "required": false - }, - { - "schema": {"type": "string"}, - "in": "query", - "name": "ric_id", - "description": "Select policies for a given Near-RT RIC identity.", - "required": false - }, - { - "schema": {"type": "string"}, - "in": "query", - "name": "service_id", - "description": "Select policies owned by a given service.", - "required": false - }, - { - "schema": {"type": "string"}, - "in": "query", - "name": "type_name", - "description": "Select policies of a given type name (type identity has the format <typename_version>)", - "required": false - } - ], - "tags": ["A1 Policy Management"] - }}, - "/example-authz-check": {"post": { - "summary": "Request for access authorization.", - "requestBody": { - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_authorization"}}}, - "required": true - }, - "description": "The authorization function decides if access is granted.", - "operationId": "performAccessControl", - "responses": {"200": { - "description": "OK", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/authorization_result"}}} - }}, - "tags": ["Authorization API"] - }}, - "/actuator/threaddump": {"get": { - "summary": "Actuator web endpoint 'threaddump'", - "operationId": "threaddump", - "responses": {"200": { - "description": "OK", - "content": { - "text/plain;charset=UTF-8": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}}, - "application/json": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}} - } - }}, - "tags": ["Actuator"] - }}, - "/a1-policy/v2/status": {"get": { - "summary": "Returns status and statistics of this service", - "operationId": "getStatus", - "responses": {"200": { - "description": "Service is living", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/status_info_v2"}}} - }}, - "tags": ["Health Check"] - }}, - "/actuator/loggers": {"get": { - "summary": "Actuator web endpoint 'loggers'", - "operationId": "loggers", - "responses": {"200": { - "description": "OK", - "content": { - "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}}, - "application/json": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}} - } - }}, - "tags": ["Actuator"] - }}, - "/actuator/health/**": {"get": { - "summary": "Actuator web endpoint 'health-path'", - "operationId": "health-path", - "responses": {"200": { - "description": "OK", - "content": { - "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}}, - "application/json": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}} - } - }}, - "tags": ["Actuator"] - }}, - "/a1-policy/v2/rics/ric": {"get": { - "summary": "Returns info for one Near-RT RIC", - "description": "Either a Near-RT RIC identity or a Managed Element identity can be specified.<br>The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).", - "operationId": "getRic", - "responses": { - "200": { - "description": "Near-RT RIC is found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ric_info_v2"}}} - }, - "404": { - "description": "Near-RT RIC is not found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [ - { - "schema": {"type": "string"}, - "in": "query", - "name": "managed_element_id", - "description": "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.", - "required": false - }, - { - "schema": {"type": "string"}, - "in": "query", - "name": "ric_id", - "description": "The identity of a Near-RT RIC to get information for.", - "required": false - } - ], - "tags": ["NearRT-RIC Repository"] - }}, - "/actuator/shutdown": {"post": { - "summary": "Actuator web endpoint 'shutdown'", - "operationId": "shutdown", - "responses": {"200": { - "description": "OK", - "content": { - "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}}, - "application/json": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}} - } - }}, - "tags": ["Actuator"] - }}, - "/a1-policy/v2/policy-types": {"get": { - "summary": "Query policy type identities", - "operationId": "getPolicyTypes", - "responses": { - "200": { - "description": "Policy type IDs", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policytype_id_list_v2"}}} - }, - "404": { - "description": "Near-RT RIC is not found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [ - { - "schema": {"type": "string"}, - "in": "query", - "name": "ric_id", - "description": "Select types for the given Near-RT RIC identity.", - "required": false - }, - { - "schema": {"type": "string"}, - "in": "query", - "name": "type_name", - "description": "Select types with the given type name (type identity has the format <typename_version>)", - "required": false - }, - { - "schema": {"type": "string"}, - "in": "query", - "name": "compatible_with_version", - "description": "Select types that are compatible with the given version. This parameter is only applicable in conjunction with type_name. As an example version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching types will be returned sorted in ascending order.", - "required": false - } - ], - "tags": ["A1 Policy Management"] - }}, - "/a1-policy/v2/policies/{policy_id}": { - "get": { - "summary": "Returns a policy", - "operationId": "getPolicy", - "responses": { - "200": { - "description": "Policy found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_v2"}}} - }, - "404": { - "description": "Policy is not found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} + "callbacks" : { + "RICStatus" : { + "{$request.body#/callback_url}" : { + "post" : { + "tags" : [ "Service callbacks" ], + "summary" : "Callback for Near-RT RIC status", + "description" : "The URL to this call is registered at Service registration.", + "operationId" : "serviceCallback", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/service_callback_info_v2" + } } + }, + "required" : true }, - "parameters": [{ - "schema": {"type": "string"}, - "in": "path", - "name": "policy_id", - "required": true - }], - "tags": ["A1 Policy Management"] - }, - "delete": { - "summary": "Delete a policy", - "operationId": "deletePolicy", - "responses": { - "200": { - "description": "Not used", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}} - }, - "423": { - "description": "Near-RT RIC is not operational", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}} - }, - "204": { - "description": "Policy deleted", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}} - }, - "404": { - "description": "Policy is not found", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}} + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } } - }, - "parameters": [{ - "schema": {"type": "string"}, - "in": "path", - "name": "policy_id", - "required": true - }], - "tags": ["A1 Policy Management"] + } + } + } } - }, - "/actuator/metrics/{requiredMetricName}": {"get": { - "summary": "Actuator web endpoint 'metrics-requiredMetricName'", - "operationId": "metrics-requiredMetricName", - "responses": {"200": { - "description": "OK", - "content": { - "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}}, - "application/json": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}} - } - }}, - "parameters": [{ - "schema": {"type": "string"}, - "in": "path", - "name": "requiredMetricName", - "required": true - }], - "tags": ["Actuator"] - }}, - "/a1-policy/v2/configuration": { - "get": { - "summary": "Returns the contents of the application configuration file", - "operationId": "getConfiguration", - "responses": { - "200": { - "description": "Configuration", - "content": {"application/json": {"schema": {"type": "object"}}} - }, - "404": { - "description": "File is not found or readable", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } + } + } + } + }, + "/actuator/info" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'info'", + "operationId" : "info", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/status" : { + "get" : { + "tags" : [ "Health Check" ], + "summary" : "Returns status and statistics of this service", + "operationId" : "getStatusV1", + "responses" : { + "200" : { + "description" : "Service is living", + "content" : { + "*/*" : { + "schema" : { + "type" : "string" + } + } + } + } + } + } + }, + "/a1-policy/v2/policy-types/{policytype_id}" : { + "get" : { + "tags" : [ "A1 Policy Management" ], + "summary" : "Returns a policy type definition", + "operationId" : "getPolicyTypeDefinition", + "parameters" : [ { + "name" : "policytype_id", + "in" : "path", + "required" : true, + "style" : "simple", + "explode" : false, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "schema of the given policy type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_type_definition" }, - "tags": ["Management of configuration"] - }, - "put": { - "summary": "Replace the current configuration file with the given configuration", - "requestBody": { - "content": {"application/json": {"schema": {"type": "object"}}}, - "required": true + "examples" : { + "policy_type_definition" : { + "$ref" : "#/components/examples/policy_type_definition" + } + } + } + } + }, + "404" : { + "description" : "Policy type is not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + } + }, + "/actuator/logfile" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'logfile'", + "operationId" : "logfile", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "text/plain;charset=UTF-8" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/actuator/health" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'health'", + "operationId" : "health", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/a1-policy/v2/policies" : { + "get" : { + "tags" : [ "A1 Policy Management" ], + "summary" : "Query policy identities", + "description" : "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.", + "operationId" : "getPolicyIds", + "parameters" : [ { + "name" : "policytype_id", + "in" : "query", + "description" : "Select policies of a given policy type identity.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + }, { + "name" : "ric_id", + "in" : "query", + "description" : "Select policies of a given Near-RT RIC identity.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + }, { + "name" : "service_id", + "in" : "query", + "description" : "Select policies owned by a given service.", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + }, { + "name" : "type_name", + "in" : "query", + "description" : "Select policies of types with the given type name (type identity has the format <typename_version>)", + "required" : false, + "style" : "form", + "explode" : true, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Policy identities", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_id_list" }, - "operationId": "putConfiguration", - "responses": { - "200": { - "description": "Configuration updated", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}} - }, - "400": { - "description": "Invalid configuration provided", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}} - }, - "500": { - "description": "Something went wrong when replacing the configuration. Try again.", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } + "examples" : { + "policy_id_list" : { + "$ref" : "#/components/examples/policy_id_list" + } + } + } + } + }, + "404" : { + "description" : "Near-RT RIC or type not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + }, + "put" : { + "tags" : [ "A1 Policy Management" ], + "summary" : "Create or update a policy", + "operationId" : "putPolicy", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_info" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "description" : "Policy updated", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + } + }, + "201" : { + "description" : "Policy created", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + } + }, + "423" : { + "description" : "Near-RT RIC is not operational", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + }, + "404" : { + "description" : "Near-RT RIC or policy type is not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + } + }, + "/a1-policy/v2/services/{service_id}" : { + "delete" : { + "tags" : [ "Service Registry and Supervision" ], + "summary" : "Unregister a service", + "operationId" : "deleteService", + "parameters" : [ { + "name" : "service_id", + "in" : "path", + "required" : true, + "style" : "simple", + "explode" : false, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Not used", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + } + }, + "204" : { + "description" : "Service unregistered", + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + } + }, + "404" : { + "description" : "Service not found", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + } + } + } + } + }, + "/actuator/heapdump" : { + "get" : { + "tags" : [ "Actuator" ], + "summary" : "Actuator web endpoint 'heapdump'", + "operationId" : "heapdump", + "responses" : { + "200" : { + "description" : "OK", + "content" : { + "application/octet-stream" : { + "schema" : { + "type" : "object" + } + } + } + } + } + } + }, + "/a1-policy/v2/policies/{policy_id}/status" : { + "get" : { + "tags" : [ "A1 Policy Management" ], + "summary" : "Returns a policy status", + "operationId" : "getPolicyStatus", + "parameters" : [ { + "name" : "policy_id", + "in" : "path", + "required" : true, + "style" : "simple", + "explode" : false, + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "200" : { + "description" : "Policy status", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_status_info" }, - "tags": ["Management of configuration"] + "examples" : { + "policy_status_info" : { + "$ref" : "#/components/examples/policy_status_info" + } + } + } + } + }, + "404" : { + "description" : "Policy is not found", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } } + } + } + } + } + }, + "components" : { + "schemas" : { + "policy_type_definition" : { + "type" : "object", + "properties" : { + "policy_schema" : { + "type" : "object", + "description" : "Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema" + } }, - "/actuator": {"get": { - "summary": "Actuator root web endpoint", - "operationId": "links", - "responses": {"200": { - "description": "OK", - "content": { - "application/vnd.spring-boot.actuator.v3+json": {"schema": { - "additionalProperties": { - "additionalProperties": {"$ref": "#/components/schemas/Link"}, - "type": "object" - }, - "type": "object" - }}, - "application/json": {"schema": { - "additionalProperties": { - "additionalProperties": {"$ref": "#/components/schemas/Link"}, - "type": "object" - }, - "type": "object" - }}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": { - "additionalProperties": { - "additionalProperties": {"$ref": "#/components/schemas/Link"}, - "type": "object" - }, - "type": "object" - }} - } - }}, - "tags": ["Actuator"] - }}, - "/actuator/loggers/{name}": { - "post": { - "summary": "Actuator web endpoint 'loggers-name'", - "requestBody": {"content": {"application/json": {"schema": { - "type": "string", - "enum": [ - "TRACE", - "DEBUG", - "INFO", - "WARN", - "ERROR", - "FATAL", - "OFF" - ] - }}}}, - "operationId": "loggers-name_2", - "responses": {"200": { - "description": "OK", - "content": {"*/*": {"schema": {"type": "object"}}} - }}, - "parameters": [{ - "schema": {"type": "string"}, - "in": "path", - "name": "name", - "required": true - }], - "tags": ["Actuator"] - }, - "get": { - "summary": "Actuator web endpoint 'loggers-name'", - "operationId": "loggers-name", - "responses": {"200": { - "description": "OK", - "content": { - "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}}, - "application/json": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}} - } - }}, - "parameters": [{ - "schema": {"type": "string"}, - "in": "path", - "name": "name", - "required": true - }], - "tags": ["Actuator"] + "description" : "Contains policy type schema definition" + }, + "error_information" : { + "type" : "object", + "properties" : { + "detail" : { + "type" : "string", + "description" : " A human-readable explanation specific to this occurrence of the problem.", + "example" : "Policy type not found" + }, + "status" : { + "type" : "integer", + "description" : "The HTTP status code generated by the origin server for this occurrence of the problem. ", + "format" : "int32", + "example" : 404 + } + }, + "description" : "Problem as defined in https://tools.ietf.org/html/rfc7807" + }, + "void" : { + "type" : "object", + "description" : "Void/empty" + }, + "status_info" : { + "type" : "object", + "properties" : { + "status" : { + "type" : "string", + "description" : "status text" + } + } + }, + "authorization_result" : { + "required" : [ "result" ], + "type" : "object", + "properties" : { + "result" : { + "type" : "boolean", + "description" : "If true, the access is granted" + } + }, + "description" : "Result of authorization", + "example" : { + "result" : true + } + }, + "ric_info" : { + "type" : "object", + "properties" : { + "ric_id" : { + "type" : "string", + "description" : "identity of the Near-RT RIC" + }, + "managed_element_ids" : { + "type" : "array", + "description" : "O1 identities for managed entities", + "items" : { + "type" : "string", + "description" : "O1 identities for managed entities" } + }, + "state" : { + "type" : "string", + "description" : "Represents the states for a Near-RT RIC", + "enum" : [ "UNAVAILABLE", "AVAILABLE", "SYNCHRONIZING", "CONSISTENCY_CHECK" ] + }, + "policytype_ids" : { + "type" : "array", + "description" : "supported policy types", + "items" : { + "type" : "string", + "description" : "supported policy types" + } + } }, - "/a1-policy/v2/services/{service_id}/keepalive": {"put": { - "summary": "Heartbeat indicates that the service is running", - "description": "A registered service should invoke this operation regularly to indicate that it is still alive. If a registered service fails to invoke this operation before the end of a timeout period the service will be deregistered and all its A1 policies wil be removed. (This timeout can be set or disabled when each service is initially registered)", - "operationId": "keepAliveService", - "responses": { - "200": { - "description": "Service supervision timer refreshed, OK", - "content": {"*/*": {"schema": {"type": "object"}}} - }, - "404": { - "description": "The service is not found, needs re-registration", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [{ - "schema": {"type": "string"}, - "in": "path", - "name": "service_id", - "required": true - }], - "tags": ["Service Registry and Supervision"] - }}, - "/actuator/metrics": {"get": { - "summary": "Actuator web endpoint 'metrics'", - "operationId": "metrics", - "responses": {"200": { - "description": "OK", - "content": { - "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}}, - "application/json": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}} - } - }}, - "tags": ["Actuator"] - }}, - "/a1-policy/v2/rics": {"get": { - "summary": "Query Near-RT RIC information", - "description": "The call returns all Near-RT RICs that supports a given policy type identity", - "operationId": "getRics", - "responses": { - "200": { - "description": "OK", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ric_info_list_v2"}}} - }, - "404": { - "description": "Policy type is not found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [{ - "schema": {"type": "string"}, - "in": "query", - "name": "policytype_id", - "description": "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned", - "required": false - }], - "tags": ["NearRT-RIC Repository"] - }}, - "/a1-policy/v2/services": { - "get": { - "summary": "Returns service information", - "description": "Either information about a registered service with given identity or all registered services are returned.", - "operationId": "getServices", - "responses": { - "200": { - "description": "OK", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_list_v2"}}} - }, - "404": { - "description": "Service is not found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [{ - "schema": {"type": "string"}, - "in": "query", - "name": "service_id", - "description": "The identity of the service", - "required": false - }], - "tags": ["Service Registry and Supervision"] - }, - "put": { - "summary": "Register a service", - "requestBody": { - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_registration_info_v2"}}}, - "required": true - }, - "description": "Registering a service is needed to:<ul><li>Get callbacks about available NearRT RICs.<\/li><li>Activate supervision of the service. If a service is inactive, its policies will automatically be deleted.<\/li><\/ul>Policies can be created even if the service is not registerred. This is a feature which it is optional to use.", - "operationId": "putService", - "responses": { - "200": { - "description": "Service updated", - "content": {"*/*": {"schema": {"type": "object"}}} - }, - "201": { - "description": "Service created", - "content": {"*/*": {"schema": {"type": "object"}}} - }, - "400": { - "description": "The ServiceRegistrationInfo is not accepted", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "tags": ["Service Registry and Supervision"] + "description" : "Information for a Near-RT RIC" + }, + "service_registration_info" : { + "required" : [ "service_id" ], + "type" : "object", + "properties" : { + "callback_url" : { + "type" : "string", + "description" : "callback for notifying of Near-RT RIC state changes" + }, + "service_id" : { + "type" : "string", + "description" : "identity of the service" + }, + "keep_alive_interval_seconds" : { + "type" : "integer", + "description" : "keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means timeout supervision is disabled.", + "format" : "int64" + } + }, + "description" : "Information for one service" + }, + "policy_info_list" : { + "type" : "object", + "properties" : { + "policies" : { + "type" : "array", + "description" : "List of policy information", + "items" : { + "$ref" : "#/components/schemas/policy_info" } + } }, - "/actuator/info": {"get": { - "summary": "Actuator web endpoint 'info'", - "operationId": "info", - "responses": {"200": { - "description": "OK", - "content": { - "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}}, - "application/json": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}} - } - }}, - "tags": ["Actuator"] - }}, - "/status": {"get": { - "summary": "Returns status and statistics of this service", - "operationId": "getStatusV1", - "responses": {"200": { - "description": "Service is living", - "content": {"*/*": {"schema": {"type": "string"}}} - }}, - "tags": ["Health Check"] - }}, - "/a1-policy/v2/policy-types/{policytype_id}": {"get": { - "summary": "Returns a policy type definition", - "operationId": "getPolicyType", - "responses": { - "200": { - "description": "Policy type", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/policytype_v2"}}} - }, - "404": { - "description": "Policy type is not found", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [{ - "schema": {"type": "string"}, - "in": "path", - "name": "policytype_id", - "required": true - }], - "tags": ["A1 Policy Management"] - }}, - "/actuator/logfile": {"get": { - "summary": "Actuator web endpoint 'logfile'", - "operationId": "logfile", - "responses": {"200": { - "description": "OK", - "content": {"text/plain;charset=UTF-8": {"schema": {"type": "object"}}} - }}, - "tags": ["Actuator"] - }}, - "/actuator/health": {"get": { - "summary": "Actuator web endpoint 'health'", - "operationId": "health", - "responses": {"200": { - "description": "OK", - "content": { - "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}}, - "application/json": {"schema": {"type": "object"}}, - "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}} - } - }}, - "tags": ["Actuator"] - }}, - "/a1-policy/v2/policies": { - "get": { - "summary": "Query policy identities", - "description": "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.", - "operationId": "getPolicyIds", - "responses": { - "200": { - "description": "Policy identities", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_id_list_v2"}}} - }, - "404": { - "description": "Near-RT RIC or type not found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [ - { - "schema": {"type": "string"}, - "in": "query", - "name": "policytype_id", - "description": "Select policies of a given policy type identity.", - "required": false - }, - { - "schema": {"type": "string"}, - "in": "query", - "name": "ric_id", - "description": "Select policies of a given Near-RT RIC identity.", - "required": false - }, - { - "schema": {"type": "string"}, - "in": "query", - "name": "service_id", - "description": "Select policies owned by a given service.", - "required": false - }, - { - "schema": {"type": "string"}, - "in": "query", - "name": "type_name", - "description": "Select policies of types with the given type name (type identity has the format <typename_version>)", - "required": false - } - ], - "tags": ["A1 Policy Management"] - }, - "put": { - "summary": "Create or update a policy", - "requestBody": { - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_v2"}}}, - "required": true - }, - "operationId": "putPolicy", - "responses": { - "200": { - "description": "Policy updated", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}} - }, - "201": { - "description": "Policy created", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}} - }, - "423": { - "description": "Near-RT RIC is not operational", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - }, - "404": { - "description": "Near-RT RIC or policy type is not found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "tags": ["A1 Policy Management"] + "description" : "List of policy information" + }, + "policy_status_info" : { + "type" : "object", + "properties" : { + "last_modified" : { + "type" : "string", + "description" : "timestamp, last modification time" + }, + "status" : { + "type" : "object", + "description" : "the Policy status" + } + }, + "description" : "Status for one A1-P Policy" + }, + "service_status" : { + "type" : "object", + "properties" : { + "callback_url" : { + "type" : "string", + "description" : "callback for notifying of RIC synchronization" + }, + "service_id" : { + "type" : "string", + "description" : "identity of the service" + }, + "keep_alive_interval_seconds" : { + "type" : "integer", + "description" : "policy keep alive timeout", + "format" : "int64" + }, + "time_since_last_activity_seconds" : { + "type" : "integer", + "description" : "time since last invocation by the service", + "format" : "int64" + } + } + }, + "ric_info_list" : { + "type" : "object", + "properties" : { + "rics" : { + "type" : "array", + "description" : "List of Near-RT RIC information", + "items" : { + "$ref" : "#/components/schemas/ric_info" } + } }, - "/r-app/near-rt-ric-status": {"post": { - "summary": "Callback for Near-RT RIC status", - "requestBody": { - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_callback_info_v2"}}}, - "required": true - }, - "description": "The URL to this call is registered at Service registration.", - "operationId": "serviceCallback", - "responses": {"200": { - "description": "OK", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}} - }}, - "tags": ["Service callbacks"] - }}, - "/a1-policy/v2/services/{service_id}": {"delete": { - "summary": "Unregister a service", - "operationId": "deleteService", - "responses": { - "200": { - "description": "Not used", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}} - }, - "204": { - "description": "Service unregistered", - "content": {"*/*": {"schema": {"type": "object"}}} - }, - "404": { - "description": "Service not found", - "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [{ - "schema": {"type": "string"}, - "in": "path", - "name": "service_id", - "required": true - }], - "tags": ["Service Registry and Supervision"] - }}, - "/actuator/heapdump": {"get": { - "summary": "Actuator web endpoint 'heapdump'", - "operationId": "heapdump", - "responses": {"200": { - "description": "OK", - "content": {"application/octet-stream": {"schema": {"type": "object"}}} - }}, - "tags": ["Actuator"] - }}, - "/a1-policy/v2/policies/{policy_id}/status": {"get": { - "summary": "Returns a policy status", - "operationId": "getPolicyStatus", - "responses": { - "200": { - "description": "Policy status", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_status_info_v2"}}} - }, - "404": { - "description": "Policy is not found", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}} - } - }, - "parameters": [{ - "schema": {"type": "string"}, - "in": "path", - "name": "policy_id", - "required": true - }], - "tags": ["A1 Policy Management"] - }} - }, - "info": { - "license": { - "name": "Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License.", - "url": "http://www.apache.org/licenses/LICENSE-2.0" + "description" : "List of Near-RT RIC information" + }, + "input" : { + "required" : [ "access_type", "auth_token", "policy_type_id" ], + "type" : "object", + "properties" : { + "access_type" : { + "type" : "string", + "description" : "Access type", + "enum" : [ "READ", "WRITE", "DELETE" ] + }, + "auth_token" : { + "type" : "string", + "description" : "Authorization token" + }, + "policy_type_id" : { + "type" : "string", + "description" : "Policy type identifier" + } }, - "description": "<h2>General<\/h2><p>The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policies. <br/>The main tasks of the service are:<\/p><ul><li>A1 Policy creation, modification and deletion.<\/li><li>Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs<\/li><li>Maintaining a view of supported Near-RT RIC policy types<\/li><li>Supervision of using services (R-APPs). When a service is unavailable, its policies are removed.<\/li><\/ul><h2>APIs provided or defined by the service<\/h2><h3>A1 Policy Management<\/h3><p>This is an API for management of A1 Policies.<\/p><ul><li>A1 Policy retrieval, creation, modification and deletion.<\/li><li>Retrieval of supported A1 Policy types for a Near-RT RIC<\/li><li>Retrieval of status for existing A1 policies<\/li><\/ul><h3>Management of configuration<\/h3><p>API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.<\/p><h3>Service callbacks<\/h3><p>These are endpoints that are invoked by this service. The callbacks are registered in this service at service registration.<\/p><h3>NearRT-RIC Repository<\/h3><p>This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.<\/p><h3>Health Check<\/h3><p>API used for supervision of the PMS component.<\/p><h3>Service Registry and Supervision<\/h3><p>API used for registering services that uses PMS. Each A1 policy is optionally owned by a service. PMS can supervise each registered service by a heart-beat supervision and will automatically remove policies for unavailable services. Note that a service does not need to be registered in order to create A1 Policies. This is a feature that is optional to use.<\/p><h3>Authorization API<\/h3><p>API used for access control of A1 Policy access. If configured, an external authorization provider is requested to grant access to the A1 Policy type.<\/p><h3>Spring Boot Actuator<\/h3><p>Provides generic functions used to monitor and manage the Spring web application.<\/p>", - "title": "A1 Policy Management Service", - "version": "1.2.0" - }, - "tags": [ - { - "name": "Authorization API", - "description": "API used for authorization of information A1 policy access (this is provided by an authorization producer such as OPA).\nNote that this API is called by PMS, it is not provided.\n" + "description" : "input" + }, + "policy_authorization" : { + "required" : [ "input" ], + "type" : "object", + "properties" : { + "input" : { + "$ref" : "#/components/schemas/input" + } }, - { - "name": "Actuator", - "description": "Monitor and interact", - "externalDocs": { - "description": "Spring Boot Actuator Web API Documentation", - "url": "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/" + "description" : "Authorization request for A1 policy requests" + }, + "policy_type_id_list" : { + "type" : "object", + "properties" : { + "policytype_ids" : { + "type" : "array", + "description" : "Policy type identities", + "items" : { + "type" : "string", + "description" : "Policy type identities" } + } + }, + "description" : "Information about policy types" + }, + "policy_info" : { + "required" : [ "policy_data", "policy_id", "policytype_id", "ric_id", "service_id" ], + "type" : "object", + "properties" : { + "ric_id" : { + "type" : "string", + "description" : "identity of the target Near-RT RIC" + }, + "policy_id" : { + "type" : "string", + "description" : "identity of the policy" + }, + "transient" : { + "type" : "boolean", + "description" : "if true, the policy is deleted at RIC restart. If false, its value is maintained by this service until explicitly deleted. Default false.", + "nullable" : false, + "example" : false, + "default" : false + }, + "service_id" : { + "type" : "string", + "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered." + }, + "policy_data" : { + "type" : "object", + "description" : "the configuration of the policy" + }, + "status_notification_uri" : { + "type" : "string", + "description" : "Callback URI for policy status updates" + }, + "policytype_id" : { + "type" : "string", + "description" : "identity of the policy type" + } + }, + "description" : "Information for one A1-P Policy" + }, + "policy_id_list" : { + "type" : "object", + "properties" : { + "policy_ids" : { + "type" : "array", + "description" : "Policy identities", + "items" : { + "type" : "string", + "description" : "Policy identities" + } + } + }, + "description" : "A list of policy identities", + "example" : { + "policy_ids" : [ "policy_ids", "policy_ids" ] + } + }, + "service_status_list" : { + "type" : "object", + "properties" : { + "service_list" : { + "type" : "array", + "description" : "List of service information", + "items" : { + "$ref" : "#/components/schemas/service_status" + } + } + } + }, + "service_callback_info_v2" : { + "required" : [ "event_type", "ric_id" ], + "type" : "object", + "properties" : { + "ric_id" : { + "type" : "string", + "description" : "identity of a Near-RT RIC" + }, + "event_type" : { + "type" : "string", + "description" : "values:\nAVAILABLE: the Near-RT RIC has become available for A1 Policy management", + "enum" : [ "AVAILABLE" ] + } + }, + "description" : "Information transferred as in Service callbacks (callback_url)" + }, + "Link" : { + "type" : "object", + "properties" : { + "templated" : { + "type" : "boolean" + }, + "href" : { + "type" : "string" + } + } + } + }, + "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" ] + } ] } - ] + } + } + } }
\ No newline at end of file diff --git a/docs/offeredapis/swagger/pms-api.yaml b/docs/offeredapis/swagger/pms-api.yaml index 44dc2ba4..0895f50d 100644 --- a/docs/offeredapis/swagger/pms-api.yaml +++ b/docs/offeredapis/swagger/pms-api.yaml @@ -1,4 +1,25 @@ -openapi: 3.0.1 +# ============LICENSE_START======================================================= +# Copyright (C) 2020-2023 Nordix Foundation +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# 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\ @@ -27,22 +48,23 @@ info: \ 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. + name: Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License, and + Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. url: http://www.apache.org/licenses/LICENSE-2.0 title: A1 Policy Management Service version: 1.2.0 servers: -- url: / + - url: / tags: -- description: "API used for authorization of information A1 policy access (this is\ - \ provided by an authorization producer such as OPA).\nNote that this API is called\ - \ by PMS, it is not provided.\n" - name: 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 + - 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: @@ -51,45 +73,48 @@ paths: \ 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 + - 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_v2' + $ref: '#/components/schemas/policy_info_list' description: Policies "404": content: @@ -99,7 +124,7 @@ paths: description: "Near-RT RIC, policy type or service not found" summary: Query for A1 policy instances tags: - - A1 Policy Management + - A1 Policy Management /example-authz-check: post: description: The authorization function decides if access is granted. @@ -119,7 +144,7 @@ paths: description: OK summary: Request for access authorization. tags: - - Authorization API + - Authorization API /actuator/threaddump: get: operationId: threaddump @@ -141,7 +166,7 @@ paths: description: OK summary: Actuator web endpoint 'threaddump' tags: - - Actuator + - Actuator /a1-policy/v2/status: get: operationId: getStatus @@ -150,11 +175,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/status_info_v2' + $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 + - Health Check /actuator/loggers: get: operationId: loggers @@ -173,7 +201,7 @@ paths: description: OK summary: Actuator web endpoint 'loggers' tags: - - Actuator + - Actuator /actuator/health/**: get: operationId: health-path @@ -192,7 +220,7 @@ paths: description: OK summary: Actuator web endpoint 'health-path' tags: - - Actuator + - Actuator /a1-policy/v2/rics/ric: get: description: Either a Near-RT RIC identity or a Managed Element identity can @@ -200,29 +228,32 @@ paths: 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\ + - 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 + 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_v2' + $ref: '#/components/schemas/ric_info' + examples: + ric_info: + $ref: '#/components/examples/ric_info' description: Near-RT RIC is found "404": content: @@ -232,7 +263,7 @@ paths: description: Near-RT RIC is not found summary: Returns info for one Near-RT RIC tags: - - NearRT-RIC Repository + - NearRT-RIC Repository /actuator/shutdown: post: operationId: shutdown @@ -251,45 +282,48 @@ paths: description: OK summary: Actuator web endpoint 'shutdown' tags: - - Actuator + - 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 + - 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/policytype_id_list_v2' + $ref: '#/components/schemas/policy_type_id_list' description: Policy type IDs "404": content: @@ -299,18 +333,18 @@ paths: description: Near-RT RIC is not found summary: Query policy type identities tags: - - A1 Policy Management + - 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 + - explode: false + in: path + name: policy_id + required: true + schema: + type: string + style: simple responses: "200": content: @@ -338,23 +372,26 @@ paths: description: Policy is not found summary: Delete a policy tags: - - A1 Policy Management + - A1 Policy Management get: operationId: getPolicy parameters: - - explode: false - in: path - name: policy_id - required: true - schema: - type: string - style: simple + - 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_v2' + $ref: '#/components/schemas/policy_info' + examples: + policy_info: + $ref: '#/components/examples/policy_info' description: Policy found "404": content: @@ -364,18 +401,18 @@ paths: description: Policy is not found summary: Returns a policy tags: - - A1 Policy Management + - A1 Policy Management /actuator/metrics/{requiredMetricName}: get: operationId: metrics-requiredMetricName parameters: - - explode: false - in: path - name: requiredMetricName - required: true - schema: - type: string - style: simple + - explode: false + in: path + name: requiredMetricName + required: true + schema: + type: string + style: simple responses: "200": content: @@ -391,7 +428,7 @@ paths: description: OK summary: Actuator web endpoint 'metrics-requiredMetricName' tags: - - Actuator + - Actuator /a1-policy/v2/configuration: get: operationId: getConfiguration @@ -400,7 +437,7 @@ paths: content: application/json: schema: - type: object + type: string description: Configuration "404": content: @@ -410,7 +447,7 @@ paths: description: File is not found or readable summary: Returns the contents of the application configuration file tags: - - Management of configuration + - configuration put: operationId: putConfiguration requestBody: @@ -441,7 +478,7 @@ paths: again. summary: Replace the current configuration file with the given configuration tags: - - Management of configuration + - configuration /actuator: get: operationId: links @@ -472,18 +509,18 @@ paths: description: OK summary: Actuator root web endpoint tags: - - Actuator + - Actuator /actuator/loggers/{name}: get: operationId: loggers-name parameters: - - explode: false - in: path - name: name - required: true - schema: - type: string - style: simple + - explode: false + in: path + name: name + required: true + schema: + type: string + style: simple responses: "200": content: @@ -499,29 +536,29 @@ paths: description: OK summary: Actuator web endpoint 'loggers-name' tags: - - Actuator + - Actuator post: operationId: loggers-name_2 parameters: - - explode: false - in: path - name: name - required: true - schema: - type: string - style: simple + - 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" + - TRACE + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - "OFF" type: string responses: "200": @@ -532,7 +569,7 @@ paths: description: OK summary: Actuator web endpoint 'loggers-name' tags: - - Actuator + - Actuator /a1-policy/v2/services/{service_id}/keepalive: put: description: A registered service should invoke this operation regularly to @@ -542,13 +579,13 @@ paths: when each service is initially registered) operationId: keepAliveService parameters: - - explode: false - in: path - name: service_id - required: true - schema: - type: string - style: simple + - explode: false + in: path + name: service_id + required: true + schema: + type: string + style: simple responses: "200": content: @@ -564,7 +601,7 @@ paths: description: "The service is not found, needs re-registration" summary: Heartbeat indicates that the service is running tags: - - Service Registry and Supervision + - Service Registry and Supervision /actuator/metrics: get: operationId: metrics @@ -583,28 +620,31 @@ paths: description: OK summary: Actuator web endpoint 'metrics' tags: - - Actuator + - 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\ + - 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 + 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_v2' + $ref: '#/components/schemas/ric_info_list' + examples: + ric_info_list: + $ref: '#/components/examples/ric_info_list' description: OK "404": content: @@ -614,27 +654,30 @@ paths: description: Policy type is not found summary: Query Near-RT RIC information tags: - - NearRT-RIC Repository + - 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 + - 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_list_v2' + $ref: '#/components/schemas/service_status_list' + examples: + service_status_list: + $ref: '#/components/examples/service_status_list' description: OK "404": content: @@ -644,7 +687,7 @@ paths: description: Service is not found summary: Returns service information tags: - - Service Registry and Supervision + - 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\ @@ -656,7 +699,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/service_registration_info_v2' + $ref: '#/components/schemas/service_registration_info' required: true responses: "200": @@ -679,7 +722,29 @@ paths: description: The ServiceRegistrationInfo is not accepted summary: Register a service tags: - - Service Registry and Supervision + - Service Registry and Supervision + callbacks: + RICStatus: + "{$request.body#/callback_url}": + post: + description: The URL to this call is registered at Service registration. + operationId: serviceCallback + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/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 /actuator/info: get: operationId: info @@ -698,7 +763,7 @@ paths: description: OK summary: Actuator web endpoint 'info' tags: - - Actuator + - Actuator /status: get: operationId: getStatusV1 @@ -711,34 +776,37 @@ paths: description: Service is living summary: Returns status and statistics of this service tags: - - Health Check + - Health Check /a1-policy/v2/policy-types/{policytype_id}: get: - operationId: getPolicyType + operationId: getPolicyTypeDefinition parameters: - - explode: false - in: path - name: policytype_id - required: true - schema: - type: string - style: simple + - explode: false + in: path + name: policytype_id + required: true + schema: + type: string + style: simple responses: "200": content: - '*/*': + application/json: schema: - $ref: '#/components/schemas/policytype_v2' - description: Policy type + $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 + - A1 Policy Management /actuator/logfile: get: operationId: logfile @@ -751,7 +819,7 @@ paths: description: OK summary: Actuator web endpoint 'logfile' tags: - - Actuator + - Actuator /actuator/health: get: operationId: health @@ -770,7 +838,7 @@ paths: description: OK summary: Actuator web endpoint 'health' tags: - - Actuator + - Actuator /a1-policy/v2/policies: get: description: "Returns a list of A1 policies matching given search criteria.\ @@ -778,45 +846,48 @@ paths: \ 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 + - 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_v2' + $ref: '#/components/schemas/policy_id_list' description: Policy identities "404": content: @@ -826,14 +897,14 @@ paths: description: Near-RT RIC or type not found summary: Query policy identities tags: - - A1 Policy Management + - A1 Policy Management put: operationId: putPolicy requestBody: content: application/json: schema: - $ref: '#/components/schemas/policy_info_v2' + $ref: '#/components/schemas/policy_info' required: true responses: "200": @@ -862,38 +933,18 @@ paths: 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 Management /a1-policy/v2/services/{service_id}: delete: operationId: deleteService parameters: - - explode: false - in: path - name: service_id - required: true - schema: - type: string - style: simple + - explode: false + in: path + name: service_id + required: true + schema: + type: string + style: simple responses: "200": content: @@ -915,7 +966,7 @@ paths: description: Service not found summary: Unregister a service tags: - - Service Registry and Supervision + - Service Registry and Supervision /actuator/heapdump: get: operationId: heapdump @@ -928,24 +979,27 @@ paths: description: OK summary: Actuator web endpoint 'heapdump' tags: - - Actuator + - 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 + - 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_v2' + $ref: '#/components/schemas/policy_status_info' description: Policy status "404": content: @@ -955,9 +1009,118 @@ paths: description: Policy is not found summary: Returns a policy status tags: - - A1 Policy Management + - 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: @@ -976,9 +1139,7 @@ components: void: description: Void/empty type: object - status_info_v2: - example: - status: status + status_info: properties: status: description: status text @@ -993,19 +1154,10 @@ components: description: "If true, the access is granted" type: boolean required: - - result + - result type: object - ric_info_v2: + 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 @@ -1019,10 +1171,10 @@ components: state: description: Represents the states for a Near-RT RIC enum: - - UNAVAILABLE - - AVAILABLE - - SYNCHRONIZING - - CONSISTENCY_CHECK + - UNAVAILABLE + - AVAILABLE + - SYNCHRONIZING + - CONSISTENCY_CHECK type: string policytype_ids: description: supported policy types @@ -1031,7 +1183,7 @@ components: type: string type: array type: object - service_registration_info_v2: + service_registration_info: description: Information for one service properties: callback_url: @@ -1051,38 +1203,19 @@ components: format: int64 type: integer required: - - service_id + - service_id type: object - policy_info_list_v2: + policy_info_list: description: List of policy information - example: - 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 properties: policies: description: List of policy information items: - $ref: '#/components/schemas/policy_info_v2' + $ref: '#/components/schemas/policy_info' type: array type: object - policy_status_info_v2: + policy_status_info: description: Status for one A1-P Policy - example: - last_modified: last_modified - status: "{}" properties: last_modified: description: "timestamp, last modification time" @@ -1091,13 +1224,7 @@ components: description: the Policy status type: object type: object - service_status_v2: - description: List of service information - example: - callback_url: callback_url - service_id: service_id - keep_alive_interval_seconds: 0 - time_since_last_activity_seconds: 6 + service_status: properties: callback_url: description: callback for notifying of RIC synchronization @@ -1114,52 +1241,24 @@ components: format: int64 type: integer type: object - ric_info_list_v2: + 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_v2' + $ref: '#/components/schemas/ric_info' type: array type: object - policytype_v2: - description: Policy type - example: - policy_schema: "{}" - properties: - policy_schema: - description: Policy type json schema. The schema is a json object following - http://json-schema.org/draft-07/schema - type: object - type: object input: description: input properties: access_type: description: Access type enum: - - READ - - WRITE - - DELETE + - READ + - WRITE + - DELETE type: string auth_token: description: Authorization token @@ -1168,9 +1267,9 @@ components: description: Policy type identifier type: string required: - - access_type - - auth_token - - policy_type_id + - access_type + - auth_token + - policy_type_id type: object policy_authorization: description: Authorization request for A1 policy requests @@ -1178,14 +1277,10 @@ components: input: $ref: '#/components/schemas/input' required: - - input + - input type: object - policytype_id_list_v2: + policy_type_id_list: description: Information about policy types - example: - policytype_ids: - - policytype_ids - - policytype_ids properties: policytype_ids: description: Policy type identities @@ -1194,16 +1289,8 @@ components: type: string type: array type: object - policy_info_v2: + policy_info: description: Information for one A1-P Policy - example: - 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 properties: ric_id: description: identity of the target Near-RT RIC @@ -1217,6 +1304,7 @@ components: \ 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 @@ -1233,17 +1321,18 @@ components: description: identity of the policy type type: string required: - - policy_data - - policy_id - - policytype_id - - ric_id + - ric_id + - policy_id + - service_id + - policy_data + - policytype_id type: object - policy_id_list_v2: + policy_id_list: description: A list of policy identities example: policy_ids: - - policy_ids - - policy_ids + - policy_ids + - policy_ids properties: policy_ids: description: Policy identities @@ -1252,23 +1341,12 @@ components: type: string type: array type: object - service_list_v2: - description: List of service information - 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 + service_status_list: properties: service_list: description: List of service information items: - $ref: '#/components/schemas/service_status_v2' + $ref: '#/components/schemas/service_status' type: array type: object service_callback_info_v2: @@ -1281,11 +1359,11 @@ components: description: "values:\nAVAILABLE: the Near-RT RIC has become available\ \ for A1 Policy management" enum: - - AVAILABLE + - AVAILABLE type: string required: - - event_type - - ric_id + - event_type + - ric_id type: object Link: properties: |