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::
 
 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:
 
 
 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::
 
 
 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
 
 
 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.
 
 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"
+    }