diff options
Diffstat (limited to 'a1-policy-management/api/offeredapis/swagger')
-rw-r--r-- | a1-policy-management/api/offeredapis/swagger/pms-api-v3.json | 2134 | ||||
-rw-r--r-- | a1-policy-management/api/offeredapis/swagger/pms-api-v3.yaml | 1210 | ||||
-rw-r--r-- | a1-policy-management/api/offeredapis/swagger/pms-api.json | 1864 | ||||
-rw-r--r-- | a1-policy-management/api/offeredapis/swagger/pms-api.yaml | 1368 |
4 files changed, 6576 insertions, 0 deletions
diff --git a/a1-policy-management/api/offeredapis/swagger/pms-api-v3.json b/a1-policy-management/api/offeredapis/swagger/pms-api-v3.json new file mode 100644 index 00000000..c844073a --- /dev/null +++ b/a1-policy-management/api/offeredapis/swagger/pms-api-v3.json @@ -0,0 +1,2134 @@ +{ + "openapi" : "3.0.3", + "info" : { + "contact" : { + "email" : "discuss-list@onap.com", + "url" : "https://www.onap.org/" + }, + "description" : "<h2>General</h2><p>The O-RAN Non-RT RIC Policy Management Service provides a REST API for managemecnt of A1 policies. <br/>The main tasks of the service are:</p><ul><li>A1 Policy creation, modification and deletion.</li><li>Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs</li><li>Maintaining a view of supported Near-RT RIC policy types</li><li>Supervision of using services (R-APPs). When a service is unavailable, its policies are removed.</li></ul><h2>APIs provided or defined by the service</h2><h3>A1 Policy Management</h3><p>This is an API for management of A1 Policies.</p><ul><li>A1 Policy retrieval, creation, modification and deletion.</li><li>Retrieval of supported A1 Policy types for a Near-RT RIC</li><li>Retrieval of status for existing A1 policies</li></ul><h3>Management of configuration</h3><p>API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.</p><h3>Service callbacks</h3><p>These are endpoints that are invoked by this service. The callbacks are registered in this service at service registration.</p><h3>NearRT-RIC Repository</h3><p>This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.</p><h3>Health Check</h3><p>API used for supervision of the PMS component.</p><h3>Service Registry and Supervision</h3><p>API used for registering services that uses PMS. Each A1 policy is optionally owned by a service. PMS can supervise each registered service by a heart-beat supervision and will automatically remove policies for unavailable services. Note that a service does not need to be registered in order to create A1 Policies. This is a feature that is optional to use.</p><h3>Authorization API</h3><p>API used for access control of A1 Policy access. If configured, an external authorization provider is requested to grant access to the A1 Policy type.</p>", + "license" : { + "name" : "Copyright (C) 2024 OpenInfra Foundation Europe. Licensed under the Apache License.", + "url" : "http://www.apache.org/licenses/LICENSE-2.0" + }, + "title" : "A1 policy management API", + "version" : "1.0.0", + "x-api-id" : "a31c510b-20e6-4a08-af16-368c44d7fba8", + "x-audience" : "external-public" + }, + "servers" : [ { + "url" : "{apiRoot}/a1-policy-management/v1", + "variables" : { + "apiRoot" : { + "default" : "https://example.com", + "description" : "This is the Host:Port or Address where the A1-Policy Management Service can be accessed" + } + } + } ], + "tags" : [ { + "description" : "API used to create polices, Policy Instances and get them as individual using an ID or get all policies/Instances.", + "name" : "A1 Policy Management" + }, { + "description" : "API used to get the NearRT-RIC for the managed element.", + "name" : "NearRT-RIC Repository" + }, { + "description" : "API used to keep the service Alive with in the timeout period", + "name" : "Service Registry and Supervision" + }, { + "description" : "API used to get the health status and statistics of this service", + "name" : "Health Check" + }, { + "name" : "Service callbacks" + }, { + "description" : "API used to create or fetch the application configuration.", + "name" : "Configuration" + } ], + "paths" : { + "/status" : { + "get" : { + "description" : "Returns status and statistics of this service", + "operationId" : "getStatus", + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "status_info" : { + "$ref" : "#/components/examples/StatusInfo" + } + }, + "schema" : { + "$ref" : "#/components/schemas/StatusInfo" + } + } + }, + "description" : "OK- Service is living Ok" + } + }, + "tags" : [ "Health Check" ] + } + }, + "/rics/ric" : { + "get" : { + "description" : "Either a Near-RT RIC identity or a Managed Element identity can be specified.<br>The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).", + "operationId" : "getRic", + "parameters" : [ { + "description" : "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.", + "explode" : true, + "in" : "query", + "name" : "managedElementId", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "The identity of a Near-RT RIC to get information for.", + "explode" : true, + "in" : "query", + "name" : "ricId", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "ric_info" : { + "$ref" : "#/components/examples/RicInfo" + } + }, + "schema" : { + "$ref" : "#/components/schemas/RicInfo" + } + } + }, + "description" : "OK - Near-RT RIC is found OK" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + } + }, + "summary" : "Returns info for one Near-RT RIC", + "tags" : [ "NearRT-RIC Repository" ] + } + }, + "/rics" : { + "get" : { + "description" : "The call returns all Near-RT RICs that supports a given policy type identity", + "operationId" : "getRics", + "parameters" : [ { + "description" : "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned", + "explode" : true, + "in" : "query", + "name" : "policyTypeId", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "ric_info_list" : { + "$ref" : "#/components/examples/RicInfoList" + } + }, + "schema" : { + "$ref" : "#/components/schemas/RicInfoList" + } + } + }, + "description" : "OK" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + } + }, + "summary" : "Query Near-RT RIC information", + "tags" : [ "NearRT-RIC Repository" ] + } + }, + "/policy-types" : { + "get" : { + "description" : "Query policy type identities", + "operationId" : "getPolicyTypes", + "parameters" : [ { + "description" : "Select types for the given Near-RT RIC identity.", + "explode" : true, + "in" : "query", + "name" : "nearRtRicId", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select types with the given type name (type identity has the format <typename_version>)", + "explode" : true, + "in" : "query", + "name" : "typeName", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select types that are compatible with the given version. This parameter is only applicable in conjunction with type_name. As an example version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching types will be returned sorted in ascending order.", + "explode" : true, + "in" : "query", + "name" : "compatibleWithVersion", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "items" : { + "$ref" : "#/components/schemas/PolicyTypeInformation" + }, + "type" : "array" + } + } + }, + "description" : "OK - Policy Type IDs found Ok" + }, + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + }, + "401" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unauthorized" + }, + "403" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Forbidden" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + }, + "406" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Acceptable" + }, + "429" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Too Many Request" + }, + "500" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Internal Server Error" + }, + "502" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Gateway" + }, + "503" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Service Unavailable" + } + }, + "tags" : [ "A1 Policy Management" ] + } + }, + "/policy-types/{policyTypeId}" : { + "get" : { + "description" : "Returns a policy type definition", + "operationId" : "getPolicyTypeDefinition", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "policyTypeId", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "policyObject" : { + "$ref" : "#/components/examples/PolicyObject" + } + }, + "schema" : { + "$ref" : "#/components/schemas/PolicyObject" + } + } + }, + "description" : "OK - schema of the given policy type" + }, + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + }, + "401" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unauthorized" + }, + "403" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Forbidden" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + }, + "406" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Acceptable" + }, + "429" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Too Many Request" + }, + "500" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Internal Server Error" + }, + "502" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Gateway" + }, + "503" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Service Unavailable" + } + }, + "tags" : [ "A1 Policy Management" ] + } + }, + "/policies/{policyId}" : { + "delete" : { + "description" : "Deleting the policy using policyId.", + "operationId" : "deletePolicy", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "policyId", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "204" : { + "description" : "The created A1 policy was deleted" + }, + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + }, + "401" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unauthorized" + }, + "403" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Forbidden" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + }, + "423" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 423, + "title" : "Locked", + "detail" : "State is Locked in the provided request." + }, + "schema" : { + "$ref" : "#/components/schemas/ErrorInformation" + } + } + }, + "description" : "Locked - HTTP Status code which can be used when the state is Locked" + }, + "429" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Too Many Request" + }, + "500" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Internal Server Error" + }, + "502" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Gateway" + }, + "503" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Service Unavailable" + } + }, + "summary" : "Delete a policy", + "tags" : [ "A1 Policy Management" ] + }, + "get" : { + "description" : "Returns a policy", + "operationId" : "getPolicy", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "policyId", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "policyObject" : { + "$ref" : "#/components/examples/PolicyObject" + } + }, + "schema" : { + "$ref" : "#/components/schemas/PolicyObject" + } + } + }, + "description" : "OK - Policy found" + }, + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + }, + "401" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unauthorized" + }, + "403" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Forbidden" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + }, + "406" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Acceptable" + }, + "429" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Too Many Request" + }, + "500" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Internal Server Error" + }, + "502" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Gateway" + }, + "503" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Service Unavailable" + } + }, + "tags" : [ "A1 Policy Management" ] + }, + "put" : { + "description" : "update a policy", + "operationId" : "putPolicy", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "policyId", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "requestBody" : { + "content" : { + "application/json" : { + "examples" : { + "policyObject" : { + "$ref" : "#/components/examples/PolicyObject" + } + }, + "schema" : { + "$ref" : "#/components/schemas/PolicyObject" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PolicyObject" + } + } + }, + "description" : "OK - Policy updated" + }, + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + }, + "401" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unauthorized" + }, + "403" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Forbidden" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + }, + "406" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Acceptable" + }, + "411" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Length Required" + }, + "413" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Payload Too Large" + }, + "415" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unsupported Media Type" + }, + "423" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 423, + "title" : "Locked", + "detail" : "State is Locked in the provided request." + }, + "schema" : { + "$ref" : "#/components/schemas/ErrorInformation" + } + } + }, + "description" : "Locked - HTTP Status code which can be used when the state is Locked" + }, + "429" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Too Many Request" + }, + "500" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Internal Server Error" + }, + "502" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Gateway" + }, + "503" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Service Unavailable" + } + }, + "tags" : [ "A1 Policy Management" ] + } + }, + "/policies" : { + "get" : { + "description" : "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.", + "operationId" : "getAllPolicies", + "parameters" : [ { + "description" : "Select policies of a given policy type identity.", + "explode" : true, + "in" : "query", + "name" : "policyTypeId", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select policies of a given Near-RT RIC identity.", + "explode" : true, + "in" : "query", + "name" : "nearRtRicId", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select policies owned by a given service.", + "explode" : true, + "in" : "query", + "name" : "serviceId", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select policies of types with the given type name (type identity has the format <typename_version>)", + "explode" : true, + "in" : "query", + "name" : "typeName", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "items" : { + "$ref" : "#/components/schemas/PolicyInformation" + }, + "type" : "array" + } + } + }, + "description" : "OK - Policy identities" + }, + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + }, + "401" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unauthorized" + }, + "403" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Forbidden" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + }, + "406" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Acceptable" + }, + "429" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Too Many Request" + }, + "500" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Internal Server Error" + }, + "502" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Gateway" + }, + "503" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Service Unavailable" + } + }, + "summary" : "Query policy identities", + "tags" : [ "A1 Policy Management" ] + }, + "post" : { + "description" : "To create A1 policies", + "operationId" : "createPolicy", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PolicyObjectInformation" + } + } + }, + "required" : true + }, + "responses" : { + "201" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PolicyObjectInformation" + } + } + }, + "description" : "Success case 201 created", + "headers" : { + "Location" : { + "description" : "Contains the URI of the newly created resource", + "explode" : false, + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } + } + }, + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + }, + "401" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unauthorized" + }, + "403" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Forbidden" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + }, + "406" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Acceptable" + }, + "423" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 423, + "title" : "Locked", + "detail" : "State is Locked in the provided request." + }, + "schema" : { + "$ref" : "#/components/schemas/ErrorInformation" + } + } + }, + "description" : "Locked - HTTP Status code which can be used when the state is Locked" + }, + "429" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Too Many Request" + }, + "500" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Internal Server Error" + }, + "502" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Gateway" + }, + "503" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Service Unavailable" + } + }, + "tags" : [ "A1 Policy Management" ] + } + }, + "/configuration" : { + "get" : { + "description" : "Returns the contents of the application configuration", + "operationId" : "getConfiguration", + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + }, + "description" : "OK - Application configuration received" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + } + }, + "tags" : [ "Configuration" ] + }, + "put" : { + "description" : "Replace the current configuration file with the given configuration", + "operationId" : "putConfiguration", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + }, + "description" : "OK - Configuration updated" + }, + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + } + }, + "tags" : [ "Configuration" ] + } + }, + "/services/{serviceId}/keepalive" : { + "put" : { + "description" : "A registered service should invoke this operation regularly to indicate that it is still alive. If a registered service fails to invoke this operation before the end of a timeout period the service will be deregistered and all its A1 policies wil be removed. (This timeout can be set or disabled when each service is initially registered)", + "operationId" : "keepAliveService", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "serviceId", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + }, + "required" : false + }, + "responses" : { + "200" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK - Service supervision timer refreshed, OK" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + } + }, + "summary" : "Heartbeat indicates that the service is running", + "tags" : [ "Service Registry and Supervision" ] + } + }, + "/services" : { + "get" : { + "description" : "Either information about a registered service with given identity or all registered services are returned.", + "operationId" : "getServices", + "parameters" : [ { + "description" : "The identity of the service", + "explode" : true, + "in" : "query", + "name" : "serviceId", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "service_status_list" : { + "$ref" : "#/components/examples/ServiceStatusList" + } + }, + "schema" : { + "$ref" : "#/components/schemas/ServiceStatusList" + } + } + }, + "description" : "OK" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + } + }, + "summary" : "Returns service information", + "tags" : [ "Service Registry and Supervision" ] + }, + "put" : { + "callbacks" : { + "RICStatus" : { + "{$request.body#/callback_url}" : { + "post" : { + "description" : "The URL to this call is registered at Service registration.", + "operationId" : "serviceCallback", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ServiceCallbackInfo" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + }, + "description" : "OK" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + } + }, + "summary" : "Callback for Near-RT RIC status", + "tags" : [ "Service callbacks" ] + } + } + } + }, + "description" : "Registering a service is needed to:<ul><li>Get callbacks about available NearRT RICs.</li><li>Activate supervision of the service. If a service is inactive, its policies will automatically be deleted.</li></ul>Policies can be created even if the service is not registerred. This is a feature which it is optional to use.", + "operationId" : "putService", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ServiceRegistrationInfo" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK - Service updated" + }, + "201" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "Created - Service created" + }, + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + } + }, + "summary" : "Register a service", + "tags" : [ "Service Registry and Supervision" ] + } + }, + "/services/{serviceId}" : { + "delete" : { + "description" : "Unregister a service", + "operationId" : "deleteService", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "serviceId", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + }, { + "description" : "Specifies the content type that the client expects to receive in response to the request. Only application/json is allowed.", + "explode" : false, + "in" : "header", + "name" : "Accept", + "required" : false, + "schema" : { + "example" : "application/json", + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "204" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "No Content - Service unregistered" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + } + }, + "tags" : [ "Service Registry and Supervision" ] + } + } + }, + "components" : { + "examples" : { + "ServiceStatusList" : { + "description" : "List of service information", + "value" : { + "serviceList" : [ { + "callbackUrl" : "callbackUrl", + "serviceId" : "serviceId", + "keepAliveIntervalSeconds" : 0, + "timeSinceLastActivitySeconds" : 6 + }, { + "callbackUrl" : "callbackUrl", + "serviceId" : "serviceId", + "keepAliveIntervalSeconds" : 0, + "timeSinceLastActivitySeconds" : 6 + } ] + } + }, + "PolicyStatusInfo" : { + "description" : "Status for one A1-P Policy", + "value" : { + "lastModified" : "last_modified", + "status" : { + "value" : { + "status" : "status" + } + } + } + }, + "StatusInfo" : { + "value" : { + "status" : "status" + } + }, + "RicInfo" : { + "value" : { + "ricId" : "ricId", + "managedElementIds" : [ "managedElementId", "managedElementId" ], + "state" : "UNAVAILABLE", + "policyTypeIds" : [ "policyTypeId", "policyTypeId" ] + } + }, + "RicInfoList" : { + "value" : { + "rics" : [ { + "ricId" : "ricId", + "managedElementIds" : [ "managedElementId", "managedElementId" ], + "state" : "UNAVAILABLE", + "policyTypeIds" : [ "policyTypeId", "policyTypeId" ] + }, { + "ricId" : "ricId", + "managedElementIds" : [ "managedElementId", "managedElementId" ], + "state" : "UNAVAILABLE", + "policyTypeIds" : [ "policyTypeId", "policyTypeId" ] + } ] + } + }, + "PolicyObject" : { + "value" : { + "scope" : { + "ueId" : { + "guRanUeId" : { + "globalGnbId" : { + "plmnId" : { + "mcc" : "123", + "mnc" : "45" + }, + "gnbId" : { + "gnbIdLength" : 24, + "gnbIdValue" : 12345678 + } + }, + "RanUeId" : "a31c510b20e64a74" + } + }, + "groupId" : { + "spId" : 123 + }, + "qosId" : { + "5qI" : 1 + }, + "cellId" : { + "plmnId" : { + "mcc" : "123", + "mnc" : "45" + }, + "cId" : { + "ncI" : 123 + } + } + }, + "qosObjectives" : { + "gfbr" : 100, + "mfbr" : 200, + "priorityLevel" : 3, + "pdb" : 50 + } + } + } + }, + "responses" : { + "400" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Request" + }, + "401" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unauthorized" + }, + "403" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Forbidden" + }, + "404" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Found" + }, + "405" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Method Not Allowed" + }, + "406" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Not Acceptable" + }, + "409" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Conflict" + }, + "411" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Length Required" + }, + "413" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Payload Too Large" + }, + "415" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Unsupported Media Type" + }, + "429" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Too Many Request" + }, + "500" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Internal Server Error" + }, + "502" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Bad Gateway" + }, + "503" : { + "content" : { + "application/problem+json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemDetails" + } + } + }, + "description" : "Service Unavailable" + }, + "Locked" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 423, + "title" : "Locked", + "detail" : "State is Locked in the provided request." + }, + "schema" : { + "$ref" : "#/components/schemas/ErrorInformation" + } + } + }, + "description" : "Locked - HTTP Status code which can be used when the state is Locked" + } + }, + "schemas" : { + "PolicyTypeInformation" : { + "description" : "Available policy types and for each policy type identifier the Near-RT RIC identifiers of those Near-RT RICs that support the related A1 policy type", + "properties" : { + "policyTypeId" : { + "description" : "Identity of the policy type", + "type" : "string" + }, + "nearRtRicId" : { + "$ref" : "#/components/schemas/NearRtRicId" + } + }, + "required" : [ "nearRtRicId", "policyTypeId" ], + "type" : "object" + }, + "PolicyObjectInformation" : { + "description" : "Information related to the creation of the policy", + "properties" : { + "nearRtRicId" : { + "description" : "identity of the target Near-RT RIC", + "example" : "Near-RT-Ric-ID", + "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.", + "nullable" : false, + "type" : "boolean" + }, + "policyId" : { + "description" : "identity of the Policy", + "example" : "POLICY-ID", + "type" : "string" + }, + "serviceId" : { + "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered.", + "example" : "rApp ID", + "type" : "string" + }, + "policyObject" : { + "$ref" : "#/components/schemas/PolicyObject" + }, + "policyTypeId" : { + "description" : "identity of the policy type", + "example" : "ORAN_QOS_1.0.0(typeName_SemVersion)", + "type" : "string" + } + }, + "required" : [ "nearRtRicId", "policyObject", "policyTypeId" ], + "type" : "object" + }, + "ErrorInformation" : { + "description" : "Problem as defined in https://tools.ietf.org/html/rfc7807", + "properties" : { + "detail" : { + "description" : " A human-readable explanation specific to this occurrence of the problem.", + "example" : "Policy type not found", + "type" : "string" + }, + "title" : { + "description" : "A specific error name", + "example" : "Not Found", + "type" : "string" + }, + "status" : { + "description" : "The HTTP status code generated by the origin server for this occurrence of the problem. ", + "example" : 404, + "format" : "int32", + "type" : "integer" + } + }, + "type" : "object" + }, + "PolicyObject" : { + "description" : "Policy Object is a JSON representation of an A1 policy", + "type" : "object" + }, + "void" : { + "description" : "Void/empty", + "type" : "object" + }, + "StatusInfo" : { + "properties" : { + "status" : { + "description" : "status text", + "type" : "string" + } + }, + "type" : "object" + }, + "AuthorizationResult" : { + "description" : "Result of authorization", + "example" : { + "result" : true + }, + "properties" : { + "result" : { + "description" : "If true, the access is granted", + "type" : "boolean" + } + }, + "required" : [ "result" ], + "type" : "object" + }, + "RicInfo" : { + "description" : "Information for a Near-RT RIC", + "properties" : { + "ricId" : { + "description" : "identity of the Near-RT RIC", + "type" : "string" + }, + "managedElementIds" : { + "description" : "O1 identities for managed entities", + "items" : { + "description" : "O1 identities for managed entities", + "type" : "string" + }, + "type" : "array" + }, + "state" : { + "description" : "Represents the states for a Near-RT RIC", + "enum" : [ "UNAVAILABLE", "AVAILABLE", "SYNCHRONIZING", "CONSISTENCY_CHECK" ], + "type" : "string" + }, + "policyTypeIds" : { + "description" : "supported policy types", + "items" : { + "description" : "supported policy types", + "type" : "string" + }, + "type" : "array" + } + }, + "type" : "object" + }, + "ServiceRegistrationInfo" : { + "description" : "Information for one service", + "properties" : { + "callbackUrl" : { + "description" : "callback for notifying of Near-RT RIC state changes", + "type" : "string" + }, + "serviceId" : { + "description" : "identity of the service", + "type" : "string" + }, + "keepAliveIntervalSeconds" : { + "description" : "keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means timeout supervision is disabled.", + "format" : "int64", + "type" : "integer" + } + }, + "required" : [ "serviceId" ], + "type" : "object" + }, + "PolicyStatusInfo" : { + "description" : "Status for one A1-P Policy", + "properties" : { + "lastModified" : { + "description" : "timestamp, last modification time", + "type" : "string" + }, + "status" : { + "description" : "the Policy status", + "type" : "object" + } + }, + "type" : "object" + }, + "ServiceStatus" : { + "properties" : { + "callbackUrl" : { + "description" : "callback for notifying of RIC synchronization", + "type" : "string" + }, + "serviceId" : { + "description" : "identity of the service", + "type" : "string" + }, + "keepAliveIntervalSeconds" : { + "description" : "policy keep alive timeout", + "format" : "int64", + "type" : "integer" + }, + "timeSinceLastActivitySeconds" : { + "description" : "time since last invocation by the service", + "format" : "int64", + "type" : "integer" + } + }, + "type" : "object" + }, + "RicInfoList" : { + "description" : "List of Near-RT RIC information", + "properties" : { + "rics" : { + "description" : "List of Near-RT RIC information", + "items" : { + "$ref" : "#/components/schemas/RicInfo" + }, + "type" : "array" + } + }, + "type" : "object" + }, + "input" : { + "description" : "input", + "properties" : { + "accessType" : { + "description" : "Access type", + "enum" : [ "READ", "WRITE", "DELETE" ], + "type" : "string" + }, + "authToken" : { + "description" : "Authorization token", + "type" : "string" + }, + "policyTypeId" : { + "description" : "Policy type identifier", + "type" : "string" + } + }, + "required" : [ "accessType", "authToken", "policyTypeId" ], + "type" : "object" + }, + "PolicyAuthorization" : { + "description" : "Authorization request for A1 policy requests", + "properties" : { + "input" : { + "$ref" : "#/components/schemas/input" + } + }, + "required" : [ "input" ], + "type" : "object" + }, + "NearRtRicId" : { + "description" : "Identity of the policy", + "type" : "string" + }, + "PolicyInformation" : { + "description" : "Near-RT RIC identifiers where A1 policies exist and for each Near-RT RIC identifier the policy identifiers of those policies that exist in that Near-RT RIC", + "properties" : { + "policyId" : { + "description" : "Identity of the policy", + "type" : "string" + }, + "nearRtRicId" : { + "$ref" : "#/components/schemas/NearRtRicId" + } + }, + "required" : [ "nearRtRicId", "policyId" ], + "type" : "object" + }, + "ServiceStatusList" : { + "properties" : { + "serviceList" : { + "description" : "List of service information", + "items" : { + "$ref" : "#/components/schemas/ServiceStatus" + }, + "type" : "array" + } + }, + "type" : "object" + }, + "ServiceCallbackInfo" : { + "description" : "Information transferred as in Service callbacks (callback_url)", + "properties" : { + "ricId" : { + "description" : "identity of a Near-RT RIC", + "type" : "string" + }, + "eventType" : { + "description" : "values:\nAVAILABLE: the Near-RT RIC has become available for A1 Policy management", + "enum" : [ "AVAILABLE" ], + "type" : "string" + } + }, + "required" : [ "eventType", "ricId" ], + "type" : "object" + }, + "Link" : { + "properties" : { + "templated" : { + "type" : "boolean" + }, + "href" : { + "type" : "string" + } + }, + "type" : "object" + }, + "ProblemDetails" : { + "description" : "A problem detail to carry details in an HTTP response according to RFC 7807", + "properties" : { + "type" : { + "description" : "a URI reference according to IETF RFC 3986 that identifies the problem type", + "type" : "string" + }, + "title" : { + "description" : "human-readable summary of the problem type", + "type" : "string" + }, + "status" : { + "description" : "the HTTP status code", + "type" : "number" + }, + "detail" : { + "description" : "human-readable explanation ", + "type" : "string" + }, + "instance" : { + "description" : "URI reference that identifies the specific occurrence of the problem", + "type" : "string" + } + }, + "type" : "object" + } + } + } +}
\ No newline at end of file diff --git a/a1-policy-management/api/offeredapis/swagger/pms-api-v3.yaml b/a1-policy-management/api/offeredapis/swagger/pms-api-v3.yaml new file mode 100644 index 00000000..46f881e5 --- /dev/null +++ b/a1-policy-management/api/offeredapis/swagger/pms-api-v3.yaml @@ -0,0 +1,1210 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +openapi: 3.0.3 +info: + title: 'A1 policy management API' + version: 1.0.0 + x-api-id: a31c510b-20e6-4a08-af16-368c44d7fba8 + x-audience: external-public + description: "<h2>General</h2><p>The O-RAN Non-RT RIC Policy Management Service\ + \ provides a REST API for managemecnt of A1 policies. <br/>The main tasks of the\ + \ service are:</p><ul><li>A1 Policy creation, modification and deletion.</li><li>Monitoring\ + \ and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs</li><li>Maintaining\ + \ a view of supported Near-RT RIC policy types</li><li>Supervision of using services\ + \ (R-APPs). When a service is unavailable, its policies are removed.</li></ul><h2>APIs\ + \ provided or defined by the service</h2><h3>A1 Policy Management</h3><p>This\ + \ is an API for management of A1 Policies.</p><ul><li>A1 Policy retrieval, creation,\ + \ modification and deletion.</li><li>Retrieval of supported A1 Policy types for\ + \ a Near-RT RIC</li><li>Retrieval of status for existing A1 policies</li></ul><h3>Management\ + \ of configuration</h3><p>API for updating and retrieval of the component configuration.\ + \ Note that there other ways to maintain the configuration.</p><h3>Service callbacks</h3><p>These\ + \ are endpoints that are invoked by this service. The callbacks are registered\ + \ in this service at service registration.</p><h3>NearRT-RIC Repository</h3><p>This\ + \ is an API that provides support for looking up a NearRT-RIC. Each A1 policy\ + \ is targeted for one Near-RT RIC.</p><h3>Health Check</h3><p>API used for supervision\ + \ of the PMS component.</p><h3>Service Registry and Supervision</h3><p>API used\ + \ for registering services that uses PMS. Each A1 policy is optionally owned by\ + \ a service. PMS can supervise each registered service by a heart-beat supervision\ + \ and will automatically remove policies for unavailable services. Note that a\ + \ service does not need to be registered in order to create A1 Policies. This\ + \ is a feature that is optional to use.</p><h3>Authorization API</h3><p>API used\ + \ for access control of A1 Policy access. If configured, an external authorization\ + \ provider is requested to grant access to the A1 Policy type.</p>" + license: + name: Copyright (C) 2024 OpenInfra Foundation Europe. Licensed under the Apache License. + url: http://www.apache.org/licenses/LICENSE-2.0 + contact: + url: https://www.onap.org/ + email: discuss-list@onap.com +servers: + - url: '{apiRoot}/a1-policy-management/v1' + variables: + apiRoot: + default: 'https://example.com' + description: 'This is the Host:Port or Address where the A1-Policy Management Service can be accessed' +tags: + - name: A1 Policy Management + description: "API used to create polices, Policy Instances and get \ them as individual using an ID or get all policies/Instances." + - name: NearRT-RIC Repository + description: "API used to get the NearRT-RIC for the managed element." + - name: Service Registry and Supervision + description: "API used to keep the service Alive with in the timeout period" + - name: Health Check + description: "API used to get the health status and statistics of this service" + - name: Service callbacks + - name: Configuration + description: "API used to create or fetch the application configuration." +paths: + /status: + get: + operationId: getStatus + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/StatusInfo' + examples: + status_info: + $ref: '#/components/examples/StatusInfo' + description: OK- Service is living Ok + description: Returns status and statistics of this service + tags: + - Health Check + /rics/ric: + get: + description: Either a Near-RT RIC identity or a Managed Element identity can + be specified.<br>The intention with Managed Element identity is the ID used + in O1 for accessing the traffical element (such as the ID of CU). + operationId: getRic + parameters: + - description: "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned." + explode: true + in: query + name: managedElementId + required: false + schema: + type: string + style: form + - description: The identity of a Near-RT RIC to get information for. + explode: true + in: query + name: ricId + required: false + schema: + type: string + style: form + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/RicInfo' + examples: + ric_info: + $ref: '#/components/examples/RicInfo' + description: OK - Near-RT RIC is found OK + "404": + $ref: '#/components/responses/404' + summary: Returns info for one Near-RT RIC + tags: + - NearRT-RIC Repository + /rics: + get: + description: The call returns all Near-RT RICs that supports a given policy + type identity + operationId: getRics + parameters: + - description: "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned" + explode: true + in: query + name: policyTypeId + required: false + schema: + type: string + style: form + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/RicInfoList' + examples: + ric_info_list: + $ref: '#/components/examples/RicInfoList' + description: OK + "404": + $ref: '#/components/responses/404' + summary: Query Near-RT RIC information + tags: + - NearRT-RIC Repository + /policy-types: + get: + operationId: getPolicyTypes + parameters: + - description: Select types for the given Near-RT RIC identity. + explode: true + in: query + name: nearRtRicId + required: false + schema: + type: string + style: form + - description: Select types with the given type name (type identity has the + format <typename_version>) + explode: true + in: query + name: typeName + required: false + schema: + type: string + style: form + - description: Select types that are compatible with the given version. This + parameter is only applicable in conjunction with type_name. As an example + version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching + types will be returned sorted in ascending order. + explode: true + in: query + name: compatibleWithVersion + required: false + schema: + type: string + style: form + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + responses: + '200': + content: + application/json: + schema: + items: + $ref: '#/components/schemas/PolicyTypeInformation' + type: array + + description: OK - Policy Type IDs found Ok + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: '#/components/responses/502' + '503': + $ref: '#/components/responses/503' + description: Query policy type identities + tags: + - A1 Policy Management + /policy-types/{policyTypeId}: + get: + operationId: getPolicyTypeDefinition + parameters: + - explode: false + in: path + name: policyTypeId + required: true + schema: + type: string + style: simple + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyObject' + examples: + policyObject: + $ref: '#/components/examples/PolicyObject' + description: OK - schema of the given policy type + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: '#/components/responses/502' + '503': + $ref: '#/components/responses/503' + description: Returns a policy type definition + tags: + - A1 Policy Management + /policies/{policyId}: + put: + operationId: putPolicy + parameters: + - name: policyId + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyObject' + examples: + policyObject: + $ref: '#/components/examples/PolicyObject' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyObject' + description: OK - Policy updated + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '411': + $ref: '#/components/responses/411' + '413': + $ref: '#/components/responses/413' + '415': + $ref: '#/components/responses/415' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: '#/components/responses/502' + '503': + $ref: '#/components/responses/503' + description: update a policy + tags: + - A1 Policy Management + delete: + description: Deleting the policy using policyId. + operationId: deletePolicy + parameters: + - explode: false + in: path + name: policyId + required: true + schema: + type: string + style: simple + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + responses: + '204': + description: 'The created A1 policy was deleted' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: '#/components/responses/502' + '503': + $ref: '#/components/responses/503' + summary: Delete a policy + tags: + - A1 Policy Management + get: + operationId: getPolicy + parameters: + - explode: false + in: path + name: policyId + required: true + schema: + type: string + style: simple + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyObject' + examples: + policyObject: + $ref: '#/components/examples/PolicyObject' + description: OK - Policy found + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: '#/components/responses/502' + '503': + $ref: '#/components/responses/503' + description: Returns a policy + tags: + - A1 Policy Management + /policies: + get: + description: "Returns a list of A1 policies matching given search criteria.\ + \ <br>If several query parameters are defined, the policies matching all conditions\ + \ are returned." + operationId: getAllPolicies + parameters: + - description: Select policies of a given policy type identity. + explode: true + in: query + name: policyTypeId + required: false + schema: + type: string + style: form + - description: Select policies of a given Near-RT RIC identity. + explode: true + in: query + name: nearRtRicId + required: false + schema: + type: string + style: form + - description: Select policies owned by a given service. + explode: true + in: query + name: serviceId + required: false + schema: + type: string + style: form + - description: Select policies of types with the given type name (type identity + has the format <typename_version>) + explode: true + in: query + name: typeName + required: false + schema: + type: string + style: form + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + responses: + '200': + content: + application/json: + schema: + items: + $ref: '#/components/schemas/PolicyInformation' + type: array + description: OK - Policy identities + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: '#/components/responses/502' + '503': + $ref: '#/components/responses/503' + summary: Query policy identities + tags: + - A1 Policy Management + post: + operationId: createPolicy + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyObjectInformation' + responses: + '201': + description: 'Success case 201 created' + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyObjectInformation' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '423': + $ref: '#/components/responses/Locked' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: '#/components/responses/502' + '503': + $ref: '#/components/responses/503' + description: 'To create A1 policies' + tags: + - A1 Policy Management + /configuration: + get: + operationId: getConfiguration + responses: + "200": + content: + application/json: + schema: + type: string + description: OK - Application configuration received + "404": + $ref: '#/components/responses/404' + + description: Returns the contents of the application configuration + tags: + - Configuration + put: + operationId: putConfiguration + requestBody: + content: + application/json: + schema: + type: object + required: true + responses: + "200": + content: + '*/*': + schema: + $ref: '#/components/schemas/void' + description: OK - Configuration updated + "400": + $ref: '#/components/responses/400' + description: Replace the current configuration file with the given configuration + tags: + - Configuration + /services/{serviceId}/keepalive: + put: + description: A registered service should invoke this operation regularly to + indicate that it is still alive. If a registered service fails to invoke this + operation before the end of a timeout period the service will be deregistered + and all its A1 policies wil be removed. (This timeout can be set or disabled + when each service is initially registered) + operationId: keepAliveService + parameters: + - explode: false + in: path + name: serviceId + required: true + schema: + type: string + style: simple + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + requestBody: + required: false + content: + application/json: + schema: + type: string + responses: + "200": + content: + '*/*': + schema: + type: object + description: "OK - Service supervision timer refreshed, OK" + "404": + $ref: '#/components/responses/404' + summary: Heartbeat indicates that the service is running + tags: + - Service Registry and Supervision + /services: + get: + description: Either information about a registered service with given identity + or all registered services are returned. + operationId: getServices + parameters: + - description: The identity of the service + explode: true + in: query + name: serviceId + required: false + schema: + type: string + style: form + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceStatusList' + examples: + service_status_list: + $ref: '#/components/examples/ServiceStatusList' + description: OK + "404": + $ref: '#/components/responses/404' + summary: Returns service information + tags: + - Service Registry and Supervision + put: + description: "Registering a service is needed to:<ul><li>Get callbacks about\ + \ available NearRT RICs.</li><li>Activate supervision of the service. If a\ + \ service is inactive, its policies will automatically be deleted.</li></ul>Policies\ + \ can be created even if the service is not registerred. This is a feature\ + \ which it is optional to use." + operationId: putService + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceRegistrationInfo' + required: true + responses: + "200": + content: + '*/*': + schema: + type: object + description: OK - Service updated + "201": + content: + '*/*': + schema: + type: object + description: Created - Service created + "400": + $ref: '#/components/responses/400' + summary: Register a service + tags: + - Service Registry and Supervision + callbacks: + RICStatus: + "{$request.body#/callback_url}": + post: + description: The URL to this call is registered at Service registration. + operationId: serviceCallback + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceCallbackInfo' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/void' + description: OK + "404": + $ref: '#/components/responses/404' + summary: Callback for Near-RT RIC status + tags: + - Service callbacks + /services/{serviceId}: + delete: + operationId: deleteService + parameters: + - explode: false + in: path + name: serviceId + required: true + schema: + type: string + style: simple + - description: Specifies the content type that the client expects to receive in response to the request. + Only application/json is allowed. + in: header + name: Accept + schema: + type: string + example: application/json + responses: + "204": + content: + '*/*': + schema: + type: object + description: No Content - Service unregistered + "404": + $ref: '#/components/responses/404' + description: Unregister a service + tags: + - Service Registry and Supervision +components: + examples: + ServiceStatusList: + description: List of service information + value: + serviceList: + - callbackUrl: callbackUrl + serviceId: serviceId + keepAliveIntervalSeconds: 0 + timeSinceLastActivitySeconds: 6 + - callbackUrl: callbackUrl + serviceId: serviceId + keepAliveIntervalSeconds: 0 + timeSinceLastActivitySeconds: 6 + PolicyStatusInfo: + description: Status for one A1-P Policy + value: + lastModified: last_modified + status: + value: + status: status + StatusInfo: + value: + status: status + RicInfo: + value: + ricId: ricId + managedElementIds: + - managedElementId + - managedElementId + state: UNAVAILABLE + policyTypeIds: + - policyTypeId + - policyTypeId + RicInfoList: + value: + rics: + - ricId: ricId + managedElementIds: + - managedElementId + - managedElementId + state: UNAVAILABLE + policyTypeIds: + - policyTypeId + - policyTypeId + - ricId: ricId + managedElementIds: + - managedElementId + - managedElementId + state: UNAVAILABLE + policyTypeIds: + - policyTypeId + - policyTypeId + PolicyObject: + value: + scope: + ueId: + guRanUeId: + globalGnbId: + plmnId: + mcc: "123" + mnc: "45" + gnbId: + gnbIdLength: 24 + gnbIdValue: 12345678 + RanUeId: 'a31c510b20e64a74' + groupId: + spId: 123 + qosId: + 5qI: 1 + cellId: + plmnId: + mcc: "123" + mnc: "45" + cId: + ncI: 123 + qosObjectives: + gfbr: 100 + mfbr: 200 + priorityLevel: 3 + pdb: 50 + schemas: + PolicyTypeInformation: + description: >- + Available policy types and for each policy type identifier the Near-RT + RIC identifiers of those Near-RT RICs that support the related A1 policy + type + type: object + properties: + policyTypeId: + description: Identity of the policy type + type: string + nearRtRicId: + $ref: '#/components/schemas/NearRtRicId' + required: + - policyTypeId + - nearRtRicId + PolicyObjectInformation: + description: Information related to the creation of the policy + type: object + properties: + nearRtRicId: + description: identity of the target Near-RT RIC + type: string + example: + 'Near-RT-Ric-ID' + transient: + default: false + description: "if true, the policy is deleted at RIC restart. If false, its\ + \ value is maintained by this service until explicitly deleted. Default\ + \ false." + nullable: false + type: boolean + policyId: + description: identity of the Policy + type: string + example: + 'POLICY-ID' + serviceId: + description: the identity of the service owning the policy. This can be + used to group the policies (it is possible to get all policies associated + to a service). Note that the service does not need to be registered. + type: string + example: + 'rApp ID' + policyObject: + $ref: '#/components/schemas/PolicyObject' + policyTypeId: + description: identity of the policy type + type: string + example: 'ORAN_QOS_1.0.0(typeName_SemVersion)' + required: + - nearRtRicId + - policyObject + - policyTypeId + ErrorInformation: + description: Problem as defined in https://tools.ietf.org/html/rfc7807 + properties: + detail: + description: ' A human-readable explanation specific to this occurrence + of the problem.' + example: Policy type not found + type: string + title: + description: 'A specific error name' + type: string + example: Not Found + status: + description: 'The HTTP status code generated by the origin server for this + occurrence of the problem. ' + example: 404 + format: int32 + type: integer + type: object + PolicyObject: + description: 'Policy Object is a JSON representation of an A1 policy' + type: object + void: + description: Void/empty + type: object + StatusInfo: + properties: + status: + description: status text + type: string + type: object + AuthorizationResult: + description: Result of authorization + example: + result: true + properties: + result: + description: "If true, the access is granted" + type: boolean + required: + - result + type: object + RicInfo: + description: Information for a Near-RT RIC + properties: + ricId: + description: identity of the Near-RT RIC + type: string + managedElementIds: + description: O1 identities for managed entities + items: + description: O1 identities for managed entities + type: string + type: array + state: + description: Represents the states for a Near-RT RIC + enum: + - UNAVAILABLE + - AVAILABLE + - SYNCHRONIZING + - CONSISTENCY_CHECK + type: string + policyTypeIds: + description: supported policy types + items: + description: supported policy types + type: string + type: array + type: object + ServiceRegistrationInfo: + description: Information for one service + properties: + callbackUrl: + description: callback for notifying of Near-RT RIC state changes + type: string + serviceId: + description: identity of the service + type: string + keepAliveIntervalSeconds: + description: "keep alive interval for the service. This is used to enable\ + \ optional heartbeat supervision of the service. If set (> 0) the registered\ + \ service should regularly invoke a 'keepalive' REST call. When a service\ + \ fails to invoke this 'keepalive' call within the configured time, the\ + \ service is considered unavailable. An unavailable service will be automatically\ + \ deregistered and its policies will be deleted. Value 0 means timeout\ + \ supervision is disabled." + format: int64 + type: integer + required: + - serviceId + type: object + PolicyStatusInfo: + description: Status for one A1-P Policy + properties: + lastModified: + description: "timestamp, last modification time" + type: string + status: + description: the Policy status + type: object + type: object + ServiceStatus: + properties: + callbackUrl: + description: callback for notifying of RIC synchronization + type: string + serviceId: + description: identity of the service + type: string + keepAliveIntervalSeconds: + description: policy keep alive timeout + format: int64 + type: integer + timeSinceLastActivitySeconds: + description: time since last invocation by the service + format: int64 + type: integer + type: object + RicInfoList: + description: List of Near-RT RIC information + properties: + rics: + description: List of Near-RT RIC information + items: + $ref: '#/components/schemas/RicInfo' + type: array + type: object + input: + description: input + properties: + accessType: + description: Access type + enum: + - READ + - WRITE + - DELETE + type: string + authToken: + description: Authorization token + type: string + policyTypeId: + description: Policy type identifier + type: string + required: + - accessType + - authToken + - policyTypeId + type: object + PolicyAuthorization: + description: Authorization request for A1 policy requests + properties: + input: + $ref: '#/components/schemas/input' + required: + - input + type: object + NearRtRicId: + description: Identity of the policy + type: string + PolicyInformation: + description: >- + Near-RT RIC identifiers where A1 policies exist and for each Near-RT RIC + identifier the policy identifiers of those policies that exist in that + Near-RT RIC + type: object + properties: + policyId: + description: Identity of the policy + type: string + nearRtRicId: + $ref: '#/components/schemas/NearRtRicId' + required: + - policyId + - nearRtRicId + ServiceStatusList: + properties: + serviceList: + description: List of service information + items: + $ref: '#/components/schemas/ServiceStatus' + type: array + type: object + ServiceCallbackInfo: + description: Information transferred as in Service callbacks (callback_url) + properties: + ricId: + description: identity of a Near-RT RIC + type: string + eventType: + description: "values:\nAVAILABLE: the Near-RT RIC has become available\ + \ for A1 Policy management" + enum: + - AVAILABLE + type: string + required: + - eventType + - ricId + type: object + Link: + properties: + templated: + type: boolean + href: + type: string + type: object + ProblemDetails: + description: >- + A problem detail to carry details in an HTTP response according to RFC + 7807 + type: object + properties: + type: + description: >- + a URI reference according to IETF RFC 3986 that identifies the + problem type + type: string + title: + description: human-readable summary of the problem type + type: string + status: + description: the HTTP status code + type: number + detail: + description: 'human-readable explanation ' + type: string + instance: + description: URI reference that identifies the specific occurrence of the problem + type: string + responses: + '400': + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: Unauthorized + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '405': + description: Method Not Allowed + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: Not Acceptable + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: Conflict + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '411': + description: Length Required + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '413': + description: Payload Too Large + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '415': + description: Unsupported Media Type + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: Too Many Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '500': + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '502': + description: Bad Gateway + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + Locked: + description: "Locked - HTTP Status code which can be used when the state is Locked" + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ErrorInformation' + example: + status: 423 + title: Locked + detail: State is Locked in the provided request. diff --git a/a1-policy-management/api/offeredapis/swagger/pms-api.json b/a1-policy-management/api/offeredapis/swagger/pms-api.json new file mode 100644 index 00000000..deb57430 --- /dev/null +++ b/a1-policy-management/api/offeredapis/swagger/pms-api.json @@ -0,0 +1,1864 @@ +{ + "openapi" : "3.0.3", + "info" : { + "contact" : { + "email" : "discuss-list@onap.com", + "url" : "https://www.onap.org/" + }, + "description" : "<h2>General</h2><p>The O-RAN Non-RT RIC Policy Management Service provides a REST API for managemecnt of A1 policies. <br/>The main tasks of the service are:</p><ul><li>A1 Policy creation, modification and deletion.</li><li>Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs</li><li>Maintaining a view of supported Near-RT RIC policy types</li><li>Supervision of using services (R-APPs). When a service is unavailable, its policies are removed.</li></ul><h2>APIs provided or defined by the service</h2><h3>A1 Policy Management</h3><p>This is an API for management of A1 Policies.</p><ul><li>A1 Policy retrieval, creation, modification and deletion.</li><li>Retrieval of supported A1 Policy types for a Near-RT RIC</li><li>Retrieval of status for existing A1 policies</li></ul><h3>Management of configuration</h3><p>API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.</p><h3>Service callbacks</h3><p>These are endpoints that are invoked by this service. The callbacks are registered in this service at service registration.</p><h3>NearRT-RIC Repository</h3><p>This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.</p><h3>Health Check</h3><p>API used for supervision of the PMS component.</p><h3>Service Registry and Supervision</h3><p>API used for registering services that uses PMS. Each A1 policy is optionally owned by a service. PMS can supervise each registered service by a heart-beat supervision and will automatically remove policies for unavailable services. Note that a service does not need to be registered in order to create A1 Policies. This is a feature that is optional to use.</p><h3>Authorization API</h3><p>API used for access control of A1 Policy access. If configured, an external authorization provider is requested to grant access to the A1 Policy type.</p><h3>Spring Boot Actuator</h3><p>Provides generic functions used to monitor and manage the Spring web application.</p>", + "license" : { + "name" : "Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License.", + "url" : "http://www.apache.org/licenses/LICENSE-2.0" + }, + "title" : "A1 Policy Management Service", + "version" : "1.3.0", + "x-api-id" : "a31c510b-20e6-4a08-af16-368c44d7fba8", + "x-audience" : "external-public" + }, + "servers" : [ { + "url" : "/" + } ], + "tags" : [ { + "description" : "API used to create polices, Policy Instances and get them as individual using an ID or get all policies/Instances.", + "name" : "A1 Policy Management" + }, { + "description" : "API used to get the NearRT-RIC for the managed element.", + "name" : "NearRT-RIC Repository" + }, { + "description" : "API used to keep the service Alive with in the timeout period", + "name" : "Service Registry and Supervision" + }, { + "description" : "API used to get the health status and statistics of this service", + "name" : "Health Check" + }, { + "name" : "Service callbacks" + }, { + "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" : "API used to create or fetch the application configuration.", + "name" : "Configuration" + }, { + "description" : "Monitor and interact", + "externalDocs" : { + "description" : "Spring Boot Actuator Web API Documentation", + "url" : "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/" + }, + "name" : "Actuator" + } ], + "paths" : { + "/a1-policy/v2/policy-instances" : { + "get" : { + "description" : "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.", + "operationId" : "getPolicyInstances", + "parameters" : [ { + "description" : "Select policies with a given type identity.", + "explode" : true, + "in" : "query", + "name" : "policytype_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select policies for a given Near-RT RIC identity.", + "explode" : true, + "in" : "query", + "name" : "ric_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select policies owned by a given service.", + "explode" : true, + "in" : "query", + "name" : "service_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select policies of a given type name (type identity has the format <typename_version>)", + "explode" : true, + "in" : "query", + "name" : "type_name", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "policy_info_list" : { + "$ref" : "#/components/examples/policy_info_list" + } + }, + "schema" : { + "$ref" : "#/components/schemas/policy_info_list" + } + } + }, + "description" : "OK - Returns A1 Policies which matches the criteria" + }, + "404" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + }, + "description" : "Not Found - Near-RT RIC, policy type or service not found" + } + }, + "summary" : "Query for A1 policy instances", + "tags" : [ "A1 Policy Management" ] + } + }, + "/example-authz-check" : { + "post" : { + "description" : "The authorization function decides if access is granted.", + "operationId" : "performAccessControl", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_authorization" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/authorization_result" + } + } + }, + "description" : "OK" + }, + "403" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 403, + "title" : "Forbidden", + "detail" : "Your role does not allow to perform this action. Contact System Administrator to change your access rights." + }, + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + }, + "description" : "Forbidden" + } + }, + "summary" : "Request for access authorization.", + "tags" : [ "Authorization API" ] + } + }, + "/actuator/threaddump" : { + "get" : { + "operationId" : "threaddump", + "responses" : { + "200" : { + "content" : { + "text/plain;charset=UTF-8" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'threaddump'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/a1-policy/v2/status" : { + "get" : { + "description" : "Returns status and statistics of this service", + "operationId" : "getStatus", + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "status_info" : { + "$ref" : "#/components/examples/status_info" + } + }, + "schema" : { + "$ref" : "#/components/schemas/status_info" + } + } + }, + "description" : "OK- Service is living Ok" + } + }, + "tags" : [ "Health Check" ] + } + }, + "/actuator/loggers" : { + "get" : { + "operationId" : "loggers", + "responses" : { + "200" : { + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'loggers'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/actuator/health/**" : { + "get" : { + "operationId" : "health-path", + "responses" : { + "200" : { + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'health-path'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/a1-policy/v2/rics/ric" : { + "get" : { + "description" : "Either a Near-RT RIC identity or a Managed Element identity can be specified.<br>The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).", + "operationId" : "getRic", + "parameters" : [ { + "description" : "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.", + "explode" : true, + "in" : "query", + "name" : "managed_element_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "The identity of a Near-RT RIC to get information for.", + "explode" : true, + "in" : "query", + "name" : "ric_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "ric_info" : { + "$ref" : "#/components/examples/ric_info" + } + }, + "schema" : { + "$ref" : "#/components/schemas/ric_info" + } + } + }, + "description" : "OK - Near-RT RIC is found" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "summary" : "Returns info of Near-RT RIC queried by the ric-id and managed-element-id", + "tags" : [ "NearRT-RIC Repository" ] + } + }, + "/actuator/shutdown" : { + "post" : { + "operationId" : "shutdown", + "responses" : { + "200" : { + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'shutdown'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/a1-policy/v2/policy-types" : { + "get" : { + "description" : "Query policy type identities", + "operationId" : "getPolicyTypes", + "parameters" : [ { + "description" : "Select types for the given Near-RT RIC identity.", + "explode" : true, + "in" : "query", + "name" : "ric_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select types with the given type name (type identity has the format <typename_version>)", + "explode" : true, + "in" : "query", + "name" : "type_name", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select types that are compatible with the given version. This parameter is only applicable in conjunction with type_name. As an example version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching types will be returned sorted in ascending order.", + "explode" : true, + "in" : "query", + "name" : "compatible_with_version", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "policy_type_id_list" : { + "$ref" : "#/components/examples/policy_type_id_list" + } + }, + "schema" : { + "$ref" : "#/components/schemas/policy_type_id_list" + } + } + }, + "description" : "OK - Policy Type IDs Found" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "tags" : [ "A1 Policy Management" ] + } + }, + "/a1-policy/v2/policies/{policy_id}" : { + "delete" : { + "description" : "Deleting the policy using the Policy's Policy ID.", + "operationId" : "deletePolicy", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "policy_id", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + }, + "description" : "OK - Policy deleted" + }, + "423" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 423, + "title" : "Locked", + "detail" : "Requested resource is in a locked state." + }, + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + }, + "description" : "Locked - HTTP Status code which can be used when the state is Locked" + } + }, + "summary" : "Delete a policy", + "tags" : [ "A1 Policy Management" ] + }, + "get" : { + "description" : "Returns a policy", + "operationId" : "getPolicy", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "policy_id", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "policy_info" : { + "$ref" : "#/components/examples/policy_info" + } + }, + "schema" : { + "$ref" : "#/components/schemas/policy_info" + } + } + }, + "description" : "OK - Policy found" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "tags" : [ "A1 Policy Management" ] + } + }, + "/actuator/metrics/{requiredMetricName}" : { + "get" : { + "operationId" : "metrics-requiredMetricName", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "requiredMetricName", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'metrics-requiredMetricName'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/a1-policy/v2/configuration" : { + "get" : { + "description" : "Returns the contents of the application configuration file", + "operationId" : "getConfiguration", + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + }, + "description" : "OK - Configuration" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "tags" : [ "Configuration" ] + }, + "put" : { + "description" : "Replace the current configuration with the given configuration", + "operationId" : "putConfiguration", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "object" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + }, + "description" : "OK - Configuration updated" + }, + "400" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 400, + "title" : "Bad Request", + "detail" : "The provided request is not valid." + }, + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + }, + "description" : "Bad Request" + } + }, + "tags" : [ "Configuration" ] + } + }, + "/actuator" : { + "get" : { + "operationId" : "links", + "responses" : { + "200" : { + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "additionalProperties" : { + "additionalProperties" : { + "$ref" : "#/components/schemas/Link" + }, + "type" : "object" + }, + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "additionalProperties" : { + "additionalProperties" : { + "$ref" : "#/components/schemas/Link" + }, + "type" : "object" + }, + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "additionalProperties" : { + "additionalProperties" : { + "$ref" : "#/components/schemas/Link" + }, + "type" : "object" + }, + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator root web endpoint", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/actuator/loggers/{name}" : { + "get" : { + "operationId" : "loggers-name", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "name", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'loggers-name'", + "tags" : [ "Actuator" ], + "x-internal" : true + }, + "post" : { + "operationId" : "loggers-name_2", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "name", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "enum" : [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF" ], + "type" : "string" + } + } + } + }, + "responses" : { + "200" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'loggers-name'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/a1-policy/v2/services/{service_id}/keepalive" : { + "put" : { + "description" : "A registered service should invoke this operation regularly to indicate that it is still alive. If a registered service fails to invoke this operation before the end of a timeout period the service will be deregistered and all its A1 policies wil be removed. (This timeout can be set or disabled when each service is initially registered)", + "operationId" : "keepAliveService", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "service_id", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK - Service supervision timer refreshed, OK" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "summary" : "Heartbeat indicates that the service is running", + "tags" : [ "Service Registry and Supervision" ] + } + }, + "/actuator/metrics" : { + "get" : { + "operationId" : "metrics", + "responses" : { + "200" : { + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'metrics'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/a1-policy/v2/rics" : { + "get" : { + "description" : "The call returns all Near-RT RICs that supports a given policy type identity", + "operationId" : "getRics", + "parameters" : [ { + "description" : "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned", + "explode" : true, + "in" : "query", + "name" : "policytype_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "ric_info_list" : { + "$ref" : "#/components/examples/ric_info_list" + } + }, + "schema" : { + "$ref" : "#/components/schemas/ric_info_list" + } + } + }, + "description" : "OK" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "summary" : "Query Near-RT RIC information", + "tags" : [ "NearRT-RIC Repository" ] + } + }, + "/a1-policy/v2/services" : { + "get" : { + "description" : "Either information about a registered service with given identity or all registered services are returned.", + "operationId" : "getServices", + "parameters" : [ { + "description" : "The identity of the service", + "explode" : true, + "in" : "query", + "name" : "service_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "service_status_list" : { + "$ref" : "#/components/examples/service_status_list" + } + }, + "schema" : { + "$ref" : "#/components/schemas/service_status_list" + } + } + }, + "description" : "OK" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "summary" : "Returns service information", + "tags" : [ "Service Registry and Supervision" ] + }, + "put" : { + "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" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "summary" : "Callback for Near-RT RIC status", + "tags" : [ "Service callbacks" ] + } + } + } + }, + "description" : "Registering a service is needed to:<ul><li>Get callbacks about available NearRT RICs.</li><li>Activate supervision of the service. If a service is inactive, its policies will automatically be deleted.</li></ul>Policies can be created even if the service is not registerred. This is a feature which it is optional to use.", + "operationId" : "putService", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/service_registration_info" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK - Service updated" + }, + "201" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "Created - Service created" + }, + "400" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 400, + "title" : "Bad Request", + "detail" : "The provided request is not valid." + }, + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + }, + "description" : "Bad Request" + } + }, + "summary" : "Register a service", + "tags" : [ "Service Registry and Supervision" ] + } + }, + "/actuator/info" : { + "get" : { + "operationId" : "info", + "responses" : { + "200" : { + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'info'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/status" : { + "get" : { + "description" : "Returns status and statistics of this service", + "operationId" : "getStatusV1", + "responses" : { + "200" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "string" + } + } + }, + "description" : "OK - Service is living" + } + }, + "tags" : [ "Health Check" ] + } + }, + "/a1-policy/v2/policy-types/{policytype_id}" : { + "get" : { + "description" : "Returns a policy type definition", + "operationId" : "getPolicyTypeDefinition", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "policytype_id", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "policy_type_definition" : { + "$ref" : "#/components/examples/policy_type_definition" + } + }, + "schema" : { + "$ref" : "#/components/schemas/policy_type_definition" + } + } + }, + "description" : "OK - schema of the given policy type" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "tags" : [ "A1 Policy Management" ] + } + }, + "/actuator/logfile" : { + "get" : { + "operationId" : "logfile", + "responses" : { + "200" : { + "content" : { + "text/plain;charset=UTF-8" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'logfile'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/actuator/health" : { + "get" : { + "operationId" : "health", + "responses" : { + "200" : { + "content" : { + "application/vnd.spring-boot.actuator.v3+json" : { + "schema" : { + "type" : "object" + } + }, + "application/json" : { + "schema" : { + "type" : "object" + } + }, + "application/vnd.spring-boot.actuator.v2+json" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'health'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/a1-policy/v2/policies" : { + "get" : { + "description" : "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.", + "operationId" : "getPolicyIds", + "parameters" : [ { + "description" : "Select policies of a given policy type identity.", + "explode" : true, + "in" : "query", + "name" : "policytype_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select policies of a given Near-RT RIC identity.", + "explode" : true, + "in" : "query", + "name" : "ric_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select policies owned by a given service.", + "explode" : true, + "in" : "query", + "name" : "service_id", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + }, { + "description" : "Select policies of types with the given type name (type identity has the format <typename_version>)", + "explode" : true, + "in" : "query", + "name" : "type_name", + "required" : false, + "schema" : { + "type" : "string" + }, + "style" : "form" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "policy_id_list" : { + "$ref" : "#/components/examples/policy_id_list" + } + }, + "schema" : { + "$ref" : "#/components/schemas/policy_id_list" + } + } + }, + "description" : "OK - Policy identities" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "summary" : "Query policy identities", + "tags" : [ "A1 Policy Management" ] + }, + "put" : { + "description" : "Create or update a policy", + "operationId" : "putPolicy", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/policy_info" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + }, + "description" : "OK - Policy updated" + }, + "201" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/void" + } + } + }, + "description" : "Created - Policy created" + }, + "423" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 423, + "title" : "Locked", + "detail" : "Requested resource is in a locked state." + }, + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + }, + "description" : "Locked - HTTP Status code which can be used when the state is Locked" + } + }, + "tags" : [ "A1 Policy Management" ] + } + }, + "/a1-policy/v2/services/{service_id}" : { + "delete" : { + "description" : "Unregister a service", + "operationId" : "deleteService", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "service_id", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "204" : { + "content" : { + "*/*" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "No Content - Service unregistered" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "tags" : [ "Service Registry and Supervision" ] + } + }, + "/actuator/heapdump" : { + "get" : { + "operationId" : "heapdump", + "responses" : { + "200" : { + "content" : { + "application/octet-stream" : { + "schema" : { + "type" : "object" + } + } + }, + "description" : "OK" + } + }, + "summary" : "Actuator web endpoint 'heapdump'", + "tags" : [ "Actuator" ], + "x-internal" : true + } + }, + "/a1-policy/v2/policies/{policy_id}/status" : { + "get" : { + "description" : "Returns a policy status", + "operationId" : "getPolicyStatus", + "parameters" : [ { + "explode" : false, + "in" : "path", + "name" : "policy_id", + "required" : true, + "schema" : { + "type" : "string" + }, + "style" : "simple" + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "examples" : { + "policy_status_info" : { + "$ref" : "#/components/examples/policy_status_info" + } + }, + "schema" : { + "$ref" : "#/components/schemas/policy_status_info" + } + } + }, + "description" : "OK - Policy status" + }, + "404" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "tags" : [ "A1 Policy Management" ] + } + } + }, + "components" : { + "examples" : { + "service_status" : { + "description" : "List of service information", + "value" : { + "callback_url" : "callback_url", + "service_id" : "service_id", + "keep_alive_interval_seconds" : 0, + "time_since_last_activity_seconds" : 6 + } + }, + "service_status_list" : { + "description" : "List of service information", + "value" : { + "service_list" : [ { + "callback_url" : "callback_url", + "service_id" : "service_id", + "keep_alive_interval_seconds" : 0, + "time_since_last_activity_seconds" : 6 + }, { + "callback_url" : "callback_url", + "service_id" : "service_id", + "keep_alive_interval_seconds" : 0, + "time_since_last_activity_seconds" : 6 + } ] + } + }, + "policy_type_definition" : { + "description" : "Schema of the given Policy type", + "value" : { + "policy_schema" : "{}" + } + }, + "policy_type_id_list" : { + "description" : "Array of policy type id's", + "value" : { + "policy_type_id_list" : [ "policytype_id", "policytype_id" ] + } + }, + "policy_info" : { + "description" : "Policy information of one A1-P policy", + "value" : { + "ric_id" : "ric_id", + "policy_id" : "policy_id", + "transient" : false, + "service_id" : "service_id", + "policy_data" : "{}", + "status_notification_uri" : "status_notification_uri", + "policytype_id" : "policytype_id" + } + }, + "policy_info_list" : { + "description" : "List of policy information", + "value" : { + "policies" : [ { + "ric_id" : "ric_id", + "policy_id" : "policy_id", + "transient" : false, + "service_id" : "service_id", + "policy_data" : "{}", + "status_notification_uri" : "status_notification_uri", + "policytype_id" : "policytype_id" + }, { + "ric_id" : "ric_id", + "policy_id" : "policy_id", + "transient" : false, + "service_id" : "service_id", + "policy_data" : "{}", + "status_notification_uri" : "status_notification_uri", + "policytype_id" : "policytype_id" + } ] + } + }, + "policy_id_list" : { + "description" : "A list of policy identities", + "value" : { + "policy_ids" : [ "some_policy_id", "some_policy_id" ] + } + }, + "policy_status_info" : { + "description" : "Status for one A1-P Policy", + "value" : { + "last_modified" : "last_modified", + "status" : { + "value" : { + "status" : "status" + } + } + } + }, + "status_info" : { + "value" : { + "status" : "status" + } + }, + "ric_info" : { + "value" : { + "ric_id" : "ric_id", + "managed_element_ids" : [ "some_managed_element_id", "some_managed_element_id" ], + "state" : "UNAVAILABLE", + "policytype_ids" : [ "some_policytype_id", "some_policytype_id" ] + } + }, + "ric_info_list" : { + "value" : { + "rics" : [ { + "ric_id" : "ric_id", + "managed_element_ids" : [ "some_managed_element_id", "some_managed_element_id" ], + "state" : "UNAVAILABLE", + "policytype_ids" : [ "policytype_id", "policytype_id" ] + }, { + "ric_id" : "ric_id", + "managed_element_ids" : [ "managed_element_ids", "managed_element_ids" ], + "state" : "UNAVAILABLE", + "policytype_ids" : [ "policytype_ids", "policytype_ids" ] + } ] + } + } + }, + "responses" : { + "Locked" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 423, + "title" : "Locked", + "detail" : "Requested resource is in a locked state." + }, + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + }, + "description" : "Locked - HTTP Status code which can be used when the state is Locked" + }, + "BadRequest" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 400, + "title" : "Bad Request", + "detail" : "The provided request is not valid." + }, + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + }, + "description" : "Bad Request" + }, + "Forbidden" : { + "content" : { + "application/problem+json" : { + "example" : { + "status" : 403, + "title" : "Forbidden", + "detail" : "Your role does not allow to perform this action. Contact System Administrator to change your access rights." + }, + "schema" : { + "$ref" : "#/components/schemas/error_information" + } + } + }, + "description" : "Forbidden" + }, + "NotFound" : { + "content" : { + "application/problem+json" : { + "example" : [ ] + } + }, + "description" : "Not Found" + } + }, + "schemas" : { + "policy_type_definition" : { + "description" : "Contains policy type schema definition", + "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" + }, + "error_information" : { + "description" : "Problem as defined in https://tools.ietf.org/html/rfc7807", + "properties" : { + "detail" : { + "description" : " A human-readable explanation specific to this occurrence of the problem.", + "example" : "Policy type not found", + "type" : "string" + }, + "title" : { + "description" : "A specific error name", + "example" : "Not Found", + "type" : "string" + }, + "status" : { + "description" : "The HTTP status code generated by the origin server for this occurrence of the problem. ", + "example" : 404, + "format" : "int32", + "type" : "integer" + } + }, + "type" : "object" + }, + "void" : { + "description" : "Void/empty", + "type" : "object" + }, + "status_info" : { + "properties" : { + "status" : { + "description" : "status text", + "type" : "string" + } + }, + "type" : "object" + }, + "authorization_result" : { + "description" : "Result of authorization", + "example" : { + "result" : true + }, + "properties" : { + "result" : { + "description" : "If true, the access is granted", + "type" : "boolean" + } + }, + "required" : [ "result" ], + "type" : "object" + }, + "ric_info" : { + "description" : "Information for a Near-RT RIC", + "properties" : { + "ric_id" : { + "description" : "identity of the Near-RT RIC", + "type" : "string" + }, + "managed_element_ids" : { + "description" : "O1 identities for managed entities", + "items" : { + "description" : "O1 identities for managed entities", + "type" : "string" + }, + "type" : "array" + }, + "state" : { + "description" : "Represents the states for a Near-RT RIC", + "enum" : [ "UNAVAILABLE", "AVAILABLE", "SYNCHRONIZING", "CONSISTENCY_CHECK" ], + "type" : "string" + }, + "policytype_ids" : { + "description" : "supported policy types", + "items" : { + "description" : "supported policy types", + "type" : "string" + }, + "type" : "array" + } + }, + "type" : "object" + }, + "service_registration_info" : { + "description" : "Information for one service", + "properties" : { + "callback_url" : { + "description" : "callback for notifying of Near-RT RIC state changes", + "type" : "string" + }, + "service_id" : { + "description" : "identity of the service", + "type" : "string" + }, + "keep_alive_interval_seconds" : { + "description" : "keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means timeout supervision is disabled.", + "format" : "int64", + "type" : "integer" + } + }, + "required" : [ "service_id" ], + "type" : "object" + }, + "policy_info_list" : { + "description" : "List of policy information", + "properties" : { + "policies" : { + "description" : "List of policy information", + "items" : { + "$ref" : "#/components/schemas/policy_info" + }, + "type" : "array" + } + }, + "type" : "object" + }, + "policy_status_info" : { + "description" : "Status for one A1-P Policy", + "properties" : { + "last_modified" : { + "description" : "timestamp, last modification time", + "type" : "string" + }, + "status" : { + "description" : "the Policy status", + "type" : "object" + } + }, + "type" : "object" + }, + "service_status" : { + "properties" : { + "callback_url" : { + "description" : "callback for notifying of RIC synchronization", + "type" : "string" + }, + "service_id" : { + "description" : "identity of the service", + "type" : "string" + }, + "keep_alive_interval_seconds" : { + "description" : "policy keep alive timeout", + "format" : "int64", + "type" : "integer" + }, + "time_since_last_activity_seconds" : { + "description" : "time since last invocation by the service", + "format" : "int64", + "type" : "integer" + } + }, + "type" : "object" + }, + "ric_info_list" : { + "description" : "List of Near-RT RIC information", + "properties" : { + "rics" : { + "description" : "List of Near-RT RIC information", + "items" : { + "$ref" : "#/components/schemas/ric_info" + }, + "type" : "array" + } + }, + "type" : "object" + }, + "input" : { + "description" : "input", + "properties" : { + "access_type" : { + "description" : "Access type", + "enum" : [ "READ", "WRITE", "DELETE" ], + "type" : "string" + }, + "auth_token" : { + "description" : "Authorization token", + "type" : "string" + }, + "policy_type_id" : { + "description" : "Policy type identifier", + "type" : "string" + } + }, + "required" : [ "access_type", "auth_token", "policy_type_id" ], + "type" : "object" + }, + "policy_authorization" : { + "description" : "Authorization request for A1 policy requests", + "properties" : { + "input" : { + "$ref" : "#/components/schemas/input" + } + }, + "required" : [ "input" ], + "type" : "object" + }, + "policy_type_id_list" : { + "description" : "Information about policy types", + "properties" : { + "policytype_ids" : { + "description" : "Policy type identities", + "items" : { + "description" : "Policy type identities", + "type" : "string" + }, + "type" : "array" + } + }, + "type" : "object" + }, + "policy_info" : { + "description" : "Information for one A1-P Policy", + "properties" : { + "ric_id" : { + "description" : "identity of the target Near-RT RIC", + "type" : "string" + }, + "policy_id" : { + "description" : "identity of the policy", + "type" : "string" + }, + "transient" : { + "default" : false, + "description" : "if true, the policy is deleted at RIC restart. If false, its value is maintained by this service until explicitly deleted. Default false.", + "example" : false, + "nullable" : false, + "type" : "boolean" + }, + "service_id" : { + "default" : "", + "description" : "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered.", + "type" : "string" + }, + "policy_data" : { + "description" : "the configuration of the policy", + "type" : "object" + }, + "status_notification_uri" : { + "description" : "Callback URI for policy status updates", + "type" : "string" + }, + "policytype_id" : { + "description" : "identity of the policy type", + "type" : "string" + } + }, + "required" : [ "policy_data", "policy_id", "policytype_id", "ric_id" ], + "type" : "object" + }, + "policy_id_list" : { + "description" : "A list of policy identities", + "example" : { + "policy_ids" : [ "policy_ids", "policy_ids" ] + }, + "properties" : { + "policy_ids" : { + "description" : "Policy identities", + "items" : { + "description" : "Policy identities", + "type" : "string" + }, + "type" : "array" + } + }, + "type" : "object" + }, + "service_status_list" : { + "properties" : { + "service_list" : { + "description" : "List of service information", + "items" : { + "$ref" : "#/components/schemas/service_status" + }, + "type" : "array" + } + }, + "type" : "object" + }, + "service_callback_info_v2" : { + "description" : "Information transferred as in Service callbacks (callback_url)", + "properties" : { + "ric_id" : { + "description" : "identity of a Near-RT RIC", + "type" : "string" + }, + "event_type" : { + "description" : "values:\nAVAILABLE: the Near-RT RIC has become available for A1 Policy management", + "enum" : [ "AVAILABLE" ], + "type" : "string" + } + }, + "required" : [ "event_type", "ric_id" ], + "type" : "object" + }, + "Link" : { + "properties" : { + "templated" : { + "type" : "boolean" + }, + "href" : { + "type" : "string" + } + }, + "type" : "object" + } + } + } +}
\ No newline at end of file diff --git a/a1-policy-management/api/offeredapis/swagger/pms-api.yaml b/a1-policy-management/api/offeredapis/swagger/pms-api.yaml new file mode 100644 index 00000000..c0b50d4d --- /dev/null +++ b/a1-policy-management/api/offeredapis/swagger/pms-api.yaml @@ -0,0 +1,1368 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2020-2023 Nordix Foundation +# Copyright (C) 2023-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: + x-api-id: a31c510b-20e6-4a08-af16-368c44d7fba8 + x-audience: external-public + description: "<h2>General</h2><p>The O-RAN Non-RT RIC Policy Management Service\ + \ provides a REST API for managemecnt of A1 policies. <br/>The main tasks of the\ + \ service are:</p><ul><li>A1 Policy creation, modification and deletion.</li><li>Monitoring\ + \ and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs</li><li>Maintaining\ + \ a view of supported Near-RT RIC policy types</li><li>Supervision of using services\ + \ (R-APPs). When a service is unavailable, its policies are removed.</li></ul><h2>APIs\ + \ provided or defined by the service</h2><h3>A1 Policy Management</h3><p>This\ + \ is an API for management of A1 Policies.</p><ul><li>A1 Policy retrieval, creation,\ + \ modification and deletion.</li><li>Retrieval of supported A1 Policy types for\ + \ a Near-RT RIC</li><li>Retrieval of status for existing A1 policies</li></ul><h3>Management\ + \ of configuration</h3><p>API for updating and retrieval of the component configuration.\ + \ Note that there other ways to maintain the configuration.</p><h3>Service callbacks</h3><p>These\ + \ are endpoints that are invoked by this service. The callbacks are registered\ + \ in this service at service registration.</p><h3>NearRT-RIC Repository</h3><p>This\ + \ is an API that provides support for looking up a NearRT-RIC. Each A1 policy\ + \ is targeted for one Near-RT RIC.</p><h3>Health Check</h3><p>API used for supervision\ + \ of the PMS component.</p><h3>Service Registry and Supervision</h3><p>API used\ + \ for registering services that uses PMS. Each A1 policy is optionally owned by\ + \ a service. PMS can supervise each registered service by a heart-beat supervision\ + \ and will automatically remove policies for unavailable services. Note that a\ + \ service does not need to be registered in order to create A1 Policies. This\ + \ is a feature that is optional to use.</p><h3>Authorization API</h3><p>API used\ + \ for access control of A1 Policy access. If configured, an external authorization\ + \ provider is requested to grant access to the A1 Policy type.</p><h3>Spring Boot\ + \ Actuator</h3><p>Provides generic functions used to monitor and manage the Spring\ + \ web application.</p>" + license: + name: Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License. + url: http://www.apache.org/licenses/LICENSE-2.0 + title: A1 Policy Management Service + version: 1.3.0 + contact: + url: https://www.onap.org/ + email: discuss-list@onap.com +servers: + - url: / +tags: + - name: A1 Policy Management + description: "API used to create polices, Policy Instances and get them as individual + using an ID or get all policies/Instances." + - name: NearRT-RIC Repository + description: "API used to get the NearRT-RIC for the managed element." + - name: Service Registry and Supervision + description: "API used to keep the service Alive with in the timeout period" + - name: Health Check + description: "API used to get the health status and statistics of this service" + - name: Service callbacks + - name: Authorization API + description: "API used for authorization of information A1 policy access (this is + provided by an authorization producer such as OPA). <br> Note that this API is called + by PMS, it is not provided." + - name: Configuration + description: "API used to create or fetch the application configuration." + - name: Actuator + description: Monitor and interact + externalDocs: + description: Spring Boot Actuator Web API Documentation + url: https://docs.spring.io/spring-boot/docs/current/actuator-api/html/ +paths: + /a1-policy/v2/policy-instances: + get: + description: "Returns a list of A1 policies matching given search criteria.\ + \ <br>If several query parameters are defined, the policies matching all conditions\ + \ are returned." + operationId: getPolicyInstances + parameters: + - description: Select policies with a given type identity. + explode: true + in: query + name: policytype_id + required: false + schema: + type: string + style: form + - description: Select policies for a given Near-RT RIC identity. + explode: true + in: query + name: ric_id + required: false + schema: + type: string + style: form + - description: Select policies owned by a given service. + explode: true + in: query + name: service_id + required: false + schema: + type: string + style: form + - description: Select policies of a given type name (type identity has the format + <typename_version>) + explode: true + in: query + name: type_name + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + examples: + policy_info_list: + $ref: '#/components/examples/policy_info_list' + schema: + $ref: '#/components/schemas/policy_info_list' + description: OK - Returns A1 Policies which matches the criteria + "404": + content: + application/json: + schema: + $ref: '#/components/schemas/error_information' + description: "Not Found - Near-RT RIC, policy type or service not found" + summary: Query for A1 policy instances + tags: + - A1 Policy Management + /example-authz-check: + post: + description: The authorization function decides if access is granted. + operationId: performAccessControl + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/policy_authorization' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/authorization_result' + description: OK + "403": + $ref: '#/components/responses/Forbidden' + summary: Request for access authorization. + tags: + - Authorization API + /actuator/threaddump: + get: + x-internal: true + operationId: threaddump + responses: + "200": + content: + text/plain;charset=UTF-8: + schema: + type: object + application/vnd.spring-boot.actuator.v3+json: + schema: + type: object + application/json: + schema: + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + type: object + description: OK + summary: Actuator web endpoint 'threaddump' + tags: + - Actuator + /a1-policy/v2/status: + get: + operationId: getStatus + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/status_info' + examples: + status_info: + $ref: '#/components/examples/status_info' + description: OK- Service is living Ok + description: Returns status and statistics of this service + tags: + - Health Check + /actuator/loggers: + get: + x-internal: true + operationId: loggers + responses: + "200": + content: + application/vnd.spring-boot.actuator.v3+json: + schema: + type: object + application/json: + schema: + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + type: object + description: OK + summary: Actuator web endpoint 'loggers' + tags: + - Actuator + /actuator/health/**: + get: + x-internal: true + operationId: health-path + responses: + "200": + content: + application/vnd.spring-boot.actuator.v3+json: + schema: + type: object + application/json: + schema: + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + type: object + description: OK + summary: Actuator web endpoint 'health-path' + tags: + - Actuator + /a1-policy/v2/rics/ric: + get: + description: Either a Near-RT RIC identity or a Managed Element identity can + be specified.<br>The intention with Managed Element identity is the ID used + in O1 for accessing the traffical element (such as the ID of CU). + operationId: getRic + parameters: + - description: "The identity of a Managed Element. If given, the Near-RT RIC\ + \ managing the ME is returned." + explode: true + in: query + name: managed_element_id + required: false + schema: + type: string + style: form + - description: The identity of a Near-RT RIC to get information for. + explode: true + in: query + name: ric_id + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ric_info' + examples: + ric_info: + $ref: '#/components/examples/ric_info' + description: OK - Near-RT RIC is found + "404": + $ref: '#/components/responses/NotFound' + description: NotFound - Requested NearRT-RIC Not Found + summary: Returns info of Near-RT RIC queried by the ric-id and managed-element-id + tags: + - NearRT-RIC Repository + /actuator/shutdown: + post: + x-internal: true + operationId: shutdown + responses: + "200": + content: + application/vnd.spring-boot.actuator.v3+json: + schema: + type: object + application/json: + schema: + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + type: object + description: OK + summary: Actuator web endpoint 'shutdown' + tags: + - Actuator + /a1-policy/v2/policy-types: + get: + operationId: getPolicyTypes + parameters: + - description: Select types for the given Near-RT RIC identity. + explode: true + in: query + name: ric_id + required: false + schema: + type: string + style: form + - description: Select types with the given type name (type identity has the + format <typename_version>) + explode: true + in: query + name: type_name + required: false + schema: + type: string + style: form + - description: Select types that are compatible with the given version. This + parameter is only applicable in conjunction with type_name. As an example + version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching + types will be returned sorted in ascending order. + explode: true + in: query + name: compatible_with_version + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + examples: + policy_type_id_list: + $ref: '#/components/examples/policy_type_id_list' + schema: + $ref: '#/components/schemas/policy_type_id_list' + description: OK - Policy Type IDs Found + "404": + $ref: '#/components/responses/NotFound' + description: 'Not Found - Requested Policy Type IDs Not Found' + description: Query policy type identities + tags: + - A1 Policy Management + /a1-policy/v2/policies/{policy_id}: + delete: + description: Deleting the policy using the Policy's Policy ID. + operationId: deletePolicy + parameters: + - explode: false + in: path + name: policy_id + required: true + schema: + type: string + style: simple + responses: + "200": + content: + '*/*': + schema: + $ref: '#/components/schemas/void' + description: OK - Policy deleted + "423": + $ref: '#/components/responses/Locked' + description: 'The requested policy using policy_id is Locked' + summary: Delete a policy + tags: + - A1 Policy Management + get: + operationId: getPolicy + parameters: + - explode: false + in: path + name: policy_id + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/policy_info' + examples: + policy_info: + $ref: '#/components/examples/policy_info' + description: OK - Policy found + "404": + $ref: '#/components/responses/NotFound' + description: 'Not Found - Requested Policy using policy_id is not found' + description: Returns a policy + tags: + - A1 Policy Management + /actuator/metrics/{requiredMetricName}: + get: + x-internal: true + operationId: metrics-requiredMetricName + parameters: + - explode: false + in: path + name: requiredMetricName + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/vnd.spring-boot.actuator.v3+json: + schema: + type: object + application/json: + schema: + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + type: object + description: OK + summary: Actuator web endpoint 'metrics-requiredMetricName' + tags: + - Actuator + /a1-policy/v2/configuration: + get: + operationId: getConfiguration + responses: + "200": + content: + application/json: + schema: + type: string + description: OK - Configuration + "404": + $ref: '#/components/responses/NotFound' + description: Not Found - Configuration is not found or readable + description: Returns the contents of the application configuration file + tags: + - Configuration + put: + operationId: putConfiguration + requestBody: + content: + application/json: + schema: + type: object + required: true + responses: + "200": + content: + '*/*': + schema: + $ref: '#/components/schemas/void' + description: OK - Configuration updated + "400": + $ref: '#/components/responses/BadRequest' + description: Replace the current configuration with the given configuration + tags: + - Configuration + /actuator: + get: + x-internal: true + operationId: links + responses: + "200": + content: + application/vnd.spring-boot.actuator.v3+json: + schema: + additionalProperties: + additionalProperties: + $ref: '#/components/schemas/Link' + type: object + type: object + application/json: + schema: + additionalProperties: + additionalProperties: + $ref: '#/components/schemas/Link' + type: object + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + additionalProperties: + additionalProperties: + $ref: '#/components/schemas/Link' + type: object + type: object + description: OK + summary: Actuator root web endpoint + tags: + - Actuator + /actuator/loggers/{name}: + get: + x-internal: true + operationId: loggers-name + parameters: + - explode: false + in: path + name: name + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/vnd.spring-boot.actuator.v3+json: + schema: + type: object + application/json: + schema: + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + type: object + description: OK + summary: Actuator web endpoint 'loggers-name' + tags: + - Actuator + post: + x-internal: true + operationId: loggers-name_2 + parameters: + - explode: false + in: path + name: name + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + enum: + - TRACE + - DEBUG + - INFO + - WARN + - ERROR + - FATAL + - "OFF" + type: string + responses: + "200": + content: + '*/*': + schema: + type: object + description: OK + summary: Actuator web endpoint 'loggers-name' + tags: + - Actuator + /a1-policy/v2/services/{service_id}/keepalive: + put: + description: A registered service should invoke this operation regularly to + indicate that it is still alive. If a registered service fails to invoke this + operation before the end of a timeout period the service will be deregistered + and all its A1 policies wil be removed. (This timeout can be set or disabled + when each service is initially registered) + operationId: keepAliveService + parameters: + - explode: false + in: path + name: service_id + required: true + schema: + type: string + style: simple + responses: + "200": + content: + '*/*': + schema: + type: object + description: "OK - Service supervision timer refreshed, OK" + "404": + $ref: '#/components/responses/NotFound' + summary: Heartbeat indicates that the service is running + tags: + - Service Registry and Supervision + /actuator/metrics: + get: + x-internal: true + operationId: metrics + responses: + "200": + content: + application/vnd.spring-boot.actuator.v3+json: + schema: + type: object + application/json: + schema: + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + type: object + description: OK + summary: Actuator web endpoint 'metrics' + tags: + - Actuator + /a1-policy/v2/rics: + get: + description: The call returns all Near-RT RICs that supports a given policy + type identity + operationId: getRics + parameters: + - description: "The identity of a policy type. If given, all Near-RT RICs supporting\ + \ the policy type are returned" + explode: true + in: query + name: policytype_id + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ric_info_list' + examples: + ric_info_list: + $ref: '#/components/examples/ric_info_list' + description: OK + "404": + $ref: '#/components/responses/NotFound' + summary: Query Near-RT RIC information + tags: + - NearRT-RIC Repository + /a1-policy/v2/services: + get: + description: Either information about a registered service with given identity + or all registered services are returned. + operationId: getServices + parameters: + - description: The identity of the service + explode: true + in: query + name: service_id + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/service_status_list' + examples: + service_status_list: + $ref: '#/components/examples/service_status_list' + description: OK + "404": + $ref: '#/components/responses/NotFound' + summary: Returns service information + tags: + - Service Registry and Supervision + put: + description: "Registering a service is needed to:<ul><li>Get callbacks about\ + \ available NearRT RICs.</li><li>Activate supervision of the service. If a\ + \ service is inactive, its policies will automatically be deleted.</li></ul>Policies\ + \ can be created even if the service is not registerred. This is a feature\ + \ which it is optional to use." + operationId: putService + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/service_registration_info' + required: true + responses: + "200": + content: + '*/*': + schema: + type: object + description: OK - Service updated + "201": + content: + '*/*': + schema: + type: object + description: Created - Service created + "400": + $ref: '#/components/responses/BadRequest' + summary: Register a service + tags: + - Service Registry and Supervision + callbacks: + RICStatus: + "{$request.body#/callback_url}": + post: + description: The URL to this call is registered at Service registration. + operationId: serviceCallback + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/service_callback_info_v2' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/void' + description: OK + "404": + $ref: '#/components/responses/NotFound' + summary: Callback for Near-RT RIC status + tags: + - Service callbacks + /actuator/info: + get: + x-internal: true + operationId: info + responses: + "200": + content: + application/vnd.spring-boot.actuator.v3+json: + schema: + type: object + application/json: + schema: + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + type: object + description: OK + summary: Actuator web endpoint 'info' + tags: + - Actuator + /status: + get: + operationId: getStatusV1 + responses: + "200": + content: + '*/*': + schema: + type: string + description: OK - Service is living + description: Returns status and statistics of this service + tags: + - Health Check + /a1-policy/v2/policy-types/{policytype_id}: + get: + operationId: getPolicyTypeDefinition + parameters: + - explode: false + in: path + name: policytype_id + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/policy_type_definition' + examples: + policy_type_definition: + $ref: '#/components/examples/policy_type_definition' + description: OK - schema of the given policy type + "404": + $ref: '#/components/responses/NotFound' + description: Returns a policy type definition + tags: + - A1 Policy Management + /actuator/logfile: + get: + x-internal: true + operationId: logfile + responses: + "200": + content: + text/plain;charset=UTF-8: + schema: + type: object + description: OK + summary: Actuator web endpoint 'logfile' + tags: + - Actuator + /actuator/health: + get: + x-internal: true + operationId: health + responses: + "200": + content: + application/vnd.spring-boot.actuator.v3+json: + schema: + type: object + application/json: + schema: + type: object + application/vnd.spring-boot.actuator.v2+json: + schema: + type: object + description: OK + summary: Actuator web endpoint 'health' + tags: + - Actuator + /a1-policy/v2/policies: + get: + description: "Returns a list of A1 policies matching given search criteria.\ + \ <br>If several query parameters are defined, the policies matching all conditions\ + \ are returned." + operationId: getPolicyIds + parameters: + - description: Select policies of a given policy type identity. + explode: true + in: query + name: policytype_id + required: false + schema: + type: string + style: form + - description: Select policies of a given Near-RT RIC identity. + explode: true + in: query + name: ric_id + required: false + schema: + type: string + style: form + - description: Select policies owned by a given service. + explode: true + in: query + name: service_id + required: false + schema: + type: string + style: form + - description: Select policies of types with the given type name (type identity + has the format <typename_version>) + explode: true + in: query + name: type_name + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + examples: + policy_id_list: + $ref: '#/components/examples/policy_id_list' + schema: + $ref: '#/components/schemas/policy_id_list' + description: OK - Policy identities + "404": + $ref: '#/components/responses/NotFound' + summary: Query policy identities + tags: + - A1 Policy Management + put: + operationId: putPolicy + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/policy_info' + required: true + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/void' + description: OK - Policy updated + "201": + content: + application/json: + schema: + $ref: '#/components/schemas/void' + description: Created - Policy created + "423": + $ref: '#/components/responses/Locked' + description: Create or update a policy + tags: + - 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 + responses: + "204": + content: + '*/*': + schema: + type: object + description: No Content - Service unregistered + "404": + $ref: '#/components/responses/NotFound' + description: Unregister a service + tags: + - Service Registry and Supervision + /actuator/heapdump: + get: + x-internal: true + operationId: heapdump + responses: + "200": + content: + application/octet-stream: + schema: + type: object + description: OK + summary: Actuator web endpoint 'heapdump' + tags: + - Actuator + /a1-policy/v2/policies/{policy_id}/status: + get: + operationId: getPolicyStatus + parameters: + - explode: false + in: path + name: policy_id + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/policy_status_info' + examples: + policy_status_info: + $ref: '#/components/examples/policy_status_info' + description: OK - Policy status + "404": + $ref: '#/components/responses/NotFound' + description: Returns a policy status + tags: + - A1 Policy Management +components: + responses: + Locked: + description: "Locked - HTTP Status code which can be used when the state is Locked" + content: + application/problem+json: + schema: + $ref: '#/components/schemas/error_information' + example: + status: 423 + title: Locked + detail: Requested resource is in a locked state. + BadRequest: + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/error_information' + example: + status: 400 + title: Bad Request + detail: The provided request is not valid. + Forbidden: + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/error_information' + example: + status: 403 + title: Forbidden + detail: Your role does not allow to perform this action. Contact System Administrator to change your access rights. + NotFound: + description: Not Found + content: + application/problem+json: + example: + [ ] + + examples: + service_status: + description: List of service information + value: + callback_url: callback_url + service_id: service_id + keep_alive_interval_seconds: 0 + time_since_last_activity_seconds: 6 + + service_status_list: + description: List of service information + value: + service_list: + - callback_url: callback_url + service_id: service_id + keep_alive_interval_seconds: 0 + time_since_last_activity_seconds: 6 + - callback_url: callback_url + service_id: service_id + keep_alive_interval_seconds: 0 + time_since_last_activity_seconds: 6 + policy_type_definition: + description: Schema of the given Policy type + value: + policy_schema: "{}" + policy_type_id_list: + description: Array of policy type id's + value: + policy_type_id_list: + - policytype_id + - policytype_id + policy_info: + description: Policy information of one A1-P policy + value: + ric_id: ric_id + policy_id: policy_id + transient: false + service_id: service_id + policy_data: "{}" + status_notification_uri: status_notification_uri + policytype_id: policytype_id + policy_info_list: + description: List of policy information + value: + policies: + - ric_id: ric_id + policy_id: policy_id + transient: false + service_id: service_id + policy_data: "{}" + status_notification_uri: status_notification_uri + policytype_id: policytype_id + - ric_id: ric_id + policy_id: policy_id + transient: false + service_id: service_id + policy_data: "{}" + status_notification_uri: status_notification_uri + policytype_id: policytype_id + policy_id_list: + description: A list of policy identities + value: + policy_ids: + - some_policy_id + - some_policy_id + policy_status_info: + description: Status for one A1-P Policy + value: + last_modified: last_modified + status: + value: + status: status + status_info: + value: + status: status + ric_info: + value: + ric_id: ric_id + managed_element_ids: + - some_managed_element_id + - some_managed_element_id + state: UNAVAILABLE + policytype_ids: + - some_policytype_id + - some_policytype_id + ric_info_list: + value: + rics: + - ric_id: ric_id + managed_element_ids: + - some_managed_element_id + - some_managed_element_id + state: UNAVAILABLE + policytype_ids: + - policytype_id + - policytype_id + - ric_id: ric_id + managed_element_ids: + - managed_element_ids + - managed_element_ids + state: UNAVAILABLE + policytype_ids: + - policytype_ids + - policytype_ids + + schemas: + policy_type_definition: + description: Contains policy type schema definition + type: object + properties: + policy_schema: + description: Policy type json schema. The schema is a json object following + http://json-schema.org/draft-07/schema + type: object + error_information: + description: Problem as defined in https://tools.ietf.org/html/rfc7807 + properties: + detail: + description: ' A human-readable explanation specific to this occurrence + of the problem.' + example: Policy type not found + type: string + title: + description: 'A specific error name' + type: string + example: Not Found + status: + description: 'The HTTP status code generated by the origin server for this + occurrence of the problem. ' + example: 404 + format: int32 + type: integer + type: object + void: + description: Void/empty + type: object + status_info: + properties: + status: + description: status text + type: string + type: object + authorization_result: + description: Result of authorization + example: + result: true + properties: + result: + description: "If true, the access is granted" + type: boolean + required: + - result + type: object + ric_info: + description: Information for a Near-RT RIC + properties: + ric_id: + description: identity of the Near-RT RIC + type: string + managed_element_ids: + description: O1 identities for managed entities + items: + description: O1 identities for managed entities + type: string + type: array + state: + description: Represents the states for a Near-RT RIC + enum: + - UNAVAILABLE + - AVAILABLE + - SYNCHRONIZING + - CONSISTENCY_CHECK + type: string + policytype_ids: + description: supported policy types + items: + description: supported policy types + type: string + type: array + type: object + service_registration_info: + description: Information for one service + properties: + callback_url: + description: callback for notifying of Near-RT RIC state changes + type: string + service_id: + description: identity of the service + type: string + keep_alive_interval_seconds: + description: "keep alive interval for the service. This is used to enable\ + \ optional heartbeat supervision of the service. If set (> 0) the registered\ + \ service should regularly invoke a 'keepalive' REST call. When a service\ + \ fails to invoke this 'keepalive' call within the configured time, the\ + \ service is considered unavailable. An unavailable service will be automatically\ + \ deregistered and its policies will be deleted. Value 0 means timeout\ + \ supervision is disabled." + format: int64 + type: integer + required: + - service_id + type: object + policy_info_list: + description: List of policy information + properties: + policies: + description: List of policy information + items: + $ref: '#/components/schemas/policy_info' + type: array + type: object + policy_status_info: + description: Status for one A1-P Policy + properties: + last_modified: + description: "timestamp, last modification time" + type: string + status: + description: the Policy status + type: object + type: object + service_status: + properties: + callback_url: + description: callback for notifying of RIC synchronization + type: string + service_id: + description: identity of the service + type: string + keep_alive_interval_seconds: + description: policy keep alive timeout + format: int64 + type: integer + time_since_last_activity_seconds: + description: time since last invocation by the service + format: int64 + type: integer + type: object + ric_info_list: + description: List of Near-RT RIC information + properties: + rics: + description: List of Near-RT RIC information + items: + $ref: '#/components/schemas/ric_info' + type: array + type: object + input: + description: input + properties: + access_type: + description: Access type + enum: + - READ + - WRITE + - DELETE + type: string + auth_token: + description: Authorization token + type: string + policy_type_id: + description: Policy type identifier + type: string + required: + - access_type + - auth_token + - policy_type_id + type: object + policy_authorization: + description: Authorization request for A1 policy requests + properties: + input: + $ref: '#/components/schemas/input' + required: + - input + type: object + policy_type_id_list: + description: Information about policy types + properties: + policytype_ids: + description: Policy type identities + items: + description: Policy type identities + type: string + type: array + type: object + policy_info: + description: Information for one A1-P Policy + properties: + ric_id: + description: identity of the target Near-RT RIC + type: string + policy_id: + description: identity of the policy + type: string + transient: + default: false + description: "if true, the policy is deleted at RIC restart. If false, its\ + \ value is maintained by this service until explicitly deleted. Default\ + \ false." + example: false + nullable: false + type: boolean + service_id: + description: the identity of the service owning the policy. This can be + used to group the policies (it is possible to get all policies associated + to a service). Note that the service does not need to be registered. + type: string + default: "" + policy_data: + description: the configuration of the policy + type: object + status_notification_uri: + description: Callback URI for policy status updates + type: string + policytype_id: + description: identity of the policy type + type: string + required: + - ric_id + - policy_id + - policy_data + - policytype_id + type: object + policy_id_list: + description: A list of policy identities + example: + policy_ids: + - policy_ids + - policy_ids + properties: + policy_ids: + description: Policy identities + items: + description: Policy identities + type: string + type: array + type: object + service_status_list: + properties: + service_list: + description: List of service information + items: + $ref: '#/components/schemas/service_status' + type: array + type: object + service_callback_info_v2: + description: Information transferred as in Service callbacks (callback_url) + properties: + ric_id: + description: identity of a Near-RT RIC + type: string + event_type: + description: "values:\nAVAILABLE: the Near-RT RIC has become available\ + \ for A1 Policy management" + enum: + - AVAILABLE + type: string + required: + - event_type + - ric_id + type: object + Link: + properties: + templated: + type: boolean + href: + type: string + type: object
\ No newline at end of file |