Software /
code /
prosody-modules
Comparison
mod_rest/res/openapi.yaml @ 4528:fd15e7f00ff5
mod_rest: Move openapi spec into res/ dir to get it included in rocks
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 23 Mar 2021 20:27:44 +0100 |
parent | 4527:mod_rest/openapi.yaml@9a6aaba3d5ef |
child | 4529:c6d44e1fb4d9 |
comparison
equal
deleted
inserted
replaced
4527:9a6aaba3d5ef | 4528:fd15e7f00ff5 |
---|---|
1 --- | |
2 openapi: 3.0.1 | |
3 | |
4 info: | |
5 title: mod_rest API | |
6 version: 0.3.2 | |
7 description: | | |
8 API for sending and receiving stanzas, in a REST-ish fashion or by | |
9 responding to webhooks. Multiple formats supported, including native XML | |
10 and a simplified JSON mapping. | |
11 license: | |
12 name: MIT | |
13 | |
14 paths: | |
15 | |
16 /rest: | |
17 post: | |
18 summary: Send stanzas and receive responses. Webhooks work the same way. | |
19 tags: | |
20 - generic | |
21 security: | |
22 - basic: [] | |
23 - token: [] | |
24 requestBody: | |
25 $ref: '#/components/requestBodies/common' | |
26 responses: | |
27 200: | |
28 $ref: '#/components/responses/success' | |
29 202: | |
30 $ref: '#/components/responses/sent' | |
31 | |
32 /rest/{kind}/{type}/{to}: | |
33 post: | |
34 summary: Even more RESTful mapping with certain components in the path. | |
35 tags: | |
36 - generic | |
37 security: | |
38 - basic: [] | |
39 - token: [] | |
40 parameters: | |
41 - $ref: '#/components/parameters/kind' | |
42 - $ref: '#/components/parameters/type' | |
43 - $ref: '#/components/parameters/to' | |
44 requestBody: | |
45 $ref: '#/components/requestBodies/common' | |
46 responses: | |
47 200: | |
48 $ref: '#/components/responses/success' | |
49 | |
50 /rest/ping/{to}: | |
51 get: | |
52 tags: | |
53 - query | |
54 summary: Ping a local or remote server or other entity | |
55 security: | |
56 - basic: [] | |
57 - token: [] | |
58 parameters: | |
59 - $ref: '#/components/parameters/to' | |
60 responses: | |
61 200: | |
62 description: Test reachability of some address | |
63 content: | |
64 application/json: | |
65 schema: | |
66 $ref: '#/components/schemas/iq_pong' | |
67 application/xmpp+xml: | |
68 schema: | |
69 $ref: '#/components/schemas/iq_pong' | |
70 | |
71 | |
72 /rest/version/{to}: | |
73 get: | |
74 tags: | |
75 - query | |
76 summary: Ask what software version is used. | |
77 security: | |
78 - basic: [] | |
79 - token: [] | |
80 parameters: | |
81 - $ref: '#/components/parameters/to' | |
82 responses: | |
83 200: | |
84 description: Version query response | |
85 content: | |
86 application/json: | |
87 schema: | |
88 $ref: '#/components/schemas/iq_result_version' | |
89 application/xmpp+xml: | |
90 schema: | |
91 $ref: '#/components/schemas/iq_result_version' | |
92 | |
93 /rest/disco/{to}: | |
94 get: | |
95 tags: | |
96 - query | |
97 summary: Query a remote entity for supported features | |
98 security: | |
99 - basic: [] | |
100 - token: [] | |
101 parameters: | |
102 - $ref: '#/components/parameters/to' | |
103 responses: | |
104 200: | |
105 $ref: '#/components/responses/success' | |
106 | |
107 /rest/items/{to}: | |
108 get: | |
109 tags: | |
110 - query | |
111 summary: Query an entity for related services, chat rooms or other items | |
112 security: | |
113 - basic: [] | |
114 - token: [] | |
115 parameters: | |
116 - $ref: '#/components/parameters/to' | |
117 responses: | |
118 200: | |
119 $ref: '#/components/responses/success' | |
120 | |
121 components: | |
122 schemas: | |
123 stanza: | |
124 type: object | |
125 example: | |
126 body: Hello | |
127 type: chat | |
128 kind: message | |
129 to: alice@example.com | |
130 state: active | |
131 | |
132 properties: | |
133 kind: | |
134 $ref: '#/components/schemas/kind' | |
135 type: | |
136 $ref: '#/components/schemas/type' | |
137 to: | |
138 $ref: '#/components/schemas/to' | |
139 from: | |
140 $ref: '#/components/schemas/from' | |
141 id: | |
142 $ref: '#/components/schemas/id' | |
143 lang: | |
144 $ref: '#/components/schemas/lang' | |
145 | |
146 body: | |
147 $ref: '#/components/schemas/body' | |
148 subject: | |
149 $ref: '#/components/schemas/subject' | |
150 thread: | |
151 $ref: '#/components/schemas/thread' | |
152 | |
153 show: | |
154 $ref: '#/components/schemas/show' | |
155 status: | |
156 $ref: '#/components/schemas/status' | |
157 priority: | |
158 $ref: '#/components/schemas/priority' | |
159 | |
160 state: | |
161 $ref: '#/components/schemas/state' | |
162 nick: | |
163 $ref: '#/components/schemas/nick' | |
164 delay: | |
165 $ref: '#/components/schemas/delay' | |
166 replace: | |
167 $ref: '#/components/schemas/replace' | |
168 | |
169 join: | |
170 $ref: '#/components/schemas/join' | |
171 | |
172 html: | |
173 $ref: '#/components/schemas/html' | |
174 | |
175 ping: | |
176 $ref: '#/components/schemas/ping' | |
177 version: | |
178 $ref: '#/components/schemas/version' | |
179 disco: | |
180 $ref: '#/components/schemas/disco' | |
181 items: | |
182 $ref: '#/components/schemas/items' | |
183 command: | |
184 $ref: '#/components/schemas/command' | |
185 | |
186 oob_url: | |
187 $ref: '#/components/schemas/oob_url' | |
188 payload: | |
189 $ref: '#/components/schemas/payload' | |
190 dataform: | |
191 $ref: '#/components/schemas/dataform' | |
192 formdata: | |
193 $ref: '#/components/schemas/formdata' | |
194 stats: | |
195 $ref: '#/components/schemas/stats' | |
196 error: | |
197 $ref: '#/components/schemas/error' | |
198 | |
199 iq_pong: | |
200 description: Test reachability of some XMPP address | |
201 type: object | |
202 xml: | |
203 name: iq | |
204 properties: | |
205 type: | |
206 type: string | |
207 enum: | |
208 - result | |
209 xml: | |
210 attribute: true | |
211 | |
212 iq_result_version: | |
213 description: Version query response | |
214 type: object | |
215 xml: | |
216 name: iq | |
217 properties: | |
218 type: | |
219 type: string | |
220 enum: | |
221 - result | |
222 xml: | |
223 attribute: true | |
224 version: | |
225 $ref: '#/components/schemas/version' | |
226 | |
227 kind: | |
228 description: Which kind of stanza | |
229 type: string | |
230 enum: | |
231 - message | |
232 - presence | |
233 - iq | |
234 | |
235 type: | |
236 description: Stanza type | |
237 type: string | |
238 enum: | |
239 - chat | |
240 - normal | |
241 - headline | |
242 - groupchat | |
243 - get | |
244 - set | |
245 - result | |
246 - available | |
247 - unavailable | |
248 - subscribe | |
249 - subscribed | |
250 - unsubscribe | |
251 - unsubscribed | |
252 | |
253 to: | |
254 description: recipient | |
255 example: alice@example.com | |
256 type: string | |
257 | |
258 from: | |
259 description: the sender | |
260 example: bob@localhost.example | |
261 type: string | |
262 | |
263 id: | |
264 description: Reasonably unique id. mod_rest generates one if left out. | |
265 type: string | |
266 | |
267 lang: | |
268 description: Language code | |
269 example: en | |
270 type: string | |
271 | |
272 body: | |
273 description: Human-readable chat message | |
274 example: Hello, World! | |
275 type: string | |
276 | |
277 subject: | |
278 description: Subject of message or group chat | |
279 example: Talking about stuff | |
280 type: string | |
281 | |
282 thread: | |
283 description: Message thread identifier | |
284 type: string | |
285 | |
286 show: | |
287 description: indicator of availability, ie away or not | |
288 type: string | |
289 enum: | |
290 - away | |
291 - chat | |
292 - dnd | |
293 - xa | |
294 | |
295 status: | |
296 description: Textual status message. | |
297 type: string | |
298 | |
299 priority: | |
300 description: Presence priority | |
301 type: string | |
302 | |
303 state: | |
304 description: Chat state notifications, e.g. "is typing..." | |
305 type: string | |
306 enum: | |
307 - active | |
308 - inactive | |
309 - gone | |
310 - composing | |
311 - paused | |
312 example: composing | |
313 | |
314 nick: | |
315 type: string | |
316 description: Nickname of the sender | |
317 | |
318 delay: | |
319 type: string | |
320 description: Timestamp of when a stanza was delayed, in ISO 8601 / XEP-0082 | |
321 format. | |
322 | |
323 replace: | |
324 type: string | |
325 description: ID of message being replaced (e.g. for corrections) | |
326 | |
327 join: | |
328 description: For joining Multi-User-Chats | |
329 type: boolean | |
330 enum: | |
331 - true | |
332 | |
333 html: | |
334 description: HTML version of 'body' | |
335 example: <body><p>Hello!</p></body> | |
336 type: string | |
337 | |
338 ping: | |
339 description: A ping. | |
340 type: boolean | |
341 enum: | |
342 - true | |
343 xml: | |
344 name: ping | |
345 namespace: urn:xmpp:ping | |
346 | |
347 version: | |
348 type: object | |
349 description: Software version query | |
350 properties: | |
351 name: | |
352 type: string | |
353 example: My Software | |
354 version: | |
355 type: string | |
356 example: 1.0.0 | |
357 os: | |
358 type: string | |
359 example: Linux | |
360 required: | |
361 - name | |
362 - version | |
363 xml: | |
364 name: query | |
365 namespace: jabber:iq:version | |
366 | |
367 disco: | |
368 description: Discover supported features | |
369 oneOf: | |
370 - description: A full response | |
371 type: object | |
372 properties: | |
373 features: | |
374 description: List of URIs indicating supported features | |
375 type: array | |
376 items: | |
377 type: string | |
378 identities: | |
379 description: List of abstract identities or types that describe the | |
380 entity | |
381 type: array | |
382 example: | |
383 - name: Prosody | |
384 type: im | |
385 category: server | |
386 items: | |
387 type: object | |
388 properties: | |
389 name: | |
390 type: string | |
391 type: | |
392 type: string | |
393 category: | |
394 type: string | |
395 node: | |
396 type: string | |
397 extensions: | |
398 type: object | |
399 - description: A query with a node, or an empty response with a node | |
400 type: string | |
401 - description: Either a query, or an empty response | |
402 type: boolean | |
403 | |
404 items: | |
405 description: List of references to other entities | |
406 oneOf: | |
407 - description: List of items referenced | |
408 type: array | |
409 items: | |
410 properties: | |
411 jid: | |
412 type: string | |
413 description: Address of item | |
414 node: | |
415 type: string | |
416 name: | |
417 type: string | |
418 description: Descriptive name | |
419 required: | |
420 - jid | |
421 type: object | |
422 - type: string | |
423 description: A query with a node, or an empty reply list with a node | |
424 - description: An items query or empty list | |
425 type: boolean | |
426 enum: | |
427 - true | |
428 | |
429 command: | |
430 description: Ad-hoc commands. | |
431 oneOf: | |
432 - type: object | |
433 properties: | |
434 data: | |
435 $ref: '#/components/schemas/formdata' | |
436 action: | |
437 type: string | |
438 note: | |
439 type: object | |
440 properties: | |
441 text: | |
442 type: string | |
443 type: | |
444 type: string | |
445 enum: | |
446 - info | |
447 - warn | |
448 - error | |
449 form: | |
450 $ref: '#/components/schemas/dataform' | |
451 sessionid: | |
452 type: string | |
453 status: | |
454 type: string | |
455 node: | |
456 type: string | |
457 actions: | |
458 type: object | |
459 properties: | |
460 complete: | |
461 type: boolean | |
462 prev: | |
463 type: boolean | |
464 next: | |
465 type: boolean | |
466 execute: | |
467 type: string | |
468 - type: string | |
469 description: Call a command by 'node' id, without arguments | |
470 | |
471 oob_url: | |
472 description: URL of an attached media file. | |
473 example: https://media.example.net/thisfile.jpg | |
474 type: string | |
475 | |
476 payload: | |
477 description: A piece of arbitrary JSON with a type field attached | |
478 type: object | |
479 required: | |
480 - datatype | |
481 - data | |
482 properties: | |
483 data: | |
484 example: '{"some":"json"}' | |
485 type: object | |
486 datatype: | |
487 example: urn:example:my-json#payload | |
488 type: string | |
489 | |
490 dataform: | |
491 description: Data form | |
492 type: object | |
493 properties: | |
494 title: | |
495 description: Title of the form | |
496 example: TPS Report | |
497 type: string | |
498 fields: | |
499 type: array | |
500 items: | |
501 description: Form field | |
502 type: object | |
503 properties: | |
504 value: | |
505 description: Field value | |
506 oneOf: | |
507 - type: string | |
508 - type: array | |
509 items: | |
510 type: string | |
511 type: | |
512 description: Type of form field | |
513 type: string | |
514 label: | |
515 description: Descriptive label for the field | |
516 type: string | |
517 desc: | |
518 description: Longer description, i.e. that would go in a tooltip | |
519 type: string | |
520 required: | |
521 description: Whether the field must be included in the form | |
522 type: boolean | |
523 var: | |
524 description: Internal name of the field | |
525 type: string | |
526 type: | |
527 type: string | |
528 enum: | |
529 - form | |
530 - submit | |
531 - cancel | |
532 - result | |
533 instructions: | |
534 type: string | |
535 | |
536 formdata: | |
537 description: Simplified data form carrying only values | |
538 type: object | |
539 additionalProperties: | |
540 oneOf: | |
541 - type: string | |
542 - type: array | |
543 items: | |
544 type: string | |
545 | |
546 stats: | |
547 description: Statistics | |
548 type: array | |
549 items: | |
550 type: object | |
551 properties: | |
552 name: | |
553 type: string | |
554 unit: | |
555 type: string | |
556 value: | |
557 type: string | |
558 | |
559 error: | |
560 description: Description of something gone wrong. See the Stanza Errors section in RFC 6120. | |
561 type: object | |
562 properties: | |
563 type: | |
564 description: General category of error | |
565 type: string | |
566 enum: | |
567 - auth | |
568 - cancel | |
569 - continue | |
570 - modify | |
571 - wait | |
572 condition: | |
573 description: Specific error condition. | |
574 type: string | |
575 # enum: [ full list available in RFC 6120 ] | |
576 code: | |
577 description: Legacy numeric error code. Similar to HTTP status codes. | |
578 type: integer | |
579 text: | |
580 description: Description of error intended for human eyes. | |
581 type: string | |
582 | |
583 securitySchemes: | |
584 token: | |
585 description: Tokens from mod_http_oauth2. | |
586 scheme: Bearer | |
587 type: http | |
588 basic: | |
589 description: Use JID as username. | |
590 scheme: Basic | |
591 type: http | |
592 | |
593 requestBodies: | |
594 common: | |
595 required: true | |
596 content: | |
597 application/json: | |
598 schema: | |
599 $ref: '#/components/schemas/stanza' | |
600 application/xmpp+xml: | |
601 schema: | |
602 description: Single XMPP stanza in XML format. | |
603 application/x-www-form-urlencoded: | |
604 schema: | |
605 description: A subset of the JSON schema, only top level string fields. | |
606 | |
607 responses: | |
608 success: | |
609 description: The stanza was sent and returned a response. | |
610 content: | |
611 application/json: | |
612 schema: | |
613 $ref: '#/components/schemas/stanza' | |
614 application/xmpp+xml: | |
615 schema: | |
616 description: Single XMPP stanza in XML format. | |
617 example: <message><body>Hello</body></message> | |
618 application/x-www-form-urlencoded: | |
619 schema: | |
620 description: A subset of the JSON schema, only top level string fields. | |
621 example: body=Hello | |
622 text/plain: | |
623 schema: | |
624 description: Plain text response used as message body. | |
625 example: Hello | |
626 type: string | |
627 sent: | |
628 description: The stanza was sent without problem, and without response, | |
629 so an empty reply. | |
630 | |
631 parameters: | |
632 to: | |
633 name: to | |
634 in: path | |
635 required: true | |
636 schema: | |
637 $ref: '#/components/schemas/to' | |
638 kind: | |
639 name: kind | |
640 in: path | |
641 required: true | |
642 schema: | |
643 $ref: '#/components/schemas/kind' | |
644 type: | |
645 name: type | |
646 in: path | |
647 required: true | |
648 schema: | |
649 $ref: '#/components/schemas/type' | |
650 | |
651 ... |