{
"id": "net.anisota.lab.redaction",
"defs": {
"main": {
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"source",
"text",
"createdAt"
],
"properties": {
"name": {
"type": "string",
"maxLength": 800,
"description": "Optional title for the piece",
"maxGraphemes": 100
},
"text": {
"type": "string",
"maxLength": 6000,
"description": "The found poem — the words left un-redacted, in reading order",
"maxGraphemes": 1000
},
"author": {
"type": "string",
"maxLength": 512,
"description": "The handle or DID of the source post's author, kept for display and so the backlink reads even if the source can't be re-fetched"
},
"source": {
"type": "string",
"format": "at-uri",
"description": "at-uri of the post whose words were redacted — the piece backlinks to it"
},
"original": {
"type": "string",
"maxLength": 12000,
"description": "A snapshot of the source post's full text, so the piece can still be read if the source post is later deleted or edited",
"maxGraphemes": 2000
},
"redacted": {
"type": "array",
"items": {
"type": "integer"
},
"maxLength": 4096,
"description": "Zero-based indices of the word tokens that were blacked out, so the arrangement can be reopened over the same post text"
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "When the piece was saved"
},
"wordCount": {
"type": "integer",
"description": "Total number of word tokens in the source post text, so the redacted indices stay meaningful"
}
}
},
"description": "A redaction (erasure poetry) piece made in the Anisota Lab's Post Redaction Art studio, where the words of an existing post are blacked out one at a time and the words left standing become a found poem. The record keeps the surviving text, the indices of the words that were redacted (so the piece can be reopened over the same post), and an at-uri pointing back at the post the words were drawn from."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}