Comparison

mod_rest/README.markdown @ 3795:f51308fcba83

mod_rest: Allow specifying a webhook/callback to handle incoming stanzas
author Kim Alvefur <zash@zash.se>
date Mon, 30 Dec 2019 04:07:25 +0100
parent 3794:4b258329e6e4
child 3796:d1ad10b76b00
comparison
equal deleted inserted replaced
3794:4b258329e6e4 3795:f51308fcba83
4 summary: RESTful XMPP API 4 summary: RESTful XMPP API
5 --- 5 ---
6 6
7 # Introduction 7 # Introduction
8 8
9 This is yet another RESTful API for sending stanzas via Prosody. 9 This is yet another RESTful API for sending and receiving stanzas via
10 Prosody. It can be used to build bots and components implemented as HTTP
11 services.
10 12
11 # Usage 13 # Usage
12 14
13 Note that there is currently **no authentication**, so be careful with 15 Note that there is currently **no authentication**, so be careful with
14 exposing the API endpoint to the Internet. 16 exposing the API endpoint to the Internet.
47 --data-binary '<iq type="get" to="example.net"> 49 --data-binary '<iq type="get" to="example.net">
48 <ping xmlns="urn:xmpp:ping"/> 50 <ping xmlns="urn:xmpp:ping"/>
49 </iq>' 51 </iq>'
50 ``` 52 ```
51 53
54 ## Receiving stanzas
55
56 TL;DR: Set this webhook callback URL, get XML `POST`-ed there.
57
58 ``` {.lua}
59 Component "rest.example.net" "rest"
60 rest_callback_url = "http://my-api.example:9999/stanzas"
61 ```
62
63 Example callback looks like:
64
65 ``` {.xml}
66 POST /stanzas HTTP/1.1
67 Content-Type: application/xmpp+xml
68 Content-Length: 52
69
70 <message to="bot@rest.example.net" from="user@example.com" type="chat">
71 <body>Hello</body>
72 </message>
73 ```
74
75 ### Replying
76
77 To accept the stanza without returning a reply, respond with HTTP status
78 code `202` or `204`.
79
80 For full control over the response, set the `Content-Type` header to
81 `application/xmpp+xml` and return an XMPP stanza as an XML snippet.
82
83 ``` {.xml}
84 HTTP/1.1 200 Ok
85 Content-Type: application/xmpp+xml
86
87 <message type="chat">
88 <body>Yes, this is bot</body>
89 </message>
90 ```
91
52 # Compatibility 92 # Compatibility
53 93
54 Requires Prosody trunk / 0.12 94 Requires Prosody trunk / 0.12