import { Transform } from 'class-transformer'; import { IsBoolean, IsDateString, IsIn, IsOptional, IsString, IsUrl, MaxLength, ValidateIf } from 'class-validator'; export enum ClientWebhookEventType { Receipt = 'receipt', Uplink = 'uplink', } export class ClientHttpCredentialDto { @IsOptional() @IsString() @MaxLength(100) name?: string; @IsOptional() @IsDateString({ strict: true }) expiresAt?: string; } export class ClientWebhookDto { @Transform(({ value }) => (typeof value === 'string' ? value.trim() : value)) @IsString() @MaxLength(2048) @ValidateIf(({ url }) => url !== '') @IsUrl({ require_protocol: true, require_tld: false, protocols: ['http', 'https'] }) url!: string; @IsOptional() @IsBoolean() rotateSecret?: boolean; @IsOptional() @IsIn(['active', 'inactive']) status?: 'active' | 'inactive'; }