Referência de blocos
Esta página documenta cada tipo de bloco que o editor traz. Todo bloco tem uma forma JSON, um renderizador e um caminho de inserção programática via editor.blocks.insert.
Todos os blocos compartilham o mesmo envelope quando serializados: id, type, data e um registro tunes opcional.
A forma do bloco
Cada bloco é serializado no mesmo envelope JSON. O id é atribuído pelo editor e pode ser omitido ao construir dados programaticamente.
{
"id": "abc123",
"type": "paragraph",
"data": { "html": "Hello <b>world</b>" },
"tunes": {}
}alert
Caixa de destaque com 4 variantes.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| html | string | Sim | Conteúdo HTML da mensagem de alerta. O markup de ferramentas inline é suportado. |
| variant | 'error' | 'info' | 'success' | 'warning' | Sim | Estilo visual do alerta. Um dos valores: error, info, success, warning. |
{
"type": "alert",
"data": { "html": "Your session will expire in 5 minutes.", "variant": "warning" }
}audio
Bloco de áudio. Consumido pelo callback audioUploader em Editor.create.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | URL do arquivo de áudio a ser incorporado. |
| caption | string | Não | Legenda em texto simples exibida abaixo do player. |
| alt | string | Não | Rótulo acessível para o elemento de áudio. |
| alignment | 'center' | 'left' | 'right' | Não | Alinhamento horizontal do player. Um dos valores: center, left, right. |
{
"type": "audio",
"data": { "url": "/media/podcast.mp3", "caption": "Episode 12", "alignment": "center" }
}checklist
Lista de caixas de seleção interativa com estado marcado por item.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| items | ChecklistItem[] | Sim | Array de itens de lista de verificação, cada um com text e estado checked. |
| items[].text | string | Sim | Conteúdo HTML do rótulo do item. |
| items[].checked | boolean | Sim | Se a caixa de seleção está marcada. |
{
"type": "checklist",
"data": {
"items": [
{ "text": "Install the package", "checked": true },
{ "text": "Mount the editor", "checked": false }
]
}
}code
Bloco de código com realce de sintaxe. São suportadas 50 linguagens, incluindo typescript, python, rust, go, ruby, swift e kotlin.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| code | string | Sim | A string de código bruto a ser exibida. |
| language | CodeLanguage | Não | Linguagem de realce de sintaxe. Padrão é typescript. |
| theme | CodeTheme | Não | Tema de cor do editor. Padrão é github-dark. |
| showCopy | boolean | Não | Mostrar um botão de cópia na saída renderizada. |
| syncKey | string | Não | Blocos que compartilham uma chave trocam de linguagem juntos. |
| variants | CodeVariant[] | Não | Quando não vazio, renderiza uma faixa de abas de variantes e é a fonte autoritativa. |
{
"type": "code",
"data": { "code": "const x = 42;", "language": "typescript", "theme": "github-dark", "showCopy": true }
}collapsible
Uma seção recolhível com título e blocos filhos aninhados. Tipos de blocos filhos desconhecidos são preservados na íntegra, então documentos mais novos sobrevivem a renderizadores mais antigos.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| html | string | Sim | Título da seção como HTML inline. |
| open | boolean | Não | Se a seção é renderizada expandida. |
| children | Block[] | Não | Blocos filhos aninhados. |
{
"type": "collapsible",
"data": {
"html": "Details",
"open": true,
"children": [{ "type": "paragraph", "data": { "html": "Hidden until opened." } }]
}
}collection
Incorpora uma visão de coleção ao vivo pelo id. O bloco armazena apenas a identidade da coleção; o servidor é dono da forma e dos dados.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| collectionId | string | Sim | O id da coleção incorporada. A única coisa armazenada. |
{
"type": "collection",
"data": { "collectionId": "c-42" }
}columns
Um layout de múltiplas colunas, de 2 a 4, cada uma com sua própria lista de blocos filhos.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| columns | Block[][] | Sim | As colunas, cada uma uma lista de blocos filhos. De duas a quatro colunas. |
{
"type": "columns",
"data": {
"columns": [
[{ "type": "paragraph", "data": { "html": "Left" } }],
[{ "type": "paragraph", "data": { "html": "Right" } }]
]
}
}date
Uma data de calendário, armazenada sem fuso horário para que todos os colaboradores concordem com ela.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| date | string | Sim | Data ISO no formato yyyy-MM-dd, sem fuso horário. |
{
"type": "date",
"data": { "date": "2026-08-31" }
}delimiter
Separador visual entre seções.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| variant | 'line' | 'stars' | Sim | Estilo visual do divisor. Um dos valores: line, stars. |
{
"type": "delimiter",
"data": { "variant": "line" }
}doc_card
Um cartão de link rico para outro documento. Armazena o id da página referenciada e um retrato de exibição que os hosts atualizam ao renomear.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| pageId | string | Sim | O id da página referenciada; a identidade do cartão. |
| title | string | Sim | Retrato de exibição do título da página. |
| icon | string | Não | Ícone opcional exibido no cartão. |
| description | string | Não | Descrição opcional exibida sob o título. |
{
"type": "doc_card",
"data": { "pageId": "p-7", "title": "Release notes", "icon": "📄" }
}embed
Um link incorporado. O bloco armazena a URL; o provedor e a marcação de incorporação são derivados na renderização, com os campos de unfurl como cartão de reserva.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | O link incorporado. O provedor e a marcação de incorporação são derivados dele na renderização. |
| title | string | Não | Retrato de unfurl para o cartão de link. |
| description | string | Não | Descrição de unfurl para o cartão de link. |
| imageUrl | string | Não | Imagem de pré-visualização de unfurl para o cartão de link. |
| display | 'card' | Não | "card" para mostrar um cartão de ligação mesmo onde existe uma vista ao vivo. |
| file | object | Não | Nome, tipo e ícone de um ficheiro do Drive, a partir da conta Google de quem colou. |
| gist | object | Não | Os ficheiros do gist tal como colados, desenhados como código onde a vista do GitHub não carrega. |
| reason | string | Não | Porque a vista ao vivo não é mostrada: connect_google, no_access, provider_unreachable ou switched_off. |
| issue | object | Não | Um link de issue mostrado como cartão: o último instantâneo lido (tool, key, title, stateName, category, assigneeName, updatedAt, reason). |
{
"type": "embed",
"data": { "url": "https://www.youtube.com/watch?v=abc123" }
}file
Um anexo de arquivo com link de download, nome, e tamanho e tipo de conteúdo opcionais.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | De onde o arquivo é servido. |
| name | string | Sim | Nome do arquivo exibido no anexo. |
| size | number | Não | Tamanho do arquivo em bytes. |
| contentType | string | Não | Tipo MIME do arquivo. |
{
"type": "file",
"data": { "url": "/files/notes.pdf", "name": "notes.pdf", "size": 2048, "contentType": "application/pdf" }
}glance
Um painel de resumo de rótulos e valores: linhas de fatos lidas num relance, com legenda e variante de fundo opcionais.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| rows | GlanceRow[] | Sim | Os fatos a mostrar: cada linha é um rótulo e um valor HTML inline. |
| caption | string | Não | Legenda opcional acima das linhas. |
| variant | 'plain' | 'error' | 'info' | 'success' | 'warning' | Não | Variante de fundo; plain é sem estilo, as demais seguem a paleta de alerta. |
{
"type": "glance",
"data": {
"caption": "Facts",
"rows": [{ "label": "Version", "html": "<b>1.0</b>" }],
"variant": "plain"
}
}header
Títulos de nível superior e de seção (h1 a h6). As ferramentas inline funcionam dentro do payload html.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| html | string | Sim | Conteúdo HTML do cabeçalho. O markup de ferramentas inline é suportado. |
| level | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | Não | Nível de cabeçalho. Um dos valores: h1, h2, h3, h4, h5, h6. Padrão é h1. |
{
"type": "header",
"data": { "html": "Getting started", "level": "h2" }
}image
Bloco de imagem com legenda e texto alt. Consumido pelo callback imageUploader em Editor.create.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | URL da imagem a ser incorporada. |
| caption | string | Não | Legenda em texto simples exibida abaixo da imagem. |
| alt | string | Não | Texto alt para o elemento de imagem. |
| alignment | 'center' | 'left' | 'right' | Não | Alinhamento horizontal da imagem. Um dos valores: center, left, right. |
{
"type": "image",
"data": { "url": "/img/hero.jpg", "caption": "Hero image", "alt": "A hero", "alignment": "center" }
}issues
Uma tabela das issues ligadas, derivada na renderização das etiquetas e cartões de issues da página (issue, título, estado, responsável). Não armazena dados próprios.
Este bloco não armazena campos; as linhas são derivadas das etiquetas e cartões de issues da página na renderização.
{
"type": "issues",
"data": {}
}latex
Matemática LaTeX, armazenada como fonte e composta na renderização. Um renderizador melhor depois melhora todo documento que já existe.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| source | string | Sim | A fonte LaTeX. Armazenada como fonte, nunca como saída renderizada. |
{
"type": "latex",
"data": { "source": "\\frac{a}{b}" }
}list
Lista ordenada ou não ordenada. Cada item é html.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| type | 'ordered' | 'unordered' | Sim | Tipo de lista. Um dos valores: ordered, unordered. |
| items | string[] | Sim | Array de strings HTML, uma por item de lista. |
{
"type": "list",
"data": { "type": "unordered", "items": ["First item", "Second item"] }
}mermaid
Um diagrama Mermaid, armazenado como fonte e desenhado na exibição, nunca como raster.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| source | string | Sim | A fonte Mermaid. Armazenada como fonte, nunca como saída desenhada. |
{
"type": "mermaid",
"data": { "source": "flowchart TD\n A --> B" }
}openapi
Renderiza uma referência de API interativa a partir de um documento OpenAPI 3.x, inline ou buscado de uma URL, com seletores de servidor e trechos de código.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| spec | object | Não | Um documento OpenAPI 3.x inline. Vence sobre url quando ambos estão definidos. |
| url | string | Não | De onde buscar o documento OpenAPI na renderização. |
| include | OpenApiFilter | Não | Filtro de quais operações renderizar. |
| exclude | OpenApiFilter | Não | Filtro de quais operações ocultar. |
| defaultServer | string | Não | Qual servidor a referência seleciona por padrão. |
| snippetLanguages | CodeLanguage[] | Não | Linguagens oferecidas para os trechos de requisição. |
{
"type": "openapi",
"data": { "url": "/api/openapi.json", "defaultServer": "https://api.example.com" }
}paragraph
Parágrafo de rich text. Aceita marcação de ferramentas inline como bold, italic, code, link, marker e tooltip.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| html | string | Sim | Conteúdo HTML do parágrafo. O markup de ferramentas inline é suportado. |
{
"type": "paragraph",
"data": { "html": "This is a <b>paragraph</b> with inline markup." }
}quote
Citação em bloco com atribuição de autor opcional.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| html | string | Sim | Conteúdo HTML do corpo da citação. O markup de ferramentas inline é suportado. |
| author | string | Não | Atribuição em texto simples ou HTML exibida abaixo da citação. |
{
"type": "quote",
"data": { "html": "The best way to predict the future is to invent it.", "author": "Alan Kay" }
}sketch
Um desenho à mão livre armazenado como traços, nunca raster, então permanece editável e escala com nitidez.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| strokes | SketchStroke[] | Sim | O desenho como traços: cada traço é uma lista de pontos com cor e largura opcionais. |
{
"type": "sketch",
"data": { "strokes": [{ "points": [0, 0, 10, 10], "color": "#ff0000", "width": 3 }] }
}table
Grade de dados. A primeira linha pode ser usada como cabeçalho; cada célula é html.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| data | string[][] | Sim | Array bidimensional de strings de células HTML. A primeira linha é a linha de cabeçalho. |
| caption | string | Não | Legenda em texto simples ou HTML exibida abaixo da tabela. |
| showDownload | boolean | Não | Mostrar um botão de download na saída renderizada. |
{
"type": "table",
"data": {
"data": [["Name", "Type"], ["html", "string"], ["variant", "AlertVariant"]],
"caption": "AlertData fields",
"showDownload": false
}
}toc
Um sumário derivado dos cabeçalhos do documento na renderização. Não armazena dados próprios.
Este bloco não armazena campos; a lista é derivada dos cabeçalhos do documento na renderização.
{
"type": "toc",
"data": {}
}updates
Um feed de atividade ao vivo para um documento. Armazena identidade, nunca um retrato, então continua mostrando a atividade atual.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| pageId | string | Não | A atividade de qual documento mostrar. Ausente significa o documento em que o bloco está. |
{
"type": "updates",
"data": { "pageId": "p-7" }
}video
Bloco de vídeo. Consumido pelo callback videoUploader em Editor.create.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | URL do arquivo de vídeo ou link de incorporação do YouTube/Vimeo. |
| caption | string | Não | Legenda em texto simples exibida abaixo do player. |
| alt | string | Não | Rótulo acessível para o elemento de vídeo. |
| alignment | 'center' | 'left' | 'right' | Não | Alinhamento horizontal do player. Um dos valores: center, left, right. |
{
"type": "video",
"data": { "url": "/media/demo.mp4", "caption": "Product demo", "alignment": "center" }
}