dev.roe.ama
An anonymous question, optionally with a published answer. While unanswered the question text is encrypted server-side (private to roe.dev). Once published, the question is rewritten in plaintext alongside the answer and per-platform URLs.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | roe.dev |
| Indexed |
Checks
Validlarge-stringdefs.main.record.properties.encryptedQuestionmaxLength is over 20 KB. Use a blob for content that large.large-stringdefs.main.record.properties.questionmaxLength is over 20 KB. Use a blob for content that large.unlimited-stringdefs.main.record.properties.statusNo maxLength, maxGraphemes or format limits this string.large-stringdefs.post.properties.textmaxLength is over 20 KB. Use a blob for content that large.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "An anonymous question, optionally with a published answer. While unanswered the question text is encrypted server-side (private to roe.dev). Once published, the question is rewritten in plaintext alongside the answer and per-platform URLs.",
"key": "tid",
"record": {
"properties": {
"answeredAt": {
"format": "datetime",
"type": "string"
},
"backgroundStyle": {
"description": "ID of the background style used to render the image, either a preset name or a serialised custom emoji-and-gradient id. The set of styles is internal to roe.dev.",
"maxLength": 128,
"type": "string"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"encryptedQuestion": {
"description": "AES-256-GCM envelope holding the raw question text. Present iff status=unanswered.",
"maxLength": 500000,
"type": "string"
},
"image": {
"accept": [
"image/*"
],
"maxSize": 5000000,
"type": "blob"
},
"imageDimensions": {
"description": "Pixel dimensions of `image`. Stored alongside because PDS blobs don't carry intrinsic dimensions and Bluesky's image embed needs `aspectRatio`.",
"ref": "community.lexicon.app.defs#aspectRatio",
"type": "ref"
},
"platforms": {
"description": "Which platforms the editor enabled when publishing.",
"ref": "#platforms",
"type": "ref"
},
"posts": {
"description": "Thread of response posts. Each post is the body of one Bluesky-thread item (and one Mastodon status, one LinkedIn comment chain entry, etc).",
"items": {
"ref": "#post",
"type": "ref"
},
"maxLength": 16,
"type": "array"
},
"publishedLinks": {
"description": "Resolved per-platform URLs after publish.",
"ref": "#publishedLinks",
"type": "ref"
},
"question": {
"description": "Plaintext question. Present iff status=answered; the editor decrypts encryptedQuestion at publish time and writes it here so the record is self-contained going forward.",
"maxGraphemes": 50000,
"maxLength": 500000,
"type": "string"
},
"status": {
"knownValues": [
"unanswered",
"answered"
],
"type": "string"
}
},
"required": [
"status",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"platforms": {
"properties": {
"bluesky": {
"default": true,
"type": "boolean"
},
"linkedin": {
"default": true,
"type": "boolean"
},
"mastodon": {
"default": true,
"type": "boolean"
},
"youtubeShorts": {
"default": false,
"type": "boolean"
}
},
"type": "object"
},
"post": {
"description": "One post in the response thread. Mentions reference dev.roe.entity records by AT URI so the publisher can rewrite per-platform handles at publish time.",
"properties": {
"mentions": {
"description": "Strong-refs to dev.roe.entity records. The rkey of each referenced record is the placeholder token used in `text`.",
"items": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"maxLength": 32,
"type": "array"
},
"text": {
"description": "Body text. Plain text with `@<entity-rkey>` placeholders for entity mentions (e.g. `Thanks @abc123def456 for the help`). The placeholder syntax is internal; the publisher swaps them for the right per-platform handle.",
"maxGraphemes": 50000,
"maxLength": 500000,
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"publishedLinks": {
"properties": {
"bluesky": {
"format": "uri",
"type": "string"
},
"linkedin": {
"format": "uri",
"type": "string"
},
"mastodon": {
"format": "uri",
"type": "string"
},
"youtubeShorts": {
"format": "uri",
"type": "string"
}
},
"type": "object"
}
},
"id": "dev.roe.ama",
"lexicon": 1
}