Blocos da seção
Lista, adiciona, altera, remove e reordena os blocos filhos de uma seção.
Algumas seções têm filhos repetíveis: os slides de um carrossel, as colunas de uma lista de diferenciais, os itens de um menu. Cada filho é um bloco. Os tipos aceitos e o limite de cada um vêm de block_definitions na definição da seção. Atenção: não confunda com os blocos dos layouts avançados, que são outro sistema.
Listar blocos
Devolve os blocos em ordem. Seção sem blocos devolve lista vazia.
/api/v1/admin/theme-builder/template-sections/{id}/blocksAdminListar os blocos de uma seção
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/template-sections/3d4dfa54-1a77-403d-b447-19d10718fe56/blocks" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"blocks": [
{
"id": "6b1f7f0e-3c55-4c2a-9a0a-5f7a1c2d9e10",
"template_section_id": "3d4dfa54-1a77-403d-b447-19d10718fe56",
"block_type": "column",
"name": "Frete grátis",
"settings_values": {
"heading": "Frete grátis",
"text": "Acima de R$ 199"
},
"sort_order": 0,
"visible": true,
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}
]
}{
"blocks": []
}Campos da resposta
blocksarrayBlocos.
iduuidtemplate_section_iduuidblock_typestringblock_definitions da definição (por exemplo column).namestringsettings_valuesobjectsort_orderintegervisiblebooleancreated_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 blocks","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 blocks","detail":"..."} |
Adicionar bloco
Cria um bloco na seção, com a posição sort_order informada.
/api/v1/admin/theme-builder/template-sections/{id}/blocksAdminAdicionar um bloco a uma seção
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
block_typestringobrigatórioblock_definitions.namestringsettings_valuesobjectsort_orderintegerpadrão: 0Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/theme-builder/template-sections/3d4dfa54-1a77-403d-b447-19d10718fe56/blocks" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"block_type": "column",
"name": "Frete grátis",
"settings_values": {
"heading": "Frete grátis",
"text": "Acima de R$ 199"
}
}'Resposta
{
"id": "6b1f7f0e-3c55-4c2a-9a0a-5f7a1c2d9e10",
"template_section_id": "3d4dfa54-1a77-403d-b447-19d10718fe56",
"block_type": "column",
"name": "Frete grátis",
"settings_values": {
"heading": "Frete grátis",
"text": "Acima de R$ 199"
},
"sort_order": 0,
"visible": true,
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Campos da resposta
iduuidtemplate_section_iduuidblock_typestringblock_definitions da definição (por exemplo column).namestringsettings_valuesobjectsort_orderintegervisiblebooleancreated_atstringupdated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo JSON inválido. | {"error":"invalid request body","detail":"unexpected EOF"} |
| 400 | block_type vazio. | {"error":"block_type is 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 | Falha de banco de dados ou dado inválido para a coluna. | {"error":"failed to add block","detail":"..."} |
Atualizar bloco
Substitui os settings_values do bloco por inteiro.
/api/v1/admin/theme-builder/blocks/{id}AdminAtualizar os valores de um bloco
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
settings_valuesobjectobrigatórioExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/theme-builder/blocks/6b1f7f0e-3c55-4c2a-9a0a-5f7a1c2d9e10" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"settings_values": {
"heading": "Frete grátis",
"text": "Acima de R$ 249"
}
}'Resposta
{
"message": "block settings 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 | Bloco não existe. | {"error":"block not found","detail":"not found: ..."} |
| 500 | Falha de banco de dados ou dado inválido para a coluna. | {"error":"failed to update block settings","detail":"..."} |
Remover bloco
Remove o bloco da seção.
/api/v1/admin/theme-builder/blocks/{id}AdminRemover um bloco
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/theme-builder/blocks/6b1f7f0e-3c55-4c2a-9a0a-5f7a1c2d9e10" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"message": "block removed"
}Erros
| 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 | Bloco não existe. | {"error":"block not found","detail":"not found: ..."} |
| 500 | Falha de banco de dados ou dado inválido para a coluna. | {"error":"failed to remove block","detail":"..."} |
Reordenar blocos
O bloco na posição 0 do array vira o primeiro, e assim por diante. Ids que não são da seção são ignorados em silêncio.
/api/v1/admin/theme-builder/template-sections/{id}/blocks/reorderAdminReordenar os blocos de uma seção
Requer o privilégio manage_theme.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
idsuuid[]obrigatórioExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/theme-builder/template-sections/3d4dfa54-1a77-403d-b447-19d10718fe56/blocks/reorder" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ids": [
"6b1f7f0e-3c55-4c2a-9a0a-5f7a1c2d9e10"
]
}'Resposta
{
"message": "blocks reordered"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo JSON inválido. | {"error":"invalid request body","detail":"unexpected EOF"} |
| 400 | ids vazio. | {"error":"ids array is 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 | Falha de banco de dados ou dado inválido para a coluna. | {"error":"failed to reorder blocks","detail":"..."} |