AdvertisingChannelSubType
DISPLAY_SMART_CAMPAIGN
OperationAccessDeniedError.CREATE_OPERATION_NOT_PERMITTED
In the Content API for Shopping , your Merchant Center account and the products in it might be disapproved for various reasons . Historically, you have been able to see the status of your merchant center account for free listings and Shopping ads with the accountstatuses service. In Q1 2022 we introduced the freelistingsprogram and shoppingadsprogram services to provide more granular detail. You can now use the requestreview method on the freelistingsprogram and shoppingadsprogram services to request your account to be re-reviewed after making changes to fix your product and account data .
accountstatuses
freelistingsprogram
shoppingadsprogram
requestreview
For an in-depth explanation of how to use the freelistingsprogram and shoppingadsprogram services, please refer to the Free listings and Shopping ads guides.
If you have any questions or concerns, please don't hesitate to contact us via the forum .
Benji Rothman, Content API for Shopping Team
Today we’re announcing the launch of Display & Video 360 API v2 out of public beta, and into general availability, and updates to both v1 and v2. As Display & Video 360 API v2 enters general availability, it becomes our recommended version. Our existing guides have been updated to reflect v2 features and conventions.
The following features have been added to v2:
assignedTargetingOptionIdAlias
AssignedTargetingOption
billingConfig
Advertiser
The following updates have been made to both v1 and v2:
InsertionOrderBudgetSegment
In addition to these updates, we’ve also fixed two known issues in v2 regarding enum targeting and the line item bulkUpdate method. More detailed information about this update can be found in the Display & Video 360 API release notes , and updated instructions on migrating from v1 to v2 can be found in our migration guide . Before using these new features, make sure to update your client library to the latest version .
bulkUpdate
If you have questions regarding the breaking changes or run into issues or need help with these new features, please contact us using our support contact form .
- Trevor Mulchay, Display & Video 360 API Team
feedLabel
datafeeds
products
DatafeedStatus
datafeedtarget
country
targetCountries
shipping
Products.insert
Products.update
WINTERPRODUCTS
targetCountry
targetingExpansion
LineItem
We are happy to announce the release of an iOS sample application that demonstrates how to integrate the Google Mobile Ads SDK into a SwiftUI-based app. This post covers how we implemented full screen ad formats (interstitial, rewarded, rewarded interstitial) in SwiftUI.
The Google Mobile Ads SDK relies heavily on the UIKit Framework, depending on UIView or UIViewController for each ad format. For example, the SDK currently presents full screen ads using the following method:
present(fromRootViewController rootViewController: UIViewController)
In UIKit, ads are typically implemented in a UIViewController , so it is rather trivial to pass in a rootViewController value by simply invoking self . SwiftUI requires us to diverge from this approach, however, because UIViewController cannot be directly referenced in SwiftUI. Since we can’t just pass in self as the root view controller, we needed to achieve a similar result using a SwiftUI-native approach.
UIViewController
rootViewController
self
We created an implementation of the UIViewControllerRepresentable protocol with a UIViewController property. Its one job is to provide access to the UIViewController reference in SwiftUI.
UIViewControllerRepresentable
private struct AdViewControllerRepresentable: UIViewControllerRepresentable { let viewController = UIViewController() func makeUIViewController(context: Context) -> some UIViewController { return viewController } func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {} }
AdViewControllerRepresentable needs to be included as part of the view hierarchy even though it holds no significance to the content on screen. This is because canPresent(fromRootViewController:) requires the presenting view controller’s window value to not be nil.
AdViewControllerRepresentable
canPresent(fromRootViewController:)
window
private let adViewControllerRepresentable = AdViewControllerRepresentable() var body: some View { Text("hello, friend.") .font(.largeTitle) // Add the adViewControllerRepresentable to the background so it // does not influence the placement of other views in the view hierarchy. .background { adViewControllerRepresentable .frame(width: .zero, height: .zero) } }
To present the full screen ads in our sample app, we leveraged action events in SwiftUI.
Button("Watch an ad!") { coordinator.presentAd(from: adViewControllerRepresentable.viewController) }
And our AdCoordinator class does the honor of presenting it from our view controller.
AdCoordinator
private class AdCoordinator: NSObject { private var ad: GADInterstitialAd? ... func presentAd(from viewController: UIViewController) { guard let ad = ad else { return print("Ad wasn't ready") } ad.present(fromRootViewController: viewController) } }
And voila!
Instead of creating a UIViewControllerRepresentable , there was always the option to query the rootViewController property from UIWindow .
UIWindow
UIApplication.shared.windows.first?.rootViewController
We decided against this option for the following reasons:
windows
UIApplication
UIWindowScene
We know there is more than one way to cook an egg when it comes to writing code in SwiftUI. For our use case, we chose the most low-code friendly option. If you have any questions, reach out to our developer forum .
Try it out!
- Justin Malandruccolo, Mobile Ads Developer Relations
CAMPAIGN_BUDGET
FORECASTING_CAMPAIGN_BUDGET
USE_BROAD_MATCH_KEYWORD
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX
ad_group_ad_asset_combination_view
BidRequest.imp[].banner.hmax
BidRequest.imp[].banner.hmin
BidRequest.imp[].banner.wmax
BidRequest.imp[].banner.wmin
BidRequest.device.ext.user_agent_data
BidRequest.device.geo.accuracy
BidRequest.device.geo.utcoffset
BidRequest.imp[].banner.api
MRAID_3
BidRequest.imp[].banner.format
BidRequest.imp[].banner.vcm
BidRequest.imp[].metric
BidRequest.imp[].native.api
BidRequest.imp[].video.api
BidRequest.imp[].video.companionad.api
BidRequest.imp[].video.companionad.format
BidRequest.imp[].video.companionad.vcm
BidRequest.imp[].video.linearity
BidRequest.imp[].video.maxduration
BidRequest.imp[].video.placement
BidRequest.imp[].video.playbackend
BidRequest.imp[].video.skip
BidRequest.site.mobile
BidRequest.test
BidRequest.wlang
bidders.endpoints
bidProtocol
OPENRTB_2_2
OPENRTB_2_3
OPENRTB_PROTOBUF_2_3
OPENRTB_2_4
OPENRTB_PROTOBUF_2_4
OPENRTB_2_5
OPENRTB_PROTOBUF_2_5
OPENRTB_JSON
OPENRTB_PROTOBUF
UserListService.MutateUserLists
AudienceService.MutateAudiences
CampaignCriterionService.MutateCampaignCriteria
AdGroupCriterionService.MutateAdGroupCriteria
ConversionValueRuleService.MutateConversionValueRules
GoogleAdsService.Search
GoogleAdsService.SearchStream
user_list
audience
combined_audience
AdsApp.UserList
AdsApp.Targeting
AdsApp.CampaignTargeting
AdsApp.AccountAdGroupTargeting
ImageCreative
thirdPartyImpressionTrackingUrl
thirdPartyImpressionTrackingUrls
TargetingExpansionConfig
targetingExpansionLevel
NO_EXPANSION
LEAST_EXPANSION
SOME_EXPANSION
BALANCED_EXPANSION
MORE_EXPANSION
MOST_EXPANSION
excludeFirstPartyAudience
false
create
delete
AssignedTargetingOptions
RaiseTargetCpaBidTooLowRecommendation
ForecastingSetTargetRoasRecommendation
primary_status
primary_status_reasons
Campaign
conversion_tracking_id
SmartCampaignSuggestService.SuggestKeywordThemes
CampaignExperimentService
ReachPlanService
CampaignAsset
AdGroupAsset
field_type
AD_IMAGE
Today we're happy to announce the release of official TypeScript type definitions for Google Publisher Tags (GPT) !
Why TypeScript?
According to a recent State of JS developer survey , nearly 70% of developers regularly use TypeScript in some capacity, up from 60% the year before. As this segment of the community continues to grow, we are committed to providing the best experience possible for those working with TypeScript and GPT. We believe this is important not just because TypeScript is popular, but because it helps developers validate the correctness of their code and provides a number of quality of life improvements that make working with GPT more delightful.
How we got here
Until now, a number of community-led projects such as @types/doubleclick-gpt and @types/googletag have provided unofficial GPT type definitions. While these projects have done a great job of making our API more accessible to TypeScript developers, manually curated type definitions inevitably lag behind changes made to GPT, leading to those definitions sometimes being out of date. To address this, we've updated our release process to automatically generate type definitions from internal source code and sync changes to our own GitHub repository and the DefinitelyTyped project . This ensures that our official definitions are always up to date with the most recently released versions of GPT.
Try it and let us know what you think
For users new to TypeScript, we've published a TypeScript and Google Publisher Tags guide that covers the basics and provides a demo of the new type definitions in action. For those already familiar who want to try the new definitions right away, they can be installed via NPM by running:
npm install --save-dev @types/google-publisher-tag
If you'd like to make a suggestion, report a bug, or leave any other feedback about this new offering, feel free to open an issue on our GitHub issue tracker .
AdGroupBidModifier
preferred_content
ContextError.OPERATION_NOT_PERMITTED_FOR_CONTEXT
bid_modifier
To provide Google Mobile Ads SDK developers for AdMob and Ad Manager more transparency and predictability on the expected lifetime of an SDK version, we are introducing a deprecation schedule for the Google Mobile Ads SDKs for Android and iOS.
Introducing a predictable deprecation schedule offers the following benefits for app developers and publishers:
To understand the deprecation schedule, let’s first align the terms used to describe the state of a Google Mobile Ads SDK version:
The deprecation and sunset timelines will revolve around major SDK version releases. We plan to do a major version release annually, in the first quarter of each year. The release of a new major version on both Android and iOS will trigger changes in SDK state for older major versions on both platforms.
Once we release a new major version N for both Android and iOS:
With this schedule, a new major version will live in the supported state for about 2 years, and in the deprecated state for an additional year before moving to the sunset state.
The graphic below helps visualize the schedule:
Effective today, Android v19 and iOS v7 versions are considered deprecated. In accordance with the schedule above, we plan to sunset Android v19 and iOS v7 versions in Q2 2023 following the releases of Android v22 and iOS v9 planned for Q1 2023. We will provide more specific sunset dates following the releases of Android v22 and iOS v9.
The graphic below helps visualize the state of existing Google Mobile Ads SDK versions for Android and iOS with today’s announcement.
The deprecation schedule provides a framework for predictable lifetimes for an SDK version. However, there may be exceptions in the future. This schedule does not preclude us from sunsetting an SDK version at an earlier date, but we are committed to providing proactive communication with ample lead time for any future changes.
If you have any questions about this announcement, please reach out to us on the Google Mobile Ads SDK Developer Forum .
- Eric Leichtenschlag, Mobile Ads Developer Relations
feed_label
ShoppingSetting
offerId
salePrice
PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/online:en:WINTERPRODUCTS:1111111111
{ "salePrice": { "value": "17.99", "currency": "USD" } }
Products.list
Products.get
language
We’re pleased to announce that Display & Video 360 API v2 is available in public beta starting today. We're also extending our DV360 API Developer Survey through the end of September so that we can gather more customer feedback on v2 and the API in general.
v2 includes a number of new features and breaking changes. Here are some of the changes introduced in v2:
get
list
advertisers.lineItems
advertisers.lineItems.targetingTypes.assignedTargetingOptions
advertisers.lineItems.bulkListAssignedTargetingOptions
advertisers.lineItems.bulkEditAssignedTargetingOptions
lineItem.entityStatus
advertisers.lineItems.bulkUpdate
assignedTargetingOptionId
More detailed information about this release can be found in our release notes . Follow the steps in our migration guide to migrate from v1 to v2. As it is in beta, be aware that we might make unversioned breaking changes to DV360 API v2 before it exits the beta phase.
If you want to provide feedback and recommend features that should be included in future versions of the API, please fill out our DV360 API Developer Survey . The survey has been extended through the end of September and will help shape the product roadmap for v2 and beyond.
If you run into issues or need help with these new features or samples, please contact us using our support contact form .
Today we’re announcing the deprecation of the Structured Data Files (SDF) v5.2 and v5.3 . These versions will be fully sunset on March 8, 2023 .
Please migrate to v5.5 , the most recent version, by the sunset date. Once the deprecated versions are sunset:
sdfdownloadtasks.create
400
If you run into issues or need help with your migration, please contact us using our support contact form .
Since 2020, we've asked the Google Publisher Tag (GPT) developer community to provide their valuable feedback through an annual survey. This feedback influences what we work on each year, and has directly inspired improvements to our sample offerings, release notes, and much more.
As we look forward to next year, it's time once again to check in with our developer community to see what's working well and what can be improved. Starting today, we're kicking off the 2022 GPT developer survey.
The survey should take no more than 10 minutes to complete, and it will be open through the end of October 2022. Most questions are optional and your answers are completely anonymous.
Remember that the feedback you provide influences what we work on over the course of the next year, so please let us know what matters most to you. Thanks in advance for taking the time to help improve the GPT developer experience!
Today we’re announcing the deprecation of the Bid Manager (DBM) API v1.1 . This version will be fully sunset on February 28, 2023 .
Please migrate to Bid Manager API v2 by the sunset date to avoid an interruption of service. v2 introduced a number of new features and breaking changes, which are listed in our release notes . Here are some of the changes introduced in v2:
Query
Report
queries.reports.get
queries.list
queries.reports.list
queries.run
Follow the steps in our v2 migration guide to help you migrate from v1.1 to v2.
UpgradeLocalCampaignToPerformanceMaxRecommendation
Campaign.bidding_strategy_system_status
FlexibleRuleUserListInfo
DateSpecificRuleUserListInfo
GoogleAdsService.Mutate()
ExperimentService
ReachPlanService.GenerateReachForecast
YouTubeSelectSettings
YouTubeSelectLineUp
ReachPlanService.ListPlannableProducts