PDS Endpoint Comparison: pds.js vs atproto/packages/pds#
Comparison of endpoints and parameters between this implementation and the official AT Protocol PDS.
Endpoints Missing from pds.js#
com.atproto.admin.* (entire namespace missing)#
| Endpoint |
Params |
| deleteAccount |
did |
| disableAccountInvites |
account, note |
| disableInviteCodes |
accounts, codes |
| enableAccountInvites |
account, note |
| getAccountInfo |
did |
| getAccountInfos |
dids |
| getInviteCodes |
cursor, limit, sort |
| getSubjectStatus |
blob, did, uri |
| searchAccounts |
cursor, email, limit |
| sendEmail |
comment, content, recipientDid, senderDid, subject |
| updateAccountEmail |
account, email |
| updateAccountHandle |
did, handle |
| updateAccountPassword |
did, password |
| updateAccountSigningKey |
did, signingKey |
| updateSubjectStatus |
deactivated, subject, takedown |
com.atproto.identity.* (mostly missing)#
| Endpoint |
Params |
Notes |
| getRecommendedDidCredentials |
(none) |
|
| refreshIdentity |
identifier |
|
| requestPlcOperationSignature |
(none) |
|
| resolveDid |
did |
|
| resolveIdentity |
identifier |
|
| signPlcOperation |
alsoKnownAs, rotationKeys, services, token, verificationMethods |
|
| submitPlcOperation |
operation |
|
| updateHandle |
handle |
|
pds.js only implements: resolveHandle
com.atproto.server.* (many missing)#
| Endpoint |
Params |
| activateAccount |
(none) |
| checkAccountStatus |
(none) |
| confirmEmail |
email, token |
| createAccount |
did, email, handle, inviteCode, password, plcOp, recoveryKey, verificationCode, verificationPhone |
| createAppPassword |
name, privileged |
| createInviteCode |
forAccount, useCount |
| createInviteCodes |
codeCount, forAccounts, useCount |
| deactivateAccount |
deleteAfter |
| deleteAccount |
did, password, token |
| deleteSession |
(none) |
| getAccountInviteCodes |
createAvailable, includeUsed |
| getServiceAuth |
aud, exp, lxm |
| listAppPasswords |
(none) |
| requestAccountDelete |
(none) |
| requestEmailConfirmation |
(none) |
| requestEmailUpdate |
(none) |
| requestPasswordReset |
email |
| reserveSigningKey |
did |
| resetPassword |
password, token |
| revokeAppPassword |
name |
| updateEmail |
email, emailAuthFactor, token |
pds.js implements: createSession, getSession, refreshSession, describeServer
com.atproto.sync.* (some missing)#
| Endpoint |
Params |
| getBlocks |
cids, did |
| getHostStatus |
hostname |
| listHosts |
cursor, limit |
| listReposByCollection |
collection, cursor, limit |
| notifyOfUpdate |
hostname |
| requestCrawl |
hostname |
pds.js implements: listRepos, getLatestCommit, getRepoStatus, getRepo, getRecord, getBlob, listBlobs, subscribeRepos
com.atproto.repo.* (some missing)#
| Endpoint |
Params |
| importRepo |
(binary) |
| listMissingBlobs |
cursor, limit |
pds.js implements: createRecord, deleteRecord, putRecord, applyWrites, getRecord, describeRepo, listRecords, uploadBlob
com.atproto.moderation.*#
| Endpoint |
Params |
| createReport |
modTool, reason, reasonType, subject |
com.atproto.temp.* (entire namespace missing)#
| Endpoint |
Params |
| addReservedHandle |
handle |
| checkHandleAvailability |
birthDate, email, handle |
| checkSignupQueue |
(none) |
| dereferenceScope |
scope |
| fetchLabels |
limit, since |
| requestPhoneVerification |
phoneNumber |
| revokeAccountCredentials |
account |
Missing Parameters in Shared Endpoints#
Endpoints that exist in both implementations, but pds.js is missing parameters:
| Endpoint |
pds.js has |
Missing from pds.js |
| repo.createRecord |
collection, record, rkey |
repo, validate, swapCommit |
| repo.deleteRecord |
collection, rkey |
repo, swapCommit, swapRecord |
| repo.putRecord |
collection, rkey, record |
repo, validate, swapCommit, swapRecord |
| repo.applyWrites |
writes |
repo, validate, swapCommit |
| sync.getRepo |
did |
since |
| sync.listBlobs |
did, cursor, limit |
since |
| sync.listRepos |
(none) |
cursor, limit |
| server.createSession |
identifier, password |
allowTakendown, authFactorToken |
Bold = likely important for compatibility
app.bsky.* Coverage#
Both implementations handle app.bsky.* the same way:
| Category |
Endpoints |
Notes |
| Native (stored in PDS) |
actor.getPreferences, actor.putPreferences |
Both implementations |
| Proxied to AppView |
~87 endpoints |
feed., graph., notification.*, etc. |
Custom endpoints specific to this implementation:
| Endpoint |
Purpose |
POST /init |
Initialize PDS with DID/keys |
GET /status |
Health check |
POST /register-did |
Register a DID |
GET /get-registered-dids |
List registered DIDs |
POST /register-handle |
Register a handle |
GET /resolve-handle |
Resolve handle (non-XRPC path) |
POST /forward-event |
Forward sync events to other instances |
GET /repo-info |
Get repository info |
GET /oauth-public-key |
Get OAuth public key |
POST /check-dpop-jti |
DPoP replay protection |
OAuth 2.0 Stack (full implementation)#
| Endpoint |
Purpose |
GET /.well-known/oauth-authorization-server |
OAuth server metadata |
GET /.well-known/oauth-protected-resource |
Protected resource metadata |
GET /oauth/jwks |
JSON Web Key Set |
POST /oauth/par |
Pushed Authorization Request |
GET/POST /oauth/authorize |
Authorization endpoint |
POST /oauth/token |
Token endpoint (with DPoP) |
POST /oauth/revoke |
Token revocation |
Summary#
| Category |
pds.js |
atproto PDS |
| com.atproto.admin.* |
0 |
15 |
| com.atproto.identity.* |
1 |
9 |
| com.atproto.moderation.* |
0 |
1 |
| com.atproto.repo.* |
8 |
10 |
| com.atproto.server.* |
4 |
25 |
| com.atproto.sync.* |
8 |
14 |
| com.atproto.temp.* |
0 |
7 |
| app.bsky.* (native) |
2 |
2 |
| app.bsky.* (proxied) |
~87 |
~87 |
| Total XRPC (native) |
23 |
85 |
| Custom endpoints |
10 |
0 |
| OAuth endpoints |
7 |
7 (via @atproto/oauth-provider) |