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

Theme Builder

Temas da vitrine por seções: ajustes globais, definições de seção, modelos de página, cabeçalho, rodapé, blocos e publicação.

O Theme Builder monta a vitrine por seções, no estilo de lojas Shopify: o tema reúne ajustes globais (cores, fontes), tipos de seção reutilizáveis, um modelo por tipo de página (home, produto, carrinho...) e os grupos de cabeçalho e rodapé. O lojista escolhe e ordena seções, edita os campos delas e publica. Esta área é a API do editor de temas.

Pontos principais
  • A loja pode ter vários temas, mas só um está ao vivo (is_live). Publicar um tema e colocá-lo ao vivo são passos separados.
  • Todos os ids são UUIDs. Todas as rotas exigem o privilégio manage_theme.
  • Para mudar muita coisa de uma vez, use o rascunho: ele aplica tudo em uma transação.
  • Os blocos daqui (filhos de seção) não são os blocos dos layouts avançados. São dois sistemas separados.
  • Um id malformado nas rotas de leitura devolve 500, não 400.

Como funciona

O tema é uma hierarquia: o tema tem definições de seção (os moldes), modelos (um por tipo de página) e grupos (header e footer). Modelos e grupos contêm seções (instâncias de uma definição), e as seções podem ter blocos filhos.

Tema→Modelo ou Grupo→Seção→Bloco

Estados do tema (campo status, uma letra):

LetraNomeSignificado
RdraftRascunho: em construção, não pode ir ao ar.
ApublishedPublicado: pode ser colocado ao vivo.
LliveEstado ao vivo no vocabulário de status. O tema ao vivo é indicado por is_live: true.
DarchivedArquivado.

Fluxo típico para lançar um tema novo:

  1. Parta de algo pronto
    Crie o tema inicial (POST /themes/seed), duplique um tema existente ou importe um JSON exportado.
  2. Edite
    Salve alterações como rascunho (POST /themes/{id}/draft) ou use as rotas de seções e blocos diretamente.
  3. Aplique
    Publique o rascunho (POST /themes/{id}/draft/publish).
  4. Publique o tema
    POST /themes/{id}/publish muda o estado para A.
  5. Coloque ao vivo
    POST /themes/{id}/set-live liga o tema à vitrine.

Conceitos-chave

Tipos de campo

Os esquemas (global_settings_schema, settings_schema) descrevem formulários. Cada campo tem key, type, label e default. Tipos: text, textarea, richtext, url, image, color, range, number, checkbox, select, collection, product. range e number aceitam min, max, step e unit; select traz options (label e value). O valor preenchido vai em settings_values (ou global_settings_values), indexado pela key.

Orçamento de desempenho

Ao publicar o tema ou o rascunho, o servidor pesa as imagens e scripts do rascunho. Violações de severidade error bloqueiam com 422 e a lista violations. ?force=true ignora; ?optimize=true recomprime as imagens automaticamente. Sem rascunho (ou sem arquivos), nada é bloqueado.

Quem edita o quê

As rotas desta seção são do painel do administrador. A leitura pública da página renderizada pela vitrine é outra rota, fora desta seção.

Erros 500 em vez de 400

Várias rotas não validam o formato do id nem os campos antes de gravar. Um id que não é UUID chega ao banco e volta como 500 com uma mensagem em português; uma violação de unicidade (slug ou page_type repetido) também. Valide no cliente.

Endpoints

MétodoCaminhoPara que servePágina
GET/api/v1/admin/theme-builder/themesListar os temasTemas
GET/api/v1/admin/theme-builder/themes/{id}Obter um temaTemas
POST/api/v1/admin/theme-builder/themesCriar um tema vazioTemas
PUT/api/v1/admin/theme-builder/themes/{id}Atualizar dados do temaTemas
DELETE/api/v1/admin/theme-builder/themes/{id}Excluir um temaTemas
POST/api/v1/admin/theme-builder/themes/{id}/duplicateDuplicar um temaCiclo de vida do tema
POST/api/v1/admin/theme-builder/themes/seedCriar o tema inicial padrãoCiclo de vida do tema
POST/api/v1/admin/theme-builder/themes/{id}/publishPublicar o temaCiclo de vida do tema
POST/api/v1/admin/theme-builder/themes/{id}/set-liveColocar o tema ao vivoCiclo de vida do tema
GET/api/v1/admin/theme-builder/themes/{id}/exportExportar um tema como JSONImportar e exportar tema
POST/api/v1/admin/theme-builder/themes/importImportar um tema exportadoImportar e exportar tema
GET/api/v1/admin/theme-builder/themes/{id}/draftObter o rascunho do temaRascunho do tema
POST/api/v1/admin/theme-builder/themes/{id}/draftSalvar o rascunho do temaRascunho do tema
POST/api/v1/admin/theme-builder/themes/{id}/draft/publishAplicar o rascunho ao temaRascunho do tema
DELETE/api/v1/admin/theme-builder/themes/{id}/draftDescartar o rascunhoRascunho do tema
GET/api/v1/admin/theme-builder/themes/{id}/section-definitionsListar as definições de seção do temaDefinições de seção
POST/api/v1/admin/theme-builder/themes/{id}/section-definitionsCriar uma definição de seçãoDefinições de seção
PUT/api/v1/admin/theme-builder/section-definitions/{id}Atualizar uma definição de seçãoDefinições de seção
DELETE/api/v1/admin/theme-builder/section-definitions/{id}Excluir uma definição de seçãoDefinições de seção
GET/api/v1/admin/theme-builder/themes/{id}/templatesListar os modelos do temaModelos de página
GET/api/v1/admin/theme-builder/templates/{id}Obter um modeloModelos de página
POST/api/v1/admin/theme-builder/themes/{id}/templatesCriar um modelo de páginaModelos de página
PUT/api/v1/admin/theme-builder/templates/{id}Atualizar nome e SEO do modeloModelos de página
PUT/api/v1/admin/theme-builder/templates/{id}/sectionsSubstituir todas as seções do modeloModelos de página
GET/api/v1/admin/theme-builder/themes/{id}/groupsListar os grupos do temaGrupos de cabeçalho e rodapé
PUT/api/v1/admin/theme-builder/themes/{themeId}/groups/{groupId}Substituir todas as seções de um grupoGrupos de cabeçalho e rodapé
GET/api/v1/admin/theme-builder/template-sectionsListar as seções de um modelo ou grupoSeções do modelo
POST/api/v1/admin/theme-builder/template-sectionsInserir uma seçãoSeções do modelo
PUT/api/v1/admin/theme-builder/template-sections/{id}Atualizar os valores de uma seçãoSeções do modelo
DELETE/api/v1/admin/theme-builder/template-sections/{id}Remover uma seçãoSeções do modelo
PUT/api/v1/admin/theme-builder/template-sections/reorderReordenar seçõesOrdem e visibilidade das seções
PUT/api/v1/admin/theme-builder/template-sections/{id}/toggleAlternar a visibilidade de uma seçãoOrdem e visibilidade das seções
GET/api/v1/admin/theme-builder/template-sections/{id}/blocksListar os blocos de uma seçãoBlocos da seção
POST/api/v1/admin/theme-builder/template-sections/{id}/blocksAdicionar um bloco a uma seçãoBlocos da seção
PUT/api/v1/admin/theme-builder/blocks/{id}Atualizar os valores de um blocoBlocos da seção
DELETE/api/v1/admin/theme-builder/blocks/{id}Remover um blocoBlocos da seção
PUT/api/v1/admin/theme-builder/template-sections/{id}/blocks/reorderReordenar os blocos de uma seçãoBlocos da seção

Erros comuns

  • Chamar set-live num tema que não foi publicado. Devolve 500 com only published themes can be set as live.
  • Tentar excluir o tema ao vivo (500, cannot delete the live theme). Coloque outro ao vivo antes.
  • Usar PUT /templates/{id}/sections ou PUT /themes/{themeId}/groups/{groupId} com seções que têm blocos. Os blocos são apagados e não recriados.
  • Criar uma definição de seção sem slug. O servidor só confere o name e responde 500.
  • Guardar ids de seções e blocos em outro sistema: a publicação do rascunho os recria.
  • Repetir toggle por retentativa automática: cada chamada inverte a visibilidade.
  • Tratar status como texto longo. A resposta traz a letra (A), mesmo que você tenha enviado published.

Próximos passos

Temas
Cadastro e ajustes globais.
Ciclo de vida
Duplicar, publicar e colocar ao vivo.
Rascunho
Aplicar uma alteração grande de uma vez.
AI Builder
Gerar o tema com uma conversa.
Anterior
Duplicar e definir padrão
Próxima
Temas
Nesta página
  • Como funciona
  • Conceitos-chave
  • Tipos de campo
  • Orçamento de desempenho
  • Quem edita o quê
  • Erros 500 em vez de 400
  • Endpoints
  • Erros comuns
  • Próximos passos