Problem
FlatFeePricing (used in signal pricing options) defines a fixed charge but does not specify what period that charge covers:
```typescript
interface FlatFeePricing {
model: 'flat_fee';
amount: number;
currency: string;
}
```
The JSDoc says "Fixed charge per reporting period, regardless of impressions or spend. Used for licensed data bundles and monthly audience subscriptions." — but buyers have no way to know whether amount represents a monthly, quarterly, per-campaign, or per-activation charge. This matters for budget planning and cost comparison across signals agents.
Proposed fix
Add an optional period field with a defined set of values:
```typescript
interface FlatFeePricing {
model: 'flat_fee';
amount: number;
currency: string;
/** Billing period for the flat fee. Defaults to 'monthly' when omitted. */
period?: 'monthly' | 'quarterly' | 'annual' | 'campaign';
}
```
This mirrors how platforms like Nielsen, IRI, and LiveRamp structure their licensed data pricing contracts.
Problem
FlatFeePricing(used in signal pricing options) defines a fixed charge but does not specify what period that charge covers:```typescript
interface FlatFeePricing {
model: 'flat_fee';
amount: number;
currency: string;
}
```
The JSDoc says "Fixed charge per reporting period, regardless of impressions or spend. Used for licensed data bundles and monthly audience subscriptions." — but buyers have no way to know whether
amountrepresents a monthly, quarterly, per-campaign, or per-activation charge. This matters for budget planning and cost comparison across signals agents.Proposed fix
Add an optional
periodfield with a defined set of values:```typescript
interface FlatFeePricing {
model: 'flat_fee';
amount: number;
currency: string;
/** Billing period for the flat fee. Defaults to 'monthly' when omitted. */
period?: 'monthly' | 'quarterly' | 'annual' | 'campaign';
}
```
This mirrors how platforms like Nielsen, IRI, and LiveRamp structure their licensed data pricing contracts.