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 PatchAccountMigrationRequest = {defaultCreatedBy: string, accountLocator: unknown, accountData?: AccountMigrationData | undefined, policies: {[key: string]: PolicyMigrationRequest}, invoices: {[key: string]: InvoiceMigrationRequest}, payments: {[key: string]: PaymentMigrationRequest}, disbursements: {[key: string]: DisbursementMigrationRequest}}; export type PatchApiMigrationTenantLocatorMigrationsMigrationLocatorArgs = {tenantLocator: string, migrationLocator: unknown, body: PatchAccountMigrationRequest}; export type PatchApiMigrationTenantLocatorMigrationsMigrationLocatorOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; /** * PATCH /migration/{tenantLocator}/migrations/{migrationLocator} */ export const patchApiMigrationTenantLocatorMigrationsMigrationLocator = async (args: PatchApiMigrationTenantLocatorMigrationsMigrationLocatorArgs, options: PatchApiMigrationTenantLocatorMigrationsMigrationLocatorOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "*/*") const url = `${baseUrl.replace(/\/+$/, '')}/migration/${encodeURIComponent(String(args.tenantLocator))}/migrations/${encodeURIComponent(String(args.migrationLocator))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "PATCH", 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() };