IPs bloqueados
Registra, lista, consulta e remove os IPs bloqueados pela equipe de segurança da loja.
O registro de IPs bloqueados guarda endereços que a equipe de segurança da loja marcou como indesejados, com o motivo e, opcionalmente, uma data de vencimento. Use para registrar um bloqueio vindo de um alerta, listar o que está ativo ou remover um bloqueio por engano.
Todas as rotas desta página exigem o privilégio manage_security ou manage_settings e o módulo security ligado.
/api/v1/admin/security/blocked-ipsAdminListar IPs bloqueados
Lista os bloqueios, do mais recente para o mais antigo. Inclui os já vencidos que ainda não foram limpos (veja Limpar vencidos).
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário (veja Tokens).Parâmetros de consulta
pageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
curl -X GET "$BASE_URL/api/v1/admin/security/blocked-ips?page=1&per_page=20" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"items": [
{
"id": "7d7889d2-6e29-4022-bd78-f3a6139a2951",
"ip_address": "198.51.100.77",
"reason": "Tentativas de login em excesso",
"blocked_at": "2026-10-11T20:52:43.976100Z",
"expires_at": "2026-10-12T20:52:43.975872Z",
"created_by": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc"
}
],
"total": 1,
"page": 1,
"per_page": 20,
"total_pages": 1
}Campos da resposta
itemsobject[]totalintegerpageintegerper_pageintegertotal_pagesintegerErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"invalid or expired token"} |
| 403 | Falta manage_security (ou manage_settings). | {"error":"insufficient privileges","privilege_required_any":["manage_security","manage_settings"]} |
| 403 | O módulo security está desligado na loja. | {"error":"module_disabled","module":"security"} |
| 500 | Falha ao listar. | {"error":"failed to list blocked IPs","detail":"..."} |
/api/v1/admin/security/blocked-ipsAdminBloquear um IP
Registra o bloqueio e grava quem o fez (o administrador do token) e quando. Se o mesmo endereço já estiver na lista, a entrada existente é atualizada (motivo, vencimento e autor) e a resposta continua 201. O campo created_by enviado no corpo é ignorado.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário (veja Tokens).Corpo da requisição
ip_addressstringobrigatório203.0.113.0/24).reasonstringobrigatórioduration_hoursintegerpadrão: 00 ou omitido: bloqueio permanente.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/security/blocked-ips" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ip_address": "198.51.100.77",
"reason": "Tentativas de login em excesso",
"duration_hours": 24
}'Resposta
{
"id": "7d7889d2-6e29-4022-bd78-f3a6139a2951",
"ip_address": "198.51.100.77",
"reason": "Tentativas de login em excesso",
"blocked_at": "2026-10-11T20:52:43.976100Z",
"expires_at": "2026-10-12T20:52:43.975872Z",
"created_by": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"invalid or expired token"} |
| 403 | Falta manage_security (ou manage_settings). | {"error":"insufficient privileges","privilege_required_any":["manage_security","manage_settings"]} |
| 403 | O módulo security está desligado na loja. | {"error":"module_disabled","module":"security"} |
| 400 | Corpo inválido, ip_address ou reason ausente, ou endereço que não é IP nem CIDR. | {"error":"invalid IP address: nope"} |
| 400 | reason ausente. | {"error":"reason is required"} |
| 500 | Falha ao gravar. | {"error":"failed to block IP","detail":"..."} |
/api/v1/admin/security/blocked-ips/{id}AdminConsultar bloqueio
Devolve um bloqueio pelo id.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário (veja Tokens).Parâmetros de caminho
iduuidobrigatórioid devolvido na criação e na lista.Exemplo de requisição
curl -X GET "$BASE_URL/api/v1/admin/security/blocked-ips/7d7889d2-6e29-4022-bd78-f3a6139a2951" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": "7d7889d2-6e29-4022-bd78-f3a6139a2951",
"ip_address": "198.51.100.77",
"reason": "Tentativas de login em excesso",
"blocked_at": "2026-10-11T20:52:43.976100Z",
"expires_at": "2026-10-12T20:52:43.975872Z",
"created_by": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc"
}Campos da resposta
iduuidip_addressstringreasonstringblocked_atstringexpires_atstringcreated_byuuidErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"invalid or expired token"} |
| 403 | Falta manage_security (ou manage_settings). | {"error":"insufficient privileges","privilege_required_any":["manage_security","manage_settings"]} |
| 403 | O módulo security está desligado na loja. | {"error":"module_disabled","module":"security"} |
| 404 | Não existe bloqueio com esse id. | {"error":"blocked IP not found"} |
| 500 | Falha ao ler, inclusive quando o id não é um UUID válido (a mensagem de detalhe vem em português). | {"error":"failed to get blocked IP","detail":"..."} |
/api/v1/admin/security/blocked-ips/{id}AdminRemover bloqueio
Apaga o bloqueio. Não há como desfazer pela API; para bloquear de novo, crie outro. A remoção fica no registro de atividades da loja.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário (veja Tokens).Parâmetros de caminho
iduuidobrigatórioid devolvido na criação e na lista.Exemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/security/blocked-ips/7d7889d2-6e29-4022-bd78-f3a6139a2951" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"message": "IP unblocked"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"invalid or expired token"} |
| 403 | Falta manage_security (ou manage_settings). | {"error":"insufficient privileges","privilege_required_any":["manage_security","manage_settings"]} |
| 403 | O módulo security está desligado na loja. | {"error":"module_disabled","module":"security"} |
| 404 | Não existe bloqueio com esse id (inclui chamar duas vezes). | {"error":"blocked IP not found"} |
| 500 | Falha ao remover. | {"error":"failed to unblock IP","detail":"..."} |