globodai-fam-sdk 1.3.0 → 1.4.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/dist/index.cjs +20 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +40 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -838,6 +838,26 @@ var SubscriptionsModule = class extends BaseModule {
|
|
|
838
838
|
async disableWebhooks(subscriptionId) {
|
|
839
839
|
return this.update(subscriptionId, { webhookNotificationEnabled: false });
|
|
840
840
|
}
|
|
841
|
+
/**
|
|
842
|
+
* List subscriptions for a MangoPay user
|
|
843
|
+
* Useful for retrieving all subscriptions associated with a specific MangoPay user ID
|
|
844
|
+
*
|
|
845
|
+
* @param mangopayUserId - The MangoPay user ID
|
|
846
|
+
* @param filters - Optional filters (subscriptionType, activeOnly)
|
|
847
|
+
*/
|
|
848
|
+
async listByMangopayUser(mangopayUserId, filters) {
|
|
849
|
+
const params = {};
|
|
850
|
+
if (filters?.subscriptionType !== void 0 && filters.subscriptionType !== "") {
|
|
851
|
+
params["subscriptionType"] = filters.subscriptionType;
|
|
852
|
+
}
|
|
853
|
+
if (filters?.activeOnly !== void 0) {
|
|
854
|
+
params["activeOnly"] = String(filters.activeOnly);
|
|
855
|
+
}
|
|
856
|
+
return this.client.get(
|
|
857
|
+
this.path(`user/${mangopayUserId}`),
|
|
858
|
+
{ params }
|
|
859
|
+
);
|
|
860
|
+
}
|
|
841
861
|
};
|
|
842
862
|
|
|
843
863
|
// src/modules/transfers.ts
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors/index.ts","../src/utils/index.ts","../src/client.ts","../src/modules/base.ts","../src/modules/bank-accounts.ts","../src/modules/cards.ts","../src/modules/kyc.ts","../src/modules/payins.ts","../src/modules/payouts.ts","../src/modules/portal.ts","../src/modules/recipients.ts","../src/modules/subscriptions.ts","../src/modules/transfers.ts","../src/modules/ubo.ts","../src/modules/users.ts","../src/modules/wallets.ts","../src/fam.ts"],"names":["response"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Base error class for all SDK errors\n */\nexport class FamError extends Error {\n public override readonly name: string = 'FamError'\n\n constructor(message: string) {\n super(message)\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\n/**\n * API error with status code and response details\n */\nexport class ApiError extends FamError {\n public override readonly name: string = 'ApiError'\n public readonly statusCode: number\n public readonly code: string | undefined\n public readonly details: unknown\n\n constructor(message: string, statusCode: number, code?: string, details?: unknown) {\n super(message)\n this.statusCode = statusCode\n this.code = code\n this.details = details\n }\n}\n\n/**\n * Authentication error (401)\n */\nexport class AuthenticationError extends ApiError {\n public override readonly name: string = 'AuthenticationError'\n\n constructor(message = 'Authentication failed') {\n super(message, 401, 'AUTHENTICATION_ERROR')\n }\n}\n\n/**\n * Authorization error (403)\n */\nexport class AuthorizationError extends ApiError {\n public override readonly name: string = 'AuthorizationError'\n\n constructor(message = 'Access denied') {\n super(message, 403, 'AUTHORIZATION_ERROR')\n }\n}\n\n/**\n * Resource not found error (404)\n */\nexport class NotFoundError extends ApiError {\n public override readonly name: string = 'NotFoundError'\n\n constructor(message = 'Resource not found') {\n super(message, 404, 'NOT_FOUND')\n }\n}\n\n/**\n * Validation error with field-level details (400/422)\n */\nexport class ValidationError extends ApiError {\n public override readonly name: string = 'ValidationError'\n public readonly errors: Record<string, string[]>\n\n constructor(message: string, errors: Record<string, string[]> = {}) {\n super(message, 422, 'VALIDATION_ERROR', errors)\n this.errors = errors\n }\n}\n\n/**\n * Rate limit error (429)\n */\nexport class RateLimitError extends ApiError {\n public override readonly name: string = 'RateLimitError'\n public readonly retryAfter: number | undefined\n\n constructor(message = 'Rate limit exceeded', retryAfter?: number) {\n super(message, 429, 'RATE_LIMIT_ERROR')\n this.retryAfter = retryAfter\n }\n}\n\n/**\n * Network error for connection issues\n */\nexport class NetworkError extends FamError {\n public override readonly name: string = 'NetworkError'\n public readonly originalError: Error | undefined\n\n constructor(message: string, originalError?: Error) {\n super(message)\n this.originalError = originalError\n }\n}\n\n/**\n * Timeout error\n */\nexport class TimeoutError extends NetworkError {\n public override readonly name: string = 'TimeoutError'\n\n constructor(message = 'Request timeout', originalError?: Error) {\n super(message, originalError)\n }\n}\n\n/**\n * Webhook signature verification error\n */\nexport class WebhookSignatureError extends FamError {\n public override readonly name: string = 'WebhookSignatureError'\n\n constructor(message = 'Invalid webhook signature') {\n super(message)\n }\n}\n","/**\n * Check if running in browser environment\n */\nexport function isBrowser(): boolean {\n const global = globalThis as unknown as { window?: { document?: unknown } }\n return typeof global.window?.document !== 'undefined'\n}\n\n/**\n * Check if running in Node.js environment\n */\nexport function isNode(): boolean {\n const global = globalThis as unknown as { process?: { versions?: { node?: string } } }\n return typeof global.process?.versions?.node !== 'undefined'\n}\n\n/**\n * Sleep for a given number of milliseconds\n */\nexport async function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Retry a function with exponential backoff\n */\nexport async function retry<T>(\n fn: () => Promise<T>,\n options: {\n maxRetries?: number\n baseDelay?: number\n maxDelay?: number\n shouldRetry?: (error: unknown) => boolean\n } = {}\n): Promise<T> {\n const {\n maxRetries = 3,\n baseDelay = 1000,\n maxDelay = 30000,\n shouldRetry = (): boolean => true,\n } = options\n\n let lastError: unknown\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn()\n } catch (error) {\n lastError = error\n\n if (attempt === maxRetries || !shouldRetry(error)) {\n throw error\n }\n\n const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay)\n await sleep(delay)\n }\n }\n\n throw lastError\n}\n\n/**\n * Build URL with query parameters\n */\nexport function buildUrl(\n baseUrl: string,\n path: string,\n params?: Record<string, string | number | boolean | undefined | null>\n): string {\n const url = new URL(path, baseUrl)\n\n if (params !== undefined) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value))\n }\n }\n }\n\n return url.toString()\n}\n\n/**\n * Deep merge two objects\n */\nexport function deepMerge<T extends Record<string, unknown>>(target: T, source: Partial<T>): T {\n const result = { ...target }\n\n for (const key of Object.keys(source) as (keyof T)[]) {\n const sourceValue = source[key]\n const targetValue = result[key]\n\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\n result[key] = deepMerge(\n targetValue as Record<string, unknown>,\n sourceValue as Record<string, unknown>\n ) as T[keyof T]\n } else if (sourceValue !== undefined) {\n result[key] = sourceValue as T[keyof T]\n }\n }\n\n return result\n}\n\n/**\n * Check if value is a plain object\n */\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && value.constructor === Object\n}\n\n/**\n * Format amount from cents to currency string\n */\nexport function formatAmount(amountInCents: number, currency = 'EUR'): string {\n return new Intl.NumberFormat('fr-FR', {\n style: 'currency',\n currency,\n }).format(amountInCents / 100)\n}\n\n/**\n * Parse amount from currency string to cents\n */\nexport function parseAmount(amount: number): number {\n return Math.round(amount * 100)\n}\n","import {\n ApiError,\n AuthenticationError,\n AuthorizationError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n TimeoutError,\n ValidationError,\n} from './errors/index.js'\nimport { buildUrl, retry } from './utils/index.js'\n\n/**\n * SDK configuration options\n */\nexport interface FamOptions {\n /** Base URL of the API */\n baseUrl: string\n /** Authentication token */\n token?: string\n /** Request timeout in milliseconds */\n timeout?: number\n /** Number of retries on network errors */\n retries?: number\n /** Custom headers to include in all requests */\n headers?: Record<string, string>\n}\n\n/**\n * Request options for individual API calls\n */\nexport interface RequestOptions {\n /** Query parameters */\n params?: Record<string, string | number | boolean | undefined | null>\n /** Request headers */\n headers?: Record<string, string>\n /** Request timeout override */\n timeout?: number\n /** Skip retry logic */\n skipRetry?: boolean\n}\n\n/**\n * API response structure\n */\ninterface ApiResponse<T> {\n data: T\n status: number\n headers: Headers\n}\n\n/**\n * Error response from the API\n */\ninterface ErrorResponse {\n message?: string\n error?: string\n errors?: Record<string, string[]>\n code?: string\n}\n\n/**\n * HTTP client for making API requests\n */\nexport class HttpClient {\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly retries: number\n private readonly defaultHeaders: Record<string, string>\n private token: string | undefined\n\n constructor(options: FamOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n this.token = options.token\n this.timeout = options.timeout ?? 30000\n this.retries = options.retries ?? 3\n this.defaultHeaders = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...options.headers,\n }\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string): void {\n this.token = token\n }\n\n /**\n * Clear the authentication token\n */\n clearToken(): void {\n this.token = undefined\n }\n\n /**\n * Make a GET request\n */\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('GET', path, undefined, options)\n }\n\n /**\n * Make a POST request\n */\n async post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('POST', path, body, options)\n }\n\n /**\n * Make a PUT request\n */\n async put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PUT', path, body, options)\n }\n\n /**\n * Make a PATCH request\n */\n async patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PATCH', path, body, options)\n }\n\n /**\n * Make a DELETE request\n */\n async delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('DELETE', path, undefined, options)\n }\n\n /**\n * Make an HTTP request\n */\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n options?: RequestOptions\n ): Promise<T> {\n const url = buildUrl(this.baseUrl, path, options?.params)\n const timeout = options?.timeout ?? this.timeout\n const headers = this.buildHeaders(options?.headers)\n\n const makeRequest = async (): Promise<ApiResponse<T>> => {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => {\n controller.abort()\n }, timeout)\n\n try {\n const fetchOptions: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n }\n\n if (body !== undefined) {\n fetchOptions.body = JSON.stringify(body)\n }\n\n const response = await fetch(url, fetchOptions)\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n await this.handleErrorResponse(response)\n }\n\n const data = (await response.json()) as T\n\n return {\n data,\n status: response.status,\n headers: response.headers,\n }\n } catch (error) {\n clearTimeout(timeoutId)\n\n if (error instanceof Error && error.name === 'AbortError') {\n throw new TimeoutError(`Request timeout after ${String(timeout)}ms`)\n }\n\n if (error instanceof ApiError) {\n throw error\n }\n\n throw new NetworkError(\n error instanceof Error ? error.message : 'Network request failed',\n error instanceof Error ? error : undefined\n )\n }\n }\n\n if (options?.skipRetry === true) {\n const response = await makeRequest()\n return response.data\n }\n\n const response = await retry(makeRequest, {\n maxRetries: this.retries,\n shouldRetry: (error): boolean => {\n if (error instanceof NetworkError || error instanceof TimeoutError) {\n return true\n }\n if (error instanceof RateLimitError) {\n return true\n }\n if (error instanceof ApiError && error.statusCode >= 500) {\n return true\n }\n return false\n },\n })\n\n return response.data\n }\n\n /**\n * Build request headers\n */\n private buildHeaders(customHeaders?: Record<string, string>): Record<string, string> {\n const headers: Record<string, string> = { ...this.defaultHeaders }\n\n if (this.token !== undefined) {\n headers['Authorization'] = `Bearer ${this.token}`\n }\n\n if (customHeaders !== undefined) {\n Object.assign(headers, customHeaders)\n }\n\n return headers\n }\n\n /**\n * Handle error responses from the API\n */\n private async handleErrorResponse(response: Response): Promise<never> {\n let errorData: ErrorResponse = {}\n\n try {\n errorData = (await response.json()) as ErrorResponse\n } catch {\n // Response body is not JSON\n }\n\n const message = errorData.message ?? errorData.error ?? response.statusText\n const code = errorData.code\n\n switch (response.status) {\n case 400:\n if (errorData.errors !== undefined) {\n throw new ValidationError(message, errorData.errors)\n }\n throw new ApiError(message, 400, code, errorData)\n\n case 401:\n throw new AuthenticationError(message)\n\n case 403:\n throw new AuthorizationError(message)\n\n case 404:\n throw new NotFoundError(message)\n\n case 422:\n throw new ValidationError(message, errorData.errors ?? {})\n\n case 429: {\n const retryAfter = response.headers.get('Retry-After')\n throw new RateLimitError(\n message,\n retryAfter !== null ? parseInt(retryAfter, 10) : undefined\n )\n }\n\n default:\n throw new ApiError(message, response.status, code, errorData)\n }\n }\n}\n","/**\n * Base module for API modules\n */\n\nimport type { HttpClient, RequestOptions } from '../client.js'\n\n/**\n * Base class for all API modules\n */\nexport abstract class BaseModule {\n protected readonly client: HttpClient\n protected readonly basePath: string\n\n constructor(client: HttpClient, basePath: string) {\n this.client = client\n this.basePath = basePath\n }\n\n /**\n * Build the full path for an endpoint\n */\n protected path(segments: string | string[] = ''): string {\n if (Array.isArray(segments)) {\n return `${this.basePath}/${segments.join('/')}`\n }\n return segments.length > 0 ? `${this.basePath}/${segments}` : this.basePath\n }\n\n /**\n * Make a GET request\n */\n protected async get<T>(endpoint: string, options?: RequestOptions): Promise<T> {\n return this.client.get<T>(this.path(endpoint), options)\n }\n\n /**\n * Make a POST request\n */\n protected async post<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.post<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a PUT request\n */\n protected async put<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.put<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a PATCH request\n */\n protected async patch<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.patch<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a DELETE request\n */\n protected async delete<T>(endpoint: string, options?: RequestOptions): Promise<T> {\n return this.client.delete<T>(this.path(endpoint), options)\n }\n}\n","/**\n * Bank Accounts module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n BankAccount,\n CreateCaBankAccountRequest,\n CreateGbBankAccountRequest,\n CreateIbanBankAccountRequest,\n CreateOtherBankAccountRequest,\n CreateUsBankAccountRequest,\n IbanBankAccount,\n GbBankAccount,\n UsBankAccount,\n CaBankAccount,\n OtherBankAccount,\n} from '../types/bank-accounts.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\n\n/**\n * Bank Accounts API module (user-scoped)\n */\nexport class BankAccountsModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/bankaccounts`)\n }\n\n /**\n * Create an IBAN bank account\n */\n async createIban(data: CreateIbanBankAccountRequest): Promise<IbanBankAccount> {\n return this.post<IbanBankAccount>('iban', data)\n }\n\n /**\n * Create a GB bank account\n */\n async createGb(data: CreateGbBankAccountRequest): Promise<GbBankAccount> {\n return this.post<GbBankAccount>('gb', data)\n }\n\n /**\n * Create a US bank account\n */\n async createUs(data: CreateUsBankAccountRequest): Promise<UsBankAccount> {\n return this.post<UsBankAccount>('us', data)\n }\n\n /**\n * Create a CA bank account\n */\n async createCa(data: CreateCaBankAccountRequest): Promise<CaBankAccount> {\n return this.post<CaBankAccount>('ca', data)\n }\n\n /**\n * Create an Other bank account\n */\n async createOther(data: CreateOtherBankAccountRequest): Promise<OtherBankAccount> {\n return this.post<OtherBankAccount>('other', data)\n }\n\n /**\n * Get a bank account by ID\n */\n async getAccount(accountId: string): Promise<BankAccount> {\n return this.client.get<BankAccount>(this.path(accountId))\n }\n\n /**\n * List user's bank accounts\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<BankAccount>> {\n return this.client.get<PaginatedResponse<BankAccount>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Deactivate a bank account\n */\n async deactivate(accountId: string): Promise<BankAccount> {\n return this.put<BankAccount>(accountId, { Active: false })\n }\n}\n","/**\n * Cards module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n Card,\n CardRegistration,\n CreateCardRegistrationRequest,\n CreatePreauthorizationRequest,\n Preauthorization,\n UpdateCardRegistrationRequest,\n UpdateCardRequest,\n UpdatePreauthorizationRequest,\n} from '../types/cards.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\n\n/**\n * Card Registrations API module\n */\nexport class CardRegistrationsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/cardRegistrations')\n }\n\n /**\n * Create a card registration\n */\n async create(data: CreateCardRegistrationRequest): Promise<CardRegistration> {\n return this.post<CardRegistration>('', data)\n }\n\n /**\n * Get a card registration by ID\n */\n async getRegistration(registrationId: string): Promise<CardRegistration> {\n return this.client.get<CardRegistration>(this.path(registrationId))\n }\n\n /**\n * Update a card registration (complete registration process)\n */\n async update(\n registrationId: string,\n data: UpdateCardRegistrationRequest\n ): Promise<CardRegistration> {\n return this.put<CardRegistration>(registrationId, data)\n }\n}\n\n/**\n * Cards API module\n */\nexport class CardsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/cards')\n }\n\n /**\n * Get a card by ID\n */\n async getCard(cardId: string): Promise<Card> {\n return this.client.get<Card>(this.path(cardId))\n }\n\n /**\n * Deactivate a card\n */\n async deactivate(cardId: string): Promise<Card> {\n const data: UpdateCardRequest = { Active: false }\n return this.post<Card>(`${cardId}/desactivate`, data)\n }\n\n /**\n * Get card preauthorizations\n */\n async getPreauthorizations(\n cardId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<Preauthorization>> {\n return this.client.get<PaginatedResponse<Preauthorization>>(\n this.path([cardId, 'preauthorizations']),\n { params: params as Record<string, string | number | boolean | undefined | null> }\n )\n }\n}\n\n/**\n * Preauthorizations API module\n */\nexport class PreauthorizationsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/preauthorizations')\n }\n\n /**\n * Create a preauthorization\n */\n async create(data: CreatePreauthorizationRequest): Promise<Preauthorization> {\n return this.post<Preauthorization>('', data)\n }\n\n /**\n * Get a preauthorization by ID\n */\n async getPreauthorization(preauthorizationId: string): Promise<Preauthorization> {\n return this.client.get<Preauthorization>(this.path(preauthorizationId))\n }\n\n /**\n * Update a preauthorization (cancel)\n */\n async update(\n preauthorizationId: string,\n data: UpdatePreauthorizationRequest\n ): Promise<Preauthorization> {\n return this.put<Preauthorization>(preauthorizationId, data)\n }\n\n /**\n * Cancel a preauthorization\n */\n async cancel(preauthorizationId: string): Promise<Preauthorization> {\n return this.update(preauthorizationId, { PaymentStatus: 'CANCELED' })\n }\n}\n","/**\n * KYC module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type { CreateKycDocumentRequest, KycDocument } from '../types/kyc.js'\n\n/**\n * KYC Documents API module (user-scoped)\n */\nexport class KycModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/kyc/documents`)\n }\n\n /**\n * Create a KYC document\n */\n async create(data: CreateKycDocumentRequest): Promise<KycDocument> {\n return this.post<KycDocument>('', data)\n }\n\n /**\n * Get a KYC document by ID\n */\n async getDocument(documentId: string): Promise<KycDocument> {\n return this.client.get<KycDocument>(this.path(documentId))\n }\n\n /**\n * List user's KYC documents\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<KycDocument>> {\n return this.client.get<PaginatedResponse<KycDocument>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Create a KYC document page (upload file)\n */\n async createPage(documentId: string, fileBase64: string): Promise<void> {\n await this.post<undefined>(`${documentId}/pages`, { File: fileBase64 })\n }\n\n /**\n * Submit a KYC document for validation\n */\n async submit(documentId: string): Promise<KycDocument> {\n return this.put<KycDocument>(documentId, { Status: 'VALIDATION_ASKED' })\n }\n}\n","/**\n * Payins module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n CreateCardDirectPayinRequest,\n CreateRecurringCitPayinRequest,\n CreateRecurringMitPayinRequest,\n CreateRecurringPaymentRequest,\n CreateRefundRequest,\n Payin,\n RecurringPaymentRegistration,\n Refund,\n UpdateRecurringPaymentRequest,\n} from '../types/payins.js'\n\n/**\n * Payins API module\n */\nexport class PayinsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/payins')\n }\n\n /**\n * Create a card direct payin\n */\n async create(data: CreateCardDirectPayinRequest): Promise<Payin> {\n return this.post<Payin>('', data)\n }\n\n /**\n * Get a payin by ID\n */\n async getPayin(payinId: string): Promise<Payin> {\n return this.client.get<Payin>(this.path(payinId))\n }\n\n /**\n * Refund a payin\n */\n async refund(payinId: string, data: CreateRefundRequest): Promise<Refund> {\n return this.post<Refund>(`${payinId}/refund`, data)\n }\n\n /**\n * Create a recurring payment registration\n */\n async createRecurringPayment(\n data: CreateRecurringPaymentRequest\n ): Promise<RecurringPaymentRegistration> {\n return this.post<RecurringPaymentRegistration>('createRecurringPayment', data)\n }\n\n /**\n * View a recurring payment registration\n */\n async viewRecurringPayment(registrationId: string): Promise<RecurringPaymentRegistration> {\n return this.client.get<RecurringPaymentRegistration>(\n this.path(['viewRecurringPayment', registrationId])\n )\n }\n\n /**\n * Create a recurring CIT (Customer-Initiated Transaction) payin\n */\n async createRecurringCit(data: CreateRecurringCitPayinRequest): Promise<Payin> {\n return this.post<Payin>('createRecurringPayInRegistrationCIT', data)\n }\n\n /**\n * Create a recurring MIT (Merchant-Initiated Transaction) payin\n */\n async createRecurringMit(data: CreateRecurringMitPayinRequest): Promise<Payin> {\n return this.post<Payin>('createRecurringPayInRegistrationMIT', data)\n }\n\n /**\n * Update a recurring payment registration\n */\n async updateRecurringPayment(\n registrationId: string,\n data: UpdateRecurringPaymentRequest\n ): Promise<RecurringPaymentRegistration> {\n return this.put<RecurringPaymentRegistration>(`updateRecurringPayin/${registrationId}`, data)\n }\n\n /**\n * End a recurring payment registration\n */\n async endRecurringPayment(registrationId: string): Promise<RecurringPaymentRegistration> {\n return this.updateRecurringPayment(registrationId, { Status: 'ENDED' })\n }\n}\n","/**\n * Payouts module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { CreatePayoutRequest, Payout } from '../types/payouts.js'\n\n/**\n * Payouts API module\n */\nexport class PayoutsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/payouts')\n }\n\n /**\n * Create a payout\n */\n async create(data: CreatePayoutRequest): Promise<Payout> {\n return this.post<Payout>('', data)\n }\n\n /**\n * Get a payout by ID\n */\n async getPayout(payoutId: string): Promise<Payout> {\n return this.client.get<Payout>(this.path(payoutId))\n }\n}\n","/**\n * Portal module for FAM Payment Portal\n *\n * This module provides methods to create and manage portal sessions\n * that allow users to access the payment portal from client apps.\n *\n * @example\n * ```typescript\n * // Create a portal session for a MangoPay user\n * const session = await client.portal.createSession({\n * mangopayUserId: 'user_m_01HXK...',\n * returnUrl: 'https://myapp.com/dashboard',\n * })\n *\n * // Redirect user to portal\n * window.location.href = session.data.url\n * ```\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n CreatePortalSessionRequest,\n CreatePortalSessionResponse,\n GetPortalUserResponse,\n PortalLogoutResponse,\n RefreshPortalSessionResponse,\n ValidatePortalSessionRequest,\n ValidatePortalSessionResponse,\n} from '../types/portal.js'\n\n/**\n * Portal API module\n *\n * Provides methods for creating and managing portal sessions.\n * Portal sessions allow users to access the FAM payment portal\n * to manage their subscriptions, cards, and invoices.\n */\nexport class PortalModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/portal')\n }\n\n /**\n * Create a new portal session\n *\n * Creates a temporary session that allows the user to access\n * the payment portal. Returns a URL to redirect the user to.\n *\n * @param data - Session creation options\n * @returns Session details including the portal URL\n *\n * @example\n * ```typescript\n * const session = await client.portal.createSession({\n * mangopayUserId: 'user_m_01HXK...',\n * returnUrl: 'https://myapp.com/dashboard',\n * expiresInMinutes: 60,\n * })\n *\n * // Redirect user to portal\n * window.location.href = session.data.url\n * ```\n */\n async createSession(data: CreatePortalSessionRequest): Promise<CreatePortalSessionResponse> {\n return this.post<CreatePortalSessionResponse>('sessions', data)\n }\n\n /**\n * Validate a portal session token\n *\n * Called by the portal frontend to validate access and get\n * user + website configuration for theming.\n *\n * @param data - Token validation request\n * @returns Session details with user and website config\n *\n * @example\n * ```typescript\n * const result = await client.portal.validateSession({\n * token: 'session-token-from-url',\n * })\n *\n * if (result.valid) {\n * const { user, website } = result.data\n * // Apply website theming and show user info\n * }\n * ```\n */\n async validateSession(\n data: ValidatePortalSessionRequest\n ): Promise<ValidatePortalSessionResponse> {\n return this.post<ValidatePortalSessionResponse>('session/validate', data)\n }\n\n /**\n * Get current portal user\n *\n * Requires a valid session token in the X-Portal-Session header.\n * This is typically called by the portal frontend after validation.\n *\n * @param sessionToken - The portal session token\n * @returns User information\n *\n * @example\n * ```typescript\n * const user = await client.portal.getUser('session-token')\n * console.log(`Hello ${user.data.firstName}`)\n * ```\n */\n async getUser(sessionToken: string): Promise<GetPortalUserResponse> {\n return this.client.get<GetPortalUserResponse>(this.path('user'), {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n\n /**\n * Refresh portal session\n *\n * Extends the session expiration by 60 minutes.\n * Requires a valid session token in the X-Portal-Session header.\n *\n * @param sessionToken - The portal session token\n * @returns New expiration datetime\n *\n * @example\n * ```typescript\n * const result = await client.portal.refreshSession('session-token')\n * console.log(`Session extended until ${result.data.expiresAt}`)\n * ```\n */\n async refreshSession(sessionToken: string): Promise<RefreshPortalSessionResponse> {\n return this.client.post<RefreshPortalSessionResponse>(this.path('session/refresh'), undefined, {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n\n /**\n * Logout and invalidate portal session\n *\n * Invalidates the session token, preventing further access.\n *\n * @param sessionToken - The portal session token\n * @returns Logout confirmation\n *\n * @example\n * ```typescript\n * await client.portal.logout('session-token')\n * // Redirect to return URL or home\n * ```\n */\n async logout(sessionToken: string): Promise<PortalLogoutResponse> {\n return this.client.post<PortalLogoutResponse>(this.path('logout'), undefined, {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n}\n","/**\n * SCA Recipients module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type {\n CreateRecipientRequest,\n Recipient,\n RecipientSchema,\n RecipientSchemaRequest,\n} from '../types/recipients.js'\n\n/**\n * SCA Recipients API module (user-scoped)\n */\nexport class ScaRecipientsModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/recipients`)\n }\n\n /**\n * Create a recipient\n */\n async create(data: CreateRecipientRequest): Promise<Recipient> {\n return this.post<Recipient>('', data)\n }\n\n /**\n * Get a recipient by ID\n */\n async getRecipient(recipientId: string): Promise<Recipient> {\n return this.client.get<Recipient>(this.path(recipientId))\n }\n\n /**\n * List user's recipients\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<Recipient>> {\n return this.client.get<PaginatedResponse<Recipient>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get recipient schema (required fields for a specific payout method)\n */\n async getSchema(request: RecipientSchemaRequest): Promise<RecipientSchema> {\n return this.client.get<RecipientSchema>(this.path('schema'), {\n params: request as unknown as Record<string, string | number | boolean | undefined | null>,\n })\n }\n}\n","/**\n * Subscriptions module (FAM custom implementation)\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse } from '../types/common.js'\nimport type {\n RecurringSubscription,\n RegisterSubscriptionRequest,\n SubscriptionListFilters,\n SubscriptionWithPayments,\n SyncSubscriptionResponse,\n UpdateSubscriptionRequest,\n} from '../types/subscriptions.js'\n\n/**\n * Recurring Subscriptions API module\n */\nexport class SubscriptionsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/recurring-subscriptions')\n }\n\n /**\n * Register a recurring subscription\n */\n async register(data: RegisterSubscriptionRequest): Promise<RecurringSubscription> {\n return this.post<RecurringSubscription>('', data)\n }\n\n /**\n * Get a subscription by ID (includes last 10 payments)\n */\n async getSubscription(subscriptionId: string): Promise<SubscriptionWithPayments> {\n return this.client.get<SubscriptionWithPayments>(this.path(subscriptionId))\n }\n\n /**\n * List subscriptions with filters\n */\n async list(filters?: SubscriptionListFilters): Promise<PaginatedResponse<RecurringSubscription>> {\n return this.client.get<PaginatedResponse<RecurringSubscription>>(this.path(''), {\n params: filters as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Update a subscription\n */\n async update(\n subscriptionId: string,\n data: UpdateSubscriptionRequest\n ): Promise<RecurringSubscription> {\n return this.put<RecurringSubscription>(subscriptionId, data)\n }\n\n /**\n * Sync subscription from Mangopay\n */\n async sync(subscriptionId: string): Promise<SyncSubscriptionResponse> {\n return this.post<SyncSubscriptionResponse>(`${subscriptionId}/sync`)\n }\n\n /**\n * Cancel a subscription\n */\n async cancel(subscriptionId: string): Promise<RecurringSubscription> {\n return this.post<RecurringSubscription>(`${subscriptionId}/cancel`)\n }\n\n /**\n * Enable subscription processing\n */\n async enable(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { processingEnabled: true })\n }\n\n /**\n * Disable subscription processing\n */\n async disable(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { processingEnabled: false })\n }\n\n /**\n * Enable webhook notifications\n */\n async enableWebhooks(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { webhookNotificationEnabled: true })\n }\n\n /**\n * Disable webhook notifications\n */\n async disableWebhooks(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { webhookNotificationEnabled: false })\n }\n}\n","/**\n * Transfers module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { Refund } from '../types/payins.js'\nimport type {\n CreateScaTransferRequest,\n CreateTransferRefundRequest,\n CreateTransferRequest,\n Transfer,\n} from '../types/transfers.js'\n\n/**\n * Transfers API module\n */\nexport class TransfersModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/transfers')\n }\n\n /**\n * Create a transfer\n */\n async create(data: CreateTransferRequest): Promise<Transfer> {\n return this.post<Transfer>('', data)\n }\n\n /**\n * Create an SCA transfer\n */\n async createSca(data: CreateScaTransferRequest): Promise<Transfer> {\n return this.post<Transfer>('sca', data)\n }\n\n /**\n * Get a transfer by ID\n */\n async getTransfer(transferId: string): Promise<Transfer> {\n return this.client.get<Transfer>(this.path(transferId))\n }\n\n /**\n * Get an SCA transfer by ID\n */\n async getSca(transferId: string): Promise<Transfer> {\n return this.client.get<Transfer>(this.path(['sca', transferId]))\n }\n\n /**\n * Refund a transfer\n */\n async refund(transferId: string, data: CreateTransferRefundRequest): Promise<Refund> {\n return this.post<Refund>(`${transferId}/refund`, data)\n }\n}\n","/**\n * UBO module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { CreateUboRequest, Ubo, UboDeclaration, UpdateUboRequest } from '../types/ubo.js'\n\n/**\n * UBO Declarations API module (user-scoped)\n */\nexport class UboModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/kyc/ubodeclarations`)\n }\n\n /**\n * Create a UBO declaration\n */\n async createDeclaration(): Promise<UboDeclaration> {\n return this.post<UboDeclaration>('')\n }\n\n /**\n * Get a UBO declaration by ID\n */\n async getDeclaration(declarationId: string): Promise<UboDeclaration> {\n return this.client.get<UboDeclaration>(this.path(declarationId))\n }\n\n /**\n * Create a UBO (Ultimate Beneficial Owner)\n */\n async createUbo(declarationId: string, data: CreateUboRequest): Promise<Ubo> {\n return this.post<Ubo>(`${declarationId}/ubos`, data)\n }\n\n /**\n * Update a UBO\n */\n async updateUbo(declarationId: string, uboId: string, data: UpdateUboRequest): Promise<Ubo> {\n return this.put<Ubo>(`${declarationId}/ubos/${uboId}`, data)\n }\n\n /**\n * Submit a UBO declaration for validation\n */\n async submit(declarationId: string): Promise<UboDeclaration> {\n return this.put<UboDeclaration>(declarationId, { Status: 'VALIDATION_ASKED' })\n }\n}\n","/**\n * Users module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { BankAccount } from '../types/bank-accounts.js'\nimport type { Card } from '../types/cards.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type {\n CreateLegalUserRequest,\n CreateNaturalUserRequest,\n LegalUser,\n NaturalUser,\n UpdateLegalUserRequest,\n UpdateNaturalUserRequest,\n User,\n} from '../types/users.js'\nimport type { Wallet } from '../types/wallets.js'\n\n/**\n * Transaction list item (simplified for user transactions)\n */\ninterface Transaction {\n Id: string\n Tag?: string\n CreationDate: number\n AuthorId: string\n Type: string\n Nature: string\n Status: string\n DebitedFunds: { Amount: number; Currency: string }\n CreditedFunds: { Amount: number; Currency: string }\n Fees: { Amount: number; Currency: string }\n}\n\n/**\n * Users API module\n */\nexport class UsersModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/users')\n }\n\n /**\n * Create a natural user\n */\n async createNatural(data: CreateNaturalUserRequest): Promise<NaturalUser> {\n return this.post<NaturalUser>('natural', data)\n }\n\n /**\n * Create a legal user\n */\n async createLegal(data: CreateLegalUserRequest): Promise<LegalUser> {\n return this.post<LegalUser>('legal', data)\n }\n\n /**\n * Get a user by ID\n */\n async getUser(userId: string): Promise<User> {\n return this.client.get<User>(this.path(userId))\n }\n\n /**\n * Get a natural user by ID\n */\n async getNaturalUser(userId: string): Promise<NaturalUser> {\n return this.client.get<NaturalUser>(this.path(['natural', userId]))\n }\n\n /**\n * Get a legal user by ID\n */\n async getLegalUser(userId: string): Promise<LegalUser> {\n return this.client.get<LegalUser>(this.path(['legal', userId]))\n }\n\n /**\n * Update a natural user\n */\n async updateNatural(userId: string, data: UpdateNaturalUserRequest): Promise<NaturalUser> {\n return this.put<NaturalUser>(`natural/${userId}`, data)\n }\n\n /**\n * Update a legal user\n */\n async updateLegal(userId: string, data: UpdateLegalUserRequest): Promise<LegalUser> {\n return this.put<LegalUser>(`legal/${userId}`, data)\n }\n\n /**\n * Get user's wallets\n */\n async getWallets(userId: string, params?: PaginationParams): Promise<PaginatedResponse<Wallet>> {\n return this.client.get<PaginatedResponse<Wallet>>(this.path([userId, 'wallets']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's cards\n */\n async getCards(userId: string, params?: PaginationParams): Promise<PaginatedResponse<Card>> {\n return this.client.get<PaginatedResponse<Card>>(this.path([userId, 'cards']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's bank accounts\n */\n async getBankAccounts(\n userId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<BankAccount>> {\n return this.client.get<PaginatedResponse<BankAccount>>(this.path([userId, 'bankaccounts']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's transactions\n */\n async getTransactions(\n userId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<Transaction>> {\n return this.client.get<PaginatedResponse<Transaction>>(this.path([userId, 'transactions']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n}\n","/**\n * Wallets module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type { CreateWalletRequest, UpdateWalletRequest, Wallet } from '../types/wallets.js'\n\n/**\n * Wallet transaction item\n */\ninterface WalletTransaction {\n Id: string\n Tag?: string\n CreationDate: number\n AuthorId: string\n Type: string\n Nature: string\n Status: string\n DebitedFunds: { Amount: number; Currency: string }\n CreditedFunds: { Amount: number; Currency: string }\n Fees: { Amount: number; Currency: string }\n DebitedWalletId?: string\n CreditedWalletId?: string\n}\n\n/**\n * Wallets API module\n */\nexport class WalletsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/wallets')\n }\n\n /**\n * Create a wallet\n */\n async create(data: CreateWalletRequest): Promise<Wallet> {\n return this.post<Wallet>('', data)\n }\n\n /**\n * Get a wallet by ID\n */\n async getWallet(walletId: string): Promise<Wallet> {\n return this.client.get<Wallet>(this.path(walletId))\n }\n\n /**\n * Update a wallet\n */\n async update(walletId: string, data: UpdateWalletRequest): Promise<Wallet> {\n return this.put<Wallet>(walletId, data)\n }\n\n /**\n * Get wallet transactions\n */\n async getTransactions(\n walletId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<WalletTransaction>> {\n return this.client.get<PaginatedResponse<WalletTransaction>>(\n this.path([walletId, 'transactions']),\n { params: params as Record<string, string | number | boolean | undefined | null> }\n )\n }\n}\n","/**\n * Main SDK client class\n */\n\nimport { HttpClient } from './client.js'\nimport {\n BankAccountsModule,\n CardRegistrationsModule,\n CardsModule,\n KycModule,\n PayinsModule,\n PayoutsModule,\n PortalModule,\n PreauthorizationsModule,\n ScaRecipientsModule,\n SubscriptionsModule,\n TransfersModule,\n UboModule,\n UsersModule,\n WalletsModule,\n} from './modules/index.js'\nimport type { FamOptions } from './client.js'\n\n/**\n * Main FAM SDK client\n *\n * @example\n * ```typescript\n * const client = new Fam({\n * baseUrl: 'https://api.fam.com',\n * token: 'your-auth-token',\n * })\n *\n * // Create a natural user\n * const user = await client.users.createNatural({\n * Email: 'user@example.com',\n * FirstName: 'John',\n * LastName: 'Doe',\n * })\n *\n * // Create a wallet\n * const wallet = await client.wallets.create({\n * Owners: [user.Id],\n * Description: 'Main wallet',\n * Currency: 'EUR',\n * })\n * ```\n */\nexport class Fam {\n private readonly client: HttpClient\n\n // Core modules\n public readonly users: UsersModule\n public readonly wallets: WalletsModule\n public readonly payins: PayinsModule\n public readonly payouts: PayoutsModule\n public readonly transfers: TransfersModule\n\n // Card modules\n public readonly cards: CardsModule\n public readonly cardRegistrations: CardRegistrationsModule\n public readonly preauthorizations: PreauthorizationsModule\n\n // FAM custom modules\n public readonly subscriptions: SubscriptionsModule\n public readonly portal: PortalModule\n\n constructor(options: FamOptions) {\n this.client = new HttpClient(options)\n\n // Initialize core modules\n this.users = new UsersModule(this.client)\n this.wallets = new WalletsModule(this.client)\n this.payins = new PayinsModule(this.client)\n this.payouts = new PayoutsModule(this.client)\n this.transfers = new TransfersModule(this.client)\n\n // Initialize card modules\n this.cards = new CardsModule(this.client)\n this.cardRegistrations = new CardRegistrationsModule(this.client)\n this.preauthorizations = new PreauthorizationsModule(this.client)\n\n // Initialize FAM custom modules\n this.subscriptions = new SubscriptionsModule(this.client)\n this.portal = new PortalModule(this.client)\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string): void {\n this.client.setToken(token)\n }\n\n /**\n * Clear the authentication token\n */\n clearToken(): void {\n this.client.clearToken()\n }\n\n /**\n * Get bank accounts module for a specific user\n */\n bankAccounts(userId: string): BankAccountsModule {\n return new BankAccountsModule(this.client, userId)\n }\n\n /**\n * Get KYC module for a specific user\n */\n kyc(userId: string): KycModule {\n return new KycModule(this.client, userId)\n }\n\n /**\n * Get UBO module for a specific user\n */\n ubo(userId: string): UboModule {\n return new UboModule(this.client, userId)\n }\n\n /**\n * Get SCA Recipients module for a specific user\n */\n scaRecipients(userId: string): ScaRecipientsModule {\n return new ScaRecipientsModule(this.client, userId)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors/index.ts","../src/utils/index.ts","../src/client.ts","../src/modules/base.ts","../src/modules/bank-accounts.ts","../src/modules/cards.ts","../src/modules/kyc.ts","../src/modules/payins.ts","../src/modules/payouts.ts","../src/modules/portal.ts","../src/modules/recipients.ts","../src/modules/subscriptions.ts","../src/modules/transfers.ts","../src/modules/ubo.ts","../src/modules/users.ts","../src/modules/wallets.ts","../src/fam.ts"],"names":["response"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Base error class for all SDK errors\n */\nexport class FamError extends Error {\n public override readonly name: string = 'FamError'\n\n constructor(message: string) {\n super(message)\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\n/**\n * API error with status code and response details\n */\nexport class ApiError extends FamError {\n public override readonly name: string = 'ApiError'\n public readonly statusCode: number\n public readonly code: string | undefined\n public readonly details: unknown\n\n constructor(message: string, statusCode: number, code?: string, details?: unknown) {\n super(message)\n this.statusCode = statusCode\n this.code = code\n this.details = details\n }\n}\n\n/**\n * Authentication error (401)\n */\nexport class AuthenticationError extends ApiError {\n public override readonly name: string = 'AuthenticationError'\n\n constructor(message = 'Authentication failed') {\n super(message, 401, 'AUTHENTICATION_ERROR')\n }\n}\n\n/**\n * Authorization error (403)\n */\nexport class AuthorizationError extends ApiError {\n public override readonly name: string = 'AuthorizationError'\n\n constructor(message = 'Access denied') {\n super(message, 403, 'AUTHORIZATION_ERROR')\n }\n}\n\n/**\n * Resource not found error (404)\n */\nexport class NotFoundError extends ApiError {\n public override readonly name: string = 'NotFoundError'\n\n constructor(message = 'Resource not found') {\n super(message, 404, 'NOT_FOUND')\n }\n}\n\n/**\n * Validation error with field-level details (400/422)\n */\nexport class ValidationError extends ApiError {\n public override readonly name: string = 'ValidationError'\n public readonly errors: Record<string, string[]>\n\n constructor(message: string, errors: Record<string, string[]> = {}) {\n super(message, 422, 'VALIDATION_ERROR', errors)\n this.errors = errors\n }\n}\n\n/**\n * Rate limit error (429)\n */\nexport class RateLimitError extends ApiError {\n public override readonly name: string = 'RateLimitError'\n public readonly retryAfter: number | undefined\n\n constructor(message = 'Rate limit exceeded', retryAfter?: number) {\n super(message, 429, 'RATE_LIMIT_ERROR')\n this.retryAfter = retryAfter\n }\n}\n\n/**\n * Network error for connection issues\n */\nexport class NetworkError extends FamError {\n public override readonly name: string = 'NetworkError'\n public readonly originalError: Error | undefined\n\n constructor(message: string, originalError?: Error) {\n super(message)\n this.originalError = originalError\n }\n}\n\n/**\n * Timeout error\n */\nexport class TimeoutError extends NetworkError {\n public override readonly name: string = 'TimeoutError'\n\n constructor(message = 'Request timeout', originalError?: Error) {\n super(message, originalError)\n }\n}\n\n/**\n * Webhook signature verification error\n */\nexport class WebhookSignatureError extends FamError {\n public override readonly name: string = 'WebhookSignatureError'\n\n constructor(message = 'Invalid webhook signature') {\n super(message)\n }\n}\n","/**\n * Check if running in browser environment\n */\nexport function isBrowser(): boolean {\n const global = globalThis as unknown as { window?: { document?: unknown } }\n return typeof global.window?.document !== 'undefined'\n}\n\n/**\n * Check if running in Node.js environment\n */\nexport function isNode(): boolean {\n const global = globalThis as unknown as { process?: { versions?: { node?: string } } }\n return typeof global.process?.versions?.node !== 'undefined'\n}\n\n/**\n * Sleep for a given number of milliseconds\n */\nexport async function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Retry a function with exponential backoff\n */\nexport async function retry<T>(\n fn: () => Promise<T>,\n options: {\n maxRetries?: number\n baseDelay?: number\n maxDelay?: number\n shouldRetry?: (error: unknown) => boolean\n } = {}\n): Promise<T> {\n const {\n maxRetries = 3,\n baseDelay = 1000,\n maxDelay = 30000,\n shouldRetry = (): boolean => true,\n } = options\n\n let lastError: unknown\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn()\n } catch (error) {\n lastError = error\n\n if (attempt === maxRetries || !shouldRetry(error)) {\n throw error\n }\n\n const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay)\n await sleep(delay)\n }\n }\n\n throw lastError\n}\n\n/**\n * Build URL with query parameters\n */\nexport function buildUrl(\n baseUrl: string,\n path: string,\n params?: Record<string, string | number | boolean | undefined | null>\n): string {\n const url = new URL(path, baseUrl)\n\n if (params !== undefined) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value))\n }\n }\n }\n\n return url.toString()\n}\n\n/**\n * Deep merge two objects\n */\nexport function deepMerge<T extends Record<string, unknown>>(target: T, source: Partial<T>): T {\n const result = { ...target }\n\n for (const key of Object.keys(source) as (keyof T)[]) {\n const sourceValue = source[key]\n const targetValue = result[key]\n\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\n result[key] = deepMerge(\n targetValue as Record<string, unknown>,\n sourceValue as Record<string, unknown>\n ) as T[keyof T]\n } else if (sourceValue !== undefined) {\n result[key] = sourceValue as T[keyof T]\n }\n }\n\n return result\n}\n\n/**\n * Check if value is a plain object\n */\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && value.constructor === Object\n}\n\n/**\n * Format amount from cents to currency string\n */\nexport function formatAmount(amountInCents: number, currency = 'EUR'): string {\n return new Intl.NumberFormat('fr-FR', {\n style: 'currency',\n currency,\n }).format(amountInCents / 100)\n}\n\n/**\n * Parse amount from currency string to cents\n */\nexport function parseAmount(amount: number): number {\n return Math.round(amount * 100)\n}\n","import {\n ApiError,\n AuthenticationError,\n AuthorizationError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n TimeoutError,\n ValidationError,\n} from './errors/index.js'\nimport { buildUrl, retry } from './utils/index.js'\n\n/**\n * SDK configuration options\n */\nexport interface FamOptions {\n /** Base URL of the API */\n baseUrl: string\n /** Authentication token */\n token?: string\n /** Request timeout in milliseconds */\n timeout?: number\n /** Number of retries on network errors */\n retries?: number\n /** Custom headers to include in all requests */\n headers?: Record<string, string>\n}\n\n/**\n * Request options for individual API calls\n */\nexport interface RequestOptions {\n /** Query parameters */\n params?: Record<string, string | number | boolean | undefined | null>\n /** Request headers */\n headers?: Record<string, string>\n /** Request timeout override */\n timeout?: number\n /** Skip retry logic */\n skipRetry?: boolean\n}\n\n/**\n * API response structure\n */\ninterface ApiResponse<T> {\n data: T\n status: number\n headers: Headers\n}\n\n/**\n * Error response from the API\n */\ninterface ErrorResponse {\n message?: string\n error?: string\n errors?: Record<string, string[]>\n code?: string\n}\n\n/**\n * HTTP client for making API requests\n */\nexport class HttpClient {\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly retries: number\n private readonly defaultHeaders: Record<string, string>\n private token: string | undefined\n\n constructor(options: FamOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n this.token = options.token\n this.timeout = options.timeout ?? 30000\n this.retries = options.retries ?? 3\n this.defaultHeaders = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...options.headers,\n }\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string): void {\n this.token = token\n }\n\n /**\n * Clear the authentication token\n */\n clearToken(): void {\n this.token = undefined\n }\n\n /**\n * Make a GET request\n */\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('GET', path, undefined, options)\n }\n\n /**\n * Make a POST request\n */\n async post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('POST', path, body, options)\n }\n\n /**\n * Make a PUT request\n */\n async put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PUT', path, body, options)\n }\n\n /**\n * Make a PATCH request\n */\n async patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PATCH', path, body, options)\n }\n\n /**\n * Make a DELETE request\n */\n async delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('DELETE', path, undefined, options)\n }\n\n /**\n * Make an HTTP request\n */\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n options?: RequestOptions\n ): Promise<T> {\n const url = buildUrl(this.baseUrl, path, options?.params)\n const timeout = options?.timeout ?? this.timeout\n const headers = this.buildHeaders(options?.headers)\n\n const makeRequest = async (): Promise<ApiResponse<T>> => {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => {\n controller.abort()\n }, timeout)\n\n try {\n const fetchOptions: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n }\n\n if (body !== undefined) {\n fetchOptions.body = JSON.stringify(body)\n }\n\n const response = await fetch(url, fetchOptions)\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n await this.handleErrorResponse(response)\n }\n\n const data = (await response.json()) as T\n\n return {\n data,\n status: response.status,\n headers: response.headers,\n }\n } catch (error) {\n clearTimeout(timeoutId)\n\n if (error instanceof Error && error.name === 'AbortError') {\n throw new TimeoutError(`Request timeout after ${String(timeout)}ms`)\n }\n\n if (error instanceof ApiError) {\n throw error\n }\n\n throw new NetworkError(\n error instanceof Error ? error.message : 'Network request failed',\n error instanceof Error ? error : undefined\n )\n }\n }\n\n if (options?.skipRetry === true) {\n const response = await makeRequest()\n return response.data\n }\n\n const response = await retry(makeRequest, {\n maxRetries: this.retries,\n shouldRetry: (error): boolean => {\n if (error instanceof NetworkError || error instanceof TimeoutError) {\n return true\n }\n if (error instanceof RateLimitError) {\n return true\n }\n if (error instanceof ApiError && error.statusCode >= 500) {\n return true\n }\n return false\n },\n })\n\n return response.data\n }\n\n /**\n * Build request headers\n */\n private buildHeaders(customHeaders?: Record<string, string>): Record<string, string> {\n const headers: Record<string, string> = { ...this.defaultHeaders }\n\n if (this.token !== undefined) {\n headers['Authorization'] = `Bearer ${this.token}`\n }\n\n if (customHeaders !== undefined) {\n Object.assign(headers, customHeaders)\n }\n\n return headers\n }\n\n /**\n * Handle error responses from the API\n */\n private async handleErrorResponse(response: Response): Promise<never> {\n let errorData: ErrorResponse = {}\n\n try {\n errorData = (await response.json()) as ErrorResponse\n } catch {\n // Response body is not JSON\n }\n\n const message = errorData.message ?? errorData.error ?? response.statusText\n const code = errorData.code\n\n switch (response.status) {\n case 400:\n if (errorData.errors !== undefined) {\n throw new ValidationError(message, errorData.errors)\n }\n throw new ApiError(message, 400, code, errorData)\n\n case 401:\n throw new AuthenticationError(message)\n\n case 403:\n throw new AuthorizationError(message)\n\n case 404:\n throw new NotFoundError(message)\n\n case 422:\n throw new ValidationError(message, errorData.errors ?? {})\n\n case 429: {\n const retryAfter = response.headers.get('Retry-After')\n throw new RateLimitError(\n message,\n retryAfter !== null ? parseInt(retryAfter, 10) : undefined\n )\n }\n\n default:\n throw new ApiError(message, response.status, code, errorData)\n }\n }\n}\n","/**\n * Base module for API modules\n */\n\nimport type { HttpClient, RequestOptions } from '../client.js'\n\n/**\n * Base class for all API modules\n */\nexport abstract class BaseModule {\n protected readonly client: HttpClient\n protected readonly basePath: string\n\n constructor(client: HttpClient, basePath: string) {\n this.client = client\n this.basePath = basePath\n }\n\n /**\n * Build the full path for an endpoint\n */\n protected path(segments: string | string[] = ''): string {\n if (Array.isArray(segments)) {\n return `${this.basePath}/${segments.join('/')}`\n }\n return segments.length > 0 ? `${this.basePath}/${segments}` : this.basePath\n }\n\n /**\n * Make a GET request\n */\n protected async get<T>(endpoint: string, options?: RequestOptions): Promise<T> {\n return this.client.get<T>(this.path(endpoint), options)\n }\n\n /**\n * Make a POST request\n */\n protected async post<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.post<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a PUT request\n */\n protected async put<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.put<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a PATCH request\n */\n protected async patch<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.patch<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a DELETE request\n */\n protected async delete<T>(endpoint: string, options?: RequestOptions): Promise<T> {\n return this.client.delete<T>(this.path(endpoint), options)\n }\n}\n","/**\n * Bank Accounts module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n BankAccount,\n CreateCaBankAccountRequest,\n CreateGbBankAccountRequest,\n CreateIbanBankAccountRequest,\n CreateOtherBankAccountRequest,\n CreateUsBankAccountRequest,\n IbanBankAccount,\n GbBankAccount,\n UsBankAccount,\n CaBankAccount,\n OtherBankAccount,\n} from '../types/bank-accounts.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\n\n/**\n * Bank Accounts API module (user-scoped)\n */\nexport class BankAccountsModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/bankaccounts`)\n }\n\n /**\n * Create an IBAN bank account\n */\n async createIban(data: CreateIbanBankAccountRequest): Promise<IbanBankAccount> {\n return this.post<IbanBankAccount>('iban', data)\n }\n\n /**\n * Create a GB bank account\n */\n async createGb(data: CreateGbBankAccountRequest): Promise<GbBankAccount> {\n return this.post<GbBankAccount>('gb', data)\n }\n\n /**\n * Create a US bank account\n */\n async createUs(data: CreateUsBankAccountRequest): Promise<UsBankAccount> {\n return this.post<UsBankAccount>('us', data)\n }\n\n /**\n * Create a CA bank account\n */\n async createCa(data: CreateCaBankAccountRequest): Promise<CaBankAccount> {\n return this.post<CaBankAccount>('ca', data)\n }\n\n /**\n * Create an Other bank account\n */\n async createOther(data: CreateOtherBankAccountRequest): Promise<OtherBankAccount> {\n return this.post<OtherBankAccount>('other', data)\n }\n\n /**\n * Get a bank account by ID\n */\n async getAccount(accountId: string): Promise<BankAccount> {\n return this.client.get<BankAccount>(this.path(accountId))\n }\n\n /**\n * List user's bank accounts\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<BankAccount>> {\n return this.client.get<PaginatedResponse<BankAccount>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Deactivate a bank account\n */\n async deactivate(accountId: string): Promise<BankAccount> {\n return this.put<BankAccount>(accountId, { Active: false })\n }\n}\n","/**\n * Cards module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n Card,\n CardRegistration,\n CreateCardRegistrationRequest,\n CreatePreauthorizationRequest,\n Preauthorization,\n UpdateCardRegistrationRequest,\n UpdateCardRequest,\n UpdatePreauthorizationRequest,\n} from '../types/cards.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\n\n/**\n * Card Registrations API module\n */\nexport class CardRegistrationsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/cardRegistrations')\n }\n\n /**\n * Create a card registration\n */\n async create(data: CreateCardRegistrationRequest): Promise<CardRegistration> {\n return this.post<CardRegistration>('', data)\n }\n\n /**\n * Get a card registration by ID\n */\n async getRegistration(registrationId: string): Promise<CardRegistration> {\n return this.client.get<CardRegistration>(this.path(registrationId))\n }\n\n /**\n * Update a card registration (complete registration process)\n */\n async update(\n registrationId: string,\n data: UpdateCardRegistrationRequest\n ): Promise<CardRegistration> {\n return this.put<CardRegistration>(registrationId, data)\n }\n}\n\n/**\n * Cards API module\n */\nexport class CardsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/cards')\n }\n\n /**\n * Get a card by ID\n */\n async getCard(cardId: string): Promise<Card> {\n return this.client.get<Card>(this.path(cardId))\n }\n\n /**\n * Deactivate a card\n */\n async deactivate(cardId: string): Promise<Card> {\n const data: UpdateCardRequest = { Active: false }\n return this.post<Card>(`${cardId}/desactivate`, data)\n }\n\n /**\n * Get card preauthorizations\n */\n async getPreauthorizations(\n cardId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<Preauthorization>> {\n return this.client.get<PaginatedResponse<Preauthorization>>(\n this.path([cardId, 'preauthorizations']),\n { params: params as Record<string, string | number | boolean | undefined | null> }\n )\n }\n}\n\n/**\n * Preauthorizations API module\n */\nexport class PreauthorizationsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/preauthorizations')\n }\n\n /**\n * Create a preauthorization\n */\n async create(data: CreatePreauthorizationRequest): Promise<Preauthorization> {\n return this.post<Preauthorization>('', data)\n }\n\n /**\n * Get a preauthorization by ID\n */\n async getPreauthorization(preauthorizationId: string): Promise<Preauthorization> {\n return this.client.get<Preauthorization>(this.path(preauthorizationId))\n }\n\n /**\n * Update a preauthorization (cancel)\n */\n async update(\n preauthorizationId: string,\n data: UpdatePreauthorizationRequest\n ): Promise<Preauthorization> {\n return this.put<Preauthorization>(preauthorizationId, data)\n }\n\n /**\n * Cancel a preauthorization\n */\n async cancel(preauthorizationId: string): Promise<Preauthorization> {\n return this.update(preauthorizationId, { PaymentStatus: 'CANCELED' })\n }\n}\n","/**\n * KYC module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type { CreateKycDocumentRequest, KycDocument } from '../types/kyc.js'\n\n/**\n * KYC Documents API module (user-scoped)\n */\nexport class KycModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/kyc/documents`)\n }\n\n /**\n * Create a KYC document\n */\n async create(data: CreateKycDocumentRequest): Promise<KycDocument> {\n return this.post<KycDocument>('', data)\n }\n\n /**\n * Get a KYC document by ID\n */\n async getDocument(documentId: string): Promise<KycDocument> {\n return this.client.get<KycDocument>(this.path(documentId))\n }\n\n /**\n * List user's KYC documents\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<KycDocument>> {\n return this.client.get<PaginatedResponse<KycDocument>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Create a KYC document page (upload file)\n */\n async createPage(documentId: string, fileBase64: string): Promise<void> {\n await this.post<undefined>(`${documentId}/pages`, { File: fileBase64 })\n }\n\n /**\n * Submit a KYC document for validation\n */\n async submit(documentId: string): Promise<KycDocument> {\n return this.put<KycDocument>(documentId, { Status: 'VALIDATION_ASKED' })\n }\n}\n","/**\n * Payins module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n CreateCardDirectPayinRequest,\n CreateRecurringCitPayinRequest,\n CreateRecurringMitPayinRequest,\n CreateRecurringPaymentRequest,\n CreateRefundRequest,\n Payin,\n RecurringPaymentRegistration,\n Refund,\n UpdateRecurringPaymentRequest,\n} from '../types/payins.js'\n\n/**\n * Payins API module\n */\nexport class PayinsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/payins')\n }\n\n /**\n * Create a card direct payin\n */\n async create(data: CreateCardDirectPayinRequest): Promise<Payin> {\n return this.post<Payin>('', data)\n }\n\n /**\n * Get a payin by ID\n */\n async getPayin(payinId: string): Promise<Payin> {\n return this.client.get<Payin>(this.path(payinId))\n }\n\n /**\n * Refund a payin\n */\n async refund(payinId: string, data: CreateRefundRequest): Promise<Refund> {\n return this.post<Refund>(`${payinId}/refund`, data)\n }\n\n /**\n * Create a recurring payment registration\n */\n async createRecurringPayment(\n data: CreateRecurringPaymentRequest\n ): Promise<RecurringPaymentRegistration> {\n return this.post<RecurringPaymentRegistration>('createRecurringPayment', data)\n }\n\n /**\n * View a recurring payment registration\n */\n async viewRecurringPayment(registrationId: string): Promise<RecurringPaymentRegistration> {\n return this.client.get<RecurringPaymentRegistration>(\n this.path(['viewRecurringPayment', registrationId])\n )\n }\n\n /**\n * Create a recurring CIT (Customer-Initiated Transaction) payin\n */\n async createRecurringCit(data: CreateRecurringCitPayinRequest): Promise<Payin> {\n return this.post<Payin>('createRecurringPayInRegistrationCIT', data)\n }\n\n /**\n * Create a recurring MIT (Merchant-Initiated Transaction) payin\n */\n async createRecurringMit(data: CreateRecurringMitPayinRequest): Promise<Payin> {\n return this.post<Payin>('createRecurringPayInRegistrationMIT', data)\n }\n\n /**\n * Update a recurring payment registration\n */\n async updateRecurringPayment(\n registrationId: string,\n data: UpdateRecurringPaymentRequest\n ): Promise<RecurringPaymentRegistration> {\n return this.put<RecurringPaymentRegistration>(`updateRecurringPayin/${registrationId}`, data)\n }\n\n /**\n * End a recurring payment registration\n */\n async endRecurringPayment(registrationId: string): Promise<RecurringPaymentRegistration> {\n return this.updateRecurringPayment(registrationId, { Status: 'ENDED' })\n }\n}\n","/**\n * Payouts module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { CreatePayoutRequest, Payout } from '../types/payouts.js'\n\n/**\n * Payouts API module\n */\nexport class PayoutsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/payouts')\n }\n\n /**\n * Create a payout\n */\n async create(data: CreatePayoutRequest): Promise<Payout> {\n return this.post<Payout>('', data)\n }\n\n /**\n * Get a payout by ID\n */\n async getPayout(payoutId: string): Promise<Payout> {\n return this.client.get<Payout>(this.path(payoutId))\n }\n}\n","/**\n * Portal module for FAM Payment Portal\n *\n * This module provides methods to create and manage portal sessions\n * that allow users to access the payment portal from client apps.\n *\n * @example\n * ```typescript\n * // Create a portal session for a MangoPay user\n * const session = await client.portal.createSession({\n * mangopayUserId: 'user_m_01HXK...',\n * returnUrl: 'https://myapp.com/dashboard',\n * })\n *\n * // Redirect user to portal\n * window.location.href = session.data.url\n * ```\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n CreatePortalSessionRequest,\n CreatePortalSessionResponse,\n GetPortalUserResponse,\n PortalLogoutResponse,\n RefreshPortalSessionResponse,\n ValidatePortalSessionRequest,\n ValidatePortalSessionResponse,\n} from '../types/portal.js'\n\n/**\n * Portal API module\n *\n * Provides methods for creating and managing portal sessions.\n * Portal sessions allow users to access the FAM payment portal\n * to manage their subscriptions, cards, and invoices.\n */\nexport class PortalModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/portal')\n }\n\n /**\n * Create a new portal session\n *\n * Creates a temporary session that allows the user to access\n * the payment portal. Returns a URL to redirect the user to.\n *\n * @param data - Session creation options\n * @returns Session details including the portal URL\n *\n * @example\n * ```typescript\n * const session = await client.portal.createSession({\n * mangopayUserId: 'user_m_01HXK...',\n * returnUrl: 'https://myapp.com/dashboard',\n * expiresInMinutes: 60,\n * })\n *\n * // Redirect user to portal\n * window.location.href = session.data.url\n * ```\n */\n async createSession(data: CreatePortalSessionRequest): Promise<CreatePortalSessionResponse> {\n return this.post<CreatePortalSessionResponse>('sessions', data)\n }\n\n /**\n * Validate a portal session token\n *\n * Called by the portal frontend to validate access and get\n * user + website configuration for theming.\n *\n * @param data - Token validation request\n * @returns Session details with user and website config\n *\n * @example\n * ```typescript\n * const result = await client.portal.validateSession({\n * token: 'session-token-from-url',\n * })\n *\n * if (result.valid) {\n * const { user, website } = result.data\n * // Apply website theming and show user info\n * }\n * ```\n */\n async validateSession(\n data: ValidatePortalSessionRequest\n ): Promise<ValidatePortalSessionResponse> {\n return this.post<ValidatePortalSessionResponse>('session/validate', data)\n }\n\n /**\n * Get current portal user\n *\n * Requires a valid session token in the X-Portal-Session header.\n * This is typically called by the portal frontend after validation.\n *\n * @param sessionToken - The portal session token\n * @returns User information\n *\n * @example\n * ```typescript\n * const user = await client.portal.getUser('session-token')\n * console.log(`Hello ${user.data.firstName}`)\n * ```\n */\n async getUser(sessionToken: string): Promise<GetPortalUserResponse> {\n return this.client.get<GetPortalUserResponse>(this.path('user'), {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n\n /**\n * Refresh portal session\n *\n * Extends the session expiration by 60 minutes.\n * Requires a valid session token in the X-Portal-Session header.\n *\n * @param sessionToken - The portal session token\n * @returns New expiration datetime\n *\n * @example\n * ```typescript\n * const result = await client.portal.refreshSession('session-token')\n * console.log(`Session extended until ${result.data.expiresAt}`)\n * ```\n */\n async refreshSession(sessionToken: string): Promise<RefreshPortalSessionResponse> {\n return this.client.post<RefreshPortalSessionResponse>(this.path('session/refresh'), undefined, {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n\n /**\n * Logout and invalidate portal session\n *\n * Invalidates the session token, preventing further access.\n *\n * @param sessionToken - The portal session token\n * @returns Logout confirmation\n *\n * @example\n * ```typescript\n * await client.portal.logout('session-token')\n * // Redirect to return URL or home\n * ```\n */\n async logout(sessionToken: string): Promise<PortalLogoutResponse> {\n return this.client.post<PortalLogoutResponse>(this.path('logout'), undefined, {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n}\n","/**\n * SCA Recipients module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type {\n CreateRecipientRequest,\n Recipient,\n RecipientSchema,\n RecipientSchemaRequest,\n} from '../types/recipients.js'\n\n/**\n * SCA Recipients API module (user-scoped)\n */\nexport class ScaRecipientsModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/recipients`)\n }\n\n /**\n * Create a recipient\n */\n async create(data: CreateRecipientRequest): Promise<Recipient> {\n return this.post<Recipient>('', data)\n }\n\n /**\n * Get a recipient by ID\n */\n async getRecipient(recipientId: string): Promise<Recipient> {\n return this.client.get<Recipient>(this.path(recipientId))\n }\n\n /**\n * List user's recipients\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<Recipient>> {\n return this.client.get<PaginatedResponse<Recipient>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get recipient schema (required fields for a specific payout method)\n */\n async getSchema(request: RecipientSchemaRequest): Promise<RecipientSchema> {\n return this.client.get<RecipientSchema>(this.path('schema'), {\n params: request as unknown as Record<string, string | number | boolean | undefined | null>,\n })\n }\n}\n","/**\n * Subscriptions module (FAM custom implementation)\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse } from '../types/common.js'\nimport type {\n MangopayUserSubscription,\n MangopayUserSubscriptionFilters,\n RecurringSubscription,\n RegisterSubscriptionRequest,\n SubscriptionListFilters,\n SubscriptionWithPayments,\n SyncSubscriptionResponse,\n UpdateSubscriptionRequest,\n} from '../types/subscriptions.js'\n\n/**\n * Recurring Subscriptions API module\n */\nexport class SubscriptionsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/recurring-subscriptions')\n }\n\n /**\n * Register a recurring subscription\n */\n async register(data: RegisterSubscriptionRequest): Promise<RecurringSubscription> {\n return this.post<RecurringSubscription>('', data)\n }\n\n /**\n * Get a subscription by ID (includes last 10 payments)\n */\n async getSubscription(subscriptionId: string): Promise<SubscriptionWithPayments> {\n return this.client.get<SubscriptionWithPayments>(this.path(subscriptionId))\n }\n\n /**\n * List subscriptions with filters\n */\n async list(filters?: SubscriptionListFilters): Promise<PaginatedResponse<RecurringSubscription>> {\n return this.client.get<PaginatedResponse<RecurringSubscription>>(this.path(''), {\n params: filters as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Update a subscription\n */\n async update(\n subscriptionId: string,\n data: UpdateSubscriptionRequest\n ): Promise<RecurringSubscription> {\n return this.put<RecurringSubscription>(subscriptionId, data)\n }\n\n /**\n * Sync subscription from Mangopay\n */\n async sync(subscriptionId: string): Promise<SyncSubscriptionResponse> {\n return this.post<SyncSubscriptionResponse>(`${subscriptionId}/sync`)\n }\n\n /**\n * Cancel a subscription\n */\n async cancel(subscriptionId: string): Promise<RecurringSubscription> {\n return this.post<RecurringSubscription>(`${subscriptionId}/cancel`)\n }\n\n /**\n * Enable subscription processing\n */\n async enable(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { processingEnabled: true })\n }\n\n /**\n * Disable subscription processing\n */\n async disable(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { processingEnabled: false })\n }\n\n /**\n * Enable webhook notifications\n */\n async enableWebhooks(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { webhookNotificationEnabled: true })\n }\n\n /**\n * Disable webhook notifications\n */\n async disableWebhooks(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { webhookNotificationEnabled: false })\n }\n\n /**\n * List subscriptions for a MangoPay user\n * Useful for retrieving all subscriptions associated with a specific MangoPay user ID\n *\n * @param mangopayUserId - The MangoPay user ID\n * @param filters - Optional filters (subscriptionType, activeOnly)\n */\n async listByMangopayUser(\n mangopayUserId: string,\n filters?: MangopayUserSubscriptionFilters\n ): Promise<{ success: boolean; subscriptions: MangopayUserSubscription[] }> {\n const params: Record<string, string | boolean | undefined> = {}\n if (filters?.subscriptionType !== undefined && filters.subscriptionType !== '') {\n params['subscriptionType'] = filters.subscriptionType\n }\n if (filters?.activeOnly !== undefined) {\n params['activeOnly'] = String(filters.activeOnly)\n }\n\n return this.client.get<{ success: boolean; subscriptions: MangopayUserSubscription[] }>(\n this.path(`user/${mangopayUserId}`),\n { params }\n )\n }\n}\n","/**\n * Transfers module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { Refund } from '../types/payins.js'\nimport type {\n CreateScaTransferRequest,\n CreateTransferRefundRequest,\n CreateTransferRequest,\n Transfer,\n} from '../types/transfers.js'\n\n/**\n * Transfers API module\n */\nexport class TransfersModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/transfers')\n }\n\n /**\n * Create a transfer\n */\n async create(data: CreateTransferRequest): Promise<Transfer> {\n return this.post<Transfer>('', data)\n }\n\n /**\n * Create an SCA transfer\n */\n async createSca(data: CreateScaTransferRequest): Promise<Transfer> {\n return this.post<Transfer>('sca', data)\n }\n\n /**\n * Get a transfer by ID\n */\n async getTransfer(transferId: string): Promise<Transfer> {\n return this.client.get<Transfer>(this.path(transferId))\n }\n\n /**\n * Get an SCA transfer by ID\n */\n async getSca(transferId: string): Promise<Transfer> {\n return this.client.get<Transfer>(this.path(['sca', transferId]))\n }\n\n /**\n * Refund a transfer\n */\n async refund(transferId: string, data: CreateTransferRefundRequest): Promise<Refund> {\n return this.post<Refund>(`${transferId}/refund`, data)\n }\n}\n","/**\n * UBO module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { CreateUboRequest, Ubo, UboDeclaration, UpdateUboRequest } from '../types/ubo.js'\n\n/**\n * UBO Declarations API module (user-scoped)\n */\nexport class UboModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/kyc/ubodeclarations`)\n }\n\n /**\n * Create a UBO declaration\n */\n async createDeclaration(): Promise<UboDeclaration> {\n return this.post<UboDeclaration>('')\n }\n\n /**\n * Get a UBO declaration by ID\n */\n async getDeclaration(declarationId: string): Promise<UboDeclaration> {\n return this.client.get<UboDeclaration>(this.path(declarationId))\n }\n\n /**\n * Create a UBO (Ultimate Beneficial Owner)\n */\n async createUbo(declarationId: string, data: CreateUboRequest): Promise<Ubo> {\n return this.post<Ubo>(`${declarationId}/ubos`, data)\n }\n\n /**\n * Update a UBO\n */\n async updateUbo(declarationId: string, uboId: string, data: UpdateUboRequest): Promise<Ubo> {\n return this.put<Ubo>(`${declarationId}/ubos/${uboId}`, data)\n }\n\n /**\n * Submit a UBO declaration for validation\n */\n async submit(declarationId: string): Promise<UboDeclaration> {\n return this.put<UboDeclaration>(declarationId, { Status: 'VALIDATION_ASKED' })\n }\n}\n","/**\n * Users module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { BankAccount } from '../types/bank-accounts.js'\nimport type { Card } from '../types/cards.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type {\n CreateLegalUserRequest,\n CreateNaturalUserRequest,\n LegalUser,\n NaturalUser,\n UpdateLegalUserRequest,\n UpdateNaturalUserRequest,\n User,\n} from '../types/users.js'\nimport type { Wallet } from '../types/wallets.js'\n\n/**\n * Transaction list item (simplified for user transactions)\n */\ninterface Transaction {\n Id: string\n Tag?: string\n CreationDate: number\n AuthorId: string\n Type: string\n Nature: string\n Status: string\n DebitedFunds: { Amount: number; Currency: string }\n CreditedFunds: { Amount: number; Currency: string }\n Fees: { Amount: number; Currency: string }\n}\n\n/**\n * Users API module\n */\nexport class UsersModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/users')\n }\n\n /**\n * Create a natural user\n */\n async createNatural(data: CreateNaturalUserRequest): Promise<NaturalUser> {\n return this.post<NaturalUser>('natural', data)\n }\n\n /**\n * Create a legal user\n */\n async createLegal(data: CreateLegalUserRequest): Promise<LegalUser> {\n return this.post<LegalUser>('legal', data)\n }\n\n /**\n * Get a user by ID\n */\n async getUser(userId: string): Promise<User> {\n return this.client.get<User>(this.path(userId))\n }\n\n /**\n * Get a natural user by ID\n */\n async getNaturalUser(userId: string): Promise<NaturalUser> {\n return this.client.get<NaturalUser>(this.path(['natural', userId]))\n }\n\n /**\n * Get a legal user by ID\n */\n async getLegalUser(userId: string): Promise<LegalUser> {\n return this.client.get<LegalUser>(this.path(['legal', userId]))\n }\n\n /**\n * Update a natural user\n */\n async updateNatural(userId: string, data: UpdateNaturalUserRequest): Promise<NaturalUser> {\n return this.put<NaturalUser>(`natural/${userId}`, data)\n }\n\n /**\n * Update a legal user\n */\n async updateLegal(userId: string, data: UpdateLegalUserRequest): Promise<LegalUser> {\n return this.put<LegalUser>(`legal/${userId}`, data)\n }\n\n /**\n * Get user's wallets\n */\n async getWallets(userId: string, params?: PaginationParams): Promise<PaginatedResponse<Wallet>> {\n return this.client.get<PaginatedResponse<Wallet>>(this.path([userId, 'wallets']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's cards\n */\n async getCards(userId: string, params?: PaginationParams): Promise<PaginatedResponse<Card>> {\n return this.client.get<PaginatedResponse<Card>>(this.path([userId, 'cards']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's bank accounts\n */\n async getBankAccounts(\n userId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<BankAccount>> {\n return this.client.get<PaginatedResponse<BankAccount>>(this.path([userId, 'bankaccounts']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's transactions\n */\n async getTransactions(\n userId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<Transaction>> {\n return this.client.get<PaginatedResponse<Transaction>>(this.path([userId, 'transactions']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n}\n","/**\n * Wallets module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type { CreateWalletRequest, UpdateWalletRequest, Wallet } from '../types/wallets.js'\n\n/**\n * Wallet transaction item\n */\ninterface WalletTransaction {\n Id: string\n Tag?: string\n CreationDate: number\n AuthorId: string\n Type: string\n Nature: string\n Status: string\n DebitedFunds: { Amount: number; Currency: string }\n CreditedFunds: { Amount: number; Currency: string }\n Fees: { Amount: number; Currency: string }\n DebitedWalletId?: string\n CreditedWalletId?: string\n}\n\n/**\n * Wallets API module\n */\nexport class WalletsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/wallets')\n }\n\n /**\n * Create a wallet\n */\n async create(data: CreateWalletRequest): Promise<Wallet> {\n return this.post<Wallet>('', data)\n }\n\n /**\n * Get a wallet by ID\n */\n async getWallet(walletId: string): Promise<Wallet> {\n return this.client.get<Wallet>(this.path(walletId))\n }\n\n /**\n * Update a wallet\n */\n async update(walletId: string, data: UpdateWalletRequest): Promise<Wallet> {\n return this.put<Wallet>(walletId, data)\n }\n\n /**\n * Get wallet transactions\n */\n async getTransactions(\n walletId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<WalletTransaction>> {\n return this.client.get<PaginatedResponse<WalletTransaction>>(\n this.path([walletId, 'transactions']),\n { params: params as Record<string, string | number | boolean | undefined | null> }\n )\n }\n}\n","/**\n * Main SDK client class\n */\n\nimport { HttpClient } from './client.js'\nimport {\n BankAccountsModule,\n CardRegistrationsModule,\n CardsModule,\n KycModule,\n PayinsModule,\n PayoutsModule,\n PortalModule,\n PreauthorizationsModule,\n ScaRecipientsModule,\n SubscriptionsModule,\n TransfersModule,\n UboModule,\n UsersModule,\n WalletsModule,\n} from './modules/index.js'\nimport type { FamOptions } from './client.js'\n\n/**\n * Main FAM SDK client\n *\n * @example\n * ```typescript\n * const client = new Fam({\n * baseUrl: 'https://api.fam.com',\n * token: 'your-auth-token',\n * })\n *\n * // Create a natural user\n * const user = await client.users.createNatural({\n * Email: 'user@example.com',\n * FirstName: 'John',\n * LastName: 'Doe',\n * })\n *\n * // Create a wallet\n * const wallet = await client.wallets.create({\n * Owners: [user.Id],\n * Description: 'Main wallet',\n * Currency: 'EUR',\n * })\n * ```\n */\nexport class Fam {\n private readonly client: HttpClient\n\n // Core modules\n public readonly users: UsersModule\n public readonly wallets: WalletsModule\n public readonly payins: PayinsModule\n public readonly payouts: PayoutsModule\n public readonly transfers: TransfersModule\n\n // Card modules\n public readonly cards: CardsModule\n public readonly cardRegistrations: CardRegistrationsModule\n public readonly preauthorizations: PreauthorizationsModule\n\n // FAM custom modules\n public readonly subscriptions: SubscriptionsModule\n public readonly portal: PortalModule\n\n constructor(options: FamOptions) {\n this.client = new HttpClient(options)\n\n // Initialize core modules\n this.users = new UsersModule(this.client)\n this.wallets = new WalletsModule(this.client)\n this.payins = new PayinsModule(this.client)\n this.payouts = new PayoutsModule(this.client)\n this.transfers = new TransfersModule(this.client)\n\n // Initialize card modules\n this.cards = new CardsModule(this.client)\n this.cardRegistrations = new CardRegistrationsModule(this.client)\n this.preauthorizations = new PreauthorizationsModule(this.client)\n\n // Initialize FAM custom modules\n this.subscriptions = new SubscriptionsModule(this.client)\n this.portal = new PortalModule(this.client)\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string): void {\n this.client.setToken(token)\n }\n\n /**\n * Clear the authentication token\n */\n clearToken(): void {\n this.client.clearToken()\n }\n\n /**\n * Get bank accounts module for a specific user\n */\n bankAccounts(userId: string): BankAccountsModule {\n return new BankAccountsModule(this.client, userId)\n }\n\n /**\n * Get KYC module for a specific user\n */\n kyc(userId: string): KycModule {\n return new KycModule(this.client, userId)\n }\n\n /**\n * Get UBO module for a specific user\n */\n ubo(userId: string): UboModule {\n return new UboModule(this.client, userId)\n }\n\n /**\n * Get SCA Recipients module for a specific user\n */\n scaRecipients(userId: string): ScaRecipientsModule {\n return new ScaRecipientsModule(this.client, userId)\n }\n}\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1556,6 +1556,35 @@ interface SubscriptionListFilters extends PaginationParams {
|
|
|
1556
1556
|
status?: SubscriptionStatus;
|
|
1557
1557
|
frequency?: SubscriptionFrequency;
|
|
1558
1558
|
}
|
|
1559
|
+
/**
|
|
1560
|
+
* Filters for listing subscriptions by MangoPay user ID
|
|
1561
|
+
*/
|
|
1562
|
+
interface MangopayUserSubscriptionFilters {
|
|
1563
|
+
subscriptionType?: string;
|
|
1564
|
+
activeOnly?: boolean;
|
|
1565
|
+
}
|
|
1566
|
+
/**
|
|
1567
|
+
* Subscription returned by the byMangopayUser endpoint
|
|
1568
|
+
*/
|
|
1569
|
+
interface MangopayUserSubscription {
|
|
1570
|
+
id: string;
|
|
1571
|
+
registrationId: string;
|
|
1572
|
+
mangopayUserId: string;
|
|
1573
|
+
externalUserId: string;
|
|
1574
|
+
externalSubscriptionId: string;
|
|
1575
|
+
subscriptionName: string | null;
|
|
1576
|
+
subscriptionType: string | null;
|
|
1577
|
+
billingPeriod: string | null;
|
|
1578
|
+
status: string;
|
|
1579
|
+
amount: number;
|
|
1580
|
+
currency: Currency;
|
|
1581
|
+
frequency: SubscriptionFrequency;
|
|
1582
|
+
processingEnabled: boolean;
|
|
1583
|
+
nextProcessingAt: string | null;
|
|
1584
|
+
metadata: Record<string, unknown> | null;
|
|
1585
|
+
createdAt: string;
|
|
1586
|
+
updatedAt: string;
|
|
1587
|
+
}
|
|
1559
1588
|
/**
|
|
1560
1589
|
* Sync subscription response
|
|
1561
1590
|
*/
|
|
@@ -1614,6 +1643,17 @@ declare class SubscriptionsModule extends BaseModule {
|
|
|
1614
1643
|
* Disable webhook notifications
|
|
1615
1644
|
*/
|
|
1616
1645
|
disableWebhooks(subscriptionId: string): Promise<RecurringSubscription>;
|
|
1646
|
+
/**
|
|
1647
|
+
* List subscriptions for a MangoPay user
|
|
1648
|
+
* Useful for retrieving all subscriptions associated with a specific MangoPay user ID
|
|
1649
|
+
*
|
|
1650
|
+
* @param mangopayUserId - The MangoPay user ID
|
|
1651
|
+
* @param filters - Optional filters (subscriptionType, activeOnly)
|
|
1652
|
+
*/
|
|
1653
|
+
listByMangopayUser(mangopayUserId: string, filters?: MangopayUserSubscriptionFilters): Promise<{
|
|
1654
|
+
success: boolean;
|
|
1655
|
+
subscriptions: MangopayUserSubscription[];
|
|
1656
|
+
}>;
|
|
1617
1657
|
}
|
|
1618
1658
|
|
|
1619
1659
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -1556,6 +1556,35 @@ interface SubscriptionListFilters extends PaginationParams {
|
|
|
1556
1556
|
status?: SubscriptionStatus;
|
|
1557
1557
|
frequency?: SubscriptionFrequency;
|
|
1558
1558
|
}
|
|
1559
|
+
/**
|
|
1560
|
+
* Filters for listing subscriptions by MangoPay user ID
|
|
1561
|
+
*/
|
|
1562
|
+
interface MangopayUserSubscriptionFilters {
|
|
1563
|
+
subscriptionType?: string;
|
|
1564
|
+
activeOnly?: boolean;
|
|
1565
|
+
}
|
|
1566
|
+
/**
|
|
1567
|
+
* Subscription returned by the byMangopayUser endpoint
|
|
1568
|
+
*/
|
|
1569
|
+
interface MangopayUserSubscription {
|
|
1570
|
+
id: string;
|
|
1571
|
+
registrationId: string;
|
|
1572
|
+
mangopayUserId: string;
|
|
1573
|
+
externalUserId: string;
|
|
1574
|
+
externalSubscriptionId: string;
|
|
1575
|
+
subscriptionName: string | null;
|
|
1576
|
+
subscriptionType: string | null;
|
|
1577
|
+
billingPeriod: string | null;
|
|
1578
|
+
status: string;
|
|
1579
|
+
amount: number;
|
|
1580
|
+
currency: Currency;
|
|
1581
|
+
frequency: SubscriptionFrequency;
|
|
1582
|
+
processingEnabled: boolean;
|
|
1583
|
+
nextProcessingAt: string | null;
|
|
1584
|
+
metadata: Record<string, unknown> | null;
|
|
1585
|
+
createdAt: string;
|
|
1586
|
+
updatedAt: string;
|
|
1587
|
+
}
|
|
1559
1588
|
/**
|
|
1560
1589
|
* Sync subscription response
|
|
1561
1590
|
*/
|
|
@@ -1614,6 +1643,17 @@ declare class SubscriptionsModule extends BaseModule {
|
|
|
1614
1643
|
* Disable webhook notifications
|
|
1615
1644
|
*/
|
|
1616
1645
|
disableWebhooks(subscriptionId: string): Promise<RecurringSubscription>;
|
|
1646
|
+
/**
|
|
1647
|
+
* List subscriptions for a MangoPay user
|
|
1648
|
+
* Useful for retrieving all subscriptions associated with a specific MangoPay user ID
|
|
1649
|
+
*
|
|
1650
|
+
* @param mangopayUserId - The MangoPay user ID
|
|
1651
|
+
* @param filters - Optional filters (subscriptionType, activeOnly)
|
|
1652
|
+
*/
|
|
1653
|
+
listByMangopayUser(mangopayUserId: string, filters?: MangopayUserSubscriptionFilters): Promise<{
|
|
1654
|
+
success: boolean;
|
|
1655
|
+
subscriptions: MangopayUserSubscription[];
|
|
1656
|
+
}>;
|
|
1617
1657
|
}
|
|
1618
1658
|
|
|
1619
1659
|
/**
|
package/dist/index.js
CHANGED
|
@@ -836,6 +836,26 @@ var SubscriptionsModule = class extends BaseModule {
|
|
|
836
836
|
async disableWebhooks(subscriptionId) {
|
|
837
837
|
return this.update(subscriptionId, { webhookNotificationEnabled: false });
|
|
838
838
|
}
|
|
839
|
+
/**
|
|
840
|
+
* List subscriptions for a MangoPay user
|
|
841
|
+
* Useful for retrieving all subscriptions associated with a specific MangoPay user ID
|
|
842
|
+
*
|
|
843
|
+
* @param mangopayUserId - The MangoPay user ID
|
|
844
|
+
* @param filters - Optional filters (subscriptionType, activeOnly)
|
|
845
|
+
*/
|
|
846
|
+
async listByMangopayUser(mangopayUserId, filters) {
|
|
847
|
+
const params = {};
|
|
848
|
+
if (filters?.subscriptionType !== void 0 && filters.subscriptionType !== "") {
|
|
849
|
+
params["subscriptionType"] = filters.subscriptionType;
|
|
850
|
+
}
|
|
851
|
+
if (filters?.activeOnly !== void 0) {
|
|
852
|
+
params["activeOnly"] = String(filters.activeOnly);
|
|
853
|
+
}
|
|
854
|
+
return this.client.get(
|
|
855
|
+
this.path(`user/${mangopayUserId}`),
|
|
856
|
+
{ params }
|
|
857
|
+
);
|
|
858
|
+
}
|
|
839
859
|
};
|
|
840
860
|
|
|
841
861
|
// src/modules/transfers.ts
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors/index.ts","../src/utils/index.ts","../src/client.ts","../src/modules/base.ts","../src/modules/bank-accounts.ts","../src/modules/cards.ts","../src/modules/kyc.ts","../src/modules/payins.ts","../src/modules/payouts.ts","../src/modules/portal.ts","../src/modules/recipients.ts","../src/modules/subscriptions.ts","../src/modules/transfers.ts","../src/modules/ubo.ts","../src/modules/users.ts","../src/modules/wallets.ts","../src/fam.ts"],"names":["response"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Base error class for all SDK errors\n */\nexport class FamError extends Error {\n public override readonly name: string = 'FamError'\n\n constructor(message: string) {\n super(message)\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\n/**\n * API error with status code and response details\n */\nexport class ApiError extends FamError {\n public override readonly name: string = 'ApiError'\n public readonly statusCode: number\n public readonly code: string | undefined\n public readonly details: unknown\n\n constructor(message: string, statusCode: number, code?: string, details?: unknown) {\n super(message)\n this.statusCode = statusCode\n this.code = code\n this.details = details\n }\n}\n\n/**\n * Authentication error (401)\n */\nexport class AuthenticationError extends ApiError {\n public override readonly name: string = 'AuthenticationError'\n\n constructor(message = 'Authentication failed') {\n super(message, 401, 'AUTHENTICATION_ERROR')\n }\n}\n\n/**\n * Authorization error (403)\n */\nexport class AuthorizationError extends ApiError {\n public override readonly name: string = 'AuthorizationError'\n\n constructor(message = 'Access denied') {\n super(message, 403, 'AUTHORIZATION_ERROR')\n }\n}\n\n/**\n * Resource not found error (404)\n */\nexport class NotFoundError extends ApiError {\n public override readonly name: string = 'NotFoundError'\n\n constructor(message = 'Resource not found') {\n super(message, 404, 'NOT_FOUND')\n }\n}\n\n/**\n * Validation error with field-level details (400/422)\n */\nexport class ValidationError extends ApiError {\n public override readonly name: string = 'ValidationError'\n public readonly errors: Record<string, string[]>\n\n constructor(message: string, errors: Record<string, string[]> = {}) {\n super(message, 422, 'VALIDATION_ERROR', errors)\n this.errors = errors\n }\n}\n\n/**\n * Rate limit error (429)\n */\nexport class RateLimitError extends ApiError {\n public override readonly name: string = 'RateLimitError'\n public readonly retryAfter: number | undefined\n\n constructor(message = 'Rate limit exceeded', retryAfter?: number) {\n super(message, 429, 'RATE_LIMIT_ERROR')\n this.retryAfter = retryAfter\n }\n}\n\n/**\n * Network error for connection issues\n */\nexport class NetworkError extends FamError {\n public override readonly name: string = 'NetworkError'\n public readonly originalError: Error | undefined\n\n constructor(message: string, originalError?: Error) {\n super(message)\n this.originalError = originalError\n }\n}\n\n/**\n * Timeout error\n */\nexport class TimeoutError extends NetworkError {\n public override readonly name: string = 'TimeoutError'\n\n constructor(message = 'Request timeout', originalError?: Error) {\n super(message, originalError)\n }\n}\n\n/**\n * Webhook signature verification error\n */\nexport class WebhookSignatureError extends FamError {\n public override readonly name: string = 'WebhookSignatureError'\n\n constructor(message = 'Invalid webhook signature') {\n super(message)\n }\n}\n","/**\n * Check if running in browser environment\n */\nexport function isBrowser(): boolean {\n const global = globalThis as unknown as { window?: { document?: unknown } }\n return typeof global.window?.document !== 'undefined'\n}\n\n/**\n * Check if running in Node.js environment\n */\nexport function isNode(): boolean {\n const global = globalThis as unknown as { process?: { versions?: { node?: string } } }\n return typeof global.process?.versions?.node !== 'undefined'\n}\n\n/**\n * Sleep for a given number of milliseconds\n */\nexport async function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Retry a function with exponential backoff\n */\nexport async function retry<T>(\n fn: () => Promise<T>,\n options: {\n maxRetries?: number\n baseDelay?: number\n maxDelay?: number\n shouldRetry?: (error: unknown) => boolean\n } = {}\n): Promise<T> {\n const {\n maxRetries = 3,\n baseDelay = 1000,\n maxDelay = 30000,\n shouldRetry = (): boolean => true,\n } = options\n\n let lastError: unknown\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn()\n } catch (error) {\n lastError = error\n\n if (attempt === maxRetries || !shouldRetry(error)) {\n throw error\n }\n\n const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay)\n await sleep(delay)\n }\n }\n\n throw lastError\n}\n\n/**\n * Build URL with query parameters\n */\nexport function buildUrl(\n baseUrl: string,\n path: string,\n params?: Record<string, string | number | boolean | undefined | null>\n): string {\n const url = new URL(path, baseUrl)\n\n if (params !== undefined) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value))\n }\n }\n }\n\n return url.toString()\n}\n\n/**\n * Deep merge two objects\n */\nexport function deepMerge<T extends Record<string, unknown>>(target: T, source: Partial<T>): T {\n const result = { ...target }\n\n for (const key of Object.keys(source) as (keyof T)[]) {\n const sourceValue = source[key]\n const targetValue = result[key]\n\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\n result[key] = deepMerge(\n targetValue as Record<string, unknown>,\n sourceValue as Record<string, unknown>\n ) as T[keyof T]\n } else if (sourceValue !== undefined) {\n result[key] = sourceValue as T[keyof T]\n }\n }\n\n return result\n}\n\n/**\n * Check if value is a plain object\n */\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && value.constructor === Object\n}\n\n/**\n * Format amount from cents to currency string\n */\nexport function formatAmount(amountInCents: number, currency = 'EUR'): string {\n return new Intl.NumberFormat('fr-FR', {\n style: 'currency',\n currency,\n }).format(amountInCents / 100)\n}\n\n/**\n * Parse amount from currency string to cents\n */\nexport function parseAmount(amount: number): number {\n return Math.round(amount * 100)\n}\n","import {\n ApiError,\n AuthenticationError,\n AuthorizationError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n TimeoutError,\n ValidationError,\n} from './errors/index.js'\nimport { buildUrl, retry } from './utils/index.js'\n\n/**\n * SDK configuration options\n */\nexport interface FamOptions {\n /** Base URL of the API */\n baseUrl: string\n /** Authentication token */\n token?: string\n /** Request timeout in milliseconds */\n timeout?: number\n /** Number of retries on network errors */\n retries?: number\n /** Custom headers to include in all requests */\n headers?: Record<string, string>\n}\n\n/**\n * Request options for individual API calls\n */\nexport interface RequestOptions {\n /** Query parameters */\n params?: Record<string, string | number | boolean | undefined | null>\n /** Request headers */\n headers?: Record<string, string>\n /** Request timeout override */\n timeout?: number\n /** Skip retry logic */\n skipRetry?: boolean\n}\n\n/**\n * API response structure\n */\ninterface ApiResponse<T> {\n data: T\n status: number\n headers: Headers\n}\n\n/**\n * Error response from the API\n */\ninterface ErrorResponse {\n message?: string\n error?: string\n errors?: Record<string, string[]>\n code?: string\n}\n\n/**\n * HTTP client for making API requests\n */\nexport class HttpClient {\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly retries: number\n private readonly defaultHeaders: Record<string, string>\n private token: string | undefined\n\n constructor(options: FamOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n this.token = options.token\n this.timeout = options.timeout ?? 30000\n this.retries = options.retries ?? 3\n this.defaultHeaders = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...options.headers,\n }\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string): void {\n this.token = token\n }\n\n /**\n * Clear the authentication token\n */\n clearToken(): void {\n this.token = undefined\n }\n\n /**\n * Make a GET request\n */\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('GET', path, undefined, options)\n }\n\n /**\n * Make a POST request\n */\n async post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('POST', path, body, options)\n }\n\n /**\n * Make a PUT request\n */\n async put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PUT', path, body, options)\n }\n\n /**\n * Make a PATCH request\n */\n async patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PATCH', path, body, options)\n }\n\n /**\n * Make a DELETE request\n */\n async delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('DELETE', path, undefined, options)\n }\n\n /**\n * Make an HTTP request\n */\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n options?: RequestOptions\n ): Promise<T> {\n const url = buildUrl(this.baseUrl, path, options?.params)\n const timeout = options?.timeout ?? this.timeout\n const headers = this.buildHeaders(options?.headers)\n\n const makeRequest = async (): Promise<ApiResponse<T>> => {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => {\n controller.abort()\n }, timeout)\n\n try {\n const fetchOptions: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n }\n\n if (body !== undefined) {\n fetchOptions.body = JSON.stringify(body)\n }\n\n const response = await fetch(url, fetchOptions)\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n await this.handleErrorResponse(response)\n }\n\n const data = (await response.json()) as T\n\n return {\n data,\n status: response.status,\n headers: response.headers,\n }\n } catch (error) {\n clearTimeout(timeoutId)\n\n if (error instanceof Error && error.name === 'AbortError') {\n throw new TimeoutError(`Request timeout after ${String(timeout)}ms`)\n }\n\n if (error instanceof ApiError) {\n throw error\n }\n\n throw new NetworkError(\n error instanceof Error ? error.message : 'Network request failed',\n error instanceof Error ? error : undefined\n )\n }\n }\n\n if (options?.skipRetry === true) {\n const response = await makeRequest()\n return response.data\n }\n\n const response = await retry(makeRequest, {\n maxRetries: this.retries,\n shouldRetry: (error): boolean => {\n if (error instanceof NetworkError || error instanceof TimeoutError) {\n return true\n }\n if (error instanceof RateLimitError) {\n return true\n }\n if (error instanceof ApiError && error.statusCode >= 500) {\n return true\n }\n return false\n },\n })\n\n return response.data\n }\n\n /**\n * Build request headers\n */\n private buildHeaders(customHeaders?: Record<string, string>): Record<string, string> {\n const headers: Record<string, string> = { ...this.defaultHeaders }\n\n if (this.token !== undefined) {\n headers['Authorization'] = `Bearer ${this.token}`\n }\n\n if (customHeaders !== undefined) {\n Object.assign(headers, customHeaders)\n }\n\n return headers\n }\n\n /**\n * Handle error responses from the API\n */\n private async handleErrorResponse(response: Response): Promise<never> {\n let errorData: ErrorResponse = {}\n\n try {\n errorData = (await response.json()) as ErrorResponse\n } catch {\n // Response body is not JSON\n }\n\n const message = errorData.message ?? errorData.error ?? response.statusText\n const code = errorData.code\n\n switch (response.status) {\n case 400:\n if (errorData.errors !== undefined) {\n throw new ValidationError(message, errorData.errors)\n }\n throw new ApiError(message, 400, code, errorData)\n\n case 401:\n throw new AuthenticationError(message)\n\n case 403:\n throw new AuthorizationError(message)\n\n case 404:\n throw new NotFoundError(message)\n\n case 422:\n throw new ValidationError(message, errorData.errors ?? {})\n\n case 429: {\n const retryAfter = response.headers.get('Retry-After')\n throw new RateLimitError(\n message,\n retryAfter !== null ? parseInt(retryAfter, 10) : undefined\n )\n }\n\n default:\n throw new ApiError(message, response.status, code, errorData)\n }\n }\n}\n","/**\n * Base module for API modules\n */\n\nimport type { HttpClient, RequestOptions } from '../client.js'\n\n/**\n * Base class for all API modules\n */\nexport abstract class BaseModule {\n protected readonly client: HttpClient\n protected readonly basePath: string\n\n constructor(client: HttpClient, basePath: string) {\n this.client = client\n this.basePath = basePath\n }\n\n /**\n * Build the full path for an endpoint\n */\n protected path(segments: string | string[] = ''): string {\n if (Array.isArray(segments)) {\n return `${this.basePath}/${segments.join('/')}`\n }\n return segments.length > 0 ? `${this.basePath}/${segments}` : this.basePath\n }\n\n /**\n * Make a GET request\n */\n protected async get<T>(endpoint: string, options?: RequestOptions): Promise<T> {\n return this.client.get<T>(this.path(endpoint), options)\n }\n\n /**\n * Make a POST request\n */\n protected async post<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.post<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a PUT request\n */\n protected async put<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.put<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a PATCH request\n */\n protected async patch<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.patch<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a DELETE request\n */\n protected async delete<T>(endpoint: string, options?: RequestOptions): Promise<T> {\n return this.client.delete<T>(this.path(endpoint), options)\n }\n}\n","/**\n * Bank Accounts module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n BankAccount,\n CreateCaBankAccountRequest,\n CreateGbBankAccountRequest,\n CreateIbanBankAccountRequest,\n CreateOtherBankAccountRequest,\n CreateUsBankAccountRequest,\n IbanBankAccount,\n GbBankAccount,\n UsBankAccount,\n CaBankAccount,\n OtherBankAccount,\n} from '../types/bank-accounts.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\n\n/**\n * Bank Accounts API module (user-scoped)\n */\nexport class BankAccountsModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/bankaccounts`)\n }\n\n /**\n * Create an IBAN bank account\n */\n async createIban(data: CreateIbanBankAccountRequest): Promise<IbanBankAccount> {\n return this.post<IbanBankAccount>('iban', data)\n }\n\n /**\n * Create a GB bank account\n */\n async createGb(data: CreateGbBankAccountRequest): Promise<GbBankAccount> {\n return this.post<GbBankAccount>('gb', data)\n }\n\n /**\n * Create a US bank account\n */\n async createUs(data: CreateUsBankAccountRequest): Promise<UsBankAccount> {\n return this.post<UsBankAccount>('us', data)\n }\n\n /**\n * Create a CA bank account\n */\n async createCa(data: CreateCaBankAccountRequest): Promise<CaBankAccount> {\n return this.post<CaBankAccount>('ca', data)\n }\n\n /**\n * Create an Other bank account\n */\n async createOther(data: CreateOtherBankAccountRequest): Promise<OtherBankAccount> {\n return this.post<OtherBankAccount>('other', data)\n }\n\n /**\n * Get a bank account by ID\n */\n async getAccount(accountId: string): Promise<BankAccount> {\n return this.client.get<BankAccount>(this.path(accountId))\n }\n\n /**\n * List user's bank accounts\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<BankAccount>> {\n return this.client.get<PaginatedResponse<BankAccount>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Deactivate a bank account\n */\n async deactivate(accountId: string): Promise<BankAccount> {\n return this.put<BankAccount>(accountId, { Active: false })\n }\n}\n","/**\n * Cards module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n Card,\n CardRegistration,\n CreateCardRegistrationRequest,\n CreatePreauthorizationRequest,\n Preauthorization,\n UpdateCardRegistrationRequest,\n UpdateCardRequest,\n UpdatePreauthorizationRequest,\n} from '../types/cards.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\n\n/**\n * Card Registrations API module\n */\nexport class CardRegistrationsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/cardRegistrations')\n }\n\n /**\n * Create a card registration\n */\n async create(data: CreateCardRegistrationRequest): Promise<CardRegistration> {\n return this.post<CardRegistration>('', data)\n }\n\n /**\n * Get a card registration by ID\n */\n async getRegistration(registrationId: string): Promise<CardRegistration> {\n return this.client.get<CardRegistration>(this.path(registrationId))\n }\n\n /**\n * Update a card registration (complete registration process)\n */\n async update(\n registrationId: string,\n data: UpdateCardRegistrationRequest\n ): Promise<CardRegistration> {\n return this.put<CardRegistration>(registrationId, data)\n }\n}\n\n/**\n * Cards API module\n */\nexport class CardsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/cards')\n }\n\n /**\n * Get a card by ID\n */\n async getCard(cardId: string): Promise<Card> {\n return this.client.get<Card>(this.path(cardId))\n }\n\n /**\n * Deactivate a card\n */\n async deactivate(cardId: string): Promise<Card> {\n const data: UpdateCardRequest = { Active: false }\n return this.post<Card>(`${cardId}/desactivate`, data)\n }\n\n /**\n * Get card preauthorizations\n */\n async getPreauthorizations(\n cardId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<Preauthorization>> {\n return this.client.get<PaginatedResponse<Preauthorization>>(\n this.path([cardId, 'preauthorizations']),\n { params: params as Record<string, string | number | boolean | undefined | null> }\n )\n }\n}\n\n/**\n * Preauthorizations API module\n */\nexport class PreauthorizationsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/preauthorizations')\n }\n\n /**\n * Create a preauthorization\n */\n async create(data: CreatePreauthorizationRequest): Promise<Preauthorization> {\n return this.post<Preauthorization>('', data)\n }\n\n /**\n * Get a preauthorization by ID\n */\n async getPreauthorization(preauthorizationId: string): Promise<Preauthorization> {\n return this.client.get<Preauthorization>(this.path(preauthorizationId))\n }\n\n /**\n * Update a preauthorization (cancel)\n */\n async update(\n preauthorizationId: string,\n data: UpdatePreauthorizationRequest\n ): Promise<Preauthorization> {\n return this.put<Preauthorization>(preauthorizationId, data)\n }\n\n /**\n * Cancel a preauthorization\n */\n async cancel(preauthorizationId: string): Promise<Preauthorization> {\n return this.update(preauthorizationId, { PaymentStatus: 'CANCELED' })\n }\n}\n","/**\n * KYC module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type { CreateKycDocumentRequest, KycDocument } from '../types/kyc.js'\n\n/**\n * KYC Documents API module (user-scoped)\n */\nexport class KycModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/kyc/documents`)\n }\n\n /**\n * Create a KYC document\n */\n async create(data: CreateKycDocumentRequest): Promise<KycDocument> {\n return this.post<KycDocument>('', data)\n }\n\n /**\n * Get a KYC document by ID\n */\n async getDocument(documentId: string): Promise<KycDocument> {\n return this.client.get<KycDocument>(this.path(documentId))\n }\n\n /**\n * List user's KYC documents\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<KycDocument>> {\n return this.client.get<PaginatedResponse<KycDocument>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Create a KYC document page (upload file)\n */\n async createPage(documentId: string, fileBase64: string): Promise<void> {\n await this.post<undefined>(`${documentId}/pages`, { File: fileBase64 })\n }\n\n /**\n * Submit a KYC document for validation\n */\n async submit(documentId: string): Promise<KycDocument> {\n return this.put<KycDocument>(documentId, { Status: 'VALIDATION_ASKED' })\n }\n}\n","/**\n * Payins module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n CreateCardDirectPayinRequest,\n CreateRecurringCitPayinRequest,\n CreateRecurringMitPayinRequest,\n CreateRecurringPaymentRequest,\n CreateRefundRequest,\n Payin,\n RecurringPaymentRegistration,\n Refund,\n UpdateRecurringPaymentRequest,\n} from '../types/payins.js'\n\n/**\n * Payins API module\n */\nexport class PayinsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/payins')\n }\n\n /**\n * Create a card direct payin\n */\n async create(data: CreateCardDirectPayinRequest): Promise<Payin> {\n return this.post<Payin>('', data)\n }\n\n /**\n * Get a payin by ID\n */\n async getPayin(payinId: string): Promise<Payin> {\n return this.client.get<Payin>(this.path(payinId))\n }\n\n /**\n * Refund a payin\n */\n async refund(payinId: string, data: CreateRefundRequest): Promise<Refund> {\n return this.post<Refund>(`${payinId}/refund`, data)\n }\n\n /**\n * Create a recurring payment registration\n */\n async createRecurringPayment(\n data: CreateRecurringPaymentRequest\n ): Promise<RecurringPaymentRegistration> {\n return this.post<RecurringPaymentRegistration>('createRecurringPayment', data)\n }\n\n /**\n * View a recurring payment registration\n */\n async viewRecurringPayment(registrationId: string): Promise<RecurringPaymentRegistration> {\n return this.client.get<RecurringPaymentRegistration>(\n this.path(['viewRecurringPayment', registrationId])\n )\n }\n\n /**\n * Create a recurring CIT (Customer-Initiated Transaction) payin\n */\n async createRecurringCit(data: CreateRecurringCitPayinRequest): Promise<Payin> {\n return this.post<Payin>('createRecurringPayInRegistrationCIT', data)\n }\n\n /**\n * Create a recurring MIT (Merchant-Initiated Transaction) payin\n */\n async createRecurringMit(data: CreateRecurringMitPayinRequest): Promise<Payin> {\n return this.post<Payin>('createRecurringPayInRegistrationMIT', data)\n }\n\n /**\n * Update a recurring payment registration\n */\n async updateRecurringPayment(\n registrationId: string,\n data: UpdateRecurringPaymentRequest\n ): Promise<RecurringPaymentRegistration> {\n return this.put<RecurringPaymentRegistration>(`updateRecurringPayin/${registrationId}`, data)\n }\n\n /**\n * End a recurring payment registration\n */\n async endRecurringPayment(registrationId: string): Promise<RecurringPaymentRegistration> {\n return this.updateRecurringPayment(registrationId, { Status: 'ENDED' })\n }\n}\n","/**\n * Payouts module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { CreatePayoutRequest, Payout } from '../types/payouts.js'\n\n/**\n * Payouts API module\n */\nexport class PayoutsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/payouts')\n }\n\n /**\n * Create a payout\n */\n async create(data: CreatePayoutRequest): Promise<Payout> {\n return this.post<Payout>('', data)\n }\n\n /**\n * Get a payout by ID\n */\n async getPayout(payoutId: string): Promise<Payout> {\n return this.client.get<Payout>(this.path(payoutId))\n }\n}\n","/**\n * Portal module for FAM Payment Portal\n *\n * This module provides methods to create and manage portal sessions\n * that allow users to access the payment portal from client apps.\n *\n * @example\n * ```typescript\n * // Create a portal session for a MangoPay user\n * const session = await client.portal.createSession({\n * mangopayUserId: 'user_m_01HXK...',\n * returnUrl: 'https://myapp.com/dashboard',\n * })\n *\n * // Redirect user to portal\n * window.location.href = session.data.url\n * ```\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n CreatePortalSessionRequest,\n CreatePortalSessionResponse,\n GetPortalUserResponse,\n PortalLogoutResponse,\n RefreshPortalSessionResponse,\n ValidatePortalSessionRequest,\n ValidatePortalSessionResponse,\n} from '../types/portal.js'\n\n/**\n * Portal API module\n *\n * Provides methods for creating and managing portal sessions.\n * Portal sessions allow users to access the FAM payment portal\n * to manage their subscriptions, cards, and invoices.\n */\nexport class PortalModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/portal')\n }\n\n /**\n * Create a new portal session\n *\n * Creates a temporary session that allows the user to access\n * the payment portal. Returns a URL to redirect the user to.\n *\n * @param data - Session creation options\n * @returns Session details including the portal URL\n *\n * @example\n * ```typescript\n * const session = await client.portal.createSession({\n * mangopayUserId: 'user_m_01HXK...',\n * returnUrl: 'https://myapp.com/dashboard',\n * expiresInMinutes: 60,\n * })\n *\n * // Redirect user to portal\n * window.location.href = session.data.url\n * ```\n */\n async createSession(data: CreatePortalSessionRequest): Promise<CreatePortalSessionResponse> {\n return this.post<CreatePortalSessionResponse>('sessions', data)\n }\n\n /**\n * Validate a portal session token\n *\n * Called by the portal frontend to validate access and get\n * user + website configuration for theming.\n *\n * @param data - Token validation request\n * @returns Session details with user and website config\n *\n * @example\n * ```typescript\n * const result = await client.portal.validateSession({\n * token: 'session-token-from-url',\n * })\n *\n * if (result.valid) {\n * const { user, website } = result.data\n * // Apply website theming and show user info\n * }\n * ```\n */\n async validateSession(\n data: ValidatePortalSessionRequest\n ): Promise<ValidatePortalSessionResponse> {\n return this.post<ValidatePortalSessionResponse>('session/validate', data)\n }\n\n /**\n * Get current portal user\n *\n * Requires a valid session token in the X-Portal-Session header.\n * This is typically called by the portal frontend after validation.\n *\n * @param sessionToken - The portal session token\n * @returns User information\n *\n * @example\n * ```typescript\n * const user = await client.portal.getUser('session-token')\n * console.log(`Hello ${user.data.firstName}`)\n * ```\n */\n async getUser(sessionToken: string): Promise<GetPortalUserResponse> {\n return this.client.get<GetPortalUserResponse>(this.path('user'), {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n\n /**\n * Refresh portal session\n *\n * Extends the session expiration by 60 minutes.\n * Requires a valid session token in the X-Portal-Session header.\n *\n * @param sessionToken - The portal session token\n * @returns New expiration datetime\n *\n * @example\n * ```typescript\n * const result = await client.portal.refreshSession('session-token')\n * console.log(`Session extended until ${result.data.expiresAt}`)\n * ```\n */\n async refreshSession(sessionToken: string): Promise<RefreshPortalSessionResponse> {\n return this.client.post<RefreshPortalSessionResponse>(this.path('session/refresh'), undefined, {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n\n /**\n * Logout and invalidate portal session\n *\n * Invalidates the session token, preventing further access.\n *\n * @param sessionToken - The portal session token\n * @returns Logout confirmation\n *\n * @example\n * ```typescript\n * await client.portal.logout('session-token')\n * // Redirect to return URL or home\n * ```\n */\n async logout(sessionToken: string): Promise<PortalLogoutResponse> {\n return this.client.post<PortalLogoutResponse>(this.path('logout'), undefined, {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n}\n","/**\n * SCA Recipients module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type {\n CreateRecipientRequest,\n Recipient,\n RecipientSchema,\n RecipientSchemaRequest,\n} from '../types/recipients.js'\n\n/**\n * SCA Recipients API module (user-scoped)\n */\nexport class ScaRecipientsModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/recipients`)\n }\n\n /**\n * Create a recipient\n */\n async create(data: CreateRecipientRequest): Promise<Recipient> {\n return this.post<Recipient>('', data)\n }\n\n /**\n * Get a recipient by ID\n */\n async getRecipient(recipientId: string): Promise<Recipient> {\n return this.client.get<Recipient>(this.path(recipientId))\n }\n\n /**\n * List user's recipients\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<Recipient>> {\n return this.client.get<PaginatedResponse<Recipient>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get recipient schema (required fields for a specific payout method)\n */\n async getSchema(request: RecipientSchemaRequest): Promise<RecipientSchema> {\n return this.client.get<RecipientSchema>(this.path('schema'), {\n params: request as unknown as Record<string, string | number | boolean | undefined | null>,\n })\n }\n}\n","/**\n * Subscriptions module (FAM custom implementation)\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse } from '../types/common.js'\nimport type {\n RecurringSubscription,\n RegisterSubscriptionRequest,\n SubscriptionListFilters,\n SubscriptionWithPayments,\n SyncSubscriptionResponse,\n UpdateSubscriptionRequest,\n} from '../types/subscriptions.js'\n\n/**\n * Recurring Subscriptions API module\n */\nexport class SubscriptionsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/recurring-subscriptions')\n }\n\n /**\n * Register a recurring subscription\n */\n async register(data: RegisterSubscriptionRequest): Promise<RecurringSubscription> {\n return this.post<RecurringSubscription>('', data)\n }\n\n /**\n * Get a subscription by ID (includes last 10 payments)\n */\n async getSubscription(subscriptionId: string): Promise<SubscriptionWithPayments> {\n return this.client.get<SubscriptionWithPayments>(this.path(subscriptionId))\n }\n\n /**\n * List subscriptions with filters\n */\n async list(filters?: SubscriptionListFilters): Promise<PaginatedResponse<RecurringSubscription>> {\n return this.client.get<PaginatedResponse<RecurringSubscription>>(this.path(''), {\n params: filters as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Update a subscription\n */\n async update(\n subscriptionId: string,\n data: UpdateSubscriptionRequest\n ): Promise<RecurringSubscription> {\n return this.put<RecurringSubscription>(subscriptionId, data)\n }\n\n /**\n * Sync subscription from Mangopay\n */\n async sync(subscriptionId: string): Promise<SyncSubscriptionResponse> {\n return this.post<SyncSubscriptionResponse>(`${subscriptionId}/sync`)\n }\n\n /**\n * Cancel a subscription\n */\n async cancel(subscriptionId: string): Promise<RecurringSubscription> {\n return this.post<RecurringSubscription>(`${subscriptionId}/cancel`)\n }\n\n /**\n * Enable subscription processing\n */\n async enable(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { processingEnabled: true })\n }\n\n /**\n * Disable subscription processing\n */\n async disable(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { processingEnabled: false })\n }\n\n /**\n * Enable webhook notifications\n */\n async enableWebhooks(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { webhookNotificationEnabled: true })\n }\n\n /**\n * Disable webhook notifications\n */\n async disableWebhooks(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { webhookNotificationEnabled: false })\n }\n}\n","/**\n * Transfers module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { Refund } from '../types/payins.js'\nimport type {\n CreateScaTransferRequest,\n CreateTransferRefundRequest,\n CreateTransferRequest,\n Transfer,\n} from '../types/transfers.js'\n\n/**\n * Transfers API module\n */\nexport class TransfersModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/transfers')\n }\n\n /**\n * Create a transfer\n */\n async create(data: CreateTransferRequest): Promise<Transfer> {\n return this.post<Transfer>('', data)\n }\n\n /**\n * Create an SCA transfer\n */\n async createSca(data: CreateScaTransferRequest): Promise<Transfer> {\n return this.post<Transfer>('sca', data)\n }\n\n /**\n * Get a transfer by ID\n */\n async getTransfer(transferId: string): Promise<Transfer> {\n return this.client.get<Transfer>(this.path(transferId))\n }\n\n /**\n * Get an SCA transfer by ID\n */\n async getSca(transferId: string): Promise<Transfer> {\n return this.client.get<Transfer>(this.path(['sca', transferId]))\n }\n\n /**\n * Refund a transfer\n */\n async refund(transferId: string, data: CreateTransferRefundRequest): Promise<Refund> {\n return this.post<Refund>(`${transferId}/refund`, data)\n }\n}\n","/**\n * UBO module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { CreateUboRequest, Ubo, UboDeclaration, UpdateUboRequest } from '../types/ubo.js'\n\n/**\n * UBO Declarations API module (user-scoped)\n */\nexport class UboModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/kyc/ubodeclarations`)\n }\n\n /**\n * Create a UBO declaration\n */\n async createDeclaration(): Promise<UboDeclaration> {\n return this.post<UboDeclaration>('')\n }\n\n /**\n * Get a UBO declaration by ID\n */\n async getDeclaration(declarationId: string): Promise<UboDeclaration> {\n return this.client.get<UboDeclaration>(this.path(declarationId))\n }\n\n /**\n * Create a UBO (Ultimate Beneficial Owner)\n */\n async createUbo(declarationId: string, data: CreateUboRequest): Promise<Ubo> {\n return this.post<Ubo>(`${declarationId}/ubos`, data)\n }\n\n /**\n * Update a UBO\n */\n async updateUbo(declarationId: string, uboId: string, data: UpdateUboRequest): Promise<Ubo> {\n return this.put<Ubo>(`${declarationId}/ubos/${uboId}`, data)\n }\n\n /**\n * Submit a UBO declaration for validation\n */\n async submit(declarationId: string): Promise<UboDeclaration> {\n return this.put<UboDeclaration>(declarationId, { Status: 'VALIDATION_ASKED' })\n }\n}\n","/**\n * Users module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { BankAccount } from '../types/bank-accounts.js'\nimport type { Card } from '../types/cards.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type {\n CreateLegalUserRequest,\n CreateNaturalUserRequest,\n LegalUser,\n NaturalUser,\n UpdateLegalUserRequest,\n UpdateNaturalUserRequest,\n User,\n} from '../types/users.js'\nimport type { Wallet } from '../types/wallets.js'\n\n/**\n * Transaction list item (simplified for user transactions)\n */\ninterface Transaction {\n Id: string\n Tag?: string\n CreationDate: number\n AuthorId: string\n Type: string\n Nature: string\n Status: string\n DebitedFunds: { Amount: number; Currency: string }\n CreditedFunds: { Amount: number; Currency: string }\n Fees: { Amount: number; Currency: string }\n}\n\n/**\n * Users API module\n */\nexport class UsersModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/users')\n }\n\n /**\n * Create a natural user\n */\n async createNatural(data: CreateNaturalUserRequest): Promise<NaturalUser> {\n return this.post<NaturalUser>('natural', data)\n }\n\n /**\n * Create a legal user\n */\n async createLegal(data: CreateLegalUserRequest): Promise<LegalUser> {\n return this.post<LegalUser>('legal', data)\n }\n\n /**\n * Get a user by ID\n */\n async getUser(userId: string): Promise<User> {\n return this.client.get<User>(this.path(userId))\n }\n\n /**\n * Get a natural user by ID\n */\n async getNaturalUser(userId: string): Promise<NaturalUser> {\n return this.client.get<NaturalUser>(this.path(['natural', userId]))\n }\n\n /**\n * Get a legal user by ID\n */\n async getLegalUser(userId: string): Promise<LegalUser> {\n return this.client.get<LegalUser>(this.path(['legal', userId]))\n }\n\n /**\n * Update a natural user\n */\n async updateNatural(userId: string, data: UpdateNaturalUserRequest): Promise<NaturalUser> {\n return this.put<NaturalUser>(`natural/${userId}`, data)\n }\n\n /**\n * Update a legal user\n */\n async updateLegal(userId: string, data: UpdateLegalUserRequest): Promise<LegalUser> {\n return this.put<LegalUser>(`legal/${userId}`, data)\n }\n\n /**\n * Get user's wallets\n */\n async getWallets(userId: string, params?: PaginationParams): Promise<PaginatedResponse<Wallet>> {\n return this.client.get<PaginatedResponse<Wallet>>(this.path([userId, 'wallets']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's cards\n */\n async getCards(userId: string, params?: PaginationParams): Promise<PaginatedResponse<Card>> {\n return this.client.get<PaginatedResponse<Card>>(this.path([userId, 'cards']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's bank accounts\n */\n async getBankAccounts(\n userId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<BankAccount>> {\n return this.client.get<PaginatedResponse<BankAccount>>(this.path([userId, 'bankaccounts']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's transactions\n */\n async getTransactions(\n userId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<Transaction>> {\n return this.client.get<PaginatedResponse<Transaction>>(this.path([userId, 'transactions']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n}\n","/**\n * Wallets module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type { CreateWalletRequest, UpdateWalletRequest, Wallet } from '../types/wallets.js'\n\n/**\n * Wallet transaction item\n */\ninterface WalletTransaction {\n Id: string\n Tag?: string\n CreationDate: number\n AuthorId: string\n Type: string\n Nature: string\n Status: string\n DebitedFunds: { Amount: number; Currency: string }\n CreditedFunds: { Amount: number; Currency: string }\n Fees: { Amount: number; Currency: string }\n DebitedWalletId?: string\n CreditedWalletId?: string\n}\n\n/**\n * Wallets API module\n */\nexport class WalletsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/wallets')\n }\n\n /**\n * Create a wallet\n */\n async create(data: CreateWalletRequest): Promise<Wallet> {\n return this.post<Wallet>('', data)\n }\n\n /**\n * Get a wallet by ID\n */\n async getWallet(walletId: string): Promise<Wallet> {\n return this.client.get<Wallet>(this.path(walletId))\n }\n\n /**\n * Update a wallet\n */\n async update(walletId: string, data: UpdateWalletRequest): Promise<Wallet> {\n return this.put<Wallet>(walletId, data)\n }\n\n /**\n * Get wallet transactions\n */\n async getTransactions(\n walletId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<WalletTransaction>> {\n return this.client.get<PaginatedResponse<WalletTransaction>>(\n this.path([walletId, 'transactions']),\n { params: params as Record<string, string | number | boolean | undefined | null> }\n )\n }\n}\n","/**\n * Main SDK client class\n */\n\nimport { HttpClient } from './client.js'\nimport {\n BankAccountsModule,\n CardRegistrationsModule,\n CardsModule,\n KycModule,\n PayinsModule,\n PayoutsModule,\n PortalModule,\n PreauthorizationsModule,\n ScaRecipientsModule,\n SubscriptionsModule,\n TransfersModule,\n UboModule,\n UsersModule,\n WalletsModule,\n} from './modules/index.js'\nimport type { FamOptions } from './client.js'\n\n/**\n * Main FAM SDK client\n *\n * @example\n * ```typescript\n * const client = new Fam({\n * baseUrl: 'https://api.fam.com',\n * token: 'your-auth-token',\n * })\n *\n * // Create a natural user\n * const user = await client.users.createNatural({\n * Email: 'user@example.com',\n * FirstName: 'John',\n * LastName: 'Doe',\n * })\n *\n * // Create a wallet\n * const wallet = await client.wallets.create({\n * Owners: [user.Id],\n * Description: 'Main wallet',\n * Currency: 'EUR',\n * })\n * ```\n */\nexport class Fam {\n private readonly client: HttpClient\n\n // Core modules\n public readonly users: UsersModule\n public readonly wallets: WalletsModule\n public readonly payins: PayinsModule\n public readonly payouts: PayoutsModule\n public readonly transfers: TransfersModule\n\n // Card modules\n public readonly cards: CardsModule\n public readonly cardRegistrations: CardRegistrationsModule\n public readonly preauthorizations: PreauthorizationsModule\n\n // FAM custom modules\n public readonly subscriptions: SubscriptionsModule\n public readonly portal: PortalModule\n\n constructor(options: FamOptions) {\n this.client = new HttpClient(options)\n\n // Initialize core modules\n this.users = new UsersModule(this.client)\n this.wallets = new WalletsModule(this.client)\n this.payins = new PayinsModule(this.client)\n this.payouts = new PayoutsModule(this.client)\n this.transfers = new TransfersModule(this.client)\n\n // Initialize card modules\n this.cards = new CardsModule(this.client)\n this.cardRegistrations = new CardRegistrationsModule(this.client)\n this.preauthorizations = new PreauthorizationsModule(this.client)\n\n // Initialize FAM custom modules\n this.subscriptions = new SubscriptionsModule(this.client)\n this.portal = new PortalModule(this.client)\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string): void {\n this.client.setToken(token)\n }\n\n /**\n * Clear the authentication token\n */\n clearToken(): void {\n this.client.clearToken()\n }\n\n /**\n * Get bank accounts module for a specific user\n */\n bankAccounts(userId: string): BankAccountsModule {\n return new BankAccountsModule(this.client, userId)\n }\n\n /**\n * Get KYC module for a specific user\n */\n kyc(userId: string): KycModule {\n return new KycModule(this.client, userId)\n }\n\n /**\n * Get UBO module for a specific user\n */\n ubo(userId: string): UboModule {\n return new UboModule(this.client, userId)\n }\n\n /**\n * Get SCA Recipients module for a specific user\n */\n scaRecipients(userId: string): ScaRecipientsModule {\n return new ScaRecipientsModule(this.client, userId)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors/index.ts","../src/utils/index.ts","../src/client.ts","../src/modules/base.ts","../src/modules/bank-accounts.ts","../src/modules/cards.ts","../src/modules/kyc.ts","../src/modules/payins.ts","../src/modules/payouts.ts","../src/modules/portal.ts","../src/modules/recipients.ts","../src/modules/subscriptions.ts","../src/modules/transfers.ts","../src/modules/ubo.ts","../src/modules/users.ts","../src/modules/wallets.ts","../src/fam.ts"],"names":["response"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Base error class for all SDK errors\n */\nexport class FamError extends Error {\n public override readonly name: string = 'FamError'\n\n constructor(message: string) {\n super(message)\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\n/**\n * API error with status code and response details\n */\nexport class ApiError extends FamError {\n public override readonly name: string = 'ApiError'\n public readonly statusCode: number\n public readonly code: string | undefined\n public readonly details: unknown\n\n constructor(message: string, statusCode: number, code?: string, details?: unknown) {\n super(message)\n this.statusCode = statusCode\n this.code = code\n this.details = details\n }\n}\n\n/**\n * Authentication error (401)\n */\nexport class AuthenticationError extends ApiError {\n public override readonly name: string = 'AuthenticationError'\n\n constructor(message = 'Authentication failed') {\n super(message, 401, 'AUTHENTICATION_ERROR')\n }\n}\n\n/**\n * Authorization error (403)\n */\nexport class AuthorizationError extends ApiError {\n public override readonly name: string = 'AuthorizationError'\n\n constructor(message = 'Access denied') {\n super(message, 403, 'AUTHORIZATION_ERROR')\n }\n}\n\n/**\n * Resource not found error (404)\n */\nexport class NotFoundError extends ApiError {\n public override readonly name: string = 'NotFoundError'\n\n constructor(message = 'Resource not found') {\n super(message, 404, 'NOT_FOUND')\n }\n}\n\n/**\n * Validation error with field-level details (400/422)\n */\nexport class ValidationError extends ApiError {\n public override readonly name: string = 'ValidationError'\n public readonly errors: Record<string, string[]>\n\n constructor(message: string, errors: Record<string, string[]> = {}) {\n super(message, 422, 'VALIDATION_ERROR', errors)\n this.errors = errors\n }\n}\n\n/**\n * Rate limit error (429)\n */\nexport class RateLimitError extends ApiError {\n public override readonly name: string = 'RateLimitError'\n public readonly retryAfter: number | undefined\n\n constructor(message = 'Rate limit exceeded', retryAfter?: number) {\n super(message, 429, 'RATE_LIMIT_ERROR')\n this.retryAfter = retryAfter\n }\n}\n\n/**\n * Network error for connection issues\n */\nexport class NetworkError extends FamError {\n public override readonly name: string = 'NetworkError'\n public readonly originalError: Error | undefined\n\n constructor(message: string, originalError?: Error) {\n super(message)\n this.originalError = originalError\n }\n}\n\n/**\n * Timeout error\n */\nexport class TimeoutError extends NetworkError {\n public override readonly name: string = 'TimeoutError'\n\n constructor(message = 'Request timeout', originalError?: Error) {\n super(message, originalError)\n }\n}\n\n/**\n * Webhook signature verification error\n */\nexport class WebhookSignatureError extends FamError {\n public override readonly name: string = 'WebhookSignatureError'\n\n constructor(message = 'Invalid webhook signature') {\n super(message)\n }\n}\n","/**\n * Check if running in browser environment\n */\nexport function isBrowser(): boolean {\n const global = globalThis as unknown as { window?: { document?: unknown } }\n return typeof global.window?.document !== 'undefined'\n}\n\n/**\n * Check if running in Node.js environment\n */\nexport function isNode(): boolean {\n const global = globalThis as unknown as { process?: { versions?: { node?: string } } }\n return typeof global.process?.versions?.node !== 'undefined'\n}\n\n/**\n * Sleep for a given number of milliseconds\n */\nexport async function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Retry a function with exponential backoff\n */\nexport async function retry<T>(\n fn: () => Promise<T>,\n options: {\n maxRetries?: number\n baseDelay?: number\n maxDelay?: number\n shouldRetry?: (error: unknown) => boolean\n } = {}\n): Promise<T> {\n const {\n maxRetries = 3,\n baseDelay = 1000,\n maxDelay = 30000,\n shouldRetry = (): boolean => true,\n } = options\n\n let lastError: unknown\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn()\n } catch (error) {\n lastError = error\n\n if (attempt === maxRetries || !shouldRetry(error)) {\n throw error\n }\n\n const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay)\n await sleep(delay)\n }\n }\n\n throw lastError\n}\n\n/**\n * Build URL with query parameters\n */\nexport function buildUrl(\n baseUrl: string,\n path: string,\n params?: Record<string, string | number | boolean | undefined | null>\n): string {\n const url = new URL(path, baseUrl)\n\n if (params !== undefined) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value))\n }\n }\n }\n\n return url.toString()\n}\n\n/**\n * Deep merge two objects\n */\nexport function deepMerge<T extends Record<string, unknown>>(target: T, source: Partial<T>): T {\n const result = { ...target }\n\n for (const key of Object.keys(source) as (keyof T)[]) {\n const sourceValue = source[key]\n const targetValue = result[key]\n\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\n result[key] = deepMerge(\n targetValue as Record<string, unknown>,\n sourceValue as Record<string, unknown>\n ) as T[keyof T]\n } else if (sourceValue !== undefined) {\n result[key] = sourceValue as T[keyof T]\n }\n }\n\n return result\n}\n\n/**\n * Check if value is a plain object\n */\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && value.constructor === Object\n}\n\n/**\n * Format amount from cents to currency string\n */\nexport function formatAmount(amountInCents: number, currency = 'EUR'): string {\n return new Intl.NumberFormat('fr-FR', {\n style: 'currency',\n currency,\n }).format(amountInCents / 100)\n}\n\n/**\n * Parse amount from currency string to cents\n */\nexport function parseAmount(amount: number): number {\n return Math.round(amount * 100)\n}\n","import {\n ApiError,\n AuthenticationError,\n AuthorizationError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n TimeoutError,\n ValidationError,\n} from './errors/index.js'\nimport { buildUrl, retry } from './utils/index.js'\n\n/**\n * SDK configuration options\n */\nexport interface FamOptions {\n /** Base URL of the API */\n baseUrl: string\n /** Authentication token */\n token?: string\n /** Request timeout in milliseconds */\n timeout?: number\n /** Number of retries on network errors */\n retries?: number\n /** Custom headers to include in all requests */\n headers?: Record<string, string>\n}\n\n/**\n * Request options for individual API calls\n */\nexport interface RequestOptions {\n /** Query parameters */\n params?: Record<string, string | number | boolean | undefined | null>\n /** Request headers */\n headers?: Record<string, string>\n /** Request timeout override */\n timeout?: number\n /** Skip retry logic */\n skipRetry?: boolean\n}\n\n/**\n * API response structure\n */\ninterface ApiResponse<T> {\n data: T\n status: number\n headers: Headers\n}\n\n/**\n * Error response from the API\n */\ninterface ErrorResponse {\n message?: string\n error?: string\n errors?: Record<string, string[]>\n code?: string\n}\n\n/**\n * HTTP client for making API requests\n */\nexport class HttpClient {\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly retries: number\n private readonly defaultHeaders: Record<string, string>\n private token: string | undefined\n\n constructor(options: FamOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, '')\n this.token = options.token\n this.timeout = options.timeout ?? 30000\n this.retries = options.retries ?? 3\n this.defaultHeaders = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...options.headers,\n }\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string): void {\n this.token = token\n }\n\n /**\n * Clear the authentication token\n */\n clearToken(): void {\n this.token = undefined\n }\n\n /**\n * Make a GET request\n */\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('GET', path, undefined, options)\n }\n\n /**\n * Make a POST request\n */\n async post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('POST', path, body, options)\n }\n\n /**\n * Make a PUT request\n */\n async put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PUT', path, body, options)\n }\n\n /**\n * Make a PATCH request\n */\n async patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PATCH', path, body, options)\n }\n\n /**\n * Make a DELETE request\n */\n async delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('DELETE', path, undefined, options)\n }\n\n /**\n * Make an HTTP request\n */\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n options?: RequestOptions\n ): Promise<T> {\n const url = buildUrl(this.baseUrl, path, options?.params)\n const timeout = options?.timeout ?? this.timeout\n const headers = this.buildHeaders(options?.headers)\n\n const makeRequest = async (): Promise<ApiResponse<T>> => {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => {\n controller.abort()\n }, timeout)\n\n try {\n const fetchOptions: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n }\n\n if (body !== undefined) {\n fetchOptions.body = JSON.stringify(body)\n }\n\n const response = await fetch(url, fetchOptions)\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n await this.handleErrorResponse(response)\n }\n\n const data = (await response.json()) as T\n\n return {\n data,\n status: response.status,\n headers: response.headers,\n }\n } catch (error) {\n clearTimeout(timeoutId)\n\n if (error instanceof Error && error.name === 'AbortError') {\n throw new TimeoutError(`Request timeout after ${String(timeout)}ms`)\n }\n\n if (error instanceof ApiError) {\n throw error\n }\n\n throw new NetworkError(\n error instanceof Error ? error.message : 'Network request failed',\n error instanceof Error ? error : undefined\n )\n }\n }\n\n if (options?.skipRetry === true) {\n const response = await makeRequest()\n return response.data\n }\n\n const response = await retry(makeRequest, {\n maxRetries: this.retries,\n shouldRetry: (error): boolean => {\n if (error instanceof NetworkError || error instanceof TimeoutError) {\n return true\n }\n if (error instanceof RateLimitError) {\n return true\n }\n if (error instanceof ApiError && error.statusCode >= 500) {\n return true\n }\n return false\n },\n })\n\n return response.data\n }\n\n /**\n * Build request headers\n */\n private buildHeaders(customHeaders?: Record<string, string>): Record<string, string> {\n const headers: Record<string, string> = { ...this.defaultHeaders }\n\n if (this.token !== undefined) {\n headers['Authorization'] = `Bearer ${this.token}`\n }\n\n if (customHeaders !== undefined) {\n Object.assign(headers, customHeaders)\n }\n\n return headers\n }\n\n /**\n * Handle error responses from the API\n */\n private async handleErrorResponse(response: Response): Promise<never> {\n let errorData: ErrorResponse = {}\n\n try {\n errorData = (await response.json()) as ErrorResponse\n } catch {\n // Response body is not JSON\n }\n\n const message = errorData.message ?? errorData.error ?? response.statusText\n const code = errorData.code\n\n switch (response.status) {\n case 400:\n if (errorData.errors !== undefined) {\n throw new ValidationError(message, errorData.errors)\n }\n throw new ApiError(message, 400, code, errorData)\n\n case 401:\n throw new AuthenticationError(message)\n\n case 403:\n throw new AuthorizationError(message)\n\n case 404:\n throw new NotFoundError(message)\n\n case 422:\n throw new ValidationError(message, errorData.errors ?? {})\n\n case 429: {\n const retryAfter = response.headers.get('Retry-After')\n throw new RateLimitError(\n message,\n retryAfter !== null ? parseInt(retryAfter, 10) : undefined\n )\n }\n\n default:\n throw new ApiError(message, response.status, code, errorData)\n }\n }\n}\n","/**\n * Base module for API modules\n */\n\nimport type { HttpClient, RequestOptions } from '../client.js'\n\n/**\n * Base class for all API modules\n */\nexport abstract class BaseModule {\n protected readonly client: HttpClient\n protected readonly basePath: string\n\n constructor(client: HttpClient, basePath: string) {\n this.client = client\n this.basePath = basePath\n }\n\n /**\n * Build the full path for an endpoint\n */\n protected path(segments: string | string[] = ''): string {\n if (Array.isArray(segments)) {\n return `${this.basePath}/${segments.join('/')}`\n }\n return segments.length > 0 ? `${this.basePath}/${segments}` : this.basePath\n }\n\n /**\n * Make a GET request\n */\n protected async get<T>(endpoint: string, options?: RequestOptions): Promise<T> {\n return this.client.get<T>(this.path(endpoint), options)\n }\n\n /**\n * Make a POST request\n */\n protected async post<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.post<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a PUT request\n */\n protected async put<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.put<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a PATCH request\n */\n protected async patch<T>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.client.patch<T>(this.path(endpoint), body, options)\n }\n\n /**\n * Make a DELETE request\n */\n protected async delete<T>(endpoint: string, options?: RequestOptions): Promise<T> {\n return this.client.delete<T>(this.path(endpoint), options)\n }\n}\n","/**\n * Bank Accounts module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n BankAccount,\n CreateCaBankAccountRequest,\n CreateGbBankAccountRequest,\n CreateIbanBankAccountRequest,\n CreateOtherBankAccountRequest,\n CreateUsBankAccountRequest,\n IbanBankAccount,\n GbBankAccount,\n UsBankAccount,\n CaBankAccount,\n OtherBankAccount,\n} from '../types/bank-accounts.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\n\n/**\n * Bank Accounts API module (user-scoped)\n */\nexport class BankAccountsModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/bankaccounts`)\n }\n\n /**\n * Create an IBAN bank account\n */\n async createIban(data: CreateIbanBankAccountRequest): Promise<IbanBankAccount> {\n return this.post<IbanBankAccount>('iban', data)\n }\n\n /**\n * Create a GB bank account\n */\n async createGb(data: CreateGbBankAccountRequest): Promise<GbBankAccount> {\n return this.post<GbBankAccount>('gb', data)\n }\n\n /**\n * Create a US bank account\n */\n async createUs(data: CreateUsBankAccountRequest): Promise<UsBankAccount> {\n return this.post<UsBankAccount>('us', data)\n }\n\n /**\n * Create a CA bank account\n */\n async createCa(data: CreateCaBankAccountRequest): Promise<CaBankAccount> {\n return this.post<CaBankAccount>('ca', data)\n }\n\n /**\n * Create an Other bank account\n */\n async createOther(data: CreateOtherBankAccountRequest): Promise<OtherBankAccount> {\n return this.post<OtherBankAccount>('other', data)\n }\n\n /**\n * Get a bank account by ID\n */\n async getAccount(accountId: string): Promise<BankAccount> {\n return this.client.get<BankAccount>(this.path(accountId))\n }\n\n /**\n * List user's bank accounts\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<BankAccount>> {\n return this.client.get<PaginatedResponse<BankAccount>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Deactivate a bank account\n */\n async deactivate(accountId: string): Promise<BankAccount> {\n return this.put<BankAccount>(accountId, { Active: false })\n }\n}\n","/**\n * Cards module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n Card,\n CardRegistration,\n CreateCardRegistrationRequest,\n CreatePreauthorizationRequest,\n Preauthorization,\n UpdateCardRegistrationRequest,\n UpdateCardRequest,\n UpdatePreauthorizationRequest,\n} from '../types/cards.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\n\n/**\n * Card Registrations API module\n */\nexport class CardRegistrationsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/cardRegistrations')\n }\n\n /**\n * Create a card registration\n */\n async create(data: CreateCardRegistrationRequest): Promise<CardRegistration> {\n return this.post<CardRegistration>('', data)\n }\n\n /**\n * Get a card registration by ID\n */\n async getRegistration(registrationId: string): Promise<CardRegistration> {\n return this.client.get<CardRegistration>(this.path(registrationId))\n }\n\n /**\n * Update a card registration (complete registration process)\n */\n async update(\n registrationId: string,\n data: UpdateCardRegistrationRequest\n ): Promise<CardRegistration> {\n return this.put<CardRegistration>(registrationId, data)\n }\n}\n\n/**\n * Cards API module\n */\nexport class CardsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/cards')\n }\n\n /**\n * Get a card by ID\n */\n async getCard(cardId: string): Promise<Card> {\n return this.client.get<Card>(this.path(cardId))\n }\n\n /**\n * Deactivate a card\n */\n async deactivate(cardId: string): Promise<Card> {\n const data: UpdateCardRequest = { Active: false }\n return this.post<Card>(`${cardId}/desactivate`, data)\n }\n\n /**\n * Get card preauthorizations\n */\n async getPreauthorizations(\n cardId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<Preauthorization>> {\n return this.client.get<PaginatedResponse<Preauthorization>>(\n this.path([cardId, 'preauthorizations']),\n { params: params as Record<string, string | number | boolean | undefined | null> }\n )\n }\n}\n\n/**\n * Preauthorizations API module\n */\nexport class PreauthorizationsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/preauthorizations')\n }\n\n /**\n * Create a preauthorization\n */\n async create(data: CreatePreauthorizationRequest): Promise<Preauthorization> {\n return this.post<Preauthorization>('', data)\n }\n\n /**\n * Get a preauthorization by ID\n */\n async getPreauthorization(preauthorizationId: string): Promise<Preauthorization> {\n return this.client.get<Preauthorization>(this.path(preauthorizationId))\n }\n\n /**\n * Update a preauthorization (cancel)\n */\n async update(\n preauthorizationId: string,\n data: UpdatePreauthorizationRequest\n ): Promise<Preauthorization> {\n return this.put<Preauthorization>(preauthorizationId, data)\n }\n\n /**\n * Cancel a preauthorization\n */\n async cancel(preauthorizationId: string): Promise<Preauthorization> {\n return this.update(preauthorizationId, { PaymentStatus: 'CANCELED' })\n }\n}\n","/**\n * KYC module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type { CreateKycDocumentRequest, KycDocument } from '../types/kyc.js'\n\n/**\n * KYC Documents API module (user-scoped)\n */\nexport class KycModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/kyc/documents`)\n }\n\n /**\n * Create a KYC document\n */\n async create(data: CreateKycDocumentRequest): Promise<KycDocument> {\n return this.post<KycDocument>('', data)\n }\n\n /**\n * Get a KYC document by ID\n */\n async getDocument(documentId: string): Promise<KycDocument> {\n return this.client.get<KycDocument>(this.path(documentId))\n }\n\n /**\n * List user's KYC documents\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<KycDocument>> {\n return this.client.get<PaginatedResponse<KycDocument>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Create a KYC document page (upload file)\n */\n async createPage(documentId: string, fileBase64: string): Promise<void> {\n await this.post<undefined>(`${documentId}/pages`, { File: fileBase64 })\n }\n\n /**\n * Submit a KYC document for validation\n */\n async submit(documentId: string): Promise<KycDocument> {\n return this.put<KycDocument>(documentId, { Status: 'VALIDATION_ASKED' })\n }\n}\n","/**\n * Payins module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n CreateCardDirectPayinRequest,\n CreateRecurringCitPayinRequest,\n CreateRecurringMitPayinRequest,\n CreateRecurringPaymentRequest,\n CreateRefundRequest,\n Payin,\n RecurringPaymentRegistration,\n Refund,\n UpdateRecurringPaymentRequest,\n} from '../types/payins.js'\n\n/**\n * Payins API module\n */\nexport class PayinsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/payins')\n }\n\n /**\n * Create a card direct payin\n */\n async create(data: CreateCardDirectPayinRequest): Promise<Payin> {\n return this.post<Payin>('', data)\n }\n\n /**\n * Get a payin by ID\n */\n async getPayin(payinId: string): Promise<Payin> {\n return this.client.get<Payin>(this.path(payinId))\n }\n\n /**\n * Refund a payin\n */\n async refund(payinId: string, data: CreateRefundRequest): Promise<Refund> {\n return this.post<Refund>(`${payinId}/refund`, data)\n }\n\n /**\n * Create a recurring payment registration\n */\n async createRecurringPayment(\n data: CreateRecurringPaymentRequest\n ): Promise<RecurringPaymentRegistration> {\n return this.post<RecurringPaymentRegistration>('createRecurringPayment', data)\n }\n\n /**\n * View a recurring payment registration\n */\n async viewRecurringPayment(registrationId: string): Promise<RecurringPaymentRegistration> {\n return this.client.get<RecurringPaymentRegistration>(\n this.path(['viewRecurringPayment', registrationId])\n )\n }\n\n /**\n * Create a recurring CIT (Customer-Initiated Transaction) payin\n */\n async createRecurringCit(data: CreateRecurringCitPayinRequest): Promise<Payin> {\n return this.post<Payin>('createRecurringPayInRegistrationCIT', data)\n }\n\n /**\n * Create a recurring MIT (Merchant-Initiated Transaction) payin\n */\n async createRecurringMit(data: CreateRecurringMitPayinRequest): Promise<Payin> {\n return this.post<Payin>('createRecurringPayInRegistrationMIT', data)\n }\n\n /**\n * Update a recurring payment registration\n */\n async updateRecurringPayment(\n registrationId: string,\n data: UpdateRecurringPaymentRequest\n ): Promise<RecurringPaymentRegistration> {\n return this.put<RecurringPaymentRegistration>(`updateRecurringPayin/${registrationId}`, data)\n }\n\n /**\n * End a recurring payment registration\n */\n async endRecurringPayment(registrationId: string): Promise<RecurringPaymentRegistration> {\n return this.updateRecurringPayment(registrationId, { Status: 'ENDED' })\n }\n}\n","/**\n * Payouts module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { CreatePayoutRequest, Payout } from '../types/payouts.js'\n\n/**\n * Payouts API module\n */\nexport class PayoutsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/payouts')\n }\n\n /**\n * Create a payout\n */\n async create(data: CreatePayoutRequest): Promise<Payout> {\n return this.post<Payout>('', data)\n }\n\n /**\n * Get a payout by ID\n */\n async getPayout(payoutId: string): Promise<Payout> {\n return this.client.get<Payout>(this.path(payoutId))\n }\n}\n","/**\n * Portal module for FAM Payment Portal\n *\n * This module provides methods to create and manage portal sessions\n * that allow users to access the payment portal from client apps.\n *\n * @example\n * ```typescript\n * // Create a portal session for a MangoPay user\n * const session = await client.portal.createSession({\n * mangopayUserId: 'user_m_01HXK...',\n * returnUrl: 'https://myapp.com/dashboard',\n * })\n *\n * // Redirect user to portal\n * window.location.href = session.data.url\n * ```\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type {\n CreatePortalSessionRequest,\n CreatePortalSessionResponse,\n GetPortalUserResponse,\n PortalLogoutResponse,\n RefreshPortalSessionResponse,\n ValidatePortalSessionRequest,\n ValidatePortalSessionResponse,\n} from '../types/portal.js'\n\n/**\n * Portal API module\n *\n * Provides methods for creating and managing portal sessions.\n * Portal sessions allow users to access the FAM payment portal\n * to manage their subscriptions, cards, and invoices.\n */\nexport class PortalModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/portal')\n }\n\n /**\n * Create a new portal session\n *\n * Creates a temporary session that allows the user to access\n * the payment portal. Returns a URL to redirect the user to.\n *\n * @param data - Session creation options\n * @returns Session details including the portal URL\n *\n * @example\n * ```typescript\n * const session = await client.portal.createSession({\n * mangopayUserId: 'user_m_01HXK...',\n * returnUrl: 'https://myapp.com/dashboard',\n * expiresInMinutes: 60,\n * })\n *\n * // Redirect user to portal\n * window.location.href = session.data.url\n * ```\n */\n async createSession(data: CreatePortalSessionRequest): Promise<CreatePortalSessionResponse> {\n return this.post<CreatePortalSessionResponse>('sessions', data)\n }\n\n /**\n * Validate a portal session token\n *\n * Called by the portal frontend to validate access and get\n * user + website configuration for theming.\n *\n * @param data - Token validation request\n * @returns Session details with user and website config\n *\n * @example\n * ```typescript\n * const result = await client.portal.validateSession({\n * token: 'session-token-from-url',\n * })\n *\n * if (result.valid) {\n * const { user, website } = result.data\n * // Apply website theming and show user info\n * }\n * ```\n */\n async validateSession(\n data: ValidatePortalSessionRequest\n ): Promise<ValidatePortalSessionResponse> {\n return this.post<ValidatePortalSessionResponse>('session/validate', data)\n }\n\n /**\n * Get current portal user\n *\n * Requires a valid session token in the X-Portal-Session header.\n * This is typically called by the portal frontend after validation.\n *\n * @param sessionToken - The portal session token\n * @returns User information\n *\n * @example\n * ```typescript\n * const user = await client.portal.getUser('session-token')\n * console.log(`Hello ${user.data.firstName}`)\n * ```\n */\n async getUser(sessionToken: string): Promise<GetPortalUserResponse> {\n return this.client.get<GetPortalUserResponse>(this.path('user'), {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n\n /**\n * Refresh portal session\n *\n * Extends the session expiration by 60 minutes.\n * Requires a valid session token in the X-Portal-Session header.\n *\n * @param sessionToken - The portal session token\n * @returns New expiration datetime\n *\n * @example\n * ```typescript\n * const result = await client.portal.refreshSession('session-token')\n * console.log(`Session extended until ${result.data.expiresAt}`)\n * ```\n */\n async refreshSession(sessionToken: string): Promise<RefreshPortalSessionResponse> {\n return this.client.post<RefreshPortalSessionResponse>(this.path('session/refresh'), undefined, {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n\n /**\n * Logout and invalidate portal session\n *\n * Invalidates the session token, preventing further access.\n *\n * @param sessionToken - The portal session token\n * @returns Logout confirmation\n *\n * @example\n * ```typescript\n * await client.portal.logout('session-token')\n * // Redirect to return URL or home\n * ```\n */\n async logout(sessionToken: string): Promise<PortalLogoutResponse> {\n return this.client.post<PortalLogoutResponse>(this.path('logout'), undefined, {\n headers: {\n 'X-Portal-Session': sessionToken,\n },\n })\n }\n}\n","/**\n * SCA Recipients module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type {\n CreateRecipientRequest,\n Recipient,\n RecipientSchema,\n RecipientSchemaRequest,\n} from '../types/recipients.js'\n\n/**\n * SCA Recipients API module (user-scoped)\n */\nexport class ScaRecipientsModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/recipients`)\n }\n\n /**\n * Create a recipient\n */\n async create(data: CreateRecipientRequest): Promise<Recipient> {\n return this.post<Recipient>('', data)\n }\n\n /**\n * Get a recipient by ID\n */\n async getRecipient(recipientId: string): Promise<Recipient> {\n return this.client.get<Recipient>(this.path(recipientId))\n }\n\n /**\n * List user's recipients\n */\n async list(params?: PaginationParams): Promise<PaginatedResponse<Recipient>> {\n return this.client.get<PaginatedResponse<Recipient>>(this.path(''), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get recipient schema (required fields for a specific payout method)\n */\n async getSchema(request: RecipientSchemaRequest): Promise<RecipientSchema> {\n return this.client.get<RecipientSchema>(this.path('schema'), {\n params: request as unknown as Record<string, string | number | boolean | undefined | null>,\n })\n }\n}\n","/**\n * Subscriptions module (FAM custom implementation)\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse } from '../types/common.js'\nimport type {\n MangopayUserSubscription,\n MangopayUserSubscriptionFilters,\n RecurringSubscription,\n RegisterSubscriptionRequest,\n SubscriptionListFilters,\n SubscriptionWithPayments,\n SyncSubscriptionResponse,\n UpdateSubscriptionRequest,\n} from '../types/subscriptions.js'\n\n/**\n * Recurring Subscriptions API module\n */\nexport class SubscriptionsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/recurring-subscriptions')\n }\n\n /**\n * Register a recurring subscription\n */\n async register(data: RegisterSubscriptionRequest): Promise<RecurringSubscription> {\n return this.post<RecurringSubscription>('', data)\n }\n\n /**\n * Get a subscription by ID (includes last 10 payments)\n */\n async getSubscription(subscriptionId: string): Promise<SubscriptionWithPayments> {\n return this.client.get<SubscriptionWithPayments>(this.path(subscriptionId))\n }\n\n /**\n * List subscriptions with filters\n */\n async list(filters?: SubscriptionListFilters): Promise<PaginatedResponse<RecurringSubscription>> {\n return this.client.get<PaginatedResponse<RecurringSubscription>>(this.path(''), {\n params: filters as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Update a subscription\n */\n async update(\n subscriptionId: string,\n data: UpdateSubscriptionRequest\n ): Promise<RecurringSubscription> {\n return this.put<RecurringSubscription>(subscriptionId, data)\n }\n\n /**\n * Sync subscription from Mangopay\n */\n async sync(subscriptionId: string): Promise<SyncSubscriptionResponse> {\n return this.post<SyncSubscriptionResponse>(`${subscriptionId}/sync`)\n }\n\n /**\n * Cancel a subscription\n */\n async cancel(subscriptionId: string): Promise<RecurringSubscription> {\n return this.post<RecurringSubscription>(`${subscriptionId}/cancel`)\n }\n\n /**\n * Enable subscription processing\n */\n async enable(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { processingEnabled: true })\n }\n\n /**\n * Disable subscription processing\n */\n async disable(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { processingEnabled: false })\n }\n\n /**\n * Enable webhook notifications\n */\n async enableWebhooks(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { webhookNotificationEnabled: true })\n }\n\n /**\n * Disable webhook notifications\n */\n async disableWebhooks(subscriptionId: string): Promise<RecurringSubscription> {\n return this.update(subscriptionId, { webhookNotificationEnabled: false })\n }\n\n /**\n * List subscriptions for a MangoPay user\n * Useful for retrieving all subscriptions associated with a specific MangoPay user ID\n *\n * @param mangopayUserId - The MangoPay user ID\n * @param filters - Optional filters (subscriptionType, activeOnly)\n */\n async listByMangopayUser(\n mangopayUserId: string,\n filters?: MangopayUserSubscriptionFilters\n ): Promise<{ success: boolean; subscriptions: MangopayUserSubscription[] }> {\n const params: Record<string, string | boolean | undefined> = {}\n if (filters?.subscriptionType !== undefined && filters.subscriptionType !== '') {\n params['subscriptionType'] = filters.subscriptionType\n }\n if (filters?.activeOnly !== undefined) {\n params['activeOnly'] = String(filters.activeOnly)\n }\n\n return this.client.get<{ success: boolean; subscriptions: MangopayUserSubscription[] }>(\n this.path(`user/${mangopayUserId}`),\n { params }\n )\n }\n}\n","/**\n * Transfers module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { Refund } from '../types/payins.js'\nimport type {\n CreateScaTransferRequest,\n CreateTransferRefundRequest,\n CreateTransferRequest,\n Transfer,\n} from '../types/transfers.js'\n\n/**\n * Transfers API module\n */\nexport class TransfersModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/transfers')\n }\n\n /**\n * Create a transfer\n */\n async create(data: CreateTransferRequest): Promise<Transfer> {\n return this.post<Transfer>('', data)\n }\n\n /**\n * Create an SCA transfer\n */\n async createSca(data: CreateScaTransferRequest): Promise<Transfer> {\n return this.post<Transfer>('sca', data)\n }\n\n /**\n * Get a transfer by ID\n */\n async getTransfer(transferId: string): Promise<Transfer> {\n return this.client.get<Transfer>(this.path(transferId))\n }\n\n /**\n * Get an SCA transfer by ID\n */\n async getSca(transferId: string): Promise<Transfer> {\n return this.client.get<Transfer>(this.path(['sca', transferId]))\n }\n\n /**\n * Refund a transfer\n */\n async refund(transferId: string, data: CreateTransferRefundRequest): Promise<Refund> {\n return this.post<Refund>(`${transferId}/refund`, data)\n }\n}\n","/**\n * UBO module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { CreateUboRequest, Ubo, UboDeclaration, UpdateUboRequest } from '../types/ubo.js'\n\n/**\n * UBO Declarations API module (user-scoped)\n */\nexport class UboModule extends BaseModule {\n constructor(client: HttpClient, userId: string) {\n super(client, `/api/v1/mangopay/users/${userId}/kyc/ubodeclarations`)\n }\n\n /**\n * Create a UBO declaration\n */\n async createDeclaration(): Promise<UboDeclaration> {\n return this.post<UboDeclaration>('')\n }\n\n /**\n * Get a UBO declaration by ID\n */\n async getDeclaration(declarationId: string): Promise<UboDeclaration> {\n return this.client.get<UboDeclaration>(this.path(declarationId))\n }\n\n /**\n * Create a UBO (Ultimate Beneficial Owner)\n */\n async createUbo(declarationId: string, data: CreateUboRequest): Promise<Ubo> {\n return this.post<Ubo>(`${declarationId}/ubos`, data)\n }\n\n /**\n * Update a UBO\n */\n async updateUbo(declarationId: string, uboId: string, data: UpdateUboRequest): Promise<Ubo> {\n return this.put<Ubo>(`${declarationId}/ubos/${uboId}`, data)\n }\n\n /**\n * Submit a UBO declaration for validation\n */\n async submit(declarationId: string): Promise<UboDeclaration> {\n return this.put<UboDeclaration>(declarationId, { Status: 'VALIDATION_ASKED' })\n }\n}\n","/**\n * Users module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { BankAccount } from '../types/bank-accounts.js'\nimport type { Card } from '../types/cards.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type {\n CreateLegalUserRequest,\n CreateNaturalUserRequest,\n LegalUser,\n NaturalUser,\n UpdateLegalUserRequest,\n UpdateNaturalUserRequest,\n User,\n} from '../types/users.js'\nimport type { Wallet } from '../types/wallets.js'\n\n/**\n * Transaction list item (simplified for user transactions)\n */\ninterface Transaction {\n Id: string\n Tag?: string\n CreationDate: number\n AuthorId: string\n Type: string\n Nature: string\n Status: string\n DebitedFunds: { Amount: number; Currency: string }\n CreditedFunds: { Amount: number; Currency: string }\n Fees: { Amount: number; Currency: string }\n}\n\n/**\n * Users API module\n */\nexport class UsersModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/users')\n }\n\n /**\n * Create a natural user\n */\n async createNatural(data: CreateNaturalUserRequest): Promise<NaturalUser> {\n return this.post<NaturalUser>('natural', data)\n }\n\n /**\n * Create a legal user\n */\n async createLegal(data: CreateLegalUserRequest): Promise<LegalUser> {\n return this.post<LegalUser>('legal', data)\n }\n\n /**\n * Get a user by ID\n */\n async getUser(userId: string): Promise<User> {\n return this.client.get<User>(this.path(userId))\n }\n\n /**\n * Get a natural user by ID\n */\n async getNaturalUser(userId: string): Promise<NaturalUser> {\n return this.client.get<NaturalUser>(this.path(['natural', userId]))\n }\n\n /**\n * Get a legal user by ID\n */\n async getLegalUser(userId: string): Promise<LegalUser> {\n return this.client.get<LegalUser>(this.path(['legal', userId]))\n }\n\n /**\n * Update a natural user\n */\n async updateNatural(userId: string, data: UpdateNaturalUserRequest): Promise<NaturalUser> {\n return this.put<NaturalUser>(`natural/${userId}`, data)\n }\n\n /**\n * Update a legal user\n */\n async updateLegal(userId: string, data: UpdateLegalUserRequest): Promise<LegalUser> {\n return this.put<LegalUser>(`legal/${userId}`, data)\n }\n\n /**\n * Get user's wallets\n */\n async getWallets(userId: string, params?: PaginationParams): Promise<PaginatedResponse<Wallet>> {\n return this.client.get<PaginatedResponse<Wallet>>(this.path([userId, 'wallets']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's cards\n */\n async getCards(userId: string, params?: PaginationParams): Promise<PaginatedResponse<Card>> {\n return this.client.get<PaginatedResponse<Card>>(this.path([userId, 'cards']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's bank accounts\n */\n async getBankAccounts(\n userId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<BankAccount>> {\n return this.client.get<PaginatedResponse<BankAccount>>(this.path([userId, 'bankaccounts']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n\n /**\n * Get user's transactions\n */\n async getTransactions(\n userId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<Transaction>> {\n return this.client.get<PaginatedResponse<Transaction>>(this.path([userId, 'transactions']), {\n params: params as Record<string, string | number | boolean | undefined | null>,\n })\n }\n}\n","/**\n * Wallets module\n */\n\nimport { BaseModule } from './base.js'\nimport type { HttpClient } from '../client.js'\nimport type { PaginatedResponse, PaginationParams } from '../types/common.js'\nimport type { CreateWalletRequest, UpdateWalletRequest, Wallet } from '../types/wallets.js'\n\n/**\n * Wallet transaction item\n */\ninterface WalletTransaction {\n Id: string\n Tag?: string\n CreationDate: number\n AuthorId: string\n Type: string\n Nature: string\n Status: string\n DebitedFunds: { Amount: number; Currency: string }\n CreditedFunds: { Amount: number; Currency: string }\n Fees: { Amount: number; Currency: string }\n DebitedWalletId?: string\n CreditedWalletId?: string\n}\n\n/**\n * Wallets API module\n */\nexport class WalletsModule extends BaseModule {\n constructor(client: HttpClient) {\n super(client, '/api/v1/mangopay/wallets')\n }\n\n /**\n * Create a wallet\n */\n async create(data: CreateWalletRequest): Promise<Wallet> {\n return this.post<Wallet>('', data)\n }\n\n /**\n * Get a wallet by ID\n */\n async getWallet(walletId: string): Promise<Wallet> {\n return this.client.get<Wallet>(this.path(walletId))\n }\n\n /**\n * Update a wallet\n */\n async update(walletId: string, data: UpdateWalletRequest): Promise<Wallet> {\n return this.put<Wallet>(walletId, data)\n }\n\n /**\n * Get wallet transactions\n */\n async getTransactions(\n walletId: string,\n params?: PaginationParams\n ): Promise<PaginatedResponse<WalletTransaction>> {\n return this.client.get<PaginatedResponse<WalletTransaction>>(\n this.path([walletId, 'transactions']),\n { params: params as Record<string, string | number | boolean | undefined | null> }\n )\n }\n}\n","/**\n * Main SDK client class\n */\n\nimport { HttpClient } from './client.js'\nimport {\n BankAccountsModule,\n CardRegistrationsModule,\n CardsModule,\n KycModule,\n PayinsModule,\n PayoutsModule,\n PortalModule,\n PreauthorizationsModule,\n ScaRecipientsModule,\n SubscriptionsModule,\n TransfersModule,\n UboModule,\n UsersModule,\n WalletsModule,\n} from './modules/index.js'\nimport type { FamOptions } from './client.js'\n\n/**\n * Main FAM SDK client\n *\n * @example\n * ```typescript\n * const client = new Fam({\n * baseUrl: 'https://api.fam.com',\n * token: 'your-auth-token',\n * })\n *\n * // Create a natural user\n * const user = await client.users.createNatural({\n * Email: 'user@example.com',\n * FirstName: 'John',\n * LastName: 'Doe',\n * })\n *\n * // Create a wallet\n * const wallet = await client.wallets.create({\n * Owners: [user.Id],\n * Description: 'Main wallet',\n * Currency: 'EUR',\n * })\n * ```\n */\nexport class Fam {\n private readonly client: HttpClient\n\n // Core modules\n public readonly users: UsersModule\n public readonly wallets: WalletsModule\n public readonly payins: PayinsModule\n public readonly payouts: PayoutsModule\n public readonly transfers: TransfersModule\n\n // Card modules\n public readonly cards: CardsModule\n public readonly cardRegistrations: CardRegistrationsModule\n public readonly preauthorizations: PreauthorizationsModule\n\n // FAM custom modules\n public readonly subscriptions: SubscriptionsModule\n public readonly portal: PortalModule\n\n constructor(options: FamOptions) {\n this.client = new HttpClient(options)\n\n // Initialize core modules\n this.users = new UsersModule(this.client)\n this.wallets = new WalletsModule(this.client)\n this.payins = new PayinsModule(this.client)\n this.payouts = new PayoutsModule(this.client)\n this.transfers = new TransfersModule(this.client)\n\n // Initialize card modules\n this.cards = new CardsModule(this.client)\n this.cardRegistrations = new CardRegistrationsModule(this.client)\n this.preauthorizations = new PreauthorizationsModule(this.client)\n\n // Initialize FAM custom modules\n this.subscriptions = new SubscriptionsModule(this.client)\n this.portal = new PortalModule(this.client)\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string): void {\n this.client.setToken(token)\n }\n\n /**\n * Clear the authentication token\n */\n clearToken(): void {\n this.client.clearToken()\n }\n\n /**\n * Get bank accounts module for a specific user\n */\n bankAccounts(userId: string): BankAccountsModule {\n return new BankAccountsModule(this.client, userId)\n }\n\n /**\n * Get KYC module for a specific user\n */\n kyc(userId: string): KycModule {\n return new KycModule(this.client, userId)\n }\n\n /**\n * Get UBO module for a specific user\n */\n ubo(userId: string): UboModule {\n return new UboModule(this.client, userId)\n }\n\n /**\n * Get SCA Recipients module for a specific user\n */\n scaRecipients(userId: string): ScaRecipientsModule {\n return new ScaRecipientsModule(this.client, userId)\n }\n}\n"]}
|