1# Cocoon
2
3> [!WARNING]
4You should not use this PDS. You should not rely on this code as a reference for a PDS implementation. You should not trust this code. Using this PDS implementation may result in data loss, corruption, etc.
5
6Cocoon is a PDS implementation in Go. It is highly experimental, and is not ready for any production use.
7
8## Implemented Endpoints
9
10> [!NOTE]
11Just because something is implemented doesn't mean it is finished. Tons of these are returning bad errors, don't do validation properly, etc. I'll make a "second pass" checklist at some point to do all of that.
12
13### Identity
14
15- [ ] `com.atproto.identity.getRecommendedDidCredentials`
16- [ ] `com.atproto.identity.requestPlcOperationSignature`
17- [x] `com.atproto.identity.resolveHandle`
18- [ ] `com.atproto.identity.signPlcOperation`
19- [ ] `com.atproto.identity.submitPlcOperation`
20- [x] `com.atproto.identity.updateHandle`
21
22### Repo
23
24- [x] `com.atproto.repo.applyWrites`
25- [x] `com.atproto.repo.createRecord`
26- [x] `com.atproto.repo.putRecord`
27- [x] `com.atproto.repo.deleteRecord`
28- [x] `com.atproto.repo.describeRepo`
29- [x] `com.atproto.repo.getRecord`
30- [x] `com.atproto.repo.importRepo` (Works "okay". You still have to handle PLC operations on your own when migrating. Use with extreme caution.)
31- [x] `com.atproto.repo.listRecords`
32- [ ] `com.atproto.repo.listMissingBlobs`
33
34### Server
35
36- [x] `com.atproto.server.activateAccount`
37- [x] `com.atproto.server.checkAccountStatus`
38- [x] `com.atproto.server.confirmEmail`
39- [x] `com.atproto.server.createAccount`
40- [x] `com.atproto.server.createInviteCode`
41- [x] `com.atproto.server.createInviteCodes`
42- [x] `com.atproto.server.deactivateAccount`
43- [ ] `com.atproto.server.deleteAccount`
44- [x] `com.atproto.server.deleteSession`
45- [x] `com.atproto.server.describeServer`
46- [ ] `com.atproto.server.getAccountInviteCodes`
47- [ ] `com.atproto.server.getServiceAuth`
48- ~~[ ] `com.atproto.server.listAppPasswords`~~ - not going to add app passwords
49- [x] `com.atproto.server.refreshSession`
50- [ ] `com.atproto.server.requestAccountDelete`
51- [x] `com.atproto.server.requestEmailConfirmation`
52- [x] `com.atproto.server.requestEmailUpdate`
53- [x] `com.atproto.server.requestPasswordReset`
54- [ ] `com.atproto.server.reserveSigningKey`
55- [x] `com.atproto.server.resetPassword`
56- ~~[] `com.atproto.server.revokeAppPassword`~~ - not going to add app passwords
57- [x] `com.atproto.server.updateEmail`
58
59### Sync
60
61- [x] `com.atproto.sync.getBlob`
62- [x] `com.atproto.sync.getBlocks`
63- [x] `com.atproto.sync.getLatestCommit`
64- [x] `com.atproto.sync.getRecord`
65- [x] `com.atproto.sync.getRepoStatus`
66- [x] `com.atproto.sync.getRepo`
67- [x] `com.atproto.sync.listBlobs`
68- [x] `com.atproto.sync.listRepos`
69- ~~[ ] `com.atproto.sync.notifyOfUpdate`~~ - BGS doesn't even have this implemented lol
70- [x] `com.atproto.sync.requestCrawl`
71- [x] `com.atproto.sync.subscribeRepos`
72
73### Other
74
75- [ ] `com.atproto.label.queryLabels`
76- [x] `com.atproto.moderation.createReport` (Note: this should be handled by proxying, not actually implemented in the PDS)
77- [x] `app.bsky.actor.getPreferences`
78- [x] `app.bsky.actor.putPreferences`
79
80## License
81
82This project is licensed under MIT license. `server/static/pico.css` is also licensed under MIT license, available at [https://github.com/picocss/pico/](https://github.com/picocss/pico/).