app.zeens.scheduledPost
A post waiting to be published. Holds the finished post record and its postMeta exactly as they will be written, so publishing is a copy and nothing is recomputed. Lives on the author's own PDS rather than on Zeens' servers; the images are uploaded at scheduling time and this record keeps them referenced until publish. NOT PRIVATE: like every repo record it is publicly readable before publishAt. Deliberately absent from the AppView's lexicons and firehose collections, so it is never indexed as content.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | zeens.app |
| Indexed |
Checks
Valid Lint pass{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "A post waiting to be published. Holds the finished post record and its postMeta exactly as they will be written, so publishing is a copy and nothing is recomputed. Lives on the author's own PDS rather than on Zeens' servers; the images are uploaded at scheduling time and this record keeps them referenced until publish. NOT PRIVATE: like every repo record it is publicly readable before publishAt. Deliberately absent from the AppView's lexicons and firehose collections, so it is never indexed as content.",
"key": "tid",
"record": {
"properties": {
"c2pa": {
"description": "The app.zeens.c2pa#credential entries, if any, written as that record's images at publish time.",
"items": {
"type": "unknown"
},
"maxLength": 4,
"type": "array"
},
"collection": {
"description": "Where the post is written: Bluesky, or Zeens-only.",
"format": "nsid",
"knownValues": [
"app.bsky.feed.post",
"app.zeens.post"
],
"type": "string"
},
"collections": {
"description": "Collections the post joins once it exists. Each item's rkey is minted at scheduling time so adding it is idempotent.",
"items": {
"ref": "#scheduledCollection",
"type": "ref"
},
"maxLength": 20,
"type": "array"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"meta": {
"description": "The app.zeens.postMeta record body, if any. post and createdAt are replaced at publish time.",
"type": "unknown"
},
"post": {
"description": "The post record body. createdAt is replaced with the publish time.",
"type": "unknown"
},
"publishAt": {
"description": "When to publish. The worker reads this from the record at publish time, so editing it here is how a post is rescheduled.",
"format": "datetime",
"type": "string"
},
"rkey": {
"description": "The rkey the post and its postMeta are written at. Minted at scheduling time so a cross-link URL in the caption is correct in advance, and so publishing twice fails instead of posting twice.",
"format": "record-key",
"type": "string"
}
},
"required": [
"publishAt",
"collection",
"rkey",
"post",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"scheduledCollection": {
"properties": {
"rkey": {
"description": "The rkey the app.zeens.collectionItem is written at.",
"format": "record-key",
"type": "string"
},
"uri": {
"description": "The app.zeens.collection to join.",
"format": "at-uri",
"type": "string"
}
},
"required": [
"uri",
"rkey"
],
"type": "object"
}
},
"id": "app.zeens.scheduledPost",
"lexicon": 1
}