tupay 0.5.2 → 0.6.0

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.
Files changed (34) hide show
  1. package/README.md +6 -2
  2. package/dist/cjs/resources/events.d.ts +1 -1
  3. package/dist/cjs/resources/events.d.ts.map +1 -1
  4. package/dist/cjs/resources/events.js +7 -1
  5. package/dist/cjs/resources/events.js.map +1 -1
  6. package/dist/cjs/resources/payment-links.d.ts +14 -4
  7. package/dist/cjs/resources/payment-links.d.ts.map +1 -1
  8. package/dist/cjs/resources/payment-links.js +12 -4
  9. package/dist/cjs/resources/payment-links.js.map +1 -1
  10. package/dist/cjs/resources/test-helpers.d.ts +1 -1
  11. package/dist/cjs/resources/test-helpers.d.ts.map +1 -1
  12. package/dist/cjs/resources/test-helpers.js +5 -1
  13. package/dist/cjs/resources/test-helpers.js.map +1 -1
  14. package/dist/cjs/resources/webhook-endpoints.d.ts +14 -0
  15. package/dist/cjs/resources/webhook-endpoints.d.ts.map +1 -1
  16. package/dist/cjs/resources/webhook-endpoints.js +3 -1
  17. package/dist/cjs/resources/webhook-endpoints.js.map +1 -1
  18. package/dist/esm/resources/events.d.ts +1 -1
  19. package/dist/esm/resources/events.d.ts.map +1 -1
  20. package/dist/esm/resources/events.js +7 -1
  21. package/dist/esm/resources/events.js.map +1 -1
  22. package/dist/esm/resources/payment-links.d.ts +14 -4
  23. package/dist/esm/resources/payment-links.d.ts.map +1 -1
  24. package/dist/esm/resources/payment-links.js +12 -4
  25. package/dist/esm/resources/payment-links.js.map +1 -1
  26. package/dist/esm/resources/test-helpers.d.ts +1 -1
  27. package/dist/esm/resources/test-helpers.d.ts.map +1 -1
  28. package/dist/esm/resources/test-helpers.js +5 -1
  29. package/dist/esm/resources/test-helpers.js.map +1 -1
  30. package/dist/esm/resources/webhook-endpoints.d.ts +14 -0
  31. package/dist/esm/resources/webhook-endpoints.d.ts.map +1 -1
  32. package/dist/esm/resources/webhook-endpoints.js +3 -1
  33. package/dist/esm/resources/webhook-endpoints.js.map +1 -1
  34. package/package.json +1 -1
package/README.md CHANGED
@@ -220,7 +220,7 @@ tx.refundedAmountXpf // 1500 ← c'est ce champ qui fait foi
220
220
 
221
221
  ## Idempotence et reprises
222
222
 
223
- Le SDK génère une clé d'idempotence (UUID v4) sur `paymentIntents.create` et `refunds.create`. Une reprise après timeout ne débitera jamais deux fois.
223
+ Le SDK génère une clé d'idempotence (UUID v4) sur `paymentIntents.create`, `refunds.create` et `paymentLinks.create`. Une reprise après timeout ne débitera jamais deux fois, et ne créera pas un second lien.
224
224
 
225
225
  Fournissez la vôtre pour qu'un retry applicatif ultérieur retombe sur le même résultat :
226
226
 
@@ -232,7 +232,11 @@ await tupay.paymentIntents.create({
232
232
  })
233
233
  ```
234
234
 
235
- **Politique de reprise :** le SDK retente sur 429, 5xx et pannes réseau, avec backoff exponentiel et gigue (`Retry-After` respecté). Il ne retente **que** les GET et les écritures porteuses d'une clé d'idempotence — `paymentLinks.create` n'est donc jamais rejoué, une reprise créerait un second lien.
235
+ **Politique de reprise :** le SDK retente sur 429, 5xx et pannes réseau, avec backoff exponentiel et gigue (`Retry-After` respecté). Il ne retente **que** les GET et les écritures porteuses d'une clé d'idempotence.
236
+
237
+ **Deux créations n'en portent pas, à dessein :** `webhookEndpoints.create` et la création de clé API rendent un secret **une seule fois**, et l'API ne le conserve pas avec le corps mémorisé. Une reprise sous clé rendrait donc la ressource avec son secret à `null`, c'est-à-dire un endpoint que vous ne pourriez pas signer. Sans clé, une reprise crée une seconde ressource dont le secret est lisible, et vous supprimez la première. Fournissez `idempotencyKey` si vous préférez l'inverse, en connaissance de cause.
238
+
239
+ **Refus possibles.** Rejouer une clé avec un corps différent rend `409 idempotency_key_reuse` : ni l'ancien corps n'est rendu, ni le nouveau exécuté, choisissez une nouvelle clé. Une seconde requête arrivant pendant que la première s'exécute rend `409 idempotency_in_progress` : retentez à l'identique dans un instant. Les clés vivent **24 heures** ; passé ce délai, rejouer crée une nouvelle ressource.
236
240
 
237
241
  ```ts
238
242
  new Tupay(key, { maxRetries: 0, timeout: 5000 })
@@ -50,7 +50,7 @@ export declare class Events {
50
50
  * await tupay.events.resend(event.id)
51
51
  * }
52
52
  */
53
- resend(id: string): Promise<ResendResult>;
53
+ resend(id: string, idempotencyKey?: string): Promise<ResendResult>;
54
54
  /**
55
55
  * Parcourt toutes les pages, un événement à la fois.
56
56
  *
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/resources/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAA;CACxB;AAED,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;;;;;OAWG;IACG,IAAI,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAc1E;;;;;OAKG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ/C;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ/C;;;;;;;OAOG;IACI,cAAc,CACnB,MAAM,GAAE,gBAAqB,GAC5B,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;CAyB/C"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/resources/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAA;CACxB;AAED,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;;;;;OAWG;IACG,IAAI,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAc1E;;;;;OAKG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ/C;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAcxE;;;;;;;OAOG;IACI,cAAc,CACnB,MAAM,GAAE,gBAAqB,GAC5B,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;CAyB/C"}
@@ -57,10 +57,16 @@ class Events {
57
57
  * await tupay.events.resend(event.id)
58
58
  * }
59
59
  */
60
- async resend(id) {
60
+ async resend(id, idempotencyKey) {
61
+ // Aucune clé n'est générée par défaut ici, contrairement aux autres
62
+ // créations. Le rejeu d'un événement CRÉE une livraison : c'est sa
63
+ // raison d'être, et deux appels délibérés doivent en créer deux.
64
+ // Fournir une clé rend l'appel rejouable sans risque, mais c'est un
65
+ // choix de l'appelant, pas un défaut du SDK.
61
66
  const { data } = await this.client.request({
62
67
  method: 'POST',
63
68
  path: `/events/${encodeURIComponent(id)}/resend`,
69
+ idempotencyKey,
64
70
  });
65
71
  return data;
66
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/resources/events.ts"],"names":[],"mappings":";;;AAOA,0CAKoB;AAepB,MAAa,MAAM;IACY;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI,CAAC,SAA2B,EAAE;QACtC,MAAM,OAAO,GAAG,IAAA,0BAAe,EAAC;YAC9B,GAAG,MAAM;YACT,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK;SACpD,CAAC,CAAA;QACF,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB;YAChD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;SACzC,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAuB;YAC/D,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,EAAE;SAC1C,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB;YACjE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,SAAS;SACjD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,CAAC,cAAc,CACnB,SAA2B,EAAE;QAE7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAA;QACjC,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAA;QACxD,IAAI,SAA6B,CAAA;QAEjC,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC3B,GAAG,MAAM;gBACT,KAAK;gBACL,KAAK,EAAE,SAAS;gBAChB,aAAa;aACd,CAAC,CAAA;YACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,KAAK,CAAA;YAC1C,8DAA8D;YAC9D,+DAA+D;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAM;YACrC,oEAAoE;YACpE,iEAAiE;YACjE,iBAAiB;YACjB,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS;gBAAE,OAAM;YACpC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAA;YACtB,aAAa,GAAG,OAAO,CAAC,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC;CACF;AApGD,wBAoGC"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/resources/events.ts"],"names":[],"mappings":";;;AAOA,0CAKoB;AAepB,MAAa,MAAM;IACY;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI,CAAC,SAA2B,EAAE;QACtC,MAAM,OAAO,GAAG,IAAA,0BAAe,EAAC;YAC9B,GAAG,MAAM;YACT,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK;SACpD,CAAC,CAAA;QACF,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB;YAChD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;SACzC,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAuB;YAC/D,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,EAAE;SAC1C,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,cAAuB;QAC9C,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,oEAAoE;QACpE,6CAA6C;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB;YACjE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,SAAS;YAChD,cAAc;SACf,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,CAAC,cAAc,CACnB,SAA2B,EAAE;QAE7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAA;QACjC,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAA;QACxD,IAAI,SAA6B,CAAA;QAEjC,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC3B,GAAG,MAAM;gBACT,KAAK;gBACL,KAAK,EAAE,SAAS;gBAChB,aAAa;aACd,CAAC,CAAA;YACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,KAAK,CAAA;YAC1C,8DAA8D;YAC9D,+DAA+D;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAM;YACrC,oEAAoE;YACpE,iEAAiE;YACjE,iBAAiB;YACjB,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS;gBAAE,OAAM;YACpC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAA;YACtB,aAAa,GAAG,OAAO,CAAC,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC;CACF;AA1GD,wBA0GC"}
@@ -1,7 +1,12 @@
1
- import type { TupayClient } from '../client.js';
1
+ import { TupayClient } from '../client.js';
2
2
  import type { ListResult, PaymentLink } from '../types.js';
3
3
  import { type ListParams } from '../liste.js';
4
4
  export interface CreatePaymentLinkParams {
5
+ /**
6
+ * Clé d'idempotence. Omise, le SDK en génère une (UUID v4) : la
7
+ * requête devient rejouable, et une reprise ne crée pas un second lien.
8
+ */
9
+ idempotencyKey?: string;
5
10
  /** Entier XPF, entre 100 et 10 000 000. Le XPF n'a pas de centimes. */
6
11
  amountXpf: number;
7
12
  description: string;
@@ -24,9 +29,14 @@ export declare class PaymentLinks {
24
29
  /**
25
30
  * Crée un lien de paiement partageable.
26
31
  *
27
- * Non rejouable automatiquement : l'API n'accepte pas d'en-tête
28
- * d'idempotence ici, une reprise créerait un second lien. En cas de
29
- * timeout, listez avant de recréer.
32
+ * Rejouable : le SDK envoie une clé d'idempotence, générée si vous n'en
33
+ * fournissez pas. Une reprise après timeout rend le lien déjà créé au
34
+ * lieu d'en créer un second avec un second slug.
35
+ *
36
+ * L'API a longtemps ignoré cet en-tête ici, et ce commentaire disait le
37
+ * contraire de ce qu'il dit aujourd'hui. Elle l'honore depuis la
38
+ * version qui documente `Idempotency-Key` comme facultatif sur cette
39
+ * opération.
30
40
  */
31
41
  create(params: CreatePaymentLinkParams): Promise<PaymentLink>;
32
42
  retrieve(id: string): Promise<PaymentLink>;
@@ -1 +1 @@
1
- {"version":3,"file":"payment-links.d.ts","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,qBAAa,YAAY;;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;OAMG;IACG,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAS7D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ1C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAUrE,yEAAyE;IACnE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAYjD"}
1
+ {"version":3,"file":"payment-links.d.ts","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,qBAAa,YAAY;;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAW7D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ1C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAUrE,yEAAyE;IACnE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAYjD"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PaymentLinks = void 0;
4
+ const client_js_1 = require("../client.js");
4
5
  const liste_js_1 = require("../liste.js");
5
6
  class PaymentLinks {
6
7
  client;
@@ -10,15 +11,22 @@ class PaymentLinks {
10
11
  /**
11
12
  * Crée un lien de paiement partageable.
12
13
  *
13
- * Non rejouable automatiquement : l'API n'accepte pas d'en-tête
14
- * d'idempotence ici, une reprise créerait un second lien. En cas de
15
- * timeout, listez avant de recréer.
14
+ * Rejouable : le SDK envoie une clé d'idempotence, générée si vous n'en
15
+ * fournissez pas. Une reprise après timeout rend le lien déjà créé au
16
+ * lieu d'en créer un second avec un second slug.
17
+ *
18
+ * L'API a longtemps ignoré cet en-tête ici, et ce commentaire disait le
19
+ * contraire de ce qu'il dit aujourd'hui. Elle l'honore depuis la
20
+ * version qui documente `Idempotency-Key` comme facultatif sur cette
21
+ * opération.
16
22
  */
17
23
  async create(params) {
24
+ const { idempotencyKey, ...body } = params;
18
25
  const { data } = await this.client.request({
19
26
  method: 'POST',
20
27
  path: '/payment-links',
21
- body: params,
28
+ body,
29
+ idempotencyKey: idempotencyKey ?? client_js_1.TupayClient.idempotencyKey(),
22
30
  });
23
31
  return data;
24
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"payment-links.js","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":";;;AAEA,0CAKoB;AAmBpB,MAAa,YAAY;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,MAA+B;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACjD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B;YACjD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,IAAA,0BAAe,EAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,MAAe;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YAChD,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAtDD,oCAsDC"}
1
+ {"version":3,"file":"payment-links.js","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":";;;AAAA,4CAA0C;AAE1C,0CAKoB;AAwBpB,MAAa,YAAY;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,CAAC,MAA+B;QAC1C,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI;YACJ,cAAc,EAAE,cAAc,IAAI,uBAAW,CAAC,cAAc,EAAE;SAC/D,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACjD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B;YACjD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,IAAA,0BAAe,EAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,MAAe;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YAChD,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AA7DD,oCA6DC"}
@@ -25,7 +25,7 @@ export declare class TestHelpers {
25
25
  * @throws {TupayError} si le client a été construit avec une clé live —
26
26
  * on échoue localement plutôt que d'envoyer une requête vouée au 403.
27
27
  */
28
- simulatePayment(transactionId: string, outcome: SimulateOutcome): Promise<SimulateResult>;
28
+ simulatePayment(transactionId: string, outcome: SimulateOutcome, idempotencyKey?: string): Promise<SimulateResult>;
29
29
  /**
30
30
  * Montants XPF qui provoquent un échec **dès la création** de l'intent.
31
31
  * Pratique pour tester vos écrans d'erreur.
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAA;AAEnE,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;GAMG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;OAOG;IACG,eAAe,CACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC;IAgB1B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY;QAC1B,wBAAwB;;QAExB,6BAA6B;;QAE7B,6CAA6C;;MAErC;CACX"}
1
+ {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAA;AAEnE,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;GAMG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;OAOG;IACG,eAAe,CACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,eAAe,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,cAAc,CAAC;IAoB1B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY;QAC1B,wBAAwB;;QAExB,6BAA6B;;QAE7B,6CAA6C;;MAErC;CACX"}
@@ -22,7 +22,7 @@ class TestHelpers {
22
22
  * @throws {TupayError} si le client a été construit avec une clé live —
23
23
  * on échoue localement plutôt que d'envoyer une requête vouée au 403.
24
24
  */
25
- async simulatePayment(transactionId, outcome) {
25
+ async simulatePayment(transactionId, outcome, idempotencyKey) {
26
26
  if (this.client.livemode) {
27
27
  throw new errors_js_1.TupayError('simulatePayment est réservé au mode test. Construisez le client avec une clé tpk_test_.', { code: 'livemode_mismatch' });
28
28
  }
@@ -30,6 +30,10 @@ class TestHelpers {
30
30
  method: 'POST',
31
31
  path: '/test/simulate',
32
32
  body: { transactionId, outcome },
33
+ // Aucune clé générée par défaut : forcer deux fois la même issue
34
+ // est déjà sans effet côté serveur (`alreadyInState`), et un
35
+ // développeur qui simule veut voir chaque appel partir.
36
+ idempotencyKey,
33
37
  });
34
38
  return data;
35
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAazC;;;;;;GAMG;AACH,MAAa,WAAW;IACO;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,aAAqB,EACrB,OAAwB;QAExB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,sBAAU,CAClB,yFAAyF,EACzF,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC9B,CAAA;QACH,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA2B;YACnE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE;SACjC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAU,YAAY,GAAG;QAC7B,wBAAwB;QACxB,YAAY,EAAE,GAAG;QACjB,6BAA6B;QAC7B,iBAAiB,EAAE,GAAG;QACtB,6CAA6C;QAC7C,WAAW,EAAE,GAAG;KACR,CAAA;;AAzCZ,kCA0CC"}
1
+ {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAazC;;;;;;GAMG;AACH,MAAa,WAAW;IACO;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,aAAqB,EACrB,OAAwB,EACxB,cAAuB;QAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,sBAAU,CAClB,yFAAyF,EACzF,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC9B,CAAA;QACH,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA2B;YACnE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE;YAChC,iEAAiE;YACjE,6DAA6D;YAC7D,wDAAwD;YACxD,cAAc;SACf,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAU,YAAY,GAAG;QAC7B,wBAAwB;QACxB,YAAY,EAAE,GAAG;QACjB,6BAA6B;QAC7B,iBAAiB,EAAE,GAAG;QACtB,6CAA6C;QAC7C,WAAW,EAAE,GAAG;KACR,CAAA;;AA9CZ,kCA+CC"}
@@ -2,6 +2,20 @@ import type { TupayClient } from '../client.js';
2
2
  import type { ListResult, WebhookDelivery, WebhookEndpoint, WebhookEndpointWithSecret, WebhookEventType } from '../types.js';
3
3
  import { type ListParams } from '../liste.js';
4
4
  export interface CreateWebhookEndpointParams {
5
+ /**
6
+ * Clé d'idempotence. Le SDK n'en génère PAS ici, à dessein.
7
+ *
8
+ * Le `secret` n'est rendu qu'une fois et n'est pas conservé côté
9
+ * serveur : une reprise sous la même clé rend l'endpoint déjà créé
10
+ * avec `secret` à `null`, donc un endpoint que vous ne pourrez pas
11
+ * signer. Sans clé, une reprise crée un second endpoint, avec un
12
+ * secret lisible : c'est le moindre mal, et vous supprimez le
13
+ * premier.
14
+ *
15
+ * Fournissez-en une si vous préférez l'inverse, en connaissance de
16
+ * cause.
17
+ */
18
+ idempotencyKey?: string;
5
19
  /** HTTPS et port 443 obligatoires en mode live. */
6
20
  url: string;
7
21
  description?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-endpoints.d.ts","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;IAC1C,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CAChC;AAED,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;OAMG;IACG,MAAM,CACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,yBAAyB,CAAC;IAW/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ9C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAUnE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,eAAe,CAAC;IAS3B,2EAA2E;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpC;;;OAGG;IACG,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;CAaxC"}
1
+ {"version":3,"file":"webhook-endpoints.d.ts","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;IAC1C,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CAChC;AAED,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;OAMG;IACG,MAAM,CACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,yBAAyB,CAAC;IAa/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ9C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAUnE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,eAAe,CAAC;IAS3B,2EAA2E;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpC;;;OAGG;IACG,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;CAaxC"}
@@ -15,10 +15,12 @@ class WebhookEndpoints {
15
15
  * lisible ensuite. Perdu = supprimer l'endpoint et en recréer un.
16
16
  */
17
17
  async create(params) {
18
+ const { idempotencyKey, ...body } = params;
18
19
  const { data } = await this.client.request({
19
20
  method: 'POST',
20
21
  path: '/webhook-endpoints',
21
- body: params,
22
+ body,
23
+ idempotencyKey,
22
24
  });
23
25
  return data;
24
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-endpoints.js","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":";;;AAQA,0CAKoB;AAsBpB,MAAa,gBAAgB;IACE;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CACV,MAAmC;QAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAEvC;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,IAAA,0BAAe,EAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,EAAU,EACV,MAAmC;QAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YACpD,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU;YACjC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,EAAU,EACV,SAA+B,EAAE;QAEjC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,aAAa;YAC/D,KAAK,EAAE;gBACL,GAAG,IAAA,0BAAe,EAAC,MAAM,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF;AAjFD,4CAiFC"}
1
+ {"version":3,"file":"webhook-endpoints.js","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":";;;AAQA,0CAKoB;AAoCpB,MAAa,gBAAgB;IACE;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CACV,MAAmC;QAEnC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAEvC;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,oBAAoB;YAC1B,IAAI;YACJ,cAAc;SACf,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,IAAA,0BAAe,EAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,EAAU,EACV,MAAmC;QAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YACpD,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU;YACjC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,EAAU,EACV,SAA+B,EAAE;QAEjC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,aAAa;YAC/D,KAAK,EAAE;gBACL,GAAG,IAAA,0BAAe,EAAC,MAAM,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF;AAnFD,4CAmFC"}
@@ -50,7 +50,7 @@ export declare class Events {
50
50
  * await tupay.events.resend(event.id)
51
51
  * }
52
52
  */
53
- resend(id: string): Promise<ResendResult>;
53
+ resend(id: string, idempotencyKey?: string): Promise<ResendResult>;
54
54
  /**
55
55
  * Parcourt toutes les pages, un événement à la fois.
56
56
  *
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/resources/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAA;CACxB;AAED,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;;;;;OAWG;IACG,IAAI,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAc1E;;;;;OAKG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ/C;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ/C;;;;;;;OAOG;IACI,cAAc,CACnB,MAAM,GAAE,gBAAqB,GAC5B,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;CAyB/C"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/resources/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAA;CACxB;AAED,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;;;;;OAWG;IACG,IAAI,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAc1E;;;;;OAKG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ/C;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAcxE;;;;;;;OAOG;IACI,cAAc,CACnB,MAAM,GAAE,gBAAqB,GAC5B,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;CAyB/C"}
@@ -54,10 +54,16 @@ export class Events {
54
54
  * await tupay.events.resend(event.id)
55
55
  * }
56
56
  */
57
- async resend(id) {
57
+ async resend(id, idempotencyKey) {
58
+ // Aucune clé n'est générée par défaut ici, contrairement aux autres
59
+ // créations. Le rejeu d'un événement CRÉE une livraison : c'est sa
60
+ // raison d'être, et deux appels délibérés doivent en créer deux.
61
+ // Fournir une clé rend l'appel rejouable sans risque, mais c'est un
62
+ // choix de l'appelant, pas un défaut du SDK.
58
63
  const { data } = await this.client.request({
59
64
  method: 'POST',
60
65
  path: `/events/${encodeURIComponent(id)}/resend`,
66
+ idempotencyKey,
61
67
  });
62
68
  return data;
63
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/resources/events.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,eAAe,EACf,eAAe,GAGhB,MAAM,aAAa,CAAA;AAepB,MAAM,OAAO,MAAM;IACY;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI,CAAC,SAA2B,EAAE;QACtC,MAAM,OAAO,GAAG,eAAe,CAAC;YAC9B,GAAG,MAAM;YACT,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK;SACpD,CAAC,CAAA;QACF,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB;YAChD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;SACzC,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAuB;YAC/D,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,EAAE;SAC1C,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB;YACjE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,SAAS;SACjD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,CAAC,cAAc,CACnB,SAA2B,EAAE;QAE7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAA;QACjC,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAA;QACxD,IAAI,SAA6B,CAAA;QAEjC,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC3B,GAAG,MAAM;gBACT,KAAK;gBACL,KAAK,EAAE,SAAS;gBAChB,aAAa;aACd,CAAC,CAAA;YACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,KAAK,CAAA;YAC1C,8DAA8D;YAC9D,+DAA+D;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAM;YACrC,oEAAoE;YACpE,iEAAiE;YACjE,iBAAiB;YACjB,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS;gBAAE,OAAM;YACpC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAA;YACtB,aAAa,GAAG,OAAO,CAAC,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/resources/events.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,eAAe,EACf,eAAe,GAGhB,MAAM,aAAa,CAAA;AAepB,MAAM,OAAO,MAAM;IACY;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI,CAAC,SAA2B,EAAE;QACtC,MAAM,OAAO,GAAG,eAAe,CAAC;YAC9B,GAAG,MAAM;YACT,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK;SACpD,CAAC,CAAA;QACF,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB;YAChD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;SACzC,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAuB;YAC/D,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,EAAE;SAC1C,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,cAAuB;QAC9C,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,oEAAoE;QACpE,6CAA6C;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB;YACjE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,WAAW,kBAAkB,CAAC,EAAE,CAAC,SAAS;YAChD,cAAc;SACf,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,CAAC,cAAc,CACnB,SAA2B,EAAE;QAE7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAA;QACjC,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAA;QACxD,IAAI,SAA6B,CAAA;QAEjC,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBAC3B,GAAG,MAAM;gBACT,KAAK;gBACL,KAAK,EAAE,SAAS;gBAChB,aAAa;aACd,CAAC,CAAA;YACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,KAAK,CAAA;YAC1C,8DAA8D;YAC9D,+DAA+D;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAM;YACrC,oEAAoE;YACpE,iEAAiE;YACjE,iBAAiB;YACjB,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS;gBAAE,OAAM;YACpC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAA;YACtB,aAAa,GAAG,OAAO,CAAC,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC;CACF"}
@@ -1,7 +1,12 @@
1
- import type { TupayClient } from '../client.js';
1
+ import { TupayClient } from '../client.js';
2
2
  import type { ListResult, PaymentLink } from '../types.js';
3
3
  import { type ListParams } from '../liste.js';
4
4
  export interface CreatePaymentLinkParams {
5
+ /**
6
+ * Clé d'idempotence. Omise, le SDK en génère une (UUID v4) : la
7
+ * requête devient rejouable, et une reprise ne crée pas un second lien.
8
+ */
9
+ idempotencyKey?: string;
5
10
  /** Entier XPF, entre 100 et 10 000 000. Le XPF n'a pas de centimes. */
6
11
  amountXpf: number;
7
12
  description: string;
@@ -24,9 +29,14 @@ export declare class PaymentLinks {
24
29
  /**
25
30
  * Crée un lien de paiement partageable.
26
31
  *
27
- * Non rejouable automatiquement : l'API n'accepte pas d'en-tête
28
- * d'idempotence ici, une reprise créerait un second lien. En cas de
29
- * timeout, listez avant de recréer.
32
+ * Rejouable : le SDK envoie une clé d'idempotence, générée si vous n'en
33
+ * fournissez pas. Une reprise après timeout rend le lien déjà créé au
34
+ * lieu d'en créer un second avec un second slug.
35
+ *
36
+ * L'API a longtemps ignoré cet en-tête ici, et ce commentaire disait le
37
+ * contraire de ce qu'il dit aujourd'hui. Elle l'honore depuis la
38
+ * version qui documente `Idempotency-Key` comme facultatif sur cette
39
+ * opération.
30
40
  */
31
41
  create(params: CreatePaymentLinkParams): Promise<PaymentLink>;
32
42
  retrieve(id: string): Promise<PaymentLink>;
@@ -1 +1 @@
1
- {"version":3,"file":"payment-links.d.ts","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,qBAAa,YAAY;;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;OAMG;IACG,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAS7D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ1C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAUrE,yEAAyE;IACnE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAYjD"}
1
+ {"version":3,"file":"payment-links.d.ts","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,qBAAa,YAAY;;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAW7D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ1C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAUrE,yEAAyE;IACnE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAYjD"}
@@ -1,3 +1,4 @@
1
+ import { TupayClient } from '../client.js';
1
2
  import { normaliserListe, parametresListe, } from '../liste.js';
2
3
  export class PaymentLinks {
3
4
  client;
@@ -7,15 +8,22 @@ export class PaymentLinks {
7
8
  /**
8
9
  * Crée un lien de paiement partageable.
9
10
  *
10
- * Non rejouable automatiquement : l'API n'accepte pas d'en-tête
11
- * d'idempotence ici, une reprise créerait un second lien. En cas de
12
- * timeout, listez avant de recréer.
11
+ * Rejouable : le SDK envoie une clé d'idempotence, générée si vous n'en
12
+ * fournissez pas. Une reprise après timeout rend le lien déjà créé au
13
+ * lieu d'en créer un second avec un second slug.
14
+ *
15
+ * L'API a longtemps ignoré cet en-tête ici, et ce commentaire disait le
16
+ * contraire de ce qu'il dit aujourd'hui. Elle l'honore depuis la
17
+ * version qui documente `Idempotency-Key` comme facultatif sur cette
18
+ * opération.
13
19
  */
14
20
  async create(params) {
21
+ const { idempotencyKey, ...body } = params;
15
22
  const { data } = await this.client.request({
16
23
  method: 'POST',
17
24
  path: '/payment-links',
18
- body: params,
25
+ body,
26
+ idempotencyKey: idempotencyKey ?? TupayClient.idempotencyKey(),
19
27
  });
20
28
  return data;
21
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"payment-links.js","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,eAAe,GAGhB,MAAM,aAAa,CAAA;AAmBpB,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,MAA+B;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACjD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B;YACjD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,MAAe;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YAChD,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"payment-links.js","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,EACL,eAAe,EACf,eAAe,GAGhB,MAAM,aAAa,CAAA;AAwBpB,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,CAAC,MAA+B;QAC1C,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI;YACJ,cAAc,EAAE,cAAc,IAAI,WAAW,CAAC,cAAc,EAAE;SAC/D,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACjD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B;YACjD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,MAAe;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YAChD,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -25,7 +25,7 @@ export declare class TestHelpers {
25
25
  * @throws {TupayError} si le client a été construit avec une clé live —
26
26
  * on échoue localement plutôt que d'envoyer une requête vouée au 403.
27
27
  */
28
- simulatePayment(transactionId: string, outcome: SimulateOutcome): Promise<SimulateResult>;
28
+ simulatePayment(transactionId: string, outcome: SimulateOutcome, idempotencyKey?: string): Promise<SimulateResult>;
29
29
  /**
30
30
  * Montants XPF qui provoquent un échec **dès la création** de l'intent.
31
31
  * Pratique pour tester vos écrans d'erreur.
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAA;AAEnE,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;GAMG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;OAOG;IACG,eAAe,CACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC;IAgB1B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY;QAC1B,wBAAwB;;QAExB,6BAA6B;;QAE7B,6CAA6C;;MAErC;CACX"}
1
+ {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAA;AAEnE,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;GAMG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;OAOG;IACG,eAAe,CACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,eAAe,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,cAAc,CAAC;IAoB1B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY;QAC1B,wBAAwB;;QAExB,6BAA6B;;QAE7B,6CAA6C;;MAErC;CACX"}
@@ -19,7 +19,7 @@ export class TestHelpers {
19
19
  * @throws {TupayError} si le client a été construit avec une clé live —
20
20
  * on échoue localement plutôt que d'envoyer une requête vouée au 403.
21
21
  */
22
- async simulatePayment(transactionId, outcome) {
22
+ async simulatePayment(transactionId, outcome, idempotencyKey) {
23
23
  if (this.client.livemode) {
24
24
  throw new TupayError('simulatePayment est réservé au mode test. Construisez le client avec une clé tpk_test_.', { code: 'livemode_mismatch' });
25
25
  }
@@ -27,6 +27,10 @@ export class TestHelpers {
27
27
  method: 'POST',
28
28
  path: '/test/simulate',
29
29
  body: { transactionId, outcome },
30
+ // Aucune clé générée par défaut : forcer deux fois la même issue
31
+ // est déjà sans effet côté serveur (`alreadyInState`), et un
32
+ // développeur qui simule veut voir chaque appel partir.
33
+ idempotencyKey,
30
34
  });
31
35
  return data;
32
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAazC;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACO;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,aAAqB,EACrB,OAAwB;QAExB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,UAAU,CAClB,yFAAyF,EACzF,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC9B,CAAA;QACH,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA2B;YACnE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE;SACjC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAU,YAAY,GAAG;QAC7B,wBAAwB;QACxB,YAAY,EAAE,GAAG;QACjB,6BAA6B;QAC7B,iBAAiB,EAAE,GAAG;QACtB,6CAA6C;QAC7C,WAAW,EAAE,GAAG;KACR,CAAA"}
1
+ {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAazC;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACO;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,aAAqB,EACrB,OAAwB,EACxB,cAAuB;QAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,UAAU,CAClB,yFAAyF,EACzF,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC9B,CAAA;QACH,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA2B;YACnE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE;YAChC,iEAAiE;YACjE,6DAA6D;YAC7D,wDAAwD;YACxD,cAAc;SACf,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAU,YAAY,GAAG;QAC7B,wBAAwB;QACxB,YAAY,EAAE,GAAG;QACjB,6BAA6B;QAC7B,iBAAiB,EAAE,GAAG;QACtB,6CAA6C;QAC7C,WAAW,EAAE,GAAG;KACR,CAAA"}
@@ -2,6 +2,20 @@ import type { TupayClient } from '../client.js';
2
2
  import type { ListResult, WebhookDelivery, WebhookEndpoint, WebhookEndpointWithSecret, WebhookEventType } from '../types.js';
3
3
  import { type ListParams } from '../liste.js';
4
4
  export interface CreateWebhookEndpointParams {
5
+ /**
6
+ * Clé d'idempotence. Le SDK n'en génère PAS ici, à dessein.
7
+ *
8
+ * Le `secret` n'est rendu qu'une fois et n'est pas conservé côté
9
+ * serveur : une reprise sous la même clé rend l'endpoint déjà créé
10
+ * avec `secret` à `null`, donc un endpoint que vous ne pourrez pas
11
+ * signer. Sans clé, une reprise crée un second endpoint, avec un
12
+ * secret lisible : c'est le moindre mal, et vous supprimez le
13
+ * premier.
14
+ *
15
+ * Fournissez-en une si vous préférez l'inverse, en connaissance de
16
+ * cause.
17
+ */
18
+ idempotencyKey?: string;
5
19
  /** HTTPS et port 443 obligatoires en mode live. */
6
20
  url: string;
7
21
  description?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-endpoints.d.ts","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;IAC1C,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CAChC;AAED,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;OAMG;IACG,MAAM,CACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,yBAAyB,CAAC;IAW/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ9C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAUnE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,eAAe,CAAC;IAS3B,2EAA2E;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpC;;;OAGG;IACG,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;CAaxC"}
1
+ {"version":3,"file":"webhook-endpoints.d.ts","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;IAC1C,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CAChC;AAED,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;OAMG;IACG,MAAM,CACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,yBAAyB,CAAC;IAa/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ9C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAUnE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,eAAe,CAAC;IAS3B,2EAA2E;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpC;;;OAGG;IACG,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;CAaxC"}
@@ -12,10 +12,12 @@ export class WebhookEndpoints {
12
12
  * lisible ensuite. Perdu = supprimer l'endpoint et en recréer un.
13
13
  */
14
14
  async create(params) {
15
+ const { idempotencyKey, ...body } = params;
15
16
  const { data } = await this.client.request({
16
17
  method: 'POST',
17
18
  path: '/webhook-endpoints',
18
- body: params,
19
+ body,
20
+ idempotencyKey,
19
21
  });
20
22
  return data;
21
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-endpoints.js","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,eAAe,EACf,eAAe,GAGhB,MAAM,aAAa,CAAA;AAsBpB,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CACV,MAAmC;QAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAEvC;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,EAAU,EACV,MAAmC;QAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YACpD,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU;YACjC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,EAAU,EACV,SAA+B,EAAE;QAEjC,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,aAAa;YAC/D,KAAK,EAAE;gBACL,GAAG,eAAe,CAAC,MAAM,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"webhook-endpoints.js","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,eAAe,EACf,eAAe,GAGhB,MAAM,aAAa,CAAA;AAoCpB,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CACV,MAAmC;QAEnC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAEvC;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,oBAAoB;YAC1B,IAAI;YACJ,cAAc;SACf,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,EAAU,EACV,MAAmC;QAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YACpD,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU;YACjC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,EAAU,EACV,SAA+B,EAAE;QAEjC,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,aAAa;YAC/D,KAAK,EAAE;gBACL,GAAG,eAAe,CAAC,MAAM,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tupay",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
4
4
  "description": "SDK Node officiel de Tupay : encaissement en XPF pour la Polynésie française.",
5
5
  "license": "MIT",
6
6
  "type": "module",