/** Stable request and query contracts shared by controllers and SMS configuration domains. */ export interface CreateSmsApplicationDto { tenantId: string; name: string; scene?: string; callbackUrl?: string; cmppAccount?: string; cmppEnterpriseCode?: string; cmppApplicationExtension?: string; cmppAccessNumberFillEnabled?: boolean; cmppAccessNumberFillPrefix?: string; passwordCipher?: string; interfaceEnabled?: boolean; interfaceType?: string; cmppMaxConnections?: number; cmppWindowSize?: number; dailyLimit?: number; customerUnitPrice?: number; queuePriority?: string; templateMismatchMode?: string; downstreamReceiptRetryEnabled?: boolean; downstreamUplinkRetryEnabled?: boolean; ipAllowlist?: string[]; } export type UpdateSmsApplicationDto = Partial> & { status?: string; }; export interface ReplaceApplicationRouteRulesDto { routes: Array<{ carrier: string; groupId: string; priority?: number; status?: string; }>; } export interface CreateSmsSignatureDto { tenantId: string; applicationId?: string; name: string; purpose?: string; drainageInfo?: Record; } export interface CreateSmsSignatureOptions { initialAuditStatus?: string; } export type UpdateSmsSignatureDto = Partial> & { auditStatus?: string; }; export interface CreateSmsDrainageInfoDto { siteName: string; url: string; remark?: string; reportValues?: Record; } export type UpdateSmsDrainageInfoDto = Partial; export interface DrainageInfoListQuery { tenantId?: string; signatureId?: string; status?: string; keyword?: string; submittedAtFrom?: string; submittedAtTo?: string; } export interface CreateSignatureMaterialDto { signatureId: string; fileObjectId?: string; materialType: string; title: string; description?: string; } export interface CreateSmsTemplateDto { tenantId: string; applicationId: string; signatureId?: string; name: string; content: string; category?: string; variables?: Array<{ name: string; example?: string; required?: boolean }>; } export interface CreateSmsTemplateOptions { initialAuditStatus?: string; } export type UpdateSmsTemplateDto = Partial> & { signatureId?: string | null; auditStatus?: string; }; export interface ReviewDto { reviewerId?: string; reason?: string; } export interface StatusChangeDto { status?: string; operatorId?: string; reason?: string; force?: boolean; } export interface TemplateListQuery { tenantId?: string; status?: string; keyword?: string; enterpriseKeyword?: string; applicationKeyword?: string; nameKeyword?: string; contentKeyword?: string; submittedAtFrom?: string; submittedAtTo?: string; page?: number; pageSize?: number; } export interface ApplicationListQuery { tenantId?: string; keyword?: string; enterpriseKeyword?: string; applicationKeyword?: string; status?: string; includeConnections?: boolean; page?: number; pageSize?: number; } export interface SignatureListQuery { tenantId?: string; keyword?: string; status?: string; enterpriseKeyword?: string; applicationKeyword?: string; signatureKeyword?: string; drainageKeyword?: string; submittedAtFrom?: string; submittedAtTo?: string; page?: number; pageSize?: number; } export interface GatewayDownstreamConnectionEventDto { account: string; connectionId: string; status: 'connected' | 'heartbeat' | 'submit' | 'deliver' | 'disconnected'; remoteIp?: string; protocol?: string; connectedAt?: string; observedAt?: string; errorMessage?: string; }