Ir para o conteúdo principal

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.

JSON
{
  "id": "abc123",
  "type": "paragraph",
  "data": { "html": "Hello <b>world</b>" },
  "tunes": {}
}

alert

Caixa de destaque com 4 variantes.

CampoTipoObrigatórioDescrição
htmlstringSimConteúdo HTML da mensagem de alerta. O markup de ferramentas inline é suportado.
variant'error' | 'info' | 'success' | 'warning'SimEstilo visual do alerta. Um dos valores: error, info, success, warning.
JSON
{
  "type": "alert",
  "data": { "html": "Your session will expire in 5 minutes.", "variant": "warning" }
}

audio

Bloco de áudio. Consumido pelo callback audioUploader em Editor.create.

CampoTipoObrigatórioDescrição
urlstringSimURL do arquivo de áudio a ser incorporado.
captionstringNãoLegenda em texto simples exibida abaixo do player.
altstringNãoRótulo acessível para o elemento de áudio.
alignment'center' | 'left' | 'right'NãoAlinhamento horizontal do player. Um dos valores: center, left, right.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
itemsChecklistItem[]SimArray de itens de lista de verificação, cada um com text e estado checked.
items[].textstringSimConteúdo HTML do rótulo do item.
items[].checkedbooleanSimSe a caixa de seleção está marcada.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
codestringSimA string de código bruto a ser exibida.
languageCodeLanguageNãoLinguagem de realce de sintaxe. Padrão é typescript.
themeCodeThemeNãoTema de cor do editor. Padrão é github-dark.
showCopybooleanNãoMostrar um botão de cópia na saída renderizada.
syncKeystringNãoBlocos que compartilham uma chave trocam de linguagem juntos.
variantsCodeVariant[]NãoQuando não vazio, renderiza uma faixa de abas de variantes e é a fonte autoritativa.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
htmlstringSimTítulo da seção como HTML inline.
openbooleanNãoSe a seção é renderizada expandida.
childrenBlock[]NãoBlocos filhos aninhados.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
collectionIdstringSimO id da coleção incorporada. A única coisa armazenada.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
columnsBlock[][]SimAs colunas, cada uma uma lista de blocos filhos. De duas a quatro colunas.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
datestringSimData ISO no formato yyyy-MM-dd, sem fuso horário.
JSON
{
  "type": "date",
  "data": { "date": "2026-08-31" }
}

delimiter

Separador visual entre seções.

CampoTipoObrigatórioDescrição
variant'line' | 'stars'SimEstilo visual do divisor. Um dos valores: line, stars.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
pageIdstringSimO id da página referenciada; a identidade do cartão.
titlestringSimRetrato de exibição do título da página.
iconstringNãoÍcone opcional exibido no cartão.
descriptionstringNãoDescrição opcional exibida sob o título.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
urlstringSimO link incorporado. O provedor e a marcação de incorporação são derivados dele na renderização.
titlestringNãoRetrato de unfurl para o cartão de link.
descriptionstringNãoDescrição de unfurl para o cartão de link.
imageUrlstringNãoImagem 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.
fileobjectNãoNome, tipo e ícone de um ficheiro do Drive, a partir da conta Google de quem colou.
gistobjectNãoOs ficheiros do gist tal como colados, desenhados como código onde a vista do GitHub não carrega.
reasonstringNãoPorque a vista ao vivo não é mostrada: connect_google, no_access, provider_unreachable ou switched_off.
issueobjectNãoUm link de issue mostrado como cartão: o último instantâneo lido (tool, key, title, stateName, category, assigneeName, updatedAt, reason).
JSON
{
  "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.

CampoTipoObrigatórioDescrição
urlstringSimDe onde o arquivo é servido.
namestringSimNome do arquivo exibido no anexo.
sizenumberNãoTamanho do arquivo em bytes.
contentTypestringNãoTipo MIME do arquivo.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
rowsGlanceRow[]SimOs fatos a mostrar: cada linha é um rótulo e um valor HTML inline.
captionstringNãoLegenda opcional acima das linhas.
variant'plain' | 'error' | 'info' | 'success' | 'warning'NãoVariante de fundo; plain é sem estilo, as demais seguem a paleta de alerta.
JSON
{
  "type": "glance",
  "data": {
    "caption": "Facts",
    "rows": [{ "label": "Version", "html": "<b>1.0</b>" }],
    "variant": "plain"
  }
}

Títulos de nível superior e de seção (h1 a h6). As ferramentas inline funcionam dentro do payload html.

CampoTipoObrigatórioDescrição
htmlstringSimConteúdo HTML do cabeçalho. O markup de ferramentas inline é suportado.
level'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'NãoNível de cabeçalho. Um dos valores: h1, h2, h3, h4, h5, h6. Padrão é h1.
JSON
{
  "type": "header",
  "data": { "html": "Getting started", "level": "h2" }
}

image

Bloco de imagem com legenda e texto alt. Consumido pelo callback imageUploader em Editor.create.

CampoTipoObrigatórioDescrição
urlstringSimURL da imagem a ser incorporada.
captionstringNãoLegenda em texto simples exibida abaixo da imagem.
altstringNãoTexto alt para o elemento de imagem.
alignment'center' | 'left' | 'right'NãoAlinhamento horizontal da imagem. Um dos valores: center, left, right.
JSON
{
  "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.

JSON
{
  "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.

CampoTipoObrigatórioDescrição
sourcestringSimA fonte LaTeX. Armazenada como fonte, nunca como saída renderizada.
JSON
{
  "type": "latex",
  "data": { "source": "\\frac{a}{b}" }
}

list

Lista ordenada ou não ordenada. Cada item é html.

CampoTipoObrigatórioDescrição
type'ordered' | 'unordered'SimTipo de lista. Um dos valores: ordered, unordered.
itemsstring[]SimArray de strings HTML, uma por item de lista.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
sourcestringSimA fonte Mermaid. Armazenada como fonte, nunca como saída desenhada.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
specobjectNãoUm documento OpenAPI 3.x inline. Vence sobre url quando ambos estão definidos.
urlstringNãoDe onde buscar o documento OpenAPI na renderização.
includeOpenApiFilterNãoFiltro de quais operações renderizar.
excludeOpenApiFilterNãoFiltro de quais operações ocultar.
defaultServerstringNãoQual servidor a referência seleciona por padrão.
snippetLanguagesCodeLanguage[]NãoLinguagens oferecidas para os trechos de requisição.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
htmlstringSimConteúdo HTML do parágrafo. O markup de ferramentas inline é suportado.
JSON
{
  "type": "paragraph",
  "data": { "html": "This is a <b>paragraph</b> with inline markup." }
}

quote

Citação em bloco com atribuição de autor opcional.

CampoTipoObrigatórioDescrição
htmlstringSimConteúdo HTML do corpo da citação. O markup de ferramentas inline é suportado.
authorstringNãoAtribuição em texto simples ou HTML exibida abaixo da citação.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
strokesSketchStroke[]SimO desenho como traços: cada traço é uma lista de pontos com cor e largura opcionais.
JSON
{
  "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.

CampoTipoObrigatórioDescrição
datastring[][]SimArray bidimensional de strings de células HTML. A primeira linha é a linha de cabeçalho.
captionstringNãoLegenda em texto simples ou HTML exibida abaixo da tabela.
showDownloadbooleanNãoMostrar um botão de download na saída renderizada.
JSON
{
  "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.

JSON
{
  "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.

CampoTipoObrigatórioDescrição
pageIdstringNãoA atividade de qual documento mostrar. Ausente significa o documento em que o bloco está.
JSON
{
  "type": "updates",
  "data": { "pageId": "p-7" }
}

video

Bloco de vídeo. Consumido pelo callback videoUploader em Editor.create.

CampoTipoObrigatórioDescrição
urlstringSimURL do arquivo de vídeo ou link de incorporação do YouTube/Vimeo.
captionstringNãoLegenda em texto simples exibida abaixo do player.
altstringNãoRótulo acessível para o elemento de vídeo.
alignment'center' | 'left' | 'right'NãoAlinhamento horizontal do player. Um dos valores: center, left, right.
JSON
{
  "type": "video",
  "data": { "url": "/media/demo.mp4", "caption": "Product demo", "alignment": "center" }
}