b7550ffa1d999aa2b698d4c88f48cb630f533914
[apps/agl-service-unicens.git] / ucs2-afb / ucs_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": "ucs2",
7     "version": "1.0",
8     "x-binding-c-generator": {
9       "api": "UNICENS",
10       "version": 2,
11       "prefix": "ucs2_",
12       "postfix": "",
13       "start": null ,
14       "onevent": null,
15       "preinit": null,
16       "init": "ucs2_initbinding",
17       "scope": "",
18       "private": false
19     }
20   },
21   "servers": [
22     {
23       "url": "ws://{host}:{port}/api/monitor",
24       "description": "Unicens2 API.",
25       "variables": {
26         "host": {
27           "default": "localhost"
28         },
29         "port": {
30           "default": "1234"
31         }
32       },
33       "x-afb-events": [
34         {
35           "$ref": "#/components/schemas/afb-event"
36         }
37       ]
38     }
39   ],
40   "components": {
41     "schemas": {
42       "afb-reply": {
43         "$ref": "#/components/schemas/afb-reply-v2"
44       },
45       "afb-event": {
46         "$ref": "#/components/schemas/afb-event-v2"
47       },
48       "afb-reply-v2": {
49         "title": "Generic response.",
50         "type": "object",
51         "required": [ "jtype", "request" ],
52         "properties": {
53           "jtype": {
54             "type": "string",
55             "const": "afb-reply"
56           },
57           "request": {
58             "type": "object",
59             "required": [ "status" ],
60             "properties": {
61               "status": { "type": "string" },
62               "info": { "type": "string" },
63               "token": { "type": "string" },
64               "uuid": { "type": "string" },
65               "reqid": { "type": "string" }
66             }
67           },
68           "response": { "type": "object" }
69         }
70       },
71       "afb-event-v2": {
72         "type": "object",
73         "required": [ "jtype", "event" ],
74         "properties": {
75           "jtype": {
76             "type": "string",
77             "const": "afb-event"
78           },
79           "event": { "type": "string" },
80           "data": { "type": "object" }
81         }
82       }
83     },
84     "x-permissions": {
85         "config": {
86           "permission": "urn:AGL:permission:UNICENS:public:initialise"
87         },
88         "monitor": {
89           "permission": "urn:AGL:permission:UNICENS:public:monitor"
90         },
91         "controller": {
92           "permission": "urn:AGL:permission:UNICENS:public:controller"
93         }
94     },
95     "responses": {
96             "200": {
97               "description": "A complex object array response",
98               "content": {
99                 "application/json": {
100                   "schema": {
101                     "$ref": "#/components/schemas/afb-reply"
102                   }
103                 }
104             }
105           }
106     }
107   },
108   "paths": {
109     "/listconfig": {
110       "description": "List Config Files",
111       "get": {
112         "x-permissions": {
113           "$ref": "#/components/x-permissions/config"
114         },
115         "parameters": [
116           {
117             "in": "query",
118             "name": "cfgpath",
119             "required": false,
120             "schema": { "type": "string" }
121           }
122         ],
123         "responses": {
124           "200": {"$ref": "#/components/responses/200"}
125         }
126       }
127     },
128     "/initialise": {
129       "description": "configure Unicens2 lib from NetworkConfig.XML.",
130       "get": {
131         "x-permissions": {
132           "$ref": "#/components/x-permissions/config"
133         },
134         "parameters": [
135           {
136             "in": "query",
137             "name": "filename",
138             "required": true,
139             "schema": { "type": "string" }
140           }
141         ],
142         "responses": {
143           "200": {"$ref": "#/components/responses/200"}
144         }
145       }
146     },
147     "/subscribe": {
148       "description": "Subscribe to network events.",
149       "get": {
150         "x-permissions": {
151           "$ref": "#/components/x-permissions/monitor"
152         },
153         "responses": {
154           "200": {"$ref": "#/components/responses/200"}
155         }
156       }
157     },
158     "/subscriberx": {
159       "description": "Subscribe to Rx control message events.",
160       "get": {
161         "x-permissions": {
162           "$ref": "#/components/x-permissions/monitor"
163         },
164         "responses": {
165           "200": {"$ref": "#/components/responses/200"}
166         }
167       }
168     },
169     "/writei2c": {
170       "description": "Writes I2C command to remote node.",
171       "get": {
172         "x-permissions": {
173           "$ref": "#/components/x-permissions/monitor"
174         },
175         "parameters": [
176           {
177             "in": "query",
178             "name": "node",
179             "required": true,
180             "schema": {
181                 "type": "integer",
182                 "format": "int32"
183             }
184           },
185           {
186             "in": "query",
187             "name": "data",
188             "required": true,
189             "schema": {
190                 "type": "array",
191                 "format": "int32"
192             },
193             "style": "simple"
194           }
195         ],
196         "responses": {
197           "200": {"$ref": "#/components/responses/200"}
198         }
199       }
200     },
201     "/sendmessage": {
202       "description": "Transmits a control message to a node.",
203       "get": {
204         "x-permissions": {
205           "$ref": "#/components/x-permissions/controller"
206         },
207         "parameters": [
208           {
209             "in": "query",
210             "name": "node",
211             "required": true,
212             "schema": {
213                 "type": "integer",
214                 "format": "int32"
215             }
216           },
217           {
218             "in": "query",
219             "name": "msgid",
220             "required": true,
221             "schema": {
222                 "type": "integer",
223                 "format": "int32"
224             }
225           },
226           {
227             "in": "query",
228             "name": "data",
229             "required": false,
230             "schema": {
231                 "type": "string",
232                 "format": "byte"
233             },
234             "style": "simple"
235           }
236         ],
237         "responses": {
238           "200": {"$ref": "#/components/responses/200"}
239         }
240       }
241     }
242   }
243 }