org.passingreads.book.stashBookKey
Stash a book's private key on the appview so the user can interact with the book (drop it, leave a note) from any device without re-scanning the QR. Stashed keys are wiped automatically when a drop event is ingested for that book.
Details · procedure
| Kind | procedure |
|---|---|
| Authority | book.passingreads.org |
| Indexed |
Checks
Validunlimited-stringdefs.main.input.schema.properties.bookIdNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.input.schema.properties.privateKeyNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Stash a book's private key on the appview so the user can interact with the book (drop it, leave a note) from any device without re-scanning the QR. Stashed keys are wiped automatically when a drop event is ingested for that book.",
"errors": [
{
"description": "The supplied privateKey does not derive to the supplied bookId.",
"name": "BookKeyMismatch"
},
{
"description": "The authenticated DID has no PassingReads profile indexed by the appview.",
"name": "ProfileNotFound"
}
],
"input": {
"encoding": "application/json",
"schema": {
"properties": {
"bookId": {
"description": "The book's short ID (as encoded in its QR code).",
"type": "string"
},
"privateKey": {
"description": "Multibase-encoded Ed25519 private key for the book. The appview verifies the key derives to the given bookId.",
"type": "string"
}
},
"required": [
"bookId",
"privateKey"
],
"type": "object"
}
},
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"stashedAt": {
"format": "datetime",
"type": "string"
}
},
"required": [
"stashedAt"
],
"type": "object"
}
},
"type": "procedure"
}
},
"id": "org.passingreads.book.stashBookKey",
"lexicon": 1
}