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.