Référence des blocs
Cette page documente chaque type de bloc livré avec l'éditeur. Chaque bloc a une forme JSON, un moteur de rendu et un chemin d'insertion programmatique via editor.blocks.insert.
Tous les blocs partagent la même enveloppe une fois sérialisés : id, type, data et un enregistrement tunes facultatif.
La forme du bloc
Chaque bloc est sérialisé dans la même enveloppe JSON. L'id est attribué par l'éditeur et peut être omis lors de la construction de données par programmation.
{
"id": "abc123",
"type": "paragraph",
"data": { "html": "Hello <b>world</b>" },
"tunes": {}
}alert
Encadré de mise en évidence avec 4 variantes.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| html | string | Oui | Contenu HTML du message d'alerte. Le balisage des outils en ligne est pris en charge. |
| variant | 'error' | 'info' | 'success' | 'warning' | Oui | Style visuel de l'alerte. L'une des valeurs : error, info, success, warning. |
{
"type": "alert",
"data": { "html": "Your session will expire in 5 minutes.", "variant": "warning" }
}audio
Bloc audio. Consommé via le callback audioUploader sur Editor.create.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| url | string | Oui | URL du fichier audio à intégrer. |
| caption | string | Non | Légende en texte brut affichée sous le lecteur. |
| alt | string | Non | Étiquette accessible pour l'élément audio. |
| alignment | 'center' | 'left' | 'right' | Non | Alignement horizontal du lecteur. L'une des valeurs : center, left, right. |
{
"type": "audio",
"data": { "url": "/media/podcast.mp3", "caption": "Episode 12", "alignment": "center" }
}checklist
Liste de cases à cocher interactive avec un état coché par élément.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| items | ChecklistItem[] | Oui | Tableau d'éléments de liste de contrôle, chacun avec un texte et un état coché. |
| items[].text | string | Oui | Contenu HTML de l'étiquette de l'élément. |
| items[].checked | boolean | Oui | Indique si la case est cochée. |
{
"type": "checklist",
"data": {
"items": [
{ "text": "Install the package", "checked": true },
{ "text": "Mount the editor", "checked": false }
]
}
}code
Bloc de code avec coloration syntaxique. 50 langages sont pris en charge, dont typescript, python, rust, go, ruby, swift et kotlin.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| code | string | Oui | La chaîne de code brut à afficher. |
| language | CodeLanguage | Non | Langage de coloration syntaxique. Par défaut : typescript. |
| theme | CodeTheme | Non | Thème de couleur de l'éditeur. Par défaut : github-dark. |
| showCopy | boolean | Non | Afficher un bouton de copie dans le rendu. |
| syncKey | string | Non | Les blocs partageant une clé changent de langage ensemble. |
| variants | CodeVariant[] | Non | Si non vide, affiche une barre d'onglets de variantes et fait autorité. |
{
"type": "code",
"data": { "code": "const x = 42;", "language": "typescript", "theme": "github-dark", "showCopy": true }
}collapsible
Une section repliable avec un titre et des blocs enfants imbriqués. Les types de blocs enfants inconnus sont conservés tels quels : les documents plus récents survivent aux moteurs de rendu plus anciens.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| html | string | Oui | Titre de la section en HTML en ligne. |
| open | boolean | Non | Indique si la section est rendue dépliée. |
| children | Block[] | Non | Blocs enfants imbriqués. |
{
"type": "collapsible",
"data": {
"html": "Details",
"open": true,
"children": [{ "type": "paragraph", "data": { "html": "Hidden until opened." } }]
}
}collection
Intègre une vue de collection en direct par son id. Le bloc ne stocke que l'identité de la collection ; le serveur possède la forme et les données.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| collectionId | string | Oui | L'id de la collection intégrée. La seule chose stockée. |
{
"type": "collection",
"data": { "collectionId": "c-42" }
}columns
Une mise en page multicolonne de 2 à 4 colonnes, chacune portant sa propre liste de blocs enfants.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| columns | Block[][] | Oui | Les colonnes, chacune une liste de blocs enfants. De deux à quatre colonnes. |
{
"type": "columns",
"data": {
"columns": [
[{ "type": "paragraph", "data": { "html": "Left" } }],
[{ "type": "paragraph", "data": { "html": "Right" } }]
]
}
}date
Une date de calendrier, stockée sans fuseau horaire pour que tous les collaborateurs soient d’accord.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| date | string | Oui | Date ISO au format yyyy-MM-dd, sans fuseau horaire. |
{
"type": "date",
"data": { "date": "2026-08-31" }
}delimiter
Séparateur visuel entre les sections.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| variant | 'line' | 'stars' | Oui | Style visuel du séparateur. L'une des valeurs : line, stars. |
{
"type": "delimiter",
"data": { "variant": "line" }
}doc_card
Une carte de lien riche vers un autre document. Elle stocke l'id de la page référencée et un instantané d'affichage que les hôtes actualisent lors d'un renommage.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| pageId | string | Oui | L'id de la page référencée ; l'identité de la carte. |
| title | string | Oui | Instantané d'affichage du titre de la page. |
| icon | string | Non | Icône facultative affichée sur la carte. |
| description | string | Non | Description facultative affichée sous le titre. |
{
"type": "doc_card",
"data": { "pageId": "p-7", "title": "Release notes", "icon": "📄" }
}embed
Un lien intégré. Le bloc stocke l'URL ; le fournisseur et le balisage d'intégration sont dérivés au rendu, les champs d'aperçu servant de carte de repli.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| url | string | Oui | Le lien intégré. Le fournisseur et le balisage d'intégration en sont dérivés au rendu. |
| title | string | Non | Instantané d'aperçu pour la carte de lien. |
| description | string | Non | Description d'aperçu pour la carte de lien. |
| imageUrl | string | Non | Image d'aperçu pour la carte de lien. |
| display | 'card' | Non | "card" pour afficher une carte de lien même là où une vue en direct existe. |
| file | object | Non | Nom, type et icône d’un fichier Drive, depuis le compte Google de la personne qui a collé le lien. |
| gist | object | Non | Les fichiers du gist tels que collés, rendus en code là où la vue de GitHub ne peut pas se charger. |
| reason | string | Non | Pourquoi la vue en direct n’est pas affichée : connect_google, no_access, provider_unreachable ou switched_off. |
| issue | object | Non | Un lien de ticket affiché en carte : le dernier instantané lu (tool, key, title, stateName, category, assigneeName, updatedAt, reason). |
{
"type": "embed",
"data": { "url": "https://www.youtube.com/watch?v=abc123" }
}file
Une pièce jointe avec un lien de téléchargement, un nom, et une taille et un type de contenu facultatifs.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| url | string | Oui | L'adresse d'où le fichier est servi. |
| name | string | Oui | Nom de fichier affiché sur la pièce jointe. |
| size | number | Non | Taille du fichier en octets. |
| contentType | string | Non | Type MIME du fichier. |
{
"type": "file",
"data": { "url": "/files/notes.pdf", "name": "notes.pdf", "size": 2048, "contentType": "application/pdf" }
}glance
Un panneau récapitulatif d'étiquettes et de valeurs : des lignes de faits lisibles d'un coup d'œil, avec une légende et une variante de fond facultatives.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| rows | GlanceRow[] | Oui | Les faits à afficher : chaque ligne est une étiquette et une valeur HTML en ligne. |
| caption | string | Non | Légende facultative au-dessus des lignes. |
| variant | 'plain' | 'error' | 'info' | 'success' | 'warning' | Non | Variante de fond ; plain est sans style, les autres reprennent la palette d'alerte. |
{
"type": "glance",
"data": {
"caption": "Facts",
"rows": [{ "label": "Version", "html": "<b>1.0</b>" }],
"variant": "plain"
}
}header
Titres de premier niveau et titres de section (h1 à h6). Les outils en ligne fonctionnent à l’intérieur de la charge utile html.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| html | string | Oui | Contenu HTML du titre. Le balisage des outils en ligne est pris en charge. |
| level | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | Non | Niveau de titre. L'une des valeurs : h1, h2, h3, h4, h5, h6. Par défaut : h1. |
{
"type": "header",
"data": { "html": "Getting started", "level": "h2" }
}image
Bloc image avec légende et texte alt. Consommé via le callback imageUploader sur Editor.create.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| url | string | Oui | URL de l'image à intégrer. |
| caption | string | Non | Légende en texte brut affichée sous l'image. |
| alt | string | Non | Texte alt pour l'élément image. |
| alignment | 'center' | 'left' | 'right' | Non | Alignement horizontal de l'image. L'une des valeurs : center, left, right. |
{
"type": "image",
"data": { "url": "/img/hero.jpg", "caption": "Hero image", "alt": "A hero", "alignment": "center" }
}issues
Un tableau des tickets liés, dérivé au rendu des puces et cartes de tickets de la page (ticket, titre, statut, responsable). Il ne stocke aucune donnée propre.
Ce bloc ne stocke aucun champ ; les lignes sont dérivées des puces et cartes de tickets de la page au rendu.
{
"type": "issues",
"data": {}
}latex
Des mathématiques LaTeX, stockées en source et composées au rendu. Un meilleur moteur plus tard améliore chaque document déjà existant.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| source | string | Oui | La source LaTeX. Stockée en source, jamais en sortie rendue. |
{
"type": "latex",
"data": { "source": "\\frac{a}{b}" }
}list
Liste ordonnée ou non ordonnée. Chaque élément est du html.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| type | 'ordered' | 'unordered' | Oui | Type de liste. L'une des valeurs : ordered, unordered. |
| items | string[] | Oui | Tableau de chaînes HTML, une par élément de liste. |
{
"type": "list",
"data": { "type": "unordered", "items": ["First item", "Second item"] }
}mermaid
Un diagramme Mermaid, stocké en source et dessiné à l’affichage, jamais en image matricielle.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| source | string | Oui | La source Mermaid. Stockée en source, jamais en sortie dessinée. |
{
"type": "mermaid",
"data": { "source": "flowchart TD\n A --> B" }
}openapi
Affiche une référence d'API interactive à partir d'un document OpenAPI 3.x, en ligne ou récupéré depuis une URL, avec sélecteurs de serveur et extraits de code.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| spec | object | Non | Un document OpenAPI 3.x en ligne. Prime sur url quand les deux sont définis. |
| url | string | Non | D'où récupérer le document OpenAPI au moment du rendu. |
| include | OpenApiFilter | Non | Filtre des opérations à afficher. |
| exclude | OpenApiFilter | Non | Filtre des opérations à masquer. |
| defaultServer | string | Non | Le serveur que la référence sélectionne par défaut. |
| snippetLanguages | CodeLanguage[] | Non | Langages proposés pour les extraits de requête. |
{
"type": "openapi",
"data": { "url": "/api/openapi.json", "defaultServer": "https://api.example.com" }
}paragraph
Paragraphe en texte enrichi. Accepte le balisage des outils en ligne tels que bold, italic, code, link, marker et tooltip.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| html | string | Oui | Contenu HTML du paragraphe. Le balisage des outils en ligne est pris en charge. |
{
"type": "paragraph",
"data": { "html": "This is a <b>paragraph</b> with inline markup." }
}quote
Bloc de citation avec une attribution d’auteur facultative.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| html | string | Oui | Contenu HTML du corps de la citation. Le balisage des outils en ligne est pris en charge. |
| author | string | Non | Attribution en texte brut ou HTML affichée sous la citation. |
{
"type": "quote",
"data": { "html": "The best way to predict the future is to invent it.", "author": "Alan Kay" }
}sketch
Un dessin à main levée stocké en traits, jamais en image matricielle : il reste modifiable et s'agrandit proprement.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| strokes | SketchStroke[] | Oui | Le dessin en traits : chaque trait est une liste de points avec couleur et largeur facultatives. |
{
"type": "sketch",
"data": { "strokes": [{ "points": [0, 0, 10, 10], "color": "#ff0000", "width": 3 }] }
}table
Grille de données. La première ligne peut servir d’en-tête ; chaque cellule est du html.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| data | string[][] | Oui | Tableau à deux dimensions de chaînes de cellules HTML. La première ligne est la ligne d'en-tête. |
| caption | string | Non | Légende en texte brut ou HTML affichée sous le tableau. |
| showDownload | boolean | Non | Afficher un bouton de téléchargement dans le rendu. |
{
"type": "table",
"data": {
"data": [["Name", "Type"], ["html", "string"], ["variant", "AlertVariant"]],
"caption": "AlertData fields",
"showDownload": false
}
}toc
Une table des matières dérivée des titres du document au rendu. Elle ne stocke aucune donnée propre.
Ce bloc ne stocke aucun champ ; la liste est dérivée des titres du document au rendu.
{
"type": "toc",
"data": {}
}updates
Un fil d'activité en direct pour un document. Il stocke une identité, jamais un instantané : il continue d'afficher l'activité actuelle.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| pageId | string | Non | L'activité de quel document afficher. Absent signifie le document où se trouve le bloc. |
{
"type": "updates",
"data": { "pageId": "p-7" }
}video
Bloc vidéo. Consommé via le callback videoUploader sur Editor.create.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| url | string | Oui | URL du fichier vidéo ou lien d'intégration YouTube/Vimeo. |
| caption | string | Non | Légende en texte brut affichée sous le lecteur. |
| alt | string | Non | Étiquette accessible pour l'élément vidéo. |
| alignment | 'center' | 'left' | 'right' | Non | Alignement horizontal du lecteur. L'une des valeurs : center, left, right. |
{
"type": "video",
"data": { "url": "/media/demo.mp4", "caption": "Product demo", "alignment": "center" }
}