First draft API definition for Appfw Genskel.
authorRomain Forlot <romain.forlot@iot.bzh>
Tue, 25 Jul 2017 16:38:09 +0000 (18:38 +0200)
committerRomain Forlot <romain.forlot@iot.bzh>
Tue, 25 Jul 2017 16:38:09 +0000 (18:38 +0200)
Change-Id: I3547560ebfa0fbc484bf411ce7c08011db6f64b1
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
low-can-binding/binding/low-can-apidef.json [new file with mode: 0644]

diff --git a/low-can-binding/binding/low-can-apidef.json b/low-can-binding/binding/low-can-apidef.json
new file mode 100644 (file)
index 0000000..f72178a
--- /dev/null
@@ -0,0 +1,207 @@
+{
+  "openapi": "3.0.0",
+  "$schema": "http:iot.bzh/download/openapi/schema-3.0/default-schema.json",
+  "info": {
+    "description": "",
+    "title": "low-level-can-service",
+    "version": "4.0",
+    "x-binding-c-generator": {
+      "api": "low-can",
+      "version": 2,
+      "prefix": "",
+      "postfix": "",
+      "start": null ,
+      "onevent": null,
+      "init": "initv2",
+      "scope": "",
+      "private": false
+    }
+  },
+  "servers": [
+    {
+      "url": "ws://{host}:{port}/api/monitor",
+      "description": "Low level CAN API.",
+      "variables": {
+        "host": {
+          "default": "localhost"
+        },
+        "port": {
+          "default": "1234"
+        }
+      },
+      "x-afb-events": [
+        {
+          "$ref": "#/components/schemas/afb-event"
+        }
+      ]
+    }
+  ],
+  "components": {
+    "schemas": {
+      "afb-reply": {
+        "$ref": "#/components/schemas/afb-reply-v2"
+      },
+      "afb-event": {
+        "$ref": "#/components/schemas/afb-event-v2"
+      },
+      "afb-reply-v2": {
+        "title": "Generic response.",
+        "type": "object",
+        "required": [ "jtype", "request" ],
+        "properties": {
+          "jtype": {
+            "type": "string",
+            "const": "afb-reply"
+          },
+          "request": {
+            "type": "object",
+            "required": [ "status" ],
+            "properties": {
+              "status": { "type": "string" },
+              "info": { "type": "string" },
+              "token": { "type": "string" },
+              "uuid": { "type": "string" },
+              "reqid": { "type": "string" }
+            }
+          },
+          "response": { "type": "object" }
+        }
+      },
+      "afb-event-v2": {
+        "type": "object",
+        "required": [ "jtype", "event" ],
+        "properties": {
+          "jtype": {
+            "type": "string",
+            "const": "afb-event"
+          },
+          "event": { "type": "string" },
+          "data": { "type": "object" }
+        }
+      }
+    },
+    "x-permissions": {
+        "config": {
+          "permission": "urn:AGL:permission:low-can:public:config"
+        },
+        "monitor": {
+          "permission": "urn:AGL:permission:low-can:public:monitor"
+        },
+        "write": {
+          "permission": "urn:AGL:permission:low-can:platform:write"
+        }
+    },
+    "responses": {
+            "200": {
+              "description": "A complex object array response",
+              "content": {
+                "application/json": {
+                  "schema": {
+                    "$ref": "#/components/schemas/afb-reply"
+                  }
+                }
+            }
+          }
+    }
+  },
+  "paths": {
+    "/subscribe": {
+      "description": "Subscribe to CAN signals events",
+        "parameters": [
+          {
+            "in": "query",
+            "name": "event",
+            "required": false,
+            "schema": { "type": "string" }
+          }
+        ],
+        "responses": {
+          "200": {"$ref": "#/components/responses/200"}
+        }
+      }
+    },
+    "/unsubscribe": {
+      "description": "Unsubscribe previously suscribed signals.",
+        "parameters": [
+          {
+            "in": "query",
+            "name": "event",
+            "required": false,
+            "schema": { "type": "string" }
+          }
+        ],
+        "responses": {
+          "200": {"$ref": "#/components/responses/200"}
+        }
+      },
+    "/auth": {
+      "description": "Authenticate session to be raise Level Of Assurance.",
+      "get": {
+        "x-permissions": {
+          "$ref": "#/components/x-permissions/write"
+        },
+        "responses": {
+          "200": {"$ref": "#/components/responses/200"}
+        }
+      }
+    },
+    "/write": {
+      "description": "Write a CAN messages to the CAN bus.",
+      "get": {
+        "x-permissions": {
+          "$ref": "#/components/x-permissions/write"
+        },
+        "parameters": [
+          {
+            "in": "query",
+            "name": "bus_name",
+            "required": false,
+            "schema": { "type": "string" }
+        },
+        {
+            "in": "query",
+            "name": "frame",
+            "required": false,
+                       "schema": { "type": "array" },
+                       "parameters": [
+                       {
+                               "in": "query",
+                               "name": "can_id",
+                               "required": false,
+                               "schema": { "type": "string" }
+                       },
+                       {
+                               "in": "query",
+                               "name": "can_dlc",
+                               "required": false,
+                               "schema": { "type": "string" }
+                       },
+                       {
+                               "in": "query",
+                               "name": "can_data",
+                               "required": false,
+                               "schema": { "type": "string" }
+                       }
+                       ]
+                 },
+               {
+            "in": "query",
+            "name": "signal_name",
+            "required": false,
+            "schema": { "type": "string" }
+               },
+               {
+            "in": "query",
+            "name": "signal_value",
+            "required": false,
+            "schema": { "type": "integer" }
+        }
+        ],
+        "responses": {
+          "200": {"$ref": "#/components/responses/200"}
+        }
+      }
+    }
+  }
+
+