Web Hosting

Web Hosting é o recurso que coloca um site estático que você compilou em um Space e o serve no endereço {subdomain}.weegloo.app. Tomando uma loja de roupas como exemplo, exibir o site da loja compilada em dailywear-shop.weegloo.app é um único Web Hosting.

A ordem para publicá-lo é a seguinte. Primeiro, empacote o resultado da compilação em ZIP ou tar.gz, envie-o pela Upload API e receba um Upload. Referenciando esse Upload, crie um Web Hosting com POST /web-hostings. Quando o sistema processa os arquivos enviados e sys.state se torna COMPLETED, o site fica acessível por url. Na CMA, Web Hosting é um recurso filho de Space, e seu caminho tem como base /spaces/{spaceId}/web-hostings.

Estrutura do recurso

Abaixo está a resposta de consulta única de um Web Hosting já processado, "Site da loja DailyWear". Junto com sys (propriedades do sistema), ele possui propriedades de corpo (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 da loja DailyWear",
  "description": "Site estático da loja de roupas e acessórios",
  "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"
      }
    }
  ]
}

Chaves principais:

  • subdomain: o subdomínio no qual o site será servido. O exemplo acima é dailywear-shop, e o endereço final é dailywear-shop.weegloo.app.
  • url: o endereço do site, acessível após a conclusão do processamento.
  • isSpa: indica se é um aplicativo de página única (SPA). Se true, todas as requisições de caminho são direcionadas para index.html.
  • state: o estado do processamento de implantação dos arquivos enviados. Explicado abaixo em Propriedades do sistema (sys).
  • pageMetas: os valores das tags meta sobrescritos por documento. sys.originMetas guarda os valores como estavam antes da sobrescrita. Ambos são explicados em Metadados por documento, abaixo.

Propriedades do sistema (sys)

Todo Web Hosting armazena as propriedades de sistema comuns no objeto sys. space, createdBy e updatedBy entram no formato Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).

PropriedadeTipoDescrição
idstringIdentificador único do recurso. Entra em {webHostingId} dos caminhos de consulta única, modificação e exclusão.
typestringTipo do recurso. Para Web Hosting é sempre "WebHosting".
spaceRefer<Space>O Space ao qual este Web Hosting pertence.
createdByRefer<User>Usuário que criou o recurso.
createdAtstring (date-time)Momento da criação.
updatedByRefer<User>Usuário que modificou o recurso por último.
updatedAtstring (date-time)Momento da última modificação.
statestring (enum)Estado do processamento de implantação. Um dos 4 valores abaixo.
errorstringMotivo, quando o processamento falha. Fica vazio quando não há falha.
totalFileSizeintegerTamanho total dos arquivos enviados (em bytes).
originMetasPageMeta[]Os valores das tags meta que os documentos traziam originalmente. Preenchido apenas em um Web Hosting criado ao instalar uma MarketApp. Explicado em Metadados por documento, abaixo.
versioninteger (≥1)Versão do recurso. Aumenta de 1 em 1 a cada criação e modificação. É o valor que deve ser enviado em x-weegloo-version nas requisições de modificação e modificação parcial.

state indica a etapa de processamento que implanta os arquivos enviados. Não é o estado de publicação de Content, e Web Hosting não tem o conceito de publicação ou arquivamento. Quando os arquivos são processados e o estado se torna COMPLETED, o site fica acessível por url.

stateSignificado
PENDINGAguardando processamento.
PROCESSINGEm processamento.
COMPLETEDProcessamento concluído. Acessível por url.
FAILEDFalha no processamento. O motivo é registrado em sys.error.

Propriedades de corpo

As propriedades de corpo de Web Hosting são as seguintes.

PropriedadeTipoDescrição
namestring (1~64)Nome do Web Hosting. Obrigatório na criação.
descriptionstring (≤128)Descrição. Opcional.
isSpabooleanIndica se é um aplicativo de página única. Se true, todas as requisições de caminho são direcionadas para index.html (para roteamento de SPA). Obrigatório na criação.
subdomainstring (3~32)Subdomínio de serviço. Padrão ^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$ (letras minúsculas, dígitos, hífen; o início e o fim não podem ser hífen). Obrigatório na criação.
uploadRefer<Upload>Referência que aponta para os arquivos a enviar. É um ZIP ou tar.gz, deve ter index.html na raiz e os ativos devem ser referenciados por caminhos relativos.
urlstringURL de acesso após a conclusão do processamento. Preenchida pelo sistema.
pageMetasPageMeta[]Os valores das tags meta a sobrescrever por documento. Opcional. Explicado em Metadados por documento, abaixo.
customDomainstringDomínio personalizado conectado. Opcional. Explicado abaixo em Domínio personalizado.

Verificação de subdomínio

Antes de criar um Web Hosting, você pode verificar se o subdomínio que pretende usar está livre. Basta passar o subdomínio a verificar na query subdomain em GET /web-hostings/availability?subdomain=....

A resposta tem o formato a seguir; se available for true, esse subdomínio está disponível para uso.

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

Domínio personalizado

Em vez do endereço padrão {subdomain}.weegloo.app, você pode conectar ao Web Hosting um domínio próprio que você possua. O estado do domínio conectado é representado pelo objeto customDomain, no formato { id, domain, dns, cert }. dns e cert são, respectivamente, o estado da verificação de propriedade do domínio (DNS) e da emissão do certificado (cert), ambos no formato { status, txtName, txtContent }. txtName e txtContent são o nome e o valor do registro DNS TXT que deve ser cadastrado no lado do domínio.

{
  "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"
  }
}

Depois de cadastrar o registro TXT no lado do domínio, dispare a verificação com PUT /web-hostings/{webHostingId}/custom-domain/status/verify e consulte o estado atual com GET /web-hostings/{webHostingId}/custom-domain/status. Quando a verificação termina, dns.status passa a active e cert.status passa a ok. Se você chamar a consulta de estado em um Web Hosting sem domínio personalizado conectado, a resposta é um erro (veja Erros).

Metadados por documento

Você pode sobrescrever as tags meta do <head> de cada documento de um site que publicou. O título, a descrição e a imagem que aparecem nos resultados de busca e nas prévias de links dos mensageiros passam a ter esses valores. O objetivo é mudá-los com uma única requisição, sem recompilar e enviar os arquivos de novo.

A edição só funciona em um Web Hosting criado ao instalar uma MarketApp. Assim que você substituir os arquivos por upload, a edição deixa de ser possível e sys.originMetas é esvaziado junto. Uma requisição que quebre essa condição é rejeitada (consulte Erros).

Os valores vão no array pageMetas, e cada entrada aponta para um documento.

PropriedadeTipoDescrição
filestring (1-1024)O caminho relativo do documento de destino. Por exemplo index.html, about/index.html.
metaWebHostingMetaOs valores de slot aplicados a esse documento.

sys.originMetas tem a mesma forma e guarda os valores que os documentos traziam antes da sobrescrita. Para reverter, envie esses valores de novo.

Slots

As chaves de meta são chamadas de slots. Um slot muda várias tags de uma vez.

SlotComprimento máximoTags alteradas
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

Se uma tag não estiver no documento, ela é criada e inserida. Cinco são exceção: twitter:title, twitter:description, twitter:image, link[rel="shortcut icon"] e link[rel=apple-touch-icon] só mudam quando o documento já as tem, e não são criadas quando não as tem.

O que cada valor faz

O resultado depende da forma do valor enviado.

O que você coloca na requisiçãoResultado
A chave do slot não está presenteA configuração atual permanece como está.
A chave do slot é nullA configuração atual permanece como está.
A chave do slot é uma string vaziaEssa tag é removida do documento.
A chave do slot tem um valorÉ sobrescrita com esse valor.
Uma entrada de documento é omitida de pageMetasA configuração desse documento permanece como está.
pageMetas não está presenteAs configurações de todos os documentos permanecem como estão.

Preste atenção especial às duas últimas linhas. O servidor mescla o que é enviado por documento e por slot. Por isso omitir uma entrada do array não apaga uma configuração; para apagá-la você precisa indicar uma string vazia naquele slot.

Uma string vazia remove a tag em vez de restaurar o estado original. Uma tag que o documento trazia desaparece junto. Para restaurar o valor original, envie o valor que continua guardado em sys.originMetas.

O corpo de requisição a seguir muda apenas o título de index.html e remove sua tag de descrição.

{
  "pageMetas": [
    {
      "file": "index.html",
      "meta": {
        "title": "DailyWear - roupas para todo dia",
        "description": ""
      }
    }
  ]
}

Mudar pageMetas dispara o processamento que aplica esses valores aos documentos reais. sys.state volta a PENDING e depois retorna a COMPLETED, e nesse intervalo alterações e exclusões são rejeitadas.

Erros

São os códigos que você encontra ao lidar com o Web Hosting. Para os códigos comuns a todos os recursos, consulte Erros comuns.

CódigoCondição
WGL422031O chamador tentou modificar ou excluir um Web Hosting que ainda está processando os arquivos de implantação. Tente de novo depois que o processamento terminar.
WGL422113pageMetas foi enviado a um Web Hosting cujos metadados por documento não podem ser editados. Ou ele não foi criado ao instalar uma MarketApp, ou seus arquivos foram substituídos por um envio desde então.
WGL500039Não foi possível ler na rede de distribuição as informações do domínio personalizado conectado.
WGL429001Ao anexar um domínio personalizado a um Web Hosting que ainda não tinha nenhum, a quantidade de domínios personalizados da Organization já havia atingido o limite do plano. Trocar um domínio que já existe não aumenta essa quantidade, portanto essa troca não passa por esta verificação.

API

A URL base de todos os endpoints abaixo é https://cma.weegloo.com/v1, e é necessário um token Bearer que autentique na CMA no cabeçalho Authorization. As operações de modificação e modificação parcial devem enviar também o cabeçalho X-Weegloo-Version (o sys.version do recurso atual) para o controle de concorrência otimista. As requisições de criação e exclusão não têm esse cabeçalho.

  • Upload API: a requisição para enviar o ZIP de arquivos estáticos e receber o Upload usado na criação de Web Hosting.
  • Space: o Space ao qual o Web Hosting pertence.