Summary
Upgrade the adcp Python library from 3.2.0 to 3.5.0 to gain access to new AdCP v3 types and enable 9 feature issues currently waiting on library support.
What 3.3.0 brings
New request/response types
SyncAccountsRequest/Response, ListAccountsRequest/Response, Account — multi-advertiser account management
GetMediaBuyArtifactsRequest/Response, Artifact — media buy artifact retrieval
LogEventRequest/Response, SyncEventSourcesRequest/Response — conversion tracking
GetCreativeDeliveryRequest/Response — creative-level delivery metrics
DeliveryForecast, ForecastMethod, ForecastPoint, ForecastRange — delivery forecasting
New targeting and pricing types
DaypartTarget — daypart targeting
PricingModel.cpa, PricingModel.time — CPA and time-based pricing
Improved core types
PaginationRequest (cursor, max_results) and PaginationResponse (cursor, has_more, total_count) — cursor-based pagination
BrandManifestReference (RootModel[BrandManifest | AnyUrl]) — unified brand manifest handling
GetProductsRequest now includes all 10 spec fields (product_selectors, pagination, account_id, etc.)
Creative restructured with variants and variant_count for multi-variant creative support
Property updated with identifier and type fields
Migration scope
The upgrade requires updating models that extend library types to align with the new field structures:
| Area |
Scope |
Est. test updates |
| Creative model |
Align with variants-based structure |
~30 tests |
| Property model |
Align with identifier/type fields |
~4 tests |
| Pagination |
Adopt cursor-based PaginationRequest/PaginationResponse, update import paths |
~10 tests |
| GetProductsRequest |
Extend library directly (zero local fields needed) |
~5 tests |
| GetMediaBuyDeliveryRequest |
Remove redundant account_id override |
~2 tests |
| Import paths |
Pagination moved from list_creatives_request/response to core/pagination_request/pagination_response |
~5 tests |
Confirmed migration pattern
GetProductsRequest migration has been validated — all 10 fields inherited from library with zero local re-declarations:
class GetProductsRequest(LibraryGetProductsRequest):
model_config = ConfigDict(extra=get_pydantic_extra_mode())
Pydantic auto-coerces BrandManifest dicts into BrandManifestReference. Existing create_get_products_request() helper works without changes.
This upgrade unblocks
Prerequisite for:
Strengthens:
Acceptance criteria
Summary
Upgrade the adcp Python library from 3.2.0 to 3.5.0 to gain access to new AdCP v3 types and enable 9 feature issues currently waiting on library support.
What 3.3.0 brings
New request/response types
SyncAccountsRequest/Response,ListAccountsRequest/Response,Account— multi-advertiser account managementGetMediaBuyArtifactsRequest/Response,Artifact— media buy artifact retrievalLogEventRequest/Response,SyncEventSourcesRequest/Response— conversion trackingGetCreativeDeliveryRequest/Response— creative-level delivery metricsDeliveryForecast,ForecastMethod,ForecastPoint,ForecastRange— delivery forecastingNew targeting and pricing types
DaypartTarget— daypart targetingPricingModel.cpa,PricingModel.time— CPA and time-based pricingImproved core types
PaginationRequest(cursor, max_results) andPaginationResponse(cursor, has_more, total_count) — cursor-based paginationBrandManifestReference(RootModel[BrandManifest | AnyUrl]) — unified brand manifest handlingGetProductsRequestnow includes all 10 spec fields (product_selectors, pagination, account_id, etc.)Creativerestructured withvariantsandvariant_countfor multi-variant creative supportPropertyupdated withidentifierandtypefieldsMigration scope
The upgrade requires updating models that extend library types to align with the new field structures:
list_creatives_request/responsetocore/pagination_request/pagination_responseConfirmed migration pattern
GetProductsRequest migration has been validated — all 10 fields inherited from library with zero local re-declarations:
Pydantic auto-coerces
BrandManifestdicts intoBrandManifestReference. Existingcreate_get_products_request()helper works without changes.This upgrade unblocks
Prerequisite for:
PaginationRequest)DaypartTarget)Creative)SyncAccountsRequest/Response)DeliveryForecasttypes)LogEventRequest/Response)PricingModel.cpa,PricingModel.time)ListAccountsRequest/Response)GetMediaBuyArtifactsRequest/Response)Strengthens:
GetProductsRequest.product_selectorsinherited directly)TargetingOverlaypatterns)Accounttype available as reference model)Acceptance criteria
adcp>=3.3.0in pyproject.toml,uv lockcleanKNOWN_NOT_EXTENDEDupdated in test_schema_library_inheritance.pymake qualitypasses