> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usertour.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Type-specific data

> The `data` body for non-flow content — checklist, launcher, banner, tracker, resource center, and announcement.

Non-flow content carries its body in `data` (read with `?expand=data`, write with
the `data` field of `PATCH …/versions/{id}`). A newly created content is seeded
with its type's default `data`, and writes are a **field-level merge**, so you
only send the fields you want to change. Nested rich content reuses
[blocks](/api-reference-v2/blocks); conditions/actions reuse
[rules](/api-reference-v2/conditions-and-actions).

## checklist

| Field             | Type                                 | Required | Description                          |
| ----------------- | ------------------------------------ | -------- | ------------------------------------ |
| `buttonText`      | string                               |          | The launcher button label.           |
| `initialDisplay`  | `expanded` \| `button`               |          | Open, or collapsed to a button.      |
| `completionOrder` | `any` \| `ordered`                   |          | Whether items must be done in order. |
| `preventDismiss`  | boolean                              |          | Disallow dismissing.                 |
| `autoDismiss`     | boolean                              |          | Dismiss when all items complete.     |
| `content`         | [Block](/api-reference-v2/blocks)\[] |          | Header/intro content.                |
| `items`           | [Item](#checklist-item)\[]           |          | The checklist tasks.                 |

### Checklist item

| Field          | Type                                                                | Required | Description                                                                                                                                                              |
| -------------- | ------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `id`           | string                                                              |          | Field-merge write handle (omit to add a new item).                                                                                                                       |
| `name`         | string                                                              | yes      | Item label.                                                                                                                                                              |
| `description`  | string                                                              |          | Sub-text.                                                                                                                                                                |
| `completeWhen` | [Condition](/api-reference-v2/conditions-and-actions#conditions)\[] |          | Marks the item complete when these match. Also accepts the parameterless `{ "type": "task_clicked" }` (complete when the item is clicked), including inside an OR group. |
| `clickActions` | [Action](/api-reference-v2/conditions-and-actions#actions)\[]       |          | Run when the item is clicked.                                                                                                                                            |
| `onlyShowWhen` | [Condition](/api-reference-v2/conditions-and-actions#conditions)\[] |          | Only show the item while these match.                                                                                                                                    |

An item needs a `name` **and** either a `clickActions` or a `completeWhen`.

```json theme={null}
{
  "buttonText": "Get started",
  "initialDisplay": "expanded",
  "items": [
    { "name": "Create your first project", "clickActions": [{ "type": "navigate", "url": "/projects/new" }], "completeWhen": [{ "type": "task_clicked" }] },
    { "name": "Invite a teammate", "completeWhen": [{ "type": "event", "event": "member_invited" }] }
  ]
}
```

## launcher

| Field        | Type                                                       | Required | Description                                                                                                      |
| ------------ | ---------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------- |
| `style`      | `beacon` \| `icon` \| `hidden` \| `button`                 |          | Visual style.                                                                                                    |
| `icon`       | `object{ source, url, type }`                              |          | Icon config.                                                                                                     |
| `buttonText` | string                                                     |          | Label (for `button` style).                                                                                      |
| `target`     | [Target](/api-reference-v2/conditions-and-actions#target)  |          | Element the launcher anchors to.                                                                                 |
| `zIndex`     | integer                                                    |          | Stacking order.                                                                                                  |
| `tooltip`    | `object{ placement, width, reference, content, settings }` |          | Tooltip shown on activation — `content` is [Block](/api-reference-v2/blocks)\[].                                 |
| `behavior`   | `object{ triggerElement, event, action, actions }`         |          | What activates it and what it does — `actions` is [Action](/api-reference-v2/conditions-and-actions#actions)\[]. |

A launcher needs a `target`; show-tooltip behavior needs tooltip `content`,
perform-action behavior needs `actions`.

```json theme={null}
{
  "style": "icon",
  "target": { "selector": "[data-tour='help']" },
  "tooltip": { "content": [{ "type": "text", "markdown": "Need help? Start here." }] }
}
```

## banner

| Field             | Type                                                                         | Required | Description                      |
| ----------------- | ---------------------------------------------------------------------------- | -------- | -------------------------------- |
| `placement`       | [Placement](/api-reference-v2/content-representation)                        |          | Where the banner sits.           |
| `content`         | [Block](/api-reference-v2/blocks)\[]                                         |          | Banner content.                  |
| `zIndex`          | integer                                                                      |          | Stacking order.                  |
| `settings`        | `object{ overlayOverAppContent, stickToTop, allowDismiss, animateOnAppear }` |          | Behavior toggles.                |
| `containerTarget` | [Target](/api-reference-v2/conditions-and-actions#target)                    |          | For element-relative placements. |
| `layout`          | `object{ maxContentWidth, maxEmbedWidth, borderRadius, outerMargin }`        |          | Sizing.                          |

A banner needs `content`; element-relative placements need a `containerTarget`.

```json theme={null}
{
  "content": [{ "type": "text", "markdown": "🎉 New feature live!" }],
  "settings": { "stickToTop": true, "allowDismiss": true }
}
```

## tracker

A tracker has no UI — it records an event when its [start rules](/api-reference-v2/rules)
match. (No theme needed.)

| Field   | Type   | Required | Description          |
| ------- | ------ | -------- | -------------------- |
| `event` | string | yes      | Event code to track. |

```json theme={null}
{ "event": "activated" }
```

## resource-center

| Field        | Type                                  | Required | Description                          |
| ------------ | ------------------------------------- | -------- | ------------------------------------ |
| `buttonText` | string                                |          | Launcher button label.               |
| `headerText` | string                                |          | Panel header.                        |
| `tabs`       | `object{ id, name, icon, blocks }`\[] |          | Tabs — each has a name and ≥1 block. |

Tab blocks use the resource center's **own** vocabulary — `richtext`, `divider`,
`action`, `sub-page`, `content-list`, `live-chat`, and `announcement` (the feed;
at most one per resource center) — **not** the flow blocks. Rich text goes
inside a `richtext` block, which wraps regular [blocks](/api-reference-v2/blocks)
in its `content`; a bare flow `text` block at the tab level is rejected.

A resource center needs ≥1 tab, each with a name and at least one block.

```json theme={null}
{
  "headerText": "Help & resources",
  "tabs": [
    {
      "name": "Guides",
      "blocks": [
        { "type": "richtext", "content": [{ "type": "text", "markdown": "## Getting started" }] },
        { "type": "content-list", "name": "Tours", "items": [{ "content": "cm9f6vwed0002iejc4vg2zu3t", "contentType": "flow" }] }
      ]
    }
  ]
}
```

## announcement

The announcement-feed body. Announcements reach users **only** through a
resource center with an `announcement` block — publishing alone does not
surface them.

| Field            | Type                                 | Required | Description                                                                                                                                          |
| ---------------- | ------------------------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `title`          | string                               |          | Feed-row / detail title. **Required to publish.** Plain string — no `{{ }}` interpolation. Seeded from the content name at create, then independent. |
| `introContent`   | [Block](/api-reference-v2/blocks)\[] |          | Feed-row content — the flow block vocabulary minus questions (button actions: `start_content` / `navigate` / `run_javascript` only).                 |
| `enableReadMore` | boolean                              |          | Adds a "Read more" button opening a detail page. Enabling it with an empty `detailContent` is rejected.                                              |
| `readMoreLabel`  | string                               |          | The button's label.                                                                                                                                  |
| `detailContent`  | [Block](/api-reference-v2/blocks)\[] |          | The detail page (same block rules as `introContent`).                                                                                                |
| `distribution`   | `silent` \| `badge` \| `popup`       |          | How loudly users are notified (`badge` is the default).                                                                                              |

The "announcement time" is **not** in `data` — it is the version-level
`scheduledAt` field (the feed hides the announcement until that instant and
orders by it, newest first).

```json theme={null}
{
  "title": "Dark mode is here",
  "introContent": [{ "type": "text", "markdown": "Flip it on in **Settings → Appearance**." }],
  "distribution": "badge"
}
```
