> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neuro-tech.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Public publish/subscribe feeds

> Expose an open XMPP PubSub node as RSS and retrieve its XML items over HTTP

Neuron maps XMPP Publish/Subscribe nodes with the `open` access model to a read-only public HTTP surface.

| Resource                        | Result                                         |
| ------------------------------- | ---------------------------------------------- |
| `GET /PubSub/{nodeId}`          | RSS 2.0 feed containing up to 20 recent items. |
| `GET /PubSub/{nodeId}/{itemId}` | Raw XML payload of one item.                   |

Both identifiers are URL-decoded by the server, so encode each path component rather than the complete path.

```js theme={null}
const nodeId = encodeURIComponent("ReleaseNotes");
const feed = await fetch(`https://neuron.example/PubSub/${nodeId}`, {
  headers: { Accept: "application/rss+xml, application/xml;q=0.9" }
});

if (!feed.ok) throw new Error(`Feed failed: ${feed.status}`);
const rss = await feed.text();
```

## Access behavior

* A missing subpath returns `400 Bad Request`.
* An unknown node or item returns `404 Not Found`.
* A node that is not `open` returns `403 Forbidden`.
* Item bodies are returned as XML; the service does not convert arbitrary payloads to JSON.
* The feed orders items by most recent creation time and includes item links, publisher, dates, and stable object GUIDs.

Opening a node is a publication decision, not merely an XMPP configuration detail. Review existing items before changing the access model; previously published payloads can contain identifiers or content unsuitable for the public web.

## Web nodes

A PubSub node can also drive rendered web content. The `/PubSub/` route exposes the source feed/item XML, while a separately configured web-node route can render the information as a site. Keep source payload compatibility and presentation versioning separate.

## Consumer rules

* Treat item XML as untrusted input and disable unsafe external entity processing.
* Use item IDs or feed GUIDs for deduplication.
* Poll with cache validators/backoff; do not assume an event stream.
* Follow item links only on the expected Neuron origin.
* Use authenticated XMPP PubSub for non-public data or publishing operations.
