import type { ValidationSchema } from '../../config/validator.js'; /** * SMS service configuration schema */ export const smsConfigSchema: ValidationSchema = { apiGatewayApiToken: { type: 'string', required: true }, defaultSender: { type: 'string', required: false }, rateLimit: { type: 'object', required: false, schema: { enabled: { type: 'boolean', required: false, default: true }, maxPerPeriod: { type: 'number', required: false, default: 100, min: 1 }, periodMs: { type: 'number', required: false, default: 60000, // 1 minute min: 1000 }, perKey: { type: 'boolean', required: false, default: true }, burstTokens: { type: 'number', required: false, default: 5, min: 0 }, maxPerRecipientPerDay: { type: 'number', required: false, default: 10, min: 1 } } }, provider: { type: 'object', required: false, schema: { type: { type: 'string', required: false, enum: ['gateway', 'twilio', 'other'], default: 'gateway' }, config: { type: 'object', required: false }, fallback: { type: 'object', required: false, schema: { enabled: { type: 'boolean', required: false, default: false }, type: { type: 'string', required: false, enum: ['gateway', 'twilio', 'other'] }, config: { type: 'object', required: false } } } } }, verification: { type: 'object', required: false, schema: { codeLength: { type: 'number', required: false, default: 6, min: 4, max: 10 }, expirationSeconds: { type: 'number', required: false, default: 300, // 5 minutes min: 60 }, maxAttempts: { type: 'number', required: false, default: 3, min: 1 }, cooldownSeconds: { type: 'number', required: false, default: 60, // 1 minute min: 0 } } } };