v0.2.0 — Complete Apple Ads API v5 Coverage
✨ Complete Apple Ads API v5 Coverage
This release brings full coverage of the Apple Search Ads Campaign Management API v5 with correct Pydantic models for every endpoint.
New Resources
- Ads — Full CRUD for ad management (
client.campaigns(id).ad_groups(id).ads) - Product Pages — List pages, get details, locale info (
client.product_pages(adam_id)) - Budget Orders — Read budget orders (
client.budget_orders) - ACLs — List org/role access (
client.acls) - App Search — Search eligible iOS apps (
client.apps.search()) - Geo Search — Search geographic locations for targeting (
client.geo.search()) - Countries/Regions — List supported countries with language details (
client.countries_or_regions)
New Keyword Operations
keywords.delete_bulk()— Bulk delete targeting keywordsnegative_keywords.update_bulk()— Bulk update negative keywordsnegative_keywords.delete_bulk()— Bulk delete negative keywords
New Report Types
reports.ads()— Ad-level performance reportsreports.ad_group_keywords()— Ad group-scoped keyword reportsreports.ad_group_search_terms()— Ad group-scoped search term reports
v5 Model Corrections
- Campaign: Fixed
biddingStrategy(wasbidStrategyType),targetCpa(wastargetCostPerAcquisition),budgetOrdersis nowlist[int],countryOrRegionServingStateReasonsis nowdict[str, list[str]]. AddedcreationTime,deleted,adChannelType,billingEventto response model. - MetricData: All field aliases corrected to v5 names —
tapInstalls,viewInstalls,totalInstalls,tapInstallCPI,avgCPM,totalAvgCPI,totalInstallRate,tapPreOrdersPlaced, etc. - AdGroup: Added
deleted,automatedKeywordsRequired,biddingStrategy,paymentModel. Fixed serving state reason enum values. - Ad: Added
creativeId. FixedAdDisplayStatusvalues andAdServingStateReasonenum (12 values). - ReportMetadata: Added ad-level fields (
adId,adName,creativeType,creativeId,adDisplayStatus,language,productPageId).
Enum Completeness
CampaignServingStateReason: 38 values (was 28)CampaignCountryOrRegionServingStateReason: 20 values (was 3)AdGroupServingStateReason: 12 values with correct v5 namesAdServingStateReason: 12 values (was 5)CreativeType: AddedCREATIVE_SET- New:
BudgetOrderStatus,BiddingStrategyenums
Deprecations
custom_reports.list_reports(),.get()— GET/custom-reportsendpoint returns 403 since March 2026 (Apple replaced with Insights). EmitsDeprecationWarning. POST-basedcreate_impression_share()+wait_for_report()still works.
Breaking Changes
BidStrategyTyperenamed toBiddingStrategy(alias kept for backwards compat)MetricDatafield names changed to match v5 API (e.g.,installs→tap_installs)Campaign.budget_orderstype changed fromlist[dict]tolist[int]Campaign.country_or_region_serving_statesreplaced bycountry_or_region_serving_state_reasons