import { ArrayNotEmpty, IsArray, IsBoolean, IsNotEmpty, IsObject, IsOptional, IsString, IsUrl, MaxLength, MinLength, } from "class-validator"; export class CreateProviderDto { @IsString({ message: "name must be a string" }) @IsNotEmpty({ message: "name is required" }) @MaxLength(100, { message: "name must not exceed 100 characters" }) name!: string; @IsString({ message: "displayName must be a string" }) @IsNotEmpty({ message: "displayName is required" }) @MaxLength(255, { message: "displayName must not exceed 255 characters" }) displayName!: string; @IsString({ message: "type must be a string" }) @IsNotEmpty({ message: "type is required" }) @MaxLength(100, { message: "type must not exceed 100 characters" }) type!: string; @IsOptional() @IsUrl( { require_tld: false }, { message: "baseUrl must be a valid URL (for example: https://api.example.com/v1)" } ) baseUrl?: string; @IsOptional() @IsString({ message: "apiKey must be a string" }) apiKey?: string; @IsOptional() @IsString({ message: "apiType must be a string" }) @MaxLength(100, { message: "apiType must not exceed 100 characters" }) apiType?: string; @IsOptional() @IsArray({ message: "models must be an array" }) @IsObject({ each: true, message: "each model must be an object" }) models?: Record[]; } export class UpdateProviderDto { @IsOptional() @IsString({ message: "displayName must be a string" }) @MaxLength(255, { message: "displayName must not exceed 255 characters" }) displayName?: string; @IsOptional() @IsUrl( { require_tld: false }, { message: "baseUrl must be a valid URL (for example: https://api.example.com/v1)" } ) baseUrl?: string; @IsOptional() @IsString({ message: "apiKey must be a string" }) apiKey?: string; @IsOptional() @IsBoolean({ message: "isActive must be a boolean" }) isActive?: boolean; @IsOptional() @IsArray({ message: "models must be an array" }) @IsObject({ each: true, message: "each model must be an object" }) models?: Record[]; } export class UpdateAgentConfigDto { @IsOptional() @IsString({ message: "primaryModel must be a string" }) @MaxLength(255, { message: "primaryModel must not exceed 255 characters" }) primaryModel?: string; @IsOptional() @IsArray({ message: "fallbackModels must be an array" }) @ArrayNotEmpty({ message: "fallbackModels cannot be empty" }) @IsString({ each: true, message: "each fallback model must be a string" }) fallbackModels?: string[]; @IsOptional() @IsString({ message: "personality must be a string" }) personality?: string; } export class UpdateOidcDto { @IsString({ message: "issuerUrl must be a string" }) @IsNotEmpty({ message: "issuerUrl is required" }) @IsUrl( { require_tld: false }, { message: "issuerUrl must be a valid URL (for example: https://issuer.example.com)" } ) issuerUrl!: string; @IsString({ message: "clientId must be a string" }) @IsNotEmpty({ message: "clientId is required" }) clientId!: string; @IsString({ message: "clientSecret must be a string" }) @IsNotEmpty({ message: "clientSecret is required" }) clientSecret!: string; } export class ResetPasswordDto { @IsString({ message: "username must be a string" }) @IsNotEmpty({ message: "username is required" }) username!: string; @IsString({ message: "newPassword must be a string" }) @MinLength(8, { message: "newPassword must be at least 8 characters" }) newPassword!: string; }