tupay 0.5.2
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.
- package/README.md +358 -0
- package/dist/cjs/client.d.ts +48 -0
- package/dist/cjs/client.d.ts.map +1 -0
- package/dist/cjs/client.js +165 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/errors.d.ts +66 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +105 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.d.ts +86 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +110 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/liste.d.ts +54 -0
- package/dist/cjs/liste.d.ts.map +1 -0
- package/dist/cjs/liste.js +36 -0
- package/dist/cjs/liste.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/resources/events.d.ts +64 -0
- package/dist/cjs/resources/events.d.ts.map +1 -0
- package/dist/cjs/resources/events.js +104 -0
- package/dist/cjs/resources/events.js.map +1 -0
- package/dist/cjs/resources/merchants.d.ts +19 -0
- package/dist/cjs/resources/merchants.d.ts.map +1 -0
- package/dist/cjs/resources/merchants.js +29 -0
- package/dist/cjs/resources/merchants.js.map +1 -0
- package/dist/cjs/resources/payment-intents.d.ts +29 -0
- package/dist/cjs/resources/payment-intents.d.ts.map +1 -0
- package/dist/cjs/resources/payment-intents.js +22 -0
- package/dist/cjs/resources/payment-intents.js.map +1 -0
- package/dist/cjs/resources/payment-links.d.ts +38 -0
- package/dist/cjs/resources/payment-links.d.ts.map +1 -0
- package/dist/cjs/resources/payment-links.js +56 -0
- package/dist/cjs/resources/payment-links.js.map +1 -0
- package/dist/cjs/resources/refunds.d.ts +27 -0
- package/dist/cjs/resources/refunds.d.ts.map +1 -0
- package/dist/cjs/resources/refunds.js +33 -0
- package/dist/cjs/resources/refunds.js.map +1 -0
- package/dist/cjs/resources/test-helpers.d.ts +42 -0
- package/dist/cjs/resources/test-helpers.d.ts.map +1 -0
- package/dist/cjs/resources/test-helpers.js +50 -0
- package/dist/cjs/resources/test-helpers.js.map +1 -0
- package/dist/cjs/resources/transactions.d.ts +29 -0
- package/dist/cjs/resources/transactions.d.ts.map +1 -0
- package/dist/cjs/resources/transactions.js +65 -0
- package/dist/cjs/resources/transactions.js.map +1 -0
- package/dist/cjs/resources/webhook-endpoints.d.ts +43 -0
- package/dist/cjs/resources/webhook-endpoints.d.ts.map +1 -0
- package/dist/cjs/resources/webhook-endpoints.js +71 -0
- package/dist/cjs/resources/webhook-endpoints.js.map +1 -0
- package/dist/cjs/types.d.ts +166 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +10 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/webhooks.d.ts +31 -0
- package/dist/cjs/webhooks.d.ts.map +1 -0
- package/dist/cjs/webhooks.js +81 -0
- package/dist/cjs/webhooks.js.map +1 -0
- package/dist/esm/client.d.ts +48 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +161 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/errors.d.ts +66 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +90 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/index.d.ts +86 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +90 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/liste.d.ts +54 -0
- package/dist/esm/liste.d.ts.map +1 -0
- package/dist/esm/liste.js +32 -0
- package/dist/esm/liste.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/resources/events.d.ts +64 -0
- package/dist/esm/resources/events.d.ts.map +1 -0
- package/dist/esm/resources/events.js +100 -0
- package/dist/esm/resources/events.js.map +1 -0
- package/dist/esm/resources/merchants.d.ts +19 -0
- package/dist/esm/resources/merchants.d.ts.map +1 -0
- package/dist/esm/resources/merchants.js +25 -0
- package/dist/esm/resources/merchants.js.map +1 -0
- package/dist/esm/resources/payment-intents.d.ts +29 -0
- package/dist/esm/resources/payment-intents.d.ts.map +1 -0
- package/dist/esm/resources/payment-intents.js +18 -0
- package/dist/esm/resources/payment-intents.js.map +1 -0
- package/dist/esm/resources/payment-links.d.ts +38 -0
- package/dist/esm/resources/payment-links.d.ts.map +1 -0
- package/dist/esm/resources/payment-links.js +52 -0
- package/dist/esm/resources/payment-links.js.map +1 -0
- package/dist/esm/resources/refunds.d.ts +27 -0
- package/dist/esm/resources/refunds.d.ts.map +1 -0
- package/dist/esm/resources/refunds.js +29 -0
- package/dist/esm/resources/refunds.js.map +1 -0
- package/dist/esm/resources/test-helpers.d.ts +42 -0
- package/dist/esm/resources/test-helpers.d.ts.map +1 -0
- package/dist/esm/resources/test-helpers.js +46 -0
- package/dist/esm/resources/test-helpers.js.map +1 -0
- package/dist/esm/resources/transactions.d.ts +29 -0
- package/dist/esm/resources/transactions.d.ts.map +1 -0
- package/dist/esm/resources/transactions.js +61 -0
- package/dist/esm/resources/transactions.js.map +1 -0
- package/dist/esm/resources/webhook-endpoints.d.ts +43 -0
- package/dist/esm/resources/webhook-endpoints.d.ts.map +1 -0
- package/dist/esm/resources/webhook-endpoints.js +67 -0
- package/dist/esm/resources/webhook-endpoints.js.map +1 -0
- package/dist/esm/types.d.ts +166 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +9 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/webhooks.d.ts +31 -0
- package/dist/esm/webhooks.d.ts.map +1 -0
- package/dist/esm/webhooks.js +77 -0
- package/dist/esm/webhooks.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TupayClient } from '../client.js';
|
|
2
|
+
export class PaymentIntents {
|
|
3
|
+
client;
|
|
4
|
+
constructor(client) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
async create(params) {
|
|
8
|
+
const { idempotencyKey, ...body } = params;
|
|
9
|
+
const { data } = await this.client.request({
|
|
10
|
+
method: 'POST',
|
|
11
|
+
path: '/payments/intent',
|
|
12
|
+
body,
|
|
13
|
+
idempotencyKey: idempotencyKey ?? TupayClient.idempotencyKey(),
|
|
14
|
+
});
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=payment-intents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-intents.js","sourceRoot":"","sources":["../../../src/resources/payment-intents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAyB1C,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,KAAK,CAAC,MAAM,CAAC,MAAiC;QAC5C,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B;YAClE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB;YACxB,IAAI;YACJ,cAAc,EAAE,cAAc,IAAI,WAAW,CAAC,cAAc,EAAE;SAC/D,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { TupayClient } from '../client.js';
|
|
2
|
+
import type { ListResult, PaymentLink } from '../types.js';
|
|
3
|
+
import { type ListParams } from '../liste.js';
|
|
4
|
+
export interface CreatePaymentLinkParams {
|
|
5
|
+
/** Entier XPF, entre 100 et 10 000 000. Le XPF n'a pas de centimes. */
|
|
6
|
+
amountXpf: number;
|
|
7
|
+
description: string;
|
|
8
|
+
/**
|
|
9
|
+
* Où renvoyer le client après paiement. Tupay y ajoute
|
|
10
|
+
* `?tupay_transaction=<uuid>&tupay_status=<statut>`.
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ Ces paramètres transitent par le navigateur du client : ils sont
|
|
13
|
+
* falsifiables. Ne validez jamais une commande dessus — seul le
|
|
14
|
+
* webhook signé fait foi.
|
|
15
|
+
*/
|
|
16
|
+
returnUrl?: string;
|
|
17
|
+
/** Vos identifiants (n° de commande…), relisibles via `retrieve()`. */
|
|
18
|
+
metadata?: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
export declare class PaymentLinks {
|
|
21
|
+
#private;
|
|
22
|
+
private readonly client;
|
|
23
|
+
constructor(client: TupayClient);
|
|
24
|
+
/**
|
|
25
|
+
* Crée un lien de paiement partageable.
|
|
26
|
+
*
|
|
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.
|
|
30
|
+
*/
|
|
31
|
+
create(params: CreatePaymentLinkParams): Promise<PaymentLink>;
|
|
32
|
+
retrieve(id: string): Promise<PaymentLink>;
|
|
33
|
+
list(params?: ListParams): Promise<ListResult<PaymentLink>>;
|
|
34
|
+
/** Désactive le lien : il n'est plus payable, mais reste consultable. */
|
|
35
|
+
deactivate(id: string): Promise<PaymentLink>;
|
|
36
|
+
activate(id: string): Promise<PaymentLink>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=payment-links.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { normaliserListe, parametresListe, } from '../liste.js';
|
|
2
|
+
export class PaymentLinks {
|
|
3
|
+
client;
|
|
4
|
+
constructor(client) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Crée un lien de paiement partageable.
|
|
9
|
+
*
|
|
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.
|
|
13
|
+
*/
|
|
14
|
+
async create(params) {
|
|
15
|
+
const { data } = await this.client.request({
|
|
16
|
+
method: 'POST',
|
|
17
|
+
path: '/payment-links',
|
|
18
|
+
body: params,
|
|
19
|
+
});
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
async retrieve(id) {
|
|
23
|
+
const { data } = await this.client.request({
|
|
24
|
+
method: 'GET',
|
|
25
|
+
path: `/payment-links/${encodeURIComponent(id)}`,
|
|
26
|
+
});
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
async list(params = {}) {
|
|
30
|
+
return normaliserListe(await this.client.request({
|
|
31
|
+
method: 'GET',
|
|
32
|
+
path: '/payment-links',
|
|
33
|
+
query: parametresListe(params),
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
/** Désactive le lien : il n'est plus payable, mais reste consultable. */
|
|
37
|
+
async deactivate(id) {
|
|
38
|
+
return this.#setActive(id, false);
|
|
39
|
+
}
|
|
40
|
+
async activate(id) {
|
|
41
|
+
return this.#setActive(id, true);
|
|
42
|
+
}
|
|
43
|
+
async #setActive(id, active) {
|
|
44
|
+
const { data } = await this.client.request({
|
|
45
|
+
method: 'PATCH',
|
|
46
|
+
path: `/payment-links/${encodeURIComponent(id)}`,
|
|
47
|
+
body: { active },
|
|
48
|
+
});
|
|
49
|
+
return data;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=payment-links.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TupayClient } from '../client.js';
|
|
2
|
+
import type { ListResult, Refund } from '../types.js';
|
|
3
|
+
import { type ListParams } from '../liste.js';
|
|
4
|
+
export interface CreateRefundParams {
|
|
5
|
+
transactionId: string;
|
|
6
|
+
/**
|
|
7
|
+
* Montant à rembourser, en XPF entiers. **Omis = tout le reliquat.**
|
|
8
|
+
*
|
|
9
|
+
* Les remboursements partiels s'accumulent : après un remboursement
|
|
10
|
+
* partiel, `transaction.status` reste `succeeded` et c'est
|
|
11
|
+
* `refundedAmountXpf` qui reflète le cumul.
|
|
12
|
+
*/
|
|
13
|
+
amountXpf?: number;
|
|
14
|
+
reason?: string;
|
|
15
|
+
/** Omise, le SDK génère un UUID v4 — la requête devient rejouable. */
|
|
16
|
+
idempotencyKey?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ListRefundsParams extends ListParams {
|
|
19
|
+
transactionId?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class Refunds {
|
|
22
|
+
private readonly client;
|
|
23
|
+
constructor(client: TupayClient);
|
|
24
|
+
create(params: CreateRefundParams): Promise<Refund>;
|
|
25
|
+
list(params?: ListRefundsParams): Promise<ListResult<Refund>>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=refunds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refunds.d.ts","sourceRoot":"","sources":["../../../src/resources/refunds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAE1C,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWnD,IAAI,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;CAYxE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TupayClient } from '../client.js';
|
|
2
|
+
import { normaliserListe, parametresListe, } from '../liste.js';
|
|
3
|
+
export class Refunds {
|
|
4
|
+
client;
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
async create(params) {
|
|
9
|
+
const { idempotencyKey, ...body } = params;
|
|
10
|
+
const { data } = await this.client.request({
|
|
11
|
+
method: 'POST',
|
|
12
|
+
path: '/refunds',
|
|
13
|
+
body,
|
|
14
|
+
idempotencyKey: idempotencyKey ?? TupayClient.idempotencyKey(),
|
|
15
|
+
});
|
|
16
|
+
return data;
|
|
17
|
+
}
|
|
18
|
+
async list(params = {}) {
|
|
19
|
+
return normaliserListe(await this.client.request({
|
|
20
|
+
method: 'GET',
|
|
21
|
+
path: '/refunds',
|
|
22
|
+
query: {
|
|
23
|
+
...parametresListe(params),
|
|
24
|
+
transactionId: params.transactionId,
|
|
25
|
+
},
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=refunds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refunds.js","sourceRoot":"","sources":["../../../src/resources/refunds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,EACL,eAAe,EACf,eAAe,GAGhB,MAAM,aAAa,CAAA;AAqBpB,MAAM,OAAO,OAAO;IACW;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,KAAK,CAAC,MAAM,CAAC,MAA0B;QACrC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAmB;YAC3D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,UAAU;YAChB,IAAI;YACJ,cAAc,EAAE,cAAc,IAAI,WAAW,CAAC,cAAc,EAAE;SAC/D,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAA4B,EAAE;QACvC,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAqB;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE;gBACL,GAAG,eAAe,CAAC,MAAM,CAAC;gBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;aACpC;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { TupayClient } from '../client.js';
|
|
2
|
+
import type { Transaction } from '../types.js';
|
|
3
|
+
export type SimulateOutcome = 'succeeded' | 'failed' | 'processing';
|
|
4
|
+
export interface SimulateResult extends Transaction {
|
|
5
|
+
simulated: true;
|
|
6
|
+
eventId?: string;
|
|
7
|
+
endpointsNotified?: number;
|
|
8
|
+
alreadyInState?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Utilitaires réservés au **mode test**.
|
|
12
|
+
*
|
|
13
|
+
* Le bac à sable ne résout pas les paiements tout seul : c'est vous qui
|
|
14
|
+
* décidez de l'issue. C'est ce qui permet de tester les chemins d'échec
|
|
15
|
+
* et de recevoir de vrais webhooks signés sans qu'un centime bouge.
|
|
16
|
+
*/
|
|
17
|
+
export declare class TestHelpers {
|
|
18
|
+
private readonly client;
|
|
19
|
+
constructor(client: TupayClient);
|
|
20
|
+
/**
|
|
21
|
+
* Force l'issue d'un paiement de test et déclenche le webhook associé.
|
|
22
|
+
*
|
|
23
|
+
* Rejouer la même issue ne réémet pas d'événement (`alreadyInState`).
|
|
24
|
+
*
|
|
25
|
+
* @throws {TupayError} si le client a été construit avec une clé live —
|
|
26
|
+
* on échoue localement plutôt que d'envoyer une requête vouée au 403.
|
|
27
|
+
*/
|
|
28
|
+
simulatePayment(transactionId: string, outcome: SimulateOutcome): Promise<SimulateResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Montants XPF qui provoquent un échec **dès la création** de l'intent.
|
|
31
|
+
* Pratique pour tester vos écrans d'erreur.
|
|
32
|
+
*/
|
|
33
|
+
static readonly magicAmounts: {
|
|
34
|
+
/** → `card_declined` */
|
|
35
|
+
readonly cardDeclined: 402;
|
|
36
|
+
/** → `insufficient_funds` */
|
|
37
|
+
readonly insufficientFunds: 403;
|
|
38
|
+
/** → `rate_limited` (marquée réessayable) */
|
|
39
|
+
readonly rateLimited: 429;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=test-helpers.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { TupayError } from '../errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Utilitaires réservés au **mode test**.
|
|
4
|
+
*
|
|
5
|
+
* Le bac à sable ne résout pas les paiements tout seul : c'est vous qui
|
|
6
|
+
* décidez de l'issue. C'est ce qui permet de tester les chemins d'échec
|
|
7
|
+
* et de recevoir de vrais webhooks signés sans qu'un centime bouge.
|
|
8
|
+
*/
|
|
9
|
+
export class TestHelpers {
|
|
10
|
+
client;
|
|
11
|
+
constructor(client) {
|
|
12
|
+
this.client = client;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Force l'issue d'un paiement de test et déclenche le webhook associé.
|
|
16
|
+
*
|
|
17
|
+
* Rejouer la même issue ne réémet pas d'événement (`alreadyInState`).
|
|
18
|
+
*
|
|
19
|
+
* @throws {TupayError} si le client a été construit avec une clé live —
|
|
20
|
+
* on échoue localement plutôt que d'envoyer une requête vouée au 403.
|
|
21
|
+
*/
|
|
22
|
+
async simulatePayment(transactionId, outcome) {
|
|
23
|
+
if (this.client.livemode) {
|
|
24
|
+
throw new TupayError('simulatePayment est réservé au mode test. Construisez le client avec une clé tpk_test_.', { code: 'livemode_mismatch' });
|
|
25
|
+
}
|
|
26
|
+
const { data } = await this.client.request({
|
|
27
|
+
method: 'POST',
|
|
28
|
+
path: '/test/simulate',
|
|
29
|
+
body: { transactionId, outcome },
|
|
30
|
+
});
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Montants XPF qui provoquent un échec **dès la création** de l'intent.
|
|
35
|
+
* Pratique pour tester vos écrans d'erreur.
|
|
36
|
+
*/
|
|
37
|
+
static magicAmounts = {
|
|
38
|
+
/** → `card_declined` */
|
|
39
|
+
cardDeclined: 402,
|
|
40
|
+
/** → `insufficient_funds` */
|
|
41
|
+
insufficientFunds: 403,
|
|
42
|
+
/** → `rate_limited` (marquée réessayable) */
|
|
43
|
+
rateLimited: 429,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=test-helpers.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { TupayClient } from '../client.js';
|
|
2
|
+
import type { ListResult, Transaction, TransactionStatus } from '../types.js';
|
|
3
|
+
import { type ListParams } from '../liste.js';
|
|
4
|
+
export interface ListTransactionsParams extends ListParams {
|
|
5
|
+
status?: TransactionStatus;
|
|
6
|
+
/** Date ISO 8601 — ne renvoie que les transactions postérieures. */
|
|
7
|
+
createdAfter?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class Transactions {
|
|
10
|
+
private readonly client;
|
|
11
|
+
constructor(client: TupayClient);
|
|
12
|
+
retrieve(id: string): Promise<Transaction>;
|
|
13
|
+
list(params?: ListTransactionsParams): Promise<ListResult<Transaction>>;
|
|
14
|
+
/**
|
|
15
|
+
* Parcourt toutes les pages, une transaction à la fois.
|
|
16
|
+
*
|
|
17
|
+
* Avance par CURSEUR et non plus par décalage : une transaction qui
|
|
18
|
+
* naît pendant le parcours ne décale plus la fenêtre, et rien n'est
|
|
19
|
+
* sauté. `offset` reste accepté par `list()`, mais l'itérateur ne s'y
|
|
20
|
+
* appuie plus.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* for await (const tx of tupay.transactions.autoPagingEach({ status: 'succeeded' })) {
|
|
24
|
+
* total += tx.amountXpf
|
|
25
|
+
* }
|
|
26
|
+
*/
|
|
27
|
+
autoPagingEach(params?: ListTransactionsParams): AsyncGenerator<Transaction, void, undefined>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=transactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../../src/resources/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,sBAAuB,SAAQ,UAAU;IACxD,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAE1C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ1C,IAAI,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAcjF;;;;;;;;;;;;OAYG;IACI,cAAc,CACnB,MAAM,GAAE,sBAA2B,GAClC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC;CAqBhD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { normaliserListe, parametresListe, } from '../liste.js';
|
|
2
|
+
export class Transactions {
|
|
3
|
+
client;
|
|
4
|
+
constructor(client) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
async retrieve(id) {
|
|
8
|
+
const { data } = await this.client.request({
|
|
9
|
+
method: 'GET',
|
|
10
|
+
path: `/transactions/${encodeURIComponent(id)}`,
|
|
11
|
+
});
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
async list(params = {}) {
|
|
15
|
+
return normaliserListe(await this.client.request({
|
|
16
|
+
method: 'GET',
|
|
17
|
+
path: '/transactions',
|
|
18
|
+
query: {
|
|
19
|
+
...parametresListe(params),
|
|
20
|
+
status: params.status,
|
|
21
|
+
created_after: params.createdAfter,
|
|
22
|
+
},
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parcourt toutes les pages, une transaction à la fois.
|
|
27
|
+
*
|
|
28
|
+
* Avance par CURSEUR et non plus par décalage : une transaction qui
|
|
29
|
+
* naît pendant le parcours ne décale plus la fenêtre, et rien n'est
|
|
30
|
+
* sauté. `offset` reste accepté par `list()`, mais l'itérateur ne s'y
|
|
31
|
+
* appuie plus.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* for await (const tx of tupay.transactions.autoPagingEach({ status: 'succeeded' })) {
|
|
35
|
+
* total += tx.amountXpf
|
|
36
|
+
* }
|
|
37
|
+
*/
|
|
38
|
+
async *autoPagingEach(params = {}) {
|
|
39
|
+
const limit = params.limit ?? 100;
|
|
40
|
+
let startingAfter = params.startingAfter;
|
|
41
|
+
let precedent;
|
|
42
|
+
for (;;) {
|
|
43
|
+
const page = await this.list({ ...params, limit, offset: undefined, startingAfter });
|
|
44
|
+
for (const transaction of page.data)
|
|
45
|
+
yield transaction;
|
|
46
|
+
const dernier = page.data[page.data.length - 1];
|
|
47
|
+
// Une page vide signifie la fin, même si le serveur annonçait
|
|
48
|
+
// `hasMore` : ceinture et bretelles contre une boucle infinie.
|
|
49
|
+
if (!page.hasMore || !dernier)
|
|
50
|
+
return;
|
|
51
|
+
// Et si le curseur n'avance pas, on s'arrête aussi. Une API plus
|
|
52
|
+
// ancienne que ce SDK ignorerait `starting_after` et rendrait
|
|
53
|
+
// indéfiniment la première page.
|
|
54
|
+
if (dernier.id === precedent)
|
|
55
|
+
return;
|
|
56
|
+
precedent = dernier.id;
|
|
57
|
+
startingAfter = dernier.id;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=transactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../../src/resources/transactions.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,eAAe,GAGhB,MAAM,aAAa,CAAA;AAQpB,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,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,iBAAiB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SAChD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiC,EAAE;QAC5C,OAAO,eAAe,CACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B;YACjD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE;gBACL,GAAG,eAAe,CAAC,MAAM,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,MAAM,CAAC,YAAY;aACnC;SACF,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,CAAC,cAAc,CACnB,SAAiC,EAAE;QAEnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAA;QACjC,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAA;QACxC,IAAI,SAA6B,CAAA;QAEjC,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAA;YACpF,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,WAAW,CAAA;YAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAC/C,8DAA8D;YAC9D,+DAA+D;YAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAM;YACrC,iEAAiE;YACjE,8DAA8D;YAC9D,iCAAiC;YACjC,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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { TupayClient } from '../client.js';
|
|
2
|
+
import type { ListResult, WebhookDelivery, WebhookEndpoint, WebhookEndpointWithSecret, WebhookEventType } from '../types.js';
|
|
3
|
+
import { type ListParams } from '../liste.js';
|
|
4
|
+
export interface CreateWebhookEndpointParams {
|
|
5
|
+
/** HTTPS et port 443 obligatoires en mode live. */
|
|
6
|
+
url: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
/** Défaut `['*']` (tout recevoir). */
|
|
9
|
+
enabledEvents?: (WebhookEventType | '*')[];
|
|
10
|
+
}
|
|
11
|
+
export interface UpdateWebhookEndpointParams {
|
|
12
|
+
url?: string;
|
|
13
|
+
description?: string | null;
|
|
14
|
+
enabledEvents?: (WebhookEventType | '*')[];
|
|
15
|
+
status?: 'enabled' | 'disabled';
|
|
16
|
+
}
|
|
17
|
+
export interface ListDeliveriesParams extends ListParams {
|
|
18
|
+
status?: WebhookDelivery['status'];
|
|
19
|
+
eventType?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class WebhookEndpoints {
|
|
22
|
+
private readonly client;
|
|
23
|
+
constructor(client: TupayClient);
|
|
24
|
+
/**
|
|
25
|
+
* Déclare un endpoint.
|
|
26
|
+
*
|
|
27
|
+
* ⚠️ La réponse est le **seul** endroit où `secret` apparaît. Stockez-le
|
|
28
|
+
* immédiatement (variable d'environnement, coffre) : il n'est plus jamais
|
|
29
|
+
* lisible ensuite. Perdu = supprimer l'endpoint et en recréer un.
|
|
30
|
+
*/
|
|
31
|
+
create(params: CreateWebhookEndpointParams): Promise<WebhookEndpointWithSecret>;
|
|
32
|
+
retrieve(id: string): Promise<WebhookEndpoint>;
|
|
33
|
+
list(params?: ListParams): Promise<ListResult<WebhookEndpoint>>;
|
|
34
|
+
update(id: string, params: UpdateWebhookEndpointParams): Promise<WebhookEndpoint>;
|
|
35
|
+
/** Désactivation logique — l'historique de livraison reste consultable. */
|
|
36
|
+
del(id: string): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Historique de livraison — l'outil de débogage n°1 d'une intégration.
|
|
39
|
+
* Filtrez sur `status: 'failed'` pour voir ce que votre serveur a renvoyé.
|
|
40
|
+
*/
|
|
41
|
+
listDeliveries(id: string, params?: ListDeliveriesParams): Promise<ListResult<WebhookDelivery>>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=webhook-endpoints.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { normaliserListe, parametresListe, } from '../liste.js';
|
|
2
|
+
export class WebhookEndpoints {
|
|
3
|
+
client;
|
|
4
|
+
constructor(client) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Déclare un endpoint.
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ La réponse est le **seul** endroit où `secret` apparaît. Stockez-le
|
|
11
|
+
* immédiatement (variable d'environnement, coffre) : il n'est plus jamais
|
|
12
|
+
* lisible ensuite. Perdu = supprimer l'endpoint et en recréer un.
|
|
13
|
+
*/
|
|
14
|
+
async create(params) {
|
|
15
|
+
const { data } = await this.client.request({
|
|
16
|
+
method: 'POST',
|
|
17
|
+
path: '/webhook-endpoints',
|
|
18
|
+
body: params,
|
|
19
|
+
});
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
async retrieve(id) {
|
|
23
|
+
const { data } = await this.client.request({
|
|
24
|
+
method: 'GET',
|
|
25
|
+
path: `/webhook-endpoints/${encodeURIComponent(id)}`,
|
|
26
|
+
});
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
async list(params = {}) {
|
|
30
|
+
return normaliserListe(await this.client.request({
|
|
31
|
+
method: 'GET',
|
|
32
|
+
path: '/webhook-endpoints',
|
|
33
|
+
query: parametresListe(params),
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
async update(id, params) {
|
|
37
|
+
const { data } = await this.client.request({
|
|
38
|
+
method: 'PATCH',
|
|
39
|
+
path: `/webhook-endpoints/${encodeURIComponent(id)}`,
|
|
40
|
+
body: params,
|
|
41
|
+
});
|
|
42
|
+
return data;
|
|
43
|
+
}
|
|
44
|
+
/** Désactivation logique — l'historique de livraison reste consultable. */
|
|
45
|
+
async del(id) {
|
|
46
|
+
await this.client.request({
|
|
47
|
+
method: 'DELETE',
|
|
48
|
+
path: `/webhook-endpoints/${encodeURIComponent(id)}`,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Historique de livraison — l'outil de débogage n°1 d'une intégration.
|
|
53
|
+
* Filtrez sur `status: 'failed'` pour voir ce que votre serveur a renvoyé.
|
|
54
|
+
*/
|
|
55
|
+
async listDeliveries(id, params = {}) {
|
|
56
|
+
return normaliserListe(await this.client.request({
|
|
57
|
+
method: 'GET',
|
|
58
|
+
path: `/webhook-endpoints/${encodeURIComponent(id)}/deliveries`,
|
|
59
|
+
query: {
|
|
60
|
+
...parametresListe(params),
|
|
61
|
+
status: params.status,
|
|
62
|
+
eventType: params.eventType,
|
|
63
|
+
},
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=webhook-endpoints.js.map
|
|
@@ -0,0 +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"}
|