diff options
Diffstat (limited to 'extra/adenosine.1.scdoc')
-rw-r--r-- | extra/adenosine.1.scdoc | 168 |
1 files changed, 161 insertions, 7 deletions
diff --git a/extra/adenosine.1.scdoc b/extra/adenosine.1.scdoc index 2934e19..2c55801 100644 --- a/extra/adenosine.1.scdoc +++ b/extra/adenosine.1.scdoc @@ -1,4 +1,4 @@ -adenosine(1) "adenosine Client Tool Manual Page" +adenosine(1) "adenosine CLI Client Manual Page" # NAME @@ -10,14 +10,122 @@ adenosine [OPTIONS] <COMMAND> <ARGS> # DESCRIPTION -TODO +This is a simple, enthusiast-grade CLI client for the work-in-progress AT +Protocol (atproto.com). It is an entirely "delegated" client, which means that +it does not store or cache any user content locally; everything works by making +HTTP/XRPC requests to a Personal Data Server (PDS), which is usually a remote +service. + +The only real utility of this tool currently is messing around with prototype +implementations, possibly while developing them. + +This client does not currently do any schema validation of Lexicons, either at +compile time or runtime (eg, dynamically fetching Lexicons). The Bluesky +Lexicon (bsky.app) is partially supported with helper commands. + +# FIELD SYNTAX + +Several commands accept generic key/value fields which are passed through as +either query parameters or combined together in to a request body JSON object. +Escaping and other corner-cases aren't handled. + +*==* + Query parameter. Key and Value both passed as strings. + +*=* + Body fields, combined together as a JSON object. Keys are strings, values are parsed as JSON with fall-through to string type. + +For example, the argument list *limit==25 title="regarding documentation" year=2022 tags='["blue", "green"]'* +would be interpreted as a single query parameter "limit" with value "25", and a +JSON object with keys "title" (string value), "year" (number value), "tags" +(array of strings). # COMMANDS -## Other Commands +*status* + Summarizes configuration, and (TODO) connection and authentication to the API server. Useful for debugging. + +*describe* [name] + Prints repository description fetched from PDS + +*resolve* <name> + Has PDS resolve username to a DID + +## Generic XRPC Requests + +It is possible to construct and submit a generic XRPC request to the PDS, and +prints any response.See field syntax section above about query parameters and +body fields. Body fields only used for "post" requests. + +*xrpc* <"get"|"post"> <nsid> [fields]+ + +## Generic Record Interaction + +*ls* <at-uri> + List either collections under a repository, or records under a collection + +*get* <at-uri> + Fetch and print a single record + +*create* <collection> [fields]... + Construct and create a generic record, printing the resulting AT-URI and CID + +*update* <at-uri> [fields]... + Fetch record, update fields, "put" back to same record path + +*delete* <at-uri> + Delete a single record from repository + +## Bluesky (bsky.app) + +*bsky feed* + Fetch the home feed, or account feed for a specific user + +*bsky follow* + Create a 'follow' record for the target by AT URI + +*bsky like* + Create a 'like' record for the target by AT URI + +*bsky notifications* + Fetch notification feed - *status* [--json] - Summarizes connection and authentication to the API server. Useful for debugging +*bsky post* + Create a new 'post' record + +*bsky profile* + Display a profile record (or self if not provided) + +*bsky repost* + Create a 'repost' record for the target by AT URI + +*bsky search-users* + Query by partial username + + +## Account Management + +*account register --email <email> --password <password> --username <username>* + +*account info* + Fetches account metadata for the current session + +*account login --password <password> --username <username>* + Create a new authenticated session + +*account logout* + Deletes the current login session + +## Raw Repository Management + +*repo export [did]* + Dump raw binary repository as CAR format to stdout + +*repo import [did]* + Read raw binary repository as CAR format from stdin, and import to PDS + +*repo root [did]* + Get the current 'root' commit for a DID # OPTIONS @@ -35,6 +143,52 @@ TODO *--auth-token <auth-token>* [env: ATP_AUTH_TOKEN] -# EXAMPLES +# GETTING STARTED + +To start interacting with a PDS, set the `ATP_HOST` environment variable. Then +either register a test account, or create a new session for an existing +account, and save the JWT token to the `ATP_AUTH_TOKEN`: + +``` +# default port for bluesky-social/atproto implementation +export ATP_HOST=http://localhost:2583 + +# register a new account +adenosine account register -u voltaire.test -p bogus -e voltaire@example.com +{ + "did": "did:plc:yqtuksvatmmgngd5nkkw75hn", + "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjMwNn0.MMQa4JIQdwvhy-rjJ0kO-z8-KdoOL0Lto9JtOkK-lwE", + "username": "voltaire.test" +} + +export ATP_AUTH_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjMwNn0.MMQa4JIQdwvhy-rjJ0kO-z8-KdoOL0Lto9JtOkK-lwE + +# to clear the auth token env variable +unset ATP_AUTH_TOKEN + +# create a new session (login) for existing account +adenosine account login -u voltaire.test -p bogus +{ + "did": "did:plc:yqtuksvatmmgngd5nkkw75hn", + "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjQxNX0.j2wcF1g9NxT_1AvYRiplNf_jtK6S81y3L38AkcBwOqY", + "name": "voltaire.test" +} + +export ATP_AUTH_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjQxNX0.j2wcF1g9NxT_1AvYRiplNf_jtK6S81y3L38AkcBwOqY +``` + +You could save the `ATP_HOST` and `ATP_AUTH_TOKEN` values in `~/.bashrc` so you +don't need to enter them every time. + +Now you can start posting and poking around: + +``` +adenosine bsky post "gruel again for breakfast" +{ + "cid": "bafyreig2aqlsg4arslck64wbo2hnhe6k2a4z3z2sjfzh3uapv3a4zjld7e", + "uri": "at://did:plc:yqtuksvatmmgngd5nkkw75hn/app.bsky.post/3jg5zkr322c2a" +} -TODO +adenosine ls at://voltaire.test +app.bsky.post +``` |