import { ZeniAPIResponse } from '../../../responsePayload'; export type InvoicingMigrationSessionsResponse = ZeniAPIResponse; export type InvoicingDataImportStatusResponse = ZeniAPIResponse; export type InvoicingMigrationSessionResponse = ZeniAPIResponse; export type InvoicingMigrationDiagnosticsResponse = ZeniAPIResponse; export type InvoicingMigrationStatus = 'scanning' | 'review' | 'importing' | 'done' | 'failed' | 'rolled_back'; export interface InvoicingMigrationIssue { level: 'error' | 'warning'; message: string; count?: number; } export interface InvoicingMigrationModuleSummary { id: string; imported: number; issues: InvoicingMigrationIssue[]; label: string; skipped: number; state: 'pending' | 'scanning' | 'scanned' | 'importing' | 'imported'; total: number; warnings: number; } export interface InvoicingMigrationSummary { imported: number; skipped: number; total_records: number; warnings: number; } export interface InvoicingMigrationSession { created_at: string; id: string; modules: InvoicingMigrationModuleSummary[]; site: string; source: 'chargebee_api' | 'csv_upload'; status: InvoicingMigrationStatus; summary: InvoicingMigrationSummary; updated_at: string; catalog_version?: string; /** Present only on the rollback response. */ deleted?: number; diagnostics_expires_at?: string | null; error?: string | null; rollback_available_until?: string | null; } export interface InvoicingMigrationDiagnostic { created_at: string; expires_at: string; id: string; issues: InvoicingMigrationIssue[]; migration_id: string; module_id: string; outcome: 'skipped' | 'warning'; source_id: string; source_type: 'chargebee_api' | 'csv_upload'; updated_at: string; row_number?: number | null; source_file?: string | null; source_resource?: string | null; } export interface InvoicingMigrationDiagnosticsPage { diagnostics_expires_at: string | null; expired: boolean; items: InvoicingMigrationDiagnostic[]; next_cursor: string | null; } export interface InvoicingMigrationDiagnosticFilters { level?: 'error' | 'warning'; moduleId?: string; outcome?: 'skipped' | 'warning'; search?: string; } export interface FetchInvoicingMigrationDiagnosticsPayload extends InvoicingMigrationDiagnosticFilters { sessionId: string; cursor?: string; } export interface InvoicingDataImportStatusRow { id: string; last_imported: string | null; module: string; records: number; session_id: string | null; source: string; status: 'in_sync' | 'skipped' | 'warnings' | 'error' | 'pending'; status_count: number; }