ink.branchline.publishBud

branchline.ink

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Publish a new bud. The parent may be another bud (continuation) or a seed (planting a root bud). The caller must be signed in. The AppView writes an ink.branchline.bud record to the caller's PDS and mirrors it into the local read cache so the new bud is immediately navigable. Rejection reasons mirror ink.branchline.bud create validation — 500-word limit on `text`, 24h parent growing window, self-reply, seed chain/expiry/grantee checks, etc.",
      "errors": [
        {
          "description": "The caller is not signed in.",
          "name": "Unauthorized"
        },
        {
          "description": "The parent (bud or seed) does not exist in the AppView.",
          "name": "ParentNotFound"
        },
        {
          "description": "The resolved parent's CID does not match the value on the record.",
          "name": "ParentCidMismatch"
        },
        {
          "description": "The caller is the parent bud's author. Buds cannot continue themselves.",
          "name": "SelfReply"
        },
        {
          "description": "The parent bud is still inside its 24h growing window.",
          "name": "ParentGrowing"
        },
        {
          "description": "The bud text exceeds the 500-word ceiling.",
          "name": "WordLimitExceeded"
        },
        {
          "description": "The caller is not the grantee of the seed they are trying to plant.",
          "name": "NotSeedGrantee"
        },
        {
          "description": "The seed's expiry has passed.",
          "name": "SeedExpired"
        },
        {
          "description": "The seed's ancestor chain is missing, expired, or broken by a grantor/grantee mismatch.",
          "name": "SeedChainBroken"
        },
        {
          "description": "Another bud has already been planted from this seed.",
          "name": "SeedAlreadyPlanted"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "formatting": {
              "description": "Byte-offset inline formatting spans over `text`.",
              "items": {
                "ref": "ink.branchline.bud#formatSpan",
                "type": "ref"
              },
              "type": "array"
            },
            "parentUri": {
              "description": "AT-URI of the parent — either an ink.branchline.bud (continuation) or an ink.branchline.seed (root bud being planted).",
              "format": "at-uri",
              "type": "string"
            },
            "text": {
              "maxLength": 20000,
              "type": "string"
            },
            "title": {
              "maxGraphemes": 120,
              "maxLength": 1200,
              "type": "string"
            }
          },
          "required": [
            "parentUri",
            "title",
            "text"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "cid": {
              "format": "cid",
              "type": "string"
            },
            "uri": {
              "format": "at-uri",
              "type": "string"
            }
          },
          "required": [
            "uri",
            "cid"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "ink.branchline.publishBud",
  "lexicon": 1
}

Validate Record

Validate a record against ink.branchline.publishBud

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

Metadata

DID
did:plc:brvu7akhdvsqcomb67pafw25
CID
bafyreia2dxhy3ddi3nqmzdyaorpzqrmnrzh7cydd7bkxqtg6njijoatbw4
Indexed At
2026-04-18 04:01 UTC
AT-URI
at://did:plc:brvu7akhdvsqcomb67pafw25/com.atproto.lexicon.schema/ink.branchline.publishBud

Version History (3 versions)

Referenced Schemas (1)

Similar Lexicons

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

  • Edit the title, text, and/or inline formatting of an existing bud. The caller must be signed in and must be the bud's author. The bud must have no children and must not be locked — edits to a bud with descendants woul…

  • Gift a seed. The caller must be signed in and must be the grantee of `grantor`; publishing passes that seed's planting right on to `grantee` as a new child seed. The AppView writes an ink.branchline.seed record to the c…

  • A bud: one contribution to a story tree. Freshly written buds grow for 24h (not yet followable); after that they open as 'blooms' that other writers can extend; past 48h without children they lock into 'branches'. These…

  • Pollinate a bud — a lightweight mark of appreciation. The caller must be signed in. The AppView writes an ink.branchline.pollen record to the caller's PDS and mirrors it into the local read cache. At most one pollen g…

Lexicon Garden

@