Content blocks
Botyard REST API endpoints for content blocks.
3 endpoints in this group. Every request authenticates with an API key; see the API reference for the other groups.
- Read a content block's payload (validated, typed rows):
GET /v1/orgs/{org_id}/conversations/{conversation_id}/content-blocks/payload - Mint a fresh download URL for one file of a ``files`` content block:
GET /v1/orgs/{org_id}/conversations/{conversation_id}/content-blocks/file - Read a board-task content block's current (live) state:
GET /v1/orgs/{org_id}/conversations/{conversation_id}/content-blocks/task
Get Stream Event Schema
Expose StreamEvent in OpenAPI for frontend type generation. Returns a dummy ``PartEndEvent`` — the important part is the ``response_model`` annotation which puts the full discriminated union into the OpenAPI schema. The bot still emits these inside ``AssistantDeltaEvent.frame`` over Centrifugo.
Read a content block's payload (validated, typed rows)
Return a content block's validated payload rows. Authorization mirrors the conversation file-list route: the viewer must have access to ``conversation_id``. Storage resolution, the server-side read, and validation live in ``ContentBlockService`` (shared with the botyard-mcp content-block tools).