# ink.branchline.getBuds

> Published by [branchline.ink](https://lexicon.garden/identity/did:plc:brvu7akhdvsqcomb67pafw25)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:brvu7akhdvsqcomb67pafw25/ink.branchline.getBuds)
- [Documentation](https://lexicon.garden/lexicon/did:plc:brvu7akhdvsqcomb67pafw25/ink.branchline.getBuds/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:brvu7akhdvsqcomb67pafw25/ink.branchline.getBuds/examples)

## Definitions

### `ink.branchline.getBuds`

**Type**: `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.

#### Parameters

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `uris` | `array` | Yes | AT-URIs of buds to hydrate. |

#### Output

**Encoding**: `application/json`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `buds` | `array` | Yes |  |

### `ink.branchline.getBuds#budView`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | Yes |  |
| `uri` | `string` (at-uri) | Yes |  |
| `text` | `string` | Yes |  |
| `depth` | `integer` | Yes | Depth of this bud in the story tree (0 = root). |
| `title` | `string` | Yes |  |
| `author` | `ref` → `#authorView` | No |  |
| `locked` | `boolean` | No | True when the bud's bloom time can no longer be extended. |
| `parent` | `ref` → `com.atproto.repo.strongRef` | No |  |
| `growing` | `boolean` | No | True when the bud has not yet reached its bloomsAt time and is still in the growing window. |
| `bloomsAt` | `string` (datetime) | No | Timestamp when this bud finishes its growing window and blooms into the feed. Present on every bud; compare with the current time rather than relying on `growing` alone when a live countdown is needed. |
| `children` | `array` | No | AT-URIs of buds that extend this bud. |
| `createdAt` | `string` (datetime) | Yes |  |
| `formatting` | `array` | No |  |
| `pollenCount` | `integer` | Yes | Lifetime number of pollen grains on this bud (raw count, not the ranking-weighted score). |
| `viewerCanEdit` | `boolean` | No | True when the authenticated viewer is permitted to edit this bud — they are the author, the bud has no children, and it is not locked. Omitted when there is no viewer session. |
| `viewerBookmarked` | `boolean` | No | True when the authenticated viewer has a bookmark whose subject is this bud. A bookmark earlier or later on the same lineage does not light this flag; only the exact subject does. Omitted when there is no viewer session. |
| `viewerPollinated` | `boolean` | No | True when the authenticated viewer has already pollinated this bud. Omitted when there is no viewer session. |
| `intermediateCount` | `integer` | No | Count of distinct contributor DIDs on the root-to-bud path, including the root author and this bud's author. |

### `ink.branchline.getBuds#authorView`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | Yes |  |
| `handle` | `string` (handle) | Yes |  |
| `displayName` | `string` | No |  |

## Raw Schema

```json
{
  "id": "ink.branchline.getBuds",
  "defs": {
    "main": {
      "type": "query",
      "output": {
        "schema": {
          "type": "object",
          "required": [
            "buds"
          ],
          "properties": {
            "buds": {
              "type": "array",
              "items": {
                "ref": "#budView",
                "type": "ref"
              }
            }
          }
        },
        "encoding": "application/json"
      },
      "parameters": {
        "type": "params",
        "required": [
          "uris"
        ],
        "properties": {
          "uris": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "at-uri"
            },
            "maxLength": 25,
            "description": "AT-URIs of buds to hydrate."
          }
        }
      },
      "description": "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."
    },
    "budView": {
      "type": "object",
      "required": [
        "uri",
        "cid",
        "title",
        "text",
        "createdAt",
        "depth",
        "pollenCount"
      ],
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "text": {
          "type": "string"
        },
        "depth": {
          "type": "integer",
          "minimum": 0,
          "description": "Depth of this bud in the story tree (0 = root)."
        },
        "title": {
          "type": "string"
        },
        "author": {
          "ref": "#authorView",
          "type": "ref"
        },
        "locked": {
          "type": "boolean",
          "description": "True when the bud's bloom time can no longer be extended."
        },
        "parent": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "growing": {
          "type": "boolean",
          "description": "True when the bud has not yet reached its bloomsAt time and is still in the growing window."
        },
        "bloomsAt": {
          "type": "string",
          "format": "datetime",
          "description": "Timestamp when this bud finishes its growing window and blooms into the feed. Present on every bud; compare with the current time rather than relying on `growing` alone when a live countdown is needed."
        },
        "children": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "at-uri"
          },
          "description": "AT-URIs of buds that extend this bud."
        },
        "createdAt": {
          "type": "string",
          "format": "datetime"
        },
        "formatting": {
          "type": "array",
          "items": {
            "ref": "ink.branchline.bud#formatSpan",
            "type": "ref"
          }
        },
        "pollenCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Lifetime number of pollen grains on this bud (raw count, not the ranking-weighted score)."
        },
        "viewerCanEdit": {
          "type": "boolean",
          "description": "True when the authenticated viewer is permitted to edit this bud — they are the author, the bud has no children, and it is not locked. Omitted when there is no viewer session."
        },
        "viewerBookmarked": {
          "type": "boolean",
          "description": "True when the authenticated viewer has a bookmark whose subject is this bud. A bookmark earlier or later on the same lineage does not light this flag; only the exact subject does. Omitted when there is no viewer session."
        },
        "viewerPollinated": {
          "type": "boolean",
          "description": "True when the authenticated viewer has already pollinated this bud. Omitted when there is no viewer session."
        },
        "intermediateCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Count of distinct contributor DIDs on the root-to-bud path, including the root author and this bud's author."
        }
      }
    },
    "authorView": {
      "type": "object",
      "required": [
        "did",
        "handle"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "handle": {
          "type": "string",
          "format": "handle"
        },
        "displayName": {
          "type": "string",
          "maxLength": 640,
          "maxGraphemes": 64
        }
      }
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
