# Rapor Özeti API

Kanalın özet rakamlarını bir arka ofise veren salt okunur endpoint
Kaynak: https://selwise.com/docs/api-reference/reports-api

Rapor özeti ucu, bir kanalın panel ana sayfasındaki özet rakamlarını **kendi arka ofisinize** verir: Akinon Omnitron içindeki Selwise uzantısı bunu kullanır, kendi yönetim ekranınız da kullanabilir. Bu sayfa HTTP sözleşmesidir.

```http
GET /api/v1/public/sites/{siteKey}/reports/summary
```

- **Kimlik:** `x-selwise-api-key`, her istekte (`reports_read` kapsamı)
- **Katman:** Kararlı sözleşme

**Parametreler**

| Ad | Konum | Tip | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `siteKey` | yol | `string` | Evet | Kanal anahtarı (Kanallar → Kanal Özeti → Kanal Anahtarı). Kanalı adlandırır; sır değildir. |
| `days` | sorgu | `string` | Hayır | Pencere: `1`, `7`, `30` ya da `90` gün. Verilmezse ya da başka bir değerse `7`. |

**Yanıt: 200 Başarılı**

| Alan | Tip | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `channel` | `ReportsChannelSchema` | Evet | Kanalın adı ve panelde seçili e-ticaret platformu. |
| `days` | `number` | Evet | Pencerenin gün sayısı (1, 7, 30 ya da 90; geçersizse 7). |
| `generatedAt` | `string (date-time)` | Evet | Rakamların ölçüldüğü an. Panel ana sayfasıyla aynı ölçüm. |
| `lookbackHours` | `number` | Evet | Bir etkileşimden sonra siparişin kaç saat boyunca Selwise'a yazıldığı. |
| `current` | `ReportsSummaryPeriodSchema` | Evet | Bu pencere: tüm canlı siparişler ve ciro, Selwise'ın etkilediği sipariş ve ciro (olaylar artık saklanmıyorsa `null`), ziyaretçi sayısı. Para birimi başına. |
| `previous` | `ReportsSummaryPeriodSchema` | Evet | Bir önceki eşit pencere; kanal o sırada yoksa `null`. · null olabilir |
| `comparison` | `ReportsComparisonSchema` | Evet | İki pencerenin karşılaştırılabilir olup olmadığı ve olmadığında sebebi. |
| `modules` | `ReportsModuleSchema[]` | Evet | Selwise'ın etkilediği ciro modüllere bölünmüş hâli (kampanya, öneri, arama, zenginleştirme, mesaj); toplamı `current.attributed`'dir. |
| `connection` | `ReportsConnectionSchema` | Evet | Kanalın e-ticaret bağlantısı: durumu ve açık akışların son başarılı okuması. Bağlantı yoksa `null`. · null olabilir |

**Hatalar:** 401 anahtar gönderilmedi, 402 modül sözleşmede yok, 403 anahtar geçersiz ya da kapsamı yetmiyor, 404 kanal bilinmiyor, 429 hız sınırı. Gövde biçimi: [Hatalar ve Limitler](/docs/api-reference/errors-and-limits).

```http
GET /api/v1/public/sites/SITE_KEY/reports/summary?days=30
x-selwise-api-key: swpk_live_...
```

## Kimlik doğrulama

Uç **her istekte** `reports_read` kapsamlı bir site API anahtarı ister; tarayıcının alan adı yetki sayılmaz. Anahtarı **Channels** ekranında kanalın satırındaki **⋮** menüsünden **API keys**'i açıp **Purpose** (Kullanım amacı) olarak **Reporting** (Raporlama) seçerek oluşturun. Ayrıntı: [API Anahtarları](/docs/channels/api-keys).

Kapsam yalnız bu ucu açar ve hiçbir şey yazamaz. Ayrı olmasının sebebi: kanalın cirosu bir vitrin sayfasının, bir SSR anahtarının ya da bir uygulama dosyasının okuyabileceği bir rakam değildir. Anahtarı sunucunuzda tutun.

| Yanıt | Anlamı |
| --- | --- |
| `401` | `x-selwise-api-key` başlığı yok |
| `402` | Hesapta **Analitik** modülü yok |
| `403` | Anahtar geçersiz, iptal edilmiş ya da `reports_read` kapsamı yok |
| `404` | `siteKey` bulunamadı |

## Yanıt

Rakamların hepsi panel ana sayfasının **aynı ölçümüdür**; bu uç hiçbir rakamı kendisi türetmez, yani arka ofisiniz panelin çelişeceği bir sayı gösteremez.

- **Para birimi başına.** İki para biriminde sipariş alan bir kanalın cirosu tek sayıya toplanamaz; her para birimi ayrı satırdır.
- **`attributed` etkidir, kazanç değil.** Siparişin son Selwise dokunuşuna yazılan cirodur. "Selwise'ın kazandırdığı" demek için kontrol grubu ölçümü gerekir; bu uç onu vermez.
- **Ölçülmeyen sıfır değildir.** Pencerenin olayları artık saklanmıyorsa `attributed` `null` gelir; bunu `0` olarak göstermeyin, "—" gösterin.
- Kampanya adlarıyla yüzey tablosu, sepet terk sayısı ve günlük seri bu uçta yoktur; onlar panelin ekranlarıdır.

`Cache-Control: private, max-age=60` ile gelir; aynı sayfayı bir dakika içinde iki kez açmak iki ölçüm maliyeti doğurmaz.

```json
{
  "channel": { "name": "Ardisa", "platform": "akinon" },
  "days": 30,
  "generatedAt": "2026-11-05T10:00:00.000Z",
  "lookbackHours": 168,
  "current": {
    "startDate": "2026-10-06T00:00:00.000Z",
    "endDate": "2026-11-05T00:00:00.000Z",
    "orders": 1240,
    "revenueByCurrency": [{ "currency": "TRY", "orders": 1240, "revenue": 1873400.5 }],
    "attributed": { "orders": 310, "revenueByCurrency": [{ "currency": "TRY", "orders": 310, "revenue": 402115.2 }] },
    "visitors": 48210
  },
  "previous": null,
  "comparison": { "orders": false, "events": false, "reason": "channel_created" },
  "modules": [{ "module": "recommendation", "orders": 140, "revenueByCurrency": [{ "currency": "TRY", "orders": 140, "revenue": 180200 }] }],
  "connection": {
    "status": "connected",
    "lastError": null,
    "streams": [{ "stream": "orders", "lastSuccessAt": "2026-11-05T09:52:00.000Z", "lastError": null }]
  }
}
```
