AI Pilot API
Maintained by: Zespół Aether365 Audience: Programiści Scope: Punkty końcowe remediacji AI Pilot - generowanie, przeglądanie i stosowanie automatycznych poprawek
AI Pilot zamienia nieudane wyniki ze skanów Compliance i Exposure w automatyczne poprawki. Przez API możesz wygenerować plan remediacji dla skanu, przejrzeć proponowane zmiany i zastosować te, które zatwierdzisz. Zastosowanie poprawki to zawsze wyraźne wywołanie, które wykonujesz samodzielnie: nic nie zostaje zmienione, dopóki o to nie poprosisz.
Wymagania
Punkty końcowe AI Pilot wymagają uprawnienia AI Pilot (Pro lub Enterprise) oraz połączenia Microsoft 365 powiązanego w trybie AI Pilot (write-consent). Połączenie tylko do odczytu może generować i odczytywać plany, ale nie może stosować poprawek. Gdy brakuje uprawnienia, wywołania zwracają 403 AUTH_INSUFFICIENT_SCOPE.
Lista kontroli z automatyczną remediacją
Zwraca identyfikatory kontroli, które AI Pilot potrafi naprawić automatycznie. Użyj tego, aby dla każdego wyniku zdecydować, czy dostępna jest automatyczna poprawka.
GET /tenants/me/remediation/capabilitiesPrzykładowa odpowiedź
json
{
"success": true,
"data": { "autoRemediableTestIds": ["AE.1068", "CIS.M365.5.1.2.3", "AE.1102"] }
}Wygeneruj plan remediacji
Buduje plan remediacji dla ukończonego skanu: jedna pozycja na każdy możliwy do naprawienia nieudany wynik, z bieżącą wartością, proponowaną bezpieczną wartością oraz ustawieniem, którego dotyczy. Odczyt bieżącej wartości korzysta z zakresu odczytu połączenia AI Pilot; żadna zmiana nie jest zapisywana.
POST /tenants/me/scans/{scanId}/remediation-planPrzykładowe żądanie
bash
curl -X POST https://api.aether365.io/tenants/me/scans/scan_abc123/remediation-plan \
-H "Authorization: Bearer ak_live_..."Przykładowa odpowiedź
json
{
"success": true,
"data": {
"id": "plan_abc123",
"scanId": "scan_abc123",
"msTenantId": "00000000-0000-0000-0000-000000000000",
"status": "pending",
"createdAt": "2026-06-17T09:00:00Z",
"items": [
{
"id": "item_1",
"testId": "AE.1068",
"coveredTestIds": ["AE.1068", "CIS.M365.5.1.2.3"],
"actionKey": "require_mfa_admins",
"title": "Require MFA for administrator roles",
"settingKey": "conditionalAccess.requireMfaAdmins",
"currentValue": false,
"proposedValue": true,
"status": "pending",
"appliedBy": null,
"appliedAt": null,
"error": null
}
]
}
}Lista planów remediacji
Zwraca plany remediacji najemcy, od najnowszego, każdy wraz z jego pozycjami i zagregowanym statusem.
GET /tenants/me/remediation-plansWartości statusu planu
| Status | Znaczenie |
|---|---|
pending | Wygenerowany, nic jeszcze nie zastosowano |
completed | Wszystkie pozycje zastosowane i zweryfikowane |
partially_applied | Część pozycji zastosowana, część nieudana lub oczekuje |
failed | Nie udało się zastosować żadnej pozycji |
Pobierz plan remediacji
GET /tenants/me/remediation-plans/{planId}Zwraca pojedynczy plan (wraz z jego pozycjami) ograniczony do Twojego najemcy. Plan należący do innego najemcy zwraca 404 NOT_FOUND.
Zastosuj plan remediacji
Stosuje wybrane pozycje za pośrednictwem połączenia AI Pilot: każde ustawienie jest zapisywane przez Microsoft Graph, a następnie odczytywane ponownie, aby potwierdzić, że zmiana zadziałała. Pozycje, których nie wymienisz, pozostają nietknięte, a już zweryfikowana pozycja nigdy nie jest stosowana ponownie.
POST /tenants/me/remediation-plans/{planId}/applyTreść żądania
| Pole | Typ | Opis |
|---|---|---|
itemIds | string[] | Identyfikatory pozycji planu do zastosowania |
Przykładowe żądanie
bash
curl -X POST https://api.aether365.io/tenants/me/remediation-plans/plan_abc123/apply \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{ "itemIds": ["item_1", "item_2"] }'Przykładowa odpowiedź
Zwracany jest pełny plan z zaktualizowanym status każdej pozycji oraz, w przypadku niepowodzenia, polem error wyjaśniającym przyczynę.
json
{
"success": true,
"data": {
"id": "plan_abc123",
"status": "partially_applied",
"items": [
{
"id": "item_1",
"title": "Require MFA for administrator roles",
"status": "verified",
"appliedAt": "2026-06-17T09:05:00Z",
"error": null
},
{
"id": "item_2",
"title": "Disable legacy authentication",
"status": "failed",
"error": "Write consent is missing or has expired"
}
]
}
}Wartości statusu pozycji
| Status | Znaczenie |
|---|---|
verified | Zastosowano i potwierdzono ponownym odczytem |
applied | Zastosowano; Microsoft nie potwierdził jeszcze propagacji (sprawdzane później) |
failed | Nie udało się zastosować - zobacz error (np. brak zgody na zapis) |
pending | Nie zastosowano w tym wywołaniu |
Zatwierdzenie przez człowieka jest zachowane
Nie ma skrótu "zastosuj wszystko". Wybierasz plan i dokładnie te pozycje, które mają zostać zastosowane, więc nawet zautomatyzowany przepływ pracy nadal pozostawia człowieka (lub świadomą decyzję) w pętli.