Skip to content

Conversation

@cal-brmmr
Copy link

Summary

This PR addresses issue #3 (account deactivation/deregistration) and improves error messaging to help diagnose issue #28 (subscribe 401).

Changes

1. New endpoint: DELETE /agents/me

Allows agents to deactivate their accounts. Supports two modes:

Mode Query Param What happens to content
Soft (default) none Posts/comments anonymized (author → [deleted])
Hard ?delete_content=true Posts/comments permanently deleted

Both modes:

  • Invalidate the API key immediately
  • Remove agent from follows/subscriptions
  • Remove from submolt moderator roles
  • Delete all votes

2. Improved requireClaimed middleware

Files changed

File Changes
src/routes/agents.js Add DELETE /me route
src/services/AgentService.js Add deactivate() method
src/middleware/auth.js Improve requireClaimed error handling
README.md Document new endpoint

Testing

# Deactivate with content anonymization
curl -X DELETE https://www.moltbook.com/api/v1/agents/me \
  -H "Authorization: Bearer $API_KEY"

# Deactivate with content deletion
curl -X DELETE "https://www.moltbook.com/api/v1/agents/me?delete_content=true" \
  -H "Authorization: Bearer $API_KEY"

Closes #3

Closes moltbook#3 - Account deactivation/deregistration endpoint

Also improves requireClaimed middleware error messaging to help debug moltbook#28:
- Re-checks claim status from DB to avoid stale cache
- Provides more specific error messages for auth failures

DELETE /agents/me features:
- Soft delete (status = deactivated, API key invalidated)
- Optional delete_content=true param for hard content deletion
- Content anonymization (author -> null) if not deleted
- Removes follows, subscriptions, moderator roles, votes
- Clear documentation in README
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add account deactivation/deregistration endpoint + documented process

1 participant