Documentation of curl commands of APIs 17/10117/11
authornaman.gupta <naman.gupta@samsung.com>
Tue, 13 Dec 2022 14:48:20 +0000 (20:18 +0530)
committernaman.gupta <naman.gupta@samsung.com>
Wed, 14 Dec 2022 16:14:26 +0000 (21:44 +0530)
Documentation of curl commands of APIs

Signed-off-by: naman.gupta <naman.gupta@samsung.com>
Change-Id: I42b5c87c41a2efc25ac1cd63bc53e969882de99e

docs/user-guide-api.rst

index 7d5aedb..743f898 100644 (file)
@@ -40,7 +40,9 @@ a single integer value:
 For example, if you put the JSON above into a file called "create.json" you can use
 the curl command-line tool to send the request::
 
-    curl -X PUT --header "Content-Type: application/json" --data-raw @create.json http://localhost/a1-p/policytypes/20008
+.. code::
+    
+    $ curl -X PUT --header "Content-Type: application/json" --data-raw @create.json "http://localhost/a1-p/policytypes/20008"
 
 
 Send the following JSON to create an instance of policy type 20008:
@@ -54,7 +56,9 @@ Send the following JSON to create an instance of policy type 20008:
 
 For example, you can use the curl command-line tool to send this request::
 
-    curl -X PUT --header "Content-Type: application/json" --data '{"threshold" : 5}' http://localhost/a1-p/policytypes/20008/policies/tsapolicy145
+.. code::
+
+    $ curl -X PUT --header "Content-Type: application/json" --data '{"threshold" : 5}' "http://localhost/a1-p/policytypes/20008/policies/tsapolicy145"
 
 
 Integrating Xapps with A1
@@ -92,8 +96,286 @@ Northbound API Specification
 
 This section shows the Open API specification for the A1 Mediator's
 northbound interface, which accepts policy type and policy instance requests.
-Alternately, if you have checked out the code and are running the server,
-you can see a formatted version at this URL: ``http://localhost:10000/ui/``.
+Following are the api and the response::
+
+#. Healthcheck
+
+.. code::
+
+    $ curl -v -X GET "http://localhost/a1-p/healthcheck"
+
+.. code-block:: yaml  
+
+    < HTTP/1.1 200 OK
+
+#. Get all policy types
+
+.. code::
+
+    $ curl -X GET "http://localhost/a1-p/policytypes/"
+
+.. code-block:: yaml
+
+    [20001,5003,21001,21000,21002]
+
+
+#. Get Policy Type based on policyid
+
+.. code::
+
+    $ curl -s -X GET "http://localhost/a1-p/policytypes/20001" | jq .
+
+.. code-block:: yaml
+
+    {
+      "create_schema": {
+        "$schema": "http://json-schema.org/draft-07/schema#",
+        "properties": {
+          "additionalProperties": false,
+          "blocking_rate": {
+            "default": 10,
+            "description": "% Connections to block",
+            "maximum": 1001,
+            "minimum": 1,
+            "type": "number"
+          },
+          "enforce": {
+            "default": "true",
+            "type": "boolean"
+          },
+          "window_length": {
+            "default": 1,
+            "description": "Sliding window length (in minutes)",
+            "maximum": 60,
+            "minimum": 1,
+            "type": "integer"
+          }
+        },
+        "type": "object"
+      },
+      "description": "various parameters to control admission of dual connection",
+      "name": "admission_control_policy_mine",
+      "policy_type_id": 20001
+    }
+
+
+#. Get all policy instances for a given policy type
+
+.. code::
+
+    $ curl -s -X GET "http://localhost/a1-p/policytypes/20001/policies/" | jq .
+
+.. code-block:: yaml
+  
+    [
+      "1234",
+      "1235"
+    ]
+
+#. Get policy instance for a policy id and policy instance id
+
+.. code::
+
+    $ curl -s -X GET "http://localhost/a1-p/policytypes/20001/policies/1234" | jq .
+
+.. code-block:: yaml
+
+    {
+      "blocking_rate": 20,
+      "enforce": true,
+      "trigger_threshold": 20,
+      "window_length": 20
+    }
+
+#. Create Policy type
+
+.. code::
+
+    $ curl -X PUT "http://localhost/a1-p/policytypes/21003/" -H "Content-Type: application/json" -d @policy_schema_ratecontrol.json
+
+
+    $ cat policy_schema_ratecontrol.json
+
+.. code-block:: yaml
+
+    {
+    "name": "Policy for Rate Control",
+      "policy_type_id":21003,
+      "description":"This policy is associated with rate control. Entities which support this policy type must accept the following policy inputs (see the payload for more specifics) : class, which represents the class of traffic for which the policy is being enforced",
+
+      "create_schema":{
+          "$schema":"http://json-schema.org/draft-07/schema#",
+          "type":"object",
+          "additionalProperties":false,
+          "required":["class"],
+          "properties":{
+              "class":{
+                  "type":"integer",
+                  "minimum":1,
+                  "maximum":256,
+                  "description":"integer id representing class to which we are applying policy"
+              },
+              "enforce":{
+                  "type":"boolean",
+                  "description": "Whether to enable or disable enforcement of policy on this class"
+              },
+              "window_length":{
+                  "type":"integer",
+                  "minimum":15,
+                  "maximum":300,
+                  "description":"Sliding window length in seconds"
+              },
+              "trigger_threshold":{
+                  "type":"integer",
+                  "minimum":1
+              },
+              "blocking_rate":{
+                  "type":"number",
+                  "minimum":0,
+                  "maximum":100
+              }
+
+          }
+      },
+
+      "downstream_schema":{
+          "type":"object",
+          "additionalProperties":false,
+          "required":["policy_type_id", "policy_instance_id", "operation"],
+          "properties":{
+              "policy_type_id":{
+                  "type":"integer",
+                  "enum":[21000]
+              },
+              "policy_instance_id":{
+                  "type":"string"
+              },
+              "operation":{
+                  "type":"string",
+                  "enum":["CREATE", "UPDATE", "DELETE"]
+              },
+              "payload":{
+                  "$schema":"http://json-schema.org/draft-07/schema#",
+                  "type":"object",
+                  "additionalProperties":false,
+                  "required":["class"],
+                  "properties":{
+                      "class":{
+                          "type":"integer",
+                          "minimum":1,
+                          "maximum":256,
+                          "description":"integer id representing class to which we are applying policy"
+                      },
+                      "enforce":{
+                          "type":"boolean",
+                          "description": "Whether to enable or disable enforcement of policy on this class"
+                      },
+                      "window_length":{
+                          "type":"integer",
+                          "minimum":15,
+                          "maximum":300,
+                          "description":"Sliding window length in seconds"
+                      },
+                      "trigger_threshold":{
+                          "type":"integer",
+                          "minimum":1
+                      },
+                      "blocking_rate":{
+                          "type":"number",
+                          "minimum":0,
+                          "maximum":100
+                      }
+
+
+                  }
+              }
+          }
+      },
+      "notify_schema":{
+          "type":"object",
+          "additionalProperties":false,
+          "required":["policy_type_id", "policy_instance_id", "handler_id", "status"],
+          "properties":{
+              "policy_type_id":{
+                  "type":"integer",
+                  "enum":[21000]
+              },
+              "policy_instance_id":{
+                  "type":"string"
+              },
+              "handler_id":{
+                  "type":"string"
+              },
+              "status":{
+                  "type":"string",
+                  "enum":["OK", "ERROR", "DELETED"]
+              }
+          }
+      }
+    }
+
+
+
+
+#. Create policy instance
+
+.. code::
+
+    $ curl -X PUT "http://localhost/a1-p/policytypes/21003/policies/1234" -H "Content-Type: application/json" -d @policy_instance_ratecontrol.json
+    
+    $ cat policy_instance_ratecontrol.json
+
+.. code-block:: yaml
+
+    {
+        "class":12,
+        "enforce":true,
+        "window_length":20,
+        "blocking_rate":20,
+        "trigger_threshold":10
+    }
+
+
+#. Get policy instance status:
+    
+.. code::
+
+    $ curl -s -X GET "http://localhost/a1-p/policytypes/21004/policies/1235/status" | jq .
+
+.. code-block:: yaml
+  
+    {
+      "created_at": "0001-01-01T00:00:00.000Z",
+      "instance_status": "IN EFFECT"
+    }
+
+
+#. Delete policy type
+    
+.. code::
+
+    $ curl -s -X DELETE "http://localhost/a1-p/policytypes/21004/"
+
+#. Delete policy instance
+    
+.. code::
+
+    $ curl -s -X DELETE "http://localhost/a1-p/policytypes/21004/policies/1234/"
+
+#. A1-EI data delivery for a job id:
+
+.. code::
+
+    $ curl -X POST "http://localhost/data-delivery" -H "Content-Type: application/json" -d @a1eidata.json
+
+    $ cat a1eidata.json
+
+.. code-block:: yaml
+  
+    {
+    "job":"100",
+    "payload":"payload"
+    }