monsiteo aide

Pages

Lister, créer, lire, modifier (sections, SEO, menu, page d'accueil), supprimer, dupliquer et réordonner les pages, et obtenir l'aperçu HTML.

Chaque page possède un brouillon (sections) et une version en ligne (copiée au moment de la publication). Modifier une page ne change rien en ligne tant que le site n'est pas republié (Publier).

L'objet page#

Champ Type Description
id entier Identifiant.
site_id entier Site parent.
title chaîne Titre (utilisé dans le menu).
slug chaîne Adresse de la page : carte donne /carte. Vide pour la page d'accueil.
path chaîne Chemin public : / pour l'accueil, sinon /<slug>.
is_home booléen Page d'accueil (une seule par site).
in_nav booléen Affichée dans le menu (vrai par défaut).
position entier Ordre dans le menu (0 = premier).
sections tableau Sections du brouillon, voir Format des sections.
meta_title chaîne ou null Titre pour Google (160 caractères max.).
meta_description chaîne ou null Description pour Google (320 caractères max.).
og_image chaîne ou null Image de partage sur les réseaux sociaux.
published_at date ou null Dernière publication de cette page.
has_unpublished_changes booléen Le brouillon diffère-t-il de la version en ligne ?
updated_at date Dernière modification : à renvoyer pour le verrou optimiste.

Lister les pages#

GET /v1/sites/{site}/pages · Jeton

Toutes les pages du site, dans l'ordre du menu.

curl https://api.monsiteo.com/v1/sites/7/pages \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{
  "data": [
    { "id": 18, "site_id": 7, "title": "Accueil", "slug": "", "path": "/", "is_home": true, "in_nav": true, "position": 0, "sections": [], "meta_title": null, "meta_description": null, "og_image": null, "published_at": "2026-10-25T17:45:03+00:00", "has_unpublished_changes": false, "updated_at": "2026-10-25T17:44:10+00:00" },
    { "id": 19, "site_id": 7, "title": "Notre carte", "slug": "notre-carte", "path": "/notre-carte", "is_home": false, "in_nav": true, "position": 1, "sections": [], "meta_title": "Carte de la Friterie William à Namur", "meta_description": "Frites, fricadelles, mitraillettes et sauces maison : découvrez nos prix.", "og_image": null, "published_at": null, "has_unpublished_changes": true, "updated_at": "2026-10-26T09:20:00+00:00" }
  ]
}

(tableaux sections vidés pour la lisibilité). Erreurs : 403, 404.

Créer une page#

POST /v1/sites/{site}/pages · Jeton

La page est ajoutée en dernière position du menu.

Paramètre Type Obligatoire Règles
title chaîne oui 150 caractères max.
slug chaîne non 120 caractères max. ; normalisée (minuscules, sans accents) ; par défaut tirée du titre
sections tableau non sections initiales, nettoyées selon le format des sections
template chaîne non un type de section du catalogue (hero, menu...)

Sans sections, la page contient une section Texte dont le titre est celui de la page.

Attention Le paramètre template est validé (il doit être un type de section existant) mais n'a pour l'instant aucun effet sur le contenu créé. Pour créer une page avec une section précise, envoyez-la dans sections.

Gestion de l'adresse : si la valeur est déjà prise sur le site, un suffixe -2, -3... est ajouté. Les adresses sitemap.xml, robots.txt, contact, api et admin sont réservées et reçoivent le suffixe -page.

curl -X POST https://api.monsiteo.com/v1/sites/7/pages \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd" \
  -d '{
    "title": "Notre carte",
    "slug": "carte",
    "sections": [
      { "type": "menu", "variant": "columns", "data": {
        "title": "Notre carte",
        "categories": [
          { "name": "Frites", "items": [
            { "name": "Petite frite", "price": "3,20" },
            { "name": "Grande frite", "price": "4,20", "tag": "Maison" }
          ] },
          { "name": "Snacks", "items": [
            { "name": "Fricadelle", "price": "3,00" },
            { "name": "Mitraillette poulet", "description": "Baguette, frites, poulet pané, crudités", "price": "8,50" }
          ] }
        ],
        "note": "Allergènes disponibles au comptoir."
      } }
    ]
  }'

Réponse 201 : la page dans data (la section reçoit un id et un style par défaut).

Erreurs :

  • 402 : « Votre formule est limitée à 5 pages. » (5 pages en Gratuit, 30 en Site, 100 en Site + Novadesko, par site) ;
  • 403, 404, 422.

Lire une page#

GET /v1/pages/{page} · Jeton

curl https://api.monsiteo.com/v1/pages/19 \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"

Réponse 200 : la page dans data. Erreurs : 403, 404.

Modifier une page#

PATCH /v1/pages/{page} · Jeton

C'est la route qu'utilise la sauvegarde automatique de l'éditeur. Envoyez seulement ce qui change.

Paramètre Type Obligatoire Règles
title chaîne non non vide, 150 caractères max.
slug chaîne ou null non 120 caractères max. ; ignoré pour la page d'accueil ; vide = tiré du titre
in_nav booléen non afficher ou non dans le menu
is_home booléen non seule la valeur true est acceptée : la page devient l'accueil
sections tableau non remplace tout le brouillon ; 60 sections max.
meta_title chaîne ou null non 160 caractères max.
meta_description chaîne ou null non 320 caractères max.
og_image chaîne ou null non URL, 2000 caractères max.
updated_at date non verrou optimiste, voir ci-dessous

Quand une page devient l'accueil ("is_home": true), son adresse devient vide (/) et l'ancienne page d'accueil reçoit une adresse tirée de son titre.

Verrou optimiste#

Envoyez dans updated_at la valeur reçue lors de votre dernière lecture. Si la page a été enregistrée depuis (par un autre appareil, un collègue ou un script), la mise à jour est refusée avec un 409 au lieu d'écraser silencieusement le travail d'un autre :

{ "message": "Cette page a été modifiée depuis un autre appareil. Rechargez-la.", "conflict": true }

Une tolérance d'une seconde est appliquée. Sans updated_at, la mise à jour s'applique toujours (« le dernier qui écrit gagne »).

curl -X PATCH https://api.monsiteo.com/v1/pages/19 \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd" \
  -d '{
    "meta_title": "Carte de la Friterie William à Namur",
    "meta_description": "Frites, fricadelles, mitraillettes et sauces maison : découvrez nos prix.",
    "in_nav": true,
    "updated_at": "2026-10-26T09:20:00+00:00"
  }'

Réponse 200 : la page à jour, avec un nouveau updated_at. Erreurs : 403, 404, 409, 422.

Bon à savoir Pour modifier une seule section, relisez la page, modifiez la section dans le tableau puis renvoyez tout le tableau sections. Les sections absentes du tableau envoyé sont supprimées du brouillon.

Supprimer une page#

DELETE /v1/pages/{page} · Jeton

curl -X DELETE https://api.monsiteo.com/v1/pages/19 \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{ "ok": true }

La page disparaît aussi de la version en ligne. La page d'accueil ne peut pas être supprimée (422) : choisissez d'abord une autre page d'accueil.

{ "message": "La page d'accueil ne peut pas être supprimée.", "errors": { "page": ["La page d'accueil ne peut pas être supprimée."] } }

Dupliquer une page#

POST /v1/pages/{page}/duplicate · Jeton

Crée une copie du brouillon, intitulée « (copie) », placée en fin de menu, jamais page d'accueil, avec de nouveaux identifiants de sections. La copie n'est pas publiée.

curl -X POST https://api.monsiteo.com/v1/pages/19/duplicate \
  -H "Accept: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"

Réponse 201 : la nouvelle page ("title": "Notre carte (copie)", "slug": "notre-carte-copie").

Attention La duplication ne vérifie pas la limite de pages de la formule.

Réordonner les pages#

POST /v1/sites/{site}/pages/reorder · Jeton

Paramètre Type Obligatoire Règles
ids tableau d'entiers oui identifiants de pages de ce site, dans le nouvel ordre

La position de chaque page devient son rang dans le tableau (0, 1, 2...). Les pages non citées gardent leur position.

curl -X POST https://api.monsiteo.com/v1/sites/7/pages/reorder \
  -H "Accept: application/json" -H "Content-Type: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd" \
  -d '{"ids":[18,21,19,20]}'

Réponse 200 : la liste des pages dans le nouvel ordre (même forme que Lister les pages). Erreur 422 si un identifiant n'appartient pas au site.

Aperçu HTML#

POST /v1/pages/{page}/preview · Jeton

Renvoie la page rendue en HTML complet, comme sur le site public, à partir du brouillon ou de sections et d'un thème envoyés dans la requête (rien n'est enregistré). C'est ce qu'affiche l'aperçu de l'éditeur pendant que vous tapez.

Paramètre Type Obligatoire Règles
sections tableau non sections à afficher (60 max.), nettoyées ; absent = brouillon enregistré
theme objet non clés du thème à essayer (primary, heading_font...) ; les autres clés sont ignorées
curl -X POST https://api.monsiteo.com/v1/pages/18/preview \
  -H "Accept: text/html" -H "Content-Type: application/json" \
  -H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd" \
  -d '{"theme":{"primary":"#E63946"}}' \
  -o apercu.html

Réponse 200 avec Content-Type: text/html; charset=utf-8 et X-Robots-Tag: noindex. Erreurs (en JSON) : 403, 404, 422.

Mis à jour le 26 octobre 2026