# Community nodes Members can donate a little of their internet connection to the DevPlace community. A donated **node** is a small program on the member's own machine that dials out to DevPlace and, when asked, fetches a public page from a short list of allowed websites on DevPlace's behalf. This is how search reaches sites that block data-centre addresses. - **Opt-in only.** Nobody is enrolled by default. Donating needs an explicit consent that only the account holder can grant or withdraw. - **Not an open proxy.** A node refuses everything that is not on the published allowlist, every port except 80 and 443, and every private or local address. The refusal is enforced on the donor's machine as well as on the server. - **Counted and visible.** Requests and bytes relayed are counted by the server and shown to the donor. The wire protocol, every limit and the allowlist are published as one machine-readable document at `/nodes/spec.json` and rendered on the [Node network protocol](/docs/nodes-protocol.html) page. Every endpoint follows the shared [Conventions & Errors](/docs/conventions.html).
GET /nodes/spec.json Minimal role: Public

Node protocol specification

The single source of truth for the node protocol: version, frames, limits, allowlist and refusal codes.

GET /nodes/devices Minimal role: Member

List your devices

The devices you registered, with their status and when they last connected. Secrets are never listed.

POST /nodes/devices Minimal role: Member

Register a device

Register one client install. The device secret is returned once and cannot be read again.

POST /nodes/devices/{device_uid}/rotate Minimal role: Member

Rotate a device secret

Issue a new secret for one of your devices. The old secret stops working immediately.

POST /nodes/devices/{device_uid}/delete Minimal role: Member

Delete a device

Remove a device. A connected node is disconnected on the next service tick. An administrator may remove any device.

POST /nodes/ticket Minimal role: Member

Exchange a device secret for a socket ticket

The node client calls this with its device secret to get a single-use ticket for `WS /nodes/ws?ticket=`.