
# Saldırı modu durumunu al

`GET /v1/attack-protection/attack-mode` · izin `attack-protection:read`

Ortamın saldırı modunda olup olmadığını ve son 90 gün içinde başlamış ya da hâlâ açık olan saldırı modu dönemlerini, en yeniden eskiye doğru döndürür (en fazla 100; `more`, bu pencerede daha eski dönemler olduğunu gösterir).

Ortam saldırı modundayken her parola ve tek kullanımlık kod adımı, `bot_protection.mode` değeri ne olursa olsun daha sıkı bir bot doğrulaması ister. Passkey ve sosyal giriş doğrulamaya tabi tutulmaz. Bir dönem üç yoldan biriyle açılır:

- `auto`: 5 dakikalık bir pencerede başarısız girişler tetikleme eşiğini geçtiğinde (50 ile ortamın medyanının on katından büyük olanı). `credential_stuffing` modunun `log` modunda dönem `would_have: true` ile kaydedilir ve zorlama uygulanmaz; ancak pencere eşiğin üç katını geçerse zorlama uygulanır.
- `manual_customer`: [`activate`](activate-attack-mode.md) ile siz etkinleştirdiniz.
- `manual_platform`: KeenAuth operasyon ekibi etkinleştirdi.

`active` yalnızca ortamın tamamını kapsayan zorlanmış bir dönem (`would_have: false`) varken `true` olur; bu durumda `active_until`, bu dönemlerin en geç bitiş zamanıdır. Bitiş zamanı geçmiş ama temizlik işlemi henüz kapatmamış bir dönem, `ends_at` anında sona ermiş gibi görünür. Manuel bir dönemi kimin açtığı bu yanıtta değil, yönetim denetim günlüğünde yer alır.

## Yanıt

`200 OK`

| Alan | Tür | Açıklama |
|---|---|---|
| `active` | boolean | Ortam şu anda saldırı modunda. |
| `active_until` | string (date-time) veya null | Mevcut saldırı modunun ne zaman biteceği; otomatik bir dönem uzatılmadıkça geçerlidir. `active` değeri `false` ise `null`. |
| `periods[]` | array | Dönemler, en yeniden eskiye doğru. |
| `periods[].id` | string | Dönem kimliği, `atm_` ön ekiyle. |
| `periods[].scope` | string | `environment` veya `org_domain`. |
| `periods[].org_domain` | string veya null | `org_domain` dönemine ait kuruluş e-posta alan adı. |
| `periods[].trigger` | string | `auto`, `manual_customer` veya `manual_platform`. |
| `periods[].would_have` | boolean | `true`: `log` modunda kaydedildi, zorlanmadı. |
| `periods[].trigger_value` | integer veya null | Bir `auto` dönemini açan 5 dakikalık pencerede başarısız deneme sayısı; manuel dönemlerde `null`. |
| `periods[].threshold` | integer veya null | Bu pencerenin geçtiği eşik; manuel dönemlerde `null`. |
| `periods[].started_at` | string (date-time) | Dönemin başlangıç zamanı. |
| `periods[].ends_at` | string (date-time) | Dönemin kendiliğinden biteceği zaman. Saldırı sürdükçe `auto` dönemi uzatılır. |
| `periods[].ended_at` | string (date-time) veya null | Dönemin bittiği zaman; dönem açıkken `null`. |
| `more` | boolean | Son 90 gün içinde daha eski dönemler var. |

```json
{
  "active": true,
  "active_until": "2026-10-20T10:00:00Z",
  "periods": [
    {
      "id": "atm_01jaz8m5c3f6t9w2y4b7d0g3k6",
      "scope": "environment",
      "org_domain": null,
      "trigger": "manual_customer",
      "would_have": false,
      "trigger_value": null,
      "threshold": null,
      "started_at": "2026-10-20T09:00:00Z",
      "ends_at": "2026-10-20T10:00:00Z",
      "ended_at": null
    }
  ],
  "more": false
}
```

## Hatalar

Her hata, sabit bir `code` içeren bir `application/problem+json` gövdesidir.

| HTTP | `code` | Ne zaman |
|---|---|---|
| 401 | `unauthenticated` | API anahtarı eksik, geçersiz ya da iptal edilmiş. |
| 403 | `insufficient_permissions` | Anahtarda `attack-protection:read` izni yok. |
| 429 | `rate_limited` | Hız sınırı aşıldı; `Retry-After` başlığına uyun. |
| 503 | `service_unavailable` | Bir bağımlılık geçici olarak kullanılamıyor; daha sonra yeniden deneyin. |

## Örnek

```bash
curl https://api.eu.keenauth.com/v1/attack-protection/attack-mode \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth attack-protection attack-mode get`
