diff --git a/README.md b/README.md index ad87dd0..643ac27 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,22 @@ Lexicons are strict defintions of the data structures and procedures that make up an Atmospheric service's interface. You can learn more in the AT Protocol's [documentation on lexicons](https://atproto.com/lexicons). -### Lexicon List +### Records - [signal.json](./signal.json): an upvote is stored as a signal. Upvotes apply to any URI: atmosphere `at-uri`s, or plain http(s) links from the open web. +- [settings.json](./settings.json): a viewer's device preferences (theme, feed default, fonts, thin mode, and so on), stored as a singleton record (`rkey` always `self`) in their own repo so they follow the account across browsers and devices. + - I like the idea of persisting settings in a record, but it does also require addition-only, given how lexicons work. + + ### Procedures +- [toggleFollow.json](./toggleFollow.json): a follow (`app.bsky.graph.follow`) can be toggled on or off, the same way an upvote can. Served by HappyView as a procedure; the profile page's follow button calls it. - [toggleSignal.json](./toggleSignal.json): an upvote can be toggled on or off. Served by HappyView as a procedure; the site's upvote button calls it. +- [putSettings.json](./putSettings.json): upserts the caller's `at.upvote.settings` record. Served by HappyView as a procedure; the settings sync module calls it on every change. -### queries +### Queries - [getSignals.json](./getSignals.json): query for signals. Lists indexed signals newest first, optionally filtered by account. Served by HappyView (via a small Lua script) over the `at.upvote.signal` collection. - [resolveDid.json](./resolveDid.json): query resolving a DID to its current, bidirectionally verified handle. Served by HappyView (via a small Lua script) from the identity layer, so clients need no identity infrastructure of their own. - [getVerifications.json](./getVerifications.json): query for the `app.bsky.graph.verification` records indexed from the network that name an account as their subject. Deliberately policy-free; it reports what exists, and callers apply their own trust in verifiers and their own validity rules (the app checks the pinned handle against the account's current one). - -- [getVerifierRecords.json](./getVerifierRecords.json): the by-verifier twin of `getVerifications`: every indexed verification record a VERIFIER has issued. Lets a consumer with a small trusted-verifier set materialize the entire record path in a handful of requests (which is exactly what this server does) instead of asking once per subject. Same policy-free stance. +- [getVerifierRecords.json](./getVerifierRecords.json): the by-verifier twin of `getVerifications`: every indexed verification record a VERIFIER has issued. Lets a consumer with a small trusted-verifier set materialize the entire record path in a handful of requests (which is exactly what this server does) instead of asking once per subject. - [getListMembers.json](./getListMembers.json): query for the `app.bsky.graph.listitem` records indexed from the network that belong to a list; this is how the app resolves an org's published trusted-verifier list. -- [getProfiles.json](./getProfiles.json): batched display data: each DID's `app.bsky.actor.profile` record (index-first, fetching through to the account's repo on a miss) plus its current, bidirectionally verified handle, up to 25 accounts per round trip. -- [getRecords.json](./getRecords.json): batched record reads by at-uri (index-first, fetch-through on miss), up to 25 per round trip; this is how subject records (Bluesky posts, standard.site documents and their publications) resolve. -- [toggleFollow.json](./toggleFollow.json): a follow (`app.bsky.graph.follow`) can be toggled on or off, the same way an upvote can. Served by HappyView as a procedure; the profile page's follow button calls it. -- [settings.json](./settings.json): a viewer's device preferences (theme, feed default, fonts, thin mode, and so on), stored as a singleton record (`rkey` always `self`) in their own repo so they follow the account across browsers and devices. -- [putSettings.json](./putSettings.json): upserts the caller's `at.upvote.settings` record. Served by HappyView as a procedure; the settings sync module calls it on every change. \ No newline at end of file +- [getProfiles.json](./getProfiles.json): query for batched display data: each DID's `app.bsky.actor.profile` record (index-first, fetching through to the account's repo on a miss) plus its current, bidirectionally verified handle, up to 25 accounts per round trip. +- [getRecords.json](./getRecords.json): query for batched record reads by at-uri (index-first, fetch-through on miss), up to 25 per round trip; this is how subject records (Bluesky posts, standard.site documents and their publications) resolve. \ No newline at end of file