Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Connect a Lemmy client

Plamenu provides a Lemmy-compatible API at /api/v3, targeting the lemmy-js-client 0.19.11 contract. NodeInfo identifies the server as plamenu. A client that chooses its API from that value must recognize Plamenu or offer manual backend selection. Photon needs this recognition change.

Supported operations

AreaOperations
AccountsLogin, registration, password and profile changes, account deletion
DiscoverySite information, people, search, and object resolution
CommunitiesList, create, edit, follow, block, and moderate
Posts and commentsList, create, edit, delete, vote, and save
InboxReplies, mentions, private messages, unread counts, and read state
ReportsPost/comment reports, moderator listing, and resolution
MediaPictrs upload, retrieval, and deletion; account and admin media lists
Custom emojiCreate, edit, and delete
AdministrationSite settings, registration approval, suspension, administrator roles, and purges

These operations use Plamenu’s permissions, visibility, and federation rules. Errors use Lemmy’s { "error": "..." } format. Requests for settings with no Plamenu equivalent are rejected.

Differences that affect clients

  • Entity IDs are stable signed 32-bit aliases. Native Plamenu IDs and ActivityPub URLs remain unchanged; clients must use the IDs returned by /api/v3.
  • Account deletion requires delete_content=true. Restore requests for deleted or removed content are unsupported.
  • Editing a post cannot change its external URL or custom thumbnail.
  • Post lists use chronological Plamenu timelines for every requested Lemmy sort value. Lemmy ranking modes are not implemented.
  • Private messages are Plamenu direct conversations. Changing one message’s read state changes the state reported for its conversation.
  • The modlog API, private-message reports, and some notification, language, flair, poll, metadata, and vote-list APIs are not implemented.

Testing a client

Router tests are in crates/server/tests/lemmy_api.rs. They cover account, content, media, moderation, and ID round trips, including persistence across a router restart. Run them with:

./dev test -p plamenu --test lemmy_api

For client testing, check backend selection first, then login, list/detail navigation, posting and editing, inbox state, and any moderation actions the client offers. Confirm the resulting state in Plamenu as well as the client’s response to API errors.