feat(ads): add the Google Ads surface - #26
Merged
Merged
Conversation
This SDK was the only one without it. Task 46 shipped /v1/ads/google/* to every other client repo and missed this one, so googleAds() is new here rather than an extension of something existing. Covers all 33 Google-only routes: recommendations and the optimization score, keywords and keyword research, search terms, bid strategies, the ad schedule, negative keyword lists, assets, Performance Max asset groups, Local Services leads, conversions, and the GAQL passthrough. The shared surface is deliberately not duplicated. Campaigns, ad groups, ads, audiences, insights, labels, change history, experiments and conversion value rules already reach Google through ads(), because those routes dispatch by connection. GoogleAdsScope renders snake_case on a query and camelCase in a body, since the API takes the same three fields both ways.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This SDK was the only one without Google Ads. Task 46 shipped
/v1/ads/google/*to all 14 other client repos and missed this one — noads.google, no models, andAdsResourceonly knewconnections/meta/authorize. There was no unmerged branch for it either.Adds
client.googleAds()covering all 33 Google-only routes:17 model records, 9 param builders, one resource.
What is deliberately not here
The shared surface is not duplicated. Campaigns, ad groups, ads, audiences, insights, labels, change history, experiments and conversion value rules already work on Google through
ads(), because those routes dispatch by connection — this SDK's 169 existing ad methods already cover them. Only what has no equivalent on another network is new.authorize("google", workspaceId)already worked through the generic provider route, so there is noauthorizeGoogle.Notes
GoogleAdsScoperenders snake_case on a query string and camelCase in a body, because the API takes the same three fields both ways. An object id is<customerId>~<kind>~<id>: a Google resource name has slashes and cannot ride in a path segment.8 new tests;
mvn -B verifygreen on 135 tests, no new warnings.Unrelated, noticed while editing: the README resource table has duplicate
inbox()andads()rows from an earlier merge. Left alone rather than silently collapsed.