@@ -70,80 +70,101 @@ This document tracks the implementation status of all AT Protocol XRPC endpoints
7070
7171## TODO Endpoints (Grouped by Priority)
7272
73- ### Migration Support (P1 - Critical)
73+ ### Account Lifecycle (P1 - Critical for Migration )
7474
75- ** Account Lifecycle:**
76- - ` com.atproto.server.createAccount ` - Create deactivated account for migration
77- - ` com.atproto.server.activateAccount ` - Activate account after migration
78- - ` com.atproto.server.deactivateAccount ` - Deactivate old account post-migration
79- - ` com.atproto.server.checkAccountStatus ` - Verify migration progress
75+ For the deactivated account pattern (see ` migration-wizard.md ` ):
8076
81- ** Identity Management (PLC Operations): **
82- - ` com.atproto.identity.getRecommendedDidCredentials ` - Get DID credentials from new PDS
83- - ` com.atproto.identity.requestPlcOperationSignature ` - Request email challenge
84- - ` com.atproto.identity.signPlcOperation ` - Sign PLC operation with email token
85- - ` com.atproto.identity.submitPlcOperation ` - Submit to PLC directory
77+ | Endpoint | Purpose | Notes |
78+ | ---------- | --------- | ------- |
79+ | ` activateAccount ` | Transition deactivated → active | Enables writes, firehose |
80+ | ` deactivateAccount ` | Transition active → deactivated | Disables writes |
81+ | Enhanced ` getAccountStatus ` | Return activation state | Add ` activated ` , ` imported ` fields |
8682
87- ** Data Migration:**
88- - ` com.atproto.repo.listMissingBlobs ` - Identify failed blob imports
83+ ** Deactivation guards needed:**
84+ - Block writes (` createRecord ` , ` putRecord ` , ` deleteRecord ` , ` applyWrites ` ) when deactivated
85+ - Allow reads, ` importRepo ` , ` uploadBlob ` , ` activateAccount `
8986
90- ** Total: 9 endpoints**
87+ ** Total: 2 new endpoints + 1 enhancement **
9188
9289### App Passwords (P2 - Important)
9390
94- - ` com.atproto.server.createAppPassword ` - Create app-specific revocable passwords
95- - ` com.atproto.server.listAppPasswords ` - List all app passwords
96- - ` com.atproto.server.revokeAppPassword ` - Revoke specific app password
91+ | Endpoint | Purpose |
92+ | ----------| ---------|
93+ | ` createAppPassword ` | Create app-specific revocable passwords |
94+ | ` listAppPasswords ` | List all app passwords |
95+ | ` revokeAppPassword ` | Revoke specific app password |
9796
9897** Total: 3 endpoints**
9998
10099### Advanced Sync (P3 - Nice to Have)
101100
102- - ` com.atproto.sync.getBlocks ` - Get specific blocks by CID
103- - ` com.atproto.sync.getLatestCommit ` - Get latest commit without full repo
104- - ` com.atproto.sync.getRecord ` - Get record with merkle proof
101+ | Endpoint | Purpose |
102+ | ----------| ---------|
103+ | ` getBlocks ` | Get specific blocks by CID |
104+ | ` getLatestCommit ` | Get latest commit without full repo |
105+ | ` getRecord ` (sync) | Get record with merkle proof |
105106
106107** Total: 3 endpoints**
107108
108- ## Will NOT Support
109+ ## Not Implementing
110+
111+ ### createAccount
112+
113+ ** Reason:** Account creation happens at deploy time, not via API.
114+
115+ For migration: DID set in env vars, data imported via ` importRepo ` .
116+ For new accounts: Deploy script generates DID, publishes to PLC.
117+
118+ May revisit if tools like Goat require it.
119+
120+ ### PLC Operation Endpoints
121+
122+ | Endpoint | Reason |
123+ | ----------| --------|
124+ | ` getRecommendedDidCredentials ` | Not needed - keys generated at deploy |
125+ | ` requestPlcOperationSignature ` | Handled by old PDS during migration |
126+ | ` signPlcOperation ` | Handled by old PDS during migration |
127+ | ` submitPlcOperation ` | Handled by old PDS during migration |
128+
129+ PLC operations for migration are performed against the ** old** PDS, not the new one.
109130
110131### Multi-User Administration (14 endpoints)
132+
111133** Reason:** Single-user PDS has no admin/user separation
112134
113135All ` com.atproto.admin.* ` endpoints
114136
115137### Moderation (1 endpoint)
138+
116139** Reason:** Single-user PDS doesn't need moderation infrastructure
117140
118141- ` com.atproto.moderation.createReport `
119142
120143### Account Creation & Invites (5 endpoints)
121- ** Reason:** Single-user PDS is pre-configured
122144
123- - ` com.atproto.server.createInviteCode `
124- - ` com.atproto.server.createInviteCodes `
125- - ` com.atproto.server.getAccountInviteCodes `
126- - ` com.atproto.temp.checkSignupQueue `
145+ ** Reason:** Single-user PDS is pre-configured
127146
128- * Exception:* ` createAccount ` will be implemented for migration only
147+ - ` createInviteCode `
148+ - ` createInviteCodes `
149+ - ` getAccountInviteCodes `
150+ - ` checkSignupQueue `
129151
130152### Email Verification & Recovery (6 endpoints)
153+
131154** Reason:** Single-user PDS has no email system
132155
133- - ` com.atproto.server. confirmEmail`
134- - ` com.atproto.server. requestEmailConfirmation`
135- - ` com.atproto.server. requestEmailUpdate`
136- - ` com.atproto.server. updateEmail`
137- - ` com.atproto.server. requestPasswordReset`
138- - ` com.atproto.server. resetPassword`
156+ - ` confirmEmail `
157+ - ` requestEmailConfirmation `
158+ - ` requestEmailUpdate `
159+ - ` updateEmail `
160+ - ` requestPasswordReset `
161+ - ` resetPassword `
139162
140163### Deprecated (2 endpoints)
141164
142165- ` com.atproto.sync.deprecated.getCheckout `
143166- ` com.atproto.sync.deprecated.getHead `
144167
145- ** Will Not Support Total: 28 endpoints**
146-
147168## Proxy Strategy
148169
149170All unimplemented ` app.bsky.* ` endpoints are proxied to ` api.bsky.app ` with service auth. This includes:
@@ -157,19 +178,25 @@ This is intentional - the edge PDS focuses on repository operations and federate
157178
158179## Implementation Phases
159180
160- ### Phase 1: Migration Support (13 endpoints)
161- Enable full account migration to/from this PDS
162- - See ` migration-wizard.md ` for detailed specification
181+ ### Phase 1: Account Lifecycle (2 endpoints)
182+
183+ Enable deactivated account pattern for migration:
184+ - ` activateAccount `
185+ - ` deactivateAccount `
186+ - Deactivation guards on write operations
163187
164188### Phase 2: OAuth Provider
165- Enable ecosystem compatibility with "Login with Bluesky" apps
166- - See ` oauth-provider.md ` for detailed specification
167189
168- ### Phase 3: Enhanced Features (3 endpoints)
169- Multi-device auth with app passwords
190+ Enable ecosystem compatibility with "Login with Bluesky" apps.
191+ See ` oauth-provider.md ` for detailed specification.
192+
193+ ### Phase 3: App Passwords (3 endpoints)
194+
195+ Multi-device auth with revocable app passwords.
170196
171197### Phase 4: Advanced Sync (3 endpoints)
172- Efficient partial sync and merkle proofs
198+
199+ Efficient partial sync and merkle proofs.
173200
174201## Endpoint Coverage by Namespace
175202
0 commit comments