Pular para conteúdo

Threat Hub Events

Rate Limit

Assim como toda a API GoCache, as requisições são contabilizadas e limitadas a 30 requisições/minuto, se isso for ultrapassado você poderá ser penalizado com um bloqueio, para integrações que necessitem consumir eventos de forma massiva, sugerimos o uso do Log Streaming.

Listar Eventos

Lista os eventos de segurança relacionados aos domínios cadastrados na conta.

POST /v1/threat-hub/events
$ curl -i https://api.gocache.com.br/v1/threat-hub/events \
    -X POST \
    -H 'Content-Type: application/json' \
    -H 'GoCache-Token: seu_token' \
    --data-binary \
    '{
        "start_date": 1723556861,
        "end_date": 1723555000,
        "type": ["waf", "firewall"],
        "action": ["challenge", "block"],
        "country_code": ["BR", "US"],
        "client_ip": ["192.168.10.2"],
        "host": ["api.example.com.br"],
        "domain": ["example.com.br"]
    }'
const fetch = require('node-fetch');

const url = 'https://api.gocache.com.br/v1/threat-hub/events';
const token = 'seu_token';

const data = {
    start_date: 1723556861,
    end_date: 1723555000,
    type: ['waf', 'firewall'],
    action: ['challenge', 'block'],
    country_code: ['BR', 'US'],
    client_ip: ['192.168.10.2'],
    host: ['api.example.com.br'],
    domain: ['example.com.br']
};

fetch(url, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'GoCache-Token': token
    },
    body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
console.log('Response:', data);
})
.catch(error => console.error('Erro:', error));
import requests
import json

url = 'https://api.gocache.com.br/v1/threat-hub/events'
token = 'seu_token'

data = {
    "start_date": 1723556861,
    "end_date": 1723555000,
    "type": ["waf", "firewall"],
    "action": ["challenge", "block"],
    "country_code": ["BR", "US"],
    "client_ip": ["192.168.10.2"],
    "host": ["api.example.com.br"],
    "domain": ["example.com.br"]
}

headers = {
    'Content-Type': 'application/json',
    'GoCache-Token': token
}

response = requests.post(url, headers=headers, data=json.dumps(data))
response_data = response.json()

print('Response:', response_data)

Parâmetros do body

Os parâmetros são utilizados para filtrar os eventos. Os parâmetros do tipo array terão o comportamento de 'ou'.

Campo Tipo Obrigatório Descrição
start_date Number Sim Data de início da busca (em timestamp).
end_date Number Sim Data de término da busca (em timestamp).
page Number Não Número da página de resultados. Valor padrão: 0
limit Number Não Limite de eventos retornados. Valor padrão: 100
type Array Não Feature que gerou o evento. Valores permitidos: "bot-mitigation", "waf", "rate-limit", "firewall"
action Array Não Ação do evento. Valores permitidos: "challenge", "block" e "simulate".
country_code Array Não Países a serem incluídos na busca. Máximo de 10.
client_ip Array Não IP do evento. Máximo de 20.
host Array Não Hosts do evento. Máximo de 10.
domain Array Não Domínio do evento. Máximo de 10.
id Array Não ID do evento. Máximo de 10.

Headers

Nome Obrigatório Descrição
GoCache-Token Sim Token de API da conta.

Exemplo de Sucesso

HTTP/1.1 200 OK
{
"status_code": 1,
"response": {
    "total": 3,
    "pages": 10,
    "current_page": 1,
    "events": [
    {
        "host": "example.com.br",
        "uri": "/example?q=1+1",
        "action": "block",
        "ip": "192.168.10.1",
        "timestamp": 1546308000,
        "country_code": "BR",
        "type": "waf",
        "method": "GET",
        "referer": "https://seudominio.com.br/",
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:93.0)",
        "id": "5e3396c0afbca534e24005",
        "alerts": [
        {
            "match": "is (",
            "msg": "SQL Injection attempt",
            "id": "41008"
        }
        ]
    }
    ]
}
}
Response: {
"status_code": 1,
"response": {
    "total": 3,
    "pages": 10,
    "current_page": 1,
    "events": [
    {
        "host": "example.com.br",
        "uri": "/example?q=1+1",
        "action": "block",
        "ip": "192.168.10.1",
        "timestamp": 1546308000,
        "country_code": "BR",
        "type": "waf",
        "method": "GET",
        "referer": "https://seudominio.com.br/",
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:93.0)",
        "id": "5e3396c0afbca534e24005",
        "alerts": [
        {
            "match": "is (",
            "msg": "SQL Injection attempt",
            "id": "41008"
        }
        ]
    }
    ]
}
}
Response: {
"status_code": 1,
"response": {
    "total": 3,
    "pages": 10,
    "current_page": 1,
    "events": [
    {
        "host": "example.com.br",
        "uri": "/example?q=1+1",
        "action": "block",
        "ip": "192.168.10.1",
        "timestamp": 1546308000,
        "country_code": "BR",
        "type": "waf",
        "method": "GET",
        "referer": "https://seudominio.com.br/",
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:93.0)",
        "id": "5e3396c0afbca534e24005",
        "alerts": [
        {
            "match": "is (",
            "msg": "SQL Injection attempt",
            "id": "41008"
        }
        ]
    }
    ]
}
}