dokuwiki
dokuwiki
contains codeDokuWiki JSON-RPC API — wiki pages, media files, search, ACL management, and user administration
Source: DokuWiki Remote API
Coverage
94% (31 of ~33 endpoints)
Focus: pages, media, search, ACL, user management, wiki metadata
Missing: plugin-specific methods beyond acl and usermanager
Setup
- Ensure the Remote API is enabled in DokuWiki: Admin → Configuration → Authentication → enable 'remote' option
- Optionally restrict remote access: set 'remoteuser' to limit which users/groups can use the API
- Use an existing DokuWiki user account with appropriate permissions
- The API uses HTTP Basic Authentication with your DokuWiki username and password
Environment variable: CREDENTIAL_DOKUWIKI_USERNAME and CREDENTIAL_DOKUWIKI_PASSWORD
DokuWiki is self-hosted. Replace the URL with your instance address. The JSON-RPC endpoint is at /lib/exe/jsonrpc.php. All API methods use POST. Page IDs use colon-separated namespaces (e.g. 'wiki:syntax', 'namespace:page').
Install
Add to your backends.yaml:
- name: dokuwiki
transport: rest
dadl: /app/dadl/dokuwiki.dadl
url: "https://your-wiki.example.com/lib/exe/jsonrpc.php"
credentials:
dokuwiki_username: "${CREDENTIAL_DOKUWIKI_USERNAME}"
dokuwiki_password: "${CREDENTIAL_DOKUWIKI_PASSWORD}"
Set the credential:
CREDENTIAL_DOKUWIKI_USERNAME and CREDENTIAL_DOKUWIKI_PASSWORD=your-token-here Tools (30)
POST get_api_version Get the DokuWiki JSON-RPC API version number POST get_wiki_version Get the DokuWiki software version string POST get_wiki_title Get the wiki title POST get_wiki_time Get the current server Unix timestamp POST who_am_i Get details about the currently authenticated user (login, name, email, groups, admin/manager status) POST acl_check Check ACL permissions for a page or media file. Returns permission level (0=none, 1=read, 2=edit, 4=create, 8=upload, 16=delete, 255=admin) POST list_pages List all pages in a namespace. Returns page ID, revision, modification time, and size for each page. POST search_pages Full-text search across all wiki pages. Returns matching pages with snippets. POST get_recent_page_changes Get recently changed pages. Returns page ID, revision timestamp, author, and summary for each change. POST get_page Get the raw wiki syntax content of a page. Use getPageHTML for rendered HTML instead. POST get_page_html Get the rendered HTML of a page POST get_page_info Get metadata about a page (last modified, author, locked status) POST get_page_history Get the revision history of a page. Returns list of revisions with timestamp, author, summary, and size. POST get_page_links Get all links contained in a page (internal and external) POST get_page_backlinks Get all pages that link to the specified page POST save_page Create or update a page. Replaces the entire page content with the provided text. POST append_page Append text to an existing page without replacing existing content POST lock_pages Lock pages to prevent concurrent editing POST unlock_pages Unlock previously locked pages POST list_media List media files in a namespace. Returns file ID, size, modification time, and permissions. POST get_recent_media_changes Get recently changed media files POST get_media Download a media file as base64-encoded content POST get_media_info Get metadata about a media file (size, modification time, permissions) POST save_media Upload a media file (base64-encoded) POST delete_media Permanently delete a media file POST list_acls List all ACL rules. Requires admin permissions. POST add_acl Add an ACL rule. Permission levels: 0=none, 1=read, 2=edit, 4=create, 8=upload, 16=delete, 255=admin POST delete_acl Remove an ACL rule POST create_user Create a new DokuWiki user account. Requires admin permissions. POST delete_user Permanently delete user accounts. Requires admin permissions. Composites (3) ⚠ contains code
FN page_search_and_replace Replace all occurrences of a literal substring in a wiki page and save it. Internally: get_page → string replace → save_page. The full page content never leaves the ToolMesh server; only { success, replacements } is returned. The search is a literal match (no regex).
FN page_append_section Insert content at the end of an existing section, before the next heading of equal or higher level. Useful for adding material between e.g. section 6.2 and 7 — which append_page cannot do because it only appends to EOF. Internally: get_page → parse headings → splice → save_page. The full page content never leaves the ToolMesh server.
FN chunked_save_page Stateful chunked save: buffers text chunks server-side in a hidden draft page and writes the assembled content to the target page in a single revision when finalized.
Workflow:
1. First chunk: chunk_index=0 (resets the buffer for this session_id).
2. Middle chunks: chunk_index=1..N-2 (each appended to the buffer).
3. Final chunk: chunk_index=N-1, finalize=true
— assembles buffer, writes target page in ONE revision, deletes draft.
Use this when the per-call payload of execute_code is too small to fit the full page text in a single save_page call (e.g. when the calling transport limits the size of tool-call arguments). Each call carries only one chunk so the per-call payload stays small, while the target page receives one clean revision.
All intermediate buffer operations (draft create, chunk appends, draft delete) are flagged as DokuWiki minor edits, so they are hidden from the default Recent Changes view. Only the final write to the target page surfaces — the noise stays out of the wiki's change history.
Caveats:
- session_id must be unique per upload — collisions corrupt the buffer.
- Abandoned sessions leave a draft at _chunked_uploads:<session_id>;
re-using the same session_id with chunk_index=0 cleans it up.
- Chunks must arrive in order; the composite does not reorder them.