{ "lexicon": 1, "id": "app.bsky.draft.defs", "defs": { "draftWithId": { "description": "A draft with an identifier, used to store drafts in private storage (stash).", "type": "object", "required": ["id", "draft"], "properties": { "id": { "description": "A TID to be used as a draft identifier.", "type": "string", "format": "tid" }, "draft": { "type": "ref", "ref": "#draft" } } }, "draft": { "description": "A draft containing an array of draft posts.", "type": "object", "required": ["posts"], "properties": { "deviceId": { "type": "string", "description": "UUIDv4 identifier of the device that created this draft.", "maxLength": 100 }, "deviceName": { "type": "string", "description": "The device and/or platform on which the draft was created.", "maxLength": 100 }, "posts": { "description": "Array of draft posts that compose this draft.", "type": "array", "minLength": 1, "maxLength": 100, "items": { "type": "ref", "ref": "#draftPost" } }, "langs": { "type": "array", "description": "Indicates human language of posts primary text content.", "maxLength": 3, "items": { "type": "string", "format": "language" } }, "postgateEmbeddingRules": { "description": "Embedding rules for the postgates to be created when this draft is published.", "type": "array", "maxLength": 5, "items": { "type": "union", "refs": ["app.bsky.feed.postgate#disableRule"] } }, "threadgateAllow": { "description": "Allow-rules for the threadgate to be created when this draft is published.", "type": "array", "maxLength": 5, "items": { "type": "union", "refs": [ "app.bsky.feed.threadgate#mentionRule", "app.bsky.feed.threadgate#followerRule", "app.bsky.feed.threadgate#followingRule", "app.bsky.feed.threadgate#listRule" ] } } } }, "draftPost": { "description": "One of the posts that compose a draft.", "type": "object", "required": ["text"], "properties": { "text": { "type": "string", "maxLength": 10000, "maxGraphemes": 1000, "description": "The primary post content. It has a higher limit than post contents to allow storing a larger text that can later be refined into smaller posts." }, "labels": { "type": "union", "description": "Self-label values for this post. Effectively content warnings.", "refs": ["com.atproto.label.defs#selfLabels"] }, "embedImages": { "type": "array", "items": { "type": "ref", "ref": "#draftEmbedImage" }, "maxLength": 4 }, "embedGallery": { "type": "ref", "ref": "#draftEmbedGallery" }, "embedVideos": { "type": "array", "items": { "type": "ref", "ref": "#draftEmbedVideo" }, "maxLength": 1 }, "embedExternals": { "type": "array", "items": { "type": "ref", "ref": "#draftEmbedExternal" }, "maxLength": 1 }, "embedRecords": { "type": "array", "items": { "type": "ref", "ref": "#draftEmbedRecord" }, "maxLength": 1 } } }, "draftView": { "description": "View to present drafts data to users.", "type": "object", "required": ["id", "draft", "createdAt", "updatedAt"], "properties": { "id": { "description": "A TID to be used as a draft identifier.", "type": "string", "format": "tid" }, "draft": { "type": "ref", "ref": "#draft" }, "createdAt": { "description": "The time the draft was created.", "type": "string", "format": "datetime" }, "updatedAt": { "description": "The time the draft was last updated.", "type": "string", "format": "datetime" } } }, "draftEmbedLocalRef": { "type": "object", "required": ["path"], "properties": { "path": { "type": "string", "description": "Local, on-device ref to file to be embedded. Embeds are currently device-bound for drafts.", "minLength": 1, "maxLength": 1024 } } }, "draftEmbedCaption": { "type": "object", "required": ["lang", "content"], "properties": { "lang": { "type": "string", "format": "language" }, "content": { "type": "string", "maxLength": 10000 } } }, "draftEmbedGallery": { "type": "object", "required": ["items"], "properties": { "items": { "type": "ref", "ref": "#draftEmbedGalleryItems" } } }, "draftEmbedGalleryItems": { "type": "array", "items": { "type": "union", "refs": ["#draftEmbedImage"] }, "maxLength": 20, "description": "The schema-level maxLength of 20 is a future-proof ceiling. Clients should currently enforce a soft limit of 10 items in authoring UIs." }, "draftEmbedImage": { "type": "object", "required": ["localRef"], "properties": { "localRef": { "type": "ref", "ref": "#draftEmbedLocalRef" }, "alt": { "type": "string", "maxGraphemes": 2000 } } }, "draftEmbedVideo": { "type": "object", "required": ["localRef"], "properties": { "localRef": { "type": "ref", "ref": "#draftEmbedLocalRef" }, "alt": { "type": "string", "maxGraphemes": 2000 }, "captions": { "type": "array", "items": { "type": "ref", "ref": "#draftEmbedCaption" }, "maxLength": 20 } } }, "draftEmbedExternal": { "type": "object", "required": ["uri"], "properties": { "uri": { "type": "string", "format": "uri" } } }, "draftEmbedRecord": { "type": "object", "required": ["record"], "properties": { "record": { "type": "ref", "ref": "com.atproto.repo.strongRef" } } } } }