Contrato do site
O bundle JSON que descreve os componentes, tipos de página, coleções, globais, perfis de mídia e design tokens do seu site.
Esta página foi traduzida do inglês. Se houver qualquer diferença, vale a versão em inglês. Ler em inglês
O contrato do site é o acordo entre o código do seu site e o Atlas. Ele lista o que existe no seu site e o que os editores podem alterar. Ele não contém código executável: apenas descrições e campos tipados.
Mantenha-o no seu repositório (por exemplo atlas/contract.bundle.json) e versione-o junto com o seu código.
Ciclo de vida
Seção intitulada “Ciclo de vida”- Um desenvolvedor, ou um agente de IA por MCP, valida o bundle e o propõe.
- Um administrador do site revisa e ativa (ou rejeita) o bundle no Studio, em Site setup.
- Seu site informa o digest do bundle que renderiza (
POST /deployments). O Studio mostra se código e contrato estão in sync.
O digest é um hash SHA-256 do JSON canônico do bundle, então o bundle no seu repositório deve ser exatamente igual ao que você propôs.
Estrutura de nível superior
Seção intitulada “Estrutura de nível superior”| Chave | Conteúdo |
|---|---|
contractVersion |
Sempre 1.0.0 para este formato |
bundleVersion |
Sua própria versão deste bundle, como 1.4.0 |
site |
key, displayName, runtimes (node, cloudflare-workers), locales (padrão, compatíveis, da direita para a esquerda), staticRoutes que o seu código controla |
tokens |
Cores, estilos de texto e espaçamento entre os quais os editores podem escolher |
motion |
Presets de animação nomeados que o seu código implementa, com o comportamento para movimento reduzido |
mediaProfiles |
Tamanhos, proporções e renditions de imagem permitidos |
components |
Até 300 componentes, cada um com id qualificado, versão, tipo e campos |
collections |
Tipos de conteúdo repetitivo, com campos, campos de título e de slug e regras de unicidade |
pageTypes |
Até 100 tipos de página: padrão de rota, coleção vinculada opcional, regiões e regras de SEO |
globals |
Conteúdo compartilhado, como site-header e site-footer |
Um componente (resumido)
Seção intitulada “Um componente (resumido)”{ "id": "acme.home.hero", "version": "1.0.0", "kind": "section", "label": "Home hero", "fields": [ { "key": "heading", "type": "text", "label": "Heading", "required": true, "maxLength": 80 }, { "key": "intro", "type": "longText", "label": "Intro", "maxLength": 400 }, { "key": "image", "type": "asset", "label": "Image", "profile": "hero" }, { "key": "cta", "type": "link", "label": "Button" } ]}Um tipo de página (resumido)
Seção intitulada “Um tipo de página (resumido)”{ "key": "industry-landing", "version": "1.0.0", "label": "Industry landing", "route": { "pattern": "/industries/{entry.slug}" }, "entry": { "collection": "industries", "mode": "one-page-per-entry" }, "regions": [ { "key": "hero", "reorder": "locked", "sections": [ { "key": "hero", "component": { "id": "acme.industry.hero", "versionRange": "^1.0.0" }, "presence": "required", "bind": { "headline": "entry.headline", "image": "entry.image" } } ] }, { "key": "body", "reorder": "within-region", "min": 1, "max": 20, "insertable": ["acme.text", "acme.faq"] } ]}As regiões definem o que os editores podem fazer: as seções podem ser obrigatórias (required), padrão (default) ou opcionais (optional); as regiões podem ser bloqueadas ou reordenáveis, com um número mínimo e máximo de seções e uma lista de componentes que podem ser inseridos. Os campos podem ser vinculados à entrada da página, de modo que uma página por produto ou setor é criada a partir da coleção.
Tipos de campo
Seção intitulada “Tipos de campo”| Tipo | Uso | Limites |
|---|---|---|
text |
Texto curto de uma linha | até 500 caracteres |
longText |
Parágrafos, sem formatação | até 10.000 caracteres |
richText |
Texto formatado, perfil basic ou article |
Estruturado, nunca HTML bruto |
number |
Números com intervalo opcional | |
boolean |
Ligado/desligado | |
select |
Uma opção de uma lista fixa | até 100 opções |
date |
Uma data | |
link |
Rota interna ou, se permitido, uma URL externa | |
asset |
Imagem(ns) em um perfil de mídia | até 50 por campo |
reference |
Link para entradas de uma coleção | até 200 por campo |
list |
Grupo de campos repetitivo | até 200 itens, 40 campos cada |
group |
Campos agrupados | até 40 campos |
table |
Linhas e colunas tipadas | até 12 colunas, 200 linhas |
token |
Um dos seus design tokens (cor, estilo de texto, espaçamento) | |
icon |
Um conjunto de ícones nomeados que o seu código fornece | até 200 opções |
Os campos podem ser marcados como required e localized. Um componente ou coleção pode ter até 80 campos.