comparison mod_data_access/README.markdown @ 1803:4d73a1a6ba68

Convert all wiki pages to Markdown
author Kim Alvefur <zash@zash.se>
date Fri, 28 Aug 2015 18:03:58 +0200
parents
children 34fb3d239ac1
comparison
equal deleted inserted replaced
1802:0ab737feada6 1803:4d73a1a6ba68
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.