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'estdailywear-shop, ce qui donne l'adresse finaledailywear-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). Sitrue, toutes les requêtes de chemin sont dirigées versindex.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.originMetasconserve 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é | Type | Description |
|---|---|---|
id | string | Identifiant unique de la ressource. S'insère dans le {webHostingId} des chemins de consultation unitaire, de modification et de suppression. |
type | string | Type de la ressource. Pour un Web Hosting, toujours "WebHosting". |
space | Refer<Space> | Le Space auquel appartient ce Web Hosting. |
createdBy | Refer<User> | L'utilisateur qui a créé la ressource. |
createdAt | string (date-time) | Date et heure de création. |
updatedBy | Refer<User> | Le dernier utilisateur ayant modifié la ressource. |
updatedAt | string (date-time) | Date et heure de la dernière modification. |
state | string (enum) | État de traitement du déploiement. L'une des 4 valeurs ci-dessous. |
error | string | En cas d'échec du traitement, le motif de l'échec. Vide en l'absence d'échec. |
totalFileSize | integer | Taille totale des fichiers envoyés (en octets). |
originMetas | PageMeta[] | 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. |
version | integer (≥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.
state | Signification |
|---|---|
PENDING | En attente de traitement. |
PROCESSING | En cours de traitement. |
COMPLETED | Traitement 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é | Type | Description |
|---|---|---|
name | string (1~64) | Nom du Web Hosting. Obligatoire à la création. |
description | string (≤128) | Description. Facultatif. |
isSpa | boolean | Indique 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. |
subdomain | string (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. |
upload | Refer<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. |
url | string | URL d'accès une fois le traitement terminé. Renseignée par le système. |
pageMetas | PageMeta[] | Les valeurs de balises meta à remplacer document par document. Facultatif. Expliqué dans Métadonnées par document, plus bas. |
customDomain | string | Domaine 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é | Type | Description |
|---|---|---|
file | string (1-1024) | Le chemin relatif du document ciblé. Par exemple index.html, about/index.html. |
meta | WebHostingMeta | Les 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.
| Emplacement | Longueur maximale | Balises modifiées |
|---|---|---|
title | 200 | <title>, og:title, twitter:title |
description | 500 | description, og:description, twitter:description |
canonical | 2048 | link[rel=canonical], og:url |
image | 2048 | og:image, twitter:image |
siteName | 200 | og:site_name |
favicon | 2048 | link[rel=icon], link[rel="shortcut icon"], link[rel=apple-touch-icon] |
themeColor | 32 | theme-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ête | Résultat |
|---|---|
| La clé d'emplacement est absente | Le réglage actuel est conservé. |
La clé d'emplacement vaut null | Le réglage actuel est conservé. |
| La clé d'emplacement est une chaîne vide | Cette balise est retirée du document. |
| La clé d'emplacement porte une valeur | Elle est remplacée par cette valeur. |
Une entrée de document est omise de pageMetas | Le réglage de ce document est conservé. |
pageMetas est absent | Les 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.
| Code | Condition |
|---|---|
WGL422031 | Une 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é. |
WGL422113 | pageMetas 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. |
WGL500039 | Les informations du domaine personnalisé associé n'ont pas pu être lues depuis le réseau de diffusion. |
WGL429001 | Une 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.
Documents associés
- 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.
