SDNC A1 Controller API

The A1 of a Near‑RT 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": "<url-to-near-rt-ric-to-get-type>"
  }
}

Responses:

200:

A JSON object where the body tag contains the JSON object of the policy type.

{
  "output": {
    "http-status": "integer",
    "body": "{
      <policy-type>
    }"
  }
}

Examples

Get a policy type from a Near‑RT 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": "<url-to-near-rt-ric-to-put-policy>",
    "body": "<policy-as-json-string>"
  }
}

Responses:

200:

A JSON object with the response.

{
  "output": {
    "http-status": "integer"
  }
}

Examples

Call:

Create a policy in a Near‑RT 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‑RT 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": "<url-to-near-rt-ric-to-get-policy>"
  }
}

Responses:

200:

A JSON object where the body tag contains the JSON object of the policy.

{
  "output": {
    "http-status": "integer",
    "body": "{
      <result>
    }"
  }
}

Examples

Call:

Get all policy IDs from a Near‑RT 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‑RT 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‑RT 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‑RT 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": "<url-to-near-rt-ric-to-delete-policy>"
  }
}

Responses:

200:

A JSON object with the response.

{
  "output": {
    "http-status": "integer"
  }
}

Examples

Call:

Delete a policy from a Near‑RT 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‑RT 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": "<url-to-near-rt-ric-to-get-policy-status>"
  }
}

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": "{
      <policy-status-object>
    }"
  }
}

Examples

Call:

Get the policy status for a specific policy from a Near‑RT 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‑RT 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\"
    }"
  }
}