import { IsEmail, IsString, MinLength, IsOptional } from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; export class RegisterDto { @ApiProperty({ example: 'user@example.com' }) @IsEmail() email: string; @ApiProperty({ example: 'password123', minLength: 8 }) @IsString() @MinLength(8) password: string; @ApiPropertyOptional({ example: 'John' }) @IsOptional() @IsString() firstName?: string; @ApiPropertyOptional({ example: 'Doe' }) @IsOptional() @IsString() lastName?: string; } export class LoginDto { @ApiProperty({ example: 'user@example.com' }) @IsEmail() email: string; @ApiProperty({ example: 'password123' }) @IsString() password: string; } export class RefreshTokenDto { @ApiProperty() @IsString() refreshToken: string; } export class UserInfoDto { @ApiProperty() id: string; @ApiProperty() email: string; @ApiProperty({ required: false }) firstName?: string; @ApiProperty({ required: false }) lastName?: string; @ApiProperty() roles: string[]; } export class TokenResponseDto { @ApiProperty() accessToken: string; @ApiProperty() refreshToken: string; @ApiProperty() expiresIn: number; @ApiProperty({ type: UserInfoDto }) user: UserInfoDto; }