org.passingreads.book.stashBookKey

passingreads.org

Documentation

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.

main procedure

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.

Input

Encodingapplication/json
bookId string Required

The book's short ID (as encoded in its QR code).

privateKey string Required

Multibase-encoded Ed25519 private key for the book. The appview verifies the key derives to the given bookId.

Output

Encodingapplication/json
stashedAt stringdatetime Required

An RFC 3339 formatted timestamp.

Errors

BookKeyMismatch The supplied privateKey does not derive to the supplied bookId.
ProfileNotFound The authenticated DID has no PassingReads profile indexed by the appview.
Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://bsky.social)
Enter valid JSON for the request body
View raw schema
{
  "type": "procedure",
  "input": {
    "schema": {
      "type": "object",
      "required": [
        "bookId",
        "privateKey"
      ],
      "properties": {
        "bookId": {
          "type": "string",
          "description": "The book's short ID (as encoded in its QR code)."
        },
        "privateKey": {
          "type": "string",
          "description": "Multibase-encoded Ed25519 private key for the book. The appview verifies the key derives to the given bookId."
        }
      }
    },
    "encoding": "application/json"
  },
  "errors": [
    {
      "name": "BookKeyMismatch",
      "description": "The supplied privateKey does not derive to the supplied bookId."
    },
    {
      "name": "ProfileNotFound",
      "description": "The authenticated DID has no PassingReads profile indexed by the appview."
    }
  ],
  "output": {
    "schema": {
      "type": "object",
      "required": [
        "stashedAt"
      ],
      "properties": {
        "stashedAt": {
          "type": "string",
          "format": "datetime"
        }
      }
    },
    "encoding": "application/json"
  },
  "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."
}

Lexicon Garden

@