High priority fixes: - T0: Profile page now filters comments by namespace (was leaking cross-site) - T1: URI hostnames and namespace names normalized to lowercase (was causing duplicate threads and "stock comments" bug). Includes merge script. - T2: Thread detail API now paginated with SQL-side filtering (was 502 on 267+ reply threads) Features: - T3: GDPR account deletion (tombstone user with scrubbed PII) and data export - T4: Customizable button text and comment labels per namespace - T5: Self-service namespace deletion for owners - T6: @mention notifications with profile links - T7: Webmention receiving endpoint with h-card extraction - T8: Configurable max nesting depth and collapse depth per namespace - T9: AJAX thread title search to prevent duplicates - T10: Browser push notification support (VAPID/service worker) Docs and housekeeping: - T11: Documented thread_uri behavior when moving embeds - T12/T13: Drafted community replies for resolved feature requests - Collapse depth defaults to infinite (load-more disabled unless configured) 364 tests pass, 4 skipped.
2 KiB
T12: Reply to API-only CRUD thread confirming done
Status: resolved
Priority: low
Source: meta 6db01560-7186-11eb-92d6-040140774501
Filed: 2026-02-01
Problem
The original "API-only access to CRUD comments" feature request thread on meta still has Russell's old reply: "No endpoints are currently planned." The JSON API has since been built and deployed.
Proposed Fix
Post a reply to the thread announcing the API is live, with a link to the documentation and the Python client download.
Resolution
Reply drafted below. Ready to post to meta thread 6db01560 using the Python client or API.
Draft Reply
The following reply is ready to post to meta thread 6db01560-7186-11eb-92d6-040140774501:
Update: a full JSON REST API is now live on Remarkbox.
Endpoints available:
GET /api/v1/threads?namespace=example.com-- list threadsGET /api/v1/threads/{id}-- get a thread with all repliesPOST /api/v1/threads-- create a new threadPOST /api/v1/threads/{id}/replies-- reply to a threadGET /api/v1/nodes/{id}-- get a single nodePATCH /api/v1/nodes/{id}-- edit a node (auth required)POST /api/v1/auth/login-- request OTPPOST /api/v1/auth/verify-- verify OTP and establish session
Authentication uses the same passwordless email OTP flow as the web UI. Anonymous posting is also supported when the namespace allows it.
Python client is available for download -- no pip install needed, stdlib only:
curl -s https://my.remarkbox.com/api/v1/clients/python -o remarkbox_client.py
Quick usage:
from remarkbox_client import RemarkboxClient
client = RemarkboxClient("https://my.remarkbox.com")
threads = client.list_threads("meta.remarkbox.com")
Full documentation is in docs/api.md in the Remarkbox repository. Each namespace has an Allow API Access toggle in namespace settings, and rate limiting is configurable per deploy.
Acceptance Criteria
- Reply posted to meta thread
6db01560referencing the API docs and client