{
  "$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
}
