API за планирани сканирания
Планираните сканирания дефинират повтарящи се задачи за сканиране. Всяко планирано сканиране задава повтарящ се тригер, който се задейства на конфигурирания интервал.
Списък с планирани сканирания
Връща всички планирани сканирания за удостоверения tenant, включително автоматичното сканиране по план.
GET /tenants/me/scheduled-scansПримерна заявка
bash
curl https://api.aether365.io/tenants/me/scheduled-scans \
-H "Authorization: Bearer <token>"Примерен отговор
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"
}
]
}Полета в отговора
| Поле | Тип | Описание |
|---|---|---|
id | string | Идентификатор на графика ("plan" за автоматичния график по план) |
isPlanSchedule | boolean | true ако това е автоматичното сканиране по план |
name | string | Показвано име |
frequency | string | daily, weekly или monthly |
hour | integer | Час от денонощието за задействане (0-23) |
minute | integer | Минута от часа за задействане (0-59) |
dayOfWeek | integer | Ден от седмицата за седмични графици (0=Пон, 6=Нед) |
dayOfMonth | integer | Ден от месеца за месечни графици (1-31) |
timezone | string | IANA часова зона |
enabled | boolean | Дали графикът е активен |
scanType | string | compliance или exposure |
lastTriggeredAt | string или null | ISO 8601 времеви печат на последното задействане |
Създаване на планирано сканиране
Създава ново планирано сканиране.
POST /tenants/me/scheduled-scansТяло на заявката
json
{
"name": "Monthly exposure scan",
"frequency": "monthly",
"hour": 3,
"minute": 0,
"dayOfMonth": 1,
"timezone": "UTC",
"scanType": "exposure",
"enabled": true
}| Поле | Тип | Задължително | Описание |
|---|---|---|---|
name | string | Да | Показвано име |
frequency | string | Да | daily, weekly или monthly |
hour | integer | Да | 0-23 |
minute | integer | Да | 0-59 |
dayOfWeek | integer | За weekly | 0=Пон, 6=Нед |
dayOfMonth | integer | За monthly | 1-31 |
timezone | string | Да | IANA часова зона (напр. UTC, Europe/Berlin) |
scanType | string | Да | compliance или exposure |
enabled | boolean | Не | По подразбиране true |
Примерна заявка
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
}'Грешки
| Код | HTTP | Описание |
|---|---|---|
SCAN_PLAN_LIMIT_REACHED | 429 | Достигнат лимит на персонализирани графици за плана |
VALIDATION_ERROR | 400 | Липсващи или невалидни полета |
Актуализиране на планирано сканиране
Актуализира съществуващо планирано сканиране. Обновяват се само полетата, които включите.
PATCH /tenants/me/scheduled-scans/{scheduledScanId}Пример: Пауза на график
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}'Пример: Промяна на часа
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}'Изтриване на планирано сканиране
Окончателно изтрива планирано сканиране и свързания с него график.
DELETE /tenants/me/scheduled-scans/{scheduledScanId}WARNING
Автоматичното сканиране по план (id: "plan") не може да бъде изтрито чрез API.
Примерна заявка
bash
curl -X DELETE https://api.aether365.io/tenants/me/scheduled-scans/sched_abc123 \
-H "Authorization: Bearer <token>"Примерен отговор
json
{
"success": true,
"data": null
}