At this level
ink.branchline · 20- ink.branchline.bookmark record A bookmark the authoring account placed on a bud — a private-intent save pointing at a specific bud in a story. The AppView collapses bookmarks on the same ancestor chain into a single record: re-bookmarking a bud that is an ancestor or descendant of an existing bookmark rewrites the existing record's subject via putRecord rather than creating a second one. Navigation resolves the bookmark to the furthest-read bud on the path containing the subject, falling back to the subject itself.
- ink.branchline.bud record 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.
- ink.branchline.createBookmark procedure Bookmark a bud. The caller must be signed in. If the caller already has a bookmark in the same story whose subject is an ancestor or descendant of the new subject, the existing record is rewritten in place (putRecord) so the bookmark list stays one-per-thread. Otherwise a new ink.branchline.bookmark record is created in the caller's PDS and mirrored into the local read cache.
- ink.branchline.createPollen procedure 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.
- ink.branchline.editBud procedure 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;
- ink.branchline.getBranch query Get the full path of AT-URIs from root to bud in story order, oldest first.
- ink.branchline.getBuds query Hydrate full bud views for a set of AT-URIs. Buds are returned in the same order as the input URIs. Unknown URIs are silently omitted from the response.
- ink.branchline.getSeeds query Hydrate seed views for a set of AT-URIs. Seeds are returned in the same order as the input URIs. Unknown URIs are silently omitted.
- ink.branchline.listAuthorActivity query Per-day bud counts for an author over the trailing 30 days in the viewer's local timezone, plus a current streak (consecutive days ending today with at least one bud). Powers the leaf-themed activity strip on profile pages.
- ink.branchline.listAuthorBookmarks query List bookmarks authored by an actor, newest first. Bookmarks are public records; any viewer may list them.
- ink.branchline.listAuthorBuds query List buds written by an author, surfacing only the terminal contributions per branch: a bud is included when the author has no descendant bud beneath it. Collapses back-and-forth exchanges so each chain the author participated in appears at most once, represented by their most recent bud in that chain.
- ink.branchline.listAuthorPlantings query List trees planted by an author. A planting is a root bud (depth 0) authored by `actor`; each entry reports the root AT-URI and the height of the tallest branch descended from it.
- ink.branchline.listAuthorSeeds query List seeds that an author can trade or plant
- ink.branchline.listBlooms query List active blooms: every bud past its 24h growing window. Blooms never age out of eligibility; the 'pollen' sort's time-decay weighting is what sinks stale entries. Supports 'recent' (newest createdAt first) and 'pollen' (decay-weighted pollen score across the bloom and its ancestors).
- ink.branchline.listNotifications query List unread notifications for the authenticated viewer. Requires a valid session cookie; responds 401 otherwise. Notifications are derived from indexed records (no separate notification table) and grouped by subject; a group counts as unread when its latestAt is newer than the viewer's stored readAt for that group (see ink.branchline.markNotificationsRead). Three kinds are emitted: 'continuation' (someone grew one of the viewer's buds), 'seedGrant' (someone gave the viewer a seed), and 'bookmark
- ink.branchline.markNotificationsRead procedure Mark one or more notification groups as read for the authenticated viewer. Each entry stamps the viewer's readAt for that groupKey, hiding the group from ink.branchline.listNotifications until fresh activity pushes latestAt past the stamp. Responds 401 without a session.
- ink.branchline.pollen record A grain of pollen the authoring account carried to a bud — a lightweight mark of appreciation. At most one pollen record per (author, subject) is honored by the AppView; tombstoning the record removes it.
- ink.branchline.publishBud procedure 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.
- ink.branchline.publishSeed procedure 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.
- ink.branchline.seed record A seed, the permission to plant a story tree.