late-sdk 0.0.859 → 0.0.861
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +20 -0
- data/docs/AdAccountsApi.md +1 -1
- data/docs/AdCampaignsApi.md +304 -6
- data/docs/AdInsightsApi.md +1 -1
- data/docs/CampaignBidding.md +28 -0
- data/docs/CampaignBiddingBidSpec.md +24 -0
- data/docs/CampaignBiddingPortfolio.md +20 -0
- data/docs/ConversionsApi.md +2 -2
- data/docs/CreateAdCampaignRequest.md +5 -3
- data/docs/CreateBidStrategy201Response.md +18 -0
- data/docs/CreateBidStrategy201ResponseStrategy.md +22 -0
- data/docs/CreateBidStrategyRequest.md +28 -0
- data/docs/CreateStandaloneAdRequest.md +3 -1
- data/docs/GetAdsSearchTerms200Response.md +5 -1
- data/docs/GetCampaignBidding200Response.md +30 -0
- data/docs/GetCampaignTargeting200Response.md +5 -1
- data/docs/ListAccountCallouts200Response.md +5 -1
- data/docs/ListAdAccounts200Response.md +5 -1
- data/docs/ListBidStrategies200Response.md +26 -0
- data/docs/ListCampaignNegativeKeywords200Response.md +5 -1
- data/docs/ListConversionActions200Response.md +5 -1
- data/docs/PortfolioBidStrategy.md +42 -0
- data/docs/UpdateAdCampaign200Response.md +2 -0
- data/docs/UpdateAdCampaignRequest.md +3 -1
- data/docs/UpdateAdRequestTargeting.md +2 -0
- data/docs/UpdateAdRequestTargetingDevicesInner.md +49 -0
- data/docs/UpdateAdRequestTargetingDevicesInnerOneOf.md +20 -0
- data/docs/UpdateBidStrategy200Response.md +18 -0
- data/docs/UpdateBidStrategy200ResponseStrategy.md +18 -0
- data/docs/UpdateBidStrategyRequest.md +28 -0
- data/docs/UpdateCampaignTargeting200Response.md +7 -1
- data/docs/UpdateCampaignTargeting200ResponseDevicesInner.md +22 -0
- data/docs/UpdateCampaignTargeting200ResponseLanguagesInner.md +22 -0
- data/lib/zernio-sdk/api/ad_accounts_api.rb +2 -2
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +312 -12
- data/lib/zernio-sdk/api/ad_insights_api.rb +2 -2
- data/lib/zernio-sdk/api/conversions_api.rb +4 -4
- data/lib/zernio-sdk/models/campaign_bidding.rb +232 -0
- data/lib/zernio-sdk/models/campaign_bidding_bid_spec.rb +200 -0
- data/lib/zernio-sdk/models/campaign_bidding_portfolio.rb +157 -0
- data/lib/zernio-sdk/models/create_ad_campaign_request.rb +37 -6
- data/lib/zernio-sdk/models/create_bid_strategy201_response.rb +147 -0
- data/lib/zernio-sdk/models/create_bid_strategy201_response_strategy.rb +166 -0
- data/lib/zernio-sdk/models/create_bid_strategy_request.rb +289 -0
- data/lib/zernio-sdk/models/create_standalone_ad_request.rb +33 -2
- data/lib/zernio-sdk/models/get_ads_search_terms200_response.rb +25 -4
- data/lib/zernio-sdk/models/get_campaign_bidding200_response.rb +246 -0
- data/lib/zernio-sdk/models/get_campaign_targeting200_response.rb +25 -4
- data/lib/zernio-sdk/models/list_account_callouts200_response.rb +25 -4
- data/lib/zernio-sdk/models/list_ad_accounts200_response.rb +25 -4
- data/lib/zernio-sdk/models/list_bid_strategies200_response.rb +189 -0
- data/lib/zernio-sdk/models/list_campaign_negative_keywords200_response.rb +25 -4
- data/lib/zernio-sdk/models/list_conversion_actions200_response.rb +25 -4
- data/lib/zernio-sdk/models/portfolio_bid_strategy.rb +300 -0
- data/lib/zernio-sdk/models/update_ad_campaign200_response.rb +11 -1
- data/lib/zernio-sdk/models/update_ad_campaign_request.rb +33 -2
- data/lib/zernio-sdk/models/update_ad_request_targeting.rb +14 -2
- data/lib/zernio-sdk/models/update_ad_request_targeting_devices_inner.rb +104 -0
- data/lib/zernio-sdk/models/update_ad_request_targeting_devices_inner_one_of.rb +226 -0
- data/lib/zernio-sdk/models/update_bid_strategy200_response.rb +147 -0
- data/lib/zernio-sdk/models/update_bid_strategy200_response_strategy.rb +147 -0
- data/lib/zernio-sdk/models/update_bid_strategy_request.rb +273 -0
- data/lib/zernio-sdk/models/update_campaign_targeting200_response.rb +37 -4
- data/lib/zernio-sdk/models/update_campaign_targeting200_response_devices_inner.rb +201 -0
- data/lib/zernio-sdk/models/update_campaign_targeting200_response_languages_inner.rb +165 -0
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +16 -0
- data/openapi.yaml +340 -33
- data/spec/api/ad_accounts_api_spec.rb +1 -1
- data/spec/api/ad_campaigns_api_spec.rb +61 -6
- data/spec/api/ad_insights_api_spec.rb +1 -1
- data/spec/api/conversions_api_spec.rb +2 -2
- data/spec/models/campaign_bidding_bid_spec_spec.rb +54 -0
- data/spec/models/campaign_bidding_portfolio_spec.rb +42 -0
- data/spec/models/campaign_bidding_spec.rb +70 -0
- data/spec/models/create_ad_campaign_request_spec.rb +6 -0
- data/spec/models/create_bid_strategy201_response_spec.rb +36 -0
- data/spec/models/create_bid_strategy201_response_strategy_spec.rb +48 -0
- data/spec/models/create_bid_strategy_request_spec.rb +70 -0
- data/spec/models/create_standalone_ad_request_spec.rb +6 -0
- data/spec/models/get_ads_search_terms200_response_spec.rb +12 -0
- data/spec/models/get_campaign_bidding200_response_spec.rb +76 -0
- data/spec/models/get_campaign_targeting200_response_spec.rb +12 -0
- data/spec/models/list_account_callouts200_response_spec.rb +12 -0
- data/spec/models/list_ad_accounts200_response_spec.rb +12 -0
- data/spec/models/list_bid_strategies200_response_spec.rb +60 -0
- data/spec/models/list_campaign_negative_keywords200_response_spec.rb +12 -0
- data/spec/models/list_conversion_actions200_response_spec.rb +12 -0
- data/spec/models/portfolio_bid_strategy_spec.rb +112 -0
- data/spec/models/update_ad_campaign200_response_spec.rb +6 -0
- data/spec/models/update_ad_campaign_request_spec.rb +6 -0
- data/spec/models/update_ad_request_targeting_devices_inner_one_of_spec.rb +46 -0
- data/spec/models/update_ad_request_targeting_devices_inner_spec.rb +32 -0
- data/spec/models/update_ad_request_targeting_spec.rb +6 -0
- data/spec/models/update_bid_strategy200_response_spec.rb +36 -0
- data/spec/models/update_bid_strategy200_response_strategy_spec.rb +36 -0
- data/spec/models/update_bid_strategy_request_spec.rb +70 -0
- data/spec/models/update_campaign_targeting200_response_devices_inner_spec.rb +52 -0
- data/spec/models/update_campaign_targeting200_response_languages_inner_spec.rb +48 -0
- data/spec/models/update_campaign_targeting200_response_spec.rb +18 -0
- data/zernio-sdk-0.0.861.gem +0 -0
- metadata +66 -2
- data/zernio-sdk-0.0.859.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 146640c51fef87c69dd69f069dfefc4e727410b38b284b954e44ca6f74a3c528
|
|
4
|
+
data.tar.gz: 34f6fbd4a36b170972e28b46966a506c77a99a051e90ca7bdabf1f4fa086fdb5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d641c72cfb84ec4316fade42b1d296ae4cb0dce1f1896b03708a12bc7912091537e81206db5550aa837d59bd7ff9d427efb3e919c5fa7c0870049d6198ca5b9b
|
|
7
|
+
data.tar.gz: a5a26110e0b1257224bbc256df74c880d1430ce1480a99f71264a5576e451a981c4d0446cec8d763dc00cd3644f725a855915fdd0feb1803c1ec516bb4b2d8cb
|
data/README.md
CHANGED
|
@@ -142,6 +142,7 @@ Class | Method | HTTP request | Description
|
|
|
142
142
|
*Zernio::AdCampaignsApi* | [**bulk_update_ad_campaign_status**](docs/AdCampaignsApi.md#bulk_update_ad_campaign_status) | **POST** /v1/ads/campaigns/bulk-status | Pause or resume many campaigns
|
|
143
143
|
*Zernio::AdCampaignsApi* | [**create_ad_campaign**](docs/AdCampaignsApi.md#create_ad_campaign) | **POST** /v1/ads/campaigns | Create a standalone campaign
|
|
144
144
|
*Zernio::AdCampaignsApi* | [**create_ad_set**](docs/AdCampaignsApi.md#create_ad_set) | **POST** /v1/ads/ad-sets | Create a standalone ad group
|
|
145
|
+
*Zernio::AdCampaignsApi* | [**create_bid_strategy**](docs/AdCampaignsApi.md#create_bid_strategy) | **POST** /v1/ads/bid-strategies | Create a Google Ads portfolio bid strategy
|
|
145
146
|
*Zernio::AdCampaignsApi* | [**create_standalone_ad**](docs/AdCampaignsApi.md#create_standalone_ad) | **POST** /v1/ads/create | Create standalone ad
|
|
146
147
|
*Zernio::AdCampaignsApi* | [**delete_ad**](docs/AdCampaignsApi.md#delete_ad) | **DELETE** /v1/ads/{adId} | Cancel an ad
|
|
147
148
|
*Zernio::AdCampaignsApi* | [**delete_ad_campaign**](docs/AdCampaignsApi.md#delete_ad_campaign) | **DELETE** /v1/ads/campaigns/{campaignId} | Delete a campaign
|
|
@@ -153,11 +154,13 @@ Class | Method | HTTP request | Description
|
|
|
153
154
|
*Zernio::AdCampaignsApi* | [**get_ad_set_details**](docs/AdCampaignsApi.md#get_ad_set_details) | **GET** /v1/ads/ad-sets/{adSetId} | Live ad-set details incl. learning phase
|
|
154
155
|
*Zernio::AdCampaignsApi* | [**get_ad_tree**](docs/AdCampaignsApi.md#get_ad_tree) | **GET** /v1/ads/tree | Get campaign tree
|
|
155
156
|
*Zernio::AdCampaignsApi* | [**get_ads_timeline**](docs/AdCampaignsApi.md#get_ads_timeline) | **GET** /v1/ads/timeline | Get daily account metrics
|
|
157
|
+
*Zernio::AdCampaignsApi* | [**get_campaign_bidding**](docs/AdCampaignsApi.md#get_campaign_bidding) | **GET** /v1/ads/campaigns/{campaignId}/bidding | Read a campaign's current bidding
|
|
156
158
|
*Zernio::AdCampaignsApi* | [**get_campaign_targeting**](docs/AdCampaignsApi.md#get_campaign_targeting) | **GET** /v1/ads/campaigns/{campaignId}/targeting | Read a Google campaign's device, location, and language targeting
|
|
157
159
|
*Zernio::AdCampaignsApi* | [**list_ad_campaigns**](docs/AdCampaignsApi.md#list_ad_campaigns) | **GET** /v1/ads/campaigns | List campaigns
|
|
158
160
|
*Zernio::AdCampaignsApi* | [**list_ad_keywords**](docs/AdCampaignsApi.md#list_ad_keywords) | **GET** /v1/ads/keywords | List Search keywords
|
|
159
161
|
*Zernio::AdCampaignsApi* | [**list_ad_sets**](docs/AdCampaignsApi.md#list_ad_sets) | **GET** /v1/ads/ad-sets | List ad sets
|
|
160
162
|
*Zernio::AdCampaignsApi* | [**list_ads**](docs/AdCampaignsApi.md#list_ads) | **GET** /v1/ads | List ads
|
|
163
|
+
*Zernio::AdCampaignsApi* | [**list_bid_strategies**](docs/AdCampaignsApi.md#list_bid_strategies) | **GET** /v1/ads/bid-strategies | List Google Ads portfolio bid strategies
|
|
161
164
|
*Zernio::AdCampaignsApi* | [**list_campaign_negative_keywords**](docs/AdCampaignsApi.md#list_campaign_negative_keywords) | **GET** /v1/ads/campaigns/{campaignId}/negative-keywords | List campaign-level negative keywords
|
|
162
165
|
*Zernio::AdCampaignsApi* | [**remove_ad_keyword**](docs/AdCampaignsApi.md#remove_ad_keyword) | **DELETE** /v1/ads/keywords/{keywordId} | Remove a Search keyword
|
|
163
166
|
*Zernio::AdCampaignsApi* | [**replace_campaign_negative_keywords**](docs/AdCampaignsApi.md#replace_campaign_negative_keywords) | **PUT** /v1/ads/campaigns/{campaignId}/negative-keywords | Replace campaign-level negative keywords
|
|
@@ -168,6 +171,7 @@ Class | Method | HTTP request | Description
|
|
|
168
171
|
*Zernio::AdCampaignsApi* | [**update_ad_set**](docs/AdCampaignsApi.md#update_ad_set) | **PUT** /v1/ads/ad-sets/{adSetId} | Update an ad set
|
|
169
172
|
*Zernio::AdCampaignsApi* | [**update_ad_set_status**](docs/AdCampaignsApi.md#update_ad_set_status) | **PUT** /v1/ads/ad-sets/{adSetId}/status | Pause or resume a single ad set
|
|
170
173
|
*Zernio::AdCampaignsApi* | [**update_ad_status**](docs/AdCampaignsApi.md#update_ad_status) | **PUT** /v1/ads/{adId}/status | Pause or resume a single ad
|
|
174
|
+
*Zernio::AdCampaignsApi* | [**update_bid_strategy**](docs/AdCampaignsApi.md#update_bid_strategy) | **PATCH** /v1/ads/bid-strategies/{strategyId} | Update a Google Ads portfolio bid strategy
|
|
171
175
|
*Zernio::AdCampaignsApi* | [**update_campaign_targeting**](docs/AdCampaignsApi.md#update_campaign_targeting) | **PUT** /v1/ads/campaigns/{campaignId}/targeting | Edit a Google campaign's device, location, or language targeting
|
|
172
176
|
*Zernio::AdCreativesApi* | [**create_ad_creative**](docs/AdCreativesApi.md#create_ad_creative) | **POST** /v1/ads/creatives | Create a standalone creative
|
|
173
177
|
*Zernio::AdCreativesApi* | [**delete_ad_creative**](docs/AdCreativesApi.md#delete_ad_creative) | **DELETE** /v1/ads/creatives/{creativeId} | Delete a creative
|
|
@@ -835,6 +839,9 @@ Class | Method | HTTP request | Description
|
|
|
835
839
|
- [Zernio::CampaignAnalyticsResponseAnalytics](docs/CampaignAnalyticsResponseAnalytics.md)
|
|
836
840
|
- [Zernio::CampaignAnalyticsResponseAnalyticsDailyInner](docs/CampaignAnalyticsResponseAnalyticsDailyInner.md)
|
|
837
841
|
- [Zernio::CampaignAnalyticsResponseCampaign](docs/CampaignAnalyticsResponseCampaign.md)
|
|
842
|
+
- [Zernio::CampaignBidding](docs/CampaignBidding.md)
|
|
843
|
+
- [Zernio::CampaignBiddingBidSpec](docs/CampaignBiddingBidSpec.md)
|
|
844
|
+
- [Zernio::CampaignBiddingPortfolio](docs/CampaignBiddingPortfolio.md)
|
|
838
845
|
- [Zernio::CancelBroadcast200Response](docs/CancelBroadcast200Response.md)
|
|
839
846
|
- [Zernio::CancelPhoneNumberPortIn200Response](docs/CancelPhoneNumberPortIn200Response.md)
|
|
840
847
|
- [Zernio::ChannelPicker](docs/ChannelPicker.md)
|
|
@@ -903,6 +910,9 @@ Class | Method | HTTP request | Description
|
|
|
903
910
|
- [Zernio::CreateAdSetRequest](docs/CreateAdSetRequest.md)
|
|
904
911
|
- [Zernio::CreateApiKey201Response](docs/CreateApiKey201Response.md)
|
|
905
912
|
- [Zernio::CreateApiKeyRequest](docs/CreateApiKeyRequest.md)
|
|
913
|
+
- [Zernio::CreateBidStrategy201Response](docs/CreateBidStrategy201Response.md)
|
|
914
|
+
- [Zernio::CreateBidStrategy201ResponseStrategy](docs/CreateBidStrategy201ResponseStrategy.md)
|
|
915
|
+
- [Zernio::CreateBidStrategyRequest](docs/CreateBidStrategyRequest.md)
|
|
906
916
|
- [Zernio::CreateBlog201Response](docs/CreateBlog201Response.md)
|
|
907
917
|
- [Zernio::CreateBlogArticle201Response](docs/CreateBlogArticle201Response.md)
|
|
908
918
|
- [Zernio::CreateBlogArticleRequest](docs/CreateBlogArticleRequest.md)
|
|
@@ -1244,6 +1254,7 @@ Class | Method | HTTP request | Description
|
|
|
1244
1254
|
- [Zernio::GetCallsUsage200ResponseGroupsInner](docs/GetCallsUsage200ResponseGroupsInner.md)
|
|
1245
1255
|
- [Zernio::GetCallsUsage200ResponseTotals](docs/GetCallsUsage200ResponseTotals.md)
|
|
1246
1256
|
- [Zernio::GetCampaignAnalytics202Response](docs/GetCampaignAnalytics202Response.md)
|
|
1257
|
+
- [Zernio::GetCampaignBidding200Response](docs/GetCampaignBidding200Response.md)
|
|
1247
1258
|
- [Zernio::GetCampaignTargeting200Response](docs/GetCampaignTargeting200Response.md)
|
|
1248
1259
|
- [Zernio::GetCampaignTargeting200ResponseDevicesInner](docs/GetCampaignTargeting200ResponseDevicesInner.md)
|
|
1249
1260
|
- [Zernio::GetCampaignTargeting200ResponseLanguagesInner](docs/GetCampaignTargeting200ResponseLanguagesInner.md)
|
|
@@ -1633,6 +1644,7 @@ Class | Method | HTTP request | Description
|
|
|
1633
1644
|
- [Zernio::ListAds202Response](docs/ListAds202Response.md)
|
|
1634
1645
|
- [Zernio::ListAdsBusinessCenters200Response](docs/ListAdsBusinessCenters200Response.md)
|
|
1635
1646
|
- [Zernio::ListApiKeys200Response](docs/ListApiKeys200Response.md)
|
|
1647
|
+
- [Zernio::ListBidStrategies200Response](docs/ListBidStrategies200Response.md)
|
|
1636
1648
|
- [Zernio::ListBlogArticles200Response](docs/ListBlogArticles200Response.md)
|
|
1637
1649
|
- [Zernio::ListBlogs200Response](docs/ListBlogs200Response.md)
|
|
1638
1650
|
- [Zernio::ListBroadcastRecipients200Response](docs/ListBroadcastRecipients200Response.md)
|
|
@@ -1842,6 +1854,7 @@ Class | Method | HTTP request | Description
|
|
|
1842
1854
|
- [Zernio::PlatformAnalytics](docs/PlatformAnalytics.md)
|
|
1843
1855
|
- [Zernio::PlatformTarget](docs/PlatformTarget.md)
|
|
1844
1856
|
- [Zernio::PlatformTargetAccountId](docs/PlatformTargetAccountId.md)
|
|
1857
|
+
- [Zernio::PortfolioBidStrategy](docs/PortfolioBidStrategy.md)
|
|
1845
1858
|
- [Zernio::Post](docs/Post.md)
|
|
1846
1859
|
- [Zernio::PostAnalytics](docs/PostAnalytics.md)
|
|
1847
1860
|
- [Zernio::PostCreateResponse](docs/PostCreateResponse.md)
|
|
@@ -2173,6 +2186,8 @@ Class | Method | HTTP request | Description
|
|
|
2173
2186
|
- [Zernio::UpdateAdRequestBudget](docs/UpdateAdRequestBudget.md)
|
|
2174
2187
|
- [Zernio::UpdateAdRequestCreative](docs/UpdateAdRequestCreative.md)
|
|
2175
2188
|
- [Zernio::UpdateAdRequestTargeting](docs/UpdateAdRequestTargeting.md)
|
|
2189
|
+
- [Zernio::UpdateAdRequestTargetingDevicesInner](docs/UpdateAdRequestTargetingDevicesInner.md)
|
|
2190
|
+
- [Zernio::UpdateAdRequestTargetingDevicesInnerOneOf](docs/UpdateAdRequestTargetingDevicesInnerOneOf.md)
|
|
2176
2191
|
- [Zernio::UpdateAdRequestTargetingInterestsInner](docs/UpdateAdRequestTargetingInterestsInner.md)
|
|
2177
2192
|
- [Zernio::UpdateAdRequestTargetingKeywordsInner](docs/UpdateAdRequestTargetingKeywordsInner.md)
|
|
2178
2193
|
- [Zernio::UpdateAdRequestTargetingKeywordsInnerOneOf](docs/UpdateAdRequestTargetingKeywordsInnerOneOf.md)
|
|
@@ -2186,6 +2201,9 @@ Class | Method | HTTP request | Description
|
|
|
2186
2201
|
- [Zernio::UpdateAdTrackingTagsRequest](docs/UpdateAdTrackingTagsRequest.md)
|
|
2187
2202
|
- [Zernio::UpdateAdTrackingTagsRequestCreative](docs/UpdateAdTrackingTagsRequestCreative.md)
|
|
2188
2203
|
- [Zernio::UpdateAdTrackingTagsRequestUrlTagsInner](docs/UpdateAdTrackingTagsRequestUrlTagsInner.md)
|
|
2204
|
+
- [Zernio::UpdateBidStrategy200Response](docs/UpdateBidStrategy200Response.md)
|
|
2205
|
+
- [Zernio::UpdateBidStrategy200ResponseStrategy](docs/UpdateBidStrategy200ResponseStrategy.md)
|
|
2206
|
+
- [Zernio::UpdateBidStrategyRequest](docs/UpdateBidStrategyRequest.md)
|
|
2189
2207
|
- [Zernio::UpdateBlogArticleRequest](docs/UpdateBlogArticleRequest.md)
|
|
2190
2208
|
- [Zernio::UpdateBlogRequest](docs/UpdateBlogRequest.md)
|
|
2191
2209
|
- [Zernio::UpdateBlueskySettingsRequest](docs/UpdateBlueskySettingsRequest.md)
|
|
@@ -2196,6 +2214,8 @@ Class | Method | HTTP request | Description
|
|
|
2196
2214
|
- [Zernio::UpdateBroadcastRequestTemplate](docs/UpdateBroadcastRequestTemplate.md)
|
|
2197
2215
|
- [Zernio::UpdateBroadcastRequestTemplateVariableMappingValue](docs/UpdateBroadcastRequestTemplateVariableMappingValue.md)
|
|
2198
2216
|
- [Zernio::UpdateCampaignTargeting200Response](docs/UpdateCampaignTargeting200Response.md)
|
|
2217
|
+
- [Zernio::UpdateCampaignTargeting200ResponseDevicesInner](docs/UpdateCampaignTargeting200ResponseDevicesInner.md)
|
|
2218
|
+
- [Zernio::UpdateCampaignTargeting200ResponseLanguagesInner](docs/UpdateCampaignTargeting200ResponseLanguagesInner.md)
|
|
2199
2219
|
- [Zernio::UpdateCampaignTargetingRequest](docs/UpdateCampaignTargetingRequest.md)
|
|
2200
2220
|
- [Zernio::UpdateCampaignTargetingRequestTargeting](docs/UpdateCampaignTargetingRequestTargeting.md)
|
|
2201
2221
|
- [Zernio::UpdateCampaignTargetingRequestTargetingDevicesInner](docs/UpdateCampaignTargetingRequestTargetingDevicesInner.md)
|
data/docs/AdAccountsApi.md
CHANGED
|
@@ -828,7 +828,7 @@ end
|
|
|
828
828
|
|
|
829
829
|
List account-level callout extensions
|
|
830
830
|
|
|
831
|
-
Google Ads compliance row C.75: callout assets linked at the CUSTOMER level via `customer_asset` (not a campaign or ad group), so they serve fleet-wide across the account. Google only; every other platform returns 501.
|
|
831
|
+
Google Ads compliance row C.75: callout assets linked at the CUSTOMER level via `customer_asset` (not a campaign or ad group), so they serve fleet-wide across the account. Google only; every other platform returns 501. Cached for the quota window (10 minutes fresh, up to 7 days last-good), and gated by the shared Google Ads operations budget on a cache miss. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
|
|
832
832
|
|
|
833
833
|
### Examples
|
|
834
834
|
|
data/docs/AdCampaignsApi.md
CHANGED
|
@@ -10,6 +10,7 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
10
10
|
| [**bulk_update_ad_campaign_status**](AdCampaignsApi.md#bulk_update_ad_campaign_status) | **POST** /v1/ads/campaigns/bulk-status | Pause or resume many campaigns |
|
|
11
11
|
| [**create_ad_campaign**](AdCampaignsApi.md#create_ad_campaign) | **POST** /v1/ads/campaigns | Create a standalone campaign |
|
|
12
12
|
| [**create_ad_set**](AdCampaignsApi.md#create_ad_set) | **POST** /v1/ads/ad-sets | Create a standalone ad group |
|
|
13
|
+
| [**create_bid_strategy**](AdCampaignsApi.md#create_bid_strategy) | **POST** /v1/ads/bid-strategies | Create a Google Ads portfolio bid strategy |
|
|
13
14
|
| [**create_standalone_ad**](AdCampaignsApi.md#create_standalone_ad) | **POST** /v1/ads/create | Create standalone ad |
|
|
14
15
|
| [**delete_ad**](AdCampaignsApi.md#delete_ad) | **DELETE** /v1/ads/{adId} | Cancel an ad |
|
|
15
16
|
| [**delete_ad_campaign**](AdCampaignsApi.md#delete_ad_campaign) | **DELETE** /v1/ads/campaigns/{campaignId} | Delete a campaign |
|
|
@@ -21,11 +22,13 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
21
22
|
| [**get_ad_set_details**](AdCampaignsApi.md#get_ad_set_details) | **GET** /v1/ads/ad-sets/{adSetId} | Live ad-set details incl. learning phase |
|
|
22
23
|
| [**get_ad_tree**](AdCampaignsApi.md#get_ad_tree) | **GET** /v1/ads/tree | Get campaign tree |
|
|
23
24
|
| [**get_ads_timeline**](AdCampaignsApi.md#get_ads_timeline) | **GET** /v1/ads/timeline | Get daily account metrics |
|
|
25
|
+
| [**get_campaign_bidding**](AdCampaignsApi.md#get_campaign_bidding) | **GET** /v1/ads/campaigns/{campaignId}/bidding | Read a campaign's current bidding |
|
|
24
26
|
| [**get_campaign_targeting**](AdCampaignsApi.md#get_campaign_targeting) | **GET** /v1/ads/campaigns/{campaignId}/targeting | Read a Google campaign's device, location, and language targeting |
|
|
25
27
|
| [**list_ad_campaigns**](AdCampaignsApi.md#list_ad_campaigns) | **GET** /v1/ads/campaigns | List campaigns |
|
|
26
28
|
| [**list_ad_keywords**](AdCampaignsApi.md#list_ad_keywords) | **GET** /v1/ads/keywords | List Search keywords |
|
|
27
29
|
| [**list_ad_sets**](AdCampaignsApi.md#list_ad_sets) | **GET** /v1/ads/ad-sets | List ad sets |
|
|
28
30
|
| [**list_ads**](AdCampaignsApi.md#list_ads) | **GET** /v1/ads | List ads |
|
|
31
|
+
| [**list_bid_strategies**](AdCampaignsApi.md#list_bid_strategies) | **GET** /v1/ads/bid-strategies | List Google Ads portfolio bid strategies |
|
|
29
32
|
| [**list_campaign_negative_keywords**](AdCampaignsApi.md#list_campaign_negative_keywords) | **GET** /v1/ads/campaigns/{campaignId}/negative-keywords | List campaign-level negative keywords |
|
|
30
33
|
| [**remove_ad_keyword**](AdCampaignsApi.md#remove_ad_keyword) | **DELETE** /v1/ads/keywords/{keywordId} | Remove a Search keyword |
|
|
31
34
|
| [**replace_campaign_negative_keywords**](AdCampaignsApi.md#replace_campaign_negative_keywords) | **PUT** /v1/ads/campaigns/{campaignId}/negative-keywords | Replace campaign-level negative keywords |
|
|
@@ -36,6 +39,7 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
36
39
|
| [**update_ad_set**](AdCampaignsApi.md#update_ad_set) | **PUT** /v1/ads/ad-sets/{adSetId} | Update an ad set |
|
|
37
40
|
| [**update_ad_set_status**](AdCampaignsApi.md#update_ad_set_status) | **PUT** /v1/ads/ad-sets/{adSetId}/status | Pause or resume a single ad set |
|
|
38
41
|
| [**update_ad_status**](AdCampaignsApi.md#update_ad_status) | **PUT** /v1/ads/{adId}/status | Pause or resume a single ad |
|
|
42
|
+
| [**update_bid_strategy**](AdCampaignsApi.md#update_bid_strategy) | **PATCH** /v1/ads/bid-strategies/{strategyId} | Update a Google Ads portfolio bid strategy |
|
|
39
43
|
| [**update_campaign_targeting**](AdCampaignsApi.md#update_campaign_targeting) | **PUT** /v1/ads/campaigns/{campaignId}/targeting | Edit a Google campaign's device, location, or language targeting |
|
|
40
44
|
|
|
41
45
|
|
|
@@ -327,7 +331,7 @@ end
|
|
|
327
331
|
|
|
328
332
|
Create a standalone campaign
|
|
329
333
|
|
|
330
|
-
Creates a campaign WITHOUT its first ad set / ad, on the platform of the given `accountId`. Ad sets join it later via `existingCampaignId` on the create endpoints. Platform notes: on Meta a budget here is campaign-level (CBO) by definition; omit it for ABO (each ad set carries its own budget), and `specialAdCategories`
|
|
334
|
+
Creates a campaign WITHOUT its first ad set / ad, on the platform of the given `accountId`. Ad sets join it later via `existingCampaignId` on the create endpoints. Platform notes: on Meta a budget here is campaign-level (CBO) by definition; omit it for ABO (each ad set carries its own budget), and `specialAdCategories` is Meta-only (400 elsewhere); `bidStrategy` is Meta and Google (400 elsewhere), and Google also accepts `portfolioBidStrategyId` instead. Google, X and OpenAI require a budget (422 without one; OpenAI accepts only `budgetType: lifetime`, Google only `budgetType: daily`). LinkedIn creates the campaign GROUP (our campaign level) and rejects a budget, which lives on the campaign (ad set) level there; it comes back `status: DRAFT`. TikTok campaigns are created without a status and report `ENABLE`. Created `PAUSED` unless `status: ACTIVE` where the platform supports it. **Idempotency:** send an `Idempotency-Key` header to make retries safe.
|
|
331
335
|
|
|
332
336
|
### Examples
|
|
333
337
|
|
|
@@ -467,6 +471,75 @@ end
|
|
|
467
471
|
- **Accept**: application/json
|
|
468
472
|
|
|
469
473
|
|
|
474
|
+
## create_bid_strategy
|
|
475
|
+
|
|
476
|
+
> <CreateBidStrategy201Response> create_bid_strategy(create_bid_strategy_request)
|
|
477
|
+
|
|
478
|
+
Create a Google Ads portfolio bid strategy
|
|
479
|
+
|
|
480
|
+
Creates a standalone bid strategy shared across campaigns. Attach it to a campaign with `portfolioBidStrategyId` on POST /v1/ads/create, PUT /v1/ads/campaigns/{campaignId}, or PUT /v1/ads/ad-sets/{adSetId}. Attaching a strategy aligned to a shared budget fails there with a 400 (Google's `BIDDING_STRATEGY_AND_BUDGET_MUST_BE_ALIGNED`); this is not retryable.
|
|
481
|
+
|
|
482
|
+
### Examples
|
|
483
|
+
|
|
484
|
+
```ruby
|
|
485
|
+
require 'time'
|
|
486
|
+
require 'zernio-sdk'
|
|
487
|
+
# setup authorization
|
|
488
|
+
Zernio.configure do |config|
|
|
489
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
490
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
494
|
+
create_bid_strategy_request = Zernio::CreateBidStrategyRequest.new({account_id: 'account_id_example', name: 'name_example', type: 'TARGET_CPA'}) # CreateBidStrategyRequest |
|
|
495
|
+
|
|
496
|
+
begin
|
|
497
|
+
# Create a Google Ads portfolio bid strategy
|
|
498
|
+
result = api_instance.create_bid_strategy(create_bid_strategy_request)
|
|
499
|
+
p result
|
|
500
|
+
rescue Zernio::ApiError => e
|
|
501
|
+
puts "Error when calling AdCampaignsApi->create_bid_strategy: #{e}"
|
|
502
|
+
end
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
#### Using the create_bid_strategy_with_http_info variant
|
|
506
|
+
|
|
507
|
+
This returns an Array which contains the response data, status code and headers.
|
|
508
|
+
|
|
509
|
+
> <Array(<CreateBidStrategy201Response>, Integer, Hash)> create_bid_strategy_with_http_info(create_bid_strategy_request)
|
|
510
|
+
|
|
511
|
+
```ruby
|
|
512
|
+
begin
|
|
513
|
+
# Create a Google Ads portfolio bid strategy
|
|
514
|
+
data, status_code, headers = api_instance.create_bid_strategy_with_http_info(create_bid_strategy_request)
|
|
515
|
+
p status_code # => 2xx
|
|
516
|
+
p headers # => { ... }
|
|
517
|
+
p data # => <CreateBidStrategy201Response>
|
|
518
|
+
rescue Zernio::ApiError => e
|
|
519
|
+
puts "Error when calling AdCampaignsApi->create_bid_strategy_with_http_info: #{e}"
|
|
520
|
+
end
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
### Parameters
|
|
524
|
+
|
|
525
|
+
| Name | Type | Description | Notes |
|
|
526
|
+
| ---- | ---- | ----------- | ----- |
|
|
527
|
+
| **create_bid_strategy_request** | [**CreateBidStrategyRequest**](CreateBidStrategyRequest.md) | | |
|
|
528
|
+
|
|
529
|
+
### Return type
|
|
530
|
+
|
|
531
|
+
[**CreateBidStrategy201Response**](CreateBidStrategy201Response.md)
|
|
532
|
+
|
|
533
|
+
### Authorization
|
|
534
|
+
|
|
535
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
536
|
+
|
|
537
|
+
### HTTP request headers
|
|
538
|
+
|
|
539
|
+
- **Content-Type**: application/json
|
|
540
|
+
- **Accept**: application/json
|
|
541
|
+
|
|
542
|
+
|
|
470
543
|
## create_standalone_ad
|
|
471
544
|
|
|
472
545
|
> <CreateStandaloneAd200Response> create_standalone_ad(create_standalone_ad_request, opts)
|
|
@@ -1300,13 +1373,90 @@ end
|
|
|
1300
1373
|
- **Accept**: application/json
|
|
1301
1374
|
|
|
1302
1375
|
|
|
1376
|
+
## get_campaign_bidding
|
|
1377
|
+
|
|
1378
|
+
> <GetCampaignBidding200Response> get_campaign_bidding(campaign_id, account_id, platform, opts)
|
|
1379
|
+
|
|
1380
|
+
Read a campaign's current bidding
|
|
1381
|
+
|
|
1382
|
+
Read of the campaign's bidding strategy on Google, cached for the quota window, for pre-filling the bid strategy block before a PUT to /v1/ads/campaigns/{campaignId}. Google Ads only; `platform` is required and rejected when it is anything else, since a `campaignId` is not globally unique. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read. Maps Google's bidding strategy onto the same triplet PUT accepts: `LOWEST_COST_WITHOUT_CAP` (Maximize Conversions, no target), `COST_CAP` + `bidAmount` (Target CPA), `LOWEST_COST_WITH_MIN_ROAS` + `roasAverageFloor` (Target ROAS), `LOWEST_COST_WITH_BID_CAP` + `bidAmount` (Maximize Clicks with a CPC ceiling). A campaign on a portfolio strategy returns `portfolio` (id + name) and `bidSpec.portfolioBidStrategyId` instead of the triplet. Anything else (Manual CPC, Target Impression Share, ...) returns `bidSpec: null`; show `biddingStrategyType` as-is.
|
|
1383
|
+
|
|
1384
|
+
### Examples
|
|
1385
|
+
|
|
1386
|
+
```ruby
|
|
1387
|
+
require 'time'
|
|
1388
|
+
require 'zernio-sdk'
|
|
1389
|
+
# setup authorization
|
|
1390
|
+
Zernio.configure do |config|
|
|
1391
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
1392
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
1393
|
+
end
|
|
1394
|
+
|
|
1395
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
1396
|
+
campaign_id = 'campaign_id_example' # String | Numeric Google platform campaign id.
|
|
1397
|
+
account_id = 'account_id_example' # String | Zernio Google Ads SocialAccount id: resolves the customer id + refresh token.
|
|
1398
|
+
platform = 'google' # String | Required: campaign IDs are not globally unique. Only \"google\" is supported today.
|
|
1399
|
+
opts = {
|
|
1400
|
+
customer_id: 'customer_id_example' # String | Numeric Google Ads customer id (no dashes). Required when the connection has multiple Google Ads accounts; optional (and inferred) when it has only one.
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
begin
|
|
1404
|
+
# Read a campaign's current bidding
|
|
1405
|
+
result = api_instance.get_campaign_bidding(campaign_id, account_id, platform, opts)
|
|
1406
|
+
p result
|
|
1407
|
+
rescue Zernio::ApiError => e
|
|
1408
|
+
puts "Error when calling AdCampaignsApi->get_campaign_bidding: #{e}"
|
|
1409
|
+
end
|
|
1410
|
+
```
|
|
1411
|
+
|
|
1412
|
+
#### Using the get_campaign_bidding_with_http_info variant
|
|
1413
|
+
|
|
1414
|
+
This returns an Array which contains the response data, status code and headers.
|
|
1415
|
+
|
|
1416
|
+
> <Array(<GetCampaignBidding200Response>, Integer, Hash)> get_campaign_bidding_with_http_info(campaign_id, account_id, platform, opts)
|
|
1417
|
+
|
|
1418
|
+
```ruby
|
|
1419
|
+
begin
|
|
1420
|
+
# Read a campaign's current bidding
|
|
1421
|
+
data, status_code, headers = api_instance.get_campaign_bidding_with_http_info(campaign_id, account_id, platform, opts)
|
|
1422
|
+
p status_code # => 2xx
|
|
1423
|
+
p headers # => { ... }
|
|
1424
|
+
p data # => <GetCampaignBidding200Response>
|
|
1425
|
+
rescue Zernio::ApiError => e
|
|
1426
|
+
puts "Error when calling AdCampaignsApi->get_campaign_bidding_with_http_info: #{e}"
|
|
1427
|
+
end
|
|
1428
|
+
```
|
|
1429
|
+
|
|
1430
|
+
### Parameters
|
|
1431
|
+
|
|
1432
|
+
| Name | Type | Description | Notes |
|
|
1433
|
+
| ---- | ---- | ----------- | ----- |
|
|
1434
|
+
| **campaign_id** | **String** | Numeric Google platform campaign id. | |
|
|
1435
|
+
| **account_id** | **String** | Zernio Google Ads SocialAccount id: resolves the customer id + refresh token. | |
|
|
1436
|
+
| **platform** | **String** | Required: campaign IDs are not globally unique. Only \"google\" is supported today. | |
|
|
1437
|
+
| **customer_id** | **String** | Numeric Google Ads customer id (no dashes). Required when the connection has multiple Google Ads accounts; optional (and inferred) when it has only one. | [optional] |
|
|
1438
|
+
|
|
1439
|
+
### Return type
|
|
1440
|
+
|
|
1441
|
+
[**GetCampaignBidding200Response**](GetCampaignBidding200Response.md)
|
|
1442
|
+
|
|
1443
|
+
### Authorization
|
|
1444
|
+
|
|
1445
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
1446
|
+
|
|
1447
|
+
### HTTP request headers
|
|
1448
|
+
|
|
1449
|
+
- **Content-Type**: Not defined
|
|
1450
|
+
- **Accept**: application/json
|
|
1451
|
+
|
|
1452
|
+
|
|
1303
1453
|
## get_campaign_targeting
|
|
1304
1454
|
|
|
1305
1455
|
> <GetCampaignTargeting200Response> get_campaign_targeting(campaign_id, opts)
|
|
1306
1456
|
|
|
1307
1457
|
Read a Google campaign's device, location, and language targeting
|
|
1308
1458
|
|
|
1309
|
-
Google Ads compliance requires geo, language, budget, and bidding targeting set at creation to stay editable afterwards; this reads the
|
|
1459
|
+
Google Ads compliance requires geo, language, budget, and bidding targeting set at creation to stay editable afterwards; this reads the campaign state so an integrator can build an editor around it. Cached for the quota window (10 minutes fresh, up to 7 days last-good), not always a live read. Google only; every other platform returns 501. `devices` always lists all four device types with `included` reflecting Google's negative device criteria (a device absent from any negative criterion is included by default). This read has no bid-modifier source, so `bidModifier` is always `null` even for a device with one configured.
|
|
1310
1460
|
|
|
1311
1461
|
### Examples
|
|
1312
1462
|
|
|
@@ -1737,13 +1887,90 @@ end
|
|
|
1737
1887
|
- **Accept**: application/json
|
|
1738
1888
|
|
|
1739
1889
|
|
|
1890
|
+
## list_bid_strategies
|
|
1891
|
+
|
|
1892
|
+
> <ListBidStrategies200Response> list_bid_strategies(account_id, opts)
|
|
1893
|
+
|
|
1894
|
+
List Google Ads portfolio bid strategies
|
|
1895
|
+
|
|
1896
|
+
Bidding strategy report: type, status, campaign count, clicks, cost, cost per conversion, impressions, average CPC and conversions over the date range (default last 30 days). Reads Google's `bidding_strategy` resource, cached for the quota window. Draws on the shared Google Ads operations budget. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
|
|
1897
|
+
|
|
1898
|
+
### Examples
|
|
1899
|
+
|
|
1900
|
+
```ruby
|
|
1901
|
+
require 'time'
|
|
1902
|
+
require 'zernio-sdk'
|
|
1903
|
+
# setup authorization
|
|
1904
|
+
Zernio.configure do |config|
|
|
1905
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
1906
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
1907
|
+
end
|
|
1908
|
+
|
|
1909
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
1910
|
+
account_id = 'account_id_example' # String | Google ads SocialAccount id.
|
|
1911
|
+
opts = {
|
|
1912
|
+
customer_id: 'customer_id_example', # String | Numeric Google Ads customer id (no dashes). Defaults to the account's connected customer.
|
|
1913
|
+
from_date: Date.parse('2013-10-20'), # Date | Defaults to 30 days ago.
|
|
1914
|
+
to_date: Date.parse('2013-10-20') # Date | Defaults to today.
|
|
1915
|
+
}
|
|
1916
|
+
|
|
1917
|
+
begin
|
|
1918
|
+
# List Google Ads portfolio bid strategies
|
|
1919
|
+
result = api_instance.list_bid_strategies(account_id, opts)
|
|
1920
|
+
p result
|
|
1921
|
+
rescue Zernio::ApiError => e
|
|
1922
|
+
puts "Error when calling AdCampaignsApi->list_bid_strategies: #{e}"
|
|
1923
|
+
end
|
|
1924
|
+
```
|
|
1925
|
+
|
|
1926
|
+
#### Using the list_bid_strategies_with_http_info variant
|
|
1927
|
+
|
|
1928
|
+
This returns an Array which contains the response data, status code and headers.
|
|
1929
|
+
|
|
1930
|
+
> <Array(<ListBidStrategies200Response>, Integer, Hash)> list_bid_strategies_with_http_info(account_id, opts)
|
|
1931
|
+
|
|
1932
|
+
```ruby
|
|
1933
|
+
begin
|
|
1934
|
+
# List Google Ads portfolio bid strategies
|
|
1935
|
+
data, status_code, headers = api_instance.list_bid_strategies_with_http_info(account_id, opts)
|
|
1936
|
+
p status_code # => 2xx
|
|
1937
|
+
p headers # => { ... }
|
|
1938
|
+
p data # => <ListBidStrategies200Response>
|
|
1939
|
+
rescue Zernio::ApiError => e
|
|
1940
|
+
puts "Error when calling AdCampaignsApi->list_bid_strategies_with_http_info: #{e}"
|
|
1941
|
+
end
|
|
1942
|
+
```
|
|
1943
|
+
|
|
1944
|
+
### Parameters
|
|
1945
|
+
|
|
1946
|
+
| Name | Type | Description | Notes |
|
|
1947
|
+
| ---- | ---- | ----------- | ----- |
|
|
1948
|
+
| **account_id** | **String** | Google ads SocialAccount id. | |
|
|
1949
|
+
| **customer_id** | **String** | Numeric Google Ads customer id (no dashes). Defaults to the account's connected customer. | [optional] |
|
|
1950
|
+
| **from_date** | **Date** | Defaults to 30 days ago. | [optional] |
|
|
1951
|
+
| **to_date** | **Date** | Defaults to today. | [optional] |
|
|
1952
|
+
|
|
1953
|
+
### Return type
|
|
1954
|
+
|
|
1955
|
+
[**ListBidStrategies200Response**](ListBidStrategies200Response.md)
|
|
1956
|
+
|
|
1957
|
+
### Authorization
|
|
1958
|
+
|
|
1959
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
1960
|
+
|
|
1961
|
+
### HTTP request headers
|
|
1962
|
+
|
|
1963
|
+
- **Content-Type**: Not defined
|
|
1964
|
+
- **Accept**: application/json
|
|
1965
|
+
|
|
1966
|
+
|
|
1740
1967
|
## list_campaign_negative_keywords
|
|
1741
1968
|
|
|
1742
1969
|
> <ListCampaignNegativeKeywords200Response> list_campaign_negative_keywords(campaign_id, opts)
|
|
1743
1970
|
|
|
1744
1971
|
List campaign-level negative keywords
|
|
1745
1972
|
|
|
1746
|
-
Returns the campaign-level negative keywords (`campaign_criterion.negative`), distinct from the ad-group-level negatives under `GET /v1/ads/keywords`.
|
|
1973
|
+
Returns the campaign-level negative keywords (`campaign_criterion.negative`), distinct from the ad-group-level negatives under `GET /v1/ads/keywords`. Cached for the quota window (not synced to Postgres), and gated by the shared Google Ads operations budget like every other on-demand Google surface. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read. The platform is always discovered from the campaign itself; a non-Google campaign returns 501 rather than 404, whether or not `platform` was passed.
|
|
1747
1974
|
|
|
1748
1975
|
### Examples
|
|
1749
1976
|
|
|
@@ -1956,7 +2183,7 @@ end
|
|
|
1956
2183
|
|
|
1957
2184
|
Update ad
|
|
1958
2185
|
|
|
1959
|
-
Patch one or more fields on an ad. Status, budget, targeting, and creative changes are propagated to the platform. Per-platform support: - **Meta** (Facebook + Instagram): all fields supported. - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative (via `/v2/ad/update/` patch-style — `headline` is ignored, `body` becomes `ad_text`). - **Google**: status, budget,
|
|
2186
|
+
Patch one or more fields on an ad. Status, budget, targeting, and creative changes are propagated to the platform. Per-platform support: - **Meta** (Facebook + Instagram): all fields supported. - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative (via `/v2/ad/update/` patch-style — `headline` is ignored, `body` becomes `ad_text`). - **Google**: status, budget, KEYWORD edits via `targeting.keywords` / `targeting.negativeKeywords`, and DEVICE bid adjustments via `targeting.devices` — each list you send becomes the FULL new set of its kind (criteria not in the list are removed); a kind left out is untouched. Any other `targeting` field returns 400: Google cannot mutate broad targeting post-create without recreating the campaign. `creative` returns 501. - **LinkedIn**: status, budget, targeting (geo countries only, applied to the LinkedIn Campaign via PARTIAL_UPDATE), and creative (uploads new media, creates a replacement inline creative on the same campaign, pauses the old one). - **Pinterest / X / OpenAI Ads**: status + budget only. Sending `targeting` or `creative` returns 501 with code `unsupported_platform_operation`. OpenAI Ads budget is lifetime-only (see `budget.type` below).
|
|
1960
2187
|
|
|
1961
2188
|
### Examples
|
|
1962
2189
|
|
|
@@ -2027,7 +2254,7 @@ end
|
|
|
2027
2254
|
|
|
2028
2255
|
Update a campaign
|
|
2029
2256
|
|
|
2030
|
-
Campaign-level edits. Send at least one of `budget`, `bidStrategy`, `name` or `platformSpecificData`. An unsupported field is always an error, never a silent drop. | Body field | Meta | Google | Others | |---|---|---|---| | `bidStrategy` | Yes | Yes | 501 | | `bidAmount`, `roasAverageFloor` | 400 — ad-set level | Yes | 400 | | `budget` (CBO; ABO returns 409) | Yes | 501 | 501 | | `name` | Yes | 501 | 501 | | `platformSpecificData.spendCap` | Yes | 400 | 400 | | `accountId` (empty campaigns) | Yes | - | - | Google
|
|
2257
|
+
Campaign-level edits. Send at least one of `budget`, `bidStrategy`, `portfolioBidStrategyId`, `name` or `platformSpecificData`. An unsupported field is always an error, never a silent drop. | Body field | Meta | Google | Others | |---|---|---|---| | `bidStrategy` | Yes | Yes | 501 | | `bidAmount`, `roasAverageFloor` | 400 — ad-set level | Yes | 400 | | `portfolioBidStrategyId` | 400 | Yes | 400 | | `budget` (CBO; ABO returns 409) | Yes | 501 | 501 | | `name` | Yes | 501 | 501 | | `platformSpecificData.spendCap` | Yes | 400 | 400 | | `accountId` (empty campaigns) | Yes | - | - | On Google: `LOWEST_COST_WITHOUT_CAP` = Maximize Conversions, `COST_CAP` + `bidAmount` = Target CPA, `LOWEST_COST_WITH_MIN_ROAS` + `roasAverageFloor` = Target ROAS, `LOWEST_COST_WITH_BID_CAP` + `bidAmount` = Maximize Clicks with a CPC ceiling; `portfolioBidStrategyId` attaches a portfolio strategy instead (exclusive with `bidStrategy`). Setting the standard triplet on a campaign that is currently on a PORTFOLIO strategy is rejected: detach it in Google Ads first, since it is shared across campaigns. `accountId` forwards the update straight to Meta for a campaign with zero ads, which would otherwise 404; the response then carries `updated: 0`.
|
|
2031
2258
|
|
|
2032
2259
|
### Examples
|
|
2033
2260
|
|
|
@@ -2447,13 +2674,84 @@ end
|
|
|
2447
2674
|
- **Accept**: application/json
|
|
2448
2675
|
|
|
2449
2676
|
|
|
2677
|
+
## update_bid_strategy
|
|
2678
|
+
|
|
2679
|
+
> <UpdateBidStrategy200Response> update_bid_strategy(strategy_id, update_bid_strategy_request)
|
|
2680
|
+
|
|
2681
|
+
Update a Google Ads portfolio bid strategy
|
|
2682
|
+
|
|
2683
|
+
Renames or retargets a portfolio bid strategy. The strategy's status is output only on Google's side, so it cannot be changed here; remove a strategy in Google Ads. `type` is only needed alongside `targetCpa`/`targetRoas` to disambiguate the field Google writes to (TARGET_CPA and MAXIMIZE_CONVERSIONS both take a target CPA; TARGET_ROAS and MAXIMIZE_CONVERSION_VALUE both take a target ROAS); the strategy's family is otherwise immutable once created.
|
|
2684
|
+
|
|
2685
|
+
### Examples
|
|
2686
|
+
|
|
2687
|
+
```ruby
|
|
2688
|
+
require 'time'
|
|
2689
|
+
require 'zernio-sdk'
|
|
2690
|
+
# setup authorization
|
|
2691
|
+
Zernio.configure do |config|
|
|
2692
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
2693
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
2694
|
+
end
|
|
2695
|
+
|
|
2696
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
2697
|
+
strategy_id = 'strategy_id_example' # String | Numeric Google Ads bid strategy id.
|
|
2698
|
+
update_bid_strategy_request = Zernio::UpdateBidStrategyRequest.new({account_id: 'account_id_example'}) # UpdateBidStrategyRequest |
|
|
2699
|
+
|
|
2700
|
+
begin
|
|
2701
|
+
# Update a Google Ads portfolio bid strategy
|
|
2702
|
+
result = api_instance.update_bid_strategy(strategy_id, update_bid_strategy_request)
|
|
2703
|
+
p result
|
|
2704
|
+
rescue Zernio::ApiError => e
|
|
2705
|
+
puts "Error when calling AdCampaignsApi->update_bid_strategy: #{e}"
|
|
2706
|
+
end
|
|
2707
|
+
```
|
|
2708
|
+
|
|
2709
|
+
#### Using the update_bid_strategy_with_http_info variant
|
|
2710
|
+
|
|
2711
|
+
This returns an Array which contains the response data, status code and headers.
|
|
2712
|
+
|
|
2713
|
+
> <Array(<UpdateBidStrategy200Response>, Integer, Hash)> update_bid_strategy_with_http_info(strategy_id, update_bid_strategy_request)
|
|
2714
|
+
|
|
2715
|
+
```ruby
|
|
2716
|
+
begin
|
|
2717
|
+
# Update a Google Ads portfolio bid strategy
|
|
2718
|
+
data, status_code, headers = api_instance.update_bid_strategy_with_http_info(strategy_id, update_bid_strategy_request)
|
|
2719
|
+
p status_code # => 2xx
|
|
2720
|
+
p headers # => { ... }
|
|
2721
|
+
p data # => <UpdateBidStrategy200Response>
|
|
2722
|
+
rescue Zernio::ApiError => e
|
|
2723
|
+
puts "Error when calling AdCampaignsApi->update_bid_strategy_with_http_info: #{e}"
|
|
2724
|
+
end
|
|
2725
|
+
```
|
|
2726
|
+
|
|
2727
|
+
### Parameters
|
|
2728
|
+
|
|
2729
|
+
| Name | Type | Description | Notes |
|
|
2730
|
+
| ---- | ---- | ----------- | ----- |
|
|
2731
|
+
| **strategy_id** | **String** | Numeric Google Ads bid strategy id. | |
|
|
2732
|
+
| **update_bid_strategy_request** | [**UpdateBidStrategyRequest**](UpdateBidStrategyRequest.md) | | |
|
|
2733
|
+
|
|
2734
|
+
### Return type
|
|
2735
|
+
|
|
2736
|
+
[**UpdateBidStrategy200Response**](UpdateBidStrategy200Response.md)
|
|
2737
|
+
|
|
2738
|
+
### Authorization
|
|
2739
|
+
|
|
2740
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
2741
|
+
|
|
2742
|
+
### HTTP request headers
|
|
2743
|
+
|
|
2744
|
+
- **Content-Type**: application/json
|
|
2745
|
+
- **Accept**: application/json
|
|
2746
|
+
|
|
2747
|
+
|
|
2450
2748
|
## update_campaign_targeting
|
|
2451
2749
|
|
|
2452
2750
|
> <UpdateCampaignTargeting200Response> update_campaign_targeting(campaign_id, update_campaign_targeting_request)
|
|
2453
2751
|
|
|
2454
2752
|
Edit a Google campaign's device, location, or language targeting
|
|
2455
2753
|
|
|
2456
|
-
Google Ads compliance row M.10: geo and language targeting set at creation must stay editable afterwards. Send at least one of `devices`, `locations`, `languages`; each provided field REPLACES that field's existing criteria on the campaign (a full set, not a delta). Fields left out of the body are untouched. Google only; every other platform returns 501. `locations` accepts the same shapes as campaign creation: a bare array of ISO country codes, or an object with `countries`/`regions`/`cities`/`zips`/`metros` key lists (`key` from GET /v1/ads/targeting/search?dimension=geo). Negative (excluded) locations are left untouched by this endpoint. `languages` is an array of Google's language codes (ISO 639-1, plus variants such as `zh_CN`); an unknown code returns 400.
|
|
2754
|
+
Google Ads compliance row M.10: geo and language targeting set at creation must stay editable afterwards. Send at least one of `devices`, `locations`, `languages`; each provided field REPLACES that field's existing criteria on the campaign (a full set, not a delta). Fields left out of the body are untouched. Google only; every other platform returns 501. `locations` accepts the same shapes as campaign creation: a bare array of ISO country codes, or an object with `countries`/`regions`/`cities`/`zips`/`metros` key lists (`key` from GET /v1/ads/targeting/search?dimension=geo). Negative (excluded) locations are left untouched by this endpoint. `languages` is an array of Google's language codes (ISO 639-1, plus variants such as `zh_CN`); an unknown code returns 400. The response includes the refreshed `devices`/`locations`/`languages` state read back from Google after the edit, and invalidates the cached copy `GET` on this campaign would otherwise keep serving.
|
|
2457
2755
|
|
|
2458
2756
|
### Examples
|
|
2459
2757
|
|
data/docs/AdInsightsApi.md
CHANGED
|
@@ -383,7 +383,7 @@ end
|
|
|
383
383
|
|
|
384
384
|
Google Ads search terms report
|
|
385
385
|
|
|
386
|
-
The actual search queries that triggered your ads, with matched-keyword status and spend metrics — the raw material for wasted-spend analysis and negative-keyword lists. Reads Google's `search_term_view
|
|
386
|
+
The actual search queries that triggered your ads, with matched-keyword status and spend metrics — the raw material for wasted-spend analysis and negative-keyword lists. Reads Google's `search_term_view`, cached for the quota window; defaults to the last 30 days. Rows are ordered by cost, descending. Draws on the shared Google Ads operations budget. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
|
|
387
387
|
|
|
388
388
|
### Examples
|
|
389
389
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Zernio::CampaignBidding
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **channel** | **String** | campaign.advertising_channel_type. COST_CAP's underlying Google field differs by channel; see bidStrategy on PUT. | [optional] |
|
|
8
|
+
| **bidding_strategy_type** | **String** | Google's raw enum: MAXIMIZE_CONVERSIONS, TARGET_CPA, MAXIMIZE_CONVERSION_VALUE, TARGET_ROAS, TARGET_SPEND, MANUAL_CPC, TARGET_IMPRESSION_SHARE, or another Google adds later. | [optional] |
|
|
9
|
+
| **bid_spec** | [**CampaignBiddingBidSpec**](CampaignBiddingBidSpec.md) | | [optional] |
|
|
10
|
+
| **portfolio** | [**CampaignBiddingPortfolio**](CampaignBiddingPortfolio.md) | | [optional] |
|
|
11
|
+
| **cached_at** | **Time** | When this data was fetched from Google. Null when it was never served from cache. | [optional] |
|
|
12
|
+
| **stale** | **Boolean** | True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read. | [optional] |
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
require 'zernio-sdk'
|
|
18
|
+
|
|
19
|
+
instance = Zernio::CampaignBidding.new(
|
|
20
|
+
channel: null,
|
|
21
|
+
bidding_strategy_type: null,
|
|
22
|
+
bid_spec: null,
|
|
23
|
+
portfolio: null,
|
|
24
|
+
cached_at: null,
|
|
25
|
+
stale: null
|
|
26
|
+
)
|
|
27
|
+
```
|
|
28
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::CampaignBiddingBidSpec
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **bid_strategy** | [**BidStrategy**](BidStrategy.md) | | [optional] |
|
|
8
|
+
| **bid_amount** | **Float** | Whole currency units. Present for COST_CAP and LOWEST_COST_WITH_BID_CAP, and omitted when the campaign is on a bare TARGET_SPEND with no CPC ceiling set. | [optional] |
|
|
9
|
+
| **roas_average_floor** | **Float** | Decimal ROAS multiplier (2.0 = 2.0x). Present for LOWEST_COST_WITH_MIN_ROAS. | [optional] |
|
|
10
|
+
| **portfolio_bid_strategy_id** | **String** | Present alone (bidStrategy omitted) when the campaign is on a portfolio strategy; see portfolio. | [optional] |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::CampaignBiddingBidSpec.new(
|
|
18
|
+
bid_strategy: null,
|
|
19
|
+
bid_amount: null,
|
|
20
|
+
roas_average_floor: null,
|
|
21
|
+
portfolio_bid_strategy_id: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::CampaignBiddingPortfolio
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **id** | **String** | | [optional] |
|
|
8
|
+
| **name** | **String** | | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::CampaignBiddingPortfolio.new(
|
|
16
|
+
id: null,
|
|
17
|
+
name: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
data/docs/ConversionsApi.md
CHANGED
|
@@ -168,7 +168,7 @@ end
|
|
|
168
168
|
|
|
169
169
|
Create a website conversion action
|
|
170
170
|
|
|
171
|
-
Creates a `WEBPAGE` conversion action (category `DEFAULT`) and returns it with its tag snippets, read back after creation since Google never returns them on the create response itself. Google-only; other platforms return `501`. Requires the Ads add-on.
|
|
171
|
+
Creates a `WEBPAGE` conversion action (category `DEFAULT`) and returns it with its tag snippets, read back after creation since Google never returns them on the create response itself. Invalidates the cached list `GET` on this resource would otherwise keep serving. Google-only; other platforms return `501`. Requires the Ads add-on.
|
|
172
172
|
|
|
173
173
|
### Examples
|
|
174
174
|
|
|
@@ -607,7 +607,7 @@ end
|
|
|
607
607
|
|
|
608
608
|
List conversion actions and their tag snippets
|
|
609
609
|
|
|
610
|
-
Lists Google Ads conversion actions on the resolved customer, all types by default. Each action's `tagSnippets` (global site tag + event snippet) is included when Google has them for that action's type, e.g. `WEBPAGE`. Google-only; other platforms return `501`. Requires the Ads add-on. `customerId` is optional: when omitted, it is resolved from the connection's accessible Google Ads customers, and the call fails with `400` when more than one is accessible (pass `customerId` to disambiguate).
|
|
610
|
+
Lists Google Ads conversion actions on the resolved customer, all types by default. Each action's `tagSnippets` (global site tag + event snippet) is included when Google has them for that action's type, e.g. `WEBPAGE`. Google-only; other platforms return `501`. Requires the Ads add-on. `customerId` is optional: when omitted, it is resolved from the connection's accessible Google Ads customers, and the call fails with `400` when more than one is accessible (pass `customerId` to disambiguate). The list itself is cached for the quota window (1 hour fresh, up to 7 days last-good; the cache key does not vary on `type`). The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
|
|
611
611
|
|
|
612
612
|
### Examples
|
|
613
613
|
|