paisr-js 0.2.0 → 0.3.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.
- package/README.md +1 -1
- package/dist/index.cjs +8 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -6
- package/dist/index.d.ts +15 -6
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -101,7 +101,7 @@ Or call `verifyWebhookSignature({ payload, signature, timestamp, secret })` dire
|
|
|
101
101
|
| `paisr.customers` | Customers |
|
|
102
102
|
| `paisr.vouchers` | Vouchers, applying voucher codes |
|
|
103
103
|
| `paisr.plans` | Plans, plus nested `.options` (price options) |
|
|
104
|
-
| `paisr.invoices` | Invoices, plus nested `.
|
|
104
|
+
| `paisr.invoices` | Invoices, plus nested `.line_items` |
|
|
105
105
|
| `paisr.subscriptions` | Subscriptions, restore/cancel |
|
|
106
106
|
| `paisr.payments` | Payments, refunds |
|
|
107
107
|
| `paisr.providers` | Provider connections |
|
package/dist/index.cjs
CHANGED
|
@@ -619,7 +619,7 @@ var PlansResource = class {
|
|
|
619
619
|
};
|
|
620
620
|
|
|
621
621
|
// src/resources/invoices.ts
|
|
622
|
-
var
|
|
622
|
+
var InvoiceLineItemsResource = class {
|
|
623
623
|
constructor(client) {
|
|
624
624
|
this.client = client;
|
|
625
625
|
}
|
|
@@ -649,10 +649,10 @@ var InvoiceItemsResource = class {
|
|
|
649
649
|
var InvoicesResource = class {
|
|
650
650
|
constructor(client) {
|
|
651
651
|
this.client = client;
|
|
652
|
-
this.
|
|
652
|
+
this.line_items = new InvoiceLineItemsResource(client);
|
|
653
653
|
}
|
|
654
654
|
client;
|
|
655
|
-
|
|
655
|
+
line_items;
|
|
656
656
|
/** Fetch a list of invoices, optionally filtered by resource, currency, or status. */
|
|
657
657
|
list(query) {
|
|
658
658
|
return unwrap(this.client.GET("/invoices", { params: { query } }));
|
|
@@ -745,7 +745,11 @@ var PaymentsResource = class {
|
|
|
745
745
|
list(query) {
|
|
746
746
|
return unwrap(this.client.GET("/payments", { params: { query } }));
|
|
747
747
|
}
|
|
748
|
-
/**
|
|
748
|
+
/**
|
|
749
|
+
* Initiate a payment using the given method ("bank", "wallet", "qr", or "card").
|
|
750
|
+
* The required fields in `body` depend on `method` (e.g. "bank" requires `swift_code`,
|
|
751
|
+
* "card" requires `card_details`) — the type parameter enforces the matching shape.
|
|
752
|
+
*/
|
|
749
753
|
initiate(method, body) {
|
|
750
754
|
return unwrap(this.client.POST("/payments/initiate/{method}", { params: { path: { method } }, body }));
|
|
751
755
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/client.ts","../src/resources/access-tokens.ts","../src/resources/webhooks.ts","../src/resources/wallets.ts","../src/resources/transfers.ts","../src/resources/customers.ts","../src/resources/vouchers.ts","../src/resources/plans.ts","../src/resources/invoices.ts","../src/resources/subscriptions.ts","../src/resources/payments.ts","../src/resources/providers.ts","../src/resources/metrics.ts","../src/resources/logs.ts","../src/webhook-signature.ts"],"sourcesContent":["import { createPaisrClient, type PaisrClient, type PaisrOptions } from \"./client.js\";\nimport { AccessTokensResource } from \"./resources/access-tokens.js\";\nimport { WebhooksResource } from \"./resources/webhooks.js\";\nimport { WalletsResource } from \"./resources/wallets.js\";\nimport { TransfersResource } from \"./resources/transfers.js\";\nimport { CustomersResource } from \"./resources/customers.js\";\nimport { VouchersResource } from \"./resources/vouchers.js\";\nimport { PlansResource } from \"./resources/plans.js\";\nimport { InvoicesResource } from \"./resources/invoices.js\";\nimport { SubscriptionsResource } from \"./resources/subscriptions.js\";\nimport { PaymentsResource } from \"./resources/payments.js\";\nimport { ProvidersResource } from \"./resources/providers.js\";\nimport { MetricsResource } from \"./resources/metrics.js\";\nimport { LogsResource } from \"./resources/logs.js\";\n\nexport { PaisrError } from \"./client.js\";\nexport type { PaisrOptions, PaisrEnvironment, PaisrClient } from \"./client.js\";\nexport type { paths, components } from \"./generated/types.js\";\nexport { verifyWebhookSignature, constructWebhookEvent } from \"./webhook-signature.js\";\nexport type { VerifyWebhookSignatureOptions } from \"./webhook-signature.js\";\n\n/**\n * Client for the Paisr API (https://github.com/paisrtechnologies/pcb-openapi).\n *\n * @example\n * ```ts\n * const paisr = new Paisr({ apiKey: process.env.PAISR_API_KEY! });\n * const { wallets } = await paisr.wallets.list();\n * const wallet = await paisr.wallets.get(wallets[0].id);\n * ```\n */\nexport class Paisr {\n readonly client: PaisrClient;\n\n readonly accessTokens: AccessTokensResource;\n readonly webhooks: WebhooksResource;\n readonly wallets: WalletsResource;\n readonly transfers: TransfersResource;\n readonly customers: CustomersResource;\n readonly vouchers: VouchersResource;\n readonly plans: PlansResource;\n readonly invoices: InvoicesResource;\n readonly subscriptions: SubscriptionsResource;\n readonly payments: PaymentsResource;\n readonly providers: ProvidersResource;\n readonly metrics: MetricsResource;\n readonly logs: LogsResource;\n\n constructor(options: PaisrOptions) {\n this.client = createPaisrClient(options);\n\n this.accessTokens = new AccessTokensResource(this.client);\n this.webhooks = new WebhooksResource(this.client);\n this.wallets = new WalletsResource(this.client);\n this.transfers = new TransfersResource(this.client);\n this.customers = new CustomersResource(this.client);\n this.vouchers = new VouchersResource(this.client);\n this.plans = new PlansResource(this.client);\n this.invoices = new InvoicesResource(this.client);\n this.subscriptions = new SubscriptionsResource(this.client);\n this.payments = new PaymentsResource(this.client);\n this.providers = new ProvidersResource(this.client);\n this.metrics = new MetricsResource(this.client);\n this.logs = new LogsResource(this.client);\n }\n}\n\nexport default Paisr;\n","import createClient, { type Client, type ClientOptions } from \"openapi-fetch\";\nimport type { paths } from \"./generated/types.js\";\n\nexport type PaisrEnvironment = \"live\" | \"staging\";\n\nconst BASE_URLS: Record<PaisrEnvironment, string> = {\n live: \"https://api.live.paisr.tech/v2\",\n staging: \"https://api.staging.paisr.tech/v2\",\n};\n\nexport interface PaisrOptions {\n /** Bearer access token issued by Paisr (Settings -> Access Tokens). */\n apiKey: string;\n /** Which Paisr environment to talk to. Defaults to \"live\". Ignored if `baseUrl` is set. */\n environment?: PaisrEnvironment;\n /** Override the API base URL entirely, e.g. for a private/self-hosted deployment. */\n baseUrl?: string;\n /** Custom fetch implementation (useful for tests or non-standard runtimes). */\n fetch?: ClientOptions[\"fetch\"];\n}\n\nexport type PaisrClient = Client<paths>;\n\nexport function createPaisrClient(options: PaisrOptions): PaisrClient {\n if (!options.apiKey) {\n throw new Error(\"Paisr: `apiKey` is required.\");\n }\n\n const baseUrl = options.baseUrl ?? BASE_URLS[options.environment ?? \"live\"];\n\n return createClient<paths>({\n baseUrl,\n fetch: options.fetch,\n headers: {\n Authorization: `Bearer ${options.apiKey}`,\n },\n });\n}\n\n/** Thrown for any non-2xx response from the Paisr API. */\nexport class PaisrError extends Error {\n /** HTTP status code of the failed response. */\n readonly status: number;\n /** Parsed error response body, if any. */\n readonly body: unknown;\n\n constructor(message: string, status: number, body: unknown) {\n super(message);\n this.name = \"PaisrError\";\n this.status = status;\n this.body = body;\n }\n}\n\ninterface Envelope {\n success?: boolean;\n message?: string;\n data?: unknown;\n}\n\ninterface RawResult {\n data?: unknown;\n error?: unknown;\n response: Response;\n}\n\n/**\n * Unwraps an openapi-fetch result: throws `PaisrError` on failure, otherwise\n * returns the inner `data` payload of Paisr's `{ success, data }` envelope\n * (or the whole envelope for endpoints that only return `{ success, message }`).\n */\nexport async function unwrap(resultPromise: Promise<RawResult>): Promise<any> {\n const { data, error, response } = await resultPromise;\n\n if (error !== undefined) {\n const body = error as Envelope | undefined;\n throw new PaisrError(\n body?.message ?? `Paisr API request failed with status ${response.status}`,\n response.status,\n error,\n );\n }\n\n const envelope = data as Envelope | undefined;\n if (envelope && typeof envelope === \"object\" && \"data\" in envelope) {\n return envelope.data;\n }\n return envelope;\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateTokenBody = NonNullable<paths[\"/access-tokens\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateTokenBody = NonNullable<paths[\"/access-tokens/{token_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddPermissionBody =\n NonNullable<paths[\"/access-tokens/{token_id}/permissions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class AccessTokensResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of access tokens. */\n list() {\n return unwrap(this.client.GET(\"/access-tokens\", {}));\n }\n\n /** Create a new access token. */\n create(body: CreateTokenBody) {\n return unwrap(this.client.POST(\"/access-tokens\", { body }));\n }\n\n /** Fetch a single access token. */\n get(tokenId: string) {\n return unwrap(this.client.GET(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } } }));\n }\n\n /** Update an access token. */\n update(tokenId: string, body: UpdateTokenBody) {\n return unwrap(this.client.PUT(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } }, body }));\n }\n\n /** Revoke an access token. */\n revoke(tokenId: string) {\n return unwrap(this.client.DELETE(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } } }));\n }\n\n /** Add a permission scope to an access token. */\n addPermission(tokenId: string, body: AddPermissionBody) {\n return unwrap(\n this.client.POST(\"/access-tokens/{token_id}/permissions\", { params: { path: { token_id: tokenId } }, body }),\n );\n }\n\n /** Remove a permission scope from an access token. */\n removePermission(tokenId: string, permissionId: string) {\n return unwrap(\n this.client.DELETE(\"/access-tokens/{token_id}/permissions/{permission_id}\", {\n params: { path: { token_id: tokenId, permission_id: permissionId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateWebhookBody = NonNullable<paths[\"/webhooks\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateWebhookBody =\n NonNullable<paths[\"/webhooks/{webhook_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddTriggerBody =\n NonNullable<paths[\"/webhooks/{webhook_id}/triggers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class WebhooksResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of webhooks. */\n list() {\n return unwrap(this.client.GET(\"/webhooks\", {}));\n }\n\n /** Create a new webhook. */\n create(body: CreateWebhookBody) {\n return unwrap(this.client.POST(\"/webhooks\", { body }));\n }\n\n /** Fetch a single webhook. */\n get(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Replace a webhook's configuration. */\n update(webhookId: string, body: UpdateWebhookBody) {\n return unwrap(\n this.client.PUT(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } }, body }),\n );\n }\n\n /** Partially modify a webhook (e.g. enable/disable). */\n modify(webhookId: string) {\n return unwrap(this.client.PATCH(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Remove a webhook. */\n remove(webhookId: string) {\n return unwrap(this.client.DELETE(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Send a test event to a webhook. */\n test(webhookId: string) {\n return unwrap(this.client.POST(\"/webhooks/{webhook_id}/test\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Fetch delivery stats for a webhook. */\n getStats(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/stats\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Fetch a webhook's signing secret. */\n getSecret(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/secret\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Rotate a webhook's signing secret. */\n rotateSecret(webhookId: string) {\n return unwrap(\n this.client.PATCH(\"/webhooks/{webhook_id}/secret\", { params: { path: { webhook_id: webhookId } } }),\n );\n }\n\n /** Subscribe a webhook to an additional event trigger. */\n addTrigger(webhookId: string, body: AddTriggerBody) {\n return unwrap(\n this.client.POST(\"/webhooks/{webhook_id}/triggers\", { params: { path: { webhook_id: webhookId } }, body }),\n );\n }\n\n /** Unsubscribe a webhook from an event trigger. */\n removeTrigger(webhookId: string, triggerId: string) {\n return unwrap(\n this.client.DELETE(\"/webhooks/{webhook_id}/triggers/{trigger_id}\", {\n params: { path: { webhook_id: webhookId, trigger_id: triggerId } },\n }),\n );\n }\n\n /** Fetch delivery events for a webhook. */\n getEvents(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/events\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Retry delivery of a specific webhook event. */\n retryEvent(webhookId: string, eventId: string) {\n return unwrap(\n this.client.POST(\"/webhooks/{webhook_id}/events/{event_id}\", {\n params: { path: { webhook_id: webhookId, event_id: eventId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateWalletBody = NonNullable<paths[\"/wallets\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateProfileBody = NonNullable<paths[\"/wallets/{wallet_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateWalletBody = NonNullable<paths[\"/wallets/{wallet_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype TransactionsQuery = paths[\"/wallets/{wallet_id}/transactions\"][\"get\"][\"parameters\"][\"query\"];\ntype BalancesQuery = paths[\"/wallets/{wallet_id}/balances\"][\"get\"][\"parameters\"][\"query\"];\ntype OpenBalanceBody =\n NonNullable<paths[\"/wallets/{wallet_id}/balances\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateBalanceBody =\n NonNullable<paths[\"/wallets/{wallet_id}/balances/{balance_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ConnectAccountBody =\n NonNullable<paths[\"/wallets/{wallet_id}/accounts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype VerifyAccountBody =\n NonNullable<paths[\"/wallets/{wallet_id}/accounts/{account_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddContactBody =\n NonNullable<paths[\"/wallets/{wallet_id}/contacts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype CreateLinkBody = NonNullable<paths[\"/wallets/{wallet_id}/links\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateLinkBody =\n NonNullable<paths[\"/wallets/{wallet_id}/links/{link_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass WalletPinResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's PIN state (never the raw PIN itself). */\n get(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/pin\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Rotate a wallet's PIN. */\n rotate(walletId: string) {\n return unwrap(this.client.PATCH(\"/wallets/{wallet_id}/pin\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n\nclass WalletStatementsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's statements. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/statements\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n\nclass WalletTransactionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's transactions, optionally filtered by balance, status, type, or method. */\n list(walletId: string, query?: TransactionsQuery) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/transactions\", { params: { path: { wallet_id: walletId }, query } }),\n );\n }\n\n /** Fetch a single transaction on a wallet. */\n get(walletId: string, transactionId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/transactions/{transaction_id}\", {\n params: { path: { wallet_id: walletId, transaction_id: transactionId } },\n }),\n );\n }\n}\n\nclass WalletBalancesResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's balances, optionally filtered by type or currency. */\n list(walletId: string, query?: BalancesQuery) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/balances\", { params: { path: { wallet_id: walletId }, query } }),\n );\n }\n\n /** Open a new balance on a wallet. */\n open(walletId: string, body: OpenBalanceBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/balances\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single balance on a wallet. */\n get(walletId: string, balanceId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n }),\n );\n }\n\n /** Update a balance on a wallet. */\n update(walletId: string, balanceId: string, body: UpdateBalanceBody) {\n return unwrap(\n this.client.PUT(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n body,\n }),\n );\n }\n\n /** Close a balance on a wallet. */\n close(walletId: string, balanceId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n }),\n );\n }\n}\n\nclass WalletAccountsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's linked external accounts. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/accounts\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Connect a new external account to a wallet. */\n connect(walletId: string, body: ConnectAccountBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/accounts\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single linked account. */\n get(walletId: string, accountId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n }),\n );\n }\n\n /** Verify a linked account (e.g. micro-deposit confirmation). */\n verify(walletId: string, accountId: string, body: VerifyAccountBody) {\n return unwrap(\n this.client.PATCH(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n body,\n }),\n );\n }\n\n /** Remove a linked account from a wallet. */\n remove(walletId: string, accountId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n }),\n );\n }\n}\n\nclass WalletContactsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's saved payment contacts. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/contacts\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Add a payment contact to a wallet. */\n add(walletId: string, body: AddContactBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/contacts\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single payment contact. */\n get(walletId: string, contactId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/contacts/{contact_id}\", {\n params: { path: { wallet_id: walletId, contact_id: contactId } },\n }),\n );\n }\n\n /** Remove a payment contact from a wallet. */\n remove(walletId: string, contactId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/contacts/{contact_id}\", {\n params: { path: { wallet_id: walletId, contact_id: contactId } },\n }),\n );\n }\n}\n\nclass WalletLinksResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's hosted links (e.g. onboarding or top-up links). */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/links\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Create a new hosted link for a wallet. */\n create(walletId: string, body: CreateLinkBody) {\n return unwrap(this.client.POST(\"/wallets/{wallet_id}/links\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Fetch a single hosted link. */\n get(walletId: string, linkId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n }),\n );\n }\n\n /** Update a hosted link. */\n update(walletId: string, linkId: string, body: UpdateLinkBody) {\n return unwrap(\n this.client.PUT(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n body,\n }),\n );\n }\n\n /** Remove a hosted link. */\n remove(walletId: string, linkId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n }),\n );\n }\n}\n\nexport class WalletsResource {\n readonly pin: WalletPinResource;\n readonly statements: WalletStatementsResource;\n readonly transactions: WalletTransactionsResource;\n readonly balances: WalletBalancesResource;\n readonly accounts: WalletAccountsResource;\n readonly contacts: WalletContactsResource;\n readonly links: WalletLinksResource;\n\n constructor(private readonly client: PaisrClient) {\n this.pin = new WalletPinResource(client);\n this.statements = new WalletStatementsResource(client);\n this.transactions = new WalletTransactionsResource(client);\n this.balances = new WalletBalancesResource(client);\n this.accounts = new WalletAccountsResource(client);\n this.contacts = new WalletContactsResource(client);\n this.links = new WalletLinksResource(client);\n }\n\n /** Fetch a list of wallets. */\n list() {\n return unwrap(this.client.GET(\"/wallets\", {}));\n }\n\n /** Create a new wallet. */\n create(body: CreateWalletBody) {\n return unwrap(this.client.POST(\"/wallets\", { body }));\n }\n\n /** Fetch a single wallet. */\n get(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Update a wallet's profile details. */\n updateProfile(walletId: string, body: UpdateProfileBody) {\n return unwrap(this.client.PUT(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Partially update a wallet. */\n update(walletId: string, body: UpdateWalletBody) {\n return unwrap(this.client.PATCH(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Delete a wallet. */\n delete(walletId: string) {\n return unwrap(this.client.DELETE(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype InitiateTransferMethod = paths[\"/transfers/initiate/{method}\"][\"post\"][\"parameters\"][\"path\"][\"method\"];\ntype InitiateTransferBody =\n NonNullable<paths[\"/transfers/initiate/{method}\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype BatchTransferBody =\n NonNullable<paths[\"/transfers/initiate/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ApproveTransferBody =\n NonNullable<paths[\"/transfers/{transaction_id}/approve\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype CancelTransferBody =\n NonNullable<paths[\"/transfers/{transaction_id}/cancel\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class TransfersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Initiate a transfer using the given method (\"peer\", \"move\", or \"bank\"). */\n initiate(method: InitiateTransferMethod, body: InitiateTransferBody) {\n return unwrap(this.client.POST(\"/transfers/initiate/{method}\", { params: { path: { method } }, body }));\n }\n\n /** Initiate a batch of transfers in a single request. */\n initiateBatch(body: BatchTransferBody) {\n return unwrap(this.client.POST(\"/transfers/initiate/batch\", { body }));\n }\n\n /** Approve a pending transfer. */\n approve(transactionId: string, body: ApproveTransferBody) {\n return unwrap(\n this.client.POST(\"/transfers/{transaction_id}/approve\", {\n params: { path: { transaction_id: transactionId } },\n body,\n }),\n );\n }\n\n /** Cancel a pending transfer. */\n cancel(transactionId: string, body: CancelTransferBody) {\n return unwrap(\n this.client.POST(\"/transfers/{transaction_id}/cancel\", {\n params: { path: { transaction_id: transactionId } },\n body,\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype AddCustomerBody = NonNullable<paths[\"/customers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateCustomerBody =\n NonNullable<paths[\"/customers/{customer_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class CustomersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of customers. */\n list() {\n return unwrap(this.client.GET(\"/customers\", {}));\n }\n\n /** Add a new customer. */\n add(body: AddCustomerBody) {\n return unwrap(this.client.POST(\"/customers\", { body }));\n }\n\n /** Fetch a single customer. */\n get(customerId: string) {\n return unwrap(this.client.GET(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n\n /** Update a customer. */\n update(customerId: string, body: UpdateCustomerBody) {\n return unwrap(\n this.client.PUT(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } }, body }),\n );\n }\n\n /** Restore a previously removed customer. */\n restore(customerId: string) {\n return unwrap(this.client.PATCH(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n\n /** Remove a customer. */\n remove(customerId: string) {\n return unwrap(this.client.DELETE(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateVoucherBody = NonNullable<paths[\"/vouchers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ApplyVoucherBody = NonNullable<paths[\"/vouchers/apply\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateVoucherBody =\n NonNullable<paths[\"/vouchers/{voucher_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class VouchersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of vouchers. */\n list() {\n return unwrap(this.client.GET(\"/vouchers\", {}));\n }\n\n /** Create a new voucher. */\n create(body: CreateVoucherBody) {\n return unwrap(this.client.POST(\"/vouchers\", { body }));\n }\n\n /** Apply a voucher code to a resource (e.g. an invoice or subscription). */\n apply(body: ApplyVoucherBody) {\n return unwrap(this.client.POST(\"/vouchers/apply\", { body }));\n }\n\n /** Fetch a single voucher. */\n get(voucherId: string) {\n return unwrap(this.client.GET(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } } }));\n }\n\n /** Update a voucher. */\n update(voucherId: string, body: UpdateVoucherBody) {\n return unwrap(\n this.client.PUT(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } }, body }),\n );\n }\n\n /** Remove a voucher. */\n remove(voucherId: string) {\n return unwrap(this.client.DELETE(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListPlansQuery = paths[\"/plans\"][\"get\"][\"parameters\"][\"query\"];\ntype GetPlanQuery = paths[\"/plans/{plan_id}\"][\"get\"][\"parameters\"][\"query\"];\ntype CreatePlanBody = NonNullable<paths[\"/plans\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdatePlanBody = NonNullable<paths[\"/plans/{plan_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddPriceOptionBody =\n NonNullable<paths[\"/plans/{plan_id}/options\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdatePriceOptionBody =\n NonNullable<paths[\"/plans/{plan_id}/options/{option_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass PlanOptionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Add a price option to a plan. */\n add(planId: string, body: AddPriceOptionBody) {\n return unwrap(this.client.POST(\"/plans/{plan_id}/options\", { params: { path: { plan_id: planId } }, body }));\n }\n\n /** Replace a price option on a plan. */\n update(planId: string, optionId: string, body: UpdatePriceOptionBody) {\n return unwrap(\n this.client.PUT(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n body,\n }),\n );\n }\n\n /** Partially modify a price option on a plan. */\n modify(planId: string, optionId: string) {\n return unwrap(\n this.client.PATCH(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n }),\n );\n }\n\n /** Remove a price option from a plan. */\n remove(planId: string, optionId: string) {\n return unwrap(\n this.client.DELETE(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n }),\n );\n }\n}\n\nexport class PlansResource {\n readonly options: PlanOptionsResource;\n\n constructor(private readonly client: PaisrClient) {\n this.options = new PlanOptionsResource(client);\n }\n\n /** Fetch a list of plans, optionally filtered by type, currency, or active state. */\n list(query?: ListPlansQuery) {\n return unwrap(this.client.GET(\"/plans\", { params: { query } }));\n }\n\n /** Create a new plan. */\n create(body: CreatePlanBody) {\n return unwrap(this.client.POST(\"/plans\", { body }));\n }\n\n /** Fetch a single plan. */\n get(planId: string, query?: GetPlanQuery) {\n return unwrap(this.client.GET(\"/plans/{plan_id}\", { params: { path: { plan_id: planId }, query } }));\n }\n\n /** Update a plan. */\n update(planId: string, body: UpdatePlanBody) {\n return unwrap(this.client.PUT(\"/plans/{plan_id}\", { params: { path: { plan_id: planId } }, body }));\n }\n\n /** Remove a plan. */\n remove(planId: string) {\n return unwrap(this.client.DELETE(\"/plans/{plan_id}\", { params: { path: { plan_id: planId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListInvoicesQuery = paths[\"/invoices\"][\"get\"][\"parameters\"][\"query\"];\ntype CreateInvoiceBody = NonNullable<paths[\"/invoices\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateInvoiceBody =\n NonNullable<paths[\"/invoices/{invoice_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddLineItemsBody =\n NonNullable<paths[\"/invoices/{invoice_id}/items\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateLineItemBody =\n NonNullable<paths[\"/invoices/{invoice_id}/items/{item_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass InvoiceItemsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Add line items to an invoice. */\n add(invoiceId: string, body: AddLineItemsBody) {\n return unwrap(this.client.POST(\"/invoices/{invoice_id}/items\", { params: { path: { invoice_id: invoiceId } }, body }));\n }\n\n /** Update a single line item on an invoice. */\n update(invoiceId: string, itemId: string, body: UpdateLineItemBody) {\n return unwrap(\n this.client.PUT(\"/invoices/{invoice_id}/items/{item_id}\", {\n params: { path: { invoice_id: invoiceId, item_id: itemId } },\n body,\n }),\n );\n }\n\n /** Remove a line item from an invoice. */\n remove(invoiceId: string, itemId: string) {\n return unwrap(\n this.client.DELETE(\"/invoices/{invoice_id}/items/{item_id}\", {\n params: { path: { invoice_id: invoiceId, item_id: itemId } },\n }),\n );\n }\n}\n\nexport class InvoicesResource {\n readonly items: InvoiceItemsResource;\n\n constructor(private readonly client: PaisrClient) {\n this.items = new InvoiceItemsResource(client);\n }\n\n /** Fetch a list of invoices, optionally filtered by resource, currency, or status. */\n list(query?: ListInvoicesQuery) {\n return unwrap(this.client.GET(\"/invoices\", { params: { query } }));\n }\n\n /** Create a new invoice. */\n create(body: CreateInvoiceBody) {\n return unwrap(this.client.POST(\"/invoices\", { body }));\n }\n\n /** Fetch a single invoice. */\n get(invoiceId: string) {\n return unwrap(this.client.GET(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } } }));\n }\n\n /** Update an invoice. */\n update(invoiceId: string, body: UpdateInvoiceBody) {\n return unwrap(\n this.client.PUT(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } }, body }),\n );\n }\n\n /** Remove an invoice. */\n remove(invoiceId: string) {\n return unwrap(this.client.DELETE(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } } }));\n }\n\n /** Send an invoice to the customer. */\n send(invoiceId: string) {\n return unwrap(this.client.POST(\"/invoices/{invoice_id}/send\", { params: { path: { invoice_id: invoiceId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListSubscriptionsQuery = paths[\"/subscriptions\"][\"get\"][\"parameters\"][\"query\"];\ntype CreateSubscriptionBody =\n NonNullable<paths[\"/subscriptions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class SubscriptionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of subscriptions, optionally filtered by resource, currency, or status. */\n list(query?: ListSubscriptionsQuery) {\n return unwrap(this.client.GET(\"/subscriptions\", { params: { query } }));\n }\n\n /** Create a new subscription. */\n create(body: CreateSubscriptionBody) {\n return unwrap(this.client.POST(\"/subscriptions\", { body }));\n }\n\n /** Fetch a single subscription. */\n get(subscriptionId: string) {\n return unwrap(\n this.client.GET(\"/subscriptions/{subscription_id}\", { params: { path: { subscription_id: subscriptionId } } }),\n );\n }\n\n /** Update a subscription (e.g. change plan or price option). */\n update(subscriptionId: string) {\n return unwrap(\n this.client.PATCH(\"/subscriptions/{subscription_id}\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Remove a subscription. */\n remove(subscriptionId: string) {\n return unwrap(\n this.client.DELETE(\"/subscriptions/{subscription_id}\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Restore a previously canceled subscription. */\n restore(subscriptionId: string) {\n return unwrap(\n this.client.POST(\"/subscriptions/{subscription_id}/restore\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Cancel a subscription. */\n cancel(subscriptionId: string) {\n return unwrap(\n this.client.POST(\"/subscriptions/{subscription_id}/cancel\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListPaymentsQuery = paths[\"/payments\"][\"get\"][\"parameters\"][\"query\"];\ntype InitiatePaymentMethod = paths[\"/payments/initiate/{method}\"][\"post\"][\"parameters\"][\"path\"][\"method\"];\ntype InitiatePaymentBody =\n NonNullable<paths[\"/payments/initiate/{method}\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype RefundPaymentBody =\n NonNullable<paths[\"/payments/{payment_id}/refund\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class PaymentsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of payments, optionally filtered by resource, currency, status, or method. */\n list(query?: ListPaymentsQuery) {\n return unwrap(this.client.GET(\"/payments\", { params: { query } }));\n }\n\n /** Initiate a payment using the given method (\"bank\", \"wallet\", \"qr\", or \"card\"). */\n initiate(method: InitiatePaymentMethod, body: InitiatePaymentBody) {\n return unwrap(this.client.POST(\"/payments/initiate/{method}\", { params: { path: { method } }, body }));\n }\n\n /** Fetch a single payment. */\n get(paymentId: string) {\n return unwrap(this.client.GET(\"/payments/{payment_id}\", { params: { path: { payment_id: paymentId } } }));\n }\n\n /** Refund a payment, in full or in part. */\n refund(paymentId: string, body: RefundPaymentBody) {\n return unwrap(\n this.client.POST(\"/payments/{payment_id}/refund\", { params: { path: { payment_id: paymentId } }, body }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ConnectProviderBody = NonNullable<paths[\"/providers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateProviderConnectionBody =\n NonNullable<paths[\"/providers/{connection_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class ProvidersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of provider connections. */\n list() {\n return unwrap(this.client.GET(\"/providers\", {}));\n }\n\n /** Connect a new provider. */\n connect(body: ConnectProviderBody) {\n return unwrap(this.client.POST(\"/providers\", { body }));\n }\n\n /** Replace a provider connection's configuration. */\n update(connectionId: string, body: UpdateProviderConnectionBody) {\n return unwrap(\n this.client.PUT(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } }, body }),\n );\n }\n\n /** Partially modify a provider connection. */\n modify(connectionId: string) {\n return unwrap(this.client.PATCH(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } } }));\n }\n\n /** Remove a provider connection. */\n remove(connectionId: string) {\n return unwrap(\n this.client.DELETE(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } } }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\n\nexport class MetricsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch invoice metrics. */\n invoices() {\n return unwrap(this.client.GET(\"/metrics/invoices\", {}));\n }\n\n /** Fetch subscription metrics. */\n subscriptions() {\n return unwrap(this.client.GET(\"/metrics/subscriptions\", {}));\n }\n\n /** Fetch payment metrics. */\n payments() {\n return unwrap(this.client.GET(\"/metrics/payments\", {}));\n }\n\n /** Fetch customer metrics. */\n customers() {\n return unwrap(this.client.GET(\"/metrics/customers\", {}));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListLogsQuery = paths[\"/logs\"][\"get\"][\"parameters\"][\"query\"];\n\nexport class LogsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch API request logs, optionally filtered by resource, method, or auth flow. */\n list(query?: ListLogsQuery) {\n return unwrap(this.client.GET(\"/logs\", { params: { query } }));\n }\n}\n","/**\n * Verifies Paisr webhook signatures.\n *\n * Paisr signs webhook deliveries with `X-PCB-Signature` (HMAC-SHA256, hex-encoded)\n * over `${X-PCB-Timestamp}.${rawBody}`, using the webhook's signing secret\n * (see `paisr.webhooks.getSecret()` / `.rotateSecret()`).\n *\n * @see https://docs.paisr.tech/v2/api/webhooks\n */\n\nexport interface VerifyWebhookSignatureOptions {\n /** The exact raw request body bytes/string as received — do not re-stringify a parsed object. */\n payload: string;\n /** Value of the `X-PCB-Signature` request header. */\n signature: string;\n /** Value of the `X-PCB-Timestamp` request header. */\n timestamp: string;\n /** The webhook's signing secret. */\n secret: string;\n}\n\nfunction toHex(bytes: ArrayBuffer): string {\n return Array.from(new Uint8Array(bytes))\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nfunction timingSafeEqual(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let mismatch = 0;\n for (let i = 0; i < a.length; i++) {\n mismatch |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return mismatch === 0;\n}\n\n/** Returns `true` if the given webhook delivery has a valid signature. */\nexport async function verifyWebhookSignature(options: VerifyWebhookSignatureOptions): Promise<boolean> {\n const { payload, signature, timestamp, secret } = options;\n\n const key = await crypto.subtle.importKey(\n \"raw\",\n new TextEncoder().encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n const digest = await crypto.subtle.sign(\"HMAC\", key, new TextEncoder().encode(`${timestamp}.${payload}`));\n const expected = toHex(digest);\n\n return timingSafeEqual(expected, signature);\n}\n\n/**\n * Verifies a webhook delivery and parses the payload as JSON.\n * Throws if the signature is invalid.\n */\nexport async function constructWebhookEvent<T = unknown>(options: VerifyWebhookSignatureOptions): Promise<T> {\n const valid = await verifyWebhookSignature(options);\n if (!valid) {\n throw new Error(\"Paisr: webhook signature verification failed.\");\n }\n return JSON.parse(options.payload) as T;\n}\n"],"mappings":"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","names":["createClient"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/client.ts","../src/resources/access-tokens.ts","../src/resources/webhooks.ts","../src/resources/wallets.ts","../src/resources/transfers.ts","../src/resources/customers.ts","../src/resources/vouchers.ts","../src/resources/plans.ts","../src/resources/invoices.ts","../src/resources/subscriptions.ts","../src/resources/payments.ts","../src/resources/providers.ts","../src/resources/metrics.ts","../src/resources/logs.ts","../src/webhook-signature.ts"],"sourcesContent":["import { createPaisrClient, type PaisrClient, type PaisrOptions } from \"./client.js\";\nimport { AccessTokensResource } from \"./resources/access-tokens.js\";\nimport { WebhooksResource } from \"./resources/webhooks.js\";\nimport { WalletsResource } from \"./resources/wallets.js\";\nimport { TransfersResource } from \"./resources/transfers.js\";\nimport { CustomersResource } from \"./resources/customers.js\";\nimport { VouchersResource } from \"./resources/vouchers.js\";\nimport { PlansResource } from \"./resources/plans.js\";\nimport { InvoicesResource } from \"./resources/invoices.js\";\nimport { SubscriptionsResource } from \"./resources/subscriptions.js\";\nimport { PaymentsResource } from \"./resources/payments.js\";\nimport { ProvidersResource } from \"./resources/providers.js\";\nimport { MetricsResource } from \"./resources/metrics.js\";\nimport { LogsResource } from \"./resources/logs.js\";\n\nexport { PaisrError } from \"./client.js\";\nexport type { PaisrOptions, PaisrEnvironment, PaisrClient } from \"./client.js\";\nexport type { paths, components } from \"./generated/types.js\";\nexport { verifyWebhookSignature, constructWebhookEvent } from \"./webhook-signature.js\";\nexport type { VerifyWebhookSignatureOptions } from \"./webhook-signature.js\";\n\n/**\n * Client for the Paisr API (https://github.com/paisrtechnologies/pcb-openapi).\n *\n * @example\n * ```ts\n * const paisr = new Paisr({ apiKey: process.env.PAISR_API_KEY! });\n * const { wallets } = await paisr.wallets.list();\n * const wallet = await paisr.wallets.get(wallets[0].id);\n * ```\n */\nexport class Paisr {\n readonly client: PaisrClient;\n\n readonly accessTokens: AccessTokensResource;\n readonly webhooks: WebhooksResource;\n readonly wallets: WalletsResource;\n readonly transfers: TransfersResource;\n readonly customers: CustomersResource;\n readonly vouchers: VouchersResource;\n readonly plans: PlansResource;\n readonly invoices: InvoicesResource;\n readonly subscriptions: SubscriptionsResource;\n readonly payments: PaymentsResource;\n readonly providers: ProvidersResource;\n readonly metrics: MetricsResource;\n readonly logs: LogsResource;\n\n constructor(options: PaisrOptions) {\n this.client = createPaisrClient(options);\n\n this.accessTokens = new AccessTokensResource(this.client);\n this.webhooks = new WebhooksResource(this.client);\n this.wallets = new WalletsResource(this.client);\n this.transfers = new TransfersResource(this.client);\n this.customers = new CustomersResource(this.client);\n this.vouchers = new VouchersResource(this.client);\n this.plans = new PlansResource(this.client);\n this.invoices = new InvoicesResource(this.client);\n this.subscriptions = new SubscriptionsResource(this.client);\n this.payments = new PaymentsResource(this.client);\n this.providers = new ProvidersResource(this.client);\n this.metrics = new MetricsResource(this.client);\n this.logs = new LogsResource(this.client);\n }\n}\n\nexport default Paisr;\n","import createClient, { type Client, type ClientOptions } from \"openapi-fetch\";\nimport type { paths } from \"./generated/types.js\";\n\nexport type PaisrEnvironment = \"live\" | \"staging\";\n\nconst BASE_URLS: Record<PaisrEnvironment, string> = {\n live: \"https://api.live.paisr.tech/v2\",\n staging: \"https://api.staging.paisr.tech/v2\",\n};\n\nexport interface PaisrOptions {\n /** Bearer access token issued by Paisr (Settings -> Access Tokens). */\n apiKey: string;\n /** Which Paisr environment to talk to. Defaults to \"live\". Ignored if `baseUrl` is set. */\n environment?: PaisrEnvironment;\n /** Override the API base URL entirely, e.g. for a private/self-hosted deployment. */\n baseUrl?: string;\n /** Custom fetch implementation (useful for tests or non-standard runtimes). */\n fetch?: ClientOptions[\"fetch\"];\n}\n\nexport type PaisrClient = Client<paths>;\n\nexport function createPaisrClient(options: PaisrOptions): PaisrClient {\n if (!options.apiKey) {\n throw new Error(\"Paisr: `apiKey` is required.\");\n }\n\n const baseUrl = options.baseUrl ?? BASE_URLS[options.environment ?? \"live\"];\n\n return createClient<paths>({\n baseUrl,\n fetch: options.fetch,\n headers: {\n Authorization: `Bearer ${options.apiKey}`,\n },\n });\n}\n\n/** Thrown for any non-2xx response from the Paisr API. */\nexport class PaisrError extends Error {\n /** HTTP status code of the failed response. */\n readonly status: number;\n /** Parsed error response body, if any. */\n readonly body: unknown;\n\n constructor(message: string, status: number, body: unknown) {\n super(message);\n this.name = \"PaisrError\";\n this.status = status;\n this.body = body;\n }\n}\n\ninterface Envelope {\n success?: boolean;\n message?: string;\n data?: unknown;\n}\n\ninterface RawResult {\n data?: unknown;\n error?: unknown;\n response: Response;\n}\n\n/**\n * Unwraps an openapi-fetch result: throws `PaisrError` on failure, otherwise\n * returns the inner `data` payload of Paisr's `{ success, data }` envelope\n * (or the whole envelope for endpoints that only return `{ success, message }`).\n */\nexport async function unwrap(resultPromise: Promise<RawResult>): Promise<any> {\n const { data, error, response } = await resultPromise;\n\n if (error !== undefined) {\n const body = error as Envelope | undefined;\n throw new PaisrError(\n body?.message ?? `Paisr API request failed with status ${response.status}`,\n response.status,\n error,\n );\n }\n\n const envelope = data as Envelope | undefined;\n if (envelope && typeof envelope === \"object\" && \"data\" in envelope) {\n return envelope.data;\n }\n return envelope;\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateTokenBody = NonNullable<paths[\"/access-tokens\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateTokenBody = NonNullable<paths[\"/access-tokens/{token_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddPermissionBody =\n NonNullable<paths[\"/access-tokens/{token_id}/permissions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class AccessTokensResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of access tokens. */\n list() {\n return unwrap(this.client.GET(\"/access-tokens\", {}));\n }\n\n /** Create a new access token. */\n create(body: CreateTokenBody) {\n return unwrap(this.client.POST(\"/access-tokens\", { body }));\n }\n\n /** Fetch a single access token. */\n get(tokenId: string) {\n return unwrap(this.client.GET(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } } }));\n }\n\n /** Update an access token. */\n update(tokenId: string, body: UpdateTokenBody) {\n return unwrap(this.client.PUT(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } }, body }));\n }\n\n /** Revoke an access token. */\n revoke(tokenId: string) {\n return unwrap(this.client.DELETE(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } } }));\n }\n\n /** Add a permission scope to an access token. */\n addPermission(tokenId: string, body: AddPermissionBody) {\n return unwrap(\n this.client.POST(\"/access-tokens/{token_id}/permissions\", { params: { path: { token_id: tokenId } }, body }),\n );\n }\n\n /** Remove a permission scope from an access token. */\n removePermission(tokenId: string, permissionId: string) {\n return unwrap(\n this.client.DELETE(\"/access-tokens/{token_id}/permissions/{permission_id}\", {\n params: { path: { token_id: tokenId, permission_id: permissionId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateWebhookBody = NonNullable<paths[\"/webhooks\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateWebhookBody =\n NonNullable<paths[\"/webhooks/{webhook_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddTriggerBody =\n NonNullable<paths[\"/webhooks/{webhook_id}/triggers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class WebhooksResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of webhooks. */\n list() {\n return unwrap(this.client.GET(\"/webhooks\", {}));\n }\n\n /** Create a new webhook. */\n create(body: CreateWebhookBody) {\n return unwrap(this.client.POST(\"/webhooks\", { body }));\n }\n\n /** Fetch a single webhook. */\n get(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Replace a webhook's configuration. */\n update(webhookId: string, body: UpdateWebhookBody) {\n return unwrap(\n this.client.PUT(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } }, body }),\n );\n }\n\n /** Partially modify a webhook (e.g. enable/disable). */\n modify(webhookId: string) {\n return unwrap(this.client.PATCH(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Remove a webhook. */\n remove(webhookId: string) {\n return unwrap(this.client.DELETE(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Send a test event to a webhook. */\n test(webhookId: string) {\n return unwrap(this.client.POST(\"/webhooks/{webhook_id}/test\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Fetch delivery stats for a webhook. */\n getStats(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/stats\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Fetch a webhook's signing secret. */\n getSecret(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/secret\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Rotate a webhook's signing secret. */\n rotateSecret(webhookId: string) {\n return unwrap(\n this.client.PATCH(\"/webhooks/{webhook_id}/secret\", { params: { path: { webhook_id: webhookId } } }),\n );\n }\n\n /** Subscribe a webhook to an additional event trigger. */\n addTrigger(webhookId: string, body: AddTriggerBody) {\n return unwrap(\n this.client.POST(\"/webhooks/{webhook_id}/triggers\", { params: { path: { webhook_id: webhookId } }, body }),\n );\n }\n\n /** Unsubscribe a webhook from an event trigger. */\n removeTrigger(webhookId: string, triggerId: string) {\n return unwrap(\n this.client.DELETE(\"/webhooks/{webhook_id}/triggers/{trigger_id}\", {\n params: { path: { webhook_id: webhookId, trigger_id: triggerId } },\n }),\n );\n }\n\n /** Fetch delivery events for a webhook. */\n getEvents(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/events\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Retry delivery of a specific webhook event. */\n retryEvent(webhookId: string, eventId: string) {\n return unwrap(\n this.client.POST(\"/webhooks/{webhook_id}/events/{event_id}\", {\n params: { path: { webhook_id: webhookId, event_id: eventId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateWalletBody = NonNullable<paths[\"/wallets\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateProfileBody = NonNullable<paths[\"/wallets/{wallet_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateWalletBody = NonNullable<paths[\"/wallets/{wallet_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype TransactionsQuery = paths[\"/wallets/{wallet_id}/transactions\"][\"get\"][\"parameters\"][\"query\"];\ntype BalancesQuery = paths[\"/wallets/{wallet_id}/balances\"][\"get\"][\"parameters\"][\"query\"];\ntype OpenBalanceBody =\n NonNullable<paths[\"/wallets/{wallet_id}/balances\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateBalanceBody =\n NonNullable<paths[\"/wallets/{wallet_id}/balances/{balance_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ConnectAccountBody =\n NonNullable<paths[\"/wallets/{wallet_id}/accounts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype VerifyAccountBody =\n NonNullable<paths[\"/wallets/{wallet_id}/accounts/{account_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddContactBody =\n NonNullable<paths[\"/wallets/{wallet_id}/contacts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype CreateLinkBody = NonNullable<paths[\"/wallets/{wallet_id}/links\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateLinkBody =\n NonNullable<paths[\"/wallets/{wallet_id}/links/{link_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass WalletPinResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's PIN state (never the raw PIN itself). */\n get(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/pin\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Rotate a wallet's PIN. */\n rotate(walletId: string) {\n return unwrap(this.client.PATCH(\"/wallets/{wallet_id}/pin\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n\nclass WalletStatementsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's statements. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/statements\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n\nclass WalletTransactionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's transactions, optionally filtered by balance, status, type, or method. */\n list(walletId: string, query?: TransactionsQuery) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/transactions\", { params: { path: { wallet_id: walletId }, query } }),\n );\n }\n\n /** Fetch a single transaction on a wallet. */\n get(walletId: string, transactionId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/transactions/{transaction_id}\", {\n params: { path: { wallet_id: walletId, transaction_id: transactionId } },\n }),\n );\n }\n}\n\nclass WalletBalancesResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's balances, optionally filtered by type or currency. */\n list(walletId: string, query?: BalancesQuery) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/balances\", { params: { path: { wallet_id: walletId }, query } }),\n );\n }\n\n /** Open a new balance on a wallet. */\n open(walletId: string, body: OpenBalanceBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/balances\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single balance on a wallet. */\n get(walletId: string, balanceId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n }),\n );\n }\n\n /** Update a balance on a wallet. */\n update(walletId: string, balanceId: string, body: UpdateBalanceBody) {\n return unwrap(\n this.client.PUT(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n body,\n }),\n );\n }\n\n /** Close a balance on a wallet. */\n close(walletId: string, balanceId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n }),\n );\n }\n}\n\nclass WalletAccountsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's linked external accounts. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/accounts\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Connect a new external account to a wallet. */\n connect(walletId: string, body: ConnectAccountBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/accounts\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single linked account. */\n get(walletId: string, accountId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n }),\n );\n }\n\n /** Verify a linked account (e.g. micro-deposit confirmation). */\n verify(walletId: string, accountId: string, body: VerifyAccountBody) {\n return unwrap(\n this.client.PATCH(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n body,\n }),\n );\n }\n\n /** Remove a linked account from a wallet. */\n remove(walletId: string, accountId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n }),\n );\n }\n}\n\nclass WalletContactsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's saved payment contacts. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/contacts\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Add a payment contact to a wallet. */\n add(walletId: string, body: AddContactBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/contacts\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single payment contact. */\n get(walletId: string, contactId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/contacts/{contact_id}\", {\n params: { path: { wallet_id: walletId, contact_id: contactId } },\n }),\n );\n }\n\n /** Remove a payment contact from a wallet. */\n remove(walletId: string, contactId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/contacts/{contact_id}\", {\n params: { path: { wallet_id: walletId, contact_id: contactId } },\n }),\n );\n }\n}\n\nclass WalletLinksResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's hosted links (e.g. onboarding or top-up links). */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/links\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Create a new hosted link for a wallet. */\n create(walletId: string, body: CreateLinkBody) {\n return unwrap(this.client.POST(\"/wallets/{wallet_id}/links\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Fetch a single hosted link. */\n get(walletId: string, linkId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n }),\n );\n }\n\n /** Update a hosted link. */\n update(walletId: string, linkId: string, body: UpdateLinkBody) {\n return unwrap(\n this.client.PUT(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n body,\n }),\n );\n }\n\n /** Remove a hosted link. */\n remove(walletId: string, linkId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n }),\n );\n }\n}\n\nexport class WalletsResource {\n readonly pin: WalletPinResource;\n readonly statements: WalletStatementsResource;\n readonly transactions: WalletTransactionsResource;\n readonly balances: WalletBalancesResource;\n readonly accounts: WalletAccountsResource;\n readonly contacts: WalletContactsResource;\n readonly links: WalletLinksResource;\n\n constructor(private readonly client: PaisrClient) {\n this.pin = new WalletPinResource(client);\n this.statements = new WalletStatementsResource(client);\n this.transactions = new WalletTransactionsResource(client);\n this.balances = new WalletBalancesResource(client);\n this.accounts = new WalletAccountsResource(client);\n this.contacts = new WalletContactsResource(client);\n this.links = new WalletLinksResource(client);\n }\n\n /** Fetch a list of wallets. */\n list() {\n return unwrap(this.client.GET(\"/wallets\", {}));\n }\n\n /** Create a new wallet. */\n create(body: CreateWalletBody) {\n return unwrap(this.client.POST(\"/wallets\", { body }));\n }\n\n /** Fetch a single wallet. */\n get(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Update a wallet's profile details. */\n updateProfile(walletId: string, body: UpdateProfileBody) {\n return unwrap(this.client.PUT(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Partially update a wallet. */\n update(walletId: string, body: UpdateWalletBody) {\n return unwrap(this.client.PATCH(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Delete a wallet. */\n delete(walletId: string) {\n return unwrap(this.client.DELETE(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype InitiateTransferMethod = paths[\"/transfers/initiate/{method}\"][\"post\"][\"parameters\"][\"path\"][\"method\"];\ntype InitiateTransferBody =\n NonNullable<paths[\"/transfers/initiate/{method}\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype BatchTransferBody =\n NonNullable<paths[\"/transfers/initiate/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ApproveTransferBody =\n NonNullable<paths[\"/transfers/{transaction_id}/approve\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype CancelTransferBody =\n NonNullable<paths[\"/transfers/{transaction_id}/cancel\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class TransfersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Initiate a transfer using the given method (\"peer\", \"move\", or \"bank\"). */\n initiate(method: InitiateTransferMethod, body: InitiateTransferBody) {\n return unwrap(this.client.POST(\"/transfers/initiate/{method}\", { params: { path: { method } }, body }));\n }\n\n /** Initiate a batch of transfers in a single request. */\n initiateBatch(body: BatchTransferBody) {\n return unwrap(this.client.POST(\"/transfers/initiate/batch\", { body }));\n }\n\n /** Approve a pending transfer. */\n approve(transactionId: string, body: ApproveTransferBody) {\n return unwrap(\n this.client.POST(\"/transfers/{transaction_id}/approve\", {\n params: { path: { transaction_id: transactionId } },\n body,\n }),\n );\n }\n\n /** Cancel a pending transfer. */\n cancel(transactionId: string, body: CancelTransferBody) {\n return unwrap(\n this.client.POST(\"/transfers/{transaction_id}/cancel\", {\n params: { path: { transaction_id: transactionId } },\n body,\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype AddCustomerBody = NonNullable<paths[\"/customers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateCustomerBody =\n NonNullable<paths[\"/customers/{customer_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class CustomersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of customers. */\n list() {\n return unwrap(this.client.GET(\"/customers\", {}));\n }\n\n /** Add a new customer. */\n add(body: AddCustomerBody) {\n return unwrap(this.client.POST(\"/customers\", { body }));\n }\n\n /** Fetch a single customer. */\n get(customerId: string) {\n return unwrap(this.client.GET(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n\n /** Update a customer. */\n update(customerId: string, body: UpdateCustomerBody) {\n return unwrap(\n this.client.PUT(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } }, body }),\n );\n }\n\n /** Restore a previously removed customer. */\n restore(customerId: string) {\n return unwrap(this.client.PATCH(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n\n /** Remove a customer. */\n remove(customerId: string) {\n return unwrap(this.client.DELETE(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateVoucherBody = NonNullable<paths[\"/vouchers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ApplyVoucherBody = NonNullable<paths[\"/vouchers/apply\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateVoucherBody =\n NonNullable<paths[\"/vouchers/{voucher_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class VouchersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of vouchers. */\n list() {\n return unwrap(this.client.GET(\"/vouchers\", {}));\n }\n\n /** Create a new voucher. */\n create(body: CreateVoucherBody) {\n return unwrap(this.client.POST(\"/vouchers\", { body }));\n }\n\n /** Apply a voucher code to a resource (e.g. an invoice or subscription). */\n apply(body: ApplyVoucherBody) {\n return unwrap(this.client.POST(\"/vouchers/apply\", { body }));\n }\n\n /** Fetch a single voucher. */\n get(voucherId: string) {\n return unwrap(this.client.GET(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } } }));\n }\n\n /** Update a voucher. */\n update(voucherId: string, body: UpdateVoucherBody) {\n return unwrap(\n this.client.PUT(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } }, body }),\n );\n }\n\n /** Remove a voucher. */\n remove(voucherId: string) {\n return unwrap(this.client.DELETE(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListPlansQuery = paths[\"/plans\"][\"get\"][\"parameters\"][\"query\"];\ntype GetPlanQuery = paths[\"/plans/{plan_id}\"][\"get\"][\"parameters\"][\"query\"];\ntype CreatePlanBody = NonNullable<paths[\"/plans\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdatePlanBody = NonNullable<paths[\"/plans/{plan_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddPriceOptionBody =\n NonNullable<paths[\"/plans/{plan_id}/options\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdatePriceOptionBody =\n NonNullable<paths[\"/plans/{plan_id}/options/{option_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass PlanOptionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Add a price option to a plan. */\n add(planId: string, body: AddPriceOptionBody) {\n return unwrap(this.client.POST(\"/plans/{plan_id}/options\", { params: { path: { plan_id: planId } }, body }));\n }\n\n /** Replace a price option on a plan. */\n update(planId: string, optionId: string, body: UpdatePriceOptionBody) {\n return unwrap(\n this.client.PUT(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n body,\n }),\n );\n }\n\n /** Partially modify a price option on a plan. */\n modify(planId: string, optionId: string) {\n return unwrap(\n this.client.PATCH(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n }),\n );\n }\n\n /** Remove a price option from a plan. */\n remove(planId: string, optionId: string) {\n return unwrap(\n this.client.DELETE(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n }),\n );\n }\n}\n\nexport class PlansResource {\n readonly options: PlanOptionsResource;\n\n constructor(private readonly client: PaisrClient) {\n this.options = new PlanOptionsResource(client);\n }\n\n /** Fetch a list of plans, optionally filtered by type, currency, or active state. */\n list(query?: ListPlansQuery) {\n return unwrap(this.client.GET(\"/plans\", { params: { query } }));\n }\n\n /** Create a new plan. */\n create(body: CreatePlanBody) {\n return unwrap(this.client.POST(\"/plans\", { body }));\n }\n\n /** Fetch a single plan. */\n get(planId: string, query?: GetPlanQuery) {\n return unwrap(this.client.GET(\"/plans/{plan_id}\", { params: { path: { plan_id: planId }, query } }));\n }\n\n /** Update a plan. */\n update(planId: string, body: UpdatePlanBody) {\n return unwrap(this.client.PUT(\"/plans/{plan_id}\", { params: { path: { plan_id: planId } }, body }));\n }\n\n /** Remove a plan. */\n remove(planId: string) {\n return unwrap(this.client.DELETE(\"/plans/{plan_id}\", { params: { path: { plan_id: planId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListInvoicesQuery = paths[\"/invoices\"][\"get\"][\"parameters\"][\"query\"];\ntype CreateInvoiceBody = NonNullable<paths[\"/invoices\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateInvoiceBody =\n NonNullable<paths[\"/invoices/{invoice_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddLineItemsBody =\n NonNullable<paths[\"/invoices/{invoice_id}/items\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateLineItemBody =\n NonNullable<paths[\"/invoices/{invoice_id}/items/{item_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass InvoiceLineItemsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Add line items to an invoice. */\n add(invoiceId: string, body: AddLineItemsBody) {\n return unwrap(this.client.POST(\"/invoices/{invoice_id}/items\", { params: { path: { invoice_id: invoiceId } }, body }));\n }\n\n /** Update a single line item on an invoice. */\n update(invoiceId: string, itemId: string, body: UpdateLineItemBody) {\n return unwrap(\n this.client.PUT(\"/invoices/{invoice_id}/items/{item_id}\", {\n params: { path: { invoice_id: invoiceId, item_id: itemId } },\n body,\n }),\n );\n }\n\n /** Remove a line item from an invoice. */\n remove(invoiceId: string, itemId: string) {\n return unwrap(\n this.client.DELETE(\"/invoices/{invoice_id}/items/{item_id}\", {\n params: { path: { invoice_id: invoiceId, item_id: itemId } },\n }),\n );\n }\n}\n\nexport class InvoicesResource {\n readonly line_items: InvoiceLineItemsResource;\n\n constructor(private readonly client: PaisrClient) {\n this.line_items = new InvoiceLineItemsResource(client);\n }\n\n /** Fetch a list of invoices, optionally filtered by resource, currency, or status. */\n list(query?: ListInvoicesQuery) {\n return unwrap(this.client.GET(\"/invoices\", { params: { query } }));\n }\n\n /** Create a new invoice. */\n create(body: CreateInvoiceBody) {\n return unwrap(this.client.POST(\"/invoices\", { body }));\n }\n\n /** Fetch a single invoice. */\n get(invoiceId: string) {\n return unwrap(this.client.GET(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } } }));\n }\n\n /** Update an invoice. */\n update(invoiceId: string, body: UpdateInvoiceBody) {\n return unwrap(\n this.client.PUT(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } }, body }),\n );\n }\n\n /** Remove an invoice. */\n remove(invoiceId: string) {\n return unwrap(this.client.DELETE(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } } }));\n }\n\n /** Send an invoice to the customer. */\n send(invoiceId: string) {\n return unwrap(this.client.POST(\"/invoices/{invoice_id}/send\", { params: { path: { invoice_id: invoiceId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListSubscriptionsQuery = paths[\"/subscriptions\"][\"get\"][\"parameters\"][\"query\"];\ntype CreateSubscriptionBody =\n NonNullable<paths[\"/subscriptions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class SubscriptionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of subscriptions, optionally filtered by resource, currency, or status. */\n list(query?: ListSubscriptionsQuery) {\n return unwrap(this.client.GET(\"/subscriptions\", { params: { query } }));\n }\n\n /** Create a new subscription. */\n create(body: CreateSubscriptionBody) {\n return unwrap(this.client.POST(\"/subscriptions\", { body }));\n }\n\n /** Fetch a single subscription. */\n get(subscriptionId: string) {\n return unwrap(\n this.client.GET(\"/subscriptions/{subscription_id}\", { params: { path: { subscription_id: subscriptionId } } }),\n );\n }\n\n /** Update a subscription (e.g. change plan or price option). */\n update(subscriptionId: string) {\n return unwrap(\n this.client.PATCH(\"/subscriptions/{subscription_id}\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Remove a subscription. */\n remove(subscriptionId: string) {\n return unwrap(\n this.client.DELETE(\"/subscriptions/{subscription_id}\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Restore a previously canceled subscription. */\n restore(subscriptionId: string) {\n return unwrap(\n this.client.POST(\"/subscriptions/{subscription_id}/restore\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Cancel a subscription. */\n cancel(subscriptionId: string) {\n return unwrap(\n this.client.POST(\"/subscriptions/{subscription_id}/cancel\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { components, paths } from \"../generated/types.js\";\n\ntype ListPaymentsQuery = paths[\"/payments\"][\"get\"][\"parameters\"][\"query\"];\ntype RefundPaymentBody =\n NonNullable<paths[\"/payments/{payment_id}/refund\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Maps each payment method to the request body shape it requires. */\ninterface InitiatePaymentBodyMap {\n wallet: components[\"schemas\"][\"PostInitiateWalletPaymentRequest\"];\n qr: components[\"schemas\"][\"PostInitiateQrPaymentRequest\"];\n card: components[\"schemas\"][\"PostInitiateCardPaymentRequest\"];\n bank: components[\"schemas\"][\"PostInitiateBankPaymentRequest\"];\n}\n\nexport class PaymentsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of payments, optionally filtered by resource, currency, status, or method. */\n list(query?: ListPaymentsQuery) {\n return unwrap(this.client.GET(\"/payments\", { params: { query } }));\n }\n\n /**\n * Initiate a payment using the given method (\"bank\", \"wallet\", \"qr\", or \"card\").\n * The required fields in `body` depend on `method` (e.g. \"bank\" requires `swift_code`,\n * \"card\" requires `card_details`) — the type parameter enforces the matching shape.\n */\n initiate<M extends keyof InitiatePaymentBodyMap>(method: M, body: InitiatePaymentBodyMap[M]) {\n return unwrap(this.client.POST(\"/payments/initiate/{method}\", { params: { path: { method } }, body }));\n }\n\n /** Fetch a single payment. */\n get(paymentId: string) {\n return unwrap(this.client.GET(\"/payments/{payment_id}\", { params: { path: { payment_id: paymentId } } }));\n }\n\n /** Refund a payment, in full or in part. */\n refund(paymentId: string, body: RefundPaymentBody) {\n return unwrap(\n this.client.POST(\"/payments/{payment_id}/refund\", { params: { path: { payment_id: paymentId } }, body }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ConnectProviderBody = NonNullable<paths[\"/providers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateProviderConnectionBody =\n NonNullable<paths[\"/providers/{connection_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class ProvidersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of provider connections. */\n list() {\n return unwrap(this.client.GET(\"/providers\", {}));\n }\n\n /** Connect a new provider. */\n connect(body: ConnectProviderBody) {\n return unwrap(this.client.POST(\"/providers\", { body }));\n }\n\n /** Replace a provider connection's configuration. */\n update(connectionId: string, body: UpdateProviderConnectionBody) {\n return unwrap(\n this.client.PUT(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } }, body }),\n );\n }\n\n /** Partially modify a provider connection. */\n modify(connectionId: string) {\n return unwrap(this.client.PATCH(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } } }));\n }\n\n /** Remove a provider connection. */\n remove(connectionId: string) {\n return unwrap(\n this.client.DELETE(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } } }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\n\nexport class MetricsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch invoice metrics. */\n invoices() {\n return unwrap(this.client.GET(\"/metrics/invoices\", {}));\n }\n\n /** Fetch subscription metrics. */\n subscriptions() {\n return unwrap(this.client.GET(\"/metrics/subscriptions\", {}));\n }\n\n /** Fetch payment metrics. */\n payments() {\n return unwrap(this.client.GET(\"/metrics/payments\", {}));\n }\n\n /** Fetch customer metrics. */\n customers() {\n return unwrap(this.client.GET(\"/metrics/customers\", {}));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListLogsQuery = paths[\"/logs\"][\"get\"][\"parameters\"][\"query\"];\n\nexport class LogsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch API request logs, optionally filtered by resource, method, or auth flow. */\n list(query?: ListLogsQuery) {\n return unwrap(this.client.GET(\"/logs\", { params: { query } }));\n }\n}\n","/**\n * Verifies Paisr webhook signatures.\n *\n * Paisr signs webhook deliveries with `X-PCB-Signature` (HMAC-SHA256, hex-encoded)\n * over `${X-PCB-Timestamp}.${rawBody}`, using the webhook's signing secret\n * (see `paisr.webhooks.getSecret()` / `.rotateSecret()`).\n *\n * @see https://docs.paisr.tech/v2/api/webhooks\n */\n\nexport interface VerifyWebhookSignatureOptions {\n /** The exact raw request body bytes/string as received — do not re-stringify a parsed object. */\n payload: string;\n /** Value of the `X-PCB-Signature` request header. */\n signature: string;\n /** Value of the `X-PCB-Timestamp` request header. */\n timestamp: string;\n /** The webhook's signing secret. */\n secret: string;\n}\n\nfunction toHex(bytes: ArrayBuffer): string {\n return Array.from(new Uint8Array(bytes))\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nfunction timingSafeEqual(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let mismatch = 0;\n for (let i = 0; i < a.length; i++) {\n mismatch |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return mismatch === 0;\n}\n\n/** Returns `true` if the given webhook delivery has a valid signature. */\nexport async function verifyWebhookSignature(options: VerifyWebhookSignatureOptions): Promise<boolean> {\n const { payload, signature, timestamp, secret } = options;\n\n const key = await crypto.subtle.importKey(\n \"raw\",\n new TextEncoder().encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n const digest = await crypto.subtle.sign(\"HMAC\", key, new TextEncoder().encode(`${timestamp}.${payload}`));\n const expected = toHex(digest);\n\n return timingSafeEqual(expected, signature);\n}\n\n/**\n * Verifies a webhook delivery and parses the payload as JSON.\n * Throws if the signature is invalid.\n */\nexport async function constructWebhookEvent<T = unknown>(options: VerifyWebhookSignatureOptions): Promise<T> {\n const valid = await verifyWebhookSignature(options);\n if (!valid) {\n throw new Error(\"Paisr: webhook signature verification failed.\");\n }\n return JSON.parse(options.payload) as T;\n}\n"],"mappings":"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","names":["createClient"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -8005,7 +8005,7 @@ type CreateInvoiceBody = NonNullable<paths["/invoices"]["post"]["requestBody"]>[
|
|
|
8005
8005
|
type UpdateInvoiceBody = NonNullable<paths["/invoices/{invoice_id}"]["put"]["requestBody"]>["content"]["application/json"];
|
|
8006
8006
|
type AddLineItemsBody = NonNullable<paths["/invoices/{invoice_id}/items"]["post"]["requestBody"]>["content"]["application/json"];
|
|
8007
8007
|
type UpdateLineItemBody = NonNullable<paths["/invoices/{invoice_id}/items/{item_id}"]["put"]["requestBody"]>["content"]["application/json"];
|
|
8008
|
-
declare class
|
|
8008
|
+
declare class InvoiceLineItemsResource {
|
|
8009
8009
|
private readonly client;
|
|
8010
8010
|
constructor(client: PaisrClient);
|
|
8011
8011
|
/** Add line items to an invoice. */
|
|
@@ -8017,7 +8017,7 @@ declare class InvoiceItemsResource {
|
|
|
8017
8017
|
}
|
|
8018
8018
|
declare class InvoicesResource {
|
|
8019
8019
|
private readonly client;
|
|
8020
|
-
readonly
|
|
8020
|
+
readonly line_items: InvoiceLineItemsResource;
|
|
8021
8021
|
constructor(client: PaisrClient);
|
|
8022
8022
|
/** Fetch a list of invoices, optionally filtered by resource, currency, or status. */
|
|
8023
8023
|
list(query?: ListInvoicesQuery): Promise<any>;
|
|
@@ -8055,16 +8055,25 @@ declare class SubscriptionsResource {
|
|
|
8055
8055
|
}
|
|
8056
8056
|
|
|
8057
8057
|
type ListPaymentsQuery = paths["/payments"]["get"]["parameters"]["query"];
|
|
8058
|
-
type InitiatePaymentMethod = paths["/payments/initiate/{method}"]["post"]["parameters"]["path"]["method"];
|
|
8059
|
-
type InitiatePaymentBody = NonNullable<paths["/payments/initiate/{method}"]["post"]["requestBody"]>["content"]["application/json"];
|
|
8060
8058
|
type RefundPaymentBody = NonNullable<paths["/payments/{payment_id}/refund"]["post"]["requestBody"]>["content"]["application/json"];
|
|
8059
|
+
/** Maps each payment method to the request body shape it requires. */
|
|
8060
|
+
interface InitiatePaymentBodyMap {
|
|
8061
|
+
wallet: components["schemas"]["PostInitiateWalletPaymentRequest"];
|
|
8062
|
+
qr: components["schemas"]["PostInitiateQrPaymentRequest"];
|
|
8063
|
+
card: components["schemas"]["PostInitiateCardPaymentRequest"];
|
|
8064
|
+
bank: components["schemas"]["PostInitiateBankPaymentRequest"];
|
|
8065
|
+
}
|
|
8061
8066
|
declare class PaymentsResource {
|
|
8062
8067
|
private readonly client;
|
|
8063
8068
|
constructor(client: PaisrClient);
|
|
8064
8069
|
/** Fetch a list of payments, optionally filtered by resource, currency, status, or method. */
|
|
8065
8070
|
list(query?: ListPaymentsQuery): Promise<any>;
|
|
8066
|
-
/**
|
|
8067
|
-
|
|
8071
|
+
/**
|
|
8072
|
+
* Initiate a payment using the given method ("bank", "wallet", "qr", or "card").
|
|
8073
|
+
* The required fields in `body` depend on `method` (e.g. "bank" requires `swift_code`,
|
|
8074
|
+
* "card" requires `card_details`) — the type parameter enforces the matching shape.
|
|
8075
|
+
*/
|
|
8076
|
+
initiate<M extends keyof InitiatePaymentBodyMap>(method: M, body: InitiatePaymentBodyMap[M]): Promise<any>;
|
|
8068
8077
|
/** Fetch a single payment. */
|
|
8069
8078
|
get(paymentId: string): Promise<any>;
|
|
8070
8079
|
/** Refund a payment, in full or in part. */
|
package/dist/index.d.ts
CHANGED
|
@@ -8005,7 +8005,7 @@ type CreateInvoiceBody = NonNullable<paths["/invoices"]["post"]["requestBody"]>[
|
|
|
8005
8005
|
type UpdateInvoiceBody = NonNullable<paths["/invoices/{invoice_id}"]["put"]["requestBody"]>["content"]["application/json"];
|
|
8006
8006
|
type AddLineItemsBody = NonNullable<paths["/invoices/{invoice_id}/items"]["post"]["requestBody"]>["content"]["application/json"];
|
|
8007
8007
|
type UpdateLineItemBody = NonNullable<paths["/invoices/{invoice_id}/items/{item_id}"]["put"]["requestBody"]>["content"]["application/json"];
|
|
8008
|
-
declare class
|
|
8008
|
+
declare class InvoiceLineItemsResource {
|
|
8009
8009
|
private readonly client;
|
|
8010
8010
|
constructor(client: PaisrClient);
|
|
8011
8011
|
/** Add line items to an invoice. */
|
|
@@ -8017,7 +8017,7 @@ declare class InvoiceItemsResource {
|
|
|
8017
8017
|
}
|
|
8018
8018
|
declare class InvoicesResource {
|
|
8019
8019
|
private readonly client;
|
|
8020
|
-
readonly
|
|
8020
|
+
readonly line_items: InvoiceLineItemsResource;
|
|
8021
8021
|
constructor(client: PaisrClient);
|
|
8022
8022
|
/** Fetch a list of invoices, optionally filtered by resource, currency, or status. */
|
|
8023
8023
|
list(query?: ListInvoicesQuery): Promise<any>;
|
|
@@ -8055,16 +8055,25 @@ declare class SubscriptionsResource {
|
|
|
8055
8055
|
}
|
|
8056
8056
|
|
|
8057
8057
|
type ListPaymentsQuery = paths["/payments"]["get"]["parameters"]["query"];
|
|
8058
|
-
type InitiatePaymentMethod = paths["/payments/initiate/{method}"]["post"]["parameters"]["path"]["method"];
|
|
8059
|
-
type InitiatePaymentBody = NonNullable<paths["/payments/initiate/{method}"]["post"]["requestBody"]>["content"]["application/json"];
|
|
8060
8058
|
type RefundPaymentBody = NonNullable<paths["/payments/{payment_id}/refund"]["post"]["requestBody"]>["content"]["application/json"];
|
|
8059
|
+
/** Maps each payment method to the request body shape it requires. */
|
|
8060
|
+
interface InitiatePaymentBodyMap {
|
|
8061
|
+
wallet: components["schemas"]["PostInitiateWalletPaymentRequest"];
|
|
8062
|
+
qr: components["schemas"]["PostInitiateQrPaymentRequest"];
|
|
8063
|
+
card: components["schemas"]["PostInitiateCardPaymentRequest"];
|
|
8064
|
+
bank: components["schemas"]["PostInitiateBankPaymentRequest"];
|
|
8065
|
+
}
|
|
8061
8066
|
declare class PaymentsResource {
|
|
8062
8067
|
private readonly client;
|
|
8063
8068
|
constructor(client: PaisrClient);
|
|
8064
8069
|
/** Fetch a list of payments, optionally filtered by resource, currency, status, or method. */
|
|
8065
8070
|
list(query?: ListPaymentsQuery): Promise<any>;
|
|
8066
|
-
/**
|
|
8067
|
-
|
|
8071
|
+
/**
|
|
8072
|
+
* Initiate a payment using the given method ("bank", "wallet", "qr", or "card").
|
|
8073
|
+
* The required fields in `body` depend on `method` (e.g. "bank" requires `swift_code`,
|
|
8074
|
+
* "card" requires `card_details`) — the type parameter enforces the matching shape.
|
|
8075
|
+
*/
|
|
8076
|
+
initiate<M extends keyof InitiatePaymentBodyMap>(method: M, body: InitiatePaymentBodyMap[M]): Promise<any>;
|
|
8068
8077
|
/** Fetch a single payment. */
|
|
8069
8078
|
get(paymentId: string): Promise<any>;
|
|
8070
8079
|
/** Refund a payment, in full or in part. */
|
package/dist/index.js
CHANGED
|
@@ -579,7 +579,7 @@ var PlansResource = class {
|
|
|
579
579
|
};
|
|
580
580
|
|
|
581
581
|
// src/resources/invoices.ts
|
|
582
|
-
var
|
|
582
|
+
var InvoiceLineItemsResource = class {
|
|
583
583
|
constructor(client) {
|
|
584
584
|
this.client = client;
|
|
585
585
|
}
|
|
@@ -609,10 +609,10 @@ var InvoiceItemsResource = class {
|
|
|
609
609
|
var InvoicesResource = class {
|
|
610
610
|
constructor(client) {
|
|
611
611
|
this.client = client;
|
|
612
|
-
this.
|
|
612
|
+
this.line_items = new InvoiceLineItemsResource(client);
|
|
613
613
|
}
|
|
614
614
|
client;
|
|
615
|
-
|
|
615
|
+
line_items;
|
|
616
616
|
/** Fetch a list of invoices, optionally filtered by resource, currency, or status. */
|
|
617
617
|
list(query) {
|
|
618
618
|
return unwrap(this.client.GET("/invoices", { params: { query } }));
|
|
@@ -705,7 +705,11 @@ var PaymentsResource = class {
|
|
|
705
705
|
list(query) {
|
|
706
706
|
return unwrap(this.client.GET("/payments", { params: { query } }));
|
|
707
707
|
}
|
|
708
|
-
/**
|
|
708
|
+
/**
|
|
709
|
+
* Initiate a payment using the given method ("bank", "wallet", "qr", or "card").
|
|
710
|
+
* The required fields in `body` depend on `method` (e.g. "bank" requires `swift_code`,
|
|
711
|
+
* "card" requires `card_details`) — the type parameter enforces the matching shape.
|
|
712
|
+
*/
|
|
709
713
|
initiate(method, body) {
|
|
710
714
|
return unwrap(this.client.POST("/payments/initiate/{method}", { params: { path: { method } }, body }));
|
|
711
715
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/resources/access-tokens.ts","../src/resources/webhooks.ts","../src/resources/wallets.ts","../src/resources/transfers.ts","../src/resources/customers.ts","../src/resources/vouchers.ts","../src/resources/plans.ts","../src/resources/invoices.ts","../src/resources/subscriptions.ts","../src/resources/payments.ts","../src/resources/providers.ts","../src/resources/metrics.ts","../src/resources/logs.ts","../src/webhook-signature.ts","../src/index.ts"],"sourcesContent":["import createClient, { type Client, type ClientOptions } from \"openapi-fetch\";\nimport type { paths } from \"./generated/types.js\";\n\nexport type PaisrEnvironment = \"live\" | \"staging\";\n\nconst BASE_URLS: Record<PaisrEnvironment, string> = {\n live: \"https://api.live.paisr.tech/v2\",\n staging: \"https://api.staging.paisr.tech/v2\",\n};\n\nexport interface PaisrOptions {\n /** Bearer access token issued by Paisr (Settings -> Access Tokens). */\n apiKey: string;\n /** Which Paisr environment to talk to. Defaults to \"live\". Ignored if `baseUrl` is set. */\n environment?: PaisrEnvironment;\n /** Override the API base URL entirely, e.g. for a private/self-hosted deployment. */\n baseUrl?: string;\n /** Custom fetch implementation (useful for tests or non-standard runtimes). */\n fetch?: ClientOptions[\"fetch\"];\n}\n\nexport type PaisrClient = Client<paths>;\n\nexport function createPaisrClient(options: PaisrOptions): PaisrClient {\n if (!options.apiKey) {\n throw new Error(\"Paisr: `apiKey` is required.\");\n }\n\n const baseUrl = options.baseUrl ?? BASE_URLS[options.environment ?? \"live\"];\n\n return createClient<paths>({\n baseUrl,\n fetch: options.fetch,\n headers: {\n Authorization: `Bearer ${options.apiKey}`,\n },\n });\n}\n\n/** Thrown for any non-2xx response from the Paisr API. */\nexport class PaisrError extends Error {\n /** HTTP status code of the failed response. */\n readonly status: number;\n /** Parsed error response body, if any. */\n readonly body: unknown;\n\n constructor(message: string, status: number, body: unknown) {\n super(message);\n this.name = \"PaisrError\";\n this.status = status;\n this.body = body;\n }\n}\n\ninterface Envelope {\n success?: boolean;\n message?: string;\n data?: unknown;\n}\n\ninterface RawResult {\n data?: unknown;\n error?: unknown;\n response: Response;\n}\n\n/**\n * Unwraps an openapi-fetch result: throws `PaisrError` on failure, otherwise\n * returns the inner `data` payload of Paisr's `{ success, data }` envelope\n * (or the whole envelope for endpoints that only return `{ success, message }`).\n */\nexport async function unwrap(resultPromise: Promise<RawResult>): Promise<any> {\n const { data, error, response } = await resultPromise;\n\n if (error !== undefined) {\n const body = error as Envelope | undefined;\n throw new PaisrError(\n body?.message ?? `Paisr API request failed with status ${response.status}`,\n response.status,\n error,\n );\n }\n\n const envelope = data as Envelope | undefined;\n if (envelope && typeof envelope === \"object\" && \"data\" in envelope) {\n return envelope.data;\n }\n return envelope;\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateTokenBody = NonNullable<paths[\"/access-tokens\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateTokenBody = NonNullable<paths[\"/access-tokens/{token_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddPermissionBody =\n NonNullable<paths[\"/access-tokens/{token_id}/permissions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class AccessTokensResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of access tokens. */\n list() {\n return unwrap(this.client.GET(\"/access-tokens\", {}));\n }\n\n /** Create a new access token. */\n create(body: CreateTokenBody) {\n return unwrap(this.client.POST(\"/access-tokens\", { body }));\n }\n\n /** Fetch a single access token. */\n get(tokenId: string) {\n return unwrap(this.client.GET(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } } }));\n }\n\n /** Update an access token. */\n update(tokenId: string, body: UpdateTokenBody) {\n return unwrap(this.client.PUT(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } }, body }));\n }\n\n /** Revoke an access token. */\n revoke(tokenId: string) {\n return unwrap(this.client.DELETE(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } } }));\n }\n\n /** Add a permission scope to an access token. */\n addPermission(tokenId: string, body: AddPermissionBody) {\n return unwrap(\n this.client.POST(\"/access-tokens/{token_id}/permissions\", { params: { path: { token_id: tokenId } }, body }),\n );\n }\n\n /** Remove a permission scope from an access token. */\n removePermission(tokenId: string, permissionId: string) {\n return unwrap(\n this.client.DELETE(\"/access-tokens/{token_id}/permissions/{permission_id}\", {\n params: { path: { token_id: tokenId, permission_id: permissionId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateWebhookBody = NonNullable<paths[\"/webhooks\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateWebhookBody =\n NonNullable<paths[\"/webhooks/{webhook_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddTriggerBody =\n NonNullable<paths[\"/webhooks/{webhook_id}/triggers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class WebhooksResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of webhooks. */\n list() {\n return unwrap(this.client.GET(\"/webhooks\", {}));\n }\n\n /** Create a new webhook. */\n create(body: CreateWebhookBody) {\n return unwrap(this.client.POST(\"/webhooks\", { body }));\n }\n\n /** Fetch a single webhook. */\n get(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Replace a webhook's configuration. */\n update(webhookId: string, body: UpdateWebhookBody) {\n return unwrap(\n this.client.PUT(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } }, body }),\n );\n }\n\n /** Partially modify a webhook (e.g. enable/disable). */\n modify(webhookId: string) {\n return unwrap(this.client.PATCH(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Remove a webhook. */\n remove(webhookId: string) {\n return unwrap(this.client.DELETE(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Send a test event to a webhook. */\n test(webhookId: string) {\n return unwrap(this.client.POST(\"/webhooks/{webhook_id}/test\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Fetch delivery stats for a webhook. */\n getStats(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/stats\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Fetch a webhook's signing secret. */\n getSecret(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/secret\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Rotate a webhook's signing secret. */\n rotateSecret(webhookId: string) {\n return unwrap(\n this.client.PATCH(\"/webhooks/{webhook_id}/secret\", { params: { path: { webhook_id: webhookId } } }),\n );\n }\n\n /** Subscribe a webhook to an additional event trigger. */\n addTrigger(webhookId: string, body: AddTriggerBody) {\n return unwrap(\n this.client.POST(\"/webhooks/{webhook_id}/triggers\", { params: { path: { webhook_id: webhookId } }, body }),\n );\n }\n\n /** Unsubscribe a webhook from an event trigger. */\n removeTrigger(webhookId: string, triggerId: string) {\n return unwrap(\n this.client.DELETE(\"/webhooks/{webhook_id}/triggers/{trigger_id}\", {\n params: { path: { webhook_id: webhookId, trigger_id: triggerId } },\n }),\n );\n }\n\n /** Fetch delivery events for a webhook. */\n getEvents(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/events\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Retry delivery of a specific webhook event. */\n retryEvent(webhookId: string, eventId: string) {\n return unwrap(\n this.client.POST(\"/webhooks/{webhook_id}/events/{event_id}\", {\n params: { path: { webhook_id: webhookId, event_id: eventId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateWalletBody = NonNullable<paths[\"/wallets\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateProfileBody = NonNullable<paths[\"/wallets/{wallet_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateWalletBody = NonNullable<paths[\"/wallets/{wallet_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype TransactionsQuery = paths[\"/wallets/{wallet_id}/transactions\"][\"get\"][\"parameters\"][\"query\"];\ntype BalancesQuery = paths[\"/wallets/{wallet_id}/balances\"][\"get\"][\"parameters\"][\"query\"];\ntype OpenBalanceBody =\n NonNullable<paths[\"/wallets/{wallet_id}/balances\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateBalanceBody =\n NonNullable<paths[\"/wallets/{wallet_id}/balances/{balance_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ConnectAccountBody =\n NonNullable<paths[\"/wallets/{wallet_id}/accounts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype VerifyAccountBody =\n NonNullable<paths[\"/wallets/{wallet_id}/accounts/{account_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddContactBody =\n NonNullable<paths[\"/wallets/{wallet_id}/contacts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype CreateLinkBody = NonNullable<paths[\"/wallets/{wallet_id}/links\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateLinkBody =\n NonNullable<paths[\"/wallets/{wallet_id}/links/{link_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass WalletPinResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's PIN state (never the raw PIN itself). */\n get(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/pin\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Rotate a wallet's PIN. */\n rotate(walletId: string) {\n return unwrap(this.client.PATCH(\"/wallets/{wallet_id}/pin\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n\nclass WalletStatementsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's statements. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/statements\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n\nclass WalletTransactionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's transactions, optionally filtered by balance, status, type, or method. */\n list(walletId: string, query?: TransactionsQuery) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/transactions\", { params: { path: { wallet_id: walletId }, query } }),\n );\n }\n\n /** Fetch a single transaction on a wallet. */\n get(walletId: string, transactionId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/transactions/{transaction_id}\", {\n params: { path: { wallet_id: walletId, transaction_id: transactionId } },\n }),\n );\n }\n}\n\nclass WalletBalancesResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's balances, optionally filtered by type or currency. */\n list(walletId: string, query?: BalancesQuery) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/balances\", { params: { path: { wallet_id: walletId }, query } }),\n );\n }\n\n /** Open a new balance on a wallet. */\n open(walletId: string, body: OpenBalanceBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/balances\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single balance on a wallet. */\n get(walletId: string, balanceId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n }),\n );\n }\n\n /** Update a balance on a wallet. */\n update(walletId: string, balanceId: string, body: UpdateBalanceBody) {\n return unwrap(\n this.client.PUT(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n body,\n }),\n );\n }\n\n /** Close a balance on a wallet. */\n close(walletId: string, balanceId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n }),\n );\n }\n}\n\nclass WalletAccountsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's linked external accounts. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/accounts\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Connect a new external account to a wallet. */\n connect(walletId: string, body: ConnectAccountBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/accounts\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single linked account. */\n get(walletId: string, accountId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n }),\n );\n }\n\n /** Verify a linked account (e.g. micro-deposit confirmation). */\n verify(walletId: string, accountId: string, body: VerifyAccountBody) {\n return unwrap(\n this.client.PATCH(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n body,\n }),\n );\n }\n\n /** Remove a linked account from a wallet. */\n remove(walletId: string, accountId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n }),\n );\n }\n}\n\nclass WalletContactsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's saved payment contacts. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/contacts\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Add a payment contact to a wallet. */\n add(walletId: string, body: AddContactBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/contacts\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single payment contact. */\n get(walletId: string, contactId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/contacts/{contact_id}\", {\n params: { path: { wallet_id: walletId, contact_id: contactId } },\n }),\n );\n }\n\n /** Remove a payment contact from a wallet. */\n remove(walletId: string, contactId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/contacts/{contact_id}\", {\n params: { path: { wallet_id: walletId, contact_id: contactId } },\n }),\n );\n }\n}\n\nclass WalletLinksResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's hosted links (e.g. onboarding or top-up links). */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/links\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Create a new hosted link for a wallet. */\n create(walletId: string, body: CreateLinkBody) {\n return unwrap(this.client.POST(\"/wallets/{wallet_id}/links\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Fetch a single hosted link. */\n get(walletId: string, linkId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n }),\n );\n }\n\n /** Update a hosted link. */\n update(walletId: string, linkId: string, body: UpdateLinkBody) {\n return unwrap(\n this.client.PUT(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n body,\n }),\n );\n }\n\n /** Remove a hosted link. */\n remove(walletId: string, linkId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n }),\n );\n }\n}\n\nexport class WalletsResource {\n readonly pin: WalletPinResource;\n readonly statements: WalletStatementsResource;\n readonly transactions: WalletTransactionsResource;\n readonly balances: WalletBalancesResource;\n readonly accounts: WalletAccountsResource;\n readonly contacts: WalletContactsResource;\n readonly links: WalletLinksResource;\n\n constructor(private readonly client: PaisrClient) {\n this.pin = new WalletPinResource(client);\n this.statements = new WalletStatementsResource(client);\n this.transactions = new WalletTransactionsResource(client);\n this.balances = new WalletBalancesResource(client);\n this.accounts = new WalletAccountsResource(client);\n this.contacts = new WalletContactsResource(client);\n this.links = new WalletLinksResource(client);\n }\n\n /** Fetch a list of wallets. */\n list() {\n return unwrap(this.client.GET(\"/wallets\", {}));\n }\n\n /** Create a new wallet. */\n create(body: CreateWalletBody) {\n return unwrap(this.client.POST(\"/wallets\", { body }));\n }\n\n /** Fetch a single wallet. */\n get(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Update a wallet's profile details. */\n updateProfile(walletId: string, body: UpdateProfileBody) {\n return unwrap(this.client.PUT(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Partially update a wallet. */\n update(walletId: string, body: UpdateWalletBody) {\n return unwrap(this.client.PATCH(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Delete a wallet. */\n delete(walletId: string) {\n return unwrap(this.client.DELETE(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype InitiateTransferMethod = paths[\"/transfers/initiate/{method}\"][\"post\"][\"parameters\"][\"path\"][\"method\"];\ntype InitiateTransferBody =\n NonNullable<paths[\"/transfers/initiate/{method}\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype BatchTransferBody =\n NonNullable<paths[\"/transfers/initiate/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ApproveTransferBody =\n NonNullable<paths[\"/transfers/{transaction_id}/approve\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype CancelTransferBody =\n NonNullable<paths[\"/transfers/{transaction_id}/cancel\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class TransfersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Initiate a transfer using the given method (\"peer\", \"move\", or \"bank\"). */\n initiate(method: InitiateTransferMethod, body: InitiateTransferBody) {\n return unwrap(this.client.POST(\"/transfers/initiate/{method}\", { params: { path: { method } }, body }));\n }\n\n /** Initiate a batch of transfers in a single request. */\n initiateBatch(body: BatchTransferBody) {\n return unwrap(this.client.POST(\"/transfers/initiate/batch\", { body }));\n }\n\n /** Approve a pending transfer. */\n approve(transactionId: string, body: ApproveTransferBody) {\n return unwrap(\n this.client.POST(\"/transfers/{transaction_id}/approve\", {\n params: { path: { transaction_id: transactionId } },\n body,\n }),\n );\n }\n\n /** Cancel a pending transfer. */\n cancel(transactionId: string, body: CancelTransferBody) {\n return unwrap(\n this.client.POST(\"/transfers/{transaction_id}/cancel\", {\n params: { path: { transaction_id: transactionId } },\n body,\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype AddCustomerBody = NonNullable<paths[\"/customers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateCustomerBody =\n NonNullable<paths[\"/customers/{customer_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class CustomersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of customers. */\n list() {\n return unwrap(this.client.GET(\"/customers\", {}));\n }\n\n /** Add a new customer. */\n add(body: AddCustomerBody) {\n return unwrap(this.client.POST(\"/customers\", { body }));\n }\n\n /** Fetch a single customer. */\n get(customerId: string) {\n return unwrap(this.client.GET(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n\n /** Update a customer. */\n update(customerId: string, body: UpdateCustomerBody) {\n return unwrap(\n this.client.PUT(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } }, body }),\n );\n }\n\n /** Restore a previously removed customer. */\n restore(customerId: string) {\n return unwrap(this.client.PATCH(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n\n /** Remove a customer. */\n remove(customerId: string) {\n return unwrap(this.client.DELETE(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateVoucherBody = NonNullable<paths[\"/vouchers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ApplyVoucherBody = NonNullable<paths[\"/vouchers/apply\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateVoucherBody =\n NonNullable<paths[\"/vouchers/{voucher_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class VouchersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of vouchers. */\n list() {\n return unwrap(this.client.GET(\"/vouchers\", {}));\n }\n\n /** Create a new voucher. */\n create(body: CreateVoucherBody) {\n return unwrap(this.client.POST(\"/vouchers\", { body }));\n }\n\n /** Apply a voucher code to a resource (e.g. an invoice or subscription). */\n apply(body: ApplyVoucherBody) {\n return unwrap(this.client.POST(\"/vouchers/apply\", { body }));\n }\n\n /** Fetch a single voucher. */\n get(voucherId: string) {\n return unwrap(this.client.GET(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } } }));\n }\n\n /** Update a voucher. */\n update(voucherId: string, body: UpdateVoucherBody) {\n return unwrap(\n this.client.PUT(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } }, body }),\n );\n }\n\n /** Remove a voucher. */\n remove(voucherId: string) {\n return unwrap(this.client.DELETE(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListPlansQuery = paths[\"/plans\"][\"get\"][\"parameters\"][\"query\"];\ntype GetPlanQuery = paths[\"/plans/{plan_id}\"][\"get\"][\"parameters\"][\"query\"];\ntype CreatePlanBody = NonNullable<paths[\"/plans\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdatePlanBody = NonNullable<paths[\"/plans/{plan_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddPriceOptionBody =\n NonNullable<paths[\"/plans/{plan_id}/options\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdatePriceOptionBody =\n NonNullable<paths[\"/plans/{plan_id}/options/{option_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass PlanOptionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Add a price option to a plan. */\n add(planId: string, body: AddPriceOptionBody) {\n return unwrap(this.client.POST(\"/plans/{plan_id}/options\", { params: { path: { plan_id: planId } }, body }));\n }\n\n /** Replace a price option on a plan. */\n update(planId: string, optionId: string, body: UpdatePriceOptionBody) {\n return unwrap(\n this.client.PUT(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n body,\n }),\n );\n }\n\n /** Partially modify a price option on a plan. */\n modify(planId: string, optionId: string) {\n return unwrap(\n this.client.PATCH(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n }),\n );\n }\n\n /** Remove a price option from a plan. */\n remove(planId: string, optionId: string) {\n return unwrap(\n this.client.DELETE(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n }),\n );\n }\n}\n\nexport class PlansResource {\n readonly options: PlanOptionsResource;\n\n constructor(private readonly client: PaisrClient) {\n this.options = new PlanOptionsResource(client);\n }\n\n /** Fetch a list of plans, optionally filtered by type, currency, or active state. */\n list(query?: ListPlansQuery) {\n return unwrap(this.client.GET(\"/plans\", { params: { query } }));\n }\n\n /** Create a new plan. */\n create(body: CreatePlanBody) {\n return unwrap(this.client.POST(\"/plans\", { body }));\n }\n\n /** Fetch a single plan. */\n get(planId: string, query?: GetPlanQuery) {\n return unwrap(this.client.GET(\"/plans/{plan_id}\", { params: { path: { plan_id: planId }, query } }));\n }\n\n /** Update a plan. */\n update(planId: string, body: UpdatePlanBody) {\n return unwrap(this.client.PUT(\"/plans/{plan_id}\", { params: { path: { plan_id: planId } }, body }));\n }\n\n /** Remove a plan. */\n remove(planId: string) {\n return unwrap(this.client.DELETE(\"/plans/{plan_id}\", { params: { path: { plan_id: planId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListInvoicesQuery = paths[\"/invoices\"][\"get\"][\"parameters\"][\"query\"];\ntype CreateInvoiceBody = NonNullable<paths[\"/invoices\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateInvoiceBody =\n NonNullable<paths[\"/invoices/{invoice_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddLineItemsBody =\n NonNullable<paths[\"/invoices/{invoice_id}/items\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateLineItemBody =\n NonNullable<paths[\"/invoices/{invoice_id}/items/{item_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass InvoiceItemsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Add line items to an invoice. */\n add(invoiceId: string, body: AddLineItemsBody) {\n return unwrap(this.client.POST(\"/invoices/{invoice_id}/items\", { params: { path: { invoice_id: invoiceId } }, body }));\n }\n\n /** Update a single line item on an invoice. */\n update(invoiceId: string, itemId: string, body: UpdateLineItemBody) {\n return unwrap(\n this.client.PUT(\"/invoices/{invoice_id}/items/{item_id}\", {\n params: { path: { invoice_id: invoiceId, item_id: itemId } },\n body,\n }),\n );\n }\n\n /** Remove a line item from an invoice. */\n remove(invoiceId: string, itemId: string) {\n return unwrap(\n this.client.DELETE(\"/invoices/{invoice_id}/items/{item_id}\", {\n params: { path: { invoice_id: invoiceId, item_id: itemId } },\n }),\n );\n }\n}\n\nexport class InvoicesResource {\n readonly items: InvoiceItemsResource;\n\n constructor(private readonly client: PaisrClient) {\n this.items = new InvoiceItemsResource(client);\n }\n\n /** Fetch a list of invoices, optionally filtered by resource, currency, or status. */\n list(query?: ListInvoicesQuery) {\n return unwrap(this.client.GET(\"/invoices\", { params: { query } }));\n }\n\n /** Create a new invoice. */\n create(body: CreateInvoiceBody) {\n return unwrap(this.client.POST(\"/invoices\", { body }));\n }\n\n /** Fetch a single invoice. */\n get(invoiceId: string) {\n return unwrap(this.client.GET(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } } }));\n }\n\n /** Update an invoice. */\n update(invoiceId: string, body: UpdateInvoiceBody) {\n return unwrap(\n this.client.PUT(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } }, body }),\n );\n }\n\n /** Remove an invoice. */\n remove(invoiceId: string) {\n return unwrap(this.client.DELETE(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } } }));\n }\n\n /** Send an invoice to the customer. */\n send(invoiceId: string) {\n return unwrap(this.client.POST(\"/invoices/{invoice_id}/send\", { params: { path: { invoice_id: invoiceId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListSubscriptionsQuery = paths[\"/subscriptions\"][\"get\"][\"parameters\"][\"query\"];\ntype CreateSubscriptionBody =\n NonNullable<paths[\"/subscriptions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class SubscriptionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of subscriptions, optionally filtered by resource, currency, or status. */\n list(query?: ListSubscriptionsQuery) {\n return unwrap(this.client.GET(\"/subscriptions\", { params: { query } }));\n }\n\n /** Create a new subscription. */\n create(body: CreateSubscriptionBody) {\n return unwrap(this.client.POST(\"/subscriptions\", { body }));\n }\n\n /** Fetch a single subscription. */\n get(subscriptionId: string) {\n return unwrap(\n this.client.GET(\"/subscriptions/{subscription_id}\", { params: { path: { subscription_id: subscriptionId } } }),\n );\n }\n\n /** Update a subscription (e.g. change plan or price option). */\n update(subscriptionId: string) {\n return unwrap(\n this.client.PATCH(\"/subscriptions/{subscription_id}\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Remove a subscription. */\n remove(subscriptionId: string) {\n return unwrap(\n this.client.DELETE(\"/subscriptions/{subscription_id}\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Restore a previously canceled subscription. */\n restore(subscriptionId: string) {\n return unwrap(\n this.client.POST(\"/subscriptions/{subscription_id}/restore\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Cancel a subscription. */\n cancel(subscriptionId: string) {\n return unwrap(\n this.client.POST(\"/subscriptions/{subscription_id}/cancel\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListPaymentsQuery = paths[\"/payments\"][\"get\"][\"parameters\"][\"query\"];\ntype InitiatePaymentMethod = paths[\"/payments/initiate/{method}\"][\"post\"][\"parameters\"][\"path\"][\"method\"];\ntype InitiatePaymentBody =\n NonNullable<paths[\"/payments/initiate/{method}\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype RefundPaymentBody =\n NonNullable<paths[\"/payments/{payment_id}/refund\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class PaymentsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of payments, optionally filtered by resource, currency, status, or method. */\n list(query?: ListPaymentsQuery) {\n return unwrap(this.client.GET(\"/payments\", { params: { query } }));\n }\n\n /** Initiate a payment using the given method (\"bank\", \"wallet\", \"qr\", or \"card\"). */\n initiate(method: InitiatePaymentMethod, body: InitiatePaymentBody) {\n return unwrap(this.client.POST(\"/payments/initiate/{method}\", { params: { path: { method } }, body }));\n }\n\n /** Fetch a single payment. */\n get(paymentId: string) {\n return unwrap(this.client.GET(\"/payments/{payment_id}\", { params: { path: { payment_id: paymentId } } }));\n }\n\n /** Refund a payment, in full or in part. */\n refund(paymentId: string, body: RefundPaymentBody) {\n return unwrap(\n this.client.POST(\"/payments/{payment_id}/refund\", { params: { path: { payment_id: paymentId } }, body }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ConnectProviderBody = NonNullable<paths[\"/providers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateProviderConnectionBody =\n NonNullable<paths[\"/providers/{connection_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class ProvidersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of provider connections. */\n list() {\n return unwrap(this.client.GET(\"/providers\", {}));\n }\n\n /** Connect a new provider. */\n connect(body: ConnectProviderBody) {\n return unwrap(this.client.POST(\"/providers\", { body }));\n }\n\n /** Replace a provider connection's configuration. */\n update(connectionId: string, body: UpdateProviderConnectionBody) {\n return unwrap(\n this.client.PUT(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } }, body }),\n );\n }\n\n /** Partially modify a provider connection. */\n modify(connectionId: string) {\n return unwrap(this.client.PATCH(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } } }));\n }\n\n /** Remove a provider connection. */\n remove(connectionId: string) {\n return unwrap(\n this.client.DELETE(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } } }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\n\nexport class MetricsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch invoice metrics. */\n invoices() {\n return unwrap(this.client.GET(\"/metrics/invoices\", {}));\n }\n\n /** Fetch subscription metrics. */\n subscriptions() {\n return unwrap(this.client.GET(\"/metrics/subscriptions\", {}));\n }\n\n /** Fetch payment metrics. */\n payments() {\n return unwrap(this.client.GET(\"/metrics/payments\", {}));\n }\n\n /** Fetch customer metrics. */\n customers() {\n return unwrap(this.client.GET(\"/metrics/customers\", {}));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListLogsQuery = paths[\"/logs\"][\"get\"][\"parameters\"][\"query\"];\n\nexport class LogsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch API request logs, optionally filtered by resource, method, or auth flow. */\n list(query?: ListLogsQuery) {\n return unwrap(this.client.GET(\"/logs\", { params: { query } }));\n }\n}\n","/**\n * Verifies Paisr webhook signatures.\n *\n * Paisr signs webhook deliveries with `X-PCB-Signature` (HMAC-SHA256, hex-encoded)\n * over `${X-PCB-Timestamp}.${rawBody}`, using the webhook's signing secret\n * (see `paisr.webhooks.getSecret()` / `.rotateSecret()`).\n *\n * @see https://docs.paisr.tech/v2/api/webhooks\n */\n\nexport interface VerifyWebhookSignatureOptions {\n /** The exact raw request body bytes/string as received — do not re-stringify a parsed object. */\n payload: string;\n /** Value of the `X-PCB-Signature` request header. */\n signature: string;\n /** Value of the `X-PCB-Timestamp` request header. */\n timestamp: string;\n /** The webhook's signing secret. */\n secret: string;\n}\n\nfunction toHex(bytes: ArrayBuffer): string {\n return Array.from(new Uint8Array(bytes))\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nfunction timingSafeEqual(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let mismatch = 0;\n for (let i = 0; i < a.length; i++) {\n mismatch |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return mismatch === 0;\n}\n\n/** Returns `true` if the given webhook delivery has a valid signature. */\nexport async function verifyWebhookSignature(options: VerifyWebhookSignatureOptions): Promise<boolean> {\n const { payload, signature, timestamp, secret } = options;\n\n const key = await crypto.subtle.importKey(\n \"raw\",\n new TextEncoder().encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n const digest = await crypto.subtle.sign(\"HMAC\", key, new TextEncoder().encode(`${timestamp}.${payload}`));\n const expected = toHex(digest);\n\n return timingSafeEqual(expected, signature);\n}\n\n/**\n * Verifies a webhook delivery and parses the payload as JSON.\n * Throws if the signature is invalid.\n */\nexport async function constructWebhookEvent<T = unknown>(options: VerifyWebhookSignatureOptions): Promise<T> {\n const valid = await verifyWebhookSignature(options);\n if (!valid) {\n throw new Error(\"Paisr: webhook signature verification failed.\");\n }\n return JSON.parse(options.payload) as T;\n}\n","import { createPaisrClient, type PaisrClient, type PaisrOptions } from \"./client.js\";\nimport { AccessTokensResource } from \"./resources/access-tokens.js\";\nimport { WebhooksResource } from \"./resources/webhooks.js\";\nimport { WalletsResource } from \"./resources/wallets.js\";\nimport { TransfersResource } from \"./resources/transfers.js\";\nimport { CustomersResource } from \"./resources/customers.js\";\nimport { VouchersResource } from \"./resources/vouchers.js\";\nimport { PlansResource } from \"./resources/plans.js\";\nimport { InvoicesResource } from \"./resources/invoices.js\";\nimport { SubscriptionsResource } from \"./resources/subscriptions.js\";\nimport { PaymentsResource } from \"./resources/payments.js\";\nimport { ProvidersResource } from \"./resources/providers.js\";\nimport { MetricsResource } from \"./resources/metrics.js\";\nimport { LogsResource } from \"./resources/logs.js\";\n\nexport { PaisrError } from \"./client.js\";\nexport type { PaisrOptions, PaisrEnvironment, PaisrClient } from \"./client.js\";\nexport type { paths, components } from \"./generated/types.js\";\nexport { verifyWebhookSignature, constructWebhookEvent } from \"./webhook-signature.js\";\nexport type { VerifyWebhookSignatureOptions } from \"./webhook-signature.js\";\n\n/**\n * Client for the Paisr API (https://github.com/paisrtechnologies/pcb-openapi).\n *\n * @example\n * ```ts\n * const paisr = new Paisr({ apiKey: process.env.PAISR_API_KEY! });\n * const { wallets } = await paisr.wallets.list();\n * const wallet = await paisr.wallets.get(wallets[0].id);\n * ```\n */\nexport class Paisr {\n readonly client: PaisrClient;\n\n readonly accessTokens: AccessTokensResource;\n readonly webhooks: WebhooksResource;\n readonly wallets: WalletsResource;\n readonly transfers: TransfersResource;\n readonly customers: CustomersResource;\n readonly vouchers: VouchersResource;\n readonly plans: PlansResource;\n readonly invoices: InvoicesResource;\n readonly subscriptions: SubscriptionsResource;\n readonly payments: PaymentsResource;\n readonly providers: ProvidersResource;\n readonly metrics: MetricsResource;\n readonly logs: LogsResource;\n\n constructor(options: PaisrOptions) {\n this.client = createPaisrClient(options);\n\n this.accessTokens = new AccessTokensResource(this.client);\n this.webhooks = new WebhooksResource(this.client);\n this.wallets = new WalletsResource(this.client);\n this.transfers = new TransfersResource(this.client);\n this.customers = new CustomersResource(this.client);\n this.vouchers = new VouchersResource(this.client);\n this.plans = new PlansResource(this.client);\n this.invoices = new InvoicesResource(this.client);\n this.subscriptions = new SubscriptionsResource(this.client);\n this.payments = new PaymentsResource(this.client);\n this.providers = new ProvidersResource(this.client);\n this.metrics = new MetricsResource(this.client);\n this.logs = new LogsResource(this.client);\n }\n}\n\nexport default Paisr;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/resources/access-tokens.ts","../src/resources/webhooks.ts","../src/resources/wallets.ts","../src/resources/transfers.ts","../src/resources/customers.ts","../src/resources/vouchers.ts","../src/resources/plans.ts","../src/resources/invoices.ts","../src/resources/subscriptions.ts","../src/resources/payments.ts","../src/resources/providers.ts","../src/resources/metrics.ts","../src/resources/logs.ts","../src/webhook-signature.ts","../src/index.ts"],"sourcesContent":["import createClient, { type Client, type ClientOptions } from \"openapi-fetch\";\nimport type { paths } from \"./generated/types.js\";\n\nexport type PaisrEnvironment = \"live\" | \"staging\";\n\nconst BASE_URLS: Record<PaisrEnvironment, string> = {\n live: \"https://api.live.paisr.tech/v2\",\n staging: \"https://api.staging.paisr.tech/v2\",\n};\n\nexport interface PaisrOptions {\n /** Bearer access token issued by Paisr (Settings -> Access Tokens). */\n apiKey: string;\n /** Which Paisr environment to talk to. Defaults to \"live\". Ignored if `baseUrl` is set. */\n environment?: PaisrEnvironment;\n /** Override the API base URL entirely, e.g. for a private/self-hosted deployment. */\n baseUrl?: string;\n /** Custom fetch implementation (useful for tests or non-standard runtimes). */\n fetch?: ClientOptions[\"fetch\"];\n}\n\nexport type PaisrClient = Client<paths>;\n\nexport function createPaisrClient(options: PaisrOptions): PaisrClient {\n if (!options.apiKey) {\n throw new Error(\"Paisr: `apiKey` is required.\");\n }\n\n const baseUrl = options.baseUrl ?? BASE_URLS[options.environment ?? \"live\"];\n\n return createClient<paths>({\n baseUrl,\n fetch: options.fetch,\n headers: {\n Authorization: `Bearer ${options.apiKey}`,\n },\n });\n}\n\n/** Thrown for any non-2xx response from the Paisr API. */\nexport class PaisrError extends Error {\n /** HTTP status code of the failed response. */\n readonly status: number;\n /** Parsed error response body, if any. */\n readonly body: unknown;\n\n constructor(message: string, status: number, body: unknown) {\n super(message);\n this.name = \"PaisrError\";\n this.status = status;\n this.body = body;\n }\n}\n\ninterface Envelope {\n success?: boolean;\n message?: string;\n data?: unknown;\n}\n\ninterface RawResult {\n data?: unknown;\n error?: unknown;\n response: Response;\n}\n\n/**\n * Unwraps an openapi-fetch result: throws `PaisrError` on failure, otherwise\n * returns the inner `data` payload of Paisr's `{ success, data }` envelope\n * (or the whole envelope for endpoints that only return `{ success, message }`).\n */\nexport async function unwrap(resultPromise: Promise<RawResult>): Promise<any> {\n const { data, error, response } = await resultPromise;\n\n if (error !== undefined) {\n const body = error as Envelope | undefined;\n throw new PaisrError(\n body?.message ?? `Paisr API request failed with status ${response.status}`,\n response.status,\n error,\n );\n }\n\n const envelope = data as Envelope | undefined;\n if (envelope && typeof envelope === \"object\" && \"data\" in envelope) {\n return envelope.data;\n }\n return envelope;\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateTokenBody = NonNullable<paths[\"/access-tokens\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateTokenBody = NonNullable<paths[\"/access-tokens/{token_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddPermissionBody =\n NonNullable<paths[\"/access-tokens/{token_id}/permissions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class AccessTokensResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of access tokens. */\n list() {\n return unwrap(this.client.GET(\"/access-tokens\", {}));\n }\n\n /** Create a new access token. */\n create(body: CreateTokenBody) {\n return unwrap(this.client.POST(\"/access-tokens\", { body }));\n }\n\n /** Fetch a single access token. */\n get(tokenId: string) {\n return unwrap(this.client.GET(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } } }));\n }\n\n /** Update an access token. */\n update(tokenId: string, body: UpdateTokenBody) {\n return unwrap(this.client.PUT(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } }, body }));\n }\n\n /** Revoke an access token. */\n revoke(tokenId: string) {\n return unwrap(this.client.DELETE(\"/access-tokens/{token_id}\", { params: { path: { token_id: tokenId } } }));\n }\n\n /** Add a permission scope to an access token. */\n addPermission(tokenId: string, body: AddPermissionBody) {\n return unwrap(\n this.client.POST(\"/access-tokens/{token_id}/permissions\", { params: { path: { token_id: tokenId } }, body }),\n );\n }\n\n /** Remove a permission scope from an access token. */\n removePermission(tokenId: string, permissionId: string) {\n return unwrap(\n this.client.DELETE(\"/access-tokens/{token_id}/permissions/{permission_id}\", {\n params: { path: { token_id: tokenId, permission_id: permissionId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateWebhookBody = NonNullable<paths[\"/webhooks\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateWebhookBody =\n NonNullable<paths[\"/webhooks/{webhook_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddTriggerBody =\n NonNullable<paths[\"/webhooks/{webhook_id}/triggers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class WebhooksResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of webhooks. */\n list() {\n return unwrap(this.client.GET(\"/webhooks\", {}));\n }\n\n /** Create a new webhook. */\n create(body: CreateWebhookBody) {\n return unwrap(this.client.POST(\"/webhooks\", { body }));\n }\n\n /** Fetch a single webhook. */\n get(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Replace a webhook's configuration. */\n update(webhookId: string, body: UpdateWebhookBody) {\n return unwrap(\n this.client.PUT(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } }, body }),\n );\n }\n\n /** Partially modify a webhook (e.g. enable/disable). */\n modify(webhookId: string) {\n return unwrap(this.client.PATCH(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Remove a webhook. */\n remove(webhookId: string) {\n return unwrap(this.client.DELETE(\"/webhooks/{webhook_id}\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Send a test event to a webhook. */\n test(webhookId: string) {\n return unwrap(this.client.POST(\"/webhooks/{webhook_id}/test\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Fetch delivery stats for a webhook. */\n getStats(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/stats\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Fetch a webhook's signing secret. */\n getSecret(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/secret\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Rotate a webhook's signing secret. */\n rotateSecret(webhookId: string) {\n return unwrap(\n this.client.PATCH(\"/webhooks/{webhook_id}/secret\", { params: { path: { webhook_id: webhookId } } }),\n );\n }\n\n /** Subscribe a webhook to an additional event trigger. */\n addTrigger(webhookId: string, body: AddTriggerBody) {\n return unwrap(\n this.client.POST(\"/webhooks/{webhook_id}/triggers\", { params: { path: { webhook_id: webhookId } }, body }),\n );\n }\n\n /** Unsubscribe a webhook from an event trigger. */\n removeTrigger(webhookId: string, triggerId: string) {\n return unwrap(\n this.client.DELETE(\"/webhooks/{webhook_id}/triggers/{trigger_id}\", {\n params: { path: { webhook_id: webhookId, trigger_id: triggerId } },\n }),\n );\n }\n\n /** Fetch delivery events for a webhook. */\n getEvents(webhookId: string) {\n return unwrap(this.client.GET(\"/webhooks/{webhook_id}/events\", { params: { path: { webhook_id: webhookId } } }));\n }\n\n /** Retry delivery of a specific webhook event. */\n retryEvent(webhookId: string, eventId: string) {\n return unwrap(\n this.client.POST(\"/webhooks/{webhook_id}/events/{event_id}\", {\n params: { path: { webhook_id: webhookId, event_id: eventId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateWalletBody = NonNullable<paths[\"/wallets\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateProfileBody = NonNullable<paths[\"/wallets/{wallet_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateWalletBody = NonNullable<paths[\"/wallets/{wallet_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype TransactionsQuery = paths[\"/wallets/{wallet_id}/transactions\"][\"get\"][\"parameters\"][\"query\"];\ntype BalancesQuery = paths[\"/wallets/{wallet_id}/balances\"][\"get\"][\"parameters\"][\"query\"];\ntype OpenBalanceBody =\n NonNullable<paths[\"/wallets/{wallet_id}/balances\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateBalanceBody =\n NonNullable<paths[\"/wallets/{wallet_id}/balances/{balance_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ConnectAccountBody =\n NonNullable<paths[\"/wallets/{wallet_id}/accounts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype VerifyAccountBody =\n NonNullable<paths[\"/wallets/{wallet_id}/accounts/{account_id}\"][\"patch\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddContactBody =\n NonNullable<paths[\"/wallets/{wallet_id}/contacts\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype CreateLinkBody = NonNullable<paths[\"/wallets/{wallet_id}/links\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateLinkBody =\n NonNullable<paths[\"/wallets/{wallet_id}/links/{link_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass WalletPinResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's PIN state (never the raw PIN itself). */\n get(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/pin\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Rotate a wallet's PIN. */\n rotate(walletId: string) {\n return unwrap(this.client.PATCH(\"/wallets/{wallet_id}/pin\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n\nclass WalletStatementsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's statements. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/statements\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n\nclass WalletTransactionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's transactions, optionally filtered by balance, status, type, or method. */\n list(walletId: string, query?: TransactionsQuery) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/transactions\", { params: { path: { wallet_id: walletId }, query } }),\n );\n }\n\n /** Fetch a single transaction on a wallet. */\n get(walletId: string, transactionId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/transactions/{transaction_id}\", {\n params: { path: { wallet_id: walletId, transaction_id: transactionId } },\n }),\n );\n }\n}\n\nclass WalletBalancesResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's balances, optionally filtered by type or currency. */\n list(walletId: string, query?: BalancesQuery) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/balances\", { params: { path: { wallet_id: walletId }, query } }),\n );\n }\n\n /** Open a new balance on a wallet. */\n open(walletId: string, body: OpenBalanceBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/balances\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single balance on a wallet. */\n get(walletId: string, balanceId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n }),\n );\n }\n\n /** Update a balance on a wallet. */\n update(walletId: string, balanceId: string, body: UpdateBalanceBody) {\n return unwrap(\n this.client.PUT(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n body,\n }),\n );\n }\n\n /** Close a balance on a wallet. */\n close(walletId: string, balanceId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/balances/{balance_id}\", {\n params: { path: { wallet_id: walletId, balance_id: balanceId } },\n }),\n );\n }\n}\n\nclass WalletAccountsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's linked external accounts. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/accounts\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Connect a new external account to a wallet. */\n connect(walletId: string, body: ConnectAccountBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/accounts\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single linked account. */\n get(walletId: string, accountId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n }),\n );\n }\n\n /** Verify a linked account (e.g. micro-deposit confirmation). */\n verify(walletId: string, accountId: string, body: VerifyAccountBody) {\n return unwrap(\n this.client.PATCH(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n body,\n }),\n );\n }\n\n /** Remove a linked account from a wallet. */\n remove(walletId: string, accountId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/accounts/{account_id}\", {\n params: { path: { wallet_id: walletId, account_id: accountId } },\n }),\n );\n }\n}\n\nclass WalletContactsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's saved payment contacts. */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/contacts\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Add a payment contact to a wallet. */\n add(walletId: string, body: AddContactBody) {\n return unwrap(\n this.client.POST(\"/wallets/{wallet_id}/contacts\", { params: { path: { wallet_id: walletId } }, body }),\n );\n }\n\n /** Fetch a single payment contact. */\n get(walletId: string, contactId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/contacts/{contact_id}\", {\n params: { path: { wallet_id: walletId, contact_id: contactId } },\n }),\n );\n }\n\n /** Remove a payment contact from a wallet. */\n remove(walletId: string, contactId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/contacts/{contact_id}\", {\n params: { path: { wallet_id: walletId, contact_id: contactId } },\n }),\n );\n }\n}\n\nclass WalletLinksResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a wallet's hosted links (e.g. onboarding or top-up links). */\n list(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}/links\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Create a new hosted link for a wallet. */\n create(walletId: string, body: CreateLinkBody) {\n return unwrap(this.client.POST(\"/wallets/{wallet_id}/links\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Fetch a single hosted link. */\n get(walletId: string, linkId: string) {\n return unwrap(\n this.client.GET(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n }),\n );\n }\n\n /** Update a hosted link. */\n update(walletId: string, linkId: string, body: UpdateLinkBody) {\n return unwrap(\n this.client.PUT(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n body,\n }),\n );\n }\n\n /** Remove a hosted link. */\n remove(walletId: string, linkId: string) {\n return unwrap(\n this.client.DELETE(\"/wallets/{wallet_id}/links/{link_id}\", {\n params: { path: { wallet_id: walletId, link_id: linkId } },\n }),\n );\n }\n}\n\nexport class WalletsResource {\n readonly pin: WalletPinResource;\n readonly statements: WalletStatementsResource;\n readonly transactions: WalletTransactionsResource;\n readonly balances: WalletBalancesResource;\n readonly accounts: WalletAccountsResource;\n readonly contacts: WalletContactsResource;\n readonly links: WalletLinksResource;\n\n constructor(private readonly client: PaisrClient) {\n this.pin = new WalletPinResource(client);\n this.statements = new WalletStatementsResource(client);\n this.transactions = new WalletTransactionsResource(client);\n this.balances = new WalletBalancesResource(client);\n this.accounts = new WalletAccountsResource(client);\n this.contacts = new WalletContactsResource(client);\n this.links = new WalletLinksResource(client);\n }\n\n /** Fetch a list of wallets. */\n list() {\n return unwrap(this.client.GET(\"/wallets\", {}));\n }\n\n /** Create a new wallet. */\n create(body: CreateWalletBody) {\n return unwrap(this.client.POST(\"/wallets\", { body }));\n }\n\n /** Fetch a single wallet. */\n get(walletId: string) {\n return unwrap(this.client.GET(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } } }));\n }\n\n /** Update a wallet's profile details. */\n updateProfile(walletId: string, body: UpdateProfileBody) {\n return unwrap(this.client.PUT(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Partially update a wallet. */\n update(walletId: string, body: UpdateWalletBody) {\n return unwrap(this.client.PATCH(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } }, body }));\n }\n\n /** Delete a wallet. */\n delete(walletId: string) {\n return unwrap(this.client.DELETE(\"/wallets/{wallet_id}\", { params: { path: { wallet_id: walletId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype InitiateTransferMethod = paths[\"/transfers/initiate/{method}\"][\"post\"][\"parameters\"][\"path\"][\"method\"];\ntype InitiateTransferBody =\n NonNullable<paths[\"/transfers/initiate/{method}\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype BatchTransferBody =\n NonNullable<paths[\"/transfers/initiate/batch\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ApproveTransferBody =\n NonNullable<paths[\"/transfers/{transaction_id}/approve\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype CancelTransferBody =\n NonNullable<paths[\"/transfers/{transaction_id}/cancel\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class TransfersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Initiate a transfer using the given method (\"peer\", \"move\", or \"bank\"). */\n initiate(method: InitiateTransferMethod, body: InitiateTransferBody) {\n return unwrap(this.client.POST(\"/transfers/initiate/{method}\", { params: { path: { method } }, body }));\n }\n\n /** Initiate a batch of transfers in a single request. */\n initiateBatch(body: BatchTransferBody) {\n return unwrap(this.client.POST(\"/transfers/initiate/batch\", { body }));\n }\n\n /** Approve a pending transfer. */\n approve(transactionId: string, body: ApproveTransferBody) {\n return unwrap(\n this.client.POST(\"/transfers/{transaction_id}/approve\", {\n params: { path: { transaction_id: transactionId } },\n body,\n }),\n );\n }\n\n /** Cancel a pending transfer. */\n cancel(transactionId: string, body: CancelTransferBody) {\n return unwrap(\n this.client.POST(\"/transfers/{transaction_id}/cancel\", {\n params: { path: { transaction_id: transactionId } },\n body,\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype AddCustomerBody = NonNullable<paths[\"/customers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateCustomerBody =\n NonNullable<paths[\"/customers/{customer_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class CustomersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of customers. */\n list() {\n return unwrap(this.client.GET(\"/customers\", {}));\n }\n\n /** Add a new customer. */\n add(body: AddCustomerBody) {\n return unwrap(this.client.POST(\"/customers\", { body }));\n }\n\n /** Fetch a single customer. */\n get(customerId: string) {\n return unwrap(this.client.GET(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n\n /** Update a customer. */\n update(customerId: string, body: UpdateCustomerBody) {\n return unwrap(\n this.client.PUT(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } }, body }),\n );\n }\n\n /** Restore a previously removed customer. */\n restore(customerId: string) {\n return unwrap(this.client.PATCH(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n\n /** Remove a customer. */\n remove(customerId: string) {\n return unwrap(this.client.DELETE(\"/customers/{customer_id}\", { params: { path: { customer_id: customerId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype CreateVoucherBody = NonNullable<paths[\"/vouchers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype ApplyVoucherBody = NonNullable<paths[\"/vouchers/apply\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateVoucherBody =\n NonNullable<paths[\"/vouchers/{voucher_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class VouchersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of vouchers. */\n list() {\n return unwrap(this.client.GET(\"/vouchers\", {}));\n }\n\n /** Create a new voucher. */\n create(body: CreateVoucherBody) {\n return unwrap(this.client.POST(\"/vouchers\", { body }));\n }\n\n /** Apply a voucher code to a resource (e.g. an invoice or subscription). */\n apply(body: ApplyVoucherBody) {\n return unwrap(this.client.POST(\"/vouchers/apply\", { body }));\n }\n\n /** Fetch a single voucher. */\n get(voucherId: string) {\n return unwrap(this.client.GET(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } } }));\n }\n\n /** Update a voucher. */\n update(voucherId: string, body: UpdateVoucherBody) {\n return unwrap(\n this.client.PUT(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } }, body }),\n );\n }\n\n /** Remove a voucher. */\n remove(voucherId: string) {\n return unwrap(this.client.DELETE(\"/vouchers/{voucher_id}\", { params: { path: { voucher_id: voucherId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListPlansQuery = paths[\"/plans\"][\"get\"][\"parameters\"][\"query\"];\ntype GetPlanQuery = paths[\"/plans/{plan_id}\"][\"get\"][\"parameters\"][\"query\"];\ntype CreatePlanBody = NonNullable<paths[\"/plans\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdatePlanBody = NonNullable<paths[\"/plans/{plan_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddPriceOptionBody =\n NonNullable<paths[\"/plans/{plan_id}/options\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdatePriceOptionBody =\n NonNullable<paths[\"/plans/{plan_id}/options/{option_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass PlanOptionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Add a price option to a plan. */\n add(planId: string, body: AddPriceOptionBody) {\n return unwrap(this.client.POST(\"/plans/{plan_id}/options\", { params: { path: { plan_id: planId } }, body }));\n }\n\n /** Replace a price option on a plan. */\n update(planId: string, optionId: string, body: UpdatePriceOptionBody) {\n return unwrap(\n this.client.PUT(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n body,\n }),\n );\n }\n\n /** Partially modify a price option on a plan. */\n modify(planId: string, optionId: string) {\n return unwrap(\n this.client.PATCH(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n }),\n );\n }\n\n /** Remove a price option from a plan. */\n remove(planId: string, optionId: string) {\n return unwrap(\n this.client.DELETE(\"/plans/{plan_id}/options/{option_id}\", {\n params: { path: { plan_id: planId, option_id: optionId } },\n }),\n );\n }\n}\n\nexport class PlansResource {\n readonly options: PlanOptionsResource;\n\n constructor(private readonly client: PaisrClient) {\n this.options = new PlanOptionsResource(client);\n }\n\n /** Fetch a list of plans, optionally filtered by type, currency, or active state. */\n list(query?: ListPlansQuery) {\n return unwrap(this.client.GET(\"/plans\", { params: { query } }));\n }\n\n /** Create a new plan. */\n create(body: CreatePlanBody) {\n return unwrap(this.client.POST(\"/plans\", { body }));\n }\n\n /** Fetch a single plan. */\n get(planId: string, query?: GetPlanQuery) {\n return unwrap(this.client.GET(\"/plans/{plan_id}\", { params: { path: { plan_id: planId }, query } }));\n }\n\n /** Update a plan. */\n update(planId: string, body: UpdatePlanBody) {\n return unwrap(this.client.PUT(\"/plans/{plan_id}\", { params: { path: { plan_id: planId } }, body }));\n }\n\n /** Remove a plan. */\n remove(planId: string) {\n return unwrap(this.client.DELETE(\"/plans/{plan_id}\", { params: { path: { plan_id: planId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListInvoicesQuery = paths[\"/invoices\"][\"get\"][\"parameters\"][\"query\"];\ntype CreateInvoiceBody = NonNullable<paths[\"/invoices\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateInvoiceBody =\n NonNullable<paths[\"/invoices/{invoice_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype AddLineItemsBody =\n NonNullable<paths[\"/invoices/{invoice_id}/items\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateLineItemBody =\n NonNullable<paths[\"/invoices/{invoice_id}/items/{item_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nclass InvoiceLineItemsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Add line items to an invoice. */\n add(invoiceId: string, body: AddLineItemsBody) {\n return unwrap(this.client.POST(\"/invoices/{invoice_id}/items\", { params: { path: { invoice_id: invoiceId } }, body }));\n }\n\n /** Update a single line item on an invoice. */\n update(invoiceId: string, itemId: string, body: UpdateLineItemBody) {\n return unwrap(\n this.client.PUT(\"/invoices/{invoice_id}/items/{item_id}\", {\n params: { path: { invoice_id: invoiceId, item_id: itemId } },\n body,\n }),\n );\n }\n\n /** Remove a line item from an invoice. */\n remove(invoiceId: string, itemId: string) {\n return unwrap(\n this.client.DELETE(\"/invoices/{invoice_id}/items/{item_id}\", {\n params: { path: { invoice_id: invoiceId, item_id: itemId } },\n }),\n );\n }\n}\n\nexport class InvoicesResource {\n readonly line_items: InvoiceLineItemsResource;\n\n constructor(private readonly client: PaisrClient) {\n this.line_items = new InvoiceLineItemsResource(client);\n }\n\n /** Fetch a list of invoices, optionally filtered by resource, currency, or status. */\n list(query?: ListInvoicesQuery) {\n return unwrap(this.client.GET(\"/invoices\", { params: { query } }));\n }\n\n /** Create a new invoice. */\n create(body: CreateInvoiceBody) {\n return unwrap(this.client.POST(\"/invoices\", { body }));\n }\n\n /** Fetch a single invoice. */\n get(invoiceId: string) {\n return unwrap(this.client.GET(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } } }));\n }\n\n /** Update an invoice. */\n update(invoiceId: string, body: UpdateInvoiceBody) {\n return unwrap(\n this.client.PUT(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } }, body }),\n );\n }\n\n /** Remove an invoice. */\n remove(invoiceId: string) {\n return unwrap(this.client.DELETE(\"/invoices/{invoice_id}\", { params: { path: { invoice_id: invoiceId } } }));\n }\n\n /** Send an invoice to the customer. */\n send(invoiceId: string) {\n return unwrap(this.client.POST(\"/invoices/{invoice_id}/send\", { params: { path: { invoice_id: invoiceId } } }));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListSubscriptionsQuery = paths[\"/subscriptions\"][\"get\"][\"parameters\"][\"query\"];\ntype CreateSubscriptionBody =\n NonNullable<paths[\"/subscriptions\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class SubscriptionsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of subscriptions, optionally filtered by resource, currency, or status. */\n list(query?: ListSubscriptionsQuery) {\n return unwrap(this.client.GET(\"/subscriptions\", { params: { query } }));\n }\n\n /** Create a new subscription. */\n create(body: CreateSubscriptionBody) {\n return unwrap(this.client.POST(\"/subscriptions\", { body }));\n }\n\n /** Fetch a single subscription. */\n get(subscriptionId: string) {\n return unwrap(\n this.client.GET(\"/subscriptions/{subscription_id}\", { params: { path: { subscription_id: subscriptionId } } }),\n );\n }\n\n /** Update a subscription (e.g. change plan or price option). */\n update(subscriptionId: string) {\n return unwrap(\n this.client.PATCH(\"/subscriptions/{subscription_id}\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Remove a subscription. */\n remove(subscriptionId: string) {\n return unwrap(\n this.client.DELETE(\"/subscriptions/{subscription_id}\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Restore a previously canceled subscription. */\n restore(subscriptionId: string) {\n return unwrap(\n this.client.POST(\"/subscriptions/{subscription_id}/restore\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n\n /** Cancel a subscription. */\n cancel(subscriptionId: string) {\n return unwrap(\n this.client.POST(\"/subscriptions/{subscription_id}/cancel\", {\n params: { path: { subscription_id: subscriptionId } },\n }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { components, paths } from \"../generated/types.js\";\n\ntype ListPaymentsQuery = paths[\"/payments\"][\"get\"][\"parameters\"][\"query\"];\ntype RefundPaymentBody =\n NonNullable<paths[\"/payments/{payment_id}/refund\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\n/** Maps each payment method to the request body shape it requires. */\ninterface InitiatePaymentBodyMap {\n wallet: components[\"schemas\"][\"PostInitiateWalletPaymentRequest\"];\n qr: components[\"schemas\"][\"PostInitiateQrPaymentRequest\"];\n card: components[\"schemas\"][\"PostInitiateCardPaymentRequest\"];\n bank: components[\"schemas\"][\"PostInitiateBankPaymentRequest\"];\n}\n\nexport class PaymentsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of payments, optionally filtered by resource, currency, status, or method. */\n list(query?: ListPaymentsQuery) {\n return unwrap(this.client.GET(\"/payments\", { params: { query } }));\n }\n\n /**\n * Initiate a payment using the given method (\"bank\", \"wallet\", \"qr\", or \"card\").\n * The required fields in `body` depend on `method` (e.g. \"bank\" requires `swift_code`,\n * \"card\" requires `card_details`) — the type parameter enforces the matching shape.\n */\n initiate<M extends keyof InitiatePaymentBodyMap>(method: M, body: InitiatePaymentBodyMap[M]) {\n return unwrap(this.client.POST(\"/payments/initiate/{method}\", { params: { path: { method } }, body }));\n }\n\n /** Fetch a single payment. */\n get(paymentId: string) {\n return unwrap(this.client.GET(\"/payments/{payment_id}\", { params: { path: { payment_id: paymentId } } }));\n }\n\n /** Refund a payment, in full or in part. */\n refund(paymentId: string, body: RefundPaymentBody) {\n return unwrap(\n this.client.POST(\"/payments/{payment_id}/refund\", { params: { path: { payment_id: paymentId } }, body }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ConnectProviderBody = NonNullable<paths[\"/providers\"][\"post\"][\"requestBody\"]>[\"content\"][\"application/json\"];\ntype UpdateProviderConnectionBody =\n NonNullable<paths[\"/providers/{connection_id}\"][\"put\"][\"requestBody\"]>[\"content\"][\"application/json\"];\n\nexport class ProvidersResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch a list of provider connections. */\n list() {\n return unwrap(this.client.GET(\"/providers\", {}));\n }\n\n /** Connect a new provider. */\n connect(body: ConnectProviderBody) {\n return unwrap(this.client.POST(\"/providers\", { body }));\n }\n\n /** Replace a provider connection's configuration. */\n update(connectionId: string, body: UpdateProviderConnectionBody) {\n return unwrap(\n this.client.PUT(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } }, body }),\n );\n }\n\n /** Partially modify a provider connection. */\n modify(connectionId: string) {\n return unwrap(this.client.PATCH(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } } }));\n }\n\n /** Remove a provider connection. */\n remove(connectionId: string) {\n return unwrap(\n this.client.DELETE(\"/providers/{connection_id}\", { params: { path: { connection_id: connectionId } } }),\n );\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\n\nexport class MetricsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch invoice metrics. */\n invoices() {\n return unwrap(this.client.GET(\"/metrics/invoices\", {}));\n }\n\n /** Fetch subscription metrics. */\n subscriptions() {\n return unwrap(this.client.GET(\"/metrics/subscriptions\", {}));\n }\n\n /** Fetch payment metrics. */\n payments() {\n return unwrap(this.client.GET(\"/metrics/payments\", {}));\n }\n\n /** Fetch customer metrics. */\n customers() {\n return unwrap(this.client.GET(\"/metrics/customers\", {}));\n }\n}\n","import type { PaisrClient } from \"../client.js\";\nimport { unwrap } from \"../client.js\";\nimport type { paths } from \"../generated/types.js\";\n\ntype ListLogsQuery = paths[\"/logs\"][\"get\"][\"parameters\"][\"query\"];\n\nexport class LogsResource {\n constructor(private readonly client: PaisrClient) {}\n\n /** Fetch API request logs, optionally filtered by resource, method, or auth flow. */\n list(query?: ListLogsQuery) {\n return unwrap(this.client.GET(\"/logs\", { params: { query } }));\n }\n}\n","/**\n * Verifies Paisr webhook signatures.\n *\n * Paisr signs webhook deliveries with `X-PCB-Signature` (HMAC-SHA256, hex-encoded)\n * over `${X-PCB-Timestamp}.${rawBody}`, using the webhook's signing secret\n * (see `paisr.webhooks.getSecret()` / `.rotateSecret()`).\n *\n * @see https://docs.paisr.tech/v2/api/webhooks\n */\n\nexport interface VerifyWebhookSignatureOptions {\n /** The exact raw request body bytes/string as received — do not re-stringify a parsed object. */\n payload: string;\n /** Value of the `X-PCB-Signature` request header. */\n signature: string;\n /** Value of the `X-PCB-Timestamp` request header. */\n timestamp: string;\n /** The webhook's signing secret. */\n secret: string;\n}\n\nfunction toHex(bytes: ArrayBuffer): string {\n return Array.from(new Uint8Array(bytes))\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nfunction timingSafeEqual(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let mismatch = 0;\n for (let i = 0; i < a.length; i++) {\n mismatch |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return mismatch === 0;\n}\n\n/** Returns `true` if the given webhook delivery has a valid signature. */\nexport async function verifyWebhookSignature(options: VerifyWebhookSignatureOptions): Promise<boolean> {\n const { payload, signature, timestamp, secret } = options;\n\n const key = await crypto.subtle.importKey(\n \"raw\",\n new TextEncoder().encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n const digest = await crypto.subtle.sign(\"HMAC\", key, new TextEncoder().encode(`${timestamp}.${payload}`));\n const expected = toHex(digest);\n\n return timingSafeEqual(expected, signature);\n}\n\n/**\n * Verifies a webhook delivery and parses the payload as JSON.\n * Throws if the signature is invalid.\n */\nexport async function constructWebhookEvent<T = unknown>(options: VerifyWebhookSignatureOptions): Promise<T> {\n const valid = await verifyWebhookSignature(options);\n if (!valid) {\n throw new Error(\"Paisr: webhook signature verification failed.\");\n }\n return JSON.parse(options.payload) as T;\n}\n","import { createPaisrClient, type PaisrClient, type PaisrOptions } from \"./client.js\";\nimport { AccessTokensResource } from \"./resources/access-tokens.js\";\nimport { WebhooksResource } from \"./resources/webhooks.js\";\nimport { WalletsResource } from \"./resources/wallets.js\";\nimport { TransfersResource } from \"./resources/transfers.js\";\nimport { CustomersResource } from \"./resources/customers.js\";\nimport { VouchersResource } from \"./resources/vouchers.js\";\nimport { PlansResource } from \"./resources/plans.js\";\nimport { InvoicesResource } from \"./resources/invoices.js\";\nimport { SubscriptionsResource } from \"./resources/subscriptions.js\";\nimport { PaymentsResource } from \"./resources/payments.js\";\nimport { ProvidersResource } from \"./resources/providers.js\";\nimport { MetricsResource } from \"./resources/metrics.js\";\nimport { LogsResource } from \"./resources/logs.js\";\n\nexport { PaisrError } from \"./client.js\";\nexport type { PaisrOptions, PaisrEnvironment, PaisrClient } from \"./client.js\";\nexport type { paths, components } from \"./generated/types.js\";\nexport { verifyWebhookSignature, constructWebhookEvent } from \"./webhook-signature.js\";\nexport type { VerifyWebhookSignatureOptions } from \"./webhook-signature.js\";\n\n/**\n * Client for the Paisr API (https://github.com/paisrtechnologies/pcb-openapi).\n *\n * @example\n * ```ts\n * const paisr = new Paisr({ apiKey: process.env.PAISR_API_KEY! });\n * const { wallets } = await paisr.wallets.list();\n * const wallet = await paisr.wallets.get(wallets[0].id);\n * ```\n */\nexport class Paisr {\n readonly client: PaisrClient;\n\n readonly accessTokens: AccessTokensResource;\n readonly webhooks: WebhooksResource;\n readonly wallets: WalletsResource;\n readonly transfers: TransfersResource;\n readonly customers: CustomersResource;\n readonly vouchers: VouchersResource;\n readonly plans: PlansResource;\n readonly invoices: InvoicesResource;\n readonly subscriptions: SubscriptionsResource;\n readonly payments: PaymentsResource;\n readonly providers: ProvidersResource;\n readonly metrics: MetricsResource;\n readonly logs: LogsResource;\n\n constructor(options: PaisrOptions) {\n this.client = createPaisrClient(options);\n\n this.accessTokens = new AccessTokensResource(this.client);\n this.webhooks = new WebhooksResource(this.client);\n this.wallets = new WalletsResource(this.client);\n this.transfers = new TransfersResource(this.client);\n this.customers = new CustomersResource(this.client);\n this.vouchers = new VouchersResource(this.client);\n this.plans = new PlansResource(this.client);\n this.invoices = new InvoicesResource(this.client);\n this.subscriptions = new SubscriptionsResource(this.client);\n this.payments = new PaymentsResource(this.client);\n this.providers = new ProvidersResource(this.client);\n this.metrics = new MetricsResource(this.client);\n this.logs = new LogsResource(this.client);\n }\n}\n\nexport default Paisr;\n"],"mappings":"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","names":[]}
|