API de Análises Agendadas
As análises agendadas definem tarefas de análise recorrentes. Cada análise agendada define um acionamento recorrente que é executado no intervalo configurado.
Listar Análises Agendadas
Devolve todas as análises agendadas para o tenant autenticado, incluindo a análise automática do plano.
GET /tenants/me/scheduled-scansExemplo de Pedido
bash
curl https://api.aether365.io/tenants/me/scheduled-scans \
-H "Authorization: Bearer <token>"Exemplo de Resposta
json
{
"success": true,
"data": [
{
"id": "plan",
"isPlanSchedule": true,
"name": "Automatic plan scan",
"frequency": "weekly",
"hour": 0,
"minute": 0,
"dayOfWeek": 0,
"dayOfMonth": 1,
"timezone": "UTC",
"enabled": true,
"scanType": "compliance",
"lastTriggeredAt": "2026-04-07T00:00:00Z"
},
{
"id": "sched_abc123",
"isPlanSchedule": false,
"name": "Weekly exposure scan",
"frequency": "weekly",
"hour": 6,
"minute": 0,
"dayOfWeek": 3,
"dayOfMonth": null,
"timezone": "Europe/London",
"enabled": true,
"scanType": "exposure",
"lastTriggeredAt": "2026-04-09T06:00:00Z"
}
]
}Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador do agendamento ("plan" para a análise automática do plano) |
isPlanSchedule | boolean | true se for a análise automática do plano |
name | string | Nome de apresentação |
frequency | string | daily, weekly ou monthly |
hour | integer | Hora do dia para acionamento (0-23) |
minute | integer | Minuto da hora para acionamento (0-59) |
dayOfWeek | integer | Dia da semana para agendamentos semanais (0=Seg, 6=Dom) |
dayOfMonth | integer | Dia do mês para agendamentos mensais (1-31) |
timezone | string | Fuso horário IANA |
enabled | boolean | Se o agendamento está ativo |
scanType | string | compliance ou exposure |
lastTriggeredAt | string ou null | Data e hora ISO 8601 do último acionamento |
Criar Análise Agendada
Cria uma nova análise agendada.
POST /tenants/me/scheduled-scansCorpo do Pedido
json
{
"name": "Monthly exposure scan",
"frequency": "monthly",
"hour": 3,
"minute": 0,
"dayOfMonth": 1,
"timezone": "UTC",
"scanType": "exposure",
"enabled": true
}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome de apresentação |
frequency | string | Sim | daily, weekly ou monthly |
hour | integer | Sim | 0-23 |
minute | integer | Sim | 0-59 |
dayOfWeek | integer | Para semanal | 0=Seg, 6=Dom |
dayOfMonth | integer | Para mensal | 1-31 |
timezone | string | Sim | Fuso horário IANA (ex.: UTC, Europe/Berlin) |
scanType | string | Sim | compliance ou exposure |
enabled | boolean | Não | Predefinido como true |
Exemplo de Pedido
bash
curl -X POST https://api.aether365.io/tenants/me/scheduled-scans \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Monthly exposure scan",
"frequency": "monthly",
"hour": 3,
"minute": 0,
"dayOfMonth": 1,
"timezone": "UTC",
"scanType": "exposure",
"enabled": true
}'Erros
| Código | HTTP | Descrição |
|---|---|---|
SCAN_PLAN_LIMIT_REACHED | 429 | Limite de agendamentos personalizados atingido para o plano |
VALIDATION_ERROR | 400 | Campos em falta ou inválidos |
Atualizar Análise Agendada
Atualiza uma análise agendada existente. Apenas os campos incluídos são atualizados.
PATCH /tenants/me/scheduled-scans/{scheduledScanId}Exemplo: Pausar um agendamento
bash
curl -X PATCH https://api.aether365.io/tenants/me/scheduled-scans/sched_abc123 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"enabled": false}'Exemplo: Alterar a hora
bash
curl -X PATCH https://api.aether365.io/tenants/me/scheduled-scans/sched_abc123 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"hour": 8}'Eliminar Análise Agendada
Elimina permanentemente uma análise agendada e o respetivo agendamento subjacente.
DELETE /tenants/me/scheduled-scans/{scheduledScanId}WARNING
A análise automática do plano (id: "plan") não pode ser eliminada através da API.
Exemplo de Pedido
bash
curl -X DELETE https://api.aether365.io/tenants/me/scheduled-scans/sched_abc123 \
-H "Authorization: Bearer <token>"Exemplo de Resposta
json
{
"success": true,
"data": null
}