Referencia de bloques
Esta página documenta cada tipo de bloque que trae el editor. Todo bloque tiene una forma JSON, un renderizador y una vía de inserción programática mediante editor.blocks.insert.
Todos los bloques comparten el mismo envoltorio al serializarse: id, type, data y un registro tunes opcional.
La forma del bloque
Cada bloque se serializa en el mismo sobre JSON. El id es asignado por el editor y puede omitirse al construir datos mediante programación.
{
"id": "abc123",
"type": "paragraph",
"data": { "html": "Hello <b>world</b>" },
"tunes": {}
}alert
Cuadro de aviso destacado con 4 variantes.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| html | string | Sí | Contenido HTML del mensaje de alerta. Se admite el marcado de herramientas en línea. |
| variant | 'error' | 'info' | 'success' | 'warning' | Sí | Estilo visual de la alerta. Uno de: error, info, success, warning. |
{
"type": "alert",
"data": { "html": "Your session will expire in 5 minutes.", "variant": "warning" }
}audio
Bloque de audio. Se consume mediante el callback audioUploader en Editor.create.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| url | string | Sí | URL del archivo de audio a incrustar. |
| caption | string | No | Leyenda de texto sin formato que se muestra debajo del reproductor. |
| alt | string | No | Etiqueta accesible para el elemento de audio. |
| alignment | 'center' | 'left' | 'right' | No | Alineación horizontal del reproductor. Uno de: center, left, right. |
{
"type": "audio",
"data": { "url": "/media/podcast.mp3", "caption": "Episode 12", "alignment": "center" }
}checklist
Lista de casillas de verificación interactiva con estado marcado por elemento.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| items | ChecklistItem[] | Sí | Array de elementos de lista de verificación, cada uno con text y estado checked. |
| items[].text | string | Sí | Contenido HTML de la etiqueta del elemento. |
| items[].checked | boolean | Sí | Si la casilla de verificación está marcada. |
{
"type": "checklist",
"data": {
"items": [
{ "text": "Install the package", "checked": true },
{ "text": "Mount the editor", "checked": false }
]
}
}code
Bloque de código con resaltado de sintaxis. Se admiten 50 lenguajes, entre ellos typescript, python, rust, go, ruby, swift y kotlin.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| code | string | Sí | La cadena de código sin procesar a mostrar. |
| language | CodeLanguage | No | Lenguaje de resaltado de sintaxis. Por defecto typescript. |
| theme | CodeTheme | No | Tema de color del editor. Por defecto github-dark. |
| showCopy | boolean | No | Mostrar un botón de copia en la salida renderizada. |
| syncKey | string | No | Los bloques que comparten una clave cambian de lenguaje juntos. |
| variants | CodeVariant[] | No | Si no está vacío, renderiza una tira de pestañas de variantes y es la fuente autoritativa. |
{
"type": "code",
"data": { "code": "const x = 42;", "language": "typescript", "theme": "github-dark", "showCopy": true }
}collapsible
Una sección plegable con un título y bloques hijos anidados. Los tipos de bloques hijos desconocidos se conservan tal cual, así que los documentos más nuevos sobreviven en renderizadores más antiguos.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| html | string | Sí | Título de la sección como HTML en línea. |
| open | boolean | No | Si la sección se muestra desplegada. |
| children | Block[] | No | Bloques hijos anidados. |
{
"type": "collapsible",
"data": {
"html": "Details",
"open": true,
"children": [{ "type": "paragraph", "data": { "html": "Hidden until opened." } }]
}
}collection
Incrusta una vista de colección en vivo por id. El bloque solo almacena la identidad de la colección; el servidor es dueño de la forma y de los datos.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| collectionId | string | Sí | El id de la colección incrustada. Lo único que se almacena. |
{
"type": "collection",
"data": { "collectionId": "c-42" }
}columns
Un diseño multicolumna de 2 a 4 columnas, cada una con su propia lista de bloques hijos.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| columns | Block[][] | Sí | Las columnas, cada una una lista de bloques hijos. De dos a cuatro columnas. |
{
"type": "columns",
"data": {
"columns": [
[{ "type": "paragraph", "data": { "html": "Left" } }],
[{ "type": "paragraph", "data": { "html": "Right" } }]
]
}
}date
Una fecha de calendario, almacenada sin zona horaria para que todos los colaboradores coincidan en ella.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| date | string | Sí | Fecha ISO en formato yyyy-MM-dd, sin zona horaria. |
{
"type": "date",
"data": { "date": "2026-08-31" }
}delimiter
Separador visual entre secciones.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| variant | 'line' | 'stars' | Sí | Estilo visual del divisor. Uno de: line, stars. |
{
"type": "delimiter",
"data": { "variant": "line" }
}doc_card
Una tarjeta de enlace enriquecida hacia otro documento. Almacena el id de la página referenciada y una instantánea de presentación que los hosts refrescan al renombrar.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| pageId | string | Sí | El id de la página referenciada; la identidad de la tarjeta. |
| title | string | Sí | Instantánea de presentación del título de la página. |
| icon | string | No | Icono opcional mostrado en la tarjeta. |
| description | string | No | Descripción opcional mostrada bajo el título. |
{
"type": "doc_card",
"data": { "pageId": "p-7", "title": "Release notes", "icon": "📄" }
}embed
Un enlace incrustado. El bloque almacena la URL; el proveedor y el marcado de incrustación se derivan al renderizar, con los campos de unfurl como tarjeta de respaldo.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| url | string | Sí | El enlace incrustado. El proveedor y el marcado de incrustación se derivan de él al renderizar. |
| title | string | No | Instantánea de unfurl para la tarjeta de enlace. |
| description | string | No | Descripción de unfurl para la tarjeta de enlace. |
| imageUrl | string | No | Imagen de vista previa de unfurl para la tarjeta de enlace. |
| display | 'card' | No | "card" para mostrar una tarjeta de enlace incluso donde existe una vista en directo. |
| file | object | No | Nombre, tipo e icono de un archivo de Drive, desde la cuenta de Google de quien pegó el enlace. |
| gist | object | No | Los archivos del gist tal como se pegaron, dibujados como código donde la vista de GitHub no puede cargarse. |
| reason | string | No | Por qué no se muestra la vista en directo: connect_google, no_access, provider_unreachable o switched_off. |
| issue | object | No | Un enlace de incidencia mostrado como tarjeta: la última instantánea leída (tool, key, title, stateName, category, assigneeName, updatedAt, reason). |
{
"type": "embed",
"data": { "url": "https://www.youtube.com/watch?v=abc123" }
}file
Un archivo adjunto con enlace de descarga, nombre, y tamaño y tipo de contenido opcionales.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| url | string | Sí | De dónde se sirve el archivo. |
| name | string | Sí | Nombre de archivo mostrado en el adjunto. |
| size | number | No | Tamaño del archivo en bytes. |
| contentType | string | No | Tipo MIME del archivo. |
{
"type": "file",
"data": { "url": "/files/notes.pdf", "name": "notes.pdf", "size": 2048, "contentType": "application/pdf" }
}glance
Un panel de resumen de etiquetas y valores: filas de datos que se leen de un vistazo, con leyenda y variante de fondo opcionales.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| rows | GlanceRow[] | Sí | Los datos a mostrar: cada fila es una etiqueta y un valor HTML en línea. |
| caption | string | No | Leyenda opcional encima de las filas. |
| variant | 'plain' | 'error' | 'info' | 'success' | 'warning' | No | Variante de fondo; plain no tiene estilo, el resto sigue la paleta de alertas. |
{
"type": "glance",
"data": {
"caption": "Facts",
"rows": [{ "label": "Version", "html": "<b>1.0</b>" }],
"variant": "plain"
}
}header
Títulos de nivel superior y de sección (h1 a h6). Las herramientas en línea funcionan dentro de la carga útil html.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| html | string | Sí | Contenido HTML del encabezado. Se admite el marcado de herramientas en línea. |
| level | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | No | Nivel de encabezado. Uno de: h1, h2, h3, h4, h5, h6. Por defecto h1. |
{
"type": "header",
"data": { "html": "Getting started", "level": "h2" }
}image
Bloque de imagen con leyenda y texto alt. Se consume mediante el callback imageUploader en Editor.create.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| url | string | Sí | URL de la imagen a incrustar. |
| caption | string | No | Leyenda de texto sin formato que se muestra debajo de la imagen. |
| alt | string | No | Texto alt para el elemento de imagen. |
| alignment | 'center' | 'left' | 'right' | No | Alineación horizontal de la imagen. Uno de: center, left, right. |
{
"type": "image",
"data": { "url": "/img/hero.jpg", "caption": "Hero image", "alt": "A hero", "alignment": "center" }
}issues
Una tabla de las incidencias enlazadas derivada al renderizar de las fichas y tarjetas de incidencias de la página (incidencia, título, estado, responsable). No almacena datos propios.
Este bloque no almacena campos; las filas se derivan de las fichas y tarjetas de incidencias de la página al renderizar.
{
"type": "issues",
"data": {}
}latex
Matemáticas LaTeX, almacenadas como fuente y compuestas al renderizar. Un mejor renderizador después mejora cada documento que ya existe.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| source | string | Sí | La fuente LaTeX. Se almacena como fuente, nunca como salida renderizada. |
{
"type": "latex",
"data": { "source": "\\frac{a}{b}" }
}list
Lista ordenada o desordenada. Cada elemento es html.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| type | 'ordered' | 'unordered' | Sí | Tipo de lista. Uno de: ordered, unordered. |
| items | string[] | Sí | Array de cadenas HTML, una por elemento de lista. |
{
"type": "list",
"data": { "type": "unordered", "items": ["First item", "Second item"] }
}mermaid
Un diagrama Mermaid, almacenado como fuente y dibujado al mostrarse, nunca como ráster.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| source | string | Sí | La fuente Mermaid. Se almacena como fuente, nunca como salida dibujada. |
{
"type": "mermaid",
"data": { "source": "flowchart TD\n A --> B" }
}openapi
Renderiza una referencia de API interactiva a partir de un documento OpenAPI 3.x, en línea o traído de una URL, con selectores de servidor y fragmentos de código.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| spec | object | No | Un documento OpenAPI 3.x en línea. Gana sobre url cuando ambos están definidos. |
| url | string | No | De dónde traer el documento OpenAPI al renderizar. |
| include | OpenApiFilter | No | Filtro de qué operaciones renderizar. |
| exclude | OpenApiFilter | No | Filtro de qué operaciones ocultar. |
| defaultServer | string | No | Qué servidor selecciona la referencia por defecto. |
| snippetLanguages | CodeLanguage[] | No | Lenguajes ofrecidos para los fragmentos de solicitud. |
{
"type": "openapi",
"data": { "url": "/api/openapi.json", "defaultServer": "https://api.example.com" }
}paragraph
Párrafo de texto enriquecido. Acepta marcado de herramientas en línea como bold, italic, code, link, marker y tooltip.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| html | string | Sí | Contenido HTML del párrafo. Se admite el marcado de herramientas en línea. |
{
"type": "paragraph",
"data": { "html": "This is a <b>paragraph</b> with inline markup." }
}quote
Cita en bloque con atribución de autor opcional.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| html | string | Sí | Contenido HTML del cuerpo de la cita. Se admite el marcado de herramientas en línea. |
| author | string | No | Atribución de texto sin formato o HTML que se muestra debajo de la cita. |
{
"type": "quote",
"data": { "html": "The best way to predict the future is to invent it.", "author": "Alan Kay" }
}sketch
Un dibujo a mano alzada almacenado como trazos, nunca como ráster, así que sigue siendo editable y escala con nitidez.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| strokes | SketchStroke[] | Sí | El dibujo como trazos: cada trazo es una lista de puntos con color y ancho opcionales. |
{
"type": "sketch",
"data": { "strokes": [{ "points": [0, 0, 10, 10], "color": "#ff0000", "width": 3 }] }
}table
Cuadrícula de datos. La primera fila puede usarse como encabezado; cada celda es html.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| data | string[][] | Sí | Array bidimensional de cadenas de celdas HTML. La primera fila es la fila de encabezado. |
| caption | string | No | Leyenda de texto sin formato o HTML que se muestra debajo de la tabla. |
| showDownload | boolean | No | Mostrar un botón de descarga en la salida renderizada. |
{
"type": "table",
"data": {
"data": [["Name", "Type"], ["html", "string"], ["variant", "AlertVariant"]],
"caption": "AlertData fields",
"showDownload": false
}
}toc
Una tabla de contenidos derivada de los encabezados del documento al renderizar. No almacena datos propios.
Este bloque no almacena campos; la lista se deriva de los encabezados del documento al renderizar.
{
"type": "toc",
"data": {}
}updates
Un feed de actividad en vivo para un documento. Almacena identidad, nunca una instantánea, así que sigue mostrando la actividad actual.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| pageId | string | No | La actividad de qué documento mostrar. Ausente significa el documento donde está el bloque. |
{
"type": "updates",
"data": { "pageId": "p-7" }
}video
Bloque de vídeo. Se consume mediante el callback videoUploader en Editor.create.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| url | string | Sí | URL del archivo de video o enlace de incrustación de YouTube/Vimeo. |
| caption | string | No | Leyenda de texto sin formato que se muestra debajo del reproductor. |
| alt | string | No | Etiqueta accesible para el elemento de video. |
| alignment | 'center' | 'left' | 'right' | No | Alineación horizontal del reproductor. Uno de: center, left, right. |
{
"type": "video",
"data": { "url": "/media/demo.mp4", "caption": "Product demo", "alignment": "center" }
}