Adding ONAP PMS as a submodule.
[nonrtric.git] / docs / sdnc-a1-controller-api.rst
index 7390abc..5e0e908 100644 (file)
@@ -2,23 +2,27 @@
 .. 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
-##################
+.. _sdnc-a1-controller-api:
+
+
+######################
+SDNC A1 Controller API
+######################
 
 The A1 of a Near |nbh| RT |nbsp| RIC can be used through the SDNC A1 Controller.
 
-Any version of the A1 API can be used. A call to the SDNC A1 Controller always contains the actual URL to the
-Near |nbh| RT |nbsp| RIC, so here any of the supported API versions can be used. The controller just calls the provided
-URL with the provided data.
+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
 ~~~~~~~~~~~~~~~
@@ -28,36 +32,49 @@ POST
 
 Gets a policy type.
 
+Definition
+""""""""""
+
 **URL path:**
-  /restconf/operations/A1-ADAPTER-API:getA1PolicyType
+
+/restconf/operations/A1-ADAPTER-API:getA1PolicyType
 
 **Parameters:**
-  None.
+
+None.
 
 **Body:** (*Required*)
-    A JSON. ::
 
-      {
-        "input": {
-          "near-rt-ric-url": "<url-to-near-rt-ric-to-get-type>"
-        }
-      }
+A JSON object. ::
+
+  {
+    "input": {
+      "near-rt-ric-url": "<url-to-near-rt-ric-to-get-type>"
+    }
+  }
 
 **Responses:**
-  200:
-    A JSON where the body tag contains the JSON object of the policy type. ::
-
-      {
-        "output": {
-          "http-status": "integer",
-          "body": "{
-            <policy-type>
-          }"
-        }
-      }
 
-**Examples:**
-  **Call**: ::
+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 |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 '{
@@ -66,63 +83,64 @@ Gets a policy type.
       }
     }'
 
-  Result:
-    200 ::
+**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\",
+  {
+    "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\": {
-              \"scope\": {
-                \"type\": \"object\",
-                \"properties\": {
-                  \"ueId\": {
-                    \"type\": \"string\"
-                  },
-                  \"sliceId\": {
-                    \"type\": \"string\"
-                  },
-                  \"qosId\": {
-                    \"type\": \"string\"
-                  },
-                  \"cellId\": {
-                    \"type\": \"string\"
-                  }
-                },
-                \"additionalProperties\": false,
-                \"required\": [
-                  \"ueId\",
-                  \"sliceId\"
-                ]
+              \"ueId\": {
+                \"type\": \"string\"
+              },
+              \"sliceId\": {
+                \"type\": \"string\"
+              },
+              \"qosId\": {
+                \"type\": \"string\"
               },
-              \"statement\": {
-                \"type\": \"object\",
-                \"properties\": {
-                  \"qoeScore\": {
-                    \"type\": \"number\"
-                  },
-                  \"initialBuffering\": {
-                    \"type\": \"number\"
-                  },
-                  \"reBuffFreq\": {
-                    \"type\": \"number\"
-                  },
-                  \"stallRatio\": {
-                    \"type\": \"number\"
-                  }
-                },
-                \"minProperties\": 1,
-                \"additionalProperties\": false
+              \"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
 ~~~~~~~~~~
@@ -132,39 +150,51 @@ POST
 
 Creates or updates a policy instance.
 
+Definition
+""""""""""
+
 **URL path:**
-  /restconf/operations/A1-ADAPTER-API:putA1Policy
+
+/restconf/operations/A1-ADAPTER-API:putA1Policy
 
 **Parameters:**
-  None.
+
+None.
 
 **Body:** (*Required*)
-    A JSON 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": "object"
-        }
-      }
+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 with the response. ::
 
-      {
-        "output": {
-          "http-status": "integer"
-        }
-      }
+200:
 
-**Examples:**
-  **Call**: ::
+A JSON object with the response. ::
 
-    curl -X POST "http://localhost:8282/restconf/operations/A1-ADAPTER-API:getA1PolicyType"
+  {
+    "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/3d2157af-6a8f-4a7c-810f-38c2f824bf12",
+        "near-rt-ric-url": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000",
         "body": "{
           "blocking_rate":20,
           "enforce":true,
@@ -174,14 +204,35 @@ Creates or updates a policy instance.
       }
     }'
 
-  Result:
-    200 ::
+Create a policy in a Near |nbh| RT |nbsp| RIC that is using the STD 1.1.3 version. ::
 
-      {
-        "output": {
-          "http-status": 200
-        }
+    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
 ~~~~~~~~~~
@@ -191,58 +242,120 @@ POST
 
 Gets a policy instance.
 
+Definition
+""""""""""
+
 **URL path:**
-  /restconf/operations/A1-ADAPTER-API:getA1Policy
+
+/restconf/operations/A1-ADAPTER-API:getA1Policy
 
 **Parameters:**
-  None.
+
+None.
 
 **Body:** (*Required*)
-    A JSON. ::
 
-      {
-        "input": {
-          "near-rt-ric-url": "<url-to-near-rt-ric-to-get-policy>"
-        }
-      }
+A JSON object. ::
+
+  {
+    "input": {
+      "near-rt-ric-url": "<url-to-near-rt-ric-to-get-policy>"
+    }
+  }
 
 **Responses:**
-  200:
-    A JSON where the body tag contains the JSON object of the policy. ::
-
-      {
-        "output": {
-          "http-status": "integer",
-          "body": "{
-            <policy>
-          }"
-        }
+
+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 |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.
 
-**Examples:**
-  **Call**: ::
+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/3d2157af-6a8f-4a7c-810f-38c2f824bf12"
+        "near-rt-ric-url": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000"
       }
     }'
 
-  Result:
-    200 ::
-
-      {
-        "output": {
-          "http-status": 200,
-          "body": "{
-            \"blocking_rate\": 20,
-            \"enforce\": true,
-            \"trigger_threshold\": 10,
-            \"window_length\": 10
-          }"
-        }
+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:getA1Policy
+    -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
 ~~~~~~~~~~~~~
@@ -252,49 +365,73 @@ POST
 
 Deletes a policy instance.
 
+Definition
+""""""""""
+
 **URL path:**
-  /restconf/operations/A1-ADAPTER-API:deleteA1Policy
+
+/restconf/operations/A1-ADAPTER-API:deleteA1Policy
 
 **Parameters:**
-  None.
+
+None.
 
 **Body:** (*Required*)
-    A JSON. ::
 
-      {
-        "input": {
-          "near-rt-ric-url": "<url-to-near-rt-ric-to-delete-policy>"
-        }
-      }
+A JSON object. ::
+
+  {
+    "input": {
+      "near-rt-ric-url": "<url-to-near-rt-ric-to-delete-policy>"
+    }
+  }
 
 **Responses:**
-  200:
-    A JSON with the response. ::
 
-      {
-        "output": {
-          "http-status": "integer"
-        }
-      }
+200:
+
+A JSON object with the response. ::
+
+  {
+    "output": {
+      "http-status": "integer"
+    }
+  }
 
-**Examples:**
-  **Call**: ::
+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/3d2157af-6a8f-4a7c-810f-38c2f824bf12"
+        "near-rt-ric-url": "http://nearRtRic-sim1:8085/a1-p/policytypes/11/policies/5000"
       }
     }'
 
-  Result:
-    200 ::
+Delete a policy from a Near |nbh| RT |nbsp| RIC that is using the STD 1.1.3 version. ::
 
-      {
-        "output": {
-          "http-status": 202
-        }
+    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
 ~~~~~~~~~~~~~~~~~
@@ -304,54 +441,91 @@ POST
 
 Get the status of a policy instance.
 
+Definition
+""""""""""
+
 **URL path:**
-  /restconf/operations/A1-ADAPTER-API:getA1PolicyStatus
+
+/restconf/operations/A1-ADAPTER-API:getA1PolicyStatus
 
 **Parameters:**
-  None.
+
+None.
 
 **Body:** (*Required*)
-    A JSON. ::
 
-      {
-        "input": {
-          "near-rt-ric-url": "<url-to-near-rt-ric-to-get-policy-status>"
-        }
-      }
+A JSON object. ::
+
+  {
+    "input": {
+      "near-rt-ric-url": "<url-to-near-rt-ric-to-get-policy-status>"
+    }
+  }
 
 **Responses:**
-  200:
-    A JSON 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**: ::
+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 |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/3d2157af-6a8f-4a7c-810f-38c2f824bf12/status"
+        "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\"
-          }"
-        }
+**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\"
+      }"
+    }
+  }