diff --git a/.changeset/fix-package-request-fields.md b/.changeset/fix-package-request-fields.md new file mode 100644 index 0000000000..d8b68492b7 --- /dev/null +++ b/.changeset/fix-package-request-fields.md @@ -0,0 +1,22 @@ +--- +"adcontextprotocol": patch +--- + +Add missing fields to package request schemas for consistency with core/package.json. + +**Schema Changes:** + +- `media-buy/package-request.json`: Added `impressions` and `paused` fields +- `media-buy/update-media-buy-request.json`: Added `impressions` field to package updates + +**Details:** + +- `impressions`: Impression goal for the package (optional, minimum: 0) +- `paused`: Create package in paused state (optional, default: false) + +These fields were defined in `core/package.json` but missing from the request schemas, making it impossible to set impression goals or initial paused state when creating/updating media buys. + +**Documentation:** + +- Updated `create_media_buy` task reference with new package parameters +- Updated `update_media_buy` task reference with impressions parameter diff --git a/docs/media-buy/task-reference/create_media_buy.mdx b/docs/media-buy/task-reference/create_media_buy.mdx index f5dfdeae9b..80001c91ba 100644 --- a/docs/media-buy/task-reference/create_media_buy.mdx +++ b/docs/media-buy/task-reference/create_media_buy.mdx @@ -177,6 +177,8 @@ npx adcp \ | `pricing_option_id` | string | Yes | Pricing option ID from product's `pricing_options` array | | `format_ids` | FormatID[] | Yes | Format IDs that will be used - must be supported by product | | `budget` | number | Yes | Budget in currency specified by pricing option | +| `impressions` | number | No | Impression goal for this package | +| `paused` | boolean | No | Create package in paused state (default: `false`) | | `pacing` | string | No | `"even"` (default), `"asap"`, or `"front_loaded"` | | `bid_price` | number | No | Bid price for auction pricing (required when `is_fixed` is false) | | `targeting_overlay` | TargetingOverlay | No | Additional targeting criteria (see [Targeting](/docs/media-buy/advanced-topics/targeting)) | diff --git a/docs/media-buy/task-reference/update_media_buy.mdx b/docs/media-buy/task-reference/update_media_buy.mdx index 9524bebb37..237b6847e7 100644 --- a/docs/media-buy/task-reference/update_media_buy.mdx +++ b/docs/media-buy/task-reference/update_media_buy.mdx @@ -162,6 +162,7 @@ asyncio.run(create_and_pause_campaign()) | `buyer_ref` | string | Your reference for the package to update | | `paused` | boolean | Pause/resume specific package (`true` = paused, `false` = active) | | `budget` | number | Updated budget allocation | +| `impressions` | number | Updated impression goal for this package | | `pacing` | string | Updated pacing strategy | | `bid_price` | number | Updated bid price (auction products only) | | `targeting_overlay` | TargetingOverlay | Updated targeting restrictions | diff --git a/package-lock.json b/package-lock.json index cfce179aef..7be6353118 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,6 +46,7 @@ "devDependencies": { "@changesets/cli": "^2.29.8", "@jest/globals": "^30.2.0", + "@jest/test-sequencer": "^30.2.0", "@types/cookie-parser": "^1.4.10", "@types/express": "^5.0.6", "@types/jest": "^30.0.0", diff --git a/package.json b/package.json index b54bdb8296..b243643ed6 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "devDependencies": { "@changesets/cli": "^2.29.8", "@jest/globals": "^30.2.0", + "@jest/test-sequencer": "^30.2.0", "@types/cookie-parser": "^1.4.10", "@types/express": "^5.0.6", "@types/jest": "^30.0.0", diff --git a/static/schemas/source/media-buy/package-request.json b/static/schemas/source/media-buy/package-request.json index ad6a0943ac..c09f6fa5f0 100644 --- a/static/schemas/source/media-buy/package-request.json +++ b/static/schemas/source/media-buy/package-request.json @@ -38,6 +38,16 @@ "description": "Bid price for auction-based CPM pricing (required if using cpm-auction-option)", "minimum": 0 }, + "impressions": { + "type": "number", + "description": "Impression goal for this package", + "minimum": 0 + }, + "paused": { + "type": "boolean", + "description": "Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.", + "default": false + }, "targeting_overlay": { "$ref": "/schemas/core/targeting.json" }, diff --git a/static/schemas/source/media-buy/update-media-buy-request.json b/static/schemas/source/media-buy/update-media-buy-request.json index e19727b6fe..e88dd17b5e 100644 --- a/static/schemas/source/media-buy/update-media-buy-request.json +++ b/static/schemas/source/media-buy/update-media-buy-request.json @@ -52,6 +52,11 @@ "description": "Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)", "minimum": 0 }, + "impressions": { + "type": "number", + "description": "Updated impression goal for this package", + "minimum": 0 + }, "paused": { "type": "boolean", "description": "Pause/resume specific package (true = paused, false = active)"