Passer au contenu principal

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.

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

alert

Encadré de mise en évidence avec 4 variantes.

ChampTypeObligatoireDescription
htmlstringOuiContenu HTML du message d'alerte. Le balisage des outils en ligne est pris en charge.
variant'error' | 'info' | 'success' | 'warning'OuiStyle visuel de l'alerte. L'une des valeurs : error, info, success, warning.
JSON
{
  "type": "alert",
  "data": { "html": "Your session will expire in 5 minutes.", "variant": "warning" }
}

audio

Bloc audio. Consommé via le callback audioUploader sur Editor.create.

ChampTypeObligatoireDescription
urlstringOuiURL du fichier audio à intégrer.
captionstringNonLégende en texte brut affichée sous le lecteur.
altstringNonÉtiquette accessible pour l'élément audio.
alignment'center' | 'left' | 'right'NonAlignement horizontal du lecteur. L'une des valeurs : center, left, right.
JSON
{
  "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.

ChampTypeObligatoireDescription
itemsChecklistItem[]OuiTableau d'éléments de liste de contrôle, chacun avec un texte et un état coché.
items[].textstringOuiContenu HTML de l'étiquette de l'élément.
items[].checkedbooleanOuiIndique si la case est cochée.
JSON
{
  "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.

ChampTypeObligatoireDescription
codestringOuiLa chaîne de code brut à afficher.
languageCodeLanguageNonLangage de coloration syntaxique. Par défaut : typescript.
themeCodeThemeNonThème de couleur de l'éditeur. Par défaut : github-dark.
showCopybooleanNonAfficher un bouton de copie dans le rendu.
syncKeystringNonLes blocs partageant une clé changent de langage ensemble.
variantsCodeVariant[]NonSi non vide, affiche une barre d'onglets de variantes et fait autorité.
JSON
{
  "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.

ChampTypeObligatoireDescription
htmlstringOuiTitre de la section en HTML en ligne.
openbooleanNonIndique si la section est rendue dépliée.
childrenBlock[]NonBlocs enfants imbriqués.
JSON
{
  "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.

ChampTypeObligatoireDescription
collectionIdstringOuiL'id de la collection intégrée. La seule chose stockée.
JSON
{
  "type": "collection",
  "data": { "collectionId": "c-42" }
}

columns

Une mise en page multicolonne de 2 à 4 colonnes, chacune portant sa propre liste de blocs enfants.

ChampTypeObligatoireDescription
columnsBlock[][]OuiLes colonnes, chacune une liste de blocs enfants. De deux à quatre colonnes.
JSON
{
  "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.

ChampTypeObligatoireDescription
datestringOuiDate ISO au format yyyy-MM-dd, sans fuseau horaire.
JSON
{
  "type": "date",
  "data": { "date": "2026-08-31" }
}

delimiter

Séparateur visuel entre les sections.

ChampTypeObligatoireDescription
variant'line' | 'stars'OuiStyle visuel du séparateur. L'une des valeurs : line, stars.
JSON
{
  "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.

ChampTypeObligatoireDescription
pageIdstringOuiL'id de la page référencée ; l'identité de la carte.
titlestringOuiInstantané d'affichage du titre de la page.
iconstringNonIcône facultative affichée sur la carte.
descriptionstringNonDescription facultative affichée sous le titre.
JSON
{
  "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.

ChampTypeObligatoireDescription
urlstringOuiLe lien intégré. Le fournisseur et le balisage d'intégration en sont dérivés au rendu.
titlestringNonInstantané d'aperçu pour la carte de lien.
descriptionstringNonDescription d'aperçu pour la carte de lien.
imageUrlstringNonImage 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.
fileobjectNonNom, type et icône d’un fichier Drive, depuis le compte Google de la personne qui a collé le lien.
gistobjectNonLes fichiers du gist tels que collés, rendus en code là où la vue de GitHub ne peut pas se charger.
reasonstringNonPourquoi la vue en direct n’est pas affichée : connect_google, no_access, provider_unreachable ou switched_off.
issueobjectNonUn lien de ticket affiché en carte : le dernier instantané lu (tool, key, title, stateName, category, assigneeName, updatedAt, reason).
JSON
{
  "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.

ChampTypeObligatoireDescription
urlstringOuiL'adresse d'où le fichier est servi.
namestringOuiNom de fichier affiché sur la pièce jointe.
sizenumberNonTaille du fichier en octets.
contentTypestringNonType MIME du fichier.
JSON
{
  "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.

ChampTypeObligatoireDescription
rowsGlanceRow[]OuiLes faits à afficher : chaque ligne est une étiquette et une valeur HTML en ligne.
captionstringNonLégende facultative au-dessus des lignes.
variant'plain' | 'error' | 'info' | 'success' | 'warning'NonVariante de fond ; plain est sans style, les autres reprennent la palette d'alerte.
JSON
{
  "type": "glance",
  "data": {
    "caption": "Facts",
    "rows": [{ "label": "Version", "html": "<b>1.0</b>" }],
    "variant": "plain"
  }
}

Titres de premier niveau et titres de section (h1 à h6). Les outils en ligne fonctionnent à l’intérieur de la charge utile html.

ChampTypeObligatoireDescription
htmlstringOuiContenu HTML du titre. Le balisage des outils en ligne est pris en charge.
level'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'NonNiveau de titre. L'une des valeurs : h1, h2, h3, h4, h5, h6. Par défaut : h1.
JSON
{
  "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.

ChampTypeObligatoireDescription
urlstringOuiURL de l'image à intégrer.
captionstringNonLégende en texte brut affichée sous l'image.
altstringNonTexte alt pour l'élément image.
alignment'center' | 'left' | 'right'NonAlignement horizontal de l'image. L'une des valeurs : center, left, right.
JSON
{
  "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.

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

ChampTypeObligatoireDescription
sourcestringOuiLa source LaTeX. Stockée en source, jamais en sortie rendue.
JSON
{
  "type": "latex",
  "data": { "source": "\\frac{a}{b}" }
}

list

Liste ordonnée ou non ordonnée. Chaque élément est du html.

ChampTypeObligatoireDescription
type'ordered' | 'unordered'OuiType de liste. L'une des valeurs : ordered, unordered.
itemsstring[]OuiTableau de chaînes HTML, une par élément de liste.
JSON
{
  "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.

ChampTypeObligatoireDescription
sourcestringOuiLa source Mermaid. Stockée en source, jamais en sortie dessinée.
JSON
{
  "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.

ChampTypeObligatoireDescription
specobjectNonUn document OpenAPI 3.x en ligne. Prime sur url quand les deux sont définis.
urlstringNonD'où récupérer le document OpenAPI au moment du rendu.
includeOpenApiFilterNonFiltre des opérations à afficher.
excludeOpenApiFilterNonFiltre des opérations à masquer.
defaultServerstringNonLe serveur que la référence sélectionne par défaut.
snippetLanguagesCodeLanguage[]NonLangages proposés pour les extraits de requête.
JSON
{
  "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.

ChampTypeObligatoireDescription
htmlstringOuiContenu HTML du paragraphe. Le balisage des outils en ligne est pris en charge.
JSON
{
  "type": "paragraph",
  "data": { "html": "This is a <b>paragraph</b> with inline markup." }
}

quote

Bloc de citation avec une attribution d’auteur facultative.

ChampTypeObligatoireDescription
htmlstringOuiContenu HTML du corps de la citation. Le balisage des outils en ligne est pris en charge.
authorstringNonAttribution en texte brut ou HTML affichée sous la citation.
JSON
{
  "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.

ChampTypeObligatoireDescription
strokesSketchStroke[]OuiLe dessin en traits : chaque trait est une liste de points avec couleur et largeur facultatives.
JSON
{
  "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.

ChampTypeObligatoireDescription
datastring[][]OuiTableau à deux dimensions de chaînes de cellules HTML. La première ligne est la ligne d'en-tête.
captionstringNonLégende en texte brut ou HTML affichée sous le tableau.
showDownloadbooleanNonAfficher un bouton de téléchargement dans le rendu.
JSON
{
  "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.

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

ChampTypeObligatoireDescription
pageIdstringNonL'activité de quel document afficher. Absent signifie le document où se trouve le bloc.
JSON
{
  "type": "updates",
  "data": { "pageId": "p-7" }
}

video

Bloc vidéo. Consommé via le callback videoUploader sur Editor.create.

ChampTypeObligatoireDescription
urlstringOuiURL du fichier vidéo ou lien d'intégration YouTube/Vimeo.
captionstringNonLégende en texte brut affichée sous le lecteur.
altstringNonÉtiquette accessible pour l'élément vidéo.
alignment'center' | 'left' | 'right'NonAlignement horizontal du lecteur. L'une des valeurs : center, left, right.
JSON
{
  "type": "video",
  "data": { "url": "/media/demo.mp4", "caption": "Product demo", "alignment": "center" }
}