First draft API definition for Appfw Genskel.
[apps/agl-service-can-low-level.git] / low-can-binding / binding / low-can-apidef.json
1 {
2   "openapi": "3.0.0",
3   "$schema": "http:iot.bzh/download/openapi/schema-3.0/default-schema.json",
4   "info": {
5     "description": "",
6     "title": "low-level-can-service",
7     "version": "4.0",
8     "x-binding-c-generator": {
9       "api": "low-can",
10       "version": 2,
11       "prefix": "",
12       "postfix": "",
13       "start": null ,
14       "onevent": null,
15       "init": "initv2",
16       "scope": "",
17       "private": false
18     }
19   },
20   "servers": [
21     {
22       "url": "ws://{host}:{port}/api/monitor",
23       "description": "Low level CAN API.",
24       "variables": {
25         "host": {
26           "default": "localhost"
27         },
28         "port": {
29           "default": "1234"
30         }
31       },
32       "x-afb-events": [
33         {
34           "$ref": "#/components/schemas/afb-event"
35         }
36       ]
37     }
38   ],
39   "components": {
40     "schemas": {
41       "afb-reply": {
42         "$ref": "#/components/schemas/afb-reply-v2"
43       },
44       "afb-event": {
45         "$ref": "#/components/schemas/afb-event-v2"
46       },
47       "afb-reply-v2": {
48         "title": "Generic response.",
49         "type": "object",
50         "required": [ "jtype", "request" ],
51         "properties": {
52           "jtype": {
53             "type": "string",
54             "const": "afb-reply"
55           },
56           "request": {
57             "type": "object",
58             "required": [ "status" ],
59             "properties": {
60               "status": { "type": "string" },
61               "info": { "type": "string" },
62               "token": { "type": "string" },
63               "uuid": { "type": "string" },
64               "reqid": { "type": "string" }
65             }
66           },
67           "response": { "type": "object" }
68         }
69       },
70       "afb-event-v2": {
71         "type": "object",
72         "required": [ "jtype", "event" ],
73         "properties": {
74           "jtype": {
75             "type": "string",
76             "const": "afb-event"
77           },
78           "event": { "type": "string" },
79           "data": { "type": "object" }
80         }
81       }
82     },
83     "x-permissions": {
84         "config": {
85           "permission": "urn:AGL:permission:low-can:public:config"
86         },
87         "monitor": {
88           "permission": "urn:AGL:permission:low-can:public:monitor"
89         },
90         "write": {
91           "permission": "urn:AGL:permission:low-can:platform:write"
92         }
93     },
94     "responses": {
95             "200": {
96               "description": "A complex object array response",
97               "content": {
98                 "application/json": {
99                   "schema": {
100                     "$ref": "#/components/schemas/afb-reply"
101                   }
102                 }
103             }
104           }
105     }
106   },
107   "paths": {
108     "/subscribe": {
109       "description": "Subscribe to CAN signals events",
110         "parameters": [
111           {
112             "in": "query",
113             "name": "event",
114             "required": false,
115             "schema": { "type": "string" }
116           }
117         ],
118         "responses": {
119           "200": {"$ref": "#/components/responses/200"}
120         }
121       }
122     },
123     "/unsubscribe": {
124       "description": "Unsubscribe previously suscribed signals.",
125         "parameters": [
126           {
127             "in": "query",
128             "name": "event",
129             "required": false,
130             "schema": { "type": "string" }
131           }
132         ],
133         "responses": {
134           "200": {"$ref": "#/components/responses/200"}
135         }
136       },
137     "/auth": {
138       "description": "Authenticate session to be raise Level Of Assurance.",
139       "get": {
140         "x-permissions": {
141           "$ref": "#/components/x-permissions/write"
142         },
143         "responses": {
144           "200": {"$ref": "#/components/responses/200"}
145         }
146       }
147     },
148     "/write": {
149       "description": "Write a CAN messages to the CAN bus.",
150       "get": {
151         "x-permissions": {
152           "$ref": "#/components/x-permissions/write"
153         },
154         "parameters": [
155           {
156             "in": "query",
157             "name": "bus_name",
158             "required": false,
159             "schema": { "type": "string" }
160         },
161         {
162             "in": "query",
163             "name": "frame",
164             "required": false,
165                         "schema": { "type": "array" },
166                         "parameters": [
167                         {
168                                 "in": "query",
169                                 "name": "can_id",
170                                 "required": false,
171                                 "schema": { "type": "string" }
172                         },
173                         {
174                                 "in": "query",
175                                 "name": "can_dlc",
176                                 "required": false,
177                                 "schema": { "type": "string" }
178                         },
179                         {
180                                 "in": "query",
181                                 "name": "can_data",
182                                 "required": false,
183                                 "schema": { "type": "string" }
184                         }
185                         ]
186                   },
187                 {
188             "in": "query",
189             "name": "signal_name",
190             "required": false,
191             "schema": { "type": "string" }
192                 },
193                 {
194             "in": "query",
195             "name": "signal_value",
196             "required": false,
197             "schema": { "type": "integer" }
198         }
199         ],
200         "responses": {
201           "200": {"$ref": "#/components/responses/200"}
202         }
203       }
204     }
205   }
206
207