SentraX Sites

Publicar um site pela API

Provisionamento, chave por site e publicação de páginas.

Esta página é para a equipe SentraX e para integrações. Quem usa o painel não precisa dela.

O SentraX Sites expõe uma API para criar sites e publicar páginas sem passar pelo painel. Base: https://cms.sentrax.com.br/api.

1. Provisionar o site

POST /provisioning/sites com Authorization: Bearer <PROVISIONING_KEY> (chave da SentraX).

{
  "slug": "clientex",
  "name": "Cliente X",
  "brandName": "Cliente X",
  "primaryDomain": "clientex.com.br",
  "altDomains": ["www.clientex.com.br"],
  "contactEmail": "contato@clientex.com.br",
  "description": "Uma frase real sobre o negócio.",
  "serving": "cms"
}

Resposta (201 na criação): site.{id, slug, url}, apiKey (aparece uma única vez; rotateKey: true gera outra), dns (o registro A que o cliente precisa criar) e endpoints. Idempotente pelo slug. Use "serving": "external" para sites que têm repositório próprio e só leem o CMS pela API: eles ficam fora do roteamento por domínio.

2. Publicar páginas com a chave do site

curl -X POST https://cms.sentrax.com.br/api/puck/pages \
  -H "Authorization: users API-Key <apiKey>" -H "content-type: application/json" \
  -d '{ "title": "Início", "slug": "home", "status": "published",
        "puckData": { "root": { "props": { "title": "Início" } }, "zones": {}, "content": [
          { "type": "SxHero", "props": { "id": "SxHero-home", "eyebrow": "…", "title": "…", "highlight": "…", "subtitle": "…", "align": "center",
            "primaryCta": { "label": "…", "href": "…" }, "secondaryCta": { "label": "", "href": "" } } } ] } }'

PATCH /puck/pages/{id} atualiza (_status: draft ou published). Imagens: POST /media (multipart) com a mesma chave. A chave só enxerga o próprio site.

3. Domínio e certificado

O cliente aponta A <domínio> → 18.230.101.119 (e www). Em até dois minutos o roteamento é criado e o certificado é emitido automaticamente quando o DNS propaga.

Outros endpoints

  • GET /health: saúde do serviço.
  • GET /tls/domains: domínios servidos (usado pelo proxy).
  • GET /{slug} no host do site, /md/{slug}, /llms.txt, /robots.txt: páginas, espelho em Markdown e arquivos de SEO por site.
  • GET /html/{slug}?site=<slug>: conteúdo renderizado para sites com repositório próprio.

Seções disponíveis (type)

SxHero, SxPilares, SxProdutos, SxTextoImagem, SxGaleria, SxPlanos, SxLocal, SxFaq. Os campos de cada uma estão em src/puck/components no repositório do CMS. Regra de conteúdo: só afirmações reais do cliente, nada inventado.