/** * API response types - mirrors ECM DTOs */ export interface PageableResponse { content: T[]; count: number; hasMore: boolean; } export interface DetailedCustomerEntry { id: string; name: string; active: boolean; billing: boolean; hasPassword: number; contactName: string; contactEmail: string; refId: string; minRate: number; implementationType: string; createdAt: string; updatedAt: string; userCount: number; userLimit: number; lastActive: string; } export interface DetailedHostEntry { id: string; customerId: string; name: string; customerName: string; host: string; key: string; secret: string; active: boolean; flags: number; rate: number; theme: string; logo: string; successUrl: string; failureUrl: string; smfaTargetUrl: string; hook: string; hookUser: string; hookPass: string; hookActive: boolean; sendEmail: boolean; sendSMS: boolean; userCount: number; userLimit: number; createdAt: string; updatedAt: string; lastActive: string; } export interface AdminUserRespDTO { id: string; hostId: string; email: string; mobile: string; fname: string; lname: string; enrollmentId: string; flags: number; totalAlerts: number; unreadAlerts: number; active: boolean; paused: boolean; deletedAt: string | null; smsMsg: boolean; emailMsg: boolean; pushMsg: boolean; createdAt: string; updatedAt: string; demo: boolean; hasPassword: boolean; } export interface UserLogEntry { id: string; type: string; ip: number; detail: string; createdAt: number; } export interface EnrollmentFeatureResponse { enrolledFeatures: number; features?: Array<{ code: string; name: string; enrolled: boolean; }>; } export interface IdentityReqDTO { dob: string; mobile: string; ssn: string; street1: string; street2: string; city: string; state: string; zip: string; country: string; fname: string; lname: string; mname: string; suffix: string; email: string; } export type TrustComponentsRespDTO = Record; export interface StatsEntry { i: number; h: string; c: number; } export interface StatsResponse { st: string; end: string; data: StatsEntry[]; } export interface BillingResponse { st: string; end: string; data: unknown; } export interface DetailedUserEntry { id: string; hostId: string; customerName: string; email: string; mobile: string; fname: string; lname: string; hostName: string; enrollmentId: string; flags: number; totalAlerts: number; unreadAlerts: number; isActive: boolean; isDemo: boolean; isPaused: boolean; pushMsg: boolean; emailMsg: boolean; smsMsg: boolean; hasPassword: number; createdAt: string; enrolledAt: string; updatedAt: string; deletedAt: string | null; featuresFailedReason: string | null; } export interface MetricLogDTO { status: string; total: number; percentage: number; statusCode?: number; } export interface EnrollmentQueueEntry { userId: string; userEmail: string; enrollmentId: string; firstName: string; lastName: string; customerName: string; hostName: string; creationDate: string; action: string; actor: string; status: string; errorMessages: string; enrolledAt: string; deletedAt: string | null; } export interface UnenrollmentQueueEntry { userId: string; userEmail: string; enrollmentId: string; firstName: string; lastName: string; customerName: string; hostName: string; creationDate: string; status: string; errorMessages: string; attempts: number; } export interface EfxConfigRespDTO { secret: string; id: string; url: string; } export interface ReportMetadataItem { reportId: string; reportType: string; bureau: string; updateType: string; generatedAt: string; createdAt: string; } export interface ReportMetadataResponse { userId: string; totalReports: number; reports: ReportMetadataItem[]; } export interface EncryptedReportItem extends ReportMetadataItem { report: unknown; } export interface EncryptedReportsResponse { userId: string; totalReports: number; reports: EncryptedReportItem[]; } export type HostStatsRespDTO = StatsResponse; export interface CustomerUserRespDTO { id: string; hostId: string; email: string; mobile: string; fname: string; lname: string; enrollmentId: string; flags: number; hasPassword: number; createdAt: string; updatedAt: string; active: boolean; [key: string]: unknown; } export interface ScoreAndReportAuditDTO { id: string; userId: string; userEmail: string; enrollmentId: string; responseType: string; generatedAt: string; cacheType: string; status: string; createdAt: string; expired: boolean; } export interface ScoreAndReportAuditRespDTO { reportCount: number; scoreCount: number; totalCount: number; logs: ScoreAndReportAuditDTO[]; } export interface EsdIncidentSummary { id: string; user: unknown; error: unknown; emailBody: unknown; status: string; comments: unknown; createdAt: string; updatedAt: string; [key: string]: unknown; } export interface EsdComment { id: string; incident: unknown; comment: string; author: unknown; createdAt: string; } export interface HostBillingEntry { id: string; name: string; costPerUser: number; billedUsers: number; total: number; newEnrolled: number; active: number; closed: number; activeClosed: number; paused: number; } export interface BatchOperationResponse { status: string; message: string; submittedAt: string; errors: UserErrorEntry[]; } export interface UserErrorEntry { userId: string; reason: string; } export interface PreScreeningLogSummaryDTO { requestId: string; customerName: string; consumerFirstName: string; consumerLastName: string; status: string; httpStatusCode: number; errorMessage: string | null; createdAt: string; bureauHitCode: string | null; ruleSetId: string; } export interface PreScreeningLogDTO { id: string; customerId: string; customerName: string; requestId: string; resultId: string; request: unknown; result: unknown; ruleSet: unknown; bureauRequest: unknown; bureauResponse: unknown; ruleEvaluation: unknown; bureauResponseCode: string | null; bureauResponseMessage: string | null; bureauProcessingTimeMs: number | null; totalProcessingTimeMs: number | null; errorStage: string | null; errorMessage: string | null; httpStatusCode: number; status: string; clientIp: string | null; httpMethod: string; httpPath: string; httpRequestHeaders: unknown; httpRequestBody: unknown; httpResponseHeaders: unknown; httpResponseBody: unknown; createdAt: string; updatedAt: string; } export interface PreScreeningProductRuleDTO { attributeCode: string; operator: string; value: unknown; description: string | null; metadata: Record | null; } export interface PreScreeningProductDTO { id: string; ruleSetId: string; productName: string; description: string | null; category: string | null; status: string; rules: { attributeRules: PreScreeningProductRuleDTO[]; } | null; createdAt: string; updatedAt: string; customerId: string | null; customerName: string | null; isShared: boolean; pushedToProd: boolean; } export interface IdentityMonitorDTO { customerId?: string; customerName?: string; registered: number; dataReceived: number; dataReceivedPercentage: number; ditApprove: number; ditApprovePercentage: number; linkSent: number; linkSentPercentage: number; linkOpened: number; linkOpenedPercentage: number; smsAuthentication: number; smsAuthenticationPercentage: number; smfaVerified: number; smfaVerifiedPercentage: number; enrollment: number; enrollmentPercentage: number; }