Alterar e apagar banners
Atualiza parcialmente um banner, apaga um ou apaga vários de uma vez.
Atualizar banner
Atualiza só os campos enviados. As regras de validação são as mesmas da criação (URLs, canais, dispositivos, janela de datas). Para trocar a lista de canais ou dispositivos, envie a lista completa nova: ela substitui a anterior.
/api/v1/admin/banners/{id}AdminAltera campos de um banner
Rota ligada ao módulo banners: com o módulo desligado a resposta é 403. Leitura exige manage_content ou view_content; escrita exige manage_content.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
namestringimage_urlstringhttps:// pública ou um caminho /uploads/... da própria loja; outros esquemas e endereços de rede interna são recusados.mobile_image_urlstringimage_url.link_urlstringalt_textstringstatusstringactiveinactivescheduledhiddenactive é exibido; scheduled fica guardado como rascunho e não liga sozinho.starts_atstringends_atstringstarts_at.usergroup_idsstringtarget_pagesarraytarget_categoriesarraychannelsarraysitevenddor_appclient_appdevicesarraymobiletabletdesktoppositionintegerpadrão: 0typestringpadrão: GGTG gráfico (padrão) ou T texto. Banner de texto dispensa imagem.targetstringpadrão: TTBT mesma janela (padrão) ou B nova janela.descriptionstringoverlay_titlestringoverlay_subtitlestringoverlay_button_textstringoverlay_button_urlstringoverlay_text_colorstringoverlay_button_colorstringoverlay_positionstringleftcenterrightvendor_iduuiddescriptionsobjectname.Exemplo de requisição (Atualizar banner)
curl -X PUT "$BASE_URL/api/v1/admin/banners/d76f2753-a934-44a7-881f-146aa7438c7b" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "active"
}'Resposta (Atualizar banner)
{
"id": "d76f2753-a934-44a7-881f-146aa7438c7b",
"name": "Black Friday 2026",
"image_url": "https://cdn.minhaloja.com.br/banners/bf-2026.png",
"alt_text": "Ofertas de Black Friday",
"position": 0,
"status": "active",
"usergroup_ids": "",
"starts_at": "2026-11-27T00:00:00Z",
"ends_at": "2026-11-30T23:59:59Z",
"target_pages": [],
"target_categories": [],
"created_at": "2026-10-11T21:04:55.045564Z",
"overlay_position": "left",
"type": "G",
"target": "T",
"description": "",
"channels": [
"site"
],
"devices": [
"mobile",
"desktop"
],
"banner_id": "d76f2753-a934-44a7-881f-146aa7438c7b",
"banner": "Black Friday 2026",
"image_path": "https://cdn.minhaloja.com.br/banners/bf-2026.png"
}Campos da resposta
iduuidnamestringimage_urlstringmobile_image_urlstringlink_urlstringalt_textstringpositionintegerstatusstringactive, inactive, scheduled ou hidden.usergroup_idsstringstarts_atstringends_atstringtarget_pagesarraytarget_categoriesarrayvendor_iduuidoverlay_titlestringoverlay_subtitlestringoverlay_button_textstringoverlay_button_urlstringoverlay_text_colorstringoverlay_button_colorstringoverlay_positionstringleftcenterrighttypestringG banner gráfico (imagem) ou T banner de texto.targetstringT abre no mesmo lugar, B abre em nova janela.descriptionstringchannelsarraynull = todos.devicesarraynull = todos.created_atstringErros (Atualizar banner)
| 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","required":"manage_content"} |
| 404 | O id não é um UUID ou não existe banner com ele. | {"error":"banner not found","detail":"id inválido"} |
| 400 | Dado inválido: status, canal ou dispositivo desconhecido, URL não http(s) ou apontando para rede interna, janela de datas invertida. | {"error":"invalid input","detail":"invalid_channel: unknown channel \"tv\""} |
| 500 | Banner inexistente (a plataforma responde 500) ou falha de banco. | {"error":"failed to update banner","detail":"banner not found"} |
Apagar banner
Remove o banner de vez: não há lixeira para banners. Para tirá-lo da vitrine sem perder o cadastro, mude o status para inactive com a rota de atualização.
/api/v1/admin/banners/{id}AdminApaga um banner definitivamente
Rota ligada ao módulo banners: com o módulo desligado a resposta é 403. Leitura exige manage_content ou view_content; escrita exige manage_content.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição (Apagar banner)
curl -X DELETE "$BASE_URL/api/v1/admin/banners/d76f2753-a934-44a7-881f-146aa7438c7b" \
-H "Authorization: Bearer $TOKEN"Resposta (Apagar banner)
{
"message": "banner deleted"
}Erros (Apagar banner)
| 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","required":"manage_content"} |
| 404 | O id não é um UUID ou não existe banner com ele. | {"error":"banner not found","detail":"id inválido"} |
| 500 | O banner não existe (ou já foi apagado). A plataforma responde 500 em vez de 404. | {"error":"failed to delete banner","detail":"banner not found"} |
Apagar vários banners
Apaga de uma vez os banners cujos ids você enviar. A operação é idempotente: ids que não existem são ignorados em silêncio, e a resposta diz quantos foram de fato apagados.
/api/v1/admin/banners/bulk-deleteAdminApaga uma lista de banners de uma vez
Rota ligada ao módulo banners: com o módulo desligado a resposta é 403. Leitura exige manage_content ou view_content; escrita exige manage_content.
Corpo da requisição
idsarrayobrigatóriosimulatebooleantrue, não apaga: devolve a contagem e uma amostra do que seria apagado, mais um confirm_token para confirmar depois. Recurso avançado de operação em lote.confirm_tokenstringExemplo de requisição (Apagar vários banners)
curl -X POST "$BASE_URL/api/v1/admin/banners/bulk-delete" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ids": [
"d76f2753-a934-44a7-881f-146aa7438c7b",
"5b6c1f3e-0d5a-4b53-9a0e-8c1a3f7b2d10"
]
}'Resposta (Apagar vários banners)
{
"deleted": 1,
"requested": 2
}Campos da resposta
deletedintegerrequestedintegerErros (Apagar vários banners)
| 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","required":"manage_content"} |
| 400 | ids ausente ou vazio, ou corpo inválido. | {"error":"ids array is required"} |
| 500 | Algum id não é UUID válido, ou falha de banco. | {"error":"failed to bulk delete banners","detail":"..."} |