.. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 .. Copyright (C) 2020 Nordix .. _sdnc-a1-controller-api: .. |nbsp| unicode:: 0xA0 :trim: .. |nbh| unicode:: 0x2011 :trim: ###################### SDNC A1 Controller API ###################### The A1 of a Near |nbh| RT |nbsp| RIC can be used through the SDNC A1 Controller. The OSC A1 Controller supports using multiple versions of A1 API southbound. By passing the full URL for each southbound A1 operation the problem of version-specific URL formats is avoided. Since different versions of A1 operations may use different data formats for data payloads for similar REST requests and responses the data formatting requirements are flexible, so version-specific encoding/decoding is handled by the service that requests the A1 operation. Get Policy Type ~~~~~~~~~~~~~~~ POST ++++ Gets a policy type. Definition """""""""" **URL path:** /restconf/operations/A1-ADAPTER-API:getA1PolicyType **Parameters:** None. **Body:** (*Required*) A JSON object. :: { "input": { "near-rt-ric-url": "" } } **Responses:** 200: A JSON object where the body tag contains the JSON object of the policy type. :: { "output": { "http-status": "integer", "body": "{ }" } } Examples """""""" Get a policy type from a Near |nbh| RT |nbsp| RIC that is using the OSC 2.1.0 version. The STD 1.1.3 version does not support types, so this function is not available for that version. **Call**: :: curl -X POST "http://localhost:8282/restconf/operations/A1-ADAPTER-API:getA1PolicyType" -H "Content-Type: application/json" -d '{ "input": { "near-rt-ric-url": "http://nearRtRic-sim1:8085/a1-p/policytypes/11" } }' **Result**: 200: :: { "output": { "http-status": 200, "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 } } }" } } Put Policy ~~~~~~~~~~ POST ++++ Creates or updates a policy instance. Definition """""""""" **URL path:** /restconf/operations/A1-ADAPTER-API:putA1Policy **Parameters:** None. **Body:** (*Required*) A JSON object where the body tag contains the JSON object of the policy. :: { "input": { "near-rt-ric-url": "", "body": "" } } **Responses:** 200: A JSON object with the response. :: { "output": { "http-status": "integer" } } Examples """""""" **Call**: Create a policy in a Near |nbh| RT |nbsp| RIC that is using the OSC 2.1.0 version. :: curl -X POST "http://localhost:8282/restconf/operations/A1-ADAPTER-API:putA1Policy" -H "Content-Type: application/json" -d '{ "input": { "near-rt-ric-url": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000", "body": "{ "blocking_rate":20, "enforce":true, "trigger_threshold":10, "window_length":10 }" } }' Create a policy in a Near |nbh| RT |nbsp| RIC that is using the STD 1.1.3 version. :: curl -X POST http://localhost:8282/restconf/operations/A1-ADAPTER-API:putA1Policy -H Content-Type:application/json -d '{ "input": { "near-rt-ric-url": "http://ricsim_g2_1:8085/A1-P/v1/policies/5000", "body": "{ "scope": { "ueId": "ue5000", "qosId": "qos5000" }, "qosObjective": { "priorityLevel": 5000 } }" } }' **Result**: The result is the same irrespective of which API that is used. 200: :: { "output": { "http-status": 200 } } Get Policy ~~~~~~~~~~ POST ++++ Gets a policy instance. Definition """""""""" **URL path:** /restconf/operations/A1-ADAPTER-API:getA1Policy **Parameters:** None. **Body:** (*Required*) A JSON object. :: { "input": { "near-rt-ric-url": "" } } **Responses:** 200: A JSON object where the body tag contains the JSON object of the policy. :: { "output": { "http-status": "integer", "body": "{ }" } } Examples """""""" **Call**: Get **all** policy IDs from a Near |nbh| RT |nbsp| RIC that is using the OSC 2.1.0 version. :: curl -X POST http://localhost:8282/restconf/operations/A1-ADAPTER-API:getA1Policy -H Content-Type:application/json -d '{ "input": { "near-rt-ric-url":"http://ricsim_g1_1:8085/a1-p/policytypes/11/policies" } }' Get **all** policy IDs from a Near |nbh| RT |nbsp| RIC that is using the STD 1.1.3 version. :: curl -X POST http://localhost:8282/restconf/operations/A1-ADAPTER-API:getA1Policy -H Content-Type:application/json -d '{ "input": { "near-rt-ric-url":"http://ricsim_g2_1:8085/A1-P/v1/policies" } }' **Result**: The result is the same irrespective of which API that is used. 200: :: { "output": { "http-status":200, "body":"[ \"5000\", . . . \"6000\" ]" } } **Call**: Get **a specific** policy from a Near |nbh| RT |nbsp| RIC that is using the OSC 2.1.0 version. :: curl -X POST "http://localhost:8282/restconf/operations/A1-ADAPTER-API:getA1Policy" -H "Content-Type: application/json" -d '{ "input": { "near-rt-ric-url": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000" } }' Get **a specific** policy from a Near |nbh| RT |nbsp| RIC that is using the STD 1.1.3 version. :: curl -X POST http://localhost:8282/restconf/operations/A1-ADAPTER-API:getA1PolicyType -H Content-Type:application/json -d '{ "input": { "near-rt-ric-url":"http://ricsim_g2_1:8085/A1-P/v1/policies/5000" } }' **Result**: The result is the same irrespective of which API that is used. 200: :: { "output": { "http-status": 200, "body": "{ \"blocking_rate\": 20, \"enforce\": true, \"trigger_threshold\": 10, \"window_length\": 10 }" } } Delete Policy ~~~~~~~~~~~~~ POST ++++ Deletes a policy instance. Definition """""""""" **URL path:** /restconf/operations/A1-ADAPTER-API:deleteA1Policy **Parameters:** None. **Body:** (*Required*) A JSON object. :: { "input": { "near-rt-ric-url": "" } } **Responses:** 200: A JSON object with the response. :: { "output": { "http-status": "integer" } } Examples """""""" **Call**: Delete a policy from a Near |nbh| RT |nbsp| RIC that is using the OSC 2.1.0 version. :: curl -X POST "http://localhost:8282/restconf/operations/A1-ADAPTER-API:deleteA1Policy" -H "Content-Type: application/json" -d '{ "input": { "near-rt-ric-url": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000" } }' Delete a policy from a Near |nbh| RT |nbsp| RIC that is using the STD 1.1.3 version. :: curl -X POST "http://localhost:8282/restconf/operations/A1-ADAPTER-API:deleteA1Policy" -H "Content-Type: application/json" -d '{ "input": { "near-rt-ric-url": "http://ricsim_g2_1:8085/A1-P/v1/policies/5000" } }' **Result**: The result is the same irrespective of which API that is used. 200: :: { "output": { "http-status": 202 } } Get Policy Status ~~~~~~~~~~~~~~~~~ POST ++++ Get the status of a policy instance. Definition """""""""" **URL path:** /restconf/operations/A1-ADAPTER-API:getA1PolicyStatus **Parameters:** None. **Body:** (*Required*) A JSON object. :: { "input": { "near-rt-ric-url": "" } } **Responses:** 200: A JSON object where the body tag contains the JSON object with the policy status according to the API version used. :: { "output": { "http-status": "integer", "body": "{ }" } } Examples """""""" **Call**: Get the policy status for a specific policy from a Near |nbh| RT |nbsp| RIC that is using the OSC 2.1.0 version. :: curl -X POST "http://localhost:8282/restconf/operations/A1-ADAPTER-API:getA1PolicyStatus" -H "Content-Type: application/json" -d '{ "input": { "near-rt-ric-url": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000/status" } }' **Result**: 200: :: { "output": { "http-status": 200, "body": "{ \"instance_status\": \"IN EFFECT\", \"has_been_deleted\": \"true\", \"created_at\": \"Wed, 01 Apr 2020 07:45:45 GMT\" }" } } **Call**: Get the policy status for a specific policy from a Near |nbh| RT |nbsp| RIC that is using the STD 1.1.3 version. :: curl -X POST "http://localhost:8282/restconf/operations/A1-ADAPTER-API:getA1PolicyStatus" -H "Content-Type: application/json" -d '{ "input": { "near-rt-ric-url": "http://ricsim_g2_1:8085/A1-P/v1/policies/5000/status" } }' **Result**: 200: :: { "output": { "http-status": 200, "body": "{ \"enforceStatus\": \"UNDEFINED\" }" } }