comparison mod_rest/res/openapi.yaml @ 5527:5268049915d8

mod_rest: Apply normalization to openapi spec Using https://github.com/mikefarah/yq v4.34.1 --prettyPrint
author Kim Alvefur <zash@zash.se>
date Wed, 07 Jun 2023 15:52:02 +0200
parents d03448560acf
children ce6e071d61a0
comparison
equal deleted inserted replaced
5526:46e512f4ba14 5527:5268049915d8
1 --- 1 ---
2 openapi: 3.0.1 2 openapi: 3.0.1
3
4 info: 3 info:
5 title: mod_rest API 4 title: mod_rest API
6 version: 0.3.2 5 version: 0.3.2
7 description: | 6 description: |
8 API for sending and receiving stanzas, in a REST-ish fashion or by 7 API for sending and receiving stanzas, in a REST-ish fashion or by
9 responding to webhooks. Multiple formats supported, including native XML 8 responding to webhooks. Multiple formats supported, including native XML
10 and a simplified JSON mapping. 9 and a simplified JSON mapping.
11 license: 10 license:
12 name: MIT 11 name: MIT
13
14 paths: 12 paths:
15
16 /rest: 13 /rest:
17 post: 14 post:
18 summary: Send stanzas and receive responses. Webhooks work the same way. 15 summary: Send stanzas and receive responses. Webhooks work the same way.
19 tags: 16 tags:
20 - generic 17 - generic
21 security: 18 security:
22 - basic: [] 19 - basic: []
23 - token: [] 20 - token: []
24 - oauth2: [] 21 - oauth2: []
25 requestBody: 22 requestBody:
26 $ref: '#/components/requestBodies/common' 23 $ref: '#/components/requestBodies/common'
27 responses: 24 responses:
28 '200': 25 "200":
29 $ref: '#/components/responses/success' 26 $ref: '#/components/responses/success'
30 '202': 27 "202":
31 $ref: '#/components/responses/sent' 28 $ref: '#/components/responses/sent'
32
33 /rest/{kind}/{type}/{to}: 29 /rest/{kind}/{type}/{to}:
34 post: 30 post:
35 summary: Even more RESTful mapping with certain components in the path. 31 summary: Even more RESTful mapping with certain components in the path.
36 tags: 32 tags:
37 - generic 33 - generic
38 security: 34 security:
39 - basic: [] 35 - basic: []
40 - token: [] 36 - token: []
41 - oauth2: [] 37 - oauth2: []
42 parameters: 38 parameters:
43 - $ref: '#/components/parameters/kind' 39 - $ref: '#/components/parameters/kind'
44 - $ref: '#/components/parameters/type' 40 - $ref: '#/components/parameters/type'
45 - $ref: '#/components/parameters/to' 41 - $ref: '#/components/parameters/to'
46 requestBody: 42 requestBody:
47 $ref: '#/components/requestBodies/common' 43 $ref: '#/components/requestBodies/common'
48 responses: 44 responses:
49 '200': 45 "200":
50 $ref: '#/components/responses/success' 46 $ref: '#/components/responses/success'
51
52 /rest/echo: 47 /rest/echo:
53 post: 48 post:
54 summary: Build as stanza and return it for inspection. 49 summary: Build as stanza and return it for inspection.
55 tags: 50 tags:
56 - debug 51 - debug
57 security: 52 security:
58 - basic: [] 53 - basic: []
59 - token: [] 54 - token: []
60 - oauth2: [] 55 - oauth2: []
61 requestBody: 56 requestBody:
62 $ref: '#/components/requestBodies/common' 57 $ref: '#/components/requestBodies/common'
63 responses: 58 responses:
64 '200': 59 "200":
65 $ref: '#/components/responses/success' 60 $ref: '#/components/responses/success'
66
67 /rest/ping/{to}: 61 /rest/ping/{to}:
68 get: 62 get:
69 tags: 63 tags:
70 - query 64 - query
71 summary: Ping a local or remote server or other entity 65 summary: Ping a local or remote server or other entity
72 security: 66 security:
73 - basic: [] 67 - basic: []
74 - token: [] 68 - token: []
75 - oauth2: [] 69 - oauth2: []
76 parameters: 70 parameters:
77 - $ref: '#/components/parameters/to' 71 - $ref: '#/components/parameters/to'
78 responses: 72 responses:
79 '200': 73 "200":
80 description: Test reachability of some address 74 description: Test reachability of some address
81 content: 75 content:
82 application/json: 76 application/json:
83 schema: 77 schema:
84 $ref: '#/components/schemas/iq_pong' 78 $ref: '#/components/schemas/iq_pong'
85 application/xmpp+xml: 79 application/xmpp+xml:
86 schema: 80 schema:
87 $ref: '#/components/schemas/iq_pong' 81 $ref: '#/components/schemas/iq_pong'
88
89
90 /rest/version/{to}: 82 /rest/version/{to}:
91 get: 83 get:
92 tags: 84 tags:
93 - query 85 - query
94 summary: Ask what software version is used. 86 summary: Ask what software version is used.
95 security: 87 security:
96 - basic: [] 88 - basic: []
97 - token: [] 89 - token: []
98 - oauth2: [] 90 - oauth2: []
99 parameters: 91 parameters:
100 - $ref: '#/components/parameters/to' 92 - $ref: '#/components/parameters/to'
101 responses: 93 responses:
102 '200': 94 "200":
103 description: Version query response 95 description: Version query response
104 content: 96 content:
105 application/json: 97 application/json:
106 schema: 98 schema:
107 $ref: '#/components/schemas/iq_result_version' 99 $ref: '#/components/schemas/iq_result_version'
108 application/xmpp+xml: 100 application/xmpp+xml:
109 schema: 101 schema:
110 $ref: '#/components/schemas/iq_result_version' 102 $ref: '#/components/schemas/iq_result_version'
111
112 /rest/disco/{to}: 103 /rest/disco/{to}:
113 get: 104 get:
114 tags: 105 tags:
115 - query 106 - query
116 summary: Query a remote entity for supported features 107 summary: Query a remote entity for supported features
117 security: 108 security:
118 - basic: [] 109 - basic: []
119 - token: [] 110 - token: []
120 - oauth2: [] 111 - oauth2: []
121 parameters: 112 parameters:
122 - $ref: '#/components/parameters/to' 113 - $ref: '#/components/parameters/to'
123 responses: 114 responses:
124 '200': 115 "200":
125 $ref: '#/components/responses/success' 116 $ref: '#/components/responses/success'
126
127 /rest/items/{to}: 117 /rest/items/{to}:
128 get: 118 get:
129 tags: 119 tags:
130 - query 120 - query
131 summary: Query an entity for related services, chat rooms or other items 121 summary: Query an entity for related services, chat rooms or other items
132 security: 122 security:
133 - basic: [] 123 - basic: []
134 - token: [] 124 - token: []
135 - oauth2: [] 125 - oauth2: []
136 parameters: 126 parameters:
137 - $ref: '#/components/parameters/to' 127 - $ref: '#/components/parameters/to'
138 responses: 128 responses:
139 '200': 129 "200":
140 $ref: '#/components/responses/success' 130 $ref: '#/components/responses/success'
141
142 /rest/extdisco/{to}: 131 /rest/extdisco/{to}:
143 get: 132 get:
144 tags: 133 tags:
145 - query 134 - query
146 summary: Query for external services (usually STUN and TURN) 135 summary: Query for external services (usually STUN and TURN)
147 security: 136 security:
148 - basic: [] 137 - basic: []
149 - token: [] 138 - token: []
150 - oauth2: [] 139 - oauth2: []
151 parameters: 140 parameters:
152 - $ref: '#/components/parameters/to' 141 - $ref: '#/components/parameters/to'
153 - name: type 142 - name: type
154 in: query 143 in: query
155 schema: 144 schema:
156 type: string 145 type: string
157 example: stun 146 example: stun
158 responses: 147 responses:
159 '200': 148 "200":
160 $ref: '#/components/responses/success' 149 $ref: '#/components/responses/success'
161
162
163 /rest/archive/{to}: 150 /rest/archive/{to}:
164 get: 151 get:
165 tags: 152 tags:
166 - query 153 - query
167 summary: Query a message archive 154 summary: Query a message archive
168 security: 155 security:
169 - basic: [] 156 - basic: []
170 - token: [] 157 - token: []
171 - oauth2: [] 158 - oauth2: []
172 parameters: 159 parameters:
173 - $ref: '#/components/parameters/to' 160 - $ref: '#/components/parameters/to'
174 - name: with 161 - name: with
175 in: query 162 in: query
176 schema: 163 schema:
177 type: string 164 type: string
178 - name: start 165 - name: start
179 in: query 166 in: query
180 schema: 167 schema:
181 type: string 168 type: string
182 - name: end 169 - name: end
183 in: query 170 in: query
184 schema: 171 schema:
185 type: string 172 type: string
186 - name: before-id 173 - name: before-id
187 in: query 174 in: query
188 schema: 175 schema:
189 type: string 176 type: string
190 - name: after-id 177 - name: after-id
191 in: query 178 in: query
192 schema: 179 schema:
193 type: string 180 type: string
194 - name: ids 181 - name: ids
195 in: query 182 in: query
196 schema: 183 schema:
197 type: string 184 type: string
198 description: comma-separated list of archive ids 185 description: comma-separated list of archive ids
199 - name: after 186 - name: after
200 in: query 187 in: query
201 schema: 188 schema:
202 type: string 189 type: string
203 - name: before 190 - name: before
204 in: query 191 in: query
205 schema: 192 schema:
206 type: string 193 type: string
207 - name: max 194 - name: max
208 in: query 195 in: query
209 schema: 196 schema:
210 type: integer 197 type: integer
211 responses: 198 responses:
212 '200': 199 "200":
213 $ref: '#/components/responses/success' 200 $ref: '#/components/responses/success'
214
215 /rest/lastactivity/{to}: 201 /rest/lastactivity/{to}:
216 get: 202 get:
217 tags: 203 tags:
218 - query 204 - query
219 summary: Query last activity of an entity. Sometimes used as "uptime" for servers. 205 summary: Query last activity of an entity. Sometimes used as "uptime" for servers.
220 security: 206 security:
221 - basic: [] 207 - basic: []
222 - token: [] 208 - token: []
223 - oauth2: [] 209 - oauth2: []
224 parameters: 210 parameters:
225 - $ref: '#/components/parameters/to' 211 - $ref: '#/components/parameters/to'
226 responses: 212 responses:
227 '200': 213 "200":
228 $ref: '#/components/responses/success' 214 $ref: '#/components/responses/success'
229
230 /rest/stats/{to}: 215 /rest/stats/{to}:
231 get: 216 get:
232 tags: 217 tags:
233 - query 218 - query
234 summary: Query an entity for statistics 219 summary: Query an entity for statistics
235 security: 220 security:
236 - basic: [] 221 - basic: []
237 - token: [] 222 - token: []
238 - oauth2: [] 223 - oauth2: []
239 parameters: 224 parameters:
240 - $ref: '#/components/parameters/to' 225 - $ref: '#/components/parameters/to'
241 responses: 226 responses:
242 '200': 227 "200":
243 $ref: '#/components/responses/success' 228 $ref: '#/components/responses/success'
244
245 /rest/upload_request/{to}: 229 /rest/upload_request/{to}:
246 get: 230 get:
247 tags: 231 tags:
248 - query 232 - query
249 summary: Lorem ipsum 233 summary: Lorem ipsum
250 security: 234 security:
251 - basic: [] 235 - basic: []
252 - token: [] 236 - token: []
253 - oauth2: [] 237 - oauth2: []
254 parameters: 238 parameters:
255 - $ref: '#/components/parameters/to' 239 - $ref: '#/components/parameters/to'
256 responses: 240 responses:
257 '200': 241 "200":
258 $ref: '#/components/responses/success' 242 $ref: '#/components/responses/success'
259
260 components: 243 components:
261 schemas: 244 schemas:
262 stanza: 245 stanza:
263 type: object 246 type: object
264 example: 247 example:
269 state: active 252 state: active
270 oneOf: 253 oneOf:
271 - $ref: '#/components/schemas/message' 254 - $ref: '#/components/schemas/message'
272 - $ref: '#/components/schemas/presence' 255 - $ref: '#/components/schemas/presence'
273 - $ref: '#/components/schemas/iq' 256 - $ref: '#/components/schemas/iq'
274
275 message: 257 message:
276 type: object 258 type: object
277 xml: 259 xml:
278 name: message 260 name: message
279 properties: 261 properties:
280 kind: 262 kind:
281 description: Which kind of stanza 263 description: Which kind of stanza
282 type: string 264 type: string
283 enum: 265 enum:
284 - message 266 - message
285 type: 267 type:
286 type: string 268 type: string
287 enum: 269 enum:
288 - chat 270 - chat
289 - error 271 - error
290 - groupchat 272 - groupchat
291 - headline 273 - headline
292 - normal 274 - normal
293 xml: 275 xml:
294 attribute: true 276 attribute: true
295
296 to: 277 to:
297 $ref: '#/components/schemas/to' 278 $ref: '#/components/schemas/to'
298 from: 279 from:
299 $ref: '#/components/schemas/from' 280 $ref: '#/components/schemas/from'
300 id: 281 id:
301 $ref: '#/components/schemas/id' 282 $ref: '#/components/schemas/id'
302 lang: 283 lang:
303 $ref: '#/components/schemas/lang' 284 $ref: '#/components/schemas/lang'
304
305 body: 285 body:
306 $ref: '#/components/schemas/body' 286 $ref: '#/components/schemas/body'
307 subject: 287 subject:
308 $ref: '#/components/schemas/subject' 288 $ref: '#/components/schemas/subject'
309 thread: 289 thread:
310 $ref: '#/components/schemas/thread' 290 $ref: '#/components/schemas/thread'
311 invite: 291 invite:
312 $ref: '#/components/schemas/invite' 292 $ref: '#/components/schemas/invite'
313
314 state: 293 state:
315 $ref: '#/components/schemas/state' 294 $ref: '#/components/schemas/state'
316 nick: 295 nick:
317 $ref: '#/components/schemas/nick' 296 $ref: '#/components/schemas/nick'
318 delay: 297 delay:
319 $ref: '#/components/schemas/delay' 298 $ref: '#/components/schemas/delay'
320 replace: 299 replace:
321 $ref: '#/components/schemas/replace' 300 $ref: '#/components/schemas/replace'
322
323 html: 301 html:
324 $ref: '#/components/schemas/html' 302 $ref: '#/components/schemas/html'
325 oob: 303 oob:
326 $ref: '#/components/schemas/oob' 304 $ref: '#/components/schemas/oob'
327 reactions: 305 reactions:
342 $ref: '#/components/schemas/markable' 320 $ref: '#/components/schemas/markable'
343 displayed: 321 displayed:
344 $ref: '#/components/schemas/displayed' 322 $ref: '#/components/schemas/displayed'
345 encryption: 323 encryption:
346 $ref: '#/components/schemas/encryption' 324 $ref: '#/components/schemas/encryption'
347
348 archive: 325 archive:
349 $ref: '#/components/schemas/archive_result' 326 $ref: '#/components/schemas/archive_result'
350
351 dataform: 327 dataform:
352 $ref: '#/components/schemas/dataform' 328 $ref: '#/components/schemas/dataform'
353
354 forwarded: 329 forwarded:
355 $ref: '#/components/schemas/forwarded' 330 $ref: '#/components/schemas/forwarded'
356
357 error: 331 error:
358 $ref: '#/components/schemas/error' 332 $ref: '#/components/schemas/error'
359
360 presence: 333 presence:
361 type: object 334 type: object
362 properties: 335 properties:
363 kind: 336 kind:
364 description: Which kind of stanza 337 description: Which kind of stanza
365 type: string 338 type: string
366 enum: 339 enum:
367 - presence 340 - presence
368 type: 341 type:
369 type: string 342 type: string
370 enum: 343 enum:
371 - available 344 - available
372 - unavailable 345 - unavailable
383 $ref: '#/components/schemas/from' 356 $ref: '#/components/schemas/from'
384 id: 357 id:
385 $ref: '#/components/schemas/id' 358 $ref: '#/components/schemas/id'
386 lang: 359 lang:
387 $ref: '#/components/schemas/lang' 360 $ref: '#/components/schemas/lang'
388
389 show: 361 show:
390 $ref: '#/components/schemas/show' 362 $ref: '#/components/schemas/show'
391 status: 363 status:
392 $ref: '#/components/schemas/status' 364 $ref: '#/components/schemas/status'
393 priority: 365 priority:
394 $ref: '#/components/schemas/priority' 366 $ref: '#/components/schemas/priority'
395
396 caps: 367 caps:
397 $ref: '#/components/schemas/caps' 368 $ref: '#/components/schemas/caps'
398 nick: 369 nick:
399 $ref: '#/components/schemas/nick' 370 $ref: '#/components/schemas/nick'
400 delay: 371 delay:
401 $ref: '#/components/schemas/delay' 372 $ref: '#/components/schemas/delay'
402 vcard_update: 373 vcard_update:
403 $ref: '#/components/schemas/vcard_update' 374 $ref: '#/components/schemas/vcard_update'
404 idle_since: 375 idle_since:
405 $ref: '#/components/schemas/idle_since' 376 $ref: '#/components/schemas/idle_since'
406
407 muc: 377 muc:
408 $ref: '#/components/schemas/muc' 378 $ref: '#/components/schemas/muc'
409
410 error: 379 error:
411 $ref: '#/components/schemas/error' 380 $ref: '#/components/schemas/error'
412
413 iq: 381 iq:
414 type: object 382 type: object
415 properties: 383 properties:
416 kind: 384 kind:
417 description: Which kind of stanza 385 description: Which kind of stanza
418 type: string 386 type: string
419 enum: 387 enum:
420 - iq 388 - iq
421 type: 389 type:
422 type: string 390 type: string
423 enum: 391 enum:
424 - get 392 - get
425 - set 393 - set
426 - result 394 - result
427 - error 395 - error
428 xml: 396 xml:
429 attribute: true 397 attribute: true
430 to: 398 to:
431 $ref: '#/components/schemas/to' 399 $ref: '#/components/schemas/to'
432 from: 400 from:
433 $ref: '#/components/schemas/from' 401 $ref: '#/components/schemas/from'
434 id: 402 id:
435 $ref: '#/components/schemas/id' 403 $ref: '#/components/schemas/id'
436 lang: 404 lang:
437 $ref: '#/components/schemas/lang' 405 $ref: '#/components/schemas/lang'
438
439 ping: 406 ping:
440 $ref: '#/components/schemas/ping' 407 $ref: '#/components/schemas/ping'
441 version: 408 version:
442 $ref: '#/components/schemas/version' 409 $ref: '#/components/schemas/version'
443 lastactivity: 410 lastactivity:
446 $ref: '#/components/schemas/disco' 413 $ref: '#/components/schemas/disco'
447 items: 414 items:
448 $ref: '#/components/schemas/items' 415 $ref: '#/components/schemas/items'
449 command: 416 command:
450 $ref: '#/components/schemas/command' 417 $ref: '#/components/schemas/command'
451
452 stats: 418 stats:
453 $ref: '#/components/schemas/stats' 419 $ref: '#/components/schemas/stats'
454 payload: 420 payload:
455 $ref: '#/components/schemas/payload' 421 $ref: '#/components/schemas/payload'
456 gateway: 422 gateway:
461 $ref: '#/components/schemas/extdisco' 427 $ref: '#/components/schemas/extdisco'
462 upload_request: 428 upload_request:
463 $ref: '#/components/schemas/upload_request' 429 $ref: '#/components/schemas/upload_request'
464 upload_slot: 430 upload_slot:
465 $ref: '#/components/schemas/upload_slot' 431 $ref: '#/components/schemas/upload_slot'
466
467 error: 432 error:
468 $ref: '#/components/schemas/error' 433 $ref: '#/components/schemas/error'
469
470 iq_pong: 434 iq_pong:
471 description: Test reachability of some XMPP address 435 description: Test reachability of some XMPP address
472 type: object 436 type: object
473 xml: 437 xml:
474 name: iq 438 name: iq
475 properties: 439 properties:
476 type: 440 type:
477 type: string 441 type: string
478 enum: 442 enum:
479 - result 443 - result
480 xml: 444 xml:
481 attribute: true 445 attribute: true
482
483 iq_result_version: 446 iq_result_version:
484 description: Version query response 447 description: Version query response
485 type: object 448 type: object
486 xml: 449 xml:
487 name: iq 450 name: iq
488 properties: 451 properties:
489 type: 452 type:
490 type: string 453 type: string
491 enum: 454 enum:
492 - result 455 - result
493 xml: 456 xml:
494 attribute: true 457 attribute: true
495 version: 458 version:
496 $ref: '#/components/schemas/version' 459 $ref: '#/components/schemas/version'
497
498 kind: 460 kind:
499 description: Which kind of stanza 461 description: Which kind of stanza
500 type: string 462 type: string
501 enum: 463 enum:
502 - message 464 - message
503 - presence 465 - presence
504 - iq 466 - iq
505
506 type: 467 type:
507 description: Stanza type 468 description: Stanza type
508 type: string 469 type: string
509 enum: 470 enum:
510 - chat 471 - chat
511 - normal 472 - normal
512 - headline 473 - headline
513 - groupchat 474 - groupchat
514 - get 475 - get
515 - set 476 - set
516 - result 477 - result
517 - available 478 - available
518 - unavailable 479 - unavailable
519 - subscribe 480 - subscribe
520 - subscribed 481 - subscribed
521 - unsubscribe 482 - unsubscribe
522 - unsubscribed 483 - unsubscribed
523 xml: 484 xml:
524 attribute: true 485 attribute: true
525
526 to: 486 to:
527 description: recipient 487 description: recipient
528 example: alice@example.com 488 example: alice@example.com
529 type: string 489 type: string
530 xml: 490 xml:
531 attribute: true 491 attribute: true
532
533 from: 492 from:
534 description: the sender 493 description: the sender
535 example: bob@localhost.example 494 example: bob@localhost.example
536 type: string 495 type: string
537 xml: 496 xml:
538 attribute: true 497 attribute: true
539
540 id: 498 id:
541 description: Reasonably unique id. mod_rest generates one if left out. 499 description: Reasonably unique id. mod_rest generates one if left out.
542 type: string 500 type: string
543 xml: 501 xml:
544 attribute: true 502 attribute: true
545
546 lang: 503 lang:
547 description: Language code 504 description: Language code
548 example: en 505 example: en
549 xml: 506 xml:
550 prefix: xml 507 prefix: xml
551 attribute: true 508 attribute: true
552 type: string 509 type: string
553
554 body: 510 body:
555 description: Human-readable chat message 511 description: Human-readable chat message
556 example: Hello, World! 512 example: Hello, World!
557 type: string 513 type: string
558
559 subject: 514 subject:
560 description: Subject of message or group chat 515 description: Subject of message or group chat
561 example: Talking about stuff 516 example: Talking about stuff
562 type: string 517 type: string
563
564 thread: 518 thread:
565 description: Message thread identifier 519 description: Message thread identifier
566 properties: 520 properties:
567 parent: 521 parent:
568 type: string 522 type: string
570 attribute: true 524 attribute: true
571 id: 525 id:
572 type: string 526 type: string
573 xml: 527 xml:
574 text: true 528 text: true
575
576 show: 529 show:
577 description: indicator of availability, ie away or not 530 description: indicator of availability, ie away or not
578 type: string 531 type: string
579 enum: 532 enum:
580 - away 533 - away
581 - chat 534 - chat
582 - dnd 535 - dnd
583 - xa 536 - xa
584
585 status: 537 status:
586 description: Textual status message. 538 description: Textual status message.
587 type: string 539 type: string
588
589 priority: 540 priority:
590 description: Presence priority 541 description: Presence priority
591 type: integer 542 type: integer
592 maximum: 127 543 maximum: 127
593 minimum: -128 544 minimum: -128
594
595 state: 545 state:
596 description: Chat state notifications, e.g. "is typing..." 546 description: Chat state notifications, e.g. "is typing..."
597 type: string 547 type: string
598 xml: 548 xml:
599 namespace: http://jabber.org/protocol/chatstates 549 namespace: http://jabber.org/protocol/chatstates
600 x_name_is_value: true 550 x_name_is_value: true
601 enum: 551 enum:
602 - active 552 - active
603 - inactive 553 - inactive
604 - gone 554 - gone
605 - composing 555 - composing
606 - paused 556 - paused
607 example: composing 557 example: composing
608
609 nick: 558 nick:
610 type: string 559 type: string
611 description: Nickname of the sender 560 description: Nickname of the sender
612 xml: 561 xml:
613 name: nick 562 name: nick
614 namespace: http://jabber.org/protocol/nick 563 namespace: http://jabber.org/protocol/nick
615
616 delay: 564 delay:
617 type: string 565 type: string
618 format: date-time 566 format: date-time
619 description: Timestamp of when a stanza was delayed, in ISO 8601 / XEP-0082 567 description: Timestamp of when a stanza was delayed, in ISO 8601 / XEP-0082 format.
620 format.
621 xml: 568 xml:
622 name: delay 569 name: delay
623 namespace: urn:xmpp:delay 570 namespace: urn:xmpp:delay
624 x_single_attribute: stamp 571 x_single_attribute: stamp
625
626 replace: 572 replace:
627 type: string 573 type: string
628 description: ID of message being replaced (e.g. for corrections) 574 description: ID of message being replaced (e.g. for corrections)
629 xml: 575 xml:
630 name: replace 576 name: replace
631 namespace: urn:xmpp:message-correct:0 577 namespace: urn:xmpp:message-correct:0
632 x_single_attribute: id 578 x_single_attribute: id
633
634 muc: 579 muc:
635 description: Multi-User-Chat related 580 description: Multi-User-Chat related
636 type: object 581 type: object
637 xml: 582 xml:
638 name: x 583 name: x
659 since: 604 since:
660 type: string 605 type: string
661 format: date-time 606 format: date-time
662 xml: 607 xml:
663 attribute: true 608 attribute: true
664
665
666 invite: 609 invite:
667 description: Invite to a group chat 610 description: Invite to a group chat
668 title: "XEP-0249: Direct MUC Invitations" 611 title: 'XEP-0249: Direct MUC Invitations'
669 type: object 612 type: object
670 required: 613 required:
671 - jid 614 - jid
672 xml: 615 xml:
673 name: x 616 name: x
674 namespace: jabber:x:conference 617 namespace: jabber:x:conference
675 properties: 618 properties:
676 jid: 619 jid:
696 continue: 639 continue:
697 type: boolean 640 type: boolean
698 description: Whether the group chat continues a one-to-one chat 641 description: Whether the group chat continues a one-to-one chat
699 xml: 642 xml:
700 attribute: true 643 attribute: true
701
702 html: 644 html:
703 description: HTML version of 'body' 645 description: HTML version of 'body'
704 example: <body><p>Hello!</p></body> 646 example: <body><p>Hello!</p></body>
705 type: string 647 type: string
706
707 ping: 648 ping:
708 description: A ping. 649 description: A ping.
709 type: boolean 650 type: boolean
710 enum: 651 enum:
711 - true 652 - true
712 xml: 653 xml:
713 name: ping 654 name: ping
714 namespace: urn:xmpp:ping 655 namespace: urn:xmpp:ping
715
716 version: 656 version:
717 type: object 657 type: object
718 description: Software version query 658 description: Software version query
719 properties: 659 properties:
720 name: 660 name:
725 example: 1.0.0 665 example: 1.0.0
726 os: 666 os:
727 type: string 667 type: string
728 example: Linux 668 example: Linux
729 required: 669 required:
730 - name 670 - name
731 - version 671 - version
732 xml: 672 xml:
733 name: query 673 name: query
734 namespace: jabber:iq:version 674 namespace: jabber:iq:version
735
736 disco: 675 disco:
737 description: Discover supported features 676 description: Discover supported features
738 oneOf: 677 oneOf:
739 - description: A full response 678 - description: A full response
740 type: object 679 type: object
741 properties: 680 properties:
742 features: 681 features:
743 description: List of URIs indicating supported features 682 description: List of URIs indicating supported features
744 type: array 683 type: array
745 items: 684 items:
685 type: string
686 identities:
687 description: List of abstract identities or types that describe the entity
688 type: array
689 example:
690 - name: Prosody
691 type: im
692 category: server
693 items:
694 type: object
695 properties:
696 name:
697 type: string
698 type:
699 type: string
700 category:
701 type: string
702 node:
746 type: string 703 type: string
747 identities: 704 extensions:
748 description: List of abstract identities or types that describe the 705 type: object
749 entity 706 - description: A query with a node, or an empty response with a node
750 type: array 707 type: string
751 example: 708 - description: Either a query, or an empty response
752 - name: Prosody 709 type: boolean
753 type: im 710 items:
754 category: server 711 description: List of references to other entities
755 items: 712 oneOf:
713 - description: List of items referenced
714 type: array
715 items:
716 properties:
717 jid:
718 type: string
719 description: Address of item
720 node:
721 type: string
722 name:
723 type: string
724 description: Descriptive name
725 required:
726 - jid
727 type: object
728 - type: string
729 description: A query with a node, or an empty reply list with a node
730 - description: An items query or empty list
731 type: boolean
732 enum:
733 - true
734 command:
735 description: Ad-hoc commands.
736 oneOf:
737 - type: object
738 properties:
739 data:
740 $ref: '#/components/schemas/formdata'
741 action:
742 type: string
743 note:
756 type: object 744 type: object
757 properties: 745 properties:
758 name: 746 text:
759 type: string 747 type: string
760 type: 748 type:
761 type: string 749 type: string
762 category: 750 enum:
763 type: string 751 - info
764 node: 752 - warn
765 type: string 753 - error
766 extensions: 754 form:
767 type: object 755 $ref: '#/components/schemas/dataform'
768 - description: A query with a node, or an empty response with a node 756 sessionid:
769 type: string
770 - description: Either a query, or an empty response
771 type: boolean
772
773 items:
774 description: List of references to other entities
775 oneOf:
776 - description: List of items referenced
777 type: array
778 items:
779 properties:
780 jid:
781 type: string 757 type: string
782 description: Address of item 758 status:
759 type: string
783 node: 760 node:
784 type: string 761 type: string
785 name: 762 actions:
786 type: string 763 type: object
787 description: Descriptive name 764 properties:
788 required: 765 complete:
789 - jid 766 type: boolean
790 type: object 767 prev:
791 - type: string 768 type: boolean
792 description: A query with a node, or an empty reply list with a node 769 next:
793 - description: An items query or empty list 770 type: boolean
794 type: boolean 771 execute:
795 enum: 772 type: string
796 - true 773 - type: string
797 774 description: Call a command by 'node' id, without arguments
798 command:
799 description: Ad-hoc commands.
800 oneOf:
801 - type: object
802 properties:
803 data:
804 $ref: '#/components/schemas/formdata'
805 action:
806 type: string
807 note:
808 type: object
809 properties:
810 text:
811 type: string
812 type:
813 type: string
814 enum:
815 - info
816 - warn
817 - error
818 form:
819 $ref: '#/components/schemas/dataform'
820 sessionid:
821 type: string
822 status:
823 type: string
824 node:
825 type: string
826 actions:
827 type: object
828 properties:
829 complete:
830 type: boolean
831 prev:
832 type: boolean
833 next:
834 type: boolean
835 execute:
836 type: string
837 - type: string
838 description: Call a command by 'node' id, without arguments
839
840 oob: 775 oob:
841 type: object 776 type: object
842 description: Reference a media file 777 description: Reference a media file
843 xml: 778 xml:
844 name: x 779 name: x
850 example: https://media.example.net/thisfile.jpg 785 example: https://media.example.net/thisfile.jpg
851 format: uri 786 format: uri
852 desc: 787 desc:
853 description: Optional description 788 description: Optional description
854 type: string 789 type: string
855
856 payload: 790 payload:
857 title: 'XEP-0335: JSON Containers' 791 title: 'XEP-0335: JSON Containers'
858 description: A piece of arbitrary JSON with a type field attached 792 description: A piece of arbitrary JSON with a type field attached
859 type: object 793 type: object
860 xml: 794 xml:
868 example: '{"some":"json"}' 802 example: '{"some":"json"}'
869 type: object 803 type: object
870 datatype: 804 datatype:
871 example: urn:example:my-json#payload 805 example: urn:example:my-json#payload
872 type: string 806 type: string
873
874 rsm: 807 rsm:
875 title: 'XEP-0059: Result Set Management' 808 title: 'XEP-0059: Result Set Management'
876 xml: 809 xml:
877 name: set 810 name: set
878 namespace: http://jabber.org/protocol/rsm 811 namespace: http://jabber.org/protocol/rsm
890 type: string 823 type: string
891 after: 824 after:
892 type: string 825 type: string
893 first: 826 first:
894 type: string 827 type: string
895
896 archive_query: 828 archive_query:
897 title: 'XEP-0313: Message Archive Management' 829 title: 'XEP-0313: Message Archive Management'
898 type: object 830 type: object
899 properties: 831 properties:
900 queryid: 832 queryid:
906 form: 838 form:
907 $ref: '#/components/schemas/dataform' 839 $ref: '#/components/schemas/dataform'
908 xml: 840 xml:
909 name: query 841 name: query
910 namespace: urn:xmpp:mam:2 842 namespace: urn:xmpp:mam:2
911
912 archive_result: 843 archive_result:
913 title: 'XEP-0313: Message Archive Management' 844 title: 'XEP-0313: Message Archive Management'
914 xml: 845 xml:
915 namespace: urn:xmpp:mam:2 846 namespace: urn:xmpp:mam:2
916 name: result 847 name: result
920 type: string 851 type: string
921 xml: 852 xml:
922 attribute: true 853 attribute: true
923 forward: 854 forward:
924 $ref: '#/components/schemas/forwarded' 855 $ref: '#/components/schemas/forwarded'
925
926 forwarded: 856 forwarded:
927 title: 'XEP-0297: Stanza Forwarding' 857 title: 'XEP-0297: Stanza Forwarding'
928 xml: 858 xml:
929 name: forwarded 859 name: forwarded
930 namespace: urn:xmpp:forward:0 860 namespace: urn:xmpp:forward:0
932 properties: 862 properties:
933 message: 863 message:
934 $ref: '#/components/schemas/message' 864 $ref: '#/components/schemas/message'
935 delay: 865 delay:
936 $ref: '#/components/schemas/delay' 866 $ref: '#/components/schemas/delay'
937
938 dataform: 867 dataform:
939 description: Data form 868 description: Data form
940 type: object 869 type: object
941 properties: 870 properties:
942 title: 871 title:
950 type: object 879 type: object
951 properties: 880 properties:
952 value: 881 value:
953 description: Field value 882 description: Field value
954 oneOf: 883 oneOf:
955 - type: string 884 - type: string
956 - type: array 885 - type: array
957 items: 886 items:
958 type: string 887 type: string
959 type: 888 type:
960 description: Type of form field 889 description: Type of form field
961 type: string 890 type: string
962 label: 891 label:
963 description: Descriptive label for the field 892 description: Descriptive label for the field
972 description: Internal name of the field 901 description: Internal name of the field
973 type: string 902 type: string
974 type: 903 type:
975 type: string 904 type: string
976 enum: 905 enum:
977 - form 906 - form
978 - submit 907 - submit
979 - cancel 908 - cancel
980 - result 909 - result
981 instructions: 910 instructions:
982 type: string 911 type: string
983
984 formdata: 912 formdata:
985 description: Simplified data form carrying only values 913 description: Simplified data form carrying only values
986 type: object 914 type: object
987 additionalProperties: 915 additionalProperties:
988 oneOf: 916 oneOf:
989 - type: string 917 - type: string
990 - type: array 918 - type: array
991 items: 919 items:
992 type: string 920 type: string
993
994 stats: 921 stats:
995 description: Statistics 922 description: Statistics
996 type: array 923 type: array
997 xml: 924 xml:
998 name: query 925 name: query
1011 attribute: true 938 attribute: true
1012 value: 939 value:
1013 type: string 940 type: string
1014 xml: 941 xml:
1015 attribute: true 942 attribute: true
1016
1017 lastactivity: 943 lastactivity:
1018 type: object 944 type: object
1019 xml: 945 xml:
1020 name: query 946 name: query
1021 namespace: jabber:iq:last 947 namespace: jabber:iq:last
1027 attribute: true 953 attribute: true
1028 status: 954 status:
1029 type: string 955 type: string
1030 xml: 956 xml:
1031 text: true 957 text: true
1032
1033 caps: 958 caps:
1034 type: object 959 type: object
1035 xml: 960 xml:
1036 name: c 961 name: c
1037 namespace: http://jabber.org/protocol/caps 962 namespace: http://jabber.org/protocol/caps
1050 attribute: true 975 attribute: true
1051 ext: 976 ext:
1052 type: string 977 type: string
1053 xml: 978 xml:
1054 attribute: true 979 attribute: true
1055
1056 vcard_update: 980 vcard_update:
1057 type: object 981 type: object
1058 xml: 982 xml:
1059 name: x 983 name: x
1060 namespace: vcard-temp:x:update 984 namespace: vcard-temp:x:update
1061 properties: 985 properties:
1062 photo: 986 photo:
1063 type: string 987 type: string
1064 example: adc83b19e793491b1c6ea0fd8b46cd9f32e592fc 988 example: adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
1065
1066 reactions: 989 reactions:
1067 type: object 990 type: object
1068 xml: 991 xml:
1069 namespace: urn:xmpp:reactions:0 992 namespace: urn:xmpp:reactions:0
1070 properties: 993 properties:
1079 name: reaction 1002 name: reaction
1080 type: string 1003 type: string
1081 xml: 1004 xml:
1082 wrapped: false 1005 wrapped: false
1083 name: reactions 1006 name: reactions
1084
1085 occupant_id: 1007 occupant_id:
1086 type: string 1008 type: string
1087 xml: 1009 xml:
1088 namespace: urn:xmpp:occupant-id:0 1010 namespace: urn:xmpp:occupant-id:0
1089 x_single_attribute: id 1011 x_single_attribute: id
1090 name: occupant-id 1012 name: occupant-id
1091
1092 attach_to: 1013 attach_to:
1093 type: string 1014 type: string
1094 xml: 1015 xml:
1095 namespace: urn:xmpp:message-attaching:1 1016 namespace: urn:xmpp:message-attaching:1
1096 x_single_attribute: id 1017 x_single_attribute: id
1097 name: attach-to 1018 name: attach-to
1098
1099 fallback: 1019 fallback:
1100 type: boolean 1020 type: boolean
1101 xml: 1021 xml:
1102 namespace: urn:xmpp:fallback:0 1022 namespace: urn:xmpp:fallback:0
1103 x_name_is_value: true 1023 x_name_is_value: true
1104 name: fallback 1024 name: fallback
1105
1106 stanza_ids: 1025 stanza_ids:
1107 type: array 1026 type: array
1108 items: 1027 items:
1109 type: object 1028 type: object
1110 required: 1029 required:
1111 - id 1030 - id
1112 - by 1031 - by
1113 xml: 1032 xml:
1114 namespace: urn:xmpp:sid:0 1033 namespace: urn:xmpp:sid:0
1115 name: stanza-id 1034 name: stanza-id
1116 properties: 1035 properties:
1117 id: 1036 id:
1121 by: 1040 by:
1122 xml: 1041 xml:
1123 attribute: true 1042 attribute: true
1124 format: xmpp-jid 1043 format: xmpp-jid
1125 type: string 1044 type: string
1126
1127 reference: 1045 reference:
1128 type: object 1046 type: object
1129 xml: 1047 xml:
1130 namespace: urn:xmpp:reference:0 1048 namespace: urn:xmpp:reference:0
1131 properties: 1049 properties:
1147 type: 1065 type:
1148 xml: 1066 xml:
1149 attribute: true 1067 attribute: true
1150 type: string 1068 type: string
1151 required: 1069 required:
1152 - type 1070 - type
1153 - uri 1071 - uri
1154
1155 reply: 1072 reply:
1156 title: 'XEP-0461: Message Replies' 1073 title: 'XEP-0461: Message Replies'
1157 description: Reference a message being replied to 1074 description: Reference a message being replied to
1158 type: object 1075 type: object
1159 xml: 1076 xml:
1166 attribute: true 1083 attribute: true
1167 id: 1084 id:
1168 type: string 1085 type: string
1169 xml: 1086 xml:
1170 attribute: true 1087 attribute: true
1171
1172 markable: 1088 markable:
1173 type: boolean 1089 type: boolean
1174 xml: 1090 xml:
1175 namespace: urn:xmpp:chat-markers:0 1091 namespace: urn:xmpp:chat-markers:0
1176 x_name_is_value: true 1092 x_name_is_value: true
1177
1178 displayed: 1093 displayed:
1179 type: string 1094 type: string
1180 description: Message ID of a message that has been displayed 1095 description: Message ID of a message that has been displayed
1181 xml: 1096 xml:
1182 namespace: urn:xmpp:chat-markers:0 1097 namespace: urn:xmpp:chat-markers:0
1183 x_single_attribute: id 1098 x_single_attribute: id
1184
1185 idle_since: 1099 idle_since:
1186 type: string 1100 type: string
1187 xml: 1101 xml:
1188 namespace: urn:xmpp:idle:1 1102 namespace: urn:xmpp:idle:1
1189 x_single_attribute: since 1103 x_single_attribute: since
1190 name: idle 1104 name: idle
1191 format: date-time 1105 format: date-time
1192
1193 gateway: 1106 gateway:
1194 type: object 1107 type: object
1195 xml: 1108 xml:
1196 namespace: jabber:iq:gateway 1109 namespace: jabber:iq:gateway
1197 name: query 1110 name: query
1200 type: string 1113 type: string
1201 prompt: 1114 prompt:
1202 type: string 1115 type: string
1203 jid: 1116 jid:
1204 type: string 1117 type: string
1205
1206 extdisco: 1118 extdisco:
1207 type: object 1119 type: object
1208 xml: 1120 xml:
1209 namespace: urn:xmpp:extdisco:2 1121 namespace: urn:xmpp:extdisco:2
1210 name: services 1122 name: services
1217 items: 1129 items:
1218 type: object 1130 type: object
1219 xml: 1131 xml:
1220 name: service 1132 name: service
1221 required: 1133 required:
1222 - type 1134 - type
1223 - host 1135 - host
1224 properties: 1136 properties:
1225 transport: 1137 transport:
1226 xml: 1138 xml:
1227 attribute: true 1139 attribute: true
1228 type: string 1140 type: string
1258 name: 1170 name:
1259 xml: 1171 xml:
1260 attribute: true 1172 attribute: true
1261 type: string 1173 type: string
1262 type: array 1174 type: array
1263
1264 register: 1175 register:
1265 type: object 1176 type: object
1266 description: Register with a service 1177 description: Register with a service
1267 xml: 1178 xml:
1268 namespace: jabber:iq:register 1179 namespace: jabber:iq:register
1311 username: 1222 username:
1312 type: string 1223 type: string
1313 name: 1224 name:
1314 type: string 1225 type: string
1315 required: 1226 required:
1316 - username 1227 - username
1317 - password 1228 - password
1318
1319 upload_slot: 1229 upload_slot:
1320 type: object 1230 type: object
1321 xml: 1231 xml:
1322 name: slot 1232 name: slot
1323 namespace: urn:xmpp:http:upload:0 1233 namespace: urn:xmpp:http:upload:0
1333 headers: 1243 headers:
1334 type: array 1244 type: array
1335 items: 1245 items:
1336 type: object 1246 type: object
1337 required: 1247 required:
1338 - name 1248 - name
1339 - value 1249 - value
1340 xml: 1250 xml:
1341 name: header 1251 name: header
1342 properties: 1252 properties:
1343 name: 1253 name:
1344 type: string 1254 type: string
1345 enum: 1255 enum:
1346 - Authorization 1256 - Authorization
1347 - Cookie 1257 - Cookie
1348 - Expires 1258 - Expires
1349 xml: 1259 xml:
1350 attribute: true 1260 attribute: true
1351 value: 1261 value:
1352 type: string 1262 type: string
1353 xml: 1263 xml:
1361 xml: 1271 xml:
1362 attribute: true 1272 attribute: true
1363 upload_request: 1273 upload_request:
1364 type: object 1274 type: object
1365 required: 1275 required:
1366 - filename 1276 - filename
1367 - size 1277 - size
1368 xml: 1278 xml:
1369 name: request 1279 name: request
1370 namespace: urn:xmpp:http:upload:0 1280 namespace: urn:xmpp:http:upload:0
1371 properties: 1281 properties:
1372 filename: 1282 filename:
1379 name: content-type 1289 name: content-type
1380 size: 1290 size:
1381 type: integer 1291 type: integer
1382 xml: 1292 xml:
1383 attribute: true 1293 attribute: true
1384
1385 encryption: 1294 encryption:
1386 title: 'XEP-0380: Explicit Message Encryption' 1295 title: 'XEP-0380: Explicit Message Encryption'
1387 type: string 1296 type: string
1388 xml: 1297 xml:
1389 x_single_attribute: namespace 1298 x_single_attribute: namespace
1390 name: encryption 1299 name: encryption
1391 namespace: urn:xmpp:eme:0 1300 namespace: urn:xmpp:eme:0
1392
1393 error: 1301 error:
1394 description: Description of something gone wrong. See the Stanza Errors section in RFC 6120. 1302 description: Description of something gone wrong. See the Stanza Errors section in RFC 6120.
1395 type: object 1303 type: object
1396 properties: 1304 properties:
1397 type: 1305 type:
1398 description: General category of error 1306 description: General category of error
1399 type: string 1307 type: string
1400 enum: 1308 enum:
1401 - auth 1309 - auth
1402 - cancel 1310 - cancel
1403 - continue 1311 - continue
1404 - modify 1312 - modify
1405 - wait 1313 - wait
1406 condition: 1314 condition:
1407 description: Specific error condition. 1315 description: Specific error condition.
1408 type: string 1316 type: string
1409 # enum: [ full list available in RFC 6120 ] 1317 # enum: [ full list available in RFC 6120 ]
1410 code: 1318 code:
1411 description: Legacy numeric error code. Similar to HTTP status codes. 1319 description: Legacy numeric error code. Similar to HTTP status codes.
1412 type: integer 1320 type: integer
1413 text: 1321 text:
1414 description: Description of error intended for human eyes. 1322 description: Description of error intended for human eyes.
1415 type: string 1323 type: string
1416
1417 securitySchemes: 1324 securitySchemes:
1418 token: 1325 token:
1419 description: Tokens from mod_http_oauth2. 1326 description: Tokens from mod_http_oauth2.
1420 scheme: Bearer 1327 scheme: Bearer
1421 type: http 1328 type: http
1433 scopes: 1340 scopes:
1434 prosody:restricted: Restricted account 1341 prosody:restricted: Restricted account
1435 prosody:user: Regular user privileges 1342 prosody:user: Regular user privileges
1436 prosody:admin: Administrator privileges 1343 prosody:admin: Administrator privileges
1437 prosody:operator: Server operator privileges 1344 prosody:operator: Server operator privileges
1438
1439 requestBodies: 1345 requestBodies:
1440 common: 1346 common:
1441 required: true 1347 required: true
1442 content: 1348 content:
1443 application/json: 1349 application/json:
1447 schema: 1353 schema:
1448 description: Single XMPP stanza in XML format. 1354 description: Single XMPP stanza in XML format.
1449 application/x-www-form-urlencoded: 1355 application/x-www-form-urlencoded:
1450 schema: 1356 schema:
1451 description: A subset of the JSON schema, only top level string fields. 1357 description: A subset of the JSON schema, only top level string fields.
1452
1453 responses: 1358 responses:
1454 success: 1359 success:
1455 description: The stanza was sent and returned a response. 1360 description: The stanza was sent and returned a response.
1456 content: 1361 content:
1457 application/json: 1362 application/json:
1469 schema: 1374 schema:
1470 description: Plain text response used as message body. 1375 description: Plain text response used as message body.
1471 example: Hello 1376 example: Hello
1472 type: string 1377 type: string
1473 sent: 1378 sent:
1474 description: The stanza was sent without problem, and without response, 1379 description: The stanza was sent without problem, and without response, so an empty reply.
1475 so an empty reply.
1476
1477 parameters: 1380 parameters:
1478 to: 1381 to:
1479 name: to 1382 name: to
1480 in: path 1383 in: path
1481 required: true 1384 required: true
1491 name: type 1394 name: type
1492 in: path 1395 in: path
1493 required: true 1396 required: true
1494 schema: 1397 schema:
1495 $ref: '#/components/schemas/type' 1398 $ref: '#/components/schemas/type'
1496
1497 ...