diff options
Diffstat (limited to 'docs/offeredapis')
-rw-r--r-- | docs/offeredapis/offeredapis.rst | 83 | ||||
-rw-r--r-- | docs/offeredapis/swagger/a1-adapter-api.json | 378 | ||||
-rw-r--r-- | docs/offeredapis/swagger/pms-api.json | 1259 |
3 files changed, 1720 insertions, 0 deletions
diff --git a/docs/offeredapis/offeredapis.rst b/docs/offeredapis/offeredapis.rst new file mode 100644 index 00000000..14fb881a --- /dev/null +++ b/docs/offeredapis/offeredapis.rst @@ -0,0 +1,83 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 + International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2020 Nordix Foundation + +.. _offered_apis: + + +Offered APIs +============ + +Introduction +************ + +The north bound REST API of the Policy Management Service provides convenient methods to handle policies. + + +Global ORAN architecture +************************ + +Following illustration provides a global view about **ORAN** architecture, +integration with other ONAP components and API resource/operation provided. + +.. image:: ../media/oran_architecture.png + :width: 500pt + + +API Table +********* + +.. |swagger-icon| image:: ../media/swagger.png + :width: 40px + +.. csv-table:: + :header: "API name", "|swagger-icon|" + :widths: 10,5 + + "PMS API", ":download:`link <./swagger/pms-api.json>`" + "A1 ADAPTER API (Internal)", ":download:`link <./swagger/a1-adapter-api.json>`" + + +.. _pms_api: + +PMS API +....... +`PMS API <./pms-api.html>`_ + +.. _a1_adapter_api: + +A1 ADAPTER API +.............. +`A1 ADAPTER API (Internal) <./a1-adapter-api.html>`_ + + +API Version +*********** + +APIs are described with a state version with "v" following the API Name, +e.g.: ``v2/policy``. +The schema associated with a REST API must have its version number aligned +with that of the REST API. + +The version number has major, minor and revision numbers. E.g. v1.0.0 +The version number (without the revision number) is held in the URI. + +The major version number is incremented for an incompatible change. +The minor version number is incremented for a compatible change. +For minor modifications of the API, version numbering must not be updated, +provided the following backward compatibility rules are respected: + +- New elements in a data type must be optional (``minOccurs=0``) +- Changes in the cardinality of an attribute in a data type must be from + mandatory to optional or from lower to greater +- New attributes defined in an element must be optional (absence of + ``use="required"``). +- If new enumerated values are included, the former ones and its meaning must + be kept. +- If new operations are added, the existing operations must be kept +- New parameters added to existing operations must be optional and existing + parameters must be kept + +For major modifications of the API, not backward compatible and forcing client +implementations to be changed, the version number must be updated. diff --git a/docs/offeredapis/swagger/a1-adapter-api.json b/docs/offeredapis/swagger/a1-adapter-api.json new file mode 100644 index 00000000..12951279 --- /dev/null +++ b/docs/offeredapis/swagger/a1-adapter-api.json @@ -0,0 +1,378 @@ +{ + "apiVersion": "1.0.0", + "swagger": "2.0", + "basePath": "/", + "info": { + "x-audience": "external-partner", + "contact": { + "name": "Ericsson Software Technology", + "email": "nonrtric@est.tech" + }, + "description": "The O-RAN A1 Adapter provides an internal REST CONF API for management of A1 policices, useful for test and verification. <b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html should be used!", + "title": "A1 Adapter", + "version": "1.1.0" + }, + "paths": { + "/restconf/operations/A1-ADAPTER-API:putA1Policy": {"post": { + "summary": "Create or update a policy", + "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html PUT /policy method should be used!", + "nickname": "putA1Policy", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(putA1Policy)output"}, + "description": "Policy created/updated", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": {}, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(putA1Policy)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + }, + "/operations/A1-ADAPTER-API:getA1Policy": {"post": { + "summary": "Get policy configuration/s", + "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html GET /policy method should be used!", + "nickname": "getA1Policy", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(getA1Policy)output"}, + "description": "Policy found", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": { + "id": "Policy 1", + "json": { + "scope": { + "ueId": "UE1 ", + "cellId": "Cell 1" + }, + "qosObjectives": { + "gfbr": 319.5, + "mfbr": 782.75, + "priorityLevel": 268.5, + "pdb": 44.0 + }, + "qoeObjectives": { + "qoeScore": 329.0, + "initialBuffering": 27.75, + "reBuffFreq": 539.0, + "stallRatio": 343.0 + }, + "resources": [] + }, + "ownerServiceName": "Service 1", + "ric": "ric1", + "type": "STD_PolicyModelUnconstrained_0.2.0", + "lastModified": "Wed, 01 Apr 2020 07:45:45 GMT" + }, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(getA1Policy)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + }, + "/restconf/operations/A1-ADAPTER-API:getA1PolicyStatus": {"post": { + "summary": "Get a policy status", + "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html GET /policy-status method should be used!", + "nickname": "getA1PolicyStatus", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(getA1PolicyStatus)output"}, + "description": "Policy status", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": { + "enforceStatus": "UNDEFINED" + }, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(getA1PolicyStatus)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + }, + "/restconf/operations/A1-ADAPTER-API:getA1PolicyType": {"post": { + "summary": "Get a policy type schema definition", + "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html GET /policy-types method should be used!", + "nickname": "getA1PolicyType", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(getA1PolicyType)output"}, + "description": "Policy schema", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Example_QoETarget_1.0.0", + "description": "Example QoE Target policy type", + "type": "object", + "properties": { + "scope": { + "type": "object", + "properties": { + "ueId": { + "type": "string" + }, + "sliceId": { + "type": "string" + }, + "qosId": { + "type": "string" + }, + "cellId": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "ueId", + "sliceId" + ] + }, + "statement": { + "type": "object", + "properties": { + "qoeScore": { + "type": "number" + }, + "initialBuffering": { + "type": "number" + }, + "reBuffFreq": { + "type": "number" + }, + "stallRatio": { + "type": "number" + } + }, + "minProperties": 1, + "additionalProperties": false + } + } + }, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(getA1PolicyType)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + }, + "/restconf/operations/A1-ADAPTER-API:deleteA1Policy": {"post": { + "summary": "Delete a policy", + "description": "<b>Note!</b> For production, the https://docs.onap.org/projects/onap-ccsdk-oran/en/latest/offeredapis/pms-api.html DELETE /policy method should be used!", + "nickname": "deleteA1Policy", + "produces": "application/json", + "responses": { + "200": { + "schema": {"$ref": "#/models/(deleteA1Policy)output"}, + "description": "Policy deleted", + "examples": { + "application/json": { + "A1-ADAPTER-API:body": {}, + "A1-ADAPTER-API:http-status": 200 + } + } + } + }, + "parameters": [ + { + "schema": {"$ref": "#/models/(deleteA1Policy)input"}, + "in": "body", + "name": null, + "description": null, + "required": false + } + ] + } + } + }, + "models": { + "(putA1Policy)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000" + }, + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body", + "example": { + "blocking_rate":20, + "enforce":true, + "trigger_threshold":10, + "window_length":10 + } + } + }, + "id": "(putA1Policy)input" + }, + "(putA1Policy)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body" + }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(putA1Policy)output" + }, + "(getA1Policy)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://localhost:8081/policy?id=Policy 1" + } + }, + "id": "(getA1Policy)input" + }, + "(getA1Policy)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "object" }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(getA1Policy)output" + }, + "(getA1PolicyStatus)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://ricsim_g2_1:8085/A1-P/v1/policies/5000/status" + } + }, + "id": "(getA1PolicyStatus)input" + }, + "(getA1PolicyStatus)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body" + }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(getA1PolicyStatus)output" + }, + "(getA1PolicyType)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://nearRtRic-sim1:8085/a1-p/policytypes/11" + } + }, + "id": "(getA1PolicyType)input" + }, + "(getA1PolicyType)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body" + }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(getA1PolicyType)output" + }, + "(deleteA1Policy)input": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:near-rt-ric-url": { + "required": false, + "type": "Some near-rt-ric-url", + "example": "http://localhost:8282/restconf/operations/A1-ADAPTER-API:deleteA1Policy" + } + }, + "id": "(deleteA1Policy)input" + }, + "(deleteA1Policy)output": { + "$schema": "http://json-schema.org/draft-04/schema", + "type": "object", + "properties": { + "A1-ADAPTER-API:body": { + "required": false, + "type": "Some body" + }, + "A1-ADAPTER-API:http-status": { + "required": false, + "type": "-2147483648" + } + }, + "id": "(deleteA1Policy)output" + } + } +}
\ No newline at end of file diff --git a/docs/offeredapis/swagger/pms-api.json b/docs/offeredapis/swagger/pms-api.json new file mode 100644 index 00000000..1837e098 --- /dev/null +++ b/docs/offeredapis/swagger/pms-api.json @@ -0,0 +1,1259 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "A1 Policy management service", + "description": "The O-RAN Non-RT RIC PolicyAgent provides a REST API for management of policices. It provides support for: -Supervision of clients (R-APPs) to eliminate stray policies in case of failure -Consistency monitoring of the SMO view of policies and the actual situation in the RICs -Consistency monitoring of RIC capabilities (policy types) -Policy configuration. This includes: -One REST API towards all RICs in the network -Query functions that can find all policies in a RIC, all policies owned by a service (R-APP), all policies of a type etc. -Maps O1 resources (ManagedElement) as defined in O1 to the controlling RIC of A1 policices.", + "version": "1.0" + }, + "servers": [ + { + "url": "https://localhost:8433/" + }, + { + "url": "http://localhost:8081/" + } + ], + "tags": [ + { + "name": "A1 Policy Management", + "description": "Policy Controller" + }, + { + "name": "Health check", + "description": "Status Controller" + }, + { + "name": "RIC Repository", + "description": "Ric Repository Controller" + }, + { + "name": "Service registry and supervision", + "description": "Service Controller" + } + ], + "paths": { + "/policies": { + "get": { + "tags": [ + "A1 Policy Management" + ], + "summary": "Query policies", + "operationId": "getPoliciesUsingGET", + "parameters": [ + { + "name": "ric", + "in": "query", + "description": "The name of the Near-RT RIC to get policies for.", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "ric1" + }, + { + "name": "service", + "in": "query", + "description": "The name of the service to get policies for.", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "controlpanel" + }, + { + "name": "type", + "in": "query", + "description": "The name of the policy type to get policies for.", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "1" + } + ], + "responses": { + "200": { + "description": "Policies", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PolicyInfo" + } + }, + "examples": { + "OSC": { + "$ref": "#/components/examples/Policies-OSC" + }, + "STD": { + "$ref": "#/components/examples/Policies-STD" + } + } + } + } + }, + "404": { + "description": "RIC or type not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "RIC not found" + } + } + } + } + }, + "deprecated": false + } + }, + "/policy": { + "get": { + "tags": [ + "A1 Policy Management" + ], + "summary": "Returns a policy configuration", + "operationId": "getPolicyUsingGET", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "The identity of the policy instance.", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "e26d76e1-b43f-427e-a3c2-b7c4e05a6431" + } + ], + "responses": { + "200": { + "description": "Policy found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "object" + }, + "examples": { + "OSC": { + "$ref": "#/components/examples/Policy-OSC" + }, + "STD": { + "$ref": "#/components/examples/Policy-STD" + } + } + } + } + }, + "404": { + "description": "Policy is not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "Could not find policy: e26d76e1-b43f-427e-a3c2-b7c4e05a6431" + } + } + } + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "A1 Policy Management" + ], + "summary": "Put a policy", + "operationId": "putPolicyUsingPUT", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "The identity of the policy instance.", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "73428e58-1670-4972-8498-e7e8f1003631" + }, + { + "name": "ric", + "in": "query", + "description": "The name of the Near-RT RIC where the policy will be created.", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "ric1" + }, + { + "name": "service", + "in": "query", + "description": "The name of the service creating the policy.", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "Service1" + }, + { + "name": "transient", + "in": "query", + "description": "If the policy is transient or not (boolean defaulted to false). A policy is transient if it will be forgotten when the service needs to reconnect to the Near-RT RIC.", + "allowEmptyValue": false, + "schema": { + "type": "boolean", + "default": false + }, + "example": false + }, + { + "name": "type", + "in": "query", + "description": "The name of the policy type. The policy type is mandatory for OSC A1 version and should not be provided for STD A1 version.", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "STD_PolicyModelUnconstrained_0.2.0" + } + ], + "requestBody": { + "description": "jsonBody", + "content": { + "application/json": { + "schema": { + "type": "object", + "example": { + "scope": { + "qosId": "3", + "ueId": "1" + }, + "statement": { + "priorityLevel": 1 + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Policy updated" + }, + "201": { + "description": "Policy created" + }, + "404": { + "description": "RIC or policy type is not found" + }, + "423": { + "description": "RIC is not operational", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "Ric is not operational, RIC name:ric1, state:UNAVAILABLE" + } + } + } + } + } + }, + "delete": { + "tags": [ + "A1 Policy Management" + ], + "summary": "Delete a policy", + "operationId": "deletePolicyUsingDELETE", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "The identity of the policy instance.", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "73428e58-1670-4972-8498-e7e8f1003631" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "204": { + "description": "Policy deleted" + }, + "404": { + "description": "Policy is not found" + }, + "423": { + "description": "RIC is not operational", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "Ric is not operational, RIC name:ric1,state:UNAVAILABLE" + } + } + } + } + }, + "deprecated": false + } + }, + "/policy_ids": { + "get": { + "tags": [ + "A1 Policy Management" + ], + "summary": "Query policies, only IDs returned", + "operationId": "getPolicyIdsUsingGET", + "parameters": [ + { + "name": "ric", + "in": "query", + "description": "The name of the Near-RT RIC to get policies for.", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "ric1" + }, + { + "name": "service", + "in": "query", + "description": "The name of the service to get policies for.", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "Service1" + }, + { + "name": "type", + "in": "query", + "description": "The name of the policy type to get policies for.", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "1" + } + ], + "responses": { + "200": { + "description": "Policy ids", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "examples": { + "OSC": { + "value": [ + "73428e58-1670-4972-8498-e7e8f1003631", + "73428e58-1670-4972-8498-e7e8f100363e" + ] + }, + "STD": { + "value": [ + "73428e58-1670-4972-8498-e7e8f1003632", + "73428e58-1670-4972-8498-e7e8f1003634" + ] + } + } + } + } + }, + "404": { + "description": "RIC or type not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "RIC not found" + } + } + } + } + }, + "deprecated": false + } + }, + "/policy_schema": { + "get": { + "tags": [ + "A1 Policy Management" + ], + "summary": "Returns one policy type schema definition. Applicable only for OSC Version.", + "operationId": "getPolicySchemaUsingGET", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "The identity of the policy type to get the definition for.", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "11" + } + ], + "responses": { + "200": { + "description": "Policy schema", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "object" + }, + "examples": { + "OSC": { + "value": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "QoS policy type", + "title": "1", + "type": "object", + "properties": { + "scope": { + "additionalProperties": false, + "type": "object", + "properties": { + "qosId": { + "type": "string" + }, + "ueId": { + "type": "string" + } + }, + "required": [ + "ueId", + "qosId" + ] + }, + "statement": { + "additionalProperties": false, + "type": "object", + "properties": { + "priorityLevel": { + "type": "number" + } + }, + "required": [ + "priorityLevel" + ] + } + } + } + } + } + } + } + }, + "404": { + "description": "Type not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "org.oransc.policyagent.exceptions.ServiceException: Could not find type: 11" + } + } + } + } + }, + "deprecated": false + } + }, + "/policy_schemas": { + "get": { + "tags": [ + "A1 Policy Management" + ], + "summary": "Returns policy type schema definitions", + "operationId": "getPolicySchemasUsingGET", + "parameters": [ + { + "name": "ric", + "in": "query", + "description": "The name of the Near-RT RIC to get the definitions for.", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "ric1" + } + ], + "responses": { + "200": { + "description": "Policy schemas", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": {} + } + }, + "examples": { + "OSC": { + "value": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "QoS policy type", + "title": "1", + "type": "object", + "properties": { + "scope": { + "additionalProperties": false, + "type": "object", + "properties": { + "qosId": { + "type": "string" + }, + "ueId": { + "type": "string" + } + }, + "required": [ + "ueId", + "qosId" + ] + }, + "statement": { + "additionalProperties": false, + "type": "object", + "properties": { + "priorityLevel": { + "type": "number" + } + }, + "required": [ + "priorityLevel" + ] + } + } + } + ] + } + } + } + } + }, + "404": { + "description": "RIC is not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "org.oransc.policyagent.exceptions.ServiceException: Could not find ric: ric1" + } + } + } + } + }, + "deprecated": false + } + }, + "/policy_status": { + "get": { + "tags": [ + "A1 Policy Management" + ], + "summary": "Returns a policy status", + "operationId": "getPolicyStatusUsingGET", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "The identity of the policy.", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "73428e58-1670-4972-8498-e7e8f100363q" + } + ], + "responses": { + "200": { + "description": "Policy status", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "object" + }, + "examples": { + "OSC": { + "value": { + "instance_status": "NOT IN EFFECT", + "has_been_deleted": "false", + "created_at": "07/20/2020, 17:15:39" + } + }, + "STD": { + "value": { + "enforceStatus": "UNDEFINED" + } + } + } + } + } + }, + "404": { + "description": "Policy is not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "Could not find policy: 73428e58-1670-4972-8498-e7e8f100363q" + } + } + } + } + }, + "deprecated": false + } + }, + "/policy_types": { + "get": { + "tags": [ + "A1 Policy Management" + ], + "summary": "Query policy type names", + "operationId": "getPolicyTypesUsingGET", + "parameters": [ + { + "name": "ric", + "in": "query", + "description": "The name of the Near-RT RIC to get types for.", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "ric11" + } + ], + "responses": { + "200": { + "description": "Policy type names", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "examples": { + "OSC": { + "value": [ + "1" + ] + } + } + } + } + }, + "404": { + "description": "RIC is not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "org.oransc.policyagent.exceptions.ServiceException: Could not find ric: ric11" + } + } + } + } + }, + "deprecated": false + } + }, + "/ric": { + "get": { + "tags": [ + "RIC Repository" + ], + "summary": "Returns the name of a RIC managing one Mananged Element", + "operationId": "getRicUsingGET", + "parameters": [ + { + "name": "managedElementId", + "in": "query", + "description": "The identity of the Managed Element", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "Node 1" + } + ], + "responses": { + "200": { + "description": "RIC is found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "ric1" + } + } + } + }, + "404": { + "description": "RIC is not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "No RIC found" + } + } + } + } + }, + "deprecated": false + } + }, + "/rics": { + "get": { + "tags": [ + "RIC Repository" + ], + "summary": "Query Near-RT RIC information", + "operationId": "getRicsUsingGET", + "parameters": [ + { + "name": "policyType", + "in": "query", + "description": "The name of the policy type", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "STD_PolicyModelUnconstrained_0.2.0" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RicInfo" + } + } + } + } + }, + "404": { + "description": "Policy type is not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "Policy type not found" + } + } + } + } + }, + "deprecated": false + } + }, + "/service": { + "put": { + "tags": [ + "Service registry and supervision" + ], + "summary": "Register a service", + "operationId": "putServiceUsingPUT", + "requestBody": { + "description": "registrationInfo", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ServiceRegistrationInfo" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Service updated", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string" + }, + "example": "OK" + } + } + }, + "201": { + "description": "Service created", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "OK" + } + } + } + }, + "400": { + "description": "The ServiceRegistrationInfo is not accepted", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "Missing mandatory parameter 'serviceName'" + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-codegen-request-body-name": "registrationInfo" + } + }, + "/services": { + "get": { + "tags": [ + "Service registry and supervision" + ], + "summary": "Returns service information", + "operationId": "getServicesUsingGET", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the service", + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "service1" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "array", + "example": [ + { + "serviceName": "service1", + "keepAliveIntervalSeconds": 1000, + "timeSinceLastActivitySeconds": 7, + "callbackUrl": "http://localhost:8080" + } + ], + "items": { + "$ref": "#/components/schemas/ServiceStatus" + } + } + } + } + }, + "404": { + "description": "Service is not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "Service not found" + } + } + } + } + }, + "deprecated": false + }, + "delete": { + "tags": [ + "Service registry and supervision" + ], + "summary": "Delete a service", + "operationId": "deleteServiceUsingDELETE", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the service", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "service1" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "204": { + "description": "OK" + }, + "404": { + "description": "Service not found", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "Could not find service: service1" + } + } + } + } + }, + "deprecated": false + } + }, + "/services/keepalive": { + "put": { + "tags": [ + "Service registry and supervision" + ], + "summary": "Heartbeat from a serice", + "operationId": "keepAliveServiceUsingPUT", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of the service", + "required": true, + "allowEmptyValue": false, + "schema": { + "type": "string" + }, + "example": "service1" + } + ], + "responses": { + "200": { + "description": "Service supervision timer refreshed, OK", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "OK" + } + } + } + }, + "201": { + "description": "Created" + }, + "404": { + "description": "The service is not found, needs re-registration", + "content": { + "text/plain;charset=ISO-8859-1": { + "schema": { + "type": "string", + "example": "Could not find service: service1" + } + } + } + } + }, + "deprecated": false + } + }, + "/status": { + "get": { + "tags": [ + "Health check" + ], + "summary": "Returns status and statistics of this service", + "operationId": "getStatusUsingGET", + "responses": { + "200": { + "description": "Service is living", + "content": { + "*/*": { + "schema": { + "type": "string", + "example": "alive" + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false + } + } + }, + "components": { + "schemas": { + "PolicyInfo": { + "title": "PolicyInfo", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "identity of the policy" + }, + "json": { + "type": "object", + "properties": {}, + "description": "the configuration of the policy" + }, + "lastModified": { + "type": "string", + "description": "timestamp, last modification time" + }, + "ric": { + "type": "string", + "description": "identity of the target Near-RT RIC" + }, + "service": { + "type": "string", + "description": "the name of the service owning the policy" + }, + "type": { + "type": "string", + "description": "name of the policy type" + } + } + }, + "RicInfo": { + "title": "RicInfo", + "type": "object", + "properties": { + "managedElementIds": { + "type": "array", + "description": "O1 identities for managed entities", + "items": { + "type": "string" + } + }, + "policyTypes": { + "type": "array", + "description": "supported policy types", + "items": { + "type": "string" + } + }, + "ricName": { + "type": "string", + "description": "identity of the ric" + }, + "state": { + "type": "string", + "description": "state info" + } + }, + "example": [ + { + "ricName": "ric1", + "managedElementIds": [ + "ME-1", + "ME-2" + ], + "policyTypes": [ + "1" + ], + "state": "AVAILABLE" + }, + { + "ricName": "ric3", + "managedElementIds": [ + "ME-1", + "ME-2" + ], + "policyTypes": [ + "" + ], + "state": "AVAILABLE" + }, + { + "ricName": "ric2", + "managedElementIds": [ + "ME-1", + "ME-2" + ], + "policyTypes": [], + "state": "AVAILABLE" + }, + { + "ricName": "ric4", + "managedElementIds": [ + "ME-1", + "ME-2" + ], + "policyTypes": [ + "" + ], + "state": "AVAILABLE" + } + ] + }, + "ServiceRegistrationInfo": { + "title": "ServiceRegistrationInfo", + "required": [ + "serviceName" + ], + "type": "object", + "properties": { + "callbackUrl": { + "type": "string", + "description": "callback for notifying of RIC synchronization" + }, + "keepAliveIntervalSeconds": { + "type": "integer", + "description": "keep alive interval for the service. This is a heartbeat supervision of the service, which in regular intevals must invoke a 'keepAlive' REST call. When a service does not invoke this call within the given time, it is considered unavailble. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means no timeout supervision.", + "format": "int64" + }, + "serviceName": { + "type": "string", + "description": "identity of the service" + } + }, + "example": { + "callbackUrl": "http://localhost:9080", + "keepAliveIntervalSeconds": 1000, + "serviceName": "service1" + } + }, + "ServiceStatus": { + "title": "ServiceStatus", + "type": "object", + "properties": { + "callbackUrl": { + "type": "string", + "description": "callback for notifying of RIC synchronization" + }, + "keepAliveIntervalSeconds": { + "type": "integer", + "description": "policy keep alive timeout", + "format": "int64" + }, + "serviceName": { + "type": "string", + "description": "identity of the service" + }, + "timeSinceLastActivitySeconds": { + "type": "integer", + "description": "time since last invocation by the service", + "format": "int64" + } + } + } + }, + "examples": { + "Policies-STD": { + "value": [ + { + "id": "a986eb38-aac3-4897-bdf5-0333ea2bf730", + "type": "", + "ric": "ric3", + "json": { + "scope": { + "ueId": "ue1", + "groupId": "group1", + "sliceId": "slice1", + "qosId": "qos1", + "cellId": "cell1" + }, + "statement": { + "priorityLevel": 5 + } + }, + "service": "controlpanel", + "lastModified": "2020-07-22T12:21:48.157854Z" + } + ] + }, + "Policies-OSC": { + "value": [ + { + "id": "73428e58-1670-4972-8498-e7e8f1003631", + "type": "1", + "ric": "ric1", + "json": { + "scope": { + "qosId": "36", + "ueId": "1" + }, + "statement": { + "priorityLevel": 1 + } + }, + "service": "c", + "lastModified": "2020-07-20T17:16:18.244383Z" + }, + { + "id": "73428e58-1670-4972-8498-e7e8f100363e", + "type": "1", + "ric": "ric1", + "json": { + "scope": { + "qosId": "34", + "ueId": "1" + }, + "statement": { + "priorityLevel": 1 + } + }, + "service": "controlpanel", + "lastModified": "2020-07-20T17:15:39.320469Z" + } + ] + }, + "Policy-STD": { + "value": { + "scope": { + "ueId": "ue1", + "groupId": "group1", + "sliceId": "slice1", + "qosId": "qos1", + "cellId": "cell1" + }, + "statement": { + "priorityLevel": 5 + } + } + }, + "Policy-OSC": { + "value": { + "scope": { + "qosId": "36", + "ueId": "1" + }, + "statement": { + "priorityLevel": 1 + } + } + } + } + } +}
\ No newline at end of file |