Seções do rascunho
Adiciona, remove, reordena e configura seções dentro do rascunho do editor visual.
Estas quatro rotas mexem numa seção por vez no rascunho e devolvem o rascunho inteiro atualizado. Se ainda não existe rascunho para o layout, a rota de adicionar cria um a partir da página publicada; as outras três exigem que ele já exista. Todas exigem o privilégio manage_layouts.
Adicionar seção
/api/v1/admin/editor/draft/{layoutId}/sectionAdminAdiciona uma seção a partir de um modelo
Cria uma seção com a config padrão do modelo (veja Listar modelos de seção) e a insere no contêiner. Se o contêiner não existir no rascunho, ele é criado. Se o layout ainda não tiver rascunho, um é criado a partir da página publicada antes da inserção.
Parâmetros de caminho
layoutIdintegerobrigatórioCorpo da requisição
template_slugstringobrigatórioslug do modelo (hero-banner).container_idstringpadrão: contentid ou position do contêiner de destino.positionintegerpadrão: 00 insere no topo.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/editor/draft/166/section" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"template_slug":"hero-banner","container_id":"content","position":0}'{
"id": "0b8a5d44-6a1f-4d77-8f0e-6b9d6c7a2e11",
"layout_id": 166,
"page_type": "index.index",
"containers": [
{
"id": "content",
"position": "content",
"sort_order": 0,
"sections": [
{
"id": "6f1d3a9e-8b2c-4c57-9e7a-1c2d3e4f5a6b",
"template_slug": "hero-banner",
"block_type": "hero_banner",
"name": "Hero Banner",
"config": { "title": "Welcome to our store", "height": "500px" },
"visible": true,
"sort_order": 0
}
]
}
],
"created_at": "2026-10-11T15:30:00.000Z",
"updated_at": "2026-10-11T15:31:00.000Z"
}A resposta tem o formato descrito em Rascunho e publicação. Os sort_order das seções do contêiner são renumerados de 0 em diante.
Remover seção
/api/v1/admin/editor/draft/{layoutId}/section/{sectionId}AdminRemove uma seção do rascunho
Parâmetros de caminho
layoutIdintegerobrigatóriosectionIdstringobrigatóriosections[].id).Parâmetros de consulta
container_idstringid ou position do contêiner, para procurar só nele. Sem ele, procura em todos.A resposta 200 é o rascunho atualizado.
Reordenar seções
/api/v1/admin/editor/draft/{layoutId}/reorderAdminReordena as seções de um contêiner
A nova ordem é a da lista section_ids. Seções do contêiner que você não listar vão para o fim, em ordem não definida. Um id que não existe no contêiner causa erro. Se o contêiner não existir no rascunho, nada muda e a resposta é 200 mesmo assim.
Parâmetros de caminho
layoutIdintegerobrigatórioCorpo da requisição
container_idstringobrigatórioid ou position do contêiner.section_idsarrayobrigatórioA resposta 200 é o rascunho atualizado.
Configurar seção
/api/v1/admin/editor/draft/{layoutId}/section/{sectionId}/configAdminAltera opções, nome, visibilidade ou CSS de uma seção
Alteração parcial. O config é mesclado: as chaves enviadas são gravadas e as demais ficam como estavam.
Parâmetros de caminho
layoutIdintegerobrigatóriosectionIdstringobrigatórioCorpo da requisição
configobjectschema do modelo).namestringvisiblebooleanfalse oculta a seção (publicada como bloco desativado).custom_cssstringcontainer_idstringid ou position do contêiner, para procurar a seção só nele.A resposta 200 é o rascunho atualizado.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | layoutId que não é inteiro; corpo inválido; template_slug ausente (adicionar); container_id ausente (reordenar) | {"error":"template_slug is required"} ou {"error":"container_id is required"} |
| 401 | Sem token ou token expirado | {"error":"missing authorization header"} |
| 403 | Sem o privilégio manage_layouts | {"error":"insufficient privileges","required":"manage_layouts"} |
| 500 | Modelo inexistente; sem rascunho (remover, reordenar, configurar); seção não encontrada | {"error":"failed to add section","detail":"section template 'x' not found"} ou {"error":"failed to remove section","detail":"section abc not found in draft"} |