Rascunho e publicação
Abre um rascunho do layout no ar, edita sem afetar a loja e publica ou descarta no fim.
O rascunho é uma cópia completa do layout publicado. Você edita o rascunho com as mesmas rotas de páginas, linhas, colunas e blocos (usando os ids da cópia) e a vitrine continua servindo o layout publicado até você publicar. É o fluxo do editor visual ao vivo. Há um único rascunho em uso por vez: ele é reaproveitado entre sessões de administradores.
Abrir rascunho
Devolve o rascunho do layout publicado, criando-o (como cópia profunda) na primeira chamada. Chamadas seguintes devolvem o mesmo. Sem corpo.
/api/v1/admin/advanced-layouts/draftAdminObter ou criar o rascunho
Requer o privilégio manage_layouts.
Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/advanced-layouts/draft" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"draft_id": 140,
"live_id": 135
}Campos da resposta
draft_idintegerlive_idintegerErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_layouts. | {"error":"insufficient privileges","required":"manage_layouts"} |
| 500 | Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404. | {"error":"failed to open draft","detail":"..."} |
Publicar rascunho
Com dispatch: copia para o layout no ar só a árvore daquela página, sem tocar nas outras. O rascunho continua aberto. Sem corpo: o rascunho vira o layout padrão e o anterior é rebaixado (mantido como ponto de volta).
/api/v1/admin/advanced-layouts/{id}/publishAdminPublicar o rascunho
Requer o privilégio manage_layouts.
Parâmetros de caminho
idintegerobrigatóriodraft_id).Corpo da requisição
dispatchstringproducts.view. Omitido publica o rascunho inteiro.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/advanced-layouts/140/publish" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"dispatch": "index.index"
}'Resposta
{
"published_layout_id": 140,
"dispatch": "index.index",
"published_page_id": 2930
}{
"published_layout_id": 140,
"replaced_layout_id": 135
}Campos da resposta
published_layout_idintegerdispatchstringpublished_page_idintegerreplaced_layout_idintegerErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | O id de layout no caminho não é um inteiro. | {"error":"invalid layout id","detail":"id must be an integer"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_layouts. | {"error":"insufficient privileges","required":"manage_layouts"} |
| 404 | Rascunho inexistente, ou página sem esse dispatch no rascunho. | {"error":"dispatch page not found in draft","detail":"index.index"} |
| 500 | Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404. | {"error":"failed to publish draft","detail":"..."} |
Descartar rascunho
Apaga o rascunho e sua árvore sem publicar nada. A resposta é 204, sem corpo.
/api/v1/admin/advanced-layouts/{id}/draftAdminDescartar o rascunho
Requer o privilégio manage_layouts.
Parâmetros de caminho
idintegerobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/advanced-layouts/140/draft" \
-H "Authorization: Bearer $TOKEN"Resposta
Corpo vazio.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | O id de layout no caminho não é um inteiro. | {"error":"invalid layout id","detail":"id must be an integer"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_layouts. | {"error":"insufficient privileges","required":"manage_layouts"} |
| 404 | Rascunho inexistente. | {"error":"draft not found","detail":"140"} |
| 500 | Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404. | {"error":"failed to discard draft","detail":"..."} |