Web Hosting

Web Hosting est une ressource qui met en ligne un site web statique compilé dans un Space et le diffuse à l'adresse {subdomain}.weegloo.app. Pour reprendre l'exemple d'une boutique de vêtements, héberger le site de boutique compilé sur dailywear-shop.weegloo.app constitue un Web Hosting.

La mise en ligne se déroule comme suit. Vous regroupez d'abord le résultat de la compilation dans une archive ZIP ou tar.gz, vous l'envoyez via l'API Upload et vous obtenez un Upload. Vous référencez ensuite cet Upload pour créer un Web Hosting avec POST /web-hostings. Lorsque le système a traité les fichiers envoyés et que sys.state passe à COMPLETED, le site est accessible via url. Dans la CMA, un Web Hosting est une ressource enfant d'un Space et son chemin se base sur /spaces/{spaceId}/web-hostings.

Structure de la ressource

Voici la réponse de consultation unitaire du Web Hosting « Site de la boutique DailyWear » une fois le traitement terminé. Outre sys (propriétés système), il porte des propriétés de corps (name, description, isSpa, subdomain, url, pageMetas).

{
  "sys": {
    "id": "3trmXRM3RqbgSnifyg7PWeb01Examp",
    "type": "WebHosting",
    "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
    "createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
    "updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
    "createdAt": "2026-06-18T11:40:00.000Z",
    "updatedAt": "2026-06-18T11:40:05.000Z",
    "state": "COMPLETED",
    "totalFileSize": 245786,
    "originMetas": [
      {
        "file": "index.html",
        "meta": {
          "title": "Daily Wear Store",
          "description": "Everyday clothing store"
        }
      }
    ],
    "version": 3
  },
  "name": "Site de la boutique DailyWear",
  "description": "Site statique pour la boutique de vêtements et accessoires",
  "isSpa": true,
  "subdomain": "dailywear-shop",
  "url": "https://dailywear-shop.weegloo.app",
  "pageMetas": [
    {
      "file": "index.html",
      "meta": {
        "title": "DailyWear - clothes for every day",
        "description": "Everyday pieces you can wear to work and on weekends.",
        "image": "https://dailywear-shop.weegloo.app/og-cover.png"
      }
    }
  ]
}

Clés principales :

  • subdomain : le sous-domaine sous lequel le site est diffusé. Dans l'exemple ci-dessus, c'est dailywear-shop, ce qui donne l'adresse finale dailywear-shop.weegloo.app.
  • url : l'adresse du site, accessible une fois le traitement terminé.
  • isSpa : indique s'il s'agit d'une application monopage (SPA). Si true, toutes les requêtes de chemin sont dirigées vers index.html.
  • state : l'état de traitement du déploiement des fichiers envoyés. Décrit ci-dessous dans Propriétés système (sys).
  • pageMetas : les valeurs de balises meta remplacées document par document. sys.originMetas conserve les valeurs telles qu'elles étaient avant le remplacement. Les deux sont expliquées dans Métadonnées par document, plus bas.

Propriétés système (sys)

Chaque Web Hosting porte ses propriétés système communes dans l'objet sys. space, createdBy et updatedBy adoptent la forme Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).

PropriétéTypeDescription
idstringIdentifiant unique de la ressource. S'insère dans le {webHostingId} des chemins de consultation unitaire, de modification et de suppression.
typestringType de la ressource. Pour un Web Hosting, toujours "WebHosting".
spaceRefer<Space>Le Space auquel appartient ce Web Hosting.
createdByRefer<User>L'utilisateur qui a créé la ressource.
createdAtstring (date-time)Date et heure de création.
updatedByRefer<User>Le dernier utilisateur ayant modifié la ressource.
updatedAtstring (date-time)Date et heure de la dernière modification.
statestring (enum)État de traitement du déploiement. L'une des 4 valeurs ci-dessous.
errorstringEn cas d'échec du traitement, le motif de l'échec. Vide en l'absence d'échec.
totalFileSizeintegerTaille totale des fichiers envoyés (en octets).
originMetasPageMeta[]Les valeurs de balises meta que les documents portaient à l'origine. Renseigné uniquement pour un Web Hosting créé par l'installation d'une MarketApp. Expliqué dans Métadonnées par document, plus bas.
versioninteger (≥1)Version de la ressource. Incrémentée de 1 à chaque création et modification. C'est la valeur à transmettre dans x-weegloo-version lors des requêtes de modification et de modification partielle.

state représente l'étape de traitement du déploiement des fichiers envoyés. Il ne s'agit pas de l'état de publication d'un Content : un Web Hosting n'a pas de notion de publication ni d'archivage. Une fois les fichiers traités et state passé à COMPLETED, le site est accessible via url.

stateSignification
PENDINGEn attente de traitement.
PROCESSINGEn cours de traitement.
COMPLETEDTraitement terminé. Accessible via url.
FAILEDÉchec du traitement. Le motif figure dans sys.error.

Propriétés du corps

Les propriétés de corps d'un Web Hosting sont les suivantes.

PropriétéTypeDescription
namestring (1~64)Nom du Web Hosting. Obligatoire à la création.
descriptionstring (≤128)Description. Facultatif.
isSpabooleanIndique s'il s'agit d'une application monopage. Si true, toutes les requêtes de chemin sont dirigées vers index.html (routage SPA). Obligatoire à la création.
subdomainstring (3~32)Sous-domaine de diffusion. Motif ^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$ (minuscules, chiffres et traits d'union ; pas de trait d'union en début ni en fin). Obligatoire à la création.
uploadRefer<Upload>Référence vers les fichiers à envoyer. Archive ZIP ou tar.gz, qui doit contenir index.html à sa racine et référencer ses ressources par chemins relatifs.
urlstringURL d'accès une fois le traitement terminé. Renseignée par le système.
pageMetasPageMeta[]Les valeurs de balises meta à remplacer document par document. Facultatif. Expliqué dans Métadonnées par document, plus bas.
customDomainstringDomaine personnalisé associé. Facultatif. Décrit ci-dessous dans Domaine personnalisé.

Vérification du sous-domaine

Avant de créer un Web Hosting, vous pouvez vérifier si le sous-domaine que vous comptez utiliser est disponible. Transmettez le sous-domaine à vérifier dans le paramètre de requête subdomain à GET /web-hostings/availability?subdomain=....

La réponse a la forme suivante : si available vaut true, le sous-domaine est utilisable.

{ "subdomain": "dailywear-shop", "available": true }

Domaine personnalisé

Au lieu de l'adresse par défaut {subdomain}.weegloo.app, vous pouvez associer à un Web Hosting un domaine dont vous disposez. L'état du domaine associé est représenté par l'objet customDomain, de forme { id, domain, dns, cert }. dns et cert correspondent respectivement à l'état de la validation de propriété du domaine (DNS) et à celui de l'émission du certificat (cert), tous deux de forme { status, txtName, txtContent }. txtName et txtContent sont le nom et la valeur de l'enregistrement DNS TXT à créer côté domaine.

{
  "id": 1024,
  "domain": "shop.dailywear.example",
  "dns": {
    "status": "pending",
    "txtName": "_weegloo.shop.dailywear.example",
    "txtContent": "weegloo-verify=3trmXRM3RqbgSnifyg7PWebVerifyEx"
  },
  "cert": {
    "status": "pending",
    "txtName": "_acme-challenge.shop.dailywear.example",
    "txtContent": "acme-verify=3trmXRM3RqbgSnifyg7PWebCertEx"
  }
}

Après avoir créé les enregistrements TXT côté domaine, déclenchez la validation avec PUT /web-hostings/{webHostingId}/custom-domain/status/verify, et consultez l'état courant avec GET /web-hostings/{webHostingId}/custom-domain/status. Une fois la validation terminée, dns.status passe à active et cert.status passe à ok. Appeler la consultation d'état sur un Web Hosting auquel aucun domaine personnalisé n'est associé renvoie une erreur (voir Erreurs).

Métadonnées par document

Vous pouvez remplacer les balises meta du <head> de chaque document d'un site que vous avez mis en ligne. Le titre, la description et l'image qui apparaissent dans les résultats de recherche et dans les aperçus de liens des messageries prennent ces valeurs. L'objectif est de les changer en une seule requête, sans reconstruire ni téléverser à nouveau les fichiers.

La modification ne fonctionne que sur un Web Hosting créé par l'installation d'une MarketApp. Dès que vous remplacez les fichiers via upload, la modification n'est plus possible et sys.originMetas est vidé du même coup. Une requête qui enfreint cette condition est rejetée (voir Erreurs).

Les valeurs se placent dans le tableau pageMetas, et une entrée vise un document.

PropriétéTypeDescription
filestring (1-1024)Le chemin relatif du document ciblé. Par exemple index.html, about/index.html.
metaWebHostingMetaLes valeurs d'emplacement à appliquer à ce document.

sys.originMetas a la même forme et conserve les valeurs que les documents portaient avant le remplacement. Pour revenir en arrière, renvoyez ces valeurs.

Emplacements

Les clés de meta s'appellent des emplacements. Un emplacement modifie plusieurs balises à la fois.

EmplacementLongueur maximaleBalises modifiées
title200<title>, og:title, twitter:title
description500description, og:description, twitter:description
canonical2048link[rel=canonical], og:url
image2048og:image, twitter:image
siteName200og:site_name
favicon2048link[rel=icon], link[rel="shortcut icon"], link[rel=apple-touch-icon]
themeColor32theme-color

Si une balise est absente du document, elle est créée et insérée. Cinq font exception : twitter:title, twitter:description, twitter:image, link[rel="shortcut icon"] et link[rel=apple-touch-icon] ne changent que si le document les possède déjà, et ne sont pas créées s'il ne les a pas.

Ce que fait chaque valeur

Le résultat dépend de la forme de la valeur envoyée.

Ce que vous mettez dans la requêteRésultat
La clé d'emplacement est absenteLe réglage actuel est conservé.
La clé d'emplacement vaut nullLe réglage actuel est conservé.
La clé d'emplacement est une chaîne videCette balise est retirée du document.
La clé d'emplacement porte une valeurElle est remplacée par cette valeur.
Une entrée de document est omise de pageMetasLe réglage de ce document est conservé.
pageMetas est absentLes réglages de tous les documents sont conservés.

Prêtez une attention particulière aux deux dernières lignes. Le serveur fusionne ce que vous envoyez par document et par emplacement. Ainsi, omettre une entrée du tableau n'efface pas un réglage ; pour l'effacer, vous devez indiquer une chaîne vide sur cet emplacement.

Une chaîne vide retire la balise au lieu de rétablir l'état d'origine. Une balise que le document portait à l'origine disparaît avec elle. Pour rétablir la valeur d'origine, renvoyez la valeur encore conservée dans sys.originMetas.

Le corps de requête suivant change uniquement le titre de index.html et retire sa balise de description.

{
  "pageMetas": [
    {
      "file": "index.html",
      "meta": {
        "title": "DailyWear - des vêtements pour chaque jour",
        "description": ""
      }
    }
  ]
}

Modifier pageMetas déclenche le traitement qui applique ces valeurs aux documents réels. sys.state revient à PENDING puis repasse à COMPLETED, et entre-temps les modifications et les suppressions sont rejetées.

Erreurs

Ce sont les codes que l'on rencontre lorsque l'on manipule un Web Hosting. Pour les codes communs à toutes les ressources, consultez Erreurs communes.

CodeCondition
WGL422031Une tentative de modification ou de suppression d'un Web Hosting a eu lieu pendant le traitement des fichiers de déploiement. Réessayez une fois le traitement terminé.
WGL422113pageMetas a été envoyé à un Web Hosting dont les métadonnées par document ne sont pas modifiables. Soit il n'a pas été créé par l'installation d'une MarketApp, soit ses fichiers ont depuis été remplacés par un téléversement.
WGL500039Les informations du domaine personnalisé associé n'ont pas pu être lues depuis le réseau de diffusion.
WGL429001Une tentative d'association d'un premier domaine personnalisé à un Web Hosting qui n'était encore associé à aucun domaine a eu lieu alors que le nombre de domaines personnalisés de l'Organization atteignait déjà la limite du forfait. Remplacer un domaine déjà associé n'augmente pas ce nombre et n'est donc pas soumis à cette vérification.

API

L'URL de base de tous les endpoints ci-dessous est https://cma.weegloo.com/v1, et l'en-tête Authorization doit contenir un jeton Bearer authentifiant la CMA. Les modifications et modifications partielles doivent transmettre en plus l'en-tête X-Weegloo-Version (le sys.version courant de la ressource) pour assurer le contrôle de concurrence optimiste. Les requêtes de création et de suppression n'utilisent pas cet en-tête.

  • API Upload : la requête qui envoie l'archive ZIP de fichiers statiques et renvoie l'Upload à utiliser pour créer un Web Hosting.
  • Space : le Space auquel appartient un Web Hosting.