@rewloy/node 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,9 +6,11 @@ export class RewloyMethods {
6
6
  /**
7
7
  * Kart ver
8
8
  *
9
- * Bir programdan kart verir. E-posta gönderilirse kart o müşteriye bağlanır (yoksa oluşturulur) ve `kvkkConsent: true` gönderilmelidir: bu, işletmenin müşteriye kendi aydınlatma metnini sunduğunu beyan etmesidir; beyanın doğruluğundan işletme sorumludur. Bir rıza kutusu olarak sormayın. Dönen `cardUrl` müşterinin özel kart bağlantısıdır: müşteriye iletin, kayıtlara yazmayın. Hediye kartında `faceMinor` (kuruş) zorunludur.
9
+ * Bir programdan kart verir. E-posta gönderilirse kart o müşteriye bağlanır (yoksa oluşturulur) ve `kvkkConsent: true` gönderilmelidir: bu, işletmenin müşteriye kendi aydınlatma metnini sunduğunu beyan etmesidir; beyanın doğruluğundan işletme sorumludur. Bir rıza kutusu olarak sormayın. Dönen `cardUrl` müşterinin özel kart bağlantısıdır: müşteriye iletin, kayıtlara yazmayın. Hediye kartında `faceMinor` (kuruş) zorunludur. Yanıtta `created` her zaman vardır.
10
10
  * - **Idempotency-Key** (isteğe bağlı, önerilir): her çağrı yeni bir kart açar; başlıkla aynı anahtar ve aynı gövdeyle tekrar yeni kart açmaz, ilk yanıtı (aynı kart, aynı bağlantı) `Idempotent-Replayed: true` ile döndürür. Aynı anahtar başka bir gövdeyle `422 IDEMPOTENCY_KEY_REUSED`. Bir siparişe kart açan mağaza için sipariş başına sabit bir anahtar iyi bir seçimdir. Saklanan yanıt şifrelidir ve 7 gün tutulur; tekrar yalnız kimlik o programda hâlâ kart verebiliyorsa döner (yoksa `403 FORBIDDEN`).
11
- * - **Bir sipariş için kart** (`orderId` ve `shopId` birlikte, `email` ile): kartı kazandıran sipariş de bu karta sayılır, mağazanın sipariş bildirimi karttan önce ya da sonra gelsin. Bildirim henüz gelmediyse (`order.result: waiting`) geldiğinde bu kartı bulur. Önce gelip "Kartı yok" diye kaydedildiyse (`resend`) sipariş yeniden açılır: mağaza siparişi 7 gün içinde yeniden gönderdiğinde (aynı imzalı bildirim; WooCommerce eklentisi webhook'unun o siparişi yeniden teslimiyle) siparişin kendi e-postası ve tutarıyla bu karta işlenir. Tutar hiçbir zaman bu çağrıdan alınmaz, siparişten hiçbir şey saklanmaz ve sipariş yine bir kez sayılır. Bağlantı bu işletmenin ve bu programın olmalıdır (`404 SHOP_NOT_FOUND`, `409 SHOP_PROGRAM_MISMATCH`).
11
+ * - **`ifExists`** (isteğe bağlı, `email` ile): `"create"` (varsayılan) her çağrıda yeni kart açar, bugüne dek olduğu gibi. `"return"`: kişinin bu programda açık bir kartı varsa yeni kart açılmaz; `200`, `created: false` ve o kartın `serial`'i döner — mağazanın kendi e-posta → kart tablosu tutması gerekmez. Var olan kartın `cardUrl`'i **görüntüleme anahtarı taşımaz** (`/p/{serial}`, kişiye bir şey göstermez ve bağlantıyı e-postasına istemeyi önerir): adresi yazan kişi kartın sahibi olmayabilir, özel bağlantı yalnız kişinin kendi e-postasına gider (`sendEmail`). Kart yoksa yeni kart açılır (`201`, `created: true`). Yanıt bu adresin bu programda kartı olup olmadığını ve kartın numarasını (kasada kartla işlem yapılan anahtar) söylediği için **kimliğin kartın programında `customers.read` yetkisi olmalı** ve müşteri kimliğin şube kapsamında olmalıdır; yoksa `403 FORBIDDEN` (ADR 182'nin incelemesi). Hediye kartında kullanılamaz (her hediye kartı bir satın almadır; `400 VALIDATION`). Koddan verilen kartlar (kupon, indirim) "açık kart" sayılmaz.
12
+ * - **`sendEmail: true`** (isteğe bağlı, `email` ile): katılım formunun gönderdiği "kartınız" e-postası kişinin adresine gider; yeni kartta yeni kartın bağlantısıyla, var olan kartta (`created: false`) o kart için yeni bir bağlantıyla (eski bağlantılar çalışmaya devam eder). Sınırlar: kişi başına saatte 3 (yeni kart da sayılır; katılım formuyla ortak), işletme başına saatte 50 (deneme süresinde) ya da 500; fazlası gönderilmez, `rate_limited` (kart yine açılır). İşletmenin etkin bir sahibinin e-posta adresi doğrulanmamışsa çağrı `403 OWNER_EMAIL_UNVERIFIED` ile reddedilir, kart açılmaz. Gönderim `kvkkConsent: true` ile kaydedilen beyana dayanır. Test ortamında e-posta gönderilmez, "Gönderilmeyenler"e yazılır. Yanıttaki `emailStatus`: `queued` (gönderim sırasına girdi; test ortamında Gönderilmeyenler'e yazıldı), `suppressed` (adres daha önce geri döndüğü ya da şikâyet ettiği için gönderilmedi), `rate_limited`, `not_sent`.
13
+ * - **Bir sipariş için kart** (`orderId` ve `shopId` birlikte, `email` ile): kartı kazandıran sipariş de bu karta sayılır, mağazanın sipariş bildirimi karttan önce ya da sonra gelsin. Bildirim henüz gelmediyse (`order.result: waiting`) geldiğinde bu kartı bulur. Önce gelip "Kartı yok" diye kaydedildiyse (`resend`) sipariş yeniden açılır: mağaza siparişi 7 gün içinde yeniden gönderdiğinde (aynı imzalı bildirim; WooCommerce eklentisi webhook'unun o siparişi yeniden teslimiyle) siparişin kendi e-postası ve tutarıyla bu karta işlenir. Tutar hiçbir zaman bu çağrıdan alınmaz, siparişten hiçbir şey saklanmaz ve sipariş yine bir kez sayılır. Bağlantı bu işletmenin ve bu programın olmalıdır (`404 SHOP_NOT_FOUND`, `409 SHOP_PROGRAM_MISMATCH`). `ifExists: "return"` ile var olan kart döndüğünde de sipariş, e-postasıyla o kartı bulur.
12
14
  *
13
15
  * **Kimlik:** API anahtarı, ekip oturumu.
14
16
  *
@@ -24,7 +26,7 @@ export class RewloyMethods {
24
26
  /**
25
27
  * Bir kartın durumu
26
28
  *
27
- * Bakiye, ilerleme, ödül hazırlığı ve seviye — müşterinin cüzdanında gördüğüyle aynı.
29
+ * Bakiye, ilerleme, ödül hazırlığı ve seviye — müşterinin cüzdanında gördüğüyle aynı. `actions` kartın türünün aldığı kasa işlemlerini ve şimdi yapılıp yapılamayacaklarını, `sale` bir satışın bu kartta ne yazacağını söyler.
28
30
  *
29
31
  * **Kimlik:** API anahtarı, ekip oturumu.
30
32
  *
@@ -40,7 +42,7 @@ export class RewloyMethods {
40
42
  /**
41
43
  * Kartın bir şubedeki kasa kuralları
42
44
  *
43
- * Kasada işlem yapmadan önce: kart bu şubede kullanılabilir mi, hangi şubelerde geçerli, şu an burada hangi kasa kampanyası çalışıyor ve kasiyerin göreceği uyarılar (tarayıcıdaki şeritlerin aynısı). `allowed: false` iken işlem `WRONG_LOCATION` ile reddedilir (ADR 139).
45
+ * Kasada işlem yapmadan önce: kart bu şubede kullanılabilir mi, hangi şubelerde geçerli, şu an burada hangi kasa kampanyası çalışıyor ve kasiyerin göreceği uyarılar (tarayıcıdaki şeritlerin aynısı). `allowed: false` iken işlem `WRONG_LOCATION` ile reddedilir (ADR 139). Şube kartın işletmesinin silinmemiş bir şubesi olmalıdır, değilse `404 LOCATION_NOT_FOUND` (kasa işlemleri gibi).
44
46
  *
45
47
  * **Kimlik:** API anahtarı, ekip oturumu.
46
48
  *
@@ -56,7 +58,7 @@ export class RewloyMethods {
56
58
  /**
57
59
  * Kasada işlem
58
60
  *
59
- * Karta, bir şubede kasa işlemi uygular. **Idempotency-Key zorunludur**: aynı anahtarla tekrar, bakiyeyi ikinci kez değiştirmez ve ilk sonucu döndürür (`duplicate: true`). Salt-okunur hesapta da çalışır: mevcut kartlar çalışmaya devam eder.
61
+ * Karta, bir şubede kasa işlemi uygular. **Idempotency-Key zorunludur** (8–64 karakter, bu kimlik için kalıcı olarak tekil): aynı anahtarla aynı isteğin tekrarı bakiyeyi ikinci kez değiştirmez ve ilk sonucu döndürür (`duplicate: true`); bu kartta başka bir işlem için ya da başka bir gövdeyle (başka tutar, şube, sayı) kullanılmış bir anahtar `422 IDEMPOTENCY_KEY_REUSED` alır ve hiçbir şey yazılmaz. `currency` (isteğe bağlı) verilirse kartın para birimiyle karşılaştırılır (`422 CURRENCY_MISMATCH`). Şube işletmenizin silinmemiş bir şubesi olmalıdır (`404 LOCATION_NOT_FOUND`). Salt-okunur hesapta da çalışır: mevcut kartlar çalışmaya devam eder.
60
62
  * | action | kart | gerekli alan |
61
63
  * |---|---|---|
62
64
  * | `earn-stamps` | damga | `count` (varsayılan 1) |
@@ -83,6 +85,61 @@ export class RewloyMethods {
83
85
  passAction(args) {
84
86
  return this._call('passAction', args);
85
87
  }
88
+ /**
89
+ * Satışı karta yaz
90
+ *
91
+ * Kasada ya da kendi yazılımınızda tamamlanan bir satışı karta yazar: ne yazılacağına kartın türü ve programın kendi kuralı karar verir, entegrasyonun türü bilmesi gerekmez (ADR 177). `amountMinor` ödenen toplamdır, **kartın para biriminde** (programın para birimi: cashback ve hediye kartında programın kendi para birimi, öteki türlerde işletmeninki; `GET /v1/passes/{serial}` → `currency`) ve kuruş cinsinden; başka para birimi kabul edilmez ve çevrilmez. `currency` gönderirseniz Rewloy onu kartın para birimiyle karşılaştırır ve farklıysa `422 CURRENCY_MISMATCH` ile hiçbir şey yazmaz.
92
+ * | kart | satış ne yazar | `applied` |
93
+ * |---|---|---|
94
+ * | damga | 1 damga (kasa kampanyası katlar) | `stamps` |
95
+ * | puan | programın oranıyla, her 1 birim için `earnRate` puan | `points` |
96
+ * | VIP | 1 ziyaret, ziyaret penceresinde bir kez | `visit` |
97
+ * | cashback | toplamın `cashbackRate` yüzdesi, kuruş, aşağı yuvarlanır (ör. 45,50 × %5 = 2,27) | `cashback` |
98
+ * | hediye kartı, kupon, indirim | hiçbir şey (harcamak ve kullanmak `POST /v1/passes/{serial}/actions` ile) | `none` |
99
+ *
100
+ * Hiçbir şey yazılmadıysa yanıt yine 200'dür, `applied: "none"` ve nedeni `reason`: `below_minimum` (tutar bir puan ya da bir kuruş birikim üretmiyor; `amountMinor: 0` dahil), `visit_already_counted` (VIP: bu ziyaret penceresinde ziyaret zaten sayıldı), `card_full` (damga: kart dolu ve program ödülden sonra damga biriktirmiyor; önce ödülü kullanın), `type_does_not_earn`. Damga ve VIP, `amountMinor: 0` olsa da ziyareti sayar.
101
+ * - **Idempotency-Key zorunludur**: 8–64 karakter ve bu kimlik için **kalıcı olarak tekil**; defter anahtarları hiç silinmez. Fiş numarası tek başına anahtar olamaz: ÖKC fiş numaraları Z raporundan sonra yeniden başlar. Kasa + Z no + fiş no birleşimi (ör. `kasa3-z0187-fis0042`) ya da satışla birlikte saklanıp tekrarda yeniden gönderilen bir UUID kullanın. Aynı anahtarla **aynı isteğin** tekrarı ikinci kez yazmaz: `duplicate: true`, `credited` ilk isteğin yazdığı, `balance` kartın şimdiki bakiyesi. Aynı anahtar başka bir gövdeyle (başka `amountMinor`, `locationId`, `reference` ya da `currency`) `422 IDEMPOTENCY_KEY_REUSED` alır ve hiçbir şey yazılmaz: satış sessizce kaybolmaz. Anahtar `POST /v1/passes/{serial}/actions` ile aynı alandadır: orada bu kartta kullanılmış bir anahtar da `422 IDEMPOTENCY_KEY_REUSED` alır. Hiçbir şey yazmayan bir satış anahtarı bağlamaz.
102
+ * - **`reference`** (isteğe bağlı, en fazla 80 karakter): fiş numarası buraya yazılır. Defter kaydının notuna yazılır: müşterinin geçmişinde (VIP ziyaretleri hariç; onlar ziyaret olarak görünür) ve işlem dökümünün `Not` sütununda görünür. Müşterinin kişisel bilgisini yazmayın.
103
+ * - Şube kuralları ve kasa kampanyaları `actions` ile aynıdır: kart bu şubede geçerli değilse `409 WRONG_LOCATION`, kampanya `promotion` ile döner. Salt-okunur hesapta da çalışır.
104
+ * - **`locationId` isteğe bağlıdır** (ADR 182): verilmezse satış bir şubeye yazılmaz (online mağaza gibi). O zaman şube kuralı ve kasa kampanyası uygulanmaz (e-ticaret siparişleri gibi), kayıtta şube boş kalır ve kimliğin **her şubede** `scan.use` yetkisi olmalıdır (yoksa `403 FORBIDDEN`); bir şubenin kasası şubesini gönderir. Yeni bir şube açmak gerekmez, hiçbir şey ücretlendirilmez.
105
+ * - **Geri almak:** `POST /v1/passes/{serial}/sale/reverse` satışın yazdığını bir kez geri alır.
106
+ *
107
+ * **Kimlik:** API anahtarı, ekip oturumu.
108
+ *
109
+ * **Yetki:** `scan.use` — Tarayıcıyı kullanma.
110
+ *
111
+ * Salt-okunur hesapta da çalışır.
112
+ *
113
+ * `POST /v1/passes/{serial}/sale`
114
+ *
115
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-recordSale | API referansı}
116
+ */
117
+ recordSale(args) {
118
+ return this._call('recordSale', args);
119
+ }
120
+ /**
121
+ * Satışı geri al
122
+ *
123
+ * İade ya da iptal edilen bir satışın karta yazdığını geri alır (ADR 182): o satışın yazdığı damga, puan, ziyaret ya da cashback'in tamamı, kasa kampanyasının katladığı dahil. Defter düzeltilmez; karta yeni bir düzeltme kaydı (`adjust`) yazılır ve müşterinin cüzdanı güncellenir.
124
+ * - **Hangi satış:** `saleKey`, satışı yazarken gönderdiğiniz `Idempotency-Key`'dir (aynı kimlikle; anahtarlar kimlik başına tutulur), ya da `reference`, satışın `reference`'ı (bu kartta yalnız bir satışta varsa; birden çoksa `409 SALE_AMBIGUOUS`, `saleKey` gönderin). İkisinden yalnız biri. `recordSale` ile ya da kazandıran bir kasa işlemiyle (`earn-stamps`, `earn-points`, `visit`, `accrue`) yazılan kayıtlar geri alınır; harcama, ödül ve kullanım geri alınmaz.
125
+ * - **Bir kez:** bir satış bir kez geri alınır, kim isterse istesin; tekrar `200` ve `duplicate: true` döner, hiçbir şey yazılmaz. Bu yüzden `Idempotency-Key` gerekmez.
126
+ * - **Ne geri alınabilir:** kartın bakiyesi satışın yazdığını hâlâ tutuyorsa. Kazanılan kullanıldıysa (damgalar ödüle, puanlar ödüle ya da harcamaya, cashback harcamaya ya da online bir siparişe gittiyse) bakiye yetmez: `409 SALE_ALREADY_SPENT`, `details: { credited, balance }`, hiçbir şey yazılmaz. Kısmi geri alma yoktur; bakiye eksiye düşmez. Hiçbir şey yazmamış bir satış (`applied: "none"`), hediye kartı, kupon ve indirim kartı `404 SALE_NOT_FOUND`.
127
+ * - **Kim geri alabilir:** satışın yapıldığı yerde kart işleyebilen: kimliğin **satışın şubesinde** `scan.use` yetkisi olmalıdır; şubesiz (online) bir satış için, onu yazarken olduğu gibi, her şubede (`403 FORBIDDEN`). `locationId` isteğe bağlıdır: geri almanın yapıldığı şube, düzeltme kaydına yazılır; verilirse işletmenin silinmemiş bir şubesi olmalı ve kimliğin orada da `scan.use` yetkisi olmalıdır. Geri alma bir ziyaret ya da okutma sayılmaz. Kapanmış ya da süresi dolmuş kartta da çalışır. Salt-okunur hesapta da çalışır.
128
+ * - **`reference` ile** yalnız satışı yazan çağrının gönderdiği `reference` eşleşir (kasa kampanyasının nota eklediği ad değil); 1.0.5'ten önce yazılmış satışlar yalnız `saleKey` ile bulunur.
129
+ *
130
+ * **Kimlik:** API anahtarı, ekip oturumu.
131
+ *
132
+ * **Yetki:** `scan.use` — Tarayıcıyı kullanma.
133
+ *
134
+ * Salt-okunur hesapta da çalışır.
135
+ *
136
+ * `POST /v1/passes/{serial}/sale/reverse`
137
+ *
138
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-reverseSale | API referansı}
139
+ */
140
+ reverseSale(args) {
141
+ return this._call('reverseSale', args);
142
+ }
86
143
  // ------------------------------------------------------------ Katılım
87
144
  /**
88
145
  * Katılım formu
@@ -155,6 +212,20 @@ export class RewloyMethods {
155
212
  return this._call('emailCardLink', args);
156
213
  }
157
214
  // ------------------------------------------------------------ Belge
215
+ /**
216
+ * Sürüm
217
+ *
218
+ * Bu kurulumda çalışan Rewloy sürümü (`version`, anlamsal sürüm: `1.0.0`, bir aday için `1.0.0-rc.1`) ve API sürümü (`apiVersion`, şimdilik hep `v1`). Kimlik istemez; kimlikle de çağrılabilir. API'nin yolu (`/v1`) ürünün sürümünden bağımsızdır: ürün 1.x, 2.x olurken `/v1` ancak geriye uymayan bir API değişikliğiyle `/v2` olur. Aynı sürüm her yanıtın `Rewloy-Version` başlığındadır.
219
+ *
220
+ * **Kimlik:** kimlik gerekmez, API anahtarı, ekip oturumu, kart sahibi oturumu.
221
+ *
222
+ * `GET /v1/meta`
223
+ *
224
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-getMeta | API referansı}
225
+ */
226
+ getMeta(args) {
227
+ return this._call('getMeta', args);
228
+ }
158
229
  /**
159
230
  * OpenAPI 3.1 belgesi
160
231
  *
@@ -218,7 +289,7 @@ export class RewloyMethods {
218
289
  /**
219
290
  * Kim olarak bağlıyım?
220
291
  *
221
- * Ekip oturumu: kişi, iki adımlı doğrulama durumu ve koltuk taşıdığı işletmeler (her biri için yetkiler). API anahtarı: anahtarın kendisi, işletmesi, rolü, kapsamı, etkin yetkileri (`permissions`) ve bir mağaza eklentisinin anahtarıysa bağlantısı (`key.shopId`). Bir entegrasyonun ilk çağrısı olarak bağlantıyı doğrulamak için idealdir. `mode`: çağıranın test ortamında mı (`test`) gerçek işletmede mi (`live`) çalıştığı; ekip oturumu bir işletme seçmediyse `null`.
292
+ * Ekip oturumu: kişi, iki adımlı doğrulama durumu ve koltuk taşıdığı işletmeler (her biri için yetkiler). API anahtarı: anahtarın kendisi, işletmesi (para birimi `business.currency` dahil), rolü, kapsamı, etkin yetkileri (`permissions`), bir mağaza eklentisinin anahtarıysa bağlantısı (`key.shopId`) ve bir eklentinin açıp kapatabileceği yetenekler (`key.abilities`: `view` kartları, durumlarını, programın sayılarını ve son işlemleri görmek; `till` tek bir şubenin kasası, `key.tillLocationId`). Bir entegrasyonun ilk çağrısı olarak bağlantıyı doğrulamak için idealdir. `mode`: çağıranın test ortamında mı (`test`) gerçek işletmede mi (`live`) çalıştığı; ekip oturumu bir işletme seçmediyse `null`.
222
293
  *
223
294
  * **Kimlik:** ekip oturumu, API anahtarı.
224
295
  *
@@ -240,6 +311,7 @@ export class RewloyMethods {
240
311
  * - `phone`: telefonla giriş açık değilse `501 NOT_ENABLED`; Türkiye cep telefonu değilse `400 INVALID_PHONE`. `channel` (`whatsapp` ya da `sms`) verilmezse şu an açık olan ilk yol kullanılır (önce WhatsApp); istenen yol açık değilse `501 NOT_ENABLED`, bugünkü bütçesi dolduysa `503 PHONE_BUSY` — ikisinde de `details.channels` şu an açık olanlar (boşsa e-postayla girin). Yanıttaki `channel` kodun gittiği yoldur: WhatsApp kodu kendiliğinden dolmaz, kişiye "Kodu kopyala" ile yapıştırmasını söyleyin.
241
312
  * - `previousToken`: bu kurulumun daha önceki `rwh_` oturumu (süresi dolmuş olsa da). Adres ya da numara o hesabınsa adres ve numara başına sınırlar uygulanmaz, böylece başkaları sizin kodlarınızı tüketemez. Çıkış yapılmış ya da kaldırılmış bir oturum bir şey kanıtlamaz.
242
313
  * - `deviceName`: açılacak oturumun Cihazlarım'daki adı.
314
+ * - **Idempotency-Key** (isteğe bağlı, önerilir; 8–64 karakter, her yeni istek için yeni bir UUID): aynı anahtar ve aynı gövdeyle tekrar yeni kod GÖNDERMEZ, ilk yanıtı (aynı `request`) `Idempotent-Replayed: true` ile döndürür ve sınırlardan düşmez — bağlantısı kopan uygulama güvenle yineler. Aynı anahtar başka bir gövdeyle `422 IDEMPOTENCY_KEY_REUSED`; ilk istek sürerken `409 IDEMPOTENCY_IN_PROGRESS` (bir şey gönderilmez). Yanıt şifreli saklanır, 7 gün tekrar edilir; kodun kendisi 15 dakika geçerlidir, yeni kod için yeni anahtar gönderin. Oturumsuz çağrıda anahtar istemcinin IP adresine bağlıdır. Başlık yoksa her çağrı yeni bir kod ve yeni bir `request` demektir.
243
315
  * - **Sözleşme değişikliği (ADR 150):** `request` yeni. E-postadaki bağlantı artık oturumu tek başına açmaz; bağlantıyı uygulamanız yakalarsa `linkToken` olarak yine aynı `request` ile gönderin.
244
316
  *
245
317
  * **Kimlik:** kimlik gerekmez.
@@ -442,7 +514,7 @@ export class RewloyMethods {
442
514
  /**
443
515
  * Davet
444
516
  *
445
- * Davet e-postasındaki bağlantının son parçası (`/davet/<code>`): hangi işletme, hangi adres, o adresin hesabı var mı (varsa mevcut şifreyle kabul edilir).
517
+ * Davet e-postasındaki bağlantının son parçası (`/davet/<code>`): hangi işletme, hangi adres. Adresin Rewloy hesabı olup olmadığını söylemez (bağlantı daveti yapanda da vardır, ADR 181): hesabı olan kişi o hesapla giriş yapıp oturumuyla kabul eder, olmayan şifre belirleyerek.
446
518
  *
447
519
  * **Kimlik:** kimlik gerekmez.
448
520
  *
@@ -456,9 +528,14 @@ export class RewloyMethods {
456
528
  /**
457
529
  * Daveti kabul et
458
530
  *
459
- * Hesap yoksa bu şifreyle açılır (en az 10 karakter); varsa mevcut şifre istenir. Koltuk ve roller verilir — daveti yapanın o anki yetkileriyle yeniden denetlenerek — ve oturum döner. Daveti yapan işletme sahiplerine bildirilir.
531
+ * Koltuk ve roller verilir — daveti yapanın o anki yetkileriyle yeniden denetlenerek — ve oturum döner. Daveti yapan işletme sahiplerine bildirilir. **Davet hiçbir zaman mevcut bir hesabın şifresini sormaz** (bağlantı daveti yapanda da vardır; ADR 181):
532
+ * - **Adresin hesabı varsa:** kişi o hesapla girer (`POST /v1/auth/login`) ve bu çağrıyı kendi `rws_` oturumuyla, gövdesiz yapar; yanıt aynı oturumu güncel işletmeleriyle döndürür. Başka bir adresin oturumu `403 INVITE_OTHER_ACCOUNT`. Oturumsuz çağrı, şifreyle de olsa, `409 INVITE_SIGN_IN`.
533
+ * - **Hesabı yoksa:** oturumsuz, `password` (en az 10 karakter) ile hesap açılır ve yeni oturum döner. Adres davetle doğrulanmış sayılmaz: doğrulama bağlantısı e-postayla gider (kayıttaki gibi).
534
+ * - IP başına 15 dakikada 20 deneme.
460
535
  *
461
- * **Kimlik:** kimlik gerekmez.
536
+ * **Kimlik:** kimlik gerekmez, ekip oturumu.
537
+ *
538
+ * Salt-okunur hesapta da çalışır.
462
539
  *
463
540
  * `POST /v1/auth/invites/{code}/accept`
464
541
  *
@@ -916,7 +993,7 @@ export class RewloyMethods {
916
993
  /**
917
994
  * Müşteriler, kart kart
918
995
  *
919
- * Aynı süzgeçlerle, her satırda bir kart (panelde "kart kart" görünüm).
996
+ * Aynı süzgeçlerle, her satırda bir kart (panelde "kart kart" görünüm). `q` bir kişiyi bulur ve kişinin bütün kartları gelir; `q` bir kart numarası (ya da başı, en az 4 karakter, tire ve büyük-küçük harf önemsiz) olarak da okunur: numarası onunla başlayan kart `matched: true` taşır ve listenin başına gelir, tam eşleşen en başa (ADR 182). Bir kartı numarasıyla okumak için `GET /v1/passes/{serial}` daha doğrudur.
920
997
  *
921
998
  * **Kimlik:** API anahtarı, ekip oturumu.
922
999
  *
@@ -1161,7 +1238,7 @@ export class RewloyMethods {
1161
1238
  * | tür | alanlar |
1162
1239
  * |---|---|
1163
1240
  * | hediye kartı | `valueMinor` zorunlu (100 – 100.000.000 kuruş); kullanım her zaman sınırsız, bakiye bitene kadar |
1164
- * | kupon | ya `offerText` (ör. "1 tatlı") ya `valueMinor` (100 – 10.000.000 kuruş indirim); `usage` |
1241
+ * | kupon | ya `offerText` (ör. "1 tatlı") ya `valueMinor` (100 – 10.000.000 kuruş indirim); `usage`; isteğe bağlı `onlineValue` (online mağazadaki değeri: `{ kind: amount, value: kuruş }` ya da `{ kind: percent, value: 1–100 }`, ADR 179) |
1165
1242
  * | indirim kartı | `percent` (yoksa programın oranı); `usage` |
1166
1243
  *
1167
1244
  * `usage`: `once` tek kullanım, `limited` + `usageLimit` (2–1000), `unlimited`. `validUntil` bir gün (YYYY-AA-GG) ise o günün sonuna kadar (Türkiye saati) geçerlidir. Başka türün alanı reddedilir. Planda `instruments` özelliği gerekir.
@@ -1773,7 +1850,7 @@ export class RewloyMethods {
1773
1850
  /**
1774
1851
  * Ana sayfa
1775
1852
  *
1776
- * Dört ana sayı (yeni kart, yeni müşteri, ziyaret, ödül) ve bir önceki eşit dönem, arkalarındaki günlük seri (önce önceki dönem, sonra bu dönem), tezgâhtaki son 15 olay ve — kapsam bütün şubelerse ve 2+ şube varsa — şubeler yan yana. Kişi adları yalnız `customers.read` olan kimliğe gelir.
1853
+ * Dört ana sayı (yeni kart, yeni müşteri, ziyaret, ödül) ve bir önceki eşit dönem, arkalarındaki günlük seri (önce önceki dönem, sonra bu dönem), tezgâhtaki son 15 olay ve — kapsam bütün şubelerse ve 2+ şube varsa — şubeler yan yana. Kişi adları yalnız `customers.read` olan kimliğe gelir. Kapsamı programlarla sınırlı bir kimlik bütün işletmenin özetini okuyamaz (`403 OUT_OF_SCOPE`); `GET /v1/analytics` ve `GET /v1/activity`yi programıyla kullanır.
1777
1854
  *
1778
1855
  * **Kimlik:** API anahtarı, ekip oturumu.
1779
1856
  *
@@ -1789,7 +1866,7 @@ export class RewloyMethods {
1789
1866
  /**
1790
1867
  * Analitik
1791
1868
  *
1792
- * Son 7, 30 ya da 90 günün göstergeleri: açık kartlar, yeni kartlar, ziyaretler, ziyaret eden kişiler ve bunlardan dönen (2+ ziyaret), ödüller; günlük ziyaretler; haftalık yeni ve dönen ziyaretçiler; program başına kart → kullanım → ödül hunisi; şubeler; en sık gelen müşteriler (yalnız `customers.read` ile). Apple Cüzdan'daki kartlar ve konum hatırlatması taşıyanlar.
1869
+ * Son 7, 30 ya da 90 günün göstergeleri: açık kartlar, yeni kartlar, ziyaretler, ziyaret eden kişiler ve bunlardan dönen (2+ ziyaret), ödüller; günlük ziyaretler; haftalık yeni ve dönen ziyaretçiler; program başına kart → kullanım → ödül hunisi; şubeler; en sık gelen müşteriler (yalnız `customers.read` ile). Apple Cüzdan'daki kartlar ve konum hatırlatması taşıyanlar. `programId` ile tek bir programın sayıları (ADR 178); kapsamı programlarla sınırlı bir kimlik yalnız kendi programlarını görür. Bir mağaza eklentisinin anahtarına müşteri adı gelmez.
1793
1870
  *
1794
1871
  * **Kimlik:** API anahtarı, ekip oturumu.
1795
1872
  *
@@ -1805,7 +1882,7 @@ export class RewloyMethods {
1805
1882
  /**
1806
1883
  * İşlem kaydı: kasa
1807
1884
  *
1808
- * Kartlarda yapılan her işlem, yeniden eskiye: damga, puan, ödül, harcama, yükleme, ziyaret, kupon kullanımı… kim (ekip üyesi, API anahtarı ya da sistem), nerede, hangi kart. `day` işletmenin takvim günüdür. Planda `auditlog` özelliği gerekir. `limit` en fazla 100.
1885
+ * Kartlarda yapılan her işlem, yeniden eskiye: damga, puan, ödül, harcama, yükleme, ziyaret, kupon kullanımı… kim (ekip üyesi, API anahtarı ya da sistem), nerede, hangi kart. `day` işletmenin takvim günüdür. Planda `auditlog` özelliği gerekir. `limit` en fazla 100. Kapsamı programlarla sınırlı bir kimlik (ör. mağaza eklentisinin anahtarı) yalnız kendi programlarının kartlarını görür (ADR 178). Bir mağaza eklentisinin anahtarına kişisel veri gelmez: ekip üyesi `actor` yerine "ekip üyesi" yazar, `personId` null'dır.
1809
1886
  *
1810
1887
  * **Kimlik:** API anahtarı, ekip oturumu.
1811
1888
  *
@@ -1837,7 +1914,7 @@ export class RewloyMethods {
1837
1914
  /**
1838
1915
  * Canlı akış (SSE)
1839
1916
  *
1840
- * Tezgâhta olan her şey, olduğu anda: `event: event` satırlarında `{ at, kind, location, program, delta, unit, name, currency }` (JSON). Kapsamınızdaki şubeler; kişi adı yalnız `customers.read` ile. 25 saniyede bir `: hb` satırı bağlantıyı canlı tutar; koparsa yeniden bağlanın. Tarayıcıdaki `EventSource` başlık gönderemediği için `fetch` ile akış okuyun. IP başına en fazla 12 açık bağlantı. Sunucudan sunucuya bildirim için webhook'ları kullanın.
1917
+ * Tezgâhta olan her şey, olduğu anda: `event: event` satırlarında `{ at, kind, location, program, delta, unit, name, currency }` (JSON). Kapsamınızdaki şubeler; kişi adı yalnız `customers.read` ile. 25 saniyede bir `: hb` satırı bağlantıyı canlı tutar; koparsa yeniden bağlanın. Tarayıcıdaki `EventSource` başlık gönderemediği için `fetch` ile akış okuyun. IP başına en fazla 12 açık bağlantı. Sunucudan sunucuya bildirim için webhook'ları kullanın. Kapsamı programlarla sınırlı bir kimlik akışı açamaz (`403 OUT_OF_SCOPE`); `GET /v1/activity`yi programıyla sorar.
1841
1918
  *
1842
1919
  * **Kimlik:** API anahtarı, ekip oturumu.
1843
1920
  *
@@ -2293,6 +2370,10 @@ export class RewloyMethods {
2293
2370
  * - Kod **yalnız bu yanıtta** görünür; Rewloy yalnız özetini saklar. 15 dakika geçerlidir.
2294
2371
  * - Kodu bir kişi alır (ekip oturumu; bir anahtar anahtar üretemez), `apikeys.manage`, kartın programında mağaza bağlantısı yetkisi ve — elle anahtar oluştururken olduğu gibi — `team.manage` ile (anahtarın yetkisi o kişiden verilen bir roldür; kişi E-ticaret rolünün yetkilerini tüm şubelerde taşımalıdır), `api` ve `ecommerce` özellikli bir planda. Kod bir API anahtarı ürettiği için kişinin şifresi yeniden istenir (`password`), anahtar oluştururken olduğu gibi. Bağlantı ve anahtar, kod kullanıldığı anda bu kişinin yetkileriyle kurulur: kişi o arada yetkisini kaybettiyse hiçbir şey kurulmaz.
2295
2372
  * - Kural alanları `POST /v1/shops` ile aynıdır. En fazla 5 bağlantı ve aynı anda en fazla 5 bekleyen kod.
2373
+ * - **Eklentinin yetkileri** (ADR 178), kodu alan kişi seçer; sonra bağlantının sayfasından ya da `PUT /v1/shops/{id}/plugin-abilities` ile değişir:
2374
+ * - `view` (Görüntüleme; bu çağrıda gönderilmezse kapalı, panelin formunda işaretli gelir): bağlantının programında `passes.read` ve `analytics.read` — kartın durumu (`GET /v1/passes/{serial}`), programın sayıları (`GET /v1/analytics?programId=`) ve kartlardaki son işlemler (`GET /v1/activity`). Müşterinin adı, e-postası ya da telefonu gelmez; ekip üyesinin e-postası da.
2375
+ * - `tillLocationId` (Kasa, varsayılan kapalı): bu tek şubede ve bağlantının programında `scan.use` — `GET /v1/passes/{serial}/till`, `POST …/sale`, `POST …/actions`. Hediye kartı yüklemek (`load`) yine `instruments.issue` ister ve verilmez. Kapalı başlar: açıkken WooCommerce'i yönetebilen herkes o şubede müşterilerin bakiyesini harcatabilir.
2376
+ * - Kişi bu yetkileri verebilmelidir (`team.manage` ve alt küme kuralı: Görüntüleme yetkilerini tüm şubelerde, `scan.use`'u o şubede taşımalı).
2296
2377
  *
2297
2378
  * **Kimlik:** ekip oturumu.
2298
2379
  *
@@ -2326,7 +2407,7 @@ export class RewloyMethods {
2326
2407
  *
2327
2408
  * Mağaza eklentisinin tek adımı: paneldeki bağlantı kodunu (`rwc_…`) verir, karşılığında **bir kez** şunları alır: bağlantı (`shop`), bağlantının sırrı (`secret`, WooCommerce webhook'una yazılır) ve yalnız bu bağlantıya bağlı API anahtarı (`apiKey.token`). Kimlik istemez; kod kimliktir.
2328
2409
  * - Kod **tek kullanımlıktır**: ikinci kez, süresi dolmuşken ya da iptal edilmişken aynı yanıtı alır: `404 CONNECT_TOKEN_INVALID` (hangisi olduğu söylenmez). Kurulum yarıda reddedilirse (ör. 5 bağlantı sınırı) kod harcanmaz.
2329
- * - Anahtar "E-ticaret" rolündedir ve bağlantının programıyla sınırlıdır: kartları ve ayarları görür, yalnız kendi bağlantısını görür ve yönetir, o programdan kart verir. Bağlantı silinince anahtar da iptal edilir. Test ortamının kodu `rwk_test_` anahtarı verir (`mode`).
2410
+ * - Anahtar "E-ticaret" rolündedir ve bağlantının programıyla sınırlıdır: kartları ve ayarları görür, yalnız kendi bağlantısını görür ve yönetir, o programdan kart verir. Kodu alan kişi Görüntüleme ve Kasa'yı seçtiyse anahtar onları da alır (`apiKey.abilities`, ADR 178); `GET /v1/me` her an yeniden söyler. Bağlantı silinince anahtar da iptal edilir. Test ortamının kodu `rwk_test_` anahtarı verir (`mode`).
2330
2411
  * - `shopName` anahtarın panelde görünen adına eklenir ("WooCommerce · …"). IP başına 10 dakikada 20 istek.
2331
2412
  *
2332
2413
  * **Kimlik:** kimlik gerekmez.
@@ -2338,6 +2419,282 @@ export class RewloyMethods {
2338
2419
  connectShop(args) {
2339
2420
  return this._call('connectShop', args);
2340
2421
  }
2422
+ /**
2423
+ * Eklentinin yetkilerini değiştir
2424
+ *
2425
+ * Bağlantı koduyla kurulmuş bir bağlantının eklenti anahtarının bağlantı dışında yapabildikleri (ADR 178): Görüntüleme (`view`) ve tek bir şubenin Kasası (`tillLocationId`; null = kapalı). Değişiklik mevcut anahtara **hemen** uygulanır; eklentinin yeniden bağlanması gerekmez, eklenti `GET /v1/me` ile okur.
2426
+ * - Yalnız ekip oturumuyla: bir anahtarın yetkisini değiştirmek, anahtar oluşturmak gibidir. Bağlantının programında `shops.manage` (ya da `apikeys.manage`), ayrıca `apikeys.manage`, `team.manage` ve alt küme kuralı (verilen yetkileri kişi o şubelerde taşımalı) ister; kişinin şifresi (`password`) ve değişikliğin nedeni (`reason`, en fazla 200 karakter, yalnız ekibin gördüğü işlem kaydına yazılır) istenir.
2427
+ * - Bağlantıyı eklenti kurmadıysa ya da eklentinin anahtarı iptal edildiyse `409 NO_PLUGIN_KEY`.
2428
+ * - **Eklentinin yetkileri** (ADR 178), kodu alan kişi seçer; sonra bağlantının sayfasından ya da `PUT /v1/shops/{id}/plugin-abilities` ile değişir:
2429
+ * - `view` (Görüntüleme; bu çağrıda gönderilmezse kapalı, panelin formunda işaretli gelir): bağlantının programında `passes.read` ve `analytics.read` — kartın durumu (`GET /v1/passes/{serial}`), programın sayıları (`GET /v1/analytics?programId=`) ve kartlardaki son işlemler (`GET /v1/activity`). Müşterinin adı, e-postası ya da telefonu gelmez; ekip üyesinin e-postası da.
2430
+ * - `tillLocationId` (Kasa, varsayılan kapalı): bu tek şubede ve bağlantının programında `scan.use` — `GET /v1/passes/{serial}/till`, `POST …/sale`, `POST …/actions`. Hediye kartı yüklemek (`load`) yine `instruments.issue` ister ve verilmez. Kapalı başlar: açıkken WooCommerce'i yönetebilen herkes o şubede müşterilerin bakiyesini harcatabilir.
2431
+ * - Kişi bu yetkileri verebilmelidir (`team.manage` ve alt küme kuralı: Görüntüleme yetkilerini tüm şubelerde, `scan.use`'u o şubede taşımalı).
2432
+ *
2433
+ * **Kimlik:** ekip oturumu.
2434
+ *
2435
+ * **Yetki:** `shops.manage` — Mağaza bağlantısı yönetimi.
2436
+ *
2437
+ * `PUT /v1/shops/{id}/plugin-abilities`
2438
+ *
2439
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-setShopPluginAbilities | API referansı}
2440
+ */
2441
+ setShopPluginAbilities(args) {
2442
+ return this._call('setShopPluginAbilities', args);
2443
+ }
2444
+ /**
2445
+ * Ödeme adımındaki kodu sor
2446
+ *
2447
+ * Müşterinin kupon alanına yazdığı Rewloy kodunun bu mağazada ne verdiğini söyler; değer ayırmaz. Kodun ilk sorulması onu bu bağlantıya bağlar (başka bir mağazada `CODE_USED`). Kod oluşturulduktan sonra 15 dakika içinde ilk kez sorulmalı, 45 dakika içinde bir siparişe bağlanmalıdır.
2448
+ * - `balance` (hediye kartı, cashback): `maxMinor` en fazla ayrılabilecek tutardır — müşterinin seçtiği tutar ve kartın kullanılabilir bakiyesinden küçüğü. `percent`: indirim yüzdesi. `amount`: kuponun online tutarı. `link` (damga, puan, VIP): değer yok, sipariş bu karta işlenir.
2449
+ * - `tax`: bağlantının ayarına göre değerin uygulanışı: `discount` vergiden önce kupon olarak, `payment` vergiden sonra ödeme gibi (eksi ücret). `link` için null.
2450
+ * - Bilinmeyen, iptal edilmiş ve başka işletmenin kodu aynı `404 CODE_INVALID` yanıtını alır.
2451
+ * - Sınırlar: bağlantı başına 10 dakikada 600 soru; bağlantı başına saatte 30 geçersiz koddan sonra geçersiz kodlar o saatin sonuna kadar `429 RATE_LIMITED` (geçerli bir kod yine çalışır). `shopper` gönderilirse aynı alışverişçiye ayrıca 10 dakikada 30 soru ve saatte 10 geçersiz kod: bir alışverişçinin denemeleri ötekilerin bütçesini bitirmez.
2452
+ * - `orderId` (isteğe bağlı): kodu soran siparişin numarası. Kod bu siparişte zaten kullanılıyorsa `CODE_USED` yerine 200 döner: değerler siparişin gözünden (kendi ayırması kullanılabilir sayılır) ve `redemption` bu siparişin kod kullanımı (`listOrderRedemptions` ile aynı). Kullanım ayırmayı geçtiyse (düşüldü, iade edildi, karşılıksız) değerler kullanımın kaydından gelir. `orderId` gönderilince `redemption` her zaman vardır: kod bu siparişin değilse `null`. Süresi dolmuş ya da işletmenin elle bıraktığı bir ayırma `409 CODE_RELEASED`.
2453
+ * - `shopper` (isteğe bağlı): alışverişçiyi kişisel veri taşımadan ayıran bir değer — ör. WooCommerce oturum anahtarının ya da müşteri numarasının bir sırla HMAC'i, base64url ya da hex, 8–64 karakter (`^[A-Za-z0-9_-]{8,64}$`). Rewloy saklamaz, yalnız sayaç anahtarında kullanır; e-posta ya da adın kendisini göndermeyin.
2454
+ * - Kartın programında `shops.redeem` ister ("E-ticaret" rolünde kendi programı için vardır; işletmenin diğer programları için "E-ticaret · harcama"). Bağlantı koduyla kurulmuş bir eklentinin anahtarı yalnız kendi bağlantısında çağırabilir.
2455
+ *
2456
+ * **Kimlik:** API anahtarı, ekip oturumu.
2457
+ *
2458
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2459
+ *
2460
+ * Salt-okunur hesapta da çalışır.
2461
+ *
2462
+ * `POST /v1/shops/{id}/checkout-codes/quote`
2463
+ *
2464
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-quoteCheckoutCode | API referansı}
2465
+ */
2466
+ quoteCheckoutCode(args) {
2467
+ return this._call('quoteCheckoutCode', args);
2468
+ }
2469
+ /**
2470
+ * Siparişin kod kullanımları
2471
+ *
2472
+ * Bir siparişin Rewloy kodlarının şimdiki hâli, ilk kullanılan önce. `shops.read` ister.
2473
+ *
2474
+ * **Kimlik:** API anahtarı, ekip oturumu.
2475
+ *
2476
+ * **Yetki:** `shops.read` — Mağaza bağlantılarını görüntüleme.
2477
+ *
2478
+ * `GET /v1/shops/{id}/orders/{orderId}/redemptions`
2479
+ *
2480
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-listOrderRedemptions | API referansı}
2481
+ */
2482
+ listOrderRedemptions(args) {
2483
+ return this._call('listOrderRedemptions', args);
2484
+ }
2485
+ /**
2486
+ * Siparişe kodu bağla ve değeri ayır
2487
+ *
2488
+ * Sipariş verildiğinde, ödeme alınmadan önce: kodu bu siparişe bağlar ve kartın değerini ayırır (`held`). Ayrılan tutar kartın kullanılabilir bakiyesinden hemen düşer — kasada, POS satışında ve cüzdanda da. Ödenince `capture`, iptal ya da başarısızlıkta `release`; ödenmezse bağlantının bekletme süresi (`settings.holdDays`, varsayılan 7 gün) sonunda karta kendiliğinden döner.
2489
+ * - `amountMinor`: `balance` kartta zorunlu — siparişe gerçekten uygulanan tutar (en fazla `quote` yanıtındaki `maxMinor`); kuponda ve indirim kartında bilgi için uygulanan indirim; `link` kartta yok sayılır.
2490
+ * - `orderTotalMinor` (isteğe bağlı, önerilir): siparişin indirimden önceki toplamı, kuruş. Verilirse `amountMinor` onu aşamaz (`400 VALIDATION`): yüzde kodunda bile indirim siparişten büyük kaydedilmez.
2491
+ * - Aynı sipariş ve aynı kodla tekrar: değişmeden döner (200). Ayrılmışken başka bir tutar: yeniden ayrılır (`generation` artar), `heldUntil` değişmez. Mağazanın ya da siparişin bıraktığı (`release`) bir ayırmayı aynı sipariş yalnız kodun 45 dakikası (`attachBy`) içinde yeniden ayırabilir; süresi dolmuş (`expired`) ya da işletmenin elle bıraktığı bir ayırma bir daha ayrılmaz (`409 CODE_RELEASED`, `details.reason`: `expired` ya da `merchant`; müşteri yeni kod oluşturur — "başka bir siparişte kullanıldı" denmesin). Başka bir sipariş: `CODE_USED`. Bir siparişte en fazla 3 kod, her karttan bir.
2492
+ * - Ret olursa ödeme alınmamalıdır. Yanıt alınamazsa aynı çağrı güvenle yinelenir; yine alınamazsa siparişi reddedin ve `release` çağırın (ayırma yoksa da zararsızdır).
2493
+ * - Kartın programında `shops.redeem` ister ("E-ticaret" rolünde kendi programı için vardır; işletmenin diğer programları için "E-ticaret · harcama"). Bağlantı koduyla kurulmuş bir eklentinin anahtarı yalnız kendi bağlantısında çağırabilir.
2494
+ *
2495
+ * **Kimlik:** API anahtarı, ekip oturumu.
2496
+ *
2497
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2498
+ *
2499
+ * Salt-okunur hesapta da çalışır.
2500
+ *
2501
+ * `POST /v1/shops/{id}/orders/{orderId}/redemptions`
2502
+ *
2503
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-holdCheckoutCode | API referansı}
2504
+ */
2505
+ holdCheckoutCode(args) {
2506
+ return this._call('holdCheckoutCode', args);
2507
+ }
2508
+ /**
2509
+ * Ödenen siparişin ayırmasını düş
2510
+ *
2511
+ * Sipariş ödendiğinde (`processing` ya da `completed`): siparişin ayrılmış her kod kullanımı düşülür — bakiyeli kartta ayırma bırakılır ve tutar harcanır (`captured`), kupon ve indirim kartında kullanım sayılır. Hepsi tek işlemde; tekrar çağrı yapılacak bir şey bulamaz ve aynı sonucu döndürür. Mağazanın imzalı sipariş bildirimi de aynı işi yapar: hangisi önce gelirse o yapar.
2512
+ * - `captures`: bir kullanımda ayrılandan azını düşmek için (`amountMinor`, en az 1); kalanı karta döner. Verilmezse ayrılanın tamamı.
2513
+ * - Süresi dolmuş ya da bırakılmış bir ayırma için ödeme gelirse kartta değer hâlâ varsa düşülür (`late: true`); yoksa hiçbir şey düşülmez, kullanım `unbacked` olur ve yanıt `409 HOLD_UNBACKED` (`details.redemptions` son hâl) — bakiye hiçbir zaman eksiye düşmez.
2514
+ * - Kart bu arada kapatıldıysa `409 PASS_INACTIVE`: ayırma süresi dolana dek durur. Süresi dolmuş ya da bırakılmış bir ayırmanın kartı kapandıysa (ör. kasada sıfıra harcanan hediye kartı) kullanım `unbacked` olur (`409 HOLD_UNBACKED`).
2515
+ * - Mağazanın imzalı `processing`/`completed` bildirimi bu çağrıdan önce gelirse ayrılanın TAMAMI düşülür (bildirimde kısmi tutar yoktur); sonra gelen kısmi `captures` bir şey değiştirmez. Kısmi düşüm isteyen eklenti, siparişi ödenmiş saymadan önce bu çağrıyı yapmalıdır.
2516
+ *
2517
+ * **Kimlik:** API anahtarı, ekip oturumu.
2518
+ *
2519
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2520
+ *
2521
+ * Salt-okunur hesapta da çalışır.
2522
+ *
2523
+ * `POST /v1/shops/{id}/orders/{orderId}/capture`
2524
+ *
2525
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-captureCheckoutOrder | API referansı}
2526
+ */
2527
+ captureCheckoutOrder(args) {
2528
+ return this._call('captureCheckoutOrder', args);
2529
+ }
2530
+ /**
2531
+ * Siparişin ayırmasını bırak
2532
+ *
2533
+ * Sipariş iptal edildiğinde ya da başarısız olduğunda (ya da mağaza siparişi reddederken): ayrılmış her kod kullanımının tutarı karta döner (`released`). Ayrılmış olmayanlara dokunulmaz; tekrar çağrı aynı sonucu döndürür. `reason`: `cancelled`, `failed` ya da `shop` (varsayılan). Mağazanın imzalı bildirimi `cancelled`/`failed` durumunda da aynı işi yapar.
2534
+ *
2535
+ * **Kimlik:** API anahtarı, ekip oturumu.
2536
+ *
2537
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2538
+ *
2539
+ * Salt-okunur hesapta da çalışır.
2540
+ *
2541
+ * `POST /v1/shops/{id}/orders/{orderId}/release`
2542
+ *
2543
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-releaseCheckoutOrder | API referansı}
2544
+ */
2545
+ releaseCheckoutOrder(args) {
2546
+ return this._call('releaseCheckoutOrder', args);
2547
+ }
2548
+ /**
2549
+ * İade edilen siparişin tutarını karta geri yükle
2550
+ *
2551
+ * - **Tam iade** (gövde boş): düşülen her bakiyenin henüz iade edilmemiş kısmı karta yeni bir kayıtla geri yüklenir (bir kez); kullanımlar `refunded` olur. Kullanılmış tek kullanımlık kupon yeniden açılmaz. Bakiyesi bitip kapanan hediye kartı yeniden açılır. Siparişin bu karta kazandırdığı (damga, puan, ziyaret, cashback) bağlantının `refundReverses` ayarına göre geri alınır, hiçbir zaman sıfırın altına inmeden: yanıtta `unearned` (zaten harcanmış kısım `short`). Mağazanın imzalı `refunded` bildirimi de aynısını yapar.
2552
+ * - **Kısmi iade** (`amountMinor`): kendiliğinden yapılmaz; elle bir kullanıma (`redemptionId`, siparişte tek bakiyeli kullanım varsa gerekmez) en fazla düşülen − iade edilen kadar. `Idempotency-Key` zorunludur: aynı anahtar ve aynı tutarla tekrar iki kez yüklemez; aynı anahtar başka bir tutarla `422 IDEMPOTENCY_KEY_REUSED`. Kazanç geri alınmaz.
2553
+ * - Siparişin kazancı bir kez geri alınır: ilk iade sıfır geri aldıysa da (kart kazandığını harcamıştı) sonraki çağrılar yeniden almaz, ilk sonucu döndürür.
2554
+ *
2555
+ * **Kimlik:** API anahtarı, ekip oturumu.
2556
+ *
2557
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2558
+ *
2559
+ * Salt-okunur hesapta da çalışır.
2560
+ *
2561
+ * `POST /v1/shops/{id}/orders/{orderId}/refund`
2562
+ *
2563
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-refundCheckoutOrder | API referansı}
2564
+ */
2565
+ refundCheckoutOrder(args) {
2566
+ return this._call('refundCheckoutOrder', args);
2567
+ }
2568
+ /**
2569
+ * Bağlantının kod kullanımları
2570
+ *
2571
+ * Bu mağazada kullanılan Rewloy kodları, yeniden eskiye; `state` ile süzülür (`unbacked`: karşılıksız kalanlar). Sipariş numarası mağazanındır; kişisel veri yoktur. `shops.read` ister.
2572
+ *
2573
+ * **Kimlik:** API anahtarı, ekip oturumu.
2574
+ *
2575
+ * **Yetki:** `shops.read` — Mağaza bağlantılarını görüntüleme.
2576
+ *
2577
+ * `GET /v1/shops/{id}/redemptions`
2578
+ *
2579
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-listShopRedemptions | API referansı}
2580
+ */
2581
+ listShopRedemptions(args) {
2582
+ return this._call('listShopRedemptions', args);
2583
+ }
2584
+ /**
2585
+ * Ayrılmış tutarı elle bırak
2586
+ *
2587
+ * İşletmenin kararı: ayrılmış (`held`) bir kod kullanımının tutarı karta döner (`released`, neden `merchant`); mağaza bu kodu bu siparişe bir daha ayıramaz. Önce neden: defter kaydının notu ve erişim kaydı olur. Kartın programında `scan.adjust` (manuel bakiye düzeltme) ister; yalnız ekip oturumu. Mağaza siparişi sonra öderse ödeme geç düşüm olarak denenir (kartta değer yoksa karşılıksız kalır).
2588
+ *
2589
+ * **Kimlik:** ekip oturumu.
2590
+ *
2591
+ * **Yetki:** `scan.adjust` — Manuel bakiye düzeltme.
2592
+ *
2593
+ * `POST /v1/shops/{id}/redemptions/{redemptionId}/release`
2594
+ *
2595
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-releaseShopRedemption | API referansı}
2596
+ */
2597
+ releaseShopRedemption(args) {
2598
+ return this._call('releaseShopRedemption', args);
2599
+ }
2600
+ /**
2601
+ * Elle iade
2602
+ *
2603
+ * Kısmi iade gibi kendiliğinden yapılmayan bir iade: düşülmüş bir bakiyeden en fazla düşülen − iade edilen kadarı karta yeni bir kayıtla geri yüklenir. Önce neden; kartın programında `scan.adjust` ister, yalnız ekip oturumu. `Idempotency-Key` zorunludur: aynı anahtarla tekrar bir kez yükler.
2604
+ *
2605
+ * **Kimlik:** ekip oturumu.
2606
+ *
2607
+ * **Yetki:** `scan.adjust` — Manuel bakiye düzeltme.
2608
+ *
2609
+ * `POST /v1/shops/{id}/redemptions/{redemptionId}/refund`
2610
+ *
2611
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-refundShopRedemption | API referansı}
2612
+ */
2613
+ refundShopRedemption(args) {
2614
+ return this._call('refundShopRedemption', args);
2615
+ }
2616
+ /**
2617
+ * Ödeme adımı ayarları
2618
+ *
2619
+ * Mağazanın kart kodu ayarlarını değiştirir; yalnız gönderilenler değişir. Bağlantının programında `shops.manage` ister — eklentinin kendi anahtarı da kendi bağlantısının ayarlarını değiştirebilir (WordPress'teki Ayarlar). Her değişiklik eskisi ve yenisiyle kayda geçer.
2620
+ * - `tax`: kart değerinin siparişe nasıl uygulanacağı (eklenti uygular). `refundReverses`: iade edilen siparişin kazancı. `holdDays`: 1–30.
2621
+ * - `accepts.programIds`: işletmenin bu mağazada kodu kabul edilen diğer programları (bütün liste; boş liste hepsini kapatır). Yalnız etkin hediye kartı, cashback, kupon ve indirim kartı programları. Eklentinin anahtarı yalnız tavanının içinde açabilir, tavanı genişletemez (`403 OUT_OF_SCOPE`); bir kişi programda `shops.manage` taşıyorsa açabilir ve eklentiyle kurulmuş bir bağlantıda önce tavana ekler (`PUT /v1/shops/{id}/ceiling`). Kapatılan programın kodları hemen reddedilir; önceden ayrılmış tutarlar siparişleri bitene dek geçerlidir.
2622
+ *
2623
+ * **Kimlik:** API anahtarı, ekip oturumu.
2624
+ *
2625
+ * **Yetki:** `shops.manage` — Mağaza bağlantısı yönetimi.
2626
+ *
2627
+ * `PATCH /v1/shops/{id}/settings`
2628
+ *
2629
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-setShopSettings | API referansı}
2630
+ */
2631
+ setShopSettings(args) {
2632
+ return this._call('setShopSettings', args);
2633
+ }
2634
+ /**
2635
+ * Eklentinin anahtarının kabul edebileceği programlar (tavan)
2636
+ *
2637
+ * Eklentiyle kurulmuş bir bağlantının anahtarına işletmenin diğer programlarının kodlarını kullanma yetkisi verir: "E-ticaret · harcama" rolü (yalnız `shops.redeem`, kart vermez), tam olarak bu programlarla sınırlı. Boş liste yetkiyi kaldırır; bağlantının açık programları yeni tavana indirilir. Bağlantı kurulurken tavan, kodu oluşturan kişinin verebileceği bütün programlardır; hiçbiri açık değildir.
2638
+ * - Yalnız ekip oturumu; her programda `shops.manage`, ayrıca `apikeys.manage` ve — bir yetki verildiği için — `team.manage` ile tüm şubelerde `shops.redeem` (alt küme kuralı). Değişiklik ekip kaydına `grant.given` / `grant.revoked` olarak geçer.
2639
+ *
2640
+ * **Kimlik:** ekip oturumu.
2641
+ *
2642
+ * **Yetki:** `shops.manage` — Mağaza bağlantısı yönetimi.
2643
+ *
2644
+ * `PUT /v1/shops/{id}/ceiling`
2645
+ *
2646
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-setShopCeiling | API referansı}
2647
+ */
2648
+ setShopCeiling(args) {
2649
+ return this._call('setShopCeiling', args);
2650
+ }
2651
+ // ------------------------------------------------------------ Kart sahibi
2652
+ /**
2653
+ * Online alışveriş kodları
2654
+ *
2655
+ * "Online alışverişte kullan" düğmesi için: `online` işletmenin açık bir mağazasının bu kartı kabul edip etmediğidir (değilse düğmeyi göstermeyin). `offer` bir kodun şimdi ne vereceği (bakiyeli kartta `maxMinor` kullanılabilir bakiye), verilemiyorsa `refusal` nedenidir (`INSUFFICIENT_BALANCE`, `PASS_USED_UP`, `VOUCHER_NOT_ONLINE`, `PASS_INACTIVE`, `NOT_ONLINE` …).
2656
+ * `holds`: karttan şu an bir online siparişe ayrılmış tutarlar ve en geç ne zaman döneceği ("₺40,00 bir online siparişe ayrıldı…" satırı). `codes`: son 7 günün kodları, kodun kendisi olmadan.
2657
+ *
2658
+ * **Kimlik:** kart sahibi oturumu.
2659
+ *
2660
+ * `GET /v1/holder/cards/{serial}/checkout-codes`
2661
+ *
2662
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-holderCheckoutCodes | API referansı}
2663
+ */
2664
+ holderCheckoutCodes(args) {
2665
+ return this._call('holderCheckoutCodes', args);
2666
+ }
2667
+ /**
2668
+ * Online alışveriş kodu oluştur
2669
+ *
2670
+ * Kart için tek kullanımlık bir ödeme kodu (`RW-XXXX-XXXX`) oluşturur; mağazanın ödeme adımında kupon alanına yazılır. 15 dakika içinde kullanılmaya başlanmalı, 45 dakika içinde bir siparişe bağlanmalıdır; yalnız işletmenin kendi mağazalarında geçer. Kod oluşturmak değer ayırmaz: ayırma sipariş verilince yapılır.
2671
+ * - `amountMinor`: yalnız hediye kartı ve cashback — kodun en fazla düşebileceği tutar; verilmezse kullanılabilir bakiyenin tamamı.
2672
+ * - Kod **yalnız bu yanıtta** gelir. Karta bir kodun oluşturulduğu, kartı tutan hesapların diğer cihazlarına İşlem bildirimiyle söylenir.
2673
+ * - Sınırlar: kart başına 3 açık kod (`TOO_MANY_CODES`), saatte 10 (`RATE_LIMITED`).
2674
+ *
2675
+ * **Kimlik:** kart sahibi oturumu.
2676
+ *
2677
+ * `POST /v1/holder/cards/{serial}/checkout-codes`
2678
+ *
2679
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-mintHolderCheckoutCode | API referansı}
2680
+ */
2681
+ mintHolderCheckoutCode(args) {
2682
+ return this._call('mintHolderCheckoutCode', args);
2683
+ }
2684
+ /**
2685
+ * Kodu iptal et
2686
+ *
2687
+ * Açık bir kodu hemen geçersiz kılar (iptal edilmiş kodu tekrar iptal etmek de 204). Bir siparişe bağlanmış kod iptal edilemez (`409 CODE_ATTACHED`): sipariş iptal edilirse ayrılan tutar karta kendiliğinden döner.
2688
+ *
2689
+ * **Kimlik:** kart sahibi oturumu.
2690
+ *
2691
+ * `DELETE /v1/holder/cards/{serial}/checkout-codes/{id}`
2692
+ *
2693
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-cancelHolderCheckoutCode | API referansı}
2694
+ */
2695
+ cancelHolderCheckoutCode(args) {
2696
+ return this._call('cancelHolderCheckoutCode', args);
2697
+ }
2341
2698
  // ------------------------------------------------------------ Ekip
2342
2699
  /**
2343
2700
  * Ekip
@@ -2613,7 +2970,7 @@ export class RewloyMethods {
2613
2970
  /**
2614
2971
  * Webhook'lar
2615
2972
  *
2616
- * **Kimlik:** ekip oturumu.
2973
+ * **Kimlik:** ekip oturumu, API anahtarı.
2617
2974
  *
2618
2975
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2619
2976
  *
@@ -2627,9 +2984,12 @@ export class RewloyMethods {
2627
2984
  /**
2628
2985
  * Webhook ekle
2629
2986
  *
2630
- * Seçilen olaylar bu adrese imzalı olarak gönderilir; `secret` **yalnız bu yanıtta** döner (imzayı doğrulamak için saklayın). Canlı ortamda adres https olmalı ve iç ağa çıkmamalı. En fazla 10 etkin webhook. Yeni webhook bundan sonraki olayları alır, geçmişi değil.
2987
+ * Seçilen olaylar bu adrese imzalı olarak gönderilir; `secret` **yalnız bu yanıtta** döner (imzayı doğrulamak için saklayın). En fazla 10 etkin webhook. Yeni webhook bundan sonraki olayları alır, geçmişi değil.
2988
+ * - **Adres:** herkese açık bir **https** adresi; iç ağ adresleri (localhost, 127.0.0.1, 10.x, 172.16–31.x, 192.168.x…) ve http kabul edilmez (`422 BAD_WEBHOOK_URL`). Kural **test ortamında da aynıdır**: teslimleri Rewloy'un sunucuları yapar ve sizin bilgisayarınıza ulaşamaz. Yerel geliştirmede sunucunuzu bir tünelle açın (ör. `cloudflared tunnel --url http://localhost:3000` ya da `ngrok http 3000`) ve tünelin https adresini verin. Teslim anında adres yeniden çözülür ve denetlenir.
2989
+ * - **API anahtarıyla** (ADR 182): `webhooks.manage` yetkisi taşıyan anahtar webhook ekler, açar, kapatır, deneme olayı gönderir ve teslimleri okur. Anahtar yalnız kendisinin okuyabildiği olayları bir adrese gönderebilir: webhook işletmenin her şubesinin ve her programının olaylarını taşıdığı için anahtarın **her şubede ve her programda** `passes.read` yetkisi olmalıdır (yoksa `403 FORBIDDEN`). Her değişiklik, ekip üyesininki gibi, anahtar adına kaydedilir (`GET /v1/activity/access`). Anahtarın eklediği webhook anahtardan uzun yaşamaz: anahtar kaldırılınca, süresi dolunca ya da yetkisi daralınca kendiliğinden kapanır (`createdByKey`, `disabledReason`).
2990
+ * - **10 etkin webhook** sınırı işletme başınadır: kişilerin ve bütün anahtarların eklediği etkin webhook'lar birlikte sayılır (`409 LIMIT`).
2631
2991
  *
2632
- * **Kimlik:** ekip oturumu.
2992
+ * **Kimlik:** ekip oturumu, API anahtarı.
2633
2993
  *
2634
2994
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2635
2995
  *
@@ -2643,7 +3003,7 @@ export class RewloyMethods {
2643
3003
  /**
2644
3004
  * Bir webhook
2645
3005
  *
2646
- * **Kimlik:** ekip oturumu.
3006
+ * **Kimlik:** ekip oturumu, API anahtarı.
2647
3007
  *
2648
3008
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2649
3009
  *
@@ -2657,9 +3017,9 @@ export class RewloyMethods {
2657
3017
  /**
2658
3018
  * Aç ya da kapat
2659
3019
  *
2660
- * Kapalıyken olaylar gönderilmez; yeniden açılınca açıldığı andan sonraki olaylar gelir ve başarısızlık sayacı sıfırlanır.
3020
+ * Kapalıyken olaylar gönderilmez; yeniden açılınca açıldığı andan sonraki olaylar gelir ve başarısızlık sayacı sıfırlanır. Bir API anahtarı yalnız olaylarını okuyabildiği bir webhook'u açabilir; yalnız kendi eklediği webhook'ları kapatabilir, başkasınınkini kapatmak için her yerde `passes.read` gerekir (`403 FORBIDDEN`, ADR 182). Bir anahtarın eklediği kapalı bir webhook'u bir kişi açarsa webhook o kişinin olur.
2661
3021
  *
2662
- * **Kimlik:** ekip oturumu.
3022
+ * **Kimlik:** ekip oturumu, API anahtarı.
2663
3023
  *
2664
3024
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2665
3025
  *
@@ -2675,7 +3035,7 @@ export class RewloyMethods {
2675
3035
  *
2676
3036
  * Yeniden eskiye: olay, durum, deneme sayısı, son HTTP durumu ya da hata, bekleyenlerde bir sonraki deneme.
2677
3037
  *
2678
- * **Kimlik:** ekip oturumu.
3038
+ * **Kimlik:** ekip oturumu, API anahtarı.
2679
3039
  *
2680
3040
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2681
3041
  *
@@ -2689,9 +3049,9 @@ export class RewloyMethods {
2689
3049
  /**
2690
3050
  * Deneme olayı gönder
2691
3051
  *
2692
- * Sıraya bir `webhook.test` olayı koyar; birkaç saniye içinde gönderilir. Sonucu teslimler listesinde görün.
3052
+ * Sıraya bir `webhook.test` olayı koyar; birkaç saniye içinde gönderilir (kart verisi taşımaz: `{ "type": "webhook.test", "data": { "message": … } }`, test ortamında `"test": true`). Sonucu teslimler listesinde (`GET /v1/developers/webhooks/{id}/deliveries`) görün. Bir API anahtarı yalnız kendi eklediği webhook'a deneme gönderir; başkasınınkine her yerde `passes.read` ile (`403 FORBIDDEN`).
2693
3053
  *
2694
- * **Kimlik:** ekip oturumu.
3054
+ * **Kimlik:** ekip oturumu, API anahtarı.
2695
3055
  *
2696
3056
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2697
3057
  *
@@ -3307,6 +3667,7 @@ export class RewloyMethods {
3307
3667
  * E-posta ekle: kod gönder
3308
3668
  *
3309
3669
  * Adrese 6 haneli bir kod gider (15 dakika). Kodu bu yanıttaki `request` ile `POST /v1/holder/identities/email/verify` gönderin. Doğrulanan adresle başka işletmelerden aldığınız kartlar da hesaba gelir. IP başına 15 dakikada 12, hesap başına saatte 10.
3670
+ * - **Idempotency-Key** (isteğe bağlı, önerilir; 8–64 karakter, her yeni istek için yeni bir UUID): aynı anahtar ve aynı gövdeyle tekrar yeni kod GÖNDERMEZ, ilk yanıtı (aynı `request`) `Idempotent-Replayed: true` ile döndürür ve sınırlardan düşmez — bağlantısı kopan uygulama güvenle yineler. Aynı anahtar başka bir gövdeyle `422 IDEMPOTENCY_KEY_REUSED`; ilk istek sürerken `409 IDEMPOTENCY_IN_PROGRESS` (bir şey gönderilmez). Yanıt şifreli saklanır, 7 gün tekrar edilir; kodun kendisi 15 dakika geçerlidir, yeni kod için yeni anahtar gönderin. Oturumsuz çağrıda anahtar istemcinin IP adresine bağlıdır. Başlık yoksa her çağrı yeni bir kod ve yeni bir `request` demektir.
3310
3671
  *
3311
3672
  * **Kimlik:** kart sahibi oturumu.
3312
3673
  *
@@ -3340,6 +3701,7 @@ export class RewloyMethods {
3340
3701
  * - Yalnız Türkiye cep telefonu numaraları (`+90 5…`); değilse `400 INVALID_PHONE`. Telefonla giriş bu ortamda açık değilse `501 NOT_ENABLED`. `channel` verilmezse şu an açık olan ilk yol (önce WhatsApp); istenen yol açık değilse `501 NOT_ENABLED`, bugünkü bütçesi dolduysa `503 PHONE_BUSY` (`details.channels`: şu an açık olanlar).
3341
3702
  * - Eklenen numarayla bundan sonra girilir ve numarayla katılınan kartlar bu hesaba gelir; daha önce başka biri o numarayla katıldıysa o kartlar gelmez (numaralar el değiştirir).
3342
3703
  * - Bir numaraya saatte 3, günde 6 kod gider, WhatsApp ve SMS birlikte (fazlası sessizce gönderilmez). IP başına saatte 10, hesap başına saatte 10.
3704
+ * - **Idempotency-Key** (isteğe bağlı, önerilir; 8–64 karakter, her yeni istek için yeni bir UUID): aynı anahtar ve aynı gövdeyle tekrar yeni kod GÖNDERMEZ, ilk yanıtı (aynı `request`) `Idempotent-Replayed: true` ile döndürür ve sınırlardan düşmez — bağlantısı kopan uygulama güvenle yineler. Aynı anahtar başka bir gövdeyle `422 IDEMPOTENCY_KEY_REUSED`; ilk istek sürerken `409 IDEMPOTENCY_IN_PROGRESS` (bir şey gönderilmez). Yanıt şifreli saklanır, 7 gün tekrar edilir; kodun kendisi 15 dakika geçerlidir, yeni kod için yeni anahtar gönderin. Oturumsuz çağrıda anahtar istemcinin IP adresine bağlıdır. Başlık yoksa her çağrı yeni bir kod ve yeni bir `request` demektir.
3343
3705
  *
3344
3706
  * **Kimlik:** kart sahibi oturumu.
3345
3707
  *
@@ -3404,6 +3766,7 @@ export class RewloyMethods {
3404
3766
  * Hesabın bir e-postasının ya da numarasının (`GET /v1/holder/account` listesindeki kimliği) yerine yenisi (ADR 170): adrese `email`, numaraya `phone` (aynı türden). Yeniye 6 haneli bir kod gider; kodu bu yanıttaki `request` ile `POST /v1/holder/identities/{id}/replace/verify` gönderin.
3405
3767
  * - Uygulamanın oturumu cihazın kanıtıdır (web'deki cihaz anahtarının yerine).
3406
3768
  * - Yeni adres ya da numara eskisiyle aynıysa ya da zaten bu hesabınsa `409 IDENT_SAME`. Numara için telefonla giriş açık değilse `501 NOT_ENABLED`; `channel` ve sınırlar `POST /v1/holder/identities/phone` gibidir. Hesap başına saatte 10 (ekleme ve değiştirme birlikte).
3769
+ * - **Idempotency-Key** (isteğe bağlı, önerilir; 8–64 karakter, her yeni istek için yeni bir UUID): aynı anahtar ve aynı gövdeyle tekrar yeni kod GÖNDERMEZ, ilk yanıtı (aynı `request`) `Idempotent-Replayed: true` ile döndürür ve sınırlardan düşmez — bağlantısı kopan uygulama güvenle yineler. Aynı anahtar başka bir gövdeyle `422 IDEMPOTENCY_KEY_REUSED`; ilk istek sürerken `409 IDEMPOTENCY_IN_PROGRESS` (bir şey gönderilmez). Yanıt şifreli saklanır, 7 gün tekrar edilir; kodun kendisi 15 dakika geçerlidir, yeni kod için yeni anahtar gönderin. Oturumsuz çağrıda anahtar istemcinin IP adresine bağlıdır. Başlık yoksa her çağrı yeni bir kod ve yeni bir `request` demektir.
3407
3770
  *
3408
3771
  * **Kimlik:** kart sahibi oturumu.
3409
3772
  *
@@ -3749,6 +4112,7 @@ export class RewloyMethods {
3749
4112
  * - İsteğe bağlı olarak yalnız hesabın sahibinin bilebileceği bilgiler talebi güçlendirir: kart numaraları (`cards`, en çok 5), kartların olduğu işletmeler (`businesses`, en çok 5), kartın son kullanıldığı zaman (`lastVisit`).
3750
4113
  * - `previousToken`: bu kurulumun daha önceki `rwh_` oturumu (süresi dolmuş olsa da): kurulumun hesaba yeni olmadığını söyler.
3751
4114
  * - Yanıt eski adresin ya da numaranın kayıtlı olup olmadığını **söylemez**. Sınırlar: IP başına saatte 5 talep, aynı eski adres ya da numara için günde 5; kod sınırları `POST /v1/holder/login` gibidir. Telefonla giriş açık değilse numara `501 NOT_ENABLED`.
4115
+ * - **Idempotency-Key** (isteğe bağlı, önerilir; 8–64 karakter, her yeni istek için yeni bir UUID): aynı anahtar ve aynı gövdeyle tekrar yeni kod GÖNDERMEZ, ilk yanıtı (aynı `request`) `Idempotent-Replayed: true` ile döndürür ve sınırlardan düşmez — bağlantısı kopan uygulama güvenle yineler. Aynı anahtar başka bir gövdeyle `422 IDEMPOTENCY_KEY_REUSED`; ilk istek sürerken `409 IDEMPOTENCY_IN_PROGRESS` (bir şey gönderilmez). Yanıt şifreli saklanır, 7 gün tekrar edilir; kodun kendisi 15 dakika geçerlidir, yeni kod için yeni anahtar gönderin. Oturumsuz çağrıda anahtar istemcinin IP adresine bağlıdır. Başlık yoksa her çağrı yeni bir kod ve yeni bir `request` demektir.
3752
4116
  *
3753
4117
  * **Kimlik:** kimlik gerekmez.
3754
4118
  *