## Interactive block coverage
This page is the smoke-test article for admin-authored GitBook content. Keep it published in seed data so the admin editor, cached Markdoc AST, and public GitBook renderer exercise the same custom tags.
{% callout type="info" title="Authoring source" %}
Create and edit these blocks from Admin -> Docs. The saved body is stored in Convex, parsed with the allowed GitBook Markdoc tags, and rendered by the git_book app.
{% /callout %}
## Tabs
{% tabs %}
{% tab label="curl" %}
\`\`\`bash
curl https://api.brothh.com/v1/products \\
-H "Authorization: Bearer sk_test_demo_xxx"
\`\`\`
{% /tab %}
{% tab label="response" %}
\`\`\`json
{ "data": [], "hasMore": false }
\`\`\`
{% /tab %}
{% /tabs %}
## Steps
{% steps %}
{% step %}
Open Admin -> Docs and create or edit a docs article.
{% /step %}
{% step %}
Insert blocks from the slash menu or write raw Markdoc.
{% /step %}
{% step %}
Publish the article and confirm the same blocks render on docs.brothh.com.
{% /step %}
{% /steps %}
## Code group
{% code-group %}
\`\`\`ts
const route = "/developers/api"
\`\`\`
\`\`\`tsx
<a href="/developers/api">API reference</a>
\`\`\`
{% /code-group %}
## Playground
{% playground endpoint="listProducts" method="GET" path="/v1/products" /%}
## Viewer variables
Signed-in docs can reference viewer values without leaking anonymous data:
{% viewer-var name="sellerId" /%}
## Tools
{% calculator slug="hanging-weight" /%}
{% glossary-term slug="hanging-weight" /%}
The inline glossary form also works inside a sentence: {% glossary-term slug="hanging-weight" inline=true /%}.
## Figures
{% figure src="/docs-images/gitbook-interactive-blocks.png" alt="Interactive blocks article in GitBook" caption="Published interactive-blocks article showing callouts, steps, API playgrounds, viewer variables, and embedded tools in the public GitBook renderer." /%}