Centre d’aide Activity Messenger

API de site Web : publier des pages

L’API de site Web permet de créer, remplacer ou supprimer des pages de contenu sur un site Web Activity Messenger existant. Chaque modification crée d’abord une révision immuable. Le site public ne change qu’après la vérification et la publication de cette révision. Pour l’API générale de l’organisation, consultez la référence de l’API. Pour les téléversements, les sections réutilisables et les redirections, consultez API de site Web : médias, sections réutilisables et redirections.

Se connecter et trouver le site Web

Consultez l’introduction à l’API pour l’authentification, les en-têtes, la pagination, les limites et les erreurs. Sauf indication contraire, les chemins ci-dessous sont relatifs à https://activitymessenger.com/api/v1/organization/{organization}/websites/{website}.

Le chemin de base est /v1/organization/{organization}/websites. Un appel GET à ce chemin énumère les identifiants des sites Web. Choisissez un identifiant et ajoutez /{website} aux autres appels. Les identifiants sont des numéros de ressources, pas des slugs ni des domaines.

  • GET / : identité du site, thème, langue par défaut et locales activées.
  • GET /component-schema : schema_version, mises en page et emplacements pris en charge, formats de contenu, langues et règles de validation.
  • GET /pages : identifiants, titres et slugs localisés, navigation, visibilité et edit_version des pages.
  • GET /pages/{page} : état d’une page et son checksum courant.
  • GET /page-keys/{key} : page et dernière publication associées à votre clé externe stable; les deux valeurs sont nulles pour une clé inutilisée.

Vérifier plusieurs clés de page en une seule requête

Utilisez GET /page-keys?keys=cle-un,cle-deux pour obtenir l’état de publication de plusieurs clés de page stables sans récupérer l’instantané complet de chaque page. Ce point de terminaison groupé renvoie un résultat compact pour chaque clé; utilisez GET /page-keys/{key} pour obtenir la description et l’instantané complets d’une page.

Par exemple, ajoutez cette requête au chemin du site Web :

GET /page-keys?keys=accueil,guide-inscription,contact
Accept: application/json

La réponse est un objet dont la propriété pages est indexée par clé de page. Chaque entrée contient page_key, un objet page compact avec son id numérique et son edit_version, ainsi que l’état last_publication :

{
  "pages": {
    "accueil": {
      "page_key": "accueil",
      "page": {"id": 321, "edit_version": 4},
      "last_publication": {
        "id": 845,
        "page_key": "accueil",
        "status": "published",
        "published_at": "2026-09-27T12:00:00.000000Z"
      }
    },
    "guide-inscription": {
      "page_key": "guide-inscription",
      "page": null,
      "last_publication": null
    }
  }
}

L’exemple est abrégé : last_publication contient les champs d’état de publication renvoyés par l’API. Une clé sans publication effectuée a des valeurs nulles pour page et last_publication. Les clés sont séparées par des virgules; les espaces qui les entourent sont retirés, les valeurs vides sont ignorées et les doublons ne sont renvoyés qu’une fois. Indiquez entre 1 et 250 clés distinctes. Chaque clé doit commencer par une lettre minuscule ou un chiffre et ne contenir que des lettres minuscules, des chiffres, des traits d’union ou des traits de soulignement; une entrée invalide ou trop volumineuse renvoie HTTP 422. La valeur encodée du paramètre keys est limitée à 8 000 caractères.

Préparer et publier une page

  1. Récupérez les langues activées et component-schema du site.
  2. Pour une page existante, lisez son checksum courant. Utilisez "missing" uniquement pour une nouvelle clé de page.
  3. Préparez le document complet avec POST /pages pour une nouvelle page identifiée par sa clé, PUT /pages/{page}/document pour remplacer une page existante ou POST /revisions pour upsert ou delete. DELETE /pages/{page} prépare une suppression sans l’appliquer immédiatement.
  4. Examinez la réponse HTTP 201 ou GET /revisions/{revision}. Vérifiez before_snapshot, le document soumis, les composants natifs compilés, content_checksum et le statut. Le contenu compilé sert à la révision; ce n’est pas une URL d’aperçu public.
  5. Publiez précisément cette révision avec POST /revisions/{revision}/publish et {"content_checksum":"<somme de contrôle de 64 caractères reçue à la préparation>"}. La réponse contient l’identifiant de page, le published_checksum final, le statut et l’heure de publication.

Voici le corps d’un appel POST /revisions pour un site en français seulement. Remplacez les identifiants et le contenu selon votre site. Un site bilingue exige en et fr dans chaque objet localisé, y compris le content de chaque bloc.

{
  "page_key": "bien-demarrer",
  "operation": "upsert",
  "expected_checksum": "missing",
  "document": {
    "locales": {
      "fr": {"title": "Bien démarrer", "slug": "guides/bien-demarrer", "description": "Découvrez les fonctions essentielles."}
    },
    "published": true,
    "show_in_nav": false,
    "nav_parent_id": null,
    "order": 10,
    "is_crawler_visible": true,
    "assets": [],
    "sections": [{
      "template": "single-column",
      "blocks": [{"slot": "main", "format": "markdown", "content": {"fr": "# Bien démarrer\\n\\nBienvenue."}}]
    }]
  }
}

Utilisez un page_key stable d’au plus 100 lettres minuscules, chiffres, traits d’union ou traits de soulignement. Le champ facultatif source_commit contient un identifiant de commit hexadécimal de 40 à 64 caractères. POST /pages fixe operation=upsert et retrouve une page existante par sa clé. PUT /pages/{page}/document lie la révision à cette page; utilisez-le pour adopter une page avec une nouvelle clé externe. DELETE /pages/{page} demande la clé et le checksum courant, sans document.

Document de page et règles de mise à jour

La version 1 accepte single-column (main), two-columns et two-columns-wide-right (left, right), ainsi que three-columns-wide-center (left, center, right). Les blocs utilisent format: markdown ou format: html et deviennent des blocs de texte enrichi natifs modifiables. Markdown retire le HTML brut et les liens non sécuritaires; le HTML passe par l’assainisseur de texte enrichi. Les tableaux et les blocs de code sont pris en charge. anchor_id peut identifier une section. Consultez GET /component-schema avant de générer un document.

Un remplacement remplace toutes les sections et tous les blocs; leurs identifiants numériques peuvent changer. Il met à jour le titre, le slug et la description localisés, la navigation, la publication et l’indexation, tout en conservant les autres pages et les réglages du site. Les emplacements de sections réutilisables sur cette page sont supprimés, sauf si le document contient explicitement la référence sidebar voulue. Examinez before_snapshot avant d’adopter ou de remplacer une page créée dans l’éditeur. La page d’accueil et la page 404 sont protégées. Déplacez les pages enfants avant de supprimer leur parent. La suppression est logique et demande une publication distincte; cette API n’offre pas de restauration. Les médias ne sont pas supprimés avec une page.

Une même requête de préparation valide est idempotente; une seconde publication de la même révision renvoie son résultat précédent. Pour une autre modification, récupérez le dernier checksum et préparez une nouvelle révision. Une clé supprimée reste associée à sa page d’origine. La publication revérifie l’état initial, la propriété, les médias, les langues, les slugs et le parent de navigation. HTTP 409 signifie que l’état vérifié a changé : relisez-le et préparez une nouvelle révision. Les documents sont limités à 2 Mo par requête. Consultez l’introduction pour les erreurs communes.

Les limites comprennent 100 sections, 50 blocs par section, 200 médias, 200 000 caractères par bloc localisé et trois segments de slug séparés par des barres obliques. La visibilité et le mot de passe propres au site s’appliquent toujours. Une page avec published: false demeure inaccessible au public après la publication de sa révision.

L’API gère les pages de contenu de sites existants. Elle ne crée ni sites ni domaines, n’expose pas tous les modèles du créateur, ne modifie pas le thème commun et ne fournit pas de site d’aperçu public distinct.