
# Destek artefaktı yükle

`POST /v1/support-artifacts` · izin `support-artifacts:write`

Bir HAR dosyasını ya da bir günlüğü destek talebine ekler. Artefaktlar yalnız panodaki Destek sayfasından yüklenir; API anahtarları ve makine istemcileri `403 insufficient_permissions` alır. Pano, yüklemeden önce sırları tarayıcınızda kaldırır ve sunucu artefaktı yeniden tarar: `Cookie`, `Set-Cookie`, `Authorization` ve `DPoP` başlıkları, OAuth, OIDC ve SAML belirteç alanları, `__Host-` çerezleri, JWT'ler ve KeenAuth önekli sırlar `[redacted]` ile değiştirilir. Artefaktta bulunan bir yönetim API anahtarı (`idp_sk_`, `idp_rk_`) hemen iptal edilir; iptal başarısız olursa hiçbir şey saklanmaz ve yükleme `503` döner. Yalnız temizlenmiş içerik saklanır, ortamın veri anahtarıyla şifrelenir ve 30 gün sonra silinir. Yanıt hiçbir zaman içeriği ya da kaldırılan değerleri içermez.

## İstek

| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `ticket_ref` | query | evet | Destek talebi başvurusu: 1-64 karakter, harfler, rakamlar ve `_ . : -`; bir harf ya da rakamla başlar. |
| `kind` | query | evet | `har` (bir HAR 1.2 JSON belgesi) ya da `log` (düz metin). |
| `Content-Type` | header | evet | `application/octet-stream`. |
| `Content-Encoding` | header | hayır | Sıkıştırılmış bir artefakt göndermek için `gzip`. |
| `Idempotency-Key` | header | hayır | İsteğe bağlı. 16-64 karakter `[A-Za-z0-9_-]`; aynı anahtarın aynı gövdeyle yinelenmesi aynı artefaktı döndürür. |

Gövde artefaktın kendisidir: sıkıştırılmamış en fazla 50 MB. İstek gövdesi ağda 11 MiB ile sınırlıdır, bu yüzden büyük artefaktları gzip ile sıkıştırın. Bir talep en fazla 10 artefakt tutar.

## Yanıt

Saklanan artefaktla birlikte `201 Created`. `findings`, kaldırılan değerleri türüne göre sayar; `revocations_triggered`, artefaktta göründükleri için iptal edilen kimlik bilgisi sayısıdır.

```json
{
  "id": "sart_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "ticket_ref": "SUP-48213",
  "kind": "har",
  "size_bytes": 482113,
  "sha256": "9f2b5c7d1e3a4f60718293a4b5c6d7e8f90123456789abcdef0123456789abcd",
  "findings": {"authorization": 2, "cookie": 5, "host_cookie": 3, "oauth_param": 1},
  "revocations_triggered": 0,
  "created_at": "2026-11-10T09:30:00.123456Z",
  "expires_at": "2026-12-10T09:30:00.123456Z"
}
```

## Hatalar

| HTTP | code | Ne zaman |
|---|---|---|
| 400 | `malformed_request` | Gövde okunamadı, gzip akışı geçersiz ya da `Idempotency-Key` biçimsiz. |
| 401 | `unauthenticated` | Kimlik bilgisi yok, geçersiz ya da iptal edilmiş. |
| 403 | `insufficient_permissions` | İstek panodan yapılmadı ya da pano rolünde `support-artifacts:write` yok. |
| 403 | `quota_exceeded` | Talepte zaten 10 artefakt var. |
| 413 | `payload_too_large` | Artefakt 50 MB'tan büyük ya da istek gövdesi 11 MiB'tan büyük. |
| 415 | `unsupported_media_type` | `Content-Type` `application/octet-stream` değil ya da içerik kodlaması `gzip` değil. |
| 422 | `validation_failed` | `ticket_ref` ya da `kind` eksik ya da geçersiz, gövde boş ya da bir `har` artefaktı HAR belgesi değil (`/body` `invalid_har`). |
| 422 | `idempotency_key_reuse` | `Idempotency-Key` daha önce farklı bir gövdeyle kullanıldı. |
| 429 | `rate_limited` | Çok fazla yükleme işleniyor ya da hız sınırı aşıldı; `Retry-After` süresinden sonra yeniden deneyin. |
| 503 | `service_unavailable` | Artefakt saklanmadı (bir kimlik bilgisi iptal edilemedi ya da depolama kullanılamıyor); `Retry-After` süresinden sonra yeniden deneyin. |

## Örnek

Yüklemeler bir pano eylemidir. Panonun gönderdiği istek:

```http
POST /v1/support-artifacts?ticket_ref=SUP-48213&kind=har
Content-Type: application/octet-stream
Content-Encoding: gzip
Idempotency-Key: 2f1c9a7e-5b3d-4e8f-9a6c-1d2e3f4a5b6c

<gzip sıkıştırılmış HAR dosyası>
```
