
# Destek erişimi ver

`POST /v1/support-access-grants` · izin `support-access-grants:write`

KeenAuth destek personeline bu ortam için süreli erişim verir; örneğin bir destek talebi üzerinde çalışırken. Erişim yalnız okuma (`read`) ya da yapılandırma değiştirmeyi de içeren (`read_write_config`) olur; destek personeli son kullanıcı verisi yazmaz. İznin her kullanımı ve personelin her eylemi yönetim audit kaydına yazılır ve `support_access_grant.created` olayı yayımlanır. İzin yalnız panodan, son 5 dakika içinde yeniden kimlik doğrulamış bir `owner` ya da `admin` tarafından verilir; API anahtarları ve makine istemcileri `403 insufficient_permissions` alır.

## İstek

| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `Idempotency-Key` | başlık | hayır | İsteğe bağlı. 16-64 karakter `[A-Za-z0-9_-]`; aynı anahtar aynı gövdeyle yinelenirse aynı izin döner. |
| `scope` | string | evet | `read` (yalnız okuma) ya da `read_write_config` (yapılandırmayı da değiştirebilir). |
| `duration_hours` | integer | evet | Saat cinsinden süre, 1-72. |
| `ticket_ref` | string | evet | Destek talebi başvurusu: 1-200 yazdırılabilir ASCII karakter, başta ve sonda boşluk yok. |
| `allowed_regions_of_staff` | array \| null | hayır | Yalnız Enterprise. İzni yalnız bu bölgelerde (`eu`, `us`) konumlu personel kullanabilir; verilmezse ya da `null` ise kısıt yoktur. |

İstek gövdesi:

```json
{
  "scope": "read",
  "duration_hours": 24,
  "ticket_ref": "SUP-48213",
  "allowed_regions_of_staff": ["eu"]
}
```

## Yanıt

Yeni izinle birlikte `201 Created`.

```json
{
  "id": "sag_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "scope": "read",
  "status": "active",
  "ticket_ref": "SUP-48213",
  "allowed_regions_of_staff": ["eu"],
  "granted_by": "du_01j9xk2p5n7q9s1t3v5w7y9z1b",
  "created_at": "2026-10-12T09:30:00.123456Z",
  "expires_at": "2026-10-13T09:30:00.123456Z",
  "revoked_at": null
}
```

## Hatalar

| HTTP | code | Ne zaman |
|---|---|---|
| 400 | `malformed_request` | Gövde geçerli JSON değil ya da `Idempotency-Key` biçimsiz. |
| 403 | `insufficient_permissions` | İstek panodan bir `owner` ya da `admin` tarafından yapılmadı ya da kimlik bilgisinde gerekli izin yok. |
| 403 | `plan_feature_unavailable` | `allowed_regions_of_staff` Enterprise planı gerektirir. |
| 422 | `validation_failed` | Bir alan geçersiz (`scope`, 1-72 dışında `duration_hours`, `ticket_ref`, `allowed_regions_of_staff`). |
| 422 | `idempotency_key_reuse` | `Idempotency-Key` başka bir gövdeyle zaten kullanıldı. |
| 401 | `unauthenticated` | Kimlik bilgisi yok, geçersiz ya da iptal edilmiş. |
| 429 | `rate_limited` | Hız sınırı aşıldı; `Retry-After` süresinden sonra yeniden deneyin. |
| 503 | `service_unavailable` | Bir bağımlılık geçici olarak kullanılamıyor; `Retry-After` süresinden sonra yeniden deneyin. |

## Örnek

Oluşturma ve iptal pano eylemleridir. Panonun gönderdiği istek:

```http
POST /v1/support-access-grants
Content-Type: application/json
Idempotency-Key: 2f1c9a7e-5b3d-4e8f-9a6c-1d2e3f4a5b6c

{
  "scope": "read",
  "duration_hours": 24,
  "ticket_ref": "SUP-48213",
  "allowed_regions_of_staff": ["eu"]
}
```
