refactor: strengthen client boundaries and quality gates
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
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';
|
||||
}
|
||||
Reference in New Issue
Block a user