VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Editor visual da vitrine

Modelos e página publicada

Lista os modelos de seção disponíveis e lê a página publicada no formato do editor visual.

As duas leituras que abrem qualquer edição: o catálogo de seções que você pode inserir e o estado atual da página. Exigem o privilégio manage_layouts.

Listar modelos de seção

GET/api/v1/admin/editor/templatesAdmin

Lista os modelos de seção ativos

Devolve os modelos ativos, sem paginação, ordenados pela posição no catálogo. Cada modelo traz o schema: a descrição dos campos que a seção aceita em config, que o editor usa para montar o formulário.

Parâmetros de consulta

categorystring
heroproductscontentengagementinfomarketplacesocialutility
Somente modelos desta categoria. Valor desconhecido devolve "templates": [] e "total": 0.

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/admin/editor/templates?category=hero" \
  -H "Authorization: Bearer $TOKEN"
200Modelos retornados
json
{
  "templates": [
    {
      "id": "96eb3393-196f-470f-8b2e-ccf3460ddbf7",
      "name": "Hero Banner",
      "slug": "hero-banner",
      "description": "Full-width image/text banner with CTA button",
      "category": "hero",
      "thumbnail_url": "",
      "default_config": {
        "title": "Welcome to our store",
        "subtitle": "Discover amazing products",
        "button_text": "Shop Now",
        "button_url": "/products",
        "height": "500px",
        "overlay_opacity": 0.4
      },
      "block_type": "hero_banner",
      "schema": [
        { "key": "title", "type": "text", "label": "Title", "default": "Welcome to our store" },
        { "key": "overlay_opacity", "type": "range", "label": "Overlay Opacity", "default": 0.4, "min": 0, "max": 1, "step": 0.1 },
        { "key": "height", "type": "select", "label": "Height", "default": "500px", "options": ["300px", "400px", "500px", "600px", "100vh"] }
      ],
      "position": 1,
      "is_active": true,
      "created_at": "2026-04-29T09:19:50.471437Z"
    }
  ],
  "total": 1
}

Campos da resposta

templates[].iduuid
Identificador do modelo.
templates[].slugstring
Código estável do modelo. É o valor de template_slug ao adicionar uma seção.
templates[].namestring
Nome exibido.
templates[].descriptionstring
Descrição curta.
templates[].categorystring
Categoria do catálogo (hero, products, content, engagement, info, marketplace, social, utility).
templates[].thumbnail_urlstring
URL da miniatura. Pode ser vazia.
templates[].default_configobject
Configuração inicial copiada para a seção nova.
templates[].block_typestring
Tipo do bloco que a seção vira na vitrine.
templates[].schemaarray
Campos configuráveis: key, type (text, number, color, select, toggle, image, richtext, range, datetime...), label, default e, conforme o tipo, options, min, max, step.
templates[].positioninteger
Ordem no catálogo.
templates[].is_activeboolean
Sempre true nesta lista.
templates[].created_atstring
Criação (RFC 3339, UTC).
totalinteger
Quantidade de modelos devolvidos.

Ler a página publicada

GET/api/v1/admin/editor/layout/{pageType}Admin

Lê a página publicada no formato do editor

Devolve o layout publicado da página, já convertido para contêineres e seções, e informa se há rascunho. Use o layout_id devolvido nas rotas de rascunho.

Parâmetros de caminho

pageTypestringobrigatório
Nome interno da página (index.index, products.view, categories.view, checkout.cart...). Veja a visão geral.
200Página lida
json
{
  "layout_id": 166,
  "layout_name": "Default",
  "page_type": "index.index",
  "is_default": true,
  "has_draft": false,
  "containers": [
    { "id": "14434", "position": "top_panel", "sort_order": 0, "sections": [] },
    {
      "id": "14436",
      "position": "content",
      "sort_order": 2,
      "sections": [
        {
          "id": "15258",
          "template_slug": "",
          "block_type": "breadcrumbs",
          "name": "Breadcrumbs",
          "config": { "separator": "/", "show_home": true },
          "visible": true,
          "sort_order": 0
        }
      ]
    }
  ]
}

Campos da resposta

layout_idinteger
Id do layout avançado. É o layoutId das demais rotas. Fica 0 quando a loja não tem nenhum layout.
layout_namestring
Nome do layout.
page_typestring
O mesmo valor que você enviou em pageType.
is_defaultboolean
Se o layout é o padrão da loja.
has_draftboolean
Se existe rascunho para este layout.
containers[].idstring
Id do contêiner.
containers[].positionstring
Área da página (top_panel, header, content, footer...).
containers[].sort_orderinteger
Ordem do contêiner.
containers[].sections[].idstring
Id da seção.
containers[].sections[].template_slugstring
Modelo de origem. Vazio em blocos publicados que não vieram de um modelo.
containers[].sections[].block_typestring
Tipo do bloco.
containers[].sections[].namestring
Nome da seção.
containers[].sections[].configobject
Opções preenchidas.
containers[].sections[].visibleboolean
Se a seção aparece.
containers[].sections[].sort_orderinteger
Ordem dentro do contêiner.
containers[].sections[].usergroup_idsarray
Grupos de usuários que veem a seção. Ausente quando a seção é para todos.
containers[].sections[].custom_cssstring
CSS próprio da seção. Ausente quando vazio.

Erros

StatusQuandoCorpo
401Sem token ou token expirado{"error":"missing authorization header"}
403Sem o privilégio manage_layouts{"error":"insufficient privileges","required":"manage_layouts"}
500Falha interna ao ler modelos ou layout{"error":"failed to get editor layout","detail":"..."}
Loja sem layout

Se a loja não tem layout algum, a leitura devolve layout_id zerado e containers vazio, e as rotas de rascunho com esse id não fazem sentido. Crie um layout pelo painel antes de usar o editor.

Veja também

  • Rascunho e publicação
  • Seções do rascunho
Anterior
Editor visual da vitrine
Próxima
Rascunho e publicação
Nesta página
  • Listar modelos de seção
  • Exemplo de requisição
  • Ler a página publicada
  • Erros
  • Veja também