ink.resenha.privateEbook
One per file. Deleting the record lets the account's server delete the file and its cover.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | resenha.ink |
| Indexed |
Checks
Validlarge-bytesdefs.main.record.properties.detailsmaxLength is over 20 KB. Use a blob for content that large.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "One per file. Deleting the record lets the account's server delete the file and its cover.",
"key": "tid",
"record": {
"properties": {
"cover": {
"accept": [
"application/octet-stream"
],
"description": "A cover image for showing the book in a list, encrypted and padded.",
"maxSize": 2000000,
"type": "blob"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"details": {
"description": "The book's format, title, authors and library link, with what's needed to open the file and the cover, encrypted.",
"maxLength": 32000,
"type": "bytes"
},
"file": {
"accept": [
"application/octet-stream"
],
"description": "The book, encrypted and padded.",
"type": "blob"
},
"keyId": {
"description": "Which of the reader's keys encrypted the file. Matches keyId in the account's ink.resenha.ebookKey record.",
"maxLength": 64,
"type": "string"
},
"version": {
"description": "The encryption format. 1 is AES-GCM in 64 KiB chunks, with keys derived by HKDF-SHA256.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"file",
"details",
"keyId",
"version",
"createdAt"
],
"type": "object"
},
"type": "record"
}
},
"description": "A book file the account keeps for reading in Resenha, encrypted on the reader's devices before upload: an EPUB, a PDF or a comic archive. Only the reader's devices hold the key, so the file, its cover and its details can't be read from the account's server. Replaces an ink.resenha.ebook record with the same record key.",
"id": "ink.resenha.privateEbook",
"lexicon": 1
}