export type MigrationInstallmentPreferences = {cadence?: ('none' | 'fullPay' | 'weekly' | 'everyOtherWeek' | 'monthly' | 'quarterly' | 'semiannually' | 'annually' | 'thirtyDays' | 'everyNDays') | undefined, anchorMode?: ('generateDay' | 'termStartDay' | 'dueDay') | undefined, generateLeadDays?: number | undefined, dueLeadDays?: number | undefined, installmentWeights: Array, maxInstallmentsPerTerm?: number | undefined, installmentPlanName?: string | undefined, anchorType?: ('none' | 'dayOfMonth' | 'anchorTime' | 'dayOfWeek' | 'weekOfMonth') | undefined, dayOfMonth?: number | undefined, dayOfWeek?: ('monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday') | undefined, weekOfMonth?: ('none' | 'first' | 'second' | 'third' | 'fourth' | 'fifth') | undefined, anchorTime?: string | undefined, autopayLeadDays?: number | undefined}; export type MigrationPreferences = {installmentPreferences?: MigrationInstallmentPreferences | undefined}; export type AccountMigrationData = {id: string, accountType: string, data: {[key: string]: Record}, createdAt: string, createdBy?: string | undefined, delinquencyPlanName?: string | undefined, autoRenewalPlanName?: string | undefined, excessCreditPlanName?: string | undefined, shortfallTolerancePlanName?: string | undefined, preferences?: MigrationPreferences | undefined, billingLevel?: ('account' | 'inherit' | 'policy') | undefined}; export type InstallmentItemMigrationRequest = {id: string, amount: number, installmentNumber: number}; export type ChargeMigrationRequest = {rate: number, referenceRate: number, chargeType: string, tag: string, installmentItems: Array}; export type ElementMigrationRequest = {id: string, elementType: string, data: {[key: string]: Record}, coverageTerms: {[key: string]: Record}, elements: Array, charges: Array}; export type SegmentMigrationRequest = {startTime: string, rootElement: ElementMigrationRequest, segmentType: 'coverage' | 'gap'}; export type InstallmentMigrationRequest = {id: string, invoiceId: string, startTime: string, generateTime: string, dueTime: string}; export type TransactionMigrationRequest = {transactionType: string, createdAt: string, createdBy: string, issuedTime: string, segment?: SegmentMigrationRequest | undefined, installments: Array, preferences?: MigrationPreferences | undefined}; export type TermMigrationRequest = {startTime: string, endTime: string, transactions: Array}; export type AuxDataEntryMigrationRequest = {key: string, value: string}; export type AuxDataMigrationRequest = {entries: Array, settingsName: string}; export type PolicyMigrationRequest = {createdBy: string, createdAt: string, id: string, productName: string, timezone?: string | undefined, currency?: string | undefined, durationBasis: 'years' | 'months' | 'weeks' | 'days' | 'hours', staticData: {[key: string]: Record}, terms: Array, delinquencyPlanName?: string | undefined, autoRenewalPlanName?: string | undefined, preferences?: MigrationPreferences | undefined, billingLevel?: ('account' | 'inherit' | 'policy') | undefined, auxData?: AuxDataMigrationRequest | undefined}; export type InvoiceMigrationRequest = {id: string, startTime: string, endTime: string, generateTime: string, dueTime: string, currency?: string | undefined, timezone?: string | undefined, invoiceState?: ('building' | 'open' | 'settled' | 'discarded') | undefined}; export type PaymentItemMigrationRequest = {amount: number, invoiceId: string}; export type PaymentMigrationRequest = {createdBy?: string | undefined, id: string, paymentTime: string, paymentItems: Array, paymentType: string, data: {[key: string]: Record}, currency?: string | undefined}; export type CreditItemMigrationRequest = {amount: number}; export type DisbursementMigrationRequest = {id: string, disbursementType: string, data: {[key: string]: Record}, disbursementTime: string, sources: Array, currency?: string | undefined}; export type AccountingMigrationRequest = {originalAccountBalances: {[key: string]: number}}; export type AccountMigrationRequest = {defaultCreatedBy: string, accountData: AccountMigrationData, policies: Array, invoices: Array, payments: Array, disbursements: Array, accounting: AccountingMigrationRequest}; export type CreateApiMigrationTenantLocatorMigrationsArgs = {tenantLocator: string, 'X-Idempotency-Key'?: string | undefined, body: Array}; export type CreateApiMigrationTenantLocatorMigrationsOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; /** * POST /migration/{tenantLocator}/migrations */ export const createApiMigrationTenantLocatorMigrations = async (args: CreateApiMigrationTenantLocatorMigrationsArgs, options: CreateApiMigrationTenantLocatorMigrationsOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "*/*") if (args['X-Idempotency-Key'] != null) headers.set("X-Idempotency-Key", String(args['X-Idempotency-Key'])) const url = `${baseUrl.replace(/\/+$/, '')}/migration/${encodeURIComponent(String(args.tenantLocator))}/migrations${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return res.blob() };