town.delve.draft.defs

delve.town

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "draft": {
      "description": "A draft containing an array of draft posts.",
      "properties": {
        "deviceId": {
          "description": "UUIDv4 identifier of the device that created this draft.",
          "maxLength": 100,
          "type": "string"
        },
        "deviceName": {
          "description": "The device and/or platform on which the draft was created.",
          "maxLength": 100,
          "type": "string"
        },
        "langs": {
          "description": "Indicates human language of posts primary text content.",
          "items": {
            "format": "language",
            "type": "string"
          },
          "maxLength": 3,
          "type": "array"
        },
        "postgateEmbeddingRules": {
          "description": "Embedding rules for the postgates to be created when this draft is published.",
          "items": {
            "refs": [
              "town.delve.feed.postgate#disableRule"
            ],
            "type": "union"
          },
          "maxLength": 5,
          "type": "array"
        },
        "posts": {
          "description": "Array of draft posts that compose this draft.",
          "items": {
            "ref": "#draftPost",
            "type": "ref"
          },
          "maxLength": 100,
          "minLength": 1,
          "type": "array"
        },
        "threadgateAllow": {
          "description": "Allow-rules for the threadgate to be created when this draft is published.",
          "items": {
            "refs": [
              "town.delve.feed.threadgate#mentionRule",
              "town.delve.feed.threadgate#followerRule",
              "town.delve.feed.threadgate#followingRule",
              "town.delve.feed.threadgate#listRule"
            ],
            "type": "union"
          },
          "maxLength": 5,
          "type": "array"
        }
      },
      "required": [
        "posts"
      ],
      "type": "object"
    },
    "draftEmbedCaption": {
      "properties": {
        "content": {
          "maxLength": 10000,
          "type": "string"
        },
        "lang": {
          "format": "language",
          "type": "string"
        }
      },
      "required": [
        "lang",
        "content"
      ],
      "type": "object"
    },
    "draftEmbedExternal": {
      "properties": {
        "uri": {
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "uri"
      ],
      "type": "object"
    },
    "draftEmbedGallery": {
      "properties": {
        "items": {
          "ref": "#draftEmbedGalleryItems",
          "type": "ref"
        }
      },
      "required": [
        "items"
      ],
      "type": "object"
    },
    "draftEmbedGalleryItems": {
      "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.",
      "items": {
        "refs": [
          "#draftEmbedImage"
        ],
        "type": "union"
      },
      "maxLength": 20,
      "type": "array"
    },
    "draftEmbedImage": {
      "properties": {
        "alt": {
          "maxGraphemes": 2000,
          "type": "string"
        },
        "localRef": {
          "ref": "#draftEmbedLocalRef",
          "type": "ref"
        }
      },
      "required": [
        "localRef"
      ],
      "type": "object"
    },
    "draftEmbedLocalRef": {
      "properties": {
        "path": {
          "description": "Local, on-device ref to file to be embedded. Embeds are currently device-bound for drafts.",
          "maxLength": 1024,
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "path"
      ],
      "type": "object"
    },
    "draftEmbedRecord": {
      "properties": {
        "record": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        }
      },
      "required": [
        "record"
      ],
      "type": "object"
    },
    "draftEmbedVideo": {
      "properties": {
        "alt": {
          "maxGraphemes": 2000,
          "type": "string"
        },
        "captions": {
          "items": {
            "ref": "#draftEmbedCaption",
            "type": "ref"
          },
          "maxLength": 20,
          "type": "array"
        },
        "localRef": {
          "ref": "#draftEmbedLocalRef",
          "type": "ref"
        }
      },
      "required": [
        "localRef"
      ],
      "type": "object"
    },
    "draftPost": {
      "description": "One of the posts that compose a draft.",
      "properties": {
        "embedExternals": {
          "items": {
            "ref": "#draftEmbedExternal",
            "type": "ref"
          },
          "maxLength": 1,
          "type": "array"
        },
        "embedGallery": {
          "ref": "#draftEmbedGallery",
          "type": "ref"
        },
        "embedImages": {
          "items": {
            "ref": "#draftEmbedImage",
            "type": "ref"
          },
          "maxLength": 4,
          "type": "array"
        },
        "embedRecords": {
          "items": {
            "ref": "#draftEmbedRecord",
            "type": "ref"
          },
          "maxLength": 1,
          "type": "array"
        },
        "embedVideos": {
          "items": {
            "ref": "#draftEmbedVideo",
            "type": "ref"
          },
          "maxLength": 1,
          "type": "array"
        },
        "labels": {
          "description": "Self-label values for this post. Effectively content warnings.",
          "refs": [
            "com.atproto.label.defs#selfLabels"
          ],
          "type": "union"
        },
        "text": {
          "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.",
          "maxGraphemes": 100000,
          "maxLength": 500000,
          "type": "string"
        }
      },
      "required": [
        "text"
      ],
      "type": "object"
    },
    "draftView": {
      "description": "View to present drafts data to users.",
      "properties": {
        "createdAt": {
          "description": "The time the draft was created.",
          "format": "datetime",
          "type": "string"
        },
        "draft": {
          "ref": "#draft",
          "type": "ref"
        },
        "id": {
          "description": "A TID to be used as a draft identifier.",
          "format": "tid",
          "type": "string"
        },
        "updatedAt": {
          "description": "The time the draft was last updated.",
          "format": "datetime",
          "type": "string"
        }
      },
      "required": [
        "id",
        "draft",
        "createdAt",
        "updatedAt"
      ],
      "type": "object"
    },
    "draftWithId": {
      "description": "A draft with an identifier, used to store drafts in private storage (stash).",
      "properties": {
        "draft": {
          "ref": "#draft",
          "type": "ref"
        },
        "id": {
          "description": "A TID to be used as a draft identifier.",
          "format": "tid",
          "type": "string"
        }
      },
      "required": [
        "id",
        "draft"
      ],
      "type": "object"
    }
  },
  "id": "town.delve.draft.defs",
  "lexicon": 1
}

Validate Record

Validate a record against town.delve.draft.defs

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:qzqct2rrq4u2gmy5g3mjxske
CID
bafyreifjjkp7z353fompev33ebaesoikwwafsizpqjfl4itynpf2l45h2y
Indexed At
2026-09-11 20:04 UTC
AT-URI
at://did:plc:qzqct2rrq4u2gmy5g3mjxske/com.atproto.lexicon.schema/town.delve.draft.defs

Referenced Schemas (6)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A draft containing an array of draft posts.

  • Record containing a draft post that can be edited and later published as app.bsky.feed.post

  • social.agent.draft.post recordnot from the namespace authority

    Draft post created under a delegation. Lives on the agent's PDS. Accumulating record keyed by TID.

Lexicon Garden

@