Software /
code /
prosody-modules
Annotate
mod_data_access/README.markdown @ 5575:372e59bd45d7
mod_pubsub_feeds: Remove comment, this text is in the README
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 25 Jun 2023 16:48:21 +0200 |
parent | 5007:34fb3d239ac1 |
rev | line source |
---|---|
1803 | 1 --- |
2 labels: | |
3 summary: 'HTTP access to prosody’s storage mechanism' | |
4 ... | |
5 | |
6 Introduction | |
7 ------------ | |
8 | |
9 This module gives HTTP access to prosody’s storage mechanism. It uses | |
10 normal HTTP verbs and [Basic HTTP | |
11 authentication](http://tools.ietf.org/html/rfc2617), so you could call | |
12 it RESTful if you like buzzwords. | |
13 | |
14 Syntax | |
15 ------ | |
16 | |
17 To Fetch data, issue a normal GET request | |
18 | |
19 GET /data[/<host>/<user>]/<store>[/<format>] HTTP/1.1 | |
20 Authorization: <base64(authzid:password)> | |
21 | |
22 OR | |
23 | |
24 PUT|POST /data[/<host>/<user>]/<store> HTTP/1.1 | |
25 Content-Type: text/x-lua | application/json | |
26 | |
27 <data> | |
28 | |
29 These map to `datamanager.method(user, host, store, data)`, where choice | |
30 of `method` and its parameters are explained below. | |
31 | |
32 ### Verbs | |
33 | |
34 Verb Meaning datamanager method | |
35 -------- ------------------------------- --------------------------- | |
36 `GET` Just fetch data `load()` or `list_load()` | |
37 `PUT` Replace all data in the store `store()` | |
38 `POST` Append item to the store `list_append()` | |
39 | |
40 Note: In a `GET` request, if `load()` returns `nil`, `list_load()` will | |
41 be tried instead. | |
42 | |
43 ### Fields | |
44 | |
45 Field Description Default | |
46 ---------- ----------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------- | |
47 `host` Which virtual host to access Required. If not set in the path, the domain-part of the authzid is used. | |
48 `user` Which users storage to access Required. If not set in the path, uses the node part of the authzid. | |
49 `store` Which storage to access. Required. | |
50 `format` Which format to serialize to. `json` and `lua` are supported. When uploading data, the `Content-Type` header is used. `json` | |
51 `data` The actual data to upload in a `PUT` or `POST` request. `nil` | |
52 | |
53 Note: Only admins can change data for users other than themselves. | |
54 | |
55 ### Example usage | |
56 | |
57 Here follows some example usage using `curl`. | |
58 | |
59 Get your account details: | |
60 | |
61 curl http://prosody.local:5280/data/accounts -u user@example.com:secr1t | |
62 {"password":"secr1t"} | |
63 | |
64 Set someones account details: | |
65 | |
66 curl -X PUT http://prosody.local:5280/data/example.com/user/accounts -u admin@host:r00tp4ssw0rd --header 'Content-Type: application/json' --data-binary '{"password":"changeme"}' | |
67 | |
68 ### Client library | |
69 | |
70 - https://metacpan.org/module/Prosody::Mod::Data::Access | |
71 | |
72 ### TODO | |
73 | |
74 - Use `Accept` header. | |
5007
34fb3d239ac1
*/README: Update compatibility info of modules still using legacy is_admin API
Matthew Wild <mwild1@gmail.com>
parents:
1803
diff
changeset
|
75 |
34fb3d239ac1
*/README: Update compatibility info of modules still using legacy is_admin API
Matthew Wild <mwild1@gmail.com>
parents:
1803
diff
changeset
|
76 Compatibility |
34fb3d239ac1
*/README: Update compatibility info of modules still using legacy is_admin API
Matthew Wild <mwild1@gmail.com>
parents:
1803
diff
changeset
|
77 ============= |
34fb3d239ac1
*/README: Update compatibility info of modules still using legacy is_admin API
Matthew Wild <mwild1@gmail.com>
parents:
1803
diff
changeset
|
78 |
34fb3d239ac1
*/README: Update compatibility info of modules still using legacy is_admin API
Matthew Wild <mwild1@gmail.com>
parents:
1803
diff
changeset
|
79 ------- -------------- |
34fb3d239ac1
*/README: Update compatibility info of modules still using legacy is_admin API
Matthew Wild <mwild1@gmail.com>
parents:
1803
diff
changeset
|
80 trunk Doesn't work (uses is_admin) |
34fb3d239ac1
*/README: Update compatibility info of modules still using legacy is_admin API
Matthew Wild <mwild1@gmail.com>
parents:
1803
diff
changeset
|
81 0.12 Works? |
34fb3d239ac1
*/README: Update compatibility info of modules still using legacy is_admin API
Matthew Wild <mwild1@gmail.com>
parents:
1803
diff
changeset
|
82 ------- -------------- |