70 lines
2.4 KiB
Markdown
70 lines
2.4 KiB
Markdown
# Peer Paste Plugin
|
|
|
|
`peer.paste` provides temporary, replicated text snippets for the P2NS network.
|
|
|
|
## Overview
|
|
|
|
- Store paste metadata/content in HyperDB.
|
|
- Share via link (`/p/:id`) or API (`/api/pastes/:id/raw`).
|
|
- Supports expiration, burn-after-read, and max-read limits.
|
|
- Includes a websocket-first lightweight web UI with infinite scroll.
|
|
- Supports `text` and `markdown` formats with client preview.
|
|
- Uses encryption by default with optional public mode and optional passphrase-derived mode.
|
|
- Supports bounded inline attachments metadata/payloads.
|
|
|
|
## Routes
|
|
|
|
- `POST /api/pastes` create a new paste
|
|
- `GET /api/pastes` list active pastes
|
|
- `GET /api/pastes/mine` list active pastes owned by local peer
|
|
- `GET /api/pastes/:id` get paste metadata
|
|
- `GET /api/pastes/:id/raw` consume/read paste content
|
|
- `GET /api/pastes/:id/attachments` list attachment metadata
|
|
- `GET /api/pastes/:id/attachments/:attachmentId` get attachment payload
|
|
- `PUT /api/pastes/:id` update paste (owner only; authenticated)
|
|
- `DELETE /api/pastes/:id` delete paste (owner only; authenticated)
|
|
- `GET /api/stats` get aggregate service stats
|
|
- `GET /api/health` lightweight plugin/db health check
|
|
- `POST /api/admin/cleanup` run cleanup immediately (authenticated)
|
|
- `GET /api/docs` interactive API documentation
|
|
- `GET /api/openapi.json` OpenAPI 3 JSON specification
|
|
- `GET /p/:id` human-readable paste page
|
|
|
|
## HyperDB Schema
|
|
|
|
Collection: `@peerpaste/pastes`
|
|
|
|
Fields:
|
|
- `id` (string, key)
|
|
- `content` (string)
|
|
- `format` (string: `text` or `markdown`)
|
|
- `language` (string)
|
|
- `ownerPeerId` (string)
|
|
- `isPublic` (bool)
|
|
- `encryptionMode` (string)
|
|
- `checksum` (string)
|
|
- `attachmentRefs` (stringified JSON array)
|
|
- `destroyOnRead` (bool)
|
|
- `maxReads` (uint)
|
|
- `readCount` (uint)
|
|
- `createdAt` (uint)
|
|
- `expiresAt` (uint)
|
|
|
|
Index:
|
|
- `pastes-by-expiry` on `expiresAt`
|
|
|
|
## Lifecycle
|
|
|
|
- `onInit()` ensures DB readiness and starts hourly cleanup.
|
|
- Cleanup removes expired/consumed pastes and flushes DB.
|
|
- `onShutdown()` clears cleanup interval.
|
|
|
|
## Notes
|
|
|
|
- Content currently replicates via HyperDB, so use reasonable paste size limits.
|
|
- `POST` and `PUT` validate content and enforce a max length.
|
|
- Raw consumption increments read count and can auto-delete on read constraints.
|
|
- The `/api/docs` endpoint provides copy/paste-ready endpoint summaries.
|
|
- The `/api/openapi.json` endpoint can be imported by API tooling.
|
|
- Burn-after-first-read entries are hidden from recent active websocket list views.
|