Blocos reutilizáveis
Transforma um bloco em reutilizável, insere instâncias vinculadas e propaga mudanças a todas elas.
Um bloco reutilizável é um bloco cuja configuração mora na biblioteca e é compartilhada por todos os lugares onde foi inserido. Ao editar o reutilizável, todas as instâncias passam a usar a nova configuração. É o recurso certo para uma faixa de aviso, um selo de segurança ou um rodapé que aparece em várias páginas. Diferente do item comum da biblioteca, que é cópia.
Listar reutilizáveis
Devolve os itens da biblioteca com a contagem de instâncias vinculadas.
/api/v1/admin/advanced-layouts/reusable-blocksAdminListar blocos reutilizáveis
Requer o privilégio manage_layouts.
Exemplo de requisição
curl -X GET "$BASE_URL/api/v1/admin/advanced-layouts/reusable-blocks" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"reusable_blocks": [
{
"id": 10,
"name": "Faixa de frete grátis",
"block_type": "categories_grid",
"config": {
"columns": 4,
"count": 8
},
"content": {},
"placement_count": 1,
"created_at": "2026-07-13T13:51:26.232664Z",
"updated_at": "2026-07-13T13:51:26.232664Z"
}
]
}Campos da resposta
reusable_blocksarrayBlocos reutilizáveis (lista vazia quando não há).
idintegernamestringblock_typestringconfigobjectcontentobjectdesignobjectplacement_countintegercreated_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_layouts. | {"error":"insufficient privileges","required":"manage_layouts"} |
| 500 | Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404. | {"error":"failed to list reusable blocks","detail":"..."} |
Salvar como reutilizável
Cria o reutilizável a partir da configuração do bloco e vincula o próprio bloco a ele. A partir daí, o bloco passa a refletir mudanças feitas no reutilizável.
/api/v1/admin/advanced-layouts/blocks/{id}/save-as-reusableAdminTransformar um bloco em reutilizável
Requer o privilégio manage_layouts.
Parâmetros de caminho
idintegerobrigatórioCorpo da requisição
namestringobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/advanced-layouts/blocks/11081/save-as-reusable" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Faixa de frete grátis"
}'Resposta
{
"id": 10,
"name": "Faixa de frete grátis",
"block_type": "categories_grid",
"config": {
"columns": 4,
"count": 8
},
"content": {},
"placement_count": 1,
"created_at": "2026-07-13T13:51:26.232664Z",
"updated_at": "2026-07-13T13:51:26.232664Z"
}Campos da resposta
idintegernamestringblock_typestringconfigobjectcontentobjectdesignobjectplacement_countintegercreated_atstringupdated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | O id de block no caminho não é um inteiro. | {"error":"invalid block id","detail":"id must be an integer"} |
| 400 | Corpo JSON inválido. | {"error":"invalid request body","detail":"unexpected EOF"} |
| 400 | name vazio. | {"error":"name 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_layouts. | {"error":"insufficient privileges","required":"manage_layouts"} |
| 500 | Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404. | {"error":"failed to save block as reusable","detail":"..."} |
Atualizar reutilizável
Troca a configuração do reutilizável e a propaga para todas as instâncias vinculadas. Só config é alterado por esta rota.
/api/v1/admin/advanced-layouts/reusable-blocks/{id}AdminAlterar um bloco reutilizável
Requer o privilégio manage_layouts.
Parâmetros de caminho
idintegerobrigatórioCorpo da requisição
configobjectExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/advanced-layouts/reusable-blocks/10" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"config": {
"columns": 3,
"count": 6
}
}'Resposta
{
"id": 10,
"name": "Faixa de frete grátis",
"block_type": "categories_grid",
"config": {
"columns": 3,
"count": 6
},
"content": {},
"placement_count": 1,
"created_at": "2026-07-13T13:51:26.232664Z",
"updated_at": "2026-07-13T13:51:26.232664Z"
}Campos da resposta
idintegernamestringblock_typestringconfigobjectcontentobjectdesignobjectplacement_countintegercreated_atstringupdated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | O id de reusable block no caminho não é um inteiro. | {"error":"invalid reusable block id","detail":"id must be an integer"} |
| 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_layouts. | {"error":"insufficient privileges","required":"manage_layouts"} |
| 500 | Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404. | {"error":"failed to update reusable block","detail":"..."} |
Inserir instância vinculada
Cria na coluna um bloco novo vinculado ao reutilizável. O bloco devolvido traz reusable_block_id.
/api/v1/admin/advanced-layouts/columns/{id}/blocks/from-reusableAdminInserir uma instância vinculada numa coluna
Requer o privilégio manage_layouts.
Parâmetros de caminho
idintegerobrigatórioCorpo da requisição
reusable_block_idintegerobrigatóriosort_orderintegerpadrão: 0Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/advanced-layouts/columns/8790/blocks/from-reusable" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reusable_block_id": 10,
"sort_order": 0
}'Resposta
{
"id": 11140,
"column_id": 8790,
"block_type": "categories_grid",
"sort_order": 0,
"name": "Main Banner",
"config": {
"autoplay": true,
"interval": 5000,
"show_arrows": true
},
"content": {},
"visibility": {
"desktop": true,
"tablet": true,
"mobile": true
},
"status": "A",
"cache_ttl": 300,
"updated_at": "2026-07-12T16:29:12.505299Z",
"reusable_block_id": 10
}Campos da resposta
idintegercolumn_idintegerblock_typestringbanner_slider. A lista completa vem de Catálogo de blocos.sort_orderintegernamestringconfigobjectsettings do catálogo).contentobjectvisibilityobjectusergroup_idsstring[]statusstringA (ativo) ou D (inativo).cache_ttlintegercustom_classstringcustom_cssstringwrapperstringh1_main, h2_important, h3_ordinary, footer, onclick_dropdown, filter_wrapper ou card.designobjectreusable_block_idintegercreated_atstringupdated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | O id de column no caminho não é um inteiro. | {"error":"invalid column id","detail":"id must be an integer"} |
| 400 | Corpo JSON inválido. | {"error":"invalid request body","detail":"unexpected EOF"} |
| 400 | reusable_block_id ausente ou zero. | {"error":"reusable_block_id 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_layouts. | {"error":"insufficient privileges","required":"manage_layouts"} |
| 500 | Falha ao gravar ou ler no banco, ou id inexistente onde a rota não trata 404. | {"error":"failed to add block from reusable","detail":"..."} |