import { IsString, IsOptional, IsObject } from 'class-validator';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';

export class TwilioWebhookEventDto {
  @ApiProperty({ description: 'Message SID from Twilio' })
  @IsString()
  @IsOptional()
  MessageSid?: string;

  @ApiProperty({ description: 'Event status', example: 'delivered' })
  @IsString()
  @IsOptional()
  MessageStatus?: string;

  @ApiPropertyOptional({ description: 'Phone number (To)' })
  @IsString()
  @IsOptional()
  To?: string;

  @ApiPropertyOptional({ description: 'Phone number (From)' })
  @IsString()
  @IsOptional()
  From?: string;

  @ApiPropertyOptional({ description: 'Account SID' })
  @IsString()
  @IsOptional()
  AccountSid?: string;

  @ApiPropertyOptional({ description: 'Error code' })
  @IsString()
  @IsOptional()
  ErrorCode?: string;

  @ApiPropertyOptional({ description: 'Error message' })
  @IsString()
  @IsOptional()
  ErrorMessage?: string;

  @ApiPropertyOptional({ description: 'Message body' })
  @IsString()
  @IsOptional()
  Body?: string;

  @ApiPropertyOptional({ description: 'Raw webhook data' })
  @IsObject()
  @IsOptional()
  rawData?: Record<string, unknown>;
}

