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

Converter em blocos

Troca o corpo fixo de uma página por blocos editáveis e desfaz a conversão.

Algumas telas da vitrine (lista de vendedores, página de produto, listagens, carrinho, login...) desenham o corpo por conta própria, e o administrador só controla o que fica antes e depois dele, pelo bloco main_content. Converter em blocos substitui o main_content por blocos normais que reproduzem esse corpo, para que cada peça possa ser movida, escondida ou estilizada. Restaurar faz o caminho de volta. As duas operações só funcionam em layout rascunho, são transacionais e devolvem a árvore atualizada.

Telas convertíveis

vendors.view, products.view, products.list, categories.view, search.view, checkout.cart, auth.login, auth.register, blog.view, blog.post e vendors.profile. Qualquer outro dispatch devolve 400.

Converter em blocos

Cria os blocos do modelo da tela no contêiner content e remove o main_content (e a linha e coluna que ficam vazias). Blocos do modelo cujo tipo já existe no contêiner são pulados e listados em skipped_block_types, para não duplicar.

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

Converter o corpo da página em blocos

Requer o privilégio manage_layouts.

Parâmetros de caminho

idintegerobrigatório
Id do layout rascunho.

Corpo da requisição

dispatchstringobrigatório
Tela a converter, por exemplo vendors.view.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/admin/advanced-layouts/140/explode" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "dispatch": "vendors.view"
  }'

Resposta

200Convertida
json
{
  "layout": {
    "id": 140,
    "name": "Novo Layout Avançado",
    "theme_variant": "default",
    "is_default": false,
    "created_at": "2026-07-12T16:29:12.505299Z",
    "updated_at": "2026-07-12T16:29:12.505299Z"
  },
  "created_block_ids": [
    11201,
    11202
  ]
}

Campos da resposta

layoutobject
Layout atualizado.
created_block_idsinteger[]
Ids dos blocos criados.
skipped_block_typesstring[]
Tipos pulados por já existirem. Ausente quando nenhum.

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"}
400Tela sem modelo de conversão.{"error":"dispatch is not convertible","detail":"..."}
401Sem token, token inválido ou expirado.{"error":"invalid or expired token"}
403O layout não é um rascunho. O layout publicado nunca é alterado por esta rota.{"error":"layout is not a draft","detail":"..."}
403Seu usuário não tem o privilégio manage_layouts.{"error":"insufficient privileges","required":"manage_layouts"}
404Layout ou página (dispatch) inexistente.{"error":"not found","detail":"..."}
409A página não tem mais o bloco main_content (já foi convertida).{"error":"main content sentinel not found","detail":"..."}
500Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404.{"error":"failed to convert layout","detail":"..."}

Restaurar corpo padrão

Remove os blocos que a conversão criou, apaga as linhas e colunas que ficarem vazias e recoloca o main_content. Blocos que você adicionou depois da conversão são preservados.

POST/api/v1/admin/advanced-layouts/{id}/restore-main-contentAdmin

Restaurar o corpo padrão da página

Requer o privilégio manage_layouts.

Parâmetros de caminho

idintegerobrigatório
Id do layout rascunho.

Corpo da requisição

dispatchstringobrigatório
Tela a restaurar.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/admin/advanced-layouts/140/restore-main-content" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "dispatch": "vendors.view"
  }'

Resposta

200Restaurada
json
{
  "layout": {
    "id": 140,
    "name": "Novo Layout Avançado",
    "theme_variant": "default",
    "is_default": false,
    "created_at": "2026-07-12T16:29:12.505299Z",
    "updated_at": "2026-07-12T16:29:12.505299Z"
  },
  "removed_block_ids": [
    11201,
    11202
  ]
}

Campos da resposta

layoutobject
Layout atualizado.
removed_block_idsinteger[]
Ids dos blocos removidos.

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"}
400Tela sem modelo.{"error":"dispatch is not convertible","detail":"..."}
401Sem token, token inválido ou expirado.{"error":"invalid or expired token"}
403O layout não é um rascunho.{"error":"layout is not a draft","detail":"..."}
403Seu usuário não tem o privilégio manage_layouts.{"error":"insufficient privileges","required":"manage_layouts"}
404Layout ou página inexistente.{"error":"not found","detail":"..."}
500Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404.{"error":"failed to convert layout","detail":"..."}

Veja também

  • Layouts avançados: visão geral
  • Rascunho e publicação
Anterior
Rascunho e publicação
Próxima
Editar design com a VI
Nesta página
  • Converter em blocos
  • Exemplo de requisição
  • Resposta
  • Erros
  • Restaurar corpo padrão
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também