Listar e consultar modelos
Lista os modelos de e-mail da loja e consulta um modelo pelo id.
Listar modelos de e-mail
Devolve todos os modelos de e-mail que a loja usa para falar com clientes, sellers e administradores: confirmação de pedido, mudança de status, carrinho abandonado, cupom e assim por diante. Não tem paginação.
/api/v1/admin/email-templatesAdminLista os modelos de e-mail da loja
Rota ligada ao módulo email-notifications: com o módulo desligado a resposta é 403. Leitura e prévia exigem permissão de e-mail (view_email); alterar, restaurar e enviar teste exigem manage_email ou manage_settings.
Parâmetros de consulta
statusstringADactive não casa com nada.languagestringpt-BRenrecipient_typestringcustomervendoradminallskip_status_syncstring11, não sincroniza os modelos de status de pedido antes de listar (veja o aviso).Exemplo de requisição (Listar modelos)
curl "$BASE_URL/api/v1/admin/email-templates?language=pt-BR&recipient_type=customer" \
-H "Authorization: Bearer $TOKEN"Resposta (Listar modelos)
{
"templates": [
{
"id": "dfd62617-b4fe-40e0-8e16-82debd20fcc0",
"slug": "abandoned_cart",
"name": "Abandoned Cart",
"subject": "Seu carrinho em {{store_name}} ainda está reservado",
"body_html": "<!DOCTYPE html><html lang=\"pt-BR\">...</html>",
"body_text": "You have {{item_count}} items in your cart. Complete your purchase: {{recovery_url}}",
"variables": [
"user_email",
"cart_total",
"item_count",
"recovery_url",
"recovery_token",
"store_url",
"cart_id"
],
"status": "A",
"is_system": true,
"recipient_type": "customer",
"language": "pt-BR",
"is_wired": true,
"created_at": "2026-03-16T08:15:47.267516Z",
"updated_at": "2026-07-20T19:43:49.057165Z",
"template_id": "dfd62617-b4fe-40e0-8e16-82debd20fcc0",
"body": "<!DOCTYPE html><html lang=\"pt-BR\">...</html>",
"timestamp": 1773648947,
"updated_timestamp": 1784576629
}
],
"total": 1
}Campos da resposta
templatesarrayModelos que atendem ao filtro.
iduuidslugstringabandoned_cart, order_status_shipped...). É por ele que o sistema escolhe qual modelo usar. O mesmo slug existe uma vez por idioma e destinatário.namestringsubjectstring{{nome}}.body_htmlstring{{nome}}.body_textstringvariablesarraystatusstringA ativo, D desativado.is_systembooleantrue para modelos que vêm com a plataforma. Só estes podem ser restaurados ao padrão.recipient_typestringcustomervendoradminalllanguagestringpt-BR, en).is_wiredbooleantrue quando existe um ponto do sistema que realmente envia este modelo. false indica modelo órfão, que nunca será enviado.created_atstringupdated_atstringtotalintegerErros (Listar modelos)
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O administrador não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["manage_settings","view_email","manage_email","view_sms","manage_sms"]} |
| 500 | Falha de banco. | {"error":"failed to list email templates","detail":"..."} |
Consultar modelo de e-mail
Devolve o modelo completo, com HTML e variáveis disponíveis.
/api/v1/admin/email-templates/{id}AdminDevolve um modelo pelo id
Rota ligada ao módulo email-notifications: com o módulo desligado a resposta é 403. Leitura e prévia exigem permissão de e-mail (view_email); alterar, restaurar e enviar teste exigem manage_email ou manage_settings.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição (Consultar modelo)
curl "$BASE_URL/api/v1/admin/email-templates/dfd62617-b4fe-40e0-8e16-82debd20fcc0" \
-H "Authorization: Bearer $TOKEN"Resposta (Consultar modelo)
{
"id": "dfd62617-b4fe-40e0-8e16-82debd20fcc0",
"slug": "abandoned_cart",
"name": "Abandoned Cart",
"subject": "Seu carrinho em {{store_name}} ainda está reservado",
"body_html": "<!DOCTYPE html><html lang=\"pt-BR\">...</html>",
"body_text": "You have {{item_count}} items in your cart. Complete your purchase: {{recovery_url}}",
"variables": [
"user_email",
"cart_total",
"item_count",
"recovery_url",
"recovery_token",
"store_url",
"cart_id"
],
"status": "A",
"is_system": true,
"recipient_type": "customer",
"language": "pt-BR",
"is_wired": true,
"created_at": "2026-03-16T08:15:47.267516Z",
"updated_at": "2026-07-20T19:43:49.057165Z",
"template_id": "dfd62617-b4fe-40e0-8e16-82debd20fcc0",
"body": "<!DOCTYPE html><html lang=\"pt-BR\">...</html>",
"timestamp": 1773648947,
"updated_timestamp": 1784576629
}Campos da resposta
iduuidslugstringabandoned_cart, order_status_shipped...). É por ele que o sistema escolhe qual modelo usar. O mesmo slug existe uma vez por idioma e destinatário.namestringsubjectstring{{nome}}.body_htmlstring{{nome}}.body_textstringvariablesarraystatusstringA ativo, D desativado.is_systembooleantrue para modelos que vêm com a plataforma. Só estes podem ser restaurados ao padrão.recipient_typestringcustomervendoradminalllanguagestringpt-BR, en).is_wiredbooleantrue quando existe um ponto do sistema que realmente envia este modelo. false indica modelo órfão, que nunca será enviado.created_atstringupdated_atstringErros (Consultar modelo)
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O administrador não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["manage_settings","view_email","manage_email","view_sms","manage_sms"]} |
| 404 | Não existe modelo com esse id (também vale para um id que não é UUID). | {"detail":"email template not found: 00000000-0000-0000-0000-000000000000","error":"email template not found"} |