36 lines
859 B
TypeScript
36 lines
859 B
TypeScript
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';
|
|
}
|