ink.branchline.publishBud

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.

Repository @branchline.ink did:plc:brvu7akhdvsqcomb67pafw25 namespace authority
Details · procedure
Kindprocedure
Authoritybranchline.ink
Indexed

Procedure

procedure · POST

Input

application/json

Byte-offset inline formatting spans over `text`.

itemsref

parentUri

requiredstring · at-uri

AT-URI of the parent — either an ink.branchline.bud (continuation) or an ink.branchline.seed (root bud being planted).

text

requiredstring
  • maxLength: 20000

title

requiredstring
  • maxLength: 1200
  • maxGraphemes: 120

Output

application/json

cid

requiredstring · cid

uri

requiredstring · at-uri

Errors

Unauthorized

The caller is not signed in.

ParentNotFound

The parent (bud or seed) does not exist in the AppView.

ParentCidMismatch

The resolved parent's CID does not match the value on the record.

SelfReply

The caller is the parent bud's author. Buds cannot continue themselves.

ParentGrowing

The parent bud is still inside its 24h growing window.

WordLimitExceeded

The bud text exceeds the 500-word ceiling.

InvalidFormatting

A formatting span is malformed — offsets out of bounds, start >= end, or an unknown span type.

NotSeedGrantee

The caller is not the grantee of the seed they are trying to plant.

SeedExpired

The seed's expiry has passed.

SeedChainBroken

The seed's ancestor chain is missing, expired, or broken by a grantor/grantee mismatch.

SeedAlreadyPlanted

Another bud has already been planted from this seed.

Similar lexicons

semantic match

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 would reshape text that later writers have already continued from, and locked buds are frozen by an admin. The AppView overwrites the ink.branchline.bud record in the caller's PDS via putRecord and mirrors the new row into the local read cache. `createdAt` and `bloomsAt` are preserved;

  • 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 caller's PDS and mirrors it into the local read cache. Root (grantor-less) seeds are not created through this endpoint — they are authored only by the branchline.ink repo.

  • 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 lifecycle stages are views of the same record, not different record types. The AppView enforces a 500-word ceiling on `text` (counted via Unicode word segmentation); writes that exceed it are rejected as WordLimitExceeded.

  • 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 grain per (author, subject) is honored; retrying a call for the same subject is rejected with DuplicatePollen.