VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Layouts avançados

Páginas do layout

Cria, altera e remove as páginas de um layout e gera as páginas padrão da Loja WhatsApp.

Cada página de um layout representa uma tela da vitrine, identificada por um dispatch (um código como index.index para a home, products.view para a página de produto ou checkout.cart para o carrinho). A página "Default (Catch-all)" vale para qualquer tela que não tenha página própria. Cada página nasce com os quatro contêineres e carrega os campos de SEO da tela.

O bloco Main Content

Toda página nasce com um bloco main_content no contêiner content. Ele marca onde a vitrine desenha o corpo real da tela (a grade de produtos, o carrinho, o formulário de login). Blocos colocados antes ou depois dele aparecem acima ou abaixo do corpo. Só pode haver um por página. Para trocar o corpo fixo por blocos editáveis, veja Converter em blocos.

Criar página

Adiciona ao layout uma página para um dispatch. Use para dar a uma tela um desenho próprio em vez de herdar o da página padrão.

POST/api/v1/admin/advanced-layouts/{id}/pagesAdmin

Criar uma página no layout

Requer o privilégio manage_layouts.

Parâmetros de caminho

idintegerobrigatório
Id numérico do layout (inteiro, não UUID).

Corpo da requisição

dispatchstringobrigatório
Código da tela, por exemplo products.view.
namestringobrigatório
Nome de exibição.
object_idsstring[]
Ids de objetos (categorias, produtos) aos quais a página se aplica, para criar um desenho específico de um item.
is_defaultbooleanpadrão: false
Marca como página padrão (catch-all) do layout.
positionintegerpadrão: 0
Ordem de exibição na lista do editor.
seo_titlestring
Título SEO (tag title).
seo_descriptionstring
Meta description.
seo_keywordsstring
Meta keywords.
og_imagestring
URL da imagem Open Graph.
og_typestring
Tipo Open Graph.
canonical_urlstring
URL canônica.
no_indexbooleanpadrão: false
true pede aos buscadores que não indexem a tela.
custom_html_codestring
HTML livre injetado na página.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/admin/advanced-layouts/135/pages" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "dispatch": "quotes.view",
    "name": "Orçamentos",
    "seo_title": "Orçamentos"
  }'

Resposta

201Página criada
json
{
  "id": 2945,
  "layout_id": 135,
  "dispatch": "quotes.view",
  "name": "Orçamentos",
  "is_default": false,
  "position": 0,
  "seo_title": "Orçamentos",
  "seo_description": "",
  "seo_keywords": "",
  "og_image": "",
  "og_type": "website",
  "canonical_url": "",
  "no_index": false,
  "custom_html_code": "",
  "created_at": "2026-07-12T16:29:12.505299Z"
}

Campos da resposta

idinteger
Id da página.
layout_idinteger
Layout dono.
dispatchstring
Código da tela.
namestring
Nome.
object_idsstring[]
Ids de objetos, quando houver.
is_defaultboolean
Página padrão (catch-all).
positioninteger
Ordem na lista.
seo_titlestring
Título SEO.
seo_descriptionstring
Meta description.
seo_keywordsstring
Meta keywords.
og_imagestring
Imagem Open Graph.
og_typestring
Tipo Open Graph.
canonical_urlstring
URL canônica.
no_indexboolean
Bloqueia indexação.
custom_html_codestring
HTML livre.
created_atstring
Criação (RFC 3339).

Erros

StatusQuandoCorpo de exemplo
400O id de layout no caminho não é um inteiro.{"error":"invalid layout id","detail":"id must be an integer"}
400Corpo JSON inválido.{"error":"invalid request body","detail":"unexpected EOF"}
400dispatch vazio.{"error":"dispatch is required"}
400name vazio.{"error":"name is required"}
401Sem token, token inválido ou expirado.{"error":"invalid or expired token"}
403Seu usuário não tem o privilégio manage_layouts.{"error":"insufficient privileges","required":"manage_layouts"}
500Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404.{"error":"failed to create page","detail":"..."}

Atualizar página

Altera os campos enviados da página (nome, dispatch, SEO...). O que não for enviado permanece. Atenção: object_ids, quando enviado, é aplicado como lista; omita para não mexer.

PUT/api/v1/admin/advanced-layouts/pages/{id}Admin

Atualizar uma página

Requer o privilégio manage_layouts.

Parâmetros de caminho

idintegerobrigatório
Id numérico da página (não do layout).

Corpo da requisição

dispatchstring
Novo código de tela.
namestring
Novo nome.
object_idsstring[]
Novos ids de objetos.
is_defaultboolean
Página padrão.
positioninteger
Ordem na lista.
seo_titlestring
Título SEO.
seo_descriptionstring
Meta description.
seo_keywordsstring
Meta keywords.
og_imagestring
Imagem Open Graph.
og_typestring
Tipo Open Graph.
canonical_urlstring
URL canônica.
no_indexboolean
Bloqueia indexação.
custom_html_codestring
HTML livre.

Exemplo de requisição

bash
curl -X PUT "$BASE_URL/api/v1/admin/advanced-layouts/pages/2930" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "seo_title": "Bem-vindo à Minha Loja",
    "seo_description": "As melhores ofertas do dia."
  }'

Resposta

200Página atualizada
json
{
  "id": 2930,
  "layout_id": 135,
  "dispatch": "index.index",
  "name": "Homepage",
  "is_default": false,
  "position": 1,
  "seo_title": "Bem-vindo à Minha Loja",
  "seo_description": "As melhores ofertas do dia.",
  "seo_keywords": "",
  "og_image": "",
  "og_type": "website",
  "canonical_url": "",
  "no_index": false,
  "custom_html_code": "",
  "created_at": "2026-07-12T16:29:12.505299Z"
}

Erros

StatusQuandoCorpo de exemplo
400O id de page no caminho não é um inteiro.{"error":"invalid page id","detail":"id must be an integer"}
400Corpo JSON inválido.{"error":"invalid request body","detail":"unexpected EOF"}
401Sem token, token inválido ou expirado.{"error":"invalid or expired token"}
403Seu usuário não tem o privilégio manage_layouts.{"error":"insufficient privileges","required":"manage_layouts"}
500Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404.{"error":"failed to update page","detail":"..."}

Excluir página

Remove a página e toda a árvore dela. A tela volta a usar a página padrão (catch-all) do layout.

DELETE/api/v1/admin/advanced-layouts/pages/{id}Admin

Excluir uma página

Requer o privilégio manage_layouts.

Parâmetros de caminho

idintegerobrigatório
Id numérico da página.

Exemplo de requisição

bash
curl -X DELETE "$BASE_URL/api/v1/admin/advanced-layouts/pages/2945" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Excluída
json
{
  "message": "page deleted"
}

Erros

StatusQuandoCorpo de exemplo
400O id de page no caminho não é um inteiro.{"error":"invalid page id","detail":"id must be an integer"}
401Sem token, token inválido ou expirado.{"error":"invalid or expired token"}
403Seu usuário não tem o privilégio manage_layouts.{"error":"insufficient privileges","required":"manage_layouts"}
404Página não existe.{"error":"page not found","detail":"2945"}
500Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404.{"error":"failed to delete page","detail":"..."}

Gerar páginas da Loja WhatsApp

A Loja WhatsApp (WAC) é a mini-loja que roda dentro do WhatsApp. Esta rota cria, para cada tela wa.* que o layout ainda não tem, a página já preenchida com os blocos que reproduzem a mini-loja padrão. Páginas existentes nunca são alteradas, então é seguro repetir. O corpo é opcional.

POST/api/v1/admin/advanced-layouts/{id}/wa-default-pagesAdmin

Gerar as páginas padrão da Loja WhatsApp

Requer o privilégio manage_layouts.

Parâmetros de caminho

idintegerobrigatório
Id numérico do layout (inteiro, não UUID).

Corpo da requisição

dispatchesstring[]
Gera só estas telas. Valores aceitos: wa.home, wa.product, wa.cart, wa.checkout, wa.choose, wa.account, wa.orders, wa.order, wa.track, wa.signup, wa.call, wa.tryon, wa.privacy, wa.proposal, wa.rep.home, wa.rep.sell, wa.rep.clients, wa.rep.orders, wa.rep.approvals, wa.rep.assistant, wa.rep.review, wa.rep.more. Omitido gera todas as que faltam.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/admin/advanced-layouts/135/wa-default-pages" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "dispatches": [
      "wa.home",
      "wa.cart"
    ]
  }'

Resposta

200Páginas geradas
json
{
  "created": [
    "wa.home"
  ],
  "skipped": [
    "wa.cart"
  ]
}

Campos da resposta

createdstring[]
Dispatches cuja página foi criada agora.
skippedstring[]
Dispatches que já tinham página e foram preservados.

Erros

StatusQuandoCorpo de exemplo
400O id de layout no caminho não é um inteiro.{"error":"invalid layout id","detail":"id must be an integer"}
400Corpo JSON inválido.{"error":"invalid request body","detail":"unexpected EOF"}
400Dispatch wa.* desconhecido.{"error":"invalid dispatches","detail":"unknown wa dispatch ..."}
401Sem token, token inválido ou expirado.{"error":"invalid or expired token"}
403Seu usuário não tem o privilégio manage_layouts.{"error":"insufficient privileges","required":"manage_layouts"}
404Layout não existe.{"error":"layout not found","detail":"135"}
500Falha no meio do processo. As páginas já criadas são mantidas e listadas.{"error":"failed to seed wa pages","details":"...","created":["wa.home"],"skipped":[]}

Veja também

  • Layouts avançados: visão geral
  • Contêineres e linhas
Anterior
Criar e gerenciar layouts
Próxima
Contêineres e linhas
Nesta página
  • Criar página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Atualizar página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Excluir página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Gerar páginas da Loja WhatsApp
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também