mod_pubsub_post/README.markdown
author Matthew Wild <mwild1@gmail.com>
Fri, 23 Sep 2022 22:41:15 +0100
changeset 5058 62480053c87b
parent 4965 18774cc621d6
permissions -rw-r--r--
mod_cloud_notify_encrypted: Additional debug logging when enabling/skipping
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3509
106b4ae4469b mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents: 3507
diff changeset
     1
---
3510
7b1eede1a840 mod_pubsub_post/README: Set stage label to stable
Kim Alvefur <zash@zash.se>
parents: 3509
diff changeset
     2
labels:
7b1eede1a840 mod_pubsub_post/README: Set stage label to stable
Kim Alvefur <zash@zash.se>
parents: 3509
diff changeset
     3
- 'Stage-Stable'
3509
106b4ae4469b mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents: 3507
diff changeset
     4
summary: Publish to PubSub nodes from via HTTP POST/WebHooks
106b4ae4469b mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents: 3507
diff changeset
     5
---
106b4ae4469b mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents: 3507
diff changeset
     6
3104
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
# Introduction
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
3509
106b4ae4469b mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents: 3507
diff changeset
     9
This module is a fairly generic WebHook receiver that lets you easily
106b4ae4469b mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents: 3507
diff changeset
    10
publish data to PubSub using a HTTP POST request. The payload can be
106b4ae4469b mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents: 3507
diff changeset
    11
Atom feeds, arbitrary XML, or arbitrary JSON. The type should be
106b4ae4469b mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents: 3507
diff changeset
    12
indicated via the `Content-Type` header.
3104
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    13
3723
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    14
-   JSON data is wrapped in a [XEP-0335] container.
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    15
-   An Atom feed may have many `<entry>` and each one is published as
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    16
    its own PubSub item.
4640
6bcccc63b542 mod_pubsub_post: fix incorrect claim
Jonas Schäfer <jonas@wielicki.name>
parents: 4556
diff changeset
    17
-   Other XML is simply published to the item with ID `current`.
3723
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    18
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    19
## JSON example
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    20
3104
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
``` {.bash}
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    22
curl http://localhost:5280/pubsub_post/princely_musings \
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    23
    -H "Content-Type: application/json" \
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
    --data-binary '{"musing":"To be, or not to be: that is the question"}'
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    25
```
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    26
3723
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    27
## Atom example
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    28
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    29
``` {.bash}
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    30
curl http://localhost:5280/pubsub_post/princely_musings \
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    31
    -H "Content-Type: application/xml" \
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    32
    --data-binary '<feed xmlns="http://www.w3.org/2005/Atom">
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    33
        <entry><title>Hello</title></entry></feed>'
4556
c87181a98f29 mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents: 3723
diff changeset
    34
```
3723
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    35
4556
c87181a98f29 mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents: 3723
diff changeset
    36
## Simple form-data
c87181a98f29 mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents: 3723
diff changeset
    37
c87181a98f29 mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents: 3723
diff changeset
    38
``` {.bash}
c87181a98f29 mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents: 3723
diff changeset
    39
curl http://localhost:5280/pubsub_post/princely_musings \
c87181a98f29 mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents: 3723
diff changeset
    40
    --data musing="To be, or not to be: that is the question"
3723
a6db99c1420a mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents: 3510
diff changeset
    41
```
3157
e0de1fdbc80a mod_pubsub_post/README: Describe what happens to different data types
Kim Alvefur <zash@zash.se>
parents: 3156
diff changeset
    42
3104
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    43
# Configuration
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    44
3507
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    45
All settings are optional.
3104
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    46
3507
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    47
## Actor identification
3104
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    48
3507
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    49
First we have to figure out who is making the request.
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    50
This is configured on a per-node basis like this:
3505
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    51
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    52
``` {.lua}
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    53
-- Per node secrets
3507
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    54
pubsub_post_actors = {
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    55
    princely_musings = "hamlet@denmark.lit"
3505
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    56
}
3507
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    57
pubsub_post_default_actor = "nobody@nowhere.invalid"
3505
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    58
```
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    59
3507
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    60
`pubsub_post_default_actor` is used when trying to publish to a node
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    61
that is not listed in `pubsub_post_actors`. Otherwise the IP address
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    62
of the connection is used.
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    63
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    64
## Authentication
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    65
3505
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    66
[WebSub](https://www.w3.org/TR/2018/REC-websub-20180123/) [Authenticated
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    67
Content
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    68
Distribution](https://www.w3.org/TR/2018/REC-websub-20180123/#authenticated-content-distribution)
3507
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    69
authentication is used.
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    70
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    71
``` {.lua}
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    72
pubsub_post_secrets = {
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    73
    princely_musings = "shared secret"
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    74
}
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    75
pubsub_post_default_secret = "default secret"
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    76
```
3505
1df139b157fb mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents: 3260
diff changeset
    77
3507
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    78
`pubsub_post_default_secret` is used when trying to publish to a node
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    79
that is not listed in `pubsub_post_secrets`. Otherwise the request
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    80
proceeds with the previously identified actor.
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    81
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    82
::: {.alert .alert-danger}
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    83
If configured without a secret and a default actor that has permission
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    84
to create nodes the service becomes wide open.
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    85
:::
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    86
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    87
## Authorization
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    88
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    89
Authorization is handled via pubsub affiliations. Publishing requires an
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    90
affiliation with the _publish_ capability, usually `"publisher"`.
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    91
882180b459a0 mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents: 3506
diff changeset
    92
### Setting up affiliations
3260
0992c0398783 mod_pubsub_post/README: Add a heading for affiliation related text
Kim Alvefur <zash@zash.se>
parents: 3157
diff changeset
    93
3156
882f7d5c3ce8 mod_pubsub_post/README: Affiliation management in trunk now
Kim Alvefur <zash@zash.se>
parents: 3155
diff changeset
    94
Prosodys PubSub module supports [setting affiliations via
4965
18774cc621d6 mod_pubsub_post/README: Update references to trunk with release numbers
Kim Alvefur <zash@zash.se>
parents: 4846
diff changeset
    95
XMPP](https://xmpp.org/extensions/xep-0060.html#owner-affiliations),
18774cc621d6 mod_pubsub_post/README: Update references to trunk with release numbers
Kim Alvefur <zash@zash.se>
parents: 4846
diff changeset
    96
since 0.11.0, so affiliations can be configured with a capable client.
3104
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    97
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    98
It can however be done from another plugin:
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    99
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   100
``` {.lua}
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   101
local mod_pubsub = module:depends("pubsub");
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   102
local pubsub = mod_pubsub.service;
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   103
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   104
pubsub:create("princely_musings", true);
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   105
pubsub:set_affiliation("princely_musings", true, "127.0.0.1", "publisher");
0422fb55cc37 mod_pubsub_post: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   106
```
4846
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   107
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   108
## Data mappings
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   109
4965
18774cc621d6 mod_pubsub_post/README: Update references to trunk with release numbers
Kim Alvefur <zash@zash.se>
parents: 4846
diff changeset
   110
The datamapper library added in 0.12.0 allows posting JSON and having it
4846
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   111
converted to XML based on a special JSON Schema.
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   112
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   113
``` json
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   114
{
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   115
   "properties" : {
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   116
      "content" : {
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   117
         "type" : "string"
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   118
      },
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   119
      "title" : {
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   120
         "type" : "string"
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   121
      }
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   122
   },
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   123
   "type" : "object",
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   124
   "xml" : {
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   125
      "name" : "musings",
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   126
      "namespace" : "urn:example:princely"
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   127
   }
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   128
}
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   129
```
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   130
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   131
And in the Prosody config file:
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   132
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   133
``` lua
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   134
pubsub_post_mappings = {
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   135
    princely_musings = "musings.json";
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   136
}
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   137
```
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   138
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   139
Then, POSTing a JSON payload like
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   140
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   141
``` json
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   142
{
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   143
   "content" : "To be, or not to be: that is the question",
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   144
   "title" : "Soliloquy"
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   145
}
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   146
```
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   147
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   148
results in a payload like
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   149
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   150
``` xml
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   151
<musings xmlns="urn:example:princely">
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   152
  <title>Soliloquy</title>
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   153
  <content>To be, or not to be: that is the question</content>
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   154
</musings>
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   155
```
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   156
8d4b91a703af mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents: 4640
diff changeset
   157
being published to the node.