diff --git a/services/collector/src/dto/attribution.dto.ts b/services/collector/src/dto/attribution.dto.ts index 323a8b1..d6ff3b9 100644 --- a/services/collector/src/dto/attribution.dto.ts +++ b/services/collector/src/dto/attribution.dto.ts @@ -1,5 +1,5 @@ import { ApiProperty } from '@nestjs/swagger'; -import { IsOptional, IsString } from 'class-validator'; +import { IsNumber, IsOptional, IsString } from 'class-validator'; /** * UTM attribution parameters (first-touch) @@ -34,4 +34,14 @@ export class AttributionDto { @IsOptional() @IsString() referrer?: string; + + @ApiProperty({ description: 'Landing page URL at time of attribution capture', required: false }) + @IsOptional() + @IsString() + landingPage?: string; + + @ApiProperty({ description: 'Timestamp when attribution was captured (ms since epoch)', required: false }) + @IsOptional() + @IsNumber() + capturedAt?: number; } diff --git a/services/collector/src/dto/client-device.dto.ts b/services/collector/src/dto/client-device.dto.ts index 27bfb8d..69a9a68 100644 --- a/services/collector/src/dto/client-device.dto.ts +++ b/services/collector/src/dto/client-device.dto.ts @@ -76,8 +76,17 @@ export class ClientDeviceDto { @IsBoolean() cookiesEnabled?: boolean; - @ApiProperty({ description: 'Do Not Track header set', required: false }) + @ApiProperty({ description: 'Do Not Track header value', required: false }) + @IsOptional() + doNotTrack?: string | boolean | null; + + @ApiProperty({ description: 'Navigator platform string', required: false }) + @IsOptional() + @IsString() + platform?: string; + + @ApiProperty({ description: 'Browser online status', required: false }) @IsOptional() @IsBoolean() - doNotTrack?: boolean; + onLine?: boolean; }