Modelos de página
Lista, consulta, cria e altera os modelos de página do tema e substitui todas as suas seções de uma vez.
Um modelo (template) descreve uma tela do tema, como a home ou a página de produto, e é identificado por um page_type. Cada tema tem no máximo um modelo por page_type. O conteúdo do modelo é a lista ordenada de seções. Cabeçalho e rodapé não ficam no modelo: são grupos compartilhados por todas as páginas.
Listar modelos
Devolve os modelos do tema, sem as seções.
/api/v1/admin/theme-builder/themes/{id}/templatesAdminListar os modelos do tema
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X GET "$BASE_URL/api/v1/admin/theme-builder/themes/fb9134bb-7063-46a5-96f8-bad686d1c69b/templates" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"templates": [
{
"id": "30a0a88f-2eba-4a7a-bdea-ab73b761ab99",
"theme_id": "fb9134bb-7063-46a5-96f8-bad686d1c69b",
"page_type": "index",
"name": "Homepage",
"seo_title": "Bem-vindo à Nossa Loja",
"seo_description": "Descubra produtos incríveis com ótimos preços.",
"created_at": "2026-04-07T02:46:02.491306Z",
"updated_at": "2026-04-07T02:46:02.491306Z"
}
]
}Campos da resposta
templatesarrayModelos.
iduuidtheme_iduuidpage_typestringindex, product, collection, cart, blog, page, 404, search, vendor.namestringseo_titlestringseo_descriptionstringcreated_atstringupdated_atstringErros
| 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_theme. | {"error":"insufficient privileges","required":"manage_theme"} |
| 500 | O id do caminho não é um UUID. Esta rota não valida antes e devolve 500 com a mensagem do banco em português. | {"error":"failed to list templates","detail":"o valor \"xx\" não é um uuid válido. Envie o identificador completo, com os 36 caracteres e os hífens. Corrija o campo e reenvie."} |
| 500 | Falha de banco de dados ou dado inválido para a coluna. | {"error":"failed to list templates","detail":"..."} |
Obter modelo
Devolve o modelo. As seções vêm de listar seções.
/api/v1/admin/theme-builder/templates/{id}AdminObter um modelo
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X GET "$BASE_URL/api/v1/admin/theme-builder/templates/30a0a88f-2eba-4a7a-bdea-ab73b761ab99" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": "30a0a88f-2eba-4a7a-bdea-ab73b761ab99",
"theme_id": "fb9134bb-7063-46a5-96f8-bad686d1c69b",
"page_type": "index",
"name": "Homepage",
"seo_title": "Bem-vindo à Nossa Loja",
"seo_description": "Descubra produtos incríveis com ótimos preços.",
"created_at": "2026-04-07T02:46:02.491306Z",
"updated_at": "2026-04-07T02:46:02.491306Z"
}Campos da resposta
iduuidtheme_iduuidpage_typestringindex, product, collection, cart, blog, page, 404, search, vendor.namestringseo_titlestringseo_descriptionstringcreated_atstringupdated_atstringErros
| 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_theme. | {"error":"insufficient privileges","required":"manage_theme"} |
| 404 | Modelo não existe. | {"error":"template not found"} |
| 500 | O id do caminho não é um UUID. Esta rota não valida antes e devolve 500 com a mensagem do banco em português. | {"error":"failed to get template","detail":"o valor \"xx\" não é um uuid válido. Envie o identificador completo, com os 36 caracteres e os hífens. Corrija o campo e reenvie."} |
Criar modelo
Cria um modelo vazio para um tipo de página.
/api/v1/admin/theme-builder/themes/{id}/templatesAdminCriar um modelo de página
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
page_typestringobrigatórionamestringobrigatórioseo_titlestringseo_descriptionstringExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/theme-builder/themes/fb9134bb-7063-46a5-96f8-bad686d1c69b/templates" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"page_type": "cart",
"name": "Carrinho",
"seo_title": "Seu carrinho"
}'Resposta
{
"id": "e4e4e4e4-0000-4000-8000-000000000004",
"theme_id": "fb9134bb-7063-46a5-96f8-bad686d1c69b",
"page_type": "cart",
"name": "Carrinho",
"seo_title": "Seu carrinho",
"seo_description": "",
"created_at": "2026-04-07T02:46:02.491306Z",
"updated_at": "2026-04-07T02:46:02.491306Z"
}Campos da resposta
iduuidtheme_iduuidpage_typestringindex, product, collection, cart, blog, page, 404, search, vendor.namestringseo_titlestringseo_descriptionstringcreated_atstringupdated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo JSON inválido. | {"error":"invalid request body","detail":"unexpected EOF"} |
| 400 | page_type ou name vazio. | {"error":"page_type and name are required"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_theme. | {"error":"insufficient privileges","required":"manage_theme"} |
| 500 | Já existe modelo com esse page_type no tema, ou tema inexistente. | {"error":"failed to create template","detail":"..."} |
Atualizar modelo
Altera nome e campos de SEO. O page_type não pode ser alterado.
/api/v1/admin/theme-builder/templates/{id}AdminAtualizar nome e SEO do modelo
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
namestringseo_titlestringseo_descriptionstringExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/theme-builder/templates/30a0a88f-2eba-4a7a-bdea-ab73b761ab99" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"seo_title": "Minha Loja | Ofertas"
}'Resposta
{
"message": "template updated"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo JSON inválido. | {"error":"invalid request body","detail":"unexpected EOF"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_theme. | {"error":"insufficient privileges","required":"manage_theme"} |
| 404 | Modelo não existe. | {"error":"template not found","detail":"not found: ..."} |
| 500 | Falha de banco de dados ou dado inválido para a coluna. | {"error":"failed to update template","detail":"..."} |
Salvar todas as seções
Apaga todas as seções atuais do modelo (e os blocos delas) e cria as da lista, na ordem do array, em uma transação. Serve para salvar a tela inteira de uma vez.
/api/v1/admin/theme-builder/templates/{id}/sectionsAdminSubstituir todas as seções do modelo
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
sectionsobject[]obrigatórioSeções, na ordem final.
section_definition_iduuidobrigatórionamestringsettings_valuesobjectpadrão: {}key.sort_orderintegercustom_cssstringExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/theme-builder/templates/30a0a88f-2eba-4a7a-bdea-ab73b761ab99/sections" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"sections": [
{
"section_definition_id": "49ee1ac9-b950-4526-8ffd-571caae96a45",
"name": "Novidades",
"settings_values": {
"heading": "Novidades da semana"
}
}
]
}'Resposta
{
"message": "sections saved"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo JSON inválido. | {"error":"invalid request body","detail":"unexpected EOF"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | Seu usuário não tem o privilégio manage_theme. | {"error":"insufficient privileges","required":"manage_theme"} |
| 500 | Falha de banco de dados ou dado inválido para a coluna. | {"error":"failed to bulk save sections","detail":"..."} |