@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.
@@ -8,9 +8,11 @@ export declare abstract class RewloyMethods {
8
8
  /**
9
9
  * Kart ver
10
10
  *
11
- * 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.
11
+ * 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.
12
12
  * - **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`).
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`).
13
+ * - **`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.
14
+ * - **`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`.
15
+ * - **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.
14
16
  *
15
17
  * **Kimlik:** API anahtarı, ekip oturumu.
16
18
  *
@@ -24,7 +26,7 @@ export declare abstract 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
  *
@@ -38,7 +40,7 @@ export declare abstract class RewloyMethods {
38
40
  /**
39
41
  * Kartın bir şubedeki kasa kuralları
40
42
  *
41
- * 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).
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). Şube kartın işletmesinin silinmemiş bir şubesi olmalıdır, değilse `404 LOCATION_NOT_FOUND` (kasa işlemleri gibi).
42
44
  *
43
45
  * **Kimlik:** API anahtarı, ekip oturumu.
44
46
  *
@@ -52,7 +54,7 @@ export declare abstract class RewloyMethods {
52
54
  /**
53
55
  * Kasada işlem
54
56
  *
55
- * 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.
57
+ * 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.
56
58
  * | action | kart | gerekli alan |
57
59
  * |---|---|---|
58
60
  * | `earn-stamps` | damga | `count` (varsayılan 1) |
@@ -77,6 +79,57 @@ export declare abstract class RewloyMethods {
77
79
  * @see {@link https://rewloy.com/gelistiriciler/api#op-passAction | API referansı}
78
80
  */
79
81
  passAction(args: T.PassActionArgs): Promise<T.PassActionData>;
82
+ /**
83
+ * Satışı karta yaz
84
+ *
85
+ * 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.
86
+ * | kart | satış ne yazar | `applied` |
87
+ * |---|---|---|
88
+ * | damga | 1 damga (kasa kampanyası katlar) | `stamps` |
89
+ * | puan | programın oranıyla, her 1 birim için `earnRate` puan | `points` |
90
+ * | VIP | 1 ziyaret, ziyaret penceresinde bir kez | `visit` |
91
+ * | cashback | toplamın `cashbackRate` yüzdesi, kuruş, aşağı yuvarlanır (ör. 45,50 × %5 = 2,27) | `cashback` |
92
+ * | hediye kartı, kupon, indirim | hiçbir şey (harcamak ve kullanmak `POST /v1/passes/{serial}/actions` ile) | `none` |
93
+ *
94
+ * 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.
95
+ * - **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.
96
+ * - **`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.
97
+ * - Ş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.
98
+ * - **`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.
99
+ * - **Geri almak:** `POST /v1/passes/{serial}/sale/reverse` satışın yazdığını bir kez geri alır.
100
+ *
101
+ * **Kimlik:** API anahtarı, ekip oturumu.
102
+ *
103
+ * **Yetki:** `scan.use` — Tarayıcıyı kullanma.
104
+ *
105
+ * Salt-okunur hesapta da çalışır.
106
+ *
107
+ * `POST /v1/passes/{serial}/sale`
108
+ *
109
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-recordSale | API referansı}
110
+ */
111
+ recordSale(args: T.RecordSaleArgs): Promise<T.RecordSaleData>;
112
+ /**
113
+ * Satışı geri al
114
+ *
115
+ * İ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.
116
+ * - **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.
117
+ * - **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.
118
+ * - **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`.
119
+ * - **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.
120
+ * - **`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.
121
+ *
122
+ * **Kimlik:** API anahtarı, ekip oturumu.
123
+ *
124
+ * **Yetki:** `scan.use` — Tarayıcıyı kullanma.
125
+ *
126
+ * Salt-okunur hesapta da çalışır.
127
+ *
128
+ * `POST /v1/passes/{serial}/sale/reverse`
129
+ *
130
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-reverseSale | API referansı}
131
+ */
132
+ reverseSale(args: T.ReverseSaleArgs): Promise<T.ReverseSaleData>;
80
133
  /**
81
134
  * Katılım formu
82
135
  *
@@ -137,6 +190,18 @@ export declare abstract class RewloyMethods {
137
190
  * @see {@link https://rewloy.com/gelistiriciler/api#op-emailCardLink | API referansı}
138
191
  */
139
192
  emailCardLink(args: T.EmailCardLinkArgs): Promise<T.EmailCardLinkData>;
193
+ /**
194
+ * Sürüm
195
+ *
196
+ * 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.
197
+ *
198
+ * **Kimlik:** kimlik gerekmez, API anahtarı, ekip oturumu, kart sahibi oturumu.
199
+ *
200
+ * `GET /v1/meta`
201
+ *
202
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-getMeta | API referansı}
203
+ */
204
+ getMeta(args?: T.GetMetaArgs): Promise<T.GetMetaData>;
140
205
  /**
141
206
  * OpenAPI 3.1 belgesi
142
207
  *
@@ -190,7 +255,7 @@ export declare abstract class RewloyMethods {
190
255
  /**
191
256
  * Kim olarak bağlıyım?
192
257
  *
193
- * 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`.
258
+ * 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`.
194
259
  *
195
260
  * **Kimlik:** ekip oturumu, API anahtarı.
196
261
  *
@@ -209,6 +274,7 @@ export declare abstract class RewloyMethods {
209
274
  * - `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.
210
275
  * - `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.
211
276
  * - `deviceName`: açılacak oturumun Cihazlarım'daki adı.
277
+ * - **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.
212
278
  * - **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.
213
279
  *
214
280
  * **Kimlik:** kimlik gerekmez.
@@ -385,7 +451,7 @@ export declare abstract class RewloyMethods {
385
451
  /**
386
452
  * Davet
387
453
  *
388
- * 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).
454
+ * 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.
389
455
  *
390
456
  * **Kimlik:** kimlik gerekmez.
391
457
  *
@@ -397,9 +463,14 @@ export declare abstract class RewloyMethods {
397
463
  /**
398
464
  * Daveti kabul et
399
465
  *
400
- * 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.
466
+ * 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):
467
+ * - **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`.
468
+ * - **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).
469
+ * - IP başına 15 dakikada 20 deneme.
401
470
  *
402
- * **Kimlik:** kimlik gerekmez.
471
+ * **Kimlik:** kimlik gerekmez, ekip oturumu.
472
+ *
473
+ * Salt-okunur hesapta da çalışır.
403
474
  *
404
475
  * `POST /v1/auth/invites/{code}/accept`
405
476
  *
@@ -795,7 +866,7 @@ export declare abstract class RewloyMethods {
795
866
  /**
796
867
  * Müşteriler, kart kart
797
868
  *
798
- * Aynı süzgeçlerle, her satırda bir kart (panelde "kart kart" görünüm).
869
+ * 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.
799
870
  *
800
871
  * **Kimlik:** API anahtarı, ekip oturumu.
801
872
  *
@@ -1009,7 +1080,7 @@ export declare abstract class RewloyMethods {
1009
1080
  * | tür | alanlar |
1010
1081
  * |---|---|
1011
1082
  * | hediye kartı | `valueMinor` zorunlu (100 – 100.000.000 kuruş); kullanım her zaman sınırsız, bakiye bitene kadar |
1012
- * | kupon | ya `offerText` (ör. "1 tatlı") ya `valueMinor` (100 – 10.000.000 kuruş indirim); `usage` |
1083
+ * | 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) |
1013
1084
  * | indirim kartı | `percent` (yoksa programın oranı); `usage` |
1014
1085
  *
1015
1086
  * `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.
@@ -1541,7 +1612,7 @@ export declare abstract class RewloyMethods {
1541
1612
  /**
1542
1613
  * Ana sayfa
1543
1614
  *
1544
- * 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.
1615
+ * 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.
1545
1616
  *
1546
1617
  * **Kimlik:** API anahtarı, ekip oturumu.
1547
1618
  *
@@ -1555,7 +1626,7 @@ export declare abstract class RewloyMethods {
1555
1626
  /**
1556
1627
  * Analitik
1557
1628
  *
1558
- * 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.
1629
+ * 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.
1559
1630
  *
1560
1631
  * **Kimlik:** API anahtarı, ekip oturumu.
1561
1632
  *
@@ -1569,7 +1640,7 @@ export declare abstract class RewloyMethods {
1569
1640
  /**
1570
1641
  * İşlem kaydı: kasa
1571
1642
  *
1572
- * 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.
1643
+ * 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.
1573
1644
  *
1574
1645
  * **Kimlik:** API anahtarı, ekip oturumu.
1575
1646
  *
@@ -1597,7 +1668,7 @@ export declare abstract class RewloyMethods {
1597
1668
  /**
1598
1669
  * Canlı akış (SSE)
1599
1670
  *
1600
- * 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.
1671
+ * 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.
1601
1672
  *
1602
1673
  * **Kimlik:** API anahtarı, ekip oturumu.
1603
1674
  *
@@ -1994,6 +2065,10 @@ export declare abstract class RewloyMethods {
1994
2065
  * - Kod **yalnız bu yanıtta** görünür; Rewloy yalnız özetini saklar. 15 dakika geçerlidir.
1995
2066
  * - 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.
1996
2067
  * - Kural alanları `POST /v1/shops` ile aynıdır. En fazla 5 bağlantı ve aynı anda en fazla 5 bekleyen kod.
2068
+ * - **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:
2069
+ * - `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.
2070
+ * - `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.
2071
+ * - 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ı).
1997
2072
  *
1998
2073
  * **Kimlik:** ekip oturumu.
1999
2074
  *
@@ -2023,7 +2098,7 @@ export declare abstract class RewloyMethods {
2023
2098
  *
2024
2099
  * 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.
2025
2100
  * - 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.
2026
- * - 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`).
2101
+ * - 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`).
2027
2102
  * - `shopName` anahtarın panelde görünen adına eklenir ("WooCommerce · …"). IP başına 10 dakikada 20 istek.
2028
2103
  *
2029
2104
  * **Kimlik:** kimlik gerekmez.
@@ -2033,6 +2108,251 @@ export declare abstract class RewloyMethods {
2033
2108
  * @see {@link https://rewloy.com/gelistiriciler/api#op-connectShop | API referansı}
2034
2109
  */
2035
2110
  connectShop(args: T.ConnectShopArgs): Promise<T.ConnectShopData>;
2111
+ /**
2112
+ * Eklentinin yetkilerini değiştir
2113
+ *
2114
+ * 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.
2115
+ * - 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.
2116
+ * - Bağlantıyı eklenti kurmadıysa ya da eklentinin anahtarı iptal edildiyse `409 NO_PLUGIN_KEY`.
2117
+ * - **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:
2118
+ * - `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.
2119
+ * - `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.
2120
+ * - 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ı).
2121
+ *
2122
+ * **Kimlik:** ekip oturumu.
2123
+ *
2124
+ * **Yetki:** `shops.manage` — Mağaza bağlantısı yönetimi.
2125
+ *
2126
+ * `PUT /v1/shops/{id}/plugin-abilities`
2127
+ *
2128
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-setShopPluginAbilities | API referansı}
2129
+ */
2130
+ setShopPluginAbilities(args: T.SetShopPluginAbilitiesArgs): Promise<T.SetShopPluginAbilitiesData>;
2131
+ /**
2132
+ * Ödeme adımındaki kodu sor
2133
+ *
2134
+ * 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.
2135
+ * - `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.
2136
+ * - `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.
2137
+ * - Bilinmeyen, iptal edilmiş ve başka işletmenin kodu aynı `404 CODE_INVALID` yanıtını alır.
2138
+ * - 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.
2139
+ * - `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`.
2140
+ * - `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.
2141
+ * - 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.
2142
+ *
2143
+ * **Kimlik:** API anahtarı, ekip oturumu.
2144
+ *
2145
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2146
+ *
2147
+ * Salt-okunur hesapta da çalışır.
2148
+ *
2149
+ * `POST /v1/shops/{id}/checkout-codes/quote`
2150
+ *
2151
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-quoteCheckoutCode | API referansı}
2152
+ */
2153
+ quoteCheckoutCode(args: T.QuoteCheckoutCodeArgs): Promise<T.QuoteCheckoutCodeData>;
2154
+ /**
2155
+ * Siparişin kod kullanımları
2156
+ *
2157
+ * Bir siparişin Rewloy kodlarının şimdiki hâli, ilk kullanılan önce. `shops.read` ister.
2158
+ *
2159
+ * **Kimlik:** API anahtarı, ekip oturumu.
2160
+ *
2161
+ * **Yetki:** `shops.read` — Mağaza bağlantılarını görüntüleme.
2162
+ *
2163
+ * `GET /v1/shops/{id}/orders/{orderId}/redemptions`
2164
+ *
2165
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-listOrderRedemptions | API referansı}
2166
+ */
2167
+ listOrderRedemptions(args: T.ListOrderRedemptionsArgs): Promise<T.ListOrderRedemptionsData>;
2168
+ /**
2169
+ * Siparişe kodu bağla ve değeri ayır
2170
+ *
2171
+ * 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.
2172
+ * - `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.
2173
+ * - `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.
2174
+ * - 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.
2175
+ * - 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).
2176
+ * - 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.
2177
+ *
2178
+ * **Kimlik:** API anahtarı, ekip oturumu.
2179
+ *
2180
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2181
+ *
2182
+ * Salt-okunur hesapta da çalışır.
2183
+ *
2184
+ * `POST /v1/shops/{id}/orders/{orderId}/redemptions`
2185
+ *
2186
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-holdCheckoutCode | API referansı}
2187
+ */
2188
+ holdCheckoutCode(args: T.HoldCheckoutCodeArgs): Promise<T.HoldCheckoutCodeData>;
2189
+ /**
2190
+ * Ödenen siparişin ayırmasını düş
2191
+ *
2192
+ * 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.
2193
+ * - `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ı.
2194
+ * - 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.
2195
+ * - 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`).
2196
+ * - 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.
2197
+ *
2198
+ * **Kimlik:** API anahtarı, ekip oturumu.
2199
+ *
2200
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2201
+ *
2202
+ * Salt-okunur hesapta da çalışır.
2203
+ *
2204
+ * `POST /v1/shops/{id}/orders/{orderId}/capture`
2205
+ *
2206
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-captureCheckoutOrder | API referansı}
2207
+ */
2208
+ captureCheckoutOrder(args: T.CaptureCheckoutOrderArgs): Promise<T.CaptureCheckoutOrderData>;
2209
+ /**
2210
+ * Siparişin ayırmasını bırak
2211
+ *
2212
+ * 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.
2213
+ *
2214
+ * **Kimlik:** API anahtarı, ekip oturumu.
2215
+ *
2216
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2217
+ *
2218
+ * Salt-okunur hesapta da çalışır.
2219
+ *
2220
+ * `POST /v1/shops/{id}/orders/{orderId}/release`
2221
+ *
2222
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-releaseCheckoutOrder | API referansı}
2223
+ */
2224
+ releaseCheckoutOrder(args: T.ReleaseCheckoutOrderArgs): Promise<T.ReleaseCheckoutOrderData>;
2225
+ /**
2226
+ * İade edilen siparişin tutarını karta geri yükle
2227
+ *
2228
+ * - **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.
2229
+ * - **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.
2230
+ * - 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.
2231
+ *
2232
+ * **Kimlik:** API anahtarı, ekip oturumu.
2233
+ *
2234
+ * **Yetki:** `shops.redeem` — Online ödemede kart kodu kullanımı.
2235
+ *
2236
+ * Salt-okunur hesapta da çalışır.
2237
+ *
2238
+ * `POST /v1/shops/{id}/orders/{orderId}/refund`
2239
+ *
2240
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-refundCheckoutOrder | API referansı}
2241
+ */
2242
+ refundCheckoutOrder(args: T.RefundCheckoutOrderArgs): Promise<T.RefundCheckoutOrderData>;
2243
+ /**
2244
+ * Bağlantının kod kullanımları
2245
+ *
2246
+ * 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.
2247
+ *
2248
+ * **Kimlik:** API anahtarı, ekip oturumu.
2249
+ *
2250
+ * **Yetki:** `shops.read` — Mağaza bağlantılarını görüntüleme.
2251
+ *
2252
+ * `GET /v1/shops/{id}/redemptions`
2253
+ *
2254
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-listShopRedemptions | API referansı}
2255
+ */
2256
+ listShopRedemptions(args: T.ListShopRedemptionsArgs): Promise<Page<T.ListShopRedemptionsItem>>;
2257
+ /**
2258
+ * Ayrılmış tutarı elle bırak
2259
+ *
2260
+ * İş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).
2261
+ *
2262
+ * **Kimlik:** ekip oturumu.
2263
+ *
2264
+ * **Yetki:** `scan.adjust` — Manuel bakiye düzeltme.
2265
+ *
2266
+ * `POST /v1/shops/{id}/redemptions/{redemptionId}/release`
2267
+ *
2268
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-releaseShopRedemption | API referansı}
2269
+ */
2270
+ releaseShopRedemption(args: T.ReleaseShopRedemptionArgs): Promise<T.ReleaseShopRedemptionData>;
2271
+ /**
2272
+ * Elle iade
2273
+ *
2274
+ * 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.
2275
+ *
2276
+ * **Kimlik:** ekip oturumu.
2277
+ *
2278
+ * **Yetki:** `scan.adjust` — Manuel bakiye düzeltme.
2279
+ *
2280
+ * `POST /v1/shops/{id}/redemptions/{redemptionId}/refund`
2281
+ *
2282
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-refundShopRedemption | API referansı}
2283
+ */
2284
+ refundShopRedemption(args: T.RefundShopRedemptionArgs): Promise<T.RefundShopRedemptionData>;
2285
+ /**
2286
+ * Ödeme adımı ayarları
2287
+ *
2288
+ * 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.
2289
+ * - `tax`: kart değerinin siparişe nasıl uygulanacağı (eklenti uygular). `refundReverses`: iade edilen siparişin kazancı. `holdDays`: 1–30.
2290
+ * - `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.
2291
+ *
2292
+ * **Kimlik:** API anahtarı, ekip oturumu.
2293
+ *
2294
+ * **Yetki:** `shops.manage` — Mağaza bağlantısı yönetimi.
2295
+ *
2296
+ * `PATCH /v1/shops/{id}/settings`
2297
+ *
2298
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-setShopSettings | API referansı}
2299
+ */
2300
+ setShopSettings(args: T.SetShopSettingsArgs): Promise<T.SetShopSettingsData>;
2301
+ /**
2302
+ * Eklentinin anahtarının kabul edebileceği programlar (tavan)
2303
+ *
2304
+ * 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.
2305
+ * - 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.
2306
+ *
2307
+ * **Kimlik:** ekip oturumu.
2308
+ *
2309
+ * **Yetki:** `shops.manage` — Mağaza bağlantısı yönetimi.
2310
+ *
2311
+ * `PUT /v1/shops/{id}/ceiling`
2312
+ *
2313
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-setShopCeiling | API referansı}
2314
+ */
2315
+ setShopCeiling(args: T.SetShopCeilingArgs): Promise<T.SetShopCeilingData>;
2316
+ /**
2317
+ * Online alışveriş kodları
2318
+ *
2319
+ * "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` …).
2320
+ * `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.
2321
+ *
2322
+ * **Kimlik:** kart sahibi oturumu.
2323
+ *
2324
+ * `GET /v1/holder/cards/{serial}/checkout-codes`
2325
+ *
2326
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-holderCheckoutCodes | API referansı}
2327
+ */
2328
+ holderCheckoutCodes(args: T.HolderCheckoutCodesArgs): Promise<T.HolderCheckoutCodesData>;
2329
+ /**
2330
+ * Online alışveriş kodu oluştur
2331
+ *
2332
+ * 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.
2333
+ * - `amountMinor`: yalnız hediye kartı ve cashback — kodun en fazla düşebileceği tutar; verilmezse kullanılabilir bakiyenin tamamı.
2334
+ * - 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.
2335
+ * - Sınırlar: kart başına 3 açık kod (`TOO_MANY_CODES`), saatte 10 (`RATE_LIMITED`).
2336
+ *
2337
+ * **Kimlik:** kart sahibi oturumu.
2338
+ *
2339
+ * `POST /v1/holder/cards/{serial}/checkout-codes`
2340
+ *
2341
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-mintHolderCheckoutCode | API referansı}
2342
+ */
2343
+ mintHolderCheckoutCode(args: T.MintHolderCheckoutCodeArgs): Promise<T.MintHolderCheckoutCodeData>;
2344
+ /**
2345
+ * Kodu iptal et
2346
+ *
2347
+ * 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.
2348
+ *
2349
+ * **Kimlik:** kart sahibi oturumu.
2350
+ *
2351
+ * `DELETE /v1/holder/cards/{serial}/checkout-codes/{id}`
2352
+ *
2353
+ * @see {@link https://rewloy.com/gelistiriciler/api#op-cancelHolderCheckoutCode | API referansı}
2354
+ */
2355
+ cancelHolderCheckoutCode(args: T.CancelHolderCheckoutCodeArgs): Promise<void>;
2036
2356
  /**
2037
2357
  * Ekip
2038
2358
  *
@@ -2272,7 +2592,7 @@ export declare abstract class RewloyMethods {
2272
2592
  /**
2273
2593
  * Webhook'lar
2274
2594
  *
2275
- * **Kimlik:** ekip oturumu.
2595
+ * **Kimlik:** ekip oturumu, API anahtarı.
2276
2596
  *
2277
2597
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2278
2598
  *
@@ -2284,9 +2604,12 @@ export declare abstract class RewloyMethods {
2284
2604
  /**
2285
2605
  * Webhook ekle
2286
2606
  *
2287
- * 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.
2607
+ * 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.
2608
+ * - **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.
2609
+ * - **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`).
2610
+ * - **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`).
2288
2611
  *
2289
- * **Kimlik:** ekip oturumu.
2612
+ * **Kimlik:** ekip oturumu, API anahtarı.
2290
2613
  *
2291
2614
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2292
2615
  *
@@ -2298,7 +2621,7 @@ export declare abstract class RewloyMethods {
2298
2621
  /**
2299
2622
  * Bir webhook
2300
2623
  *
2301
- * **Kimlik:** ekip oturumu.
2624
+ * **Kimlik:** ekip oturumu, API anahtarı.
2302
2625
  *
2303
2626
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2304
2627
  *
@@ -2310,9 +2633,9 @@ export declare abstract class RewloyMethods {
2310
2633
  /**
2311
2634
  * Aç ya da kapat
2312
2635
  *
2313
- * 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.
2636
+ * 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.
2314
2637
  *
2315
- * **Kimlik:** ekip oturumu.
2638
+ * **Kimlik:** ekip oturumu, API anahtarı.
2316
2639
  *
2317
2640
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2318
2641
  *
@@ -2326,7 +2649,7 @@ export declare abstract class RewloyMethods {
2326
2649
  *
2327
2650
  * Yeniden eskiye: olay, durum, deneme sayısı, son HTTP durumu ya da hata, bekleyenlerde bir sonraki deneme.
2328
2651
  *
2329
- * **Kimlik:** ekip oturumu.
2652
+ * **Kimlik:** ekip oturumu, API anahtarı.
2330
2653
  *
2331
2654
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2332
2655
  *
@@ -2338,9 +2661,9 @@ export declare abstract class RewloyMethods {
2338
2661
  /**
2339
2662
  * Deneme olayı gönder
2340
2663
  *
2341
- * Sıraya bir `webhook.test` olayı koyar; birkaç saniye içinde gönderilir. Sonucu teslimler listesinde görün.
2664
+ * 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`).
2342
2665
  *
2343
- * **Kimlik:** ekip oturumu.
2666
+ * **Kimlik:** ekip oturumu, API anahtarı.
2344
2667
  *
2345
2668
  * **Yetki:** `webhooks.manage` — Webhook yönetimi.
2346
2669
  *
@@ -2876,6 +3199,7 @@ export declare abstract class RewloyMethods {
2876
3199
  * E-posta ekle: kod gönder
2877
3200
  *
2878
3201
  * 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.
3202
+ * - **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.
2879
3203
  *
2880
3204
  * **Kimlik:** kart sahibi oturumu.
2881
3205
  *
@@ -2905,6 +3229,7 @@ export declare abstract class RewloyMethods {
2905
3229
  * - 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).
2906
3230
  * - 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).
2907
3231
  * - 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.
3232
+ * - **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.
2908
3233
  *
2909
3234
  * **Kimlik:** kart sahibi oturumu.
2910
3235
  *
@@ -2961,6 +3286,7 @@ export declare abstract class RewloyMethods {
2961
3286
  * 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.
2962
3287
  * - Uygulamanın oturumu cihazın kanıtıdır (web'deki cihaz anahtarının yerine).
2963
3288
  * - 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).
3289
+ * - **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.
2964
3290
  *
2965
3291
  * **Kimlik:** kart sahibi oturumu.
2966
3292
  *
@@ -3259,6 +3585,7 @@ export declare abstract class RewloyMethods {
3259
3585
  * - İ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`).
3260
3586
  * - `previousToken`: bu kurulumun daha önceki `rwh_` oturumu (süresi dolmuş olsa da): kurulumun hesaba yeni olmadığını söyler.
3261
3587
  * - 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`.
3588
+ * - **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.
3262
3589
  *
3263
3590
  * **Kimlik:** kimlik gerekmez.
3264
3591
  *