late-sdk 0.0.859 → 0.0.860

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +18 -0
  3. data/docs/AdCampaignsApi.md +301 -3
  4. data/docs/CampaignBidding.md +24 -0
  5. data/docs/CampaignBiddingBidSpec.md +24 -0
  6. data/docs/CampaignBiddingPortfolio.md +20 -0
  7. data/docs/CreateAdCampaignRequest.md +5 -3
  8. data/docs/CreateBidStrategy201Response.md +18 -0
  9. data/docs/CreateBidStrategy201ResponseStrategy.md +22 -0
  10. data/docs/CreateBidStrategyRequest.md +28 -0
  11. data/docs/CreateStandaloneAdRequest.md +3 -1
  12. data/docs/GetCampaignBidding200Response.md +26 -0
  13. data/docs/ListBidStrategies200Response.md +22 -0
  14. data/docs/PortfolioBidStrategy.md +42 -0
  15. data/docs/UpdateAdCampaign200Response.md +2 -0
  16. data/docs/UpdateAdCampaignRequest.md +3 -1
  17. data/docs/UpdateAdRequestTargeting.md +2 -0
  18. data/docs/UpdateAdRequestTargetingDevicesInner.md +49 -0
  19. data/docs/UpdateAdRequestTargetingDevicesInnerOneOf.md +20 -0
  20. data/docs/UpdateBidStrategy200Response.md +18 -0
  21. data/docs/UpdateBidStrategy200ResponseStrategy.md +18 -0
  22. data/docs/UpdateBidStrategyRequest.md +28 -0
  23. data/lib/zernio-sdk/api/ad_campaigns_api.rb +306 -6
  24. data/lib/zernio-sdk/models/campaign_bidding.rb +211 -0
  25. data/lib/zernio-sdk/models/campaign_bidding_bid_spec.rb +200 -0
  26. data/lib/zernio-sdk/models/campaign_bidding_portfolio.rb +157 -0
  27. data/lib/zernio-sdk/models/create_ad_campaign_request.rb +37 -6
  28. data/lib/zernio-sdk/models/create_bid_strategy201_response.rb +147 -0
  29. data/lib/zernio-sdk/models/create_bid_strategy201_response_strategy.rb +166 -0
  30. data/lib/zernio-sdk/models/create_bid_strategy_request.rb +289 -0
  31. data/lib/zernio-sdk/models/create_standalone_ad_request.rb +33 -2
  32. data/lib/zernio-sdk/models/get_campaign_bidding200_response.rb +226 -0
  33. data/lib/zernio-sdk/models/list_bid_strategies200_response.rb +168 -0
  34. data/lib/zernio-sdk/models/portfolio_bid_strategy.rb +300 -0
  35. data/lib/zernio-sdk/models/update_ad_campaign200_response.rb +11 -1
  36. data/lib/zernio-sdk/models/update_ad_campaign_request.rb +33 -2
  37. data/lib/zernio-sdk/models/update_ad_request_targeting.rb +14 -2
  38. data/lib/zernio-sdk/models/update_ad_request_targeting_devices_inner.rb +104 -0
  39. data/lib/zernio-sdk/models/update_ad_request_targeting_devices_inner_one_of.rb +226 -0
  40. data/lib/zernio-sdk/models/update_bid_strategy200_response.rb +147 -0
  41. data/lib/zernio-sdk/models/update_bid_strategy200_response_strategy.rb +147 -0
  42. data/lib/zernio-sdk/models/update_bid_strategy_request.rb +273 -0
  43. data/lib/zernio-sdk/version.rb +1 -1
  44. data/lib/zernio-sdk.rb +14 -0
  45. data/openapi.yaml +264 -21
  46. data/spec/api/ad_campaigns_api_spec.rb +58 -3
  47. data/spec/models/campaign_bidding_bid_spec_spec.rb +54 -0
  48. data/spec/models/campaign_bidding_portfolio_spec.rb +42 -0
  49. data/spec/models/campaign_bidding_spec.rb +58 -0
  50. data/spec/models/create_ad_campaign_request_spec.rb +6 -0
  51. data/spec/models/create_bid_strategy201_response_spec.rb +36 -0
  52. data/spec/models/create_bid_strategy201_response_strategy_spec.rb +48 -0
  53. data/spec/models/create_bid_strategy_request_spec.rb +70 -0
  54. data/spec/models/create_standalone_ad_request_spec.rb +6 -0
  55. data/spec/models/get_campaign_bidding200_response_spec.rb +64 -0
  56. data/spec/models/list_bid_strategies200_response_spec.rb +48 -0
  57. data/spec/models/portfolio_bid_strategy_spec.rb +112 -0
  58. data/spec/models/update_ad_campaign200_response_spec.rb +6 -0
  59. data/spec/models/update_ad_campaign_request_spec.rb +6 -0
  60. data/spec/models/update_ad_request_targeting_devices_inner_one_of_spec.rb +46 -0
  61. data/spec/models/update_ad_request_targeting_devices_inner_spec.rb +32 -0
  62. data/spec/models/update_ad_request_targeting_spec.rb +6 -0
  63. data/spec/models/update_bid_strategy200_response_spec.rb +36 -0
  64. data/spec/models/update_bid_strategy200_response_strategy_spec.rb +36 -0
  65. data/spec/models/update_bid_strategy_request_spec.rb +70 -0
  66. data/zernio-sdk-0.0.860.gem +0 -0
  67. metadata +58 -2
  68. data/zernio-sdk-0.0.859.gem +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3dde39cd035fc440ad59389c7131d9ddd7b7bb21a95c97bebddd9b78ce4e655
4
- data.tar.gz: 76472a1b71e103b616d25ab50b1f8ab3891b1069937fd051c18f55f664087e6f
3
+ metadata.gz: e3bf724f0fb5ead7645ebf831326501354294abca15d4d4ec427e097c7682192
4
+ data.tar.gz: 46131c7c18dbcf4fda2e8128ffc8d2f1b2b8838531defe3d3a37ffebb71db250
5
5
  SHA512:
6
- metadata.gz: 3695a0b91d071786be8705938ef09c4a20caf94dae72304a96015c6778dee8a6c262492f6f001909d0563ea50e06b58848cd8b9cde5d9b9dbbf999fb904620b1
7
- data.tar.gz: c5b59dc523249d88002ca3122859196e51903e083aedfce8b0379214bd17ae5666f846c9596ee39c5f6525c90aab3c507526458cd005ca8efcd71b3023ce6beb
6
+ metadata.gz: a9c651c1200d471ccf9cda0ca058d95a7e4e049fba9ca77d1fffdf7e4ec730b3cd03e65c4aca8758541602274189ae3bc3bfb1d398c20638a28de608e00330c2
7
+ data.tar.gz: a879dd6aa7f838fca9f0ae169d4d84f07332b4e530e1b943eec1dcbcbc7a903433b3fcd84fa7b1b739febb5d3c8d4b96d6f510e02f70585b0d79cec9d1719aad
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)
@@ -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` / `bidStrategy` are Meta-only (400 elsewhere). 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.
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,6 +1373,83 @@ 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
+ Live read of the campaign's bidding strategy on Google, 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. 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 \&quot;google\&quot; 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)
@@ -1737,6 +1887,83 @@ 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 live. Draws on the shared Google Ads operations budget.
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&#39;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)
@@ -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, and KEYWORD edits via `targeting.keywords` / `targeting.negativeKeywords` — each list you send becomes the FULL new set of its kind on the ad group (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).
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 maps the shared enum onto its own strategies: `LOWEST_COST_WITHOUT_CAP` to Maximize Clicks, `LOWEST_COST_WITH_BID_CAP` to Maximize Clicks with a max CPC (`bidAmount`), `COST_CAP` to Target CPA (`bidAmount`), `LOWEST_COST_WITH_MIN_ROAS` to Target ROAS (`roasAverageFloor`). A campaign on a PORTFOLIO bidding 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`.
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,6 +2674,77 @@ 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)
@@ -0,0 +1,24 @@
1
+ # Zernio::CampaignBidding
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **channel** | **String** | campaign.advertising_channel_type. COST_CAP&#39;s underlying Google field differs by channel; see bidStrategy on PUT. | [optional] |
8
+ | **bidding_strategy_type** | **String** | Google&#39;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
+
12
+ ## Example
13
+
14
+ ```ruby
15
+ require 'zernio-sdk'
16
+
17
+ instance = Zernio::CampaignBidding.new(
18
+ channel: null,
19
+ bidding_strategy_type: null,
20
+ bid_spec: null,
21
+ portfolio: null
22
+ )
23
+ ```
24
+
@@ -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 &#x3D; 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
+
@@ -12,9 +12,10 @@
12
12
  | **budget_amount** | **Float** | Campaign-level (CBO) budget in WHOLE currency units (USD: 50 &#x3D; $50.00), NOT cents — Meta&#39;s own Marketing API takes this same number in minor units, so it is an easy and expensive mix-up. Requires budgetType. | [optional] |
13
13
  | **budget_type** | **String** | | [optional] |
14
14
  | **status** | **String** | | [optional][default to &#39;PAUSED&#39;] |
15
- | **bid_strategy** | **String** | Campaign bid strategy. Meta stores &#x60;bid_strategy&#x60; alongside the budget, so this REQUIRES &#x60;budgetAmount&#x60; + &#x60;budgetType&#x60; on the same request; sending it without a campaign budget is a 400. A campaign carrying a strategy without its &#x60;bid_amount&#x60; makes every ad set created under it fail with an error that names the ad set (code 100, subcode 1815857), so the bad state is rejected up front rather than accepted. To bid at ad-set level, set the strategy there instead. | [optional] |
16
- | **bid_amount** | **Float** | Whole currency units (USD: 5 &#x3D; $5.00). Required for LOWEST_COST_WITH_BID_CAP and COST_CAP; ignored otherwise. Validated here but NOT stored by Meta: the campaign object has no bid_amount field, only bid_strategy lives on it. The amount takes effect once an ad set joins this campaign (existingCampaignId on POST /v1/ads/create) and supplies its own bidAmount there. | [optional] |
15
+ | **bid_strategy** | **String** | Campaign bid strategy. Meta stores &#x60;bid_strategy&#x60; alongside the budget, so this REQUIRES &#x60;budgetAmount&#x60; + &#x60;budgetType&#x60; on the same request; sending it without a campaign budget is a 400. A campaign carrying a strategy without its &#x60;bid_amount&#x60; makes every ad set created under it fail with an error that names the ad set (code 100, subcode 1815857), so the bad state is rejected up front rather than accepted. To bid at ad-set level on Meta, set the strategy there instead. On Google: LOWEST_COST_WITHOUT_CAP &#x3D; Maximize Conversions, COST_CAP + bidAmount &#x3D; Target CPA, LOWEST_COST_WITH_MIN_ROAS + roasAverageFloor &#x3D; Target ROAS, LOWEST_COST_WITH_BID_CAP + bidAmount &#x3D; Maximize Clicks with a CPC ceiling; portfolioBidStrategyId attaches a portfolio strategy instead. | [optional] |
16
+ | **bid_amount** | **Float** | Whole currency units (USD: 5 &#x3D; $5.00). Required for LOWEST_COST_WITH_BID_CAP and COST_CAP; ignored otherwise. On Meta, validated here but NOT stored: the campaign object has no bid_amount field, only bid_strategy lives on it, and the amount takes effect once an ad set joins this campaign (existingCampaignId on POST /v1/ads/create) and supplies its own bidAmount there. On Google, stored directly on the campaign&#39;s bidding strategy. | [optional] |
17
17
  | **roas_average_floor** | **Float** | Decimal ROAS multiplier (2.0 &#x3D; 2.0x). Required for LOWEST_COST_WITH_MIN_ROAS. | [optional] |
18
+ | **portfolio_bid_strategy_id** | **String** | Google only. Attach an existing portfolio bid strategy (numeric id from GET /v1/ads/bid-strategies) to the new campaign instead of a standard one. Exclusive with bidStrategy. | [optional] |
18
19
 
19
20
  ## Example
20
21
 
@@ -32,7 +33,8 @@ instance = Zernio::CreateAdCampaignRequest.new(
32
33
  status: null,
33
34
  bid_strategy: null,
34
35
  bid_amount: null,
35
- roas_average_floor: null
36
+ roas_average_floor: null,
37
+ portfolio_bid_strategy_id: null
36
38
  )
37
39
  ```
38
40
 
@@ -0,0 +1,18 @@
1
+ # Zernio::CreateBidStrategy201Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **strategy** | [**CreateBidStrategy201ResponseStrategy**](CreateBidStrategy201ResponseStrategy.md) | | [optional] |
8
+
9
+ ## Example
10
+
11
+ ```ruby
12
+ require 'zernio-sdk'
13
+
14
+ instance = Zernio::CreateBidStrategy201Response.new(
15
+ strategy: null
16
+ )
17
+ ```
18
+
@@ -0,0 +1,22 @@
1
+ # Zernio::CreateBidStrategy201ResponseStrategy
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **customer_id** | **String** | | [optional] |
8
+ | **id** | **String** | Numeric bid strategy id; pass as portfolioBidStrategyId or in the {strategyId} path. | [optional] |
9
+ | **resource_name** | **String** | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'zernio-sdk'
15
+
16
+ instance = Zernio::CreateBidStrategy201ResponseStrategy.new(
17
+ customer_id: null,
18
+ id: null,
19
+ resource_name: null
20
+ )
21
+ ```
22
+