Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion docs/media-buy/targeting-dimensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ These are provided to AXE but not available for overlay targeting:
- **timezone**: User's timezone (required for dayparting calculations)
- **postal_code**: Full postal/ZIP code
- **postal_district**: First part of postal code
- **lat_long**: Geographic coordinates

## Audio Channel

Expand Down
11 changes: 4 additions & 7 deletions docs/media-buy/targeting.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,12 @@ Basic time-based impression suppression:
```json
{
"frequency_cap": {
"suppress_minutes": 30, // Suppress for 30 minutes after impression
"scope": "media_buy" // Apply at media_buy or package level
"suppress_minutes": 30 // Suppress for 30 minutes after impression (applied at package level)
}
}
```

**Note**: This provides simple suppression. More sophisticated frequency management (cross-device, complex attribution windows, household-level) is handled by the AXE layer.
**Note**: This provides simple suppression at the package level. More sophisticated frequency management (cross-device, complex attribution windows, household-level) is handled by the AXE layer.

### Custom Platform Targeting

Expand Down Expand Up @@ -142,8 +141,7 @@ Media buys apply targeting through the overlay:
"geo_region_any_of": ["CA", "NY"],
"audience_segment_any_of": ["3p:sports_fans"],
"frequency_cap": {
"suppress_minutes": 30,
"scope": "media_buy"
"suppress_minutes": 30
}
}
}
Expand Down Expand Up @@ -204,8 +202,7 @@ Example error:
]
},
"frequency_cap": {
"suppress_minutes": 180, // 3 hours
"scope": "package" // Applied at package level for CTV
"suppress_minutes": 180 // 3 hours (applied at package level for CTV)
}
}
```
Expand Down
17 changes: 4 additions & 13 deletions docs/media-buy/tasks/create_media_buy.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ Create a media buy from selected packages. This task handles the complete workfl
| `geo_region_any_of` | string[] | No | Target specific regions/states |
| `geo_metro_any_of` | string[] | No | Target specific metro areas (DMA codes) |
| `geo_postal_code_any_of` | string[] | No | Target specific postal/ZIP codes |
| `geo_lat_long_radius` | object | No | Target by geographic coordinates and radius |
| `device_type_any_of` | string[] | No | Target specific device types (desktop, mobile, tablet, connected_tv, smart_speaker) |
| `os_any_of` | string[] | No | Target specific operating systems (windows, macos, ios, android, linux, roku, tvos, other) |
| `browser_any_of` | string[] | No | Target specific browsers (chrome, firefox, safari, edge, other) |
Expand All @@ -60,15 +59,13 @@ Create a media buy from selected packages. This task handles the complete workfl
|-----------|------|----------|-------------|
| `total` | number | Yes | Total budget amount |
| `currency` | string | Yes | ISO 4217 currency code (e.g., "USD", "EUR", "GBP") |
| `daily_cap` | number | No | Daily budget cap (null for no limit) |
| `pacing` | string | No | Pacing strategy: `"even"`, `"asap"`, or `"front_loaded"` (default: `"even"`) |
| `pacing` | string | No | Pacing strategy: `"even"` (allocate remaining budget evenly over remaining time), `"asap"` (spend remaining budget as quickly as possible), or `"front_loaded"` (allocate more remaining budget earlier) - default: `"even"` |

### Frequency Cap Object

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `suppress_minutes` | number | Yes | Minutes to suppress after impression |
| `scope` | string | No | Apply at `"media_buy"` or `"package"` level |
| `suppress_minutes` | number | Yes | Minutes to suppress after impression (applied at package level) |

## Response (Message)

Expand Down Expand Up @@ -156,7 +153,6 @@ The AdCP payload is identical across protocols. Only the request/response wrappe
"budget": {
"total": 100000,
"currency": "USD",
"daily_cap": 5000,
"pacing": "even"
}
}
Expand Down Expand Up @@ -292,7 +288,6 @@ await a2a.send({
"budget": {
"total": 100000,
"currency": "USD",
"daily_cap": 5000,
"pacing": "even"
}
}
Expand Down Expand Up @@ -582,8 +577,7 @@ data: {"status": {"state": "completed"}, "artifacts": [...]}
"axe_include_segment": "x7h4n",
"signals": ["auto_intenders_q1_2025"],
"frequency_cap": {
"suppress_minutes": 30,
"scope": "package"
"suppress_minutes": 30
}
}
},
Expand Down Expand Up @@ -625,7 +619,6 @@ data: {"status": {"state": "completed"}, "artifacts": [...]}
"budget": {
"total": 75000,
"currency": "USD",
"daily_cap": 2500,
"pacing": "even"
},
"targeting_overlay": {
Expand All @@ -634,8 +627,7 @@ data: {"status": {"state": "completed"}, "artifacts": [...]}
"axe_include_segment": "x3f9q",
"axe_exclude_segment": "x2v8r",
"frequency_cap": {
"suppress_minutes": 60,
"scope": "package"
"suppress_minutes": 60
}
}
}
Expand All @@ -647,7 +639,6 @@ data: {"status": {"state": "completed"}, "artifacts": [...]}
"budget": {
"total": 75000,
"currency": "USD",
"daily_cap": 2500,
"pacing": "even"
}
}
Expand Down
4 changes: 2 additions & 2 deletions docs/media-buy/tasks/update_media_buy.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ data: {"artifacts": [{"name": "update_confirmation", "parts": [{"kind": "text",
```

#### Response - Immediate Update
**Message**: "Campaign updated successfully. Budget increased from $50,000 to $75,000 (+50%), giving you more reach for the extended flight through February 28. CTV package switched to front-loaded pacing to maximize early delivery, while audio package has been paused. Changes take effect immediately."
**Message**: "Campaign updated successfully. Budget increased from $50,000 to $75,000 (+50%), giving you more reach for the extended flight through February 28. CTV package switched to front-loaded pacing to allocate more remaining budget earlier in the remaining campaign period, while audio package has been paused. Changes take effect immediately."

**Payload**:
```json
Expand Down Expand Up @@ -458,7 +458,7 @@ For A2A implementations, task status is delivered via:
- Budget increases may require approval based on publisher policies
- Pausing a campaign preserves all settings and can be resumed anytime
- Package-level updates override campaign-level settings
- Some updates may affect pacing calculations and delivery patterns
- Some updates may affect how remaining budget is allocated over remaining time

## Platform Implementation

Expand Down
1 change: 0 additions & 1 deletion docs/reference/data-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ interface Targeting {
signals?: string[];
frequency_cap?: {
suppress_minutes: number;
scope: 'media_buy' | 'package';
};
}
```
Expand Down
5 changes: 0 additions & 5 deletions static/schemas/v1/core/budget.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,6 @@
"pattern": "^[A-Z]{3}$",
"examples": ["USD", "EUR", "GBP"]
},
"daily_cap": {
"type": ["number", "null"],
"description": "Daily budget cap (null for no limit)",
"minimum": 0
},
"pacing": {
"$ref": "/schemas/v1/enums/pacing.json"
}
Expand Down
5 changes: 1 addition & 4 deletions static/schemas/v1/core/frequency-cap.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/schemas/v1/core/frequency-cap.json",
"title": "Frequency Cap",
"description": "Frequency capping settings",
"description": "Frequency capping settings for package-level application",
"type": "object",
"properties": {
"suppress_minutes": {
"type": "number",
"description": "Minutes to suppress after impression",
"minimum": 0
},
"scope": {
"$ref": "/schemas/v1/enums/frequency-cap-scope.json"
}
},
"required": ["suppress_minutes"],
Expand Down
25 changes: 0 additions & 25 deletions static/schemas/v1/core/targeting.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,31 +34,6 @@
"type": "string"
}
},
"geo_lat_long_radius": {
"type": "object",
"description": "Target by geographic coordinates and radius",
"properties": {
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude coordinate"
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude coordinate"
},
"radius_km": {
"type": "number",
"minimum": 0.1,
"description": "Radius in kilometers"
}
},
"required": ["latitude", "longitude", "radius_km"],
"additionalProperties": false
},
"audience_segment_any_of": {
"type": "array",
"description": "Audience segment IDs to target",
Expand Down
3 changes: 1 addition & 2 deletions static/schemas/v1/enums/frequency-cap-scope.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
"title": "Frequency Cap Scope",
"description": "Scope for frequency cap application",
"type": "string",
"enum": ["media_buy", "package"],
"enum": ["package"],
"enumDescriptions": {
"media_buy": "Apply frequency cap across the entire media buy",
"package": "Apply frequency cap at the package level"
}
}
6 changes: 3 additions & 3 deletions static/schemas/v1/enums/pacing.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
"type": "string",
"enum": ["even", "asap", "front_loaded"],
"enumDescriptions": {
"even": "Spend budget evenly over the campaign duration",
"asap": "Spend budget as quickly as possible",
"front_loaded": "Spend more budget at the beginning of the campaign"
"even": "Allocate remaining budget evenly over remaining campaign duration (default)",
"asap": "Spend remaining budget as quickly as possible",
"front_loaded": "Allocate more remaining budget earlier in the remaining campaign period"
}
}
3 changes: 1 addition & 2 deletions tests/example-validation.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,7 @@ const exampleData = {
},

frequencyCap: {
"suppress_minutes": 1440,
"scope": "media_buy"
"suppress_minutes": 1440
},

format: {
Expand Down