Layouts avançados
O editor visual da vitrine: layouts, páginas, linhas, colunas, blocos, rascunho e publicação.
Os layouts avançados são o desenho da vitrine: cada tela da loja (home, produto, carrinho...) é uma árvore de contêineres, linhas, colunas e blocos que o administrador monta e reorganiza sem programar. Esta área é a API por trás do editor visual "Edit Design".
Como funciona
Um layout tem várias páginas (uma por tela, identificada por um dispatch). Cada página tem quatro contêineres, que são as faixas verticais da tela. Dentro deles ficam as linhas, depois as colunas (grade de 12) e, por fim, os blocos.
| Contêiner | Onde aparece | Herança |
|---|---|---|
top_panel | Faixa acima do cabeçalho | Herda da página padrão do layout (uses_default: true) |
header | Cabeçalho | Herda da página padrão |
content | Corpo da tela | Sempre próprio da página |
footer | Rodapé | Herda da página padrão |
Fluxo típico de integração:
- Abra um rascunho
POST /advanced-layouts/draftdevolve odraft_id, uma cópia do layout no ar. - Leia e edite
GET /advanced-layouts/{id}com odraft_id; crie, altere, mova e exclua linhas, colunas e blocos. - ConfiraAbra a vitrine com
?layout_id=<draft_id>para ver o rascunho sem publicar. - Publique
POST /advanced-layouts/{draft_id}/publish, para uma página (dispatch) ou para o rascunho inteiro.
Conceitos-chave
Dispatch
O dispatch é o código da tela, no formato area.acao: index.index (home), products.view (produto), categories.view (categoria), checkout.cart (carrinho), auth.login, blog.view, vendors.profile, search.view e outros. Além deles existe a página "Default (Catch-all)" e, na Loja WhatsApp, os dispatches wa.*.
Configuração, conteúdo e design
config guarda as opções do tipo de bloco (chaves listadas no catálogo). content é um espaço livre. design é a camada de estilo universal (fundo, espaçamento, borda, sombra, tipografia...), com sobrescritas para tablet e mobile. custom_css e custom_class permitem estilo livre; <script> e @import são removidos.
Visibilidade
Linhas, colunas e blocos têm visibility por dispositivo (desktop, tablet, mobile) e usergroup_ids para restringir a grupos de compradores (guest, registered ou UUIDs). A vitrine pública filtra pelos grupos do visitante; estas rotas de administração mostram tudo.
Status do bloco
O status é uma letra: A (ativo) ou D (inativo). Ao gravar você pode mandar active/inactive, mas a resposta sempre traz a letra.
Patches e bloqueio 409
Um bloco criado ou ajustado por um patch aplicado na loja fica protegido: alterar, mover ou excluir devolve 409 com code: patch_owned.
Histórico
Quase toda escrita fica registrada com autor, ação e detalhes. Leia em Consultar layouts.
Endpoints
| Método | Caminho | Para que serve | Página |
|---|---|---|---|
GET | /api/v1/admin/advanced-layouts | Listar layouts | Consultar layouts |
GET | /api/v1/admin/advanced-layouts/{id} | Obter a árvore de um layout | Consultar layouts |
GET | /api/v1/admin/advanced-layouts/{id}/history | Histórico de alterações de um layout | Consultar layouts |
POST | /api/v1/admin/advanced-layouts | Criar um layout | Criar e gerenciar layouts |
PUT | /api/v1/admin/advanced-layouts/{id} | Atualizar nome, variante ou padrão | Criar e gerenciar layouts |
DELETE | /api/v1/admin/advanced-layouts/{id} | Excluir um layout | Criar e gerenciar layouts |
POST | /api/v1/admin/advanced-layouts/{id}/clone | Duplicar um layout | Criar e gerenciar layouts |
POST | /api/v1/admin/advanced-layouts/{id}/set-default | Promover um layout a padrão | Criar e gerenciar layouts |
POST | /api/v1/admin/advanced-layouts/{id}/pages | Criar uma página no layout | Páginas do layout |
PUT | /api/v1/admin/advanced-layouts/pages/{id} | Atualizar uma página | Páginas do layout |
DELETE | /api/v1/admin/advanced-layouts/pages/{id} | Excluir uma página | Páginas do layout |
POST | /api/v1/admin/advanced-layouts/{id}/wa-default-pages | Gerar as páginas padrão da Loja WhatsApp | Páginas do layout |
PATCH | /api/v1/admin/advanced-layouts/containers/{id} | Atualizar herança ou estilo do contêiner | Contêineres e linhas |
POST | /api/v1/admin/advanced-layouts/containers/{id}/rows | Criar uma linha no contêiner | Contêineres e linhas |
PUT | /api/v1/admin/advanced-layouts/rows/{id} | Atualizar uma linha | Contêineres e linhas |
DELETE | /api/v1/admin/advanced-layouts/rows/{id} | Excluir uma linha | Contêineres e linhas |
PUT | /api/v1/admin/advanced-layouts/containers/{id}/rows/reorder | Reordenar as linhas de um contêiner | Contêineres e linhas |
POST | /api/v1/admin/advanced-layouts/rows/{id}/columns | Criar uma coluna na linha | Colunas da linha |
PUT | /api/v1/admin/advanced-layouts/columns/{id} | Atualizar uma coluna | Colunas da linha |
DELETE | /api/v1/admin/advanced-layouts/columns/{id} | Excluir uma coluna | Colunas da linha |
POST | /api/v1/admin/advanced-layouts/columns/{id}/blocks | Criar um bloco na coluna | Blocos |
PUT | /api/v1/admin/advanced-layouts/blocks/{id} | Atualizar um bloco | Blocos |
DELETE | /api/v1/admin/advanced-layouts/blocks/{id} | Excluir um bloco | Blocos |
POST | /api/v1/admin/advanced-layouts/blocks/{id}/move | Mover um bloco para outra coluna | Blocos |
GET | /api/v1/admin/advanced-layouts/block-types | Listar os tipos de bloco | Catálogo de blocos |
GET | /api/v1/admin/advanced-layouts/design-schema | Esquema da camada de design | Catálogo de blocos |
GET | /api/v1/admin/advanced-layouts/presets | Listar predefinições de seção | Catálogo de blocos |
GET | /api/v1/admin/advanced-layouts/library | Listar itens da biblioteca | Biblioteca de blocos |
POST | /api/v1/admin/advanced-layouts/library | Salvar um bloco na biblioteca | Biblioteca de blocos |
POST | /api/v1/admin/advanced-layouts/library/{id}/add | Inserir um item da biblioteca numa coluna | Biblioteca de blocos |
GET | /api/v1/admin/advanced-layouts/reusable-blocks | Listar blocos reutilizáveis | Blocos reutilizáveis |
POST | /api/v1/admin/advanced-layouts/blocks/{id}/save-as-reusable | Transformar um bloco em reutilizável | Blocos reutilizáveis |
PUT | /api/v1/admin/advanced-layouts/reusable-blocks/{id} | Alterar um bloco reutilizável | Blocos reutilizáveis |
POST | /api/v1/admin/advanced-layouts/columns/{id}/blocks/from-reusable | Inserir uma instância vinculada numa coluna | Blocos reutilizáveis |
POST | /api/v1/admin/advanced-layouts/draft | Obter ou criar o rascunho | Rascunho e publicação |
POST | /api/v1/admin/advanced-layouts/{id}/publish | Publicar o rascunho | Rascunho e publicação |
DELETE | /api/v1/admin/advanced-layouts/{id}/draft | Descartar o rascunho | Rascunho e publicação |
POST | /api/v1/admin/advanced-layouts/{id}/explode | Converter o corpo da página em blocos | Converter em blocos |
POST | /api/v1/admin/advanced-layouts/{id}/restore-main-content | Restaurar o corpo padrão da página | Converter em blocos |
POST | /api/v1/admin/advanced-layouts/design-ai-edit | Gerar operações de edição de design | Editar design com a VI |
Erros comuns
- Editar o layout publicado diretamente. Qualquer clique já vale para os clientes; use o rascunho.
- Enviar
configparcial emPUT /blocks/{id}achando que será mesclado. O objeto é substituído: leia, altere e devolva completo. - Usar o id do layout publicado nas rotas de edição depois de abrir o rascunho. Os blocos do rascunho têm ids diferentes.
- Tentar excluir o layout padrão. Devolve
409: promova outro antes. - Esperar
404para ids que não existem em todas as rotas. Várias escritas (atualizar página, linha, coluna, bloco) devolvem500para ids inexistentes. - Criar um segundo
main_contentna mesma página. Só um é permitido. - Mandar um id que não é inteiro. Devolve
400comid must be an integer.