@fiatden/openpay 0.0.0-stage → 0.0.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 +309 -2
- package/dist/analytics.test.d.ts +2 -0
- package/dist/analytics.test.d.ts.map +1 -0
- package/dist/analytics.test.js +184 -0
- package/dist/apps.test.d.ts +2 -0
- package/dist/apps.test.d.ts.map +1 -0
- package/dist/apps.test.js +92 -0
- package/dist/http.d.ts +22 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +56 -0
- package/dist/http.test.d.ts +2 -0
- package/dist/http.test.d.ts.map +1 -0
- package/dist/http.test.js +47 -0
- package/dist/index.d.ts +157 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +207 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +55 -0
- package/dist/resources/analytics.d.ts +220 -0
- package/dist/resources/analytics.d.ts.map +1 -0
- package/dist/resources/analytics.js +70 -0
- package/dist/resources/apiKeys.d.ts +22 -0
- package/dist/resources/apiKeys.d.ts.map +1 -0
- package/dist/resources/apiKeys.js +40 -0
- package/dist/resources/apps.d.ts +142 -0
- package/dist/resources/apps.d.ts.map +1 -0
- package/dist/resources/apps.js +49 -0
- package/dist/resources/auth.d.ts +71 -0
- package/dist/resources/auth.d.ts.map +1 -0
- package/dist/resources/auth.js +71 -0
- package/dist/resources/billing.d.ts +148 -0
- package/dist/resources/billing.d.ts.map +1 -0
- package/dist/resources/billing.js +55 -0
- package/dist/resources/charges.d.ts +67 -0
- package/dist/resources/charges.d.ts.map +1 -0
- package/dist/resources/charges.js +103 -0
- package/dist/resources/checkout.d.ts +80 -0
- package/dist/resources/checkout.d.ts.map +1 -0
- package/dist/resources/checkout.js +36 -0
- package/dist/resources/coupons.d.ts +66 -0
- package/dist/resources/coupons.d.ts.map +1 -0
- package/dist/resources/coupons.js +39 -0
- package/dist/resources/currencies.d.ts +45 -0
- package/dist/resources/currencies.d.ts.map +1 -0
- package/dist/resources/currencies.js +48 -0
- package/dist/resources/currencyPortfolio.d.ts +62 -0
- package/dist/resources/currencyPortfolio.d.ts.map +1 -0
- package/dist/resources/currencyPortfolio.js +34 -0
- package/dist/resources/customers.d.ts +171 -0
- package/dist/resources/customers.d.ts.map +1 -0
- package/dist/resources/customers.js +72 -0
- package/dist/resources/disputes.d.ts +48 -0
- package/dist/resources/disputes.d.ts.map +1 -0
- package/dist/resources/disputes.js +47 -0
- package/dist/resources/emailTemplates.d.ts +55 -0
- package/dist/resources/emailTemplates.d.ts.map +1 -0
- package/dist/resources/emailTemplates.js +49 -0
- package/dist/resources/financialAccounts.d.ts +49 -0
- package/dist/resources/financialAccounts.d.ts.map +1 -0
- package/dist/resources/financialAccounts.js +22 -0
- package/dist/resources/fx.d.ts +34 -0
- package/dist/resources/fx.d.ts.map +1 -0
- package/dist/resources/fx.js +27 -0
- package/dist/resources/invoices.d.ts +32 -0
- package/dist/resources/invoices.d.ts.map +1 -0
- package/dist/resources/invoices.js +36 -0
- package/dist/resources/merchants.d.ts +95 -0
- package/dist/resources/merchants.d.ts.map +1 -0
- package/dist/resources/merchants.js +113 -0
- package/dist/resources/metering.d.ts +65 -0
- package/dist/resources/metering.d.ts.map +1 -0
- package/dist/resources/metering.js +36 -0
- package/dist/resources/paymentLinks.d.ts +45 -0
- package/dist/resources/paymentLinks.d.ts.map +1 -0
- package/dist/resources/paymentLinks.js +32 -0
- package/dist/resources/paymentMethods.d.ts +34 -0
- package/dist/resources/paymentMethods.d.ts.map +1 -0
- package/dist/resources/paymentMethods.js +17 -0
- package/dist/resources/payouts.d.ts +51 -0
- package/dist/resources/payouts.d.ts.map +1 -0
- package/dist/resources/payouts.js +62 -0
- package/dist/resources/platform.d.ts +72 -0
- package/dist/resources/platform.d.ts.map +1 -0
- package/dist/resources/platform.js +42 -0
- package/dist/resources/providers.d.ts +61 -0
- package/dist/resources/providers.d.ts.map +1 -0
- package/dist/resources/providers.js +42 -0
- package/dist/resources/reconciliation.d.ts +125 -0
- package/dist/resources/reconciliation.d.ts.map +1 -0
- package/dist/resources/reconciliation.js +55 -0
- package/dist/resources/referrals.d.ts +25 -0
- package/dist/resources/referrals.d.ts.map +1 -0
- package/dist/resources/referrals.js +16 -0
- package/dist/resources/riskReview.d.ts +96 -0
- package/dist/resources/riskReview.d.ts.map +1 -0
- package/dist/resources/riskReview.js +44 -0
- package/dist/resources/roles.d.ts +59 -0
- package/dist/resources/roles.d.ts.map +1 -0
- package/dist/resources/roles.js +42 -0
- package/dist/resources/status.d.ts +20 -0
- package/dist/resources/status.d.ts.map +1 -0
- package/dist/resources/status.js +14 -0
- package/dist/resources/subscriptions.d.ts +46 -0
- package/dist/resources/subscriptions.d.ts.map +1 -0
- package/dist/resources/subscriptions.js +69 -0
- package/dist/resources/totp.d.ts +36 -0
- package/dist/resources/totp.d.ts.map +1 -0
- package/dist/resources/totp.js +41 -0
- package/dist/resources/wallets.d.ts +128 -0
- package/dist/resources/wallets.d.ts.map +1 -0
- package/dist/resources/wallets.js +74 -0
- package/dist/resources/webhooks.d.ts +47 -0
- package/dist/resources/webhooks.d.ts.map +1 -0
- package/dist/resources/webhooks.js +41 -0
- package/dist/types.d.ts +484 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +15 -0
- package/package.json +46 -4
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CouponsResource = void 0;
|
|
4
|
+
class CouponsResource {
|
|
5
|
+
client;
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
async create(params) {
|
|
10
|
+
return this.client.request('/v1/coupons', {
|
|
11
|
+
method: 'POST',
|
|
12
|
+
body: params,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
async list(params) {
|
|
16
|
+
return this.client.request('/v1/coupons', { params });
|
|
17
|
+
}
|
|
18
|
+
async get(id) {
|
|
19
|
+
return this.client.request(`/v1/coupons/${id}`);
|
|
20
|
+
}
|
|
21
|
+
async update(id, params) {
|
|
22
|
+
return this.client.request(`/v1/coupons/${id}`, {
|
|
23
|
+
method: 'PATCH',
|
|
24
|
+
body: params,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async deactivate(id) {
|
|
28
|
+
return this.client.request(`/v1/coupons/${id}`, {
|
|
29
|
+
method: 'DELETE',
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async validate(params) {
|
|
33
|
+
return this.client.request('/v1/coupons/validate', {
|
|
34
|
+
method: 'POST',
|
|
35
|
+
body: params,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.CouponsResource = CouponsResource;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { HttpClient } from '../http';
|
|
2
|
+
export interface CurrencyRecord {
|
|
3
|
+
code: string;
|
|
4
|
+
name: string;
|
|
5
|
+
symbol: string;
|
|
6
|
+
decimals: number;
|
|
7
|
+
is_active: boolean;
|
|
8
|
+
is_fiat: boolean;
|
|
9
|
+
sort_order: number;
|
|
10
|
+
created_at: string;
|
|
11
|
+
updated_at: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Admin-managed ISO 4217 currency registry. GET returns the active
|
|
15
|
+
* list to anyone with an API key. POST/PATCH/DELETE are admin-only
|
|
16
|
+
* and let operators onboard new currencies and deactivate retired
|
|
17
|
+
* ones without a schema migration.
|
|
18
|
+
*/
|
|
19
|
+
export declare class CurrenciesResource {
|
|
20
|
+
private client;
|
|
21
|
+
constructor(client: HttpClient);
|
|
22
|
+
list(): Promise<{
|
|
23
|
+
data: CurrencyRecord[];
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Upsert. If the currency code exists, its other fields are
|
|
27
|
+
* overwritten; otherwise it's inserted. Admin-only.
|
|
28
|
+
*/
|
|
29
|
+
upsert(body: Omit<CurrencyRecord, 'created_at' | 'updated_at'>): Promise<CurrencyRecord>;
|
|
30
|
+
/**
|
|
31
|
+
* Partial update of a currency's metadata (name, symbol, decimals,
|
|
32
|
+
* sort_order, is_active, is_fiat). Code is immutable. Admin-only.
|
|
33
|
+
*/
|
|
34
|
+
update(code: string, body: Partial<Omit<CurrencyRecord, 'code' | 'created_at' | 'updated_at'>>): Promise<CurrencyRecord>;
|
|
35
|
+
/**
|
|
36
|
+
* Soft delete: sets is_active=false. The currency stays in the DB
|
|
37
|
+
* for audit history; fx-service validates only against active codes
|
|
38
|
+
* so this takes effect immediately for new settlements.
|
|
39
|
+
*/
|
|
40
|
+
deactivate(code: string): Promise<{
|
|
41
|
+
code: string;
|
|
42
|
+
is_active: false;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=currencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currencies.d.ts","sourceRoot":"","sources":["../../src/resources/currencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID;;;;;GAKG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEhC,IAAI,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IAIjD;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAO9F;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAO9H;;;;OAIG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,CAAA;KAAE,CAAC;CAM5E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CurrenciesResource = void 0;
|
|
4
|
+
// ── Resource ───────────────────────────────────────────────────────
|
|
5
|
+
/**
|
|
6
|
+
* Admin-managed ISO 4217 currency registry. GET returns the active
|
|
7
|
+
* list to anyone with an API key. POST/PATCH/DELETE are admin-only
|
|
8
|
+
* and let operators onboard new currencies and deactivate retired
|
|
9
|
+
* ones without a schema migration.
|
|
10
|
+
*/
|
|
11
|
+
class CurrenciesResource {
|
|
12
|
+
client;
|
|
13
|
+
constructor(client) {
|
|
14
|
+
this.client = client;
|
|
15
|
+
}
|
|
16
|
+
async list() {
|
|
17
|
+
return this.client.request('/v1/currencies');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Upsert. If the currency code exists, its other fields are
|
|
21
|
+
* overwritten; otherwise it's inserted. Admin-only.
|
|
22
|
+
*/
|
|
23
|
+
async upsert(body) {
|
|
24
|
+
return this.client.request('/v1/currencies', {
|
|
25
|
+
method: 'POST',
|
|
26
|
+
body,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Partial update of a currency's metadata (name, symbol, decimals,
|
|
31
|
+
* sort_order, is_active, is_fiat). Code is immutable. Admin-only.
|
|
32
|
+
*/
|
|
33
|
+
async update(code, body) {
|
|
34
|
+
return this.client.request(`/v1/currencies/${encodeURIComponent(code)}`, {
|
|
35
|
+
method: 'PATCH',
|
|
36
|
+
body,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Soft delete: sets is_active=false. The currency stays in the DB
|
|
41
|
+
* for audit history; fx-service validates only against active codes
|
|
42
|
+
* so this takes effect immediately for new settlements.
|
|
43
|
+
*/
|
|
44
|
+
async deactivate(code) {
|
|
45
|
+
return this.client.request(`/v1/currencies/${encodeURIComponent(code)}`, { method: 'DELETE' });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.CurrenciesResource = CurrenciesResource;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { HttpClient } from '../http';
|
|
2
|
+
export interface PortfolioCurrency {
|
|
3
|
+
id?: string;
|
|
4
|
+
currency_code: string;
|
|
5
|
+
is_base: boolean;
|
|
6
|
+
is_enabled: boolean;
|
|
7
|
+
custom_symbol: string | null;
|
|
8
|
+
custom_decimals: number | null;
|
|
9
|
+
}
|
|
10
|
+
export interface CatalogCurrency {
|
|
11
|
+
code: string;
|
|
12
|
+
name: string;
|
|
13
|
+
symbol: string;
|
|
14
|
+
decimals: number;
|
|
15
|
+
in_portfolio: boolean;
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
custom_symbol: string | null;
|
|
18
|
+
custom_decimals: number | null;
|
|
19
|
+
}
|
|
20
|
+
export declare class CurrencyPortfolioResource {
|
|
21
|
+
private client;
|
|
22
|
+
constructor(client: HttpClient);
|
|
23
|
+
/** The merchant's enabled currencies and their base currency. */
|
|
24
|
+
getPortfolio(): Promise<{
|
|
25
|
+
data: PortfolioCurrency[];
|
|
26
|
+
base_currency: string | null;
|
|
27
|
+
}>;
|
|
28
|
+
/** Every currency the merchant can enable (platform registry + custom). */
|
|
29
|
+
getCatalog(): Promise<{
|
|
30
|
+
data: CatalogCurrency[];
|
|
31
|
+
}>;
|
|
32
|
+
/** Enable / upsert a currency in the portfolio (optionally as base). */
|
|
33
|
+
enable(params: {
|
|
34
|
+
currency_code: string;
|
|
35
|
+
is_base?: boolean;
|
|
36
|
+
custom_symbol?: string | null;
|
|
37
|
+
custom_decimals?: number | null;
|
|
38
|
+
}): Promise<{
|
|
39
|
+
data: PortfolioCurrency[];
|
|
40
|
+
base_currency: string | null;
|
|
41
|
+
}>;
|
|
42
|
+
/** Update presentation overrides or membership for a currency. */
|
|
43
|
+
update(code: string, patch: {
|
|
44
|
+
custom_symbol?: string | null;
|
|
45
|
+
custom_decimals?: number | null;
|
|
46
|
+
is_enabled?: boolean;
|
|
47
|
+
}): Promise<{
|
|
48
|
+
data: PortfolioCurrency[];
|
|
49
|
+
base_currency: string | null;
|
|
50
|
+
}>;
|
|
51
|
+
/** Remove a currency from the portfolio. */
|
|
52
|
+
remove(code: string): Promise<{
|
|
53
|
+
data: PortfolioCurrency[];
|
|
54
|
+
base_currency: string | null;
|
|
55
|
+
}>;
|
|
56
|
+
/** Select the merchant's base (settlement) currency. */
|
|
57
|
+
setBase(currencyCode: string): Promise<{
|
|
58
|
+
data: PortfolioCurrency[];
|
|
59
|
+
base_currency: string;
|
|
60
|
+
}>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=currencyPortfolio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currencyPortfolio.d.ts","sourceRoot":"","sources":["../../src/resources/currencyPortfolio.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,qBAAa,yBAAyB;IACxB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC,iEAAiE;IAC3D,YAAY,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAI1F,2EAA2E;IACrE,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC;IAIxD,wEAAwE;IAClE,MAAM,CAAC,MAAM,EAAE;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAIxE,kEAAkE;IAC5D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAIjM,4CAA4C;IACtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAIhG,wDAAwD;IAClD,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAGnG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CurrencyPortfolioResource = void 0;
|
|
4
|
+
class CurrencyPortfolioResource {
|
|
5
|
+
client;
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
/** The merchant's enabled currencies and their base currency. */
|
|
10
|
+
async getPortfolio() {
|
|
11
|
+
return this.client.request('/v1/currencies/portfolio');
|
|
12
|
+
}
|
|
13
|
+
/** Every currency the merchant can enable (platform registry + custom). */
|
|
14
|
+
async getCatalog() {
|
|
15
|
+
return this.client.request('/v1/currencies/catalog');
|
|
16
|
+
}
|
|
17
|
+
/** Enable / upsert a currency in the portfolio (optionally as base). */
|
|
18
|
+
async enable(params) {
|
|
19
|
+
return this.client.request('/v1/currencies/portfolio', { method: 'POST', body: params });
|
|
20
|
+
}
|
|
21
|
+
/** Update presentation overrides or membership for a currency. */
|
|
22
|
+
async update(code, patch) {
|
|
23
|
+
return this.client.request(`/v1/currencies/portfolio/${encodeURIComponent(code)}`, { method: 'PATCH', body: patch });
|
|
24
|
+
}
|
|
25
|
+
/** Remove a currency from the portfolio. */
|
|
26
|
+
async remove(code) {
|
|
27
|
+
return this.client.request(`/v1/currencies/portfolio/${encodeURIComponent(code)}`, { method: 'DELETE' });
|
|
28
|
+
}
|
|
29
|
+
/** Select the merchant's base (settlement) currency. */
|
|
30
|
+
async setBase(currencyCode) {
|
|
31
|
+
return this.client.request('/v1/currencies/portfolio/base', { method: 'POST', body: { currency_code: currencyCode } });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.CurrencyPortfolioResource = CurrencyPortfolioResource;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { HttpClient } from '../http';
|
|
2
|
+
import { TransactionSdk as Transaction, SubscriptionSdk as Subscription, DisputeSdk as Dispute } from '../types';
|
|
3
|
+
export interface Customer {
|
|
4
|
+
id: string;
|
|
5
|
+
email: string;
|
|
6
|
+
name: string | null;
|
|
7
|
+
phone: string | null;
|
|
8
|
+
default_app_id: string | null;
|
|
9
|
+
metadata: Record<string, unknown>;
|
|
10
|
+
first_seen_at: string;
|
|
11
|
+
last_seen_at: string;
|
|
12
|
+
transaction_count: number;
|
|
13
|
+
successful_payment_count: number;
|
|
14
|
+
failed_payment_count: number;
|
|
15
|
+
refund_count: number;
|
|
16
|
+
dispute_count: number;
|
|
17
|
+
subscription_count: number;
|
|
18
|
+
payment_method_count: number;
|
|
19
|
+
lifetime_spend_cents: number;
|
|
20
|
+
risk_score: number;
|
|
21
|
+
risk_signals: Record<string, unknown>;
|
|
22
|
+
acquisition_source: string | null;
|
|
23
|
+
acquisition_referral_code: string | null;
|
|
24
|
+
gdpr_erased_at: string | null;
|
|
25
|
+
created_at: string;
|
|
26
|
+
updated_at: string;
|
|
27
|
+
}
|
|
28
|
+
export interface PaymentMethod {
|
|
29
|
+
id: string;
|
|
30
|
+
provider: 'paystack' | 'flutterwave' | 'korapay' | 'hyperswitch';
|
|
31
|
+
card_type: string | null;
|
|
32
|
+
last4: string | null;
|
|
33
|
+
exp_month: string | null;
|
|
34
|
+
exp_year: string | null;
|
|
35
|
+
bin: string | null;
|
|
36
|
+
bank_name: string | null;
|
|
37
|
+
brand: string | null;
|
|
38
|
+
reusable: boolean;
|
|
39
|
+
is_default: boolean;
|
|
40
|
+
first_used_at: string | null;
|
|
41
|
+
last_used_at: string | null;
|
|
42
|
+
usage_count: number;
|
|
43
|
+
app_id: string | null;
|
|
44
|
+
created_at: string;
|
|
45
|
+
updated_at: string;
|
|
46
|
+
}
|
|
47
|
+
export interface CustomerRiskScore {
|
|
48
|
+
id: string;
|
|
49
|
+
risk_score: number;
|
|
50
|
+
risk_signals: {
|
|
51
|
+
dispute_rate: number;
|
|
52
|
+
failure_rate: number;
|
|
53
|
+
refund_rate: number;
|
|
54
|
+
dispute_count: number;
|
|
55
|
+
successful_payments: number;
|
|
56
|
+
failed_payments: number;
|
|
57
|
+
refunded_payments: number;
|
|
58
|
+
computed_at: string;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export interface CustomerExportPayload {
|
|
62
|
+
generated_at: string;
|
|
63
|
+
customer_id: string;
|
|
64
|
+
customer: Customer | null;
|
|
65
|
+
transactions: Transaction[];
|
|
66
|
+
payment_methods: Omit<PaymentMethod, 'auth_token'>[];
|
|
67
|
+
subscriptions: Subscription[];
|
|
68
|
+
disputes: Dispute[];
|
|
69
|
+
}
|
|
70
|
+
export declare class CustomersResource {
|
|
71
|
+
private client;
|
|
72
|
+
constructor(client: HttpClient);
|
|
73
|
+
list(params?: {
|
|
74
|
+
search?: string;
|
|
75
|
+
email?: string;
|
|
76
|
+
sort?: 'last_seen' | 'first_seen' | 'lifetime_spend_cents' | 'risk_score' | 'transaction_count';
|
|
77
|
+
order?: 'asc' | 'desc';
|
|
78
|
+
limit?: number;
|
|
79
|
+
offset?: number;
|
|
80
|
+
}): Promise<{
|
|
81
|
+
data: Customer[];
|
|
82
|
+
has_more: boolean;
|
|
83
|
+
}>;
|
|
84
|
+
get(id: string): Promise<Customer>;
|
|
85
|
+
paymentMethods(id: string): Promise<{
|
|
86
|
+
data: PaymentMethod[];
|
|
87
|
+
}>;
|
|
88
|
+
transactions(id: string, params?: {
|
|
89
|
+
limit?: number;
|
|
90
|
+
offset?: number;
|
|
91
|
+
status?: string;
|
|
92
|
+
type?: string;
|
|
93
|
+
}): Promise<{
|
|
94
|
+
data: Transaction[];
|
|
95
|
+
has_more: boolean;
|
|
96
|
+
}>;
|
|
97
|
+
subscriptions(id: string): Promise<{
|
|
98
|
+
data: (Subscription & {
|
|
99
|
+
plan_name: string;
|
|
100
|
+
plan_amount: number;
|
|
101
|
+
plan_currency: string;
|
|
102
|
+
})[];
|
|
103
|
+
}>;
|
|
104
|
+
disputes(id: string): Promise<{
|
|
105
|
+
data: (Dispute & {
|
|
106
|
+
evidence_submissions_count: number;
|
|
107
|
+
})[];
|
|
108
|
+
}>;
|
|
109
|
+
recomputeRisk(id: string): Promise<CustomerRiskScore>;
|
|
110
|
+
update(id: string, body: {
|
|
111
|
+
name?: string;
|
|
112
|
+
phone?: string;
|
|
113
|
+
metadata?: Record<string, unknown>;
|
|
114
|
+
default_app_id?: string | null;
|
|
115
|
+
}): Promise<Customer>;
|
|
116
|
+
exportData(id: string): Promise<{
|
|
117
|
+
export_id: string;
|
|
118
|
+
payload: CustomerExportPayload;
|
|
119
|
+
}>;
|
|
120
|
+
erase(id: string): Promise<{
|
|
121
|
+
id: string;
|
|
122
|
+
erased_at: string;
|
|
123
|
+
erasure_hash: string;
|
|
124
|
+
message: string;
|
|
125
|
+
}>;
|
|
126
|
+
/** List a customer's custom-field values, optionally for one workspace. */
|
|
127
|
+
listCustomFields(id: string, params?: {
|
|
128
|
+
app_id?: string;
|
|
129
|
+
}): Promise<{
|
|
130
|
+
data: Array<{
|
|
131
|
+
id: string;
|
|
132
|
+
customer_id: string;
|
|
133
|
+
app_id: string;
|
|
134
|
+
field_key: string;
|
|
135
|
+
field_value: unknown;
|
|
136
|
+
created_at: string;
|
|
137
|
+
updated_at: string;
|
|
138
|
+
}>;
|
|
139
|
+
}>;
|
|
140
|
+
/** Write a typed custom-field value (the field must be declared on the app schema). */
|
|
141
|
+
setCustomField(id: string, fieldKey: string, params: {
|
|
142
|
+
app_id: string;
|
|
143
|
+
value: unknown;
|
|
144
|
+
}): Promise<Record<string, unknown>>;
|
|
145
|
+
/** Remove a custom-field value. */
|
|
146
|
+
deleteCustomField(id: string, fieldKey: string, params: {
|
|
147
|
+
app_id: string;
|
|
148
|
+
}): Promise<{
|
|
149
|
+
deleted: boolean;
|
|
150
|
+
}>;
|
|
151
|
+
/** List the customer's consent records. */
|
|
152
|
+
listConsents(id: string): Promise<{
|
|
153
|
+
data: Array<Record<string, unknown>>;
|
|
154
|
+
}>;
|
|
155
|
+
/** Record a consent decision for a purpose. */
|
|
156
|
+
recordConsent(id: string, params: {
|
|
157
|
+
purpose: string;
|
|
158
|
+
granted: boolean;
|
|
159
|
+
policy_version?: string;
|
|
160
|
+
source?: string;
|
|
161
|
+
}): Promise<Record<string, unknown>>;
|
|
162
|
+
/** Export customers as CSV — mirrors GET /v1/customers/export (same filters as list). Returns raw CSV text. */
|
|
163
|
+
exportCsv(params?: {
|
|
164
|
+
search?: string;
|
|
165
|
+
email?: string;
|
|
166
|
+
app_id?: string;
|
|
167
|
+
start_date?: string;
|
|
168
|
+
end_date?: string;
|
|
169
|
+
}): Promise<string>;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=customers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomersResource = void 0;
|
|
4
|
+
class CustomersResource {
|
|
5
|
+
client;
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
async list(params) {
|
|
10
|
+
const qs = params ? '?' + new URLSearchParams(params).toString() : '';
|
|
11
|
+
return this.client.request(`/v1/customers${qs}`);
|
|
12
|
+
}
|
|
13
|
+
async get(id) {
|
|
14
|
+
return this.client.request(`/v1/customers/${id}`);
|
|
15
|
+
}
|
|
16
|
+
async paymentMethods(id) {
|
|
17
|
+
return this.client.request(`/v1/customers/${id}/payment-methods`);
|
|
18
|
+
}
|
|
19
|
+
async transactions(id, params) {
|
|
20
|
+
const qs = params ? '?' + new URLSearchParams(params).toString() : '';
|
|
21
|
+
return this.client.request(`/v1/customers/${id}/transactions${qs}`);
|
|
22
|
+
}
|
|
23
|
+
async subscriptions(id) {
|
|
24
|
+
return this.client.request(`/v1/customers/${id}/subscriptions`);
|
|
25
|
+
}
|
|
26
|
+
async disputes(id) {
|
|
27
|
+
return this.client.request(`/v1/customers/${id}/disputes`);
|
|
28
|
+
}
|
|
29
|
+
async recomputeRisk(id) {
|
|
30
|
+
return this.client.request(`/v1/customers/${id}/risk-score`, { method: 'POST' });
|
|
31
|
+
}
|
|
32
|
+
async update(id, body) {
|
|
33
|
+
return this.client.request(`/v1/customers/${id}`, { method: 'PATCH', body });
|
|
34
|
+
}
|
|
35
|
+
async exportData(id) {
|
|
36
|
+
return this.client.request(`/v1/customers/${id}/export`, { method: 'POST' });
|
|
37
|
+
}
|
|
38
|
+
async erase(id) {
|
|
39
|
+
return this.client.request(`/v1/customers/${id}/erase`, { method: 'POST' });
|
|
40
|
+
}
|
|
41
|
+
// ── Per-app typed custom fields (migration 022) ───────────
|
|
42
|
+
/** List a customer's custom-field values, optionally for one workspace. */
|
|
43
|
+
async listCustomFields(id, params) {
|
|
44
|
+
return this.client.request(`/v1/customers/${id}/custom-fields`, { params });
|
|
45
|
+
}
|
|
46
|
+
/** Write a typed custom-field value (the field must be declared on the app schema). */
|
|
47
|
+
async setCustomField(id, fieldKey, params) {
|
|
48
|
+
return this.client.request(`/v1/customers/${id}/custom-fields/${encodeURIComponent(fieldKey)}`, { method: 'PUT', body: params });
|
|
49
|
+
}
|
|
50
|
+
/** Remove a custom-field value. */
|
|
51
|
+
async deleteCustomField(id, fieldKey, params) {
|
|
52
|
+
return this.client.request(`/v1/customers/${id}/custom-fields/${encodeURIComponent(fieldKey)}`, { method: 'DELETE', params: { app_id: params.app_id } });
|
|
53
|
+
}
|
|
54
|
+
// ── Consent tracking (5.2) ────────────────────────────────
|
|
55
|
+
/** List the customer's consent records. */
|
|
56
|
+
async listConsents(id) {
|
|
57
|
+
return this.client.request(`/v1/customers/${id}/consents`);
|
|
58
|
+
}
|
|
59
|
+
/** Record a consent decision for a purpose. */
|
|
60
|
+
async recordConsent(id, params) {
|
|
61
|
+
return this.client.request(`/v1/customers/${id}/consents`, { method: 'POST', body: params });
|
|
62
|
+
}
|
|
63
|
+
/** Export customers as CSV — mirrors GET /v1/customers/export (same filters as list). Returns raw CSV text. */
|
|
64
|
+
async exportCsv(params) {
|
|
65
|
+
const qs = params ? '?' + Object.entries(params).filter(([, v]) => v !== undefined).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`).join('&') : '';
|
|
66
|
+
const res = await fetch(`${this.client.baseUrl}/v1/customers/export${qs}`, { headers: { 'x-api-key': this.client.apiKey } });
|
|
67
|
+
if (!res.ok)
|
|
68
|
+
throw new Error(`Customers export failed: ${res.status}`);
|
|
69
|
+
return res.text();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.CustomersResource = CustomersResource;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { HttpClient } from '../http';
|
|
2
|
+
import { Dispute, DisputeEvidenceSubmissionSdk as DisputeEvidenceSubmission, ListResponse } from '../types';
|
|
3
|
+
export declare class DisputesResource {
|
|
4
|
+
private client;
|
|
5
|
+
constructor(client: HttpClient);
|
|
6
|
+
/** List all disputes, optionally filtered by status or provider. */
|
|
7
|
+
list(params?: {
|
|
8
|
+
status?: string;
|
|
9
|
+
provider?: string;
|
|
10
|
+
}): Promise<ListResponse<Dispute>>;
|
|
11
|
+
/** Fetch a single dispute with its full evidence submissions history. */
|
|
12
|
+
get(id: string): Promise<Dispute & {
|
|
13
|
+
evidence_submissions: DisputeEvidenceSubmission[];
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Submit an evidence packet for a dispute. Compiles a structured
|
|
17
|
+
* packet from the linked transaction (refund history, customer
|
|
18
|
+
* info, prior submissions) and persists it. Best-effort calls
|
|
19
|
+
* provider.submitDisputeEvidence when the provider exposes one.
|
|
20
|
+
*/
|
|
21
|
+
submitEvidence(disputeId: string, submission: {
|
|
22
|
+
narrative: string;
|
|
23
|
+
evidence?: Record<string, unknown>;
|
|
24
|
+
file_urls?: string[];
|
|
25
|
+
auto_generate?: boolean;
|
|
26
|
+
template_version?: string;
|
|
27
|
+
}): Promise<DisputeEvidenceSubmission>;
|
|
28
|
+
/** List every evidence submission attempt for a dispute. */
|
|
29
|
+
listEvidenceSubmissions(disputeId: string): Promise<{
|
|
30
|
+
data: DisputeEvidenceSubmission[];
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Mark a packet as hand-submitted to the upstream provider's
|
|
34
|
+
* dashboard. Used for providers without a public API endpoint
|
|
35
|
+
* for evidence submission (most of them today).
|
|
36
|
+
*/
|
|
37
|
+
markSubmitted(disputeId: string, submissionId: string): Promise<DisputeEvidenceSubmission>;
|
|
38
|
+
/** Export disputes as CSV — mirrors GET /v1/disputes/export (status/provider/app_id/search/date). Returns raw CSV text. */
|
|
39
|
+
exportCsv(params?: {
|
|
40
|
+
status?: string;
|
|
41
|
+
provider?: string;
|
|
42
|
+
app_id?: string;
|
|
43
|
+
search?: string;
|
|
44
|
+
start_date?: string;
|
|
45
|
+
end_date?: string;
|
|
46
|
+
}): Promise<string>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=disputes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disputes.d.ts","sourceRoot":"","sources":["../../src/resources/disputes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,4BAA4B,IAAI,yBAAyB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE5G,qBAAa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC,oEAAoE;IAC9D,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAI3F,yEAAyE;IACnE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG;QAAE,oBAAoB,EAAE,yBAAyB,EAAE,CAAA;KAAE,CAAC;IAI/F;;;;;OAKG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GACA,OAAO,CAAC,yBAAyB,CAAC;IAOrC,4DAA4D;IACtD,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,yBAAyB,EAAE,CAAA;KAAE,CAAC;IAIhG;;;;OAIG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAOhG,2HAA2H;IACrH,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAM5J"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DisputesResource = void 0;
|
|
4
|
+
class DisputesResource {
|
|
5
|
+
client;
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
/** List all disputes, optionally filtered by status or provider. */
|
|
10
|
+
async list(params) {
|
|
11
|
+
return this.client.request('/v1/disputes', { params });
|
|
12
|
+
}
|
|
13
|
+
/** Fetch a single dispute with its full evidence submissions history. */
|
|
14
|
+
async get(id) {
|
|
15
|
+
return this.client.request(`/v1/disputes/${id}`);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Submit an evidence packet for a dispute. Compiles a structured
|
|
19
|
+
* packet from the linked transaction (refund history, customer
|
|
20
|
+
* info, prior submissions) and persists it. Best-effort calls
|
|
21
|
+
* provider.submitDisputeEvidence when the provider exposes one.
|
|
22
|
+
*/
|
|
23
|
+
async submitEvidence(disputeId, submission) {
|
|
24
|
+
return this.client.request(`/v1/disputes/${disputeId}/evidence`, { method: 'POST', body: submission });
|
|
25
|
+
}
|
|
26
|
+
/** List every evidence submission attempt for a dispute. */
|
|
27
|
+
async listEvidenceSubmissions(disputeId) {
|
|
28
|
+
return this.client.request(`/v1/disputes/${disputeId}/evidence-submissions`);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Mark a packet as hand-submitted to the upstream provider's
|
|
32
|
+
* dashboard. Used for providers without a public API endpoint
|
|
33
|
+
* for evidence submission (most of them today).
|
|
34
|
+
*/
|
|
35
|
+
async markSubmitted(disputeId, submissionId) {
|
|
36
|
+
return this.client.request(`/v1/disputes/${disputeId}/evidence-submissions/${submissionId}/mark-submitted`, { method: 'POST' });
|
|
37
|
+
}
|
|
38
|
+
/** Export disputes as CSV — mirrors GET /v1/disputes/export (status/provider/app_id/search/date). Returns raw CSV text. */
|
|
39
|
+
async exportCsv(params) {
|
|
40
|
+
const qs = params ? '?' + Object.entries(params).filter(([, v]) => v !== undefined).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`).join('&') : '';
|
|
41
|
+
const res = await fetch(`${this.client.baseUrl}/v1/disputes/export${qs}`, { headers: { 'x-api-key': this.client.apiKey } });
|
|
42
|
+
if (!res.ok)
|
|
43
|
+
throw new Error(`Disputes export failed: ${res.status}`);
|
|
44
|
+
return res.text();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.DisputesResource = DisputesResource;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { HttpClient } from '../http';
|
|
2
|
+
import { ListResponse } from '../types';
|
|
3
|
+
export type EmailTemplateType = 'welcome' | 'payment_receipt' | 'password_reset' | 'payment_failed' | 'verification' | 'custom';
|
|
4
|
+
export interface EmailTemplate {
|
|
5
|
+
id: string;
|
|
6
|
+
merchant_id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
template_type: EmailTemplateType;
|
|
9
|
+
subject_template: string;
|
|
10
|
+
html_content: string;
|
|
11
|
+
variables: string[];
|
|
12
|
+
is_default: boolean;
|
|
13
|
+
is_active: boolean;
|
|
14
|
+
created_at: string;
|
|
15
|
+
updated_at: string;
|
|
16
|
+
}
|
|
17
|
+
export interface EmailTemplateCreateParams {
|
|
18
|
+
name: string;
|
|
19
|
+
template_type: EmailTemplateType;
|
|
20
|
+
subject_template: string;
|
|
21
|
+
html_content: string;
|
|
22
|
+
variables?: string[];
|
|
23
|
+
is_default?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface EmailTemplateUpdateParams {
|
|
26
|
+
name?: string;
|
|
27
|
+
subject_template?: string;
|
|
28
|
+
html_content?: string;
|
|
29
|
+
variables?: string[];
|
|
30
|
+
is_default?: boolean;
|
|
31
|
+
is_active?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare class EmailTemplatesResource {
|
|
34
|
+
private client;
|
|
35
|
+
constructor(client: HttpClient);
|
|
36
|
+
/** List all email templates for the authenticated merchant. */
|
|
37
|
+
list(params?: {
|
|
38
|
+
template_type?: EmailTemplateType;
|
|
39
|
+
limit?: number;
|
|
40
|
+
}): Promise<ListResponse<EmailTemplate>>;
|
|
41
|
+
/** Get a single email template by ID. */
|
|
42
|
+
get(id: string): Promise<EmailTemplate>;
|
|
43
|
+
/** Create a new email template. */
|
|
44
|
+
create(params: EmailTemplateCreateParams): Promise<EmailTemplate>;
|
|
45
|
+
/** Update an existing email template. */
|
|
46
|
+
update(id: string, params: EmailTemplateUpdateParams): Promise<EmailTemplate>;
|
|
47
|
+
/** Soft-delete (deactivate) an email template. */
|
|
48
|
+
delete(id: string): Promise<{
|
|
49
|
+
deleted: boolean;
|
|
50
|
+
id: string;
|
|
51
|
+
}>;
|
|
52
|
+
/** Preview a template rendered with sample data (returns HTML). */
|
|
53
|
+
preview(id: string): Promise<string>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=emailTemplates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emailTemplates.d.ts","sourceRoot":"","sources":["../../src/resources/emailTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,sBAAsB;IACrB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC,+DAA+D;IACzD,IAAI,CAAC,MAAM,CAAC,EAAE;QAClB,aAAa,CAAC,EAAE,iBAAiB,CAAC;QAClC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAIxC,yCAAyC;IACnC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI7C,mCAAmC;IAC7B,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAOvE,yCAAyC;IACnC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAOnF,kDAAkD;IAC5C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAOnE,mEAAmE;IAC7D,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAe3C"}
|