late-sdk 0.0.899 → 0.0.901

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 (223) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +81 -8
  3. data/docs/AdAccountsApi.md +1375 -277
  4. data/docs/AdCampaignsApi.md +525 -13
  5. data/docs/AdCreative.md +6 -0
  6. data/docs/AdTracking.md +20 -0
  7. data/docs/AddAccountCalloutsRequest.md +3 -3
  8. data/docs/AddAccountSitelinks201Response.md +20 -0
  9. data/docs/AddAccountSitelinks201ResponseSitelinksInner.md +26 -0
  10. data/docs/AddAccountSitelinksRequest.md +22 -0
  11. data/docs/AddAccountStructuredSnippets201Response.md +20 -0
  12. data/docs/AddAccountStructuredSnippets201ResponseStructuredSnippetsInner.md +22 -0
  13. data/docs/AddAccountStructuredSnippetsRequest.md +22 -0
  14. data/docs/AttachAdGroupAssets201Response.md +24 -0
  15. data/docs/AttachCampaignAssetsRequest.md +4 -4
  16. data/docs/CreateAdCampaign200Response.md +26 -0
  17. data/docs/CreateAdCampaignRequest.md +8 -0
  18. data/docs/CreateCallAdRequest.md +2 -0
  19. data/docs/CreateMessagingAdRequest.md +2 -0
  20. data/docs/CreateStandaloneAdRequest.md +15 -7
  21. data/docs/CreateStandaloneAdRequestAdditionalDescriptionsInner.md +49 -0
  22. data/docs/CreateStandaloneAdRequestAdditionalHeadlinesInner.md +49 -0
  23. data/docs/CtwaAdRequestBody.md +2 -0
  24. data/docs/GetAd200Response.md +5 -1
  25. data/docs/GetAdComments200ResponseMeta.md +10 -4
  26. data/docs/GetIosFourteenCampaignLimits200Response.md +18 -0
  27. data/docs/GetIosFourteenCampaignLimits200ResponseLimits.md +22 -0
  28. data/docs/GoogleAssetUpdate.md +26 -0
  29. data/docs/GoogleRsaDescription.md +20 -0
  30. data/docs/GoogleRsaHeadline.md +20 -0
  31. data/docs/{AttachCampaignAssetsRequestSitelinksInner.md → GoogleSitelink.md} +2 -2
  32. data/docs/{AttachCampaignAssetsRequestStructuredSnippetsInner.md → GoogleStructuredSnippet.md} +2 -2
  33. data/docs/HideAdComment200Response.md +22 -0
  34. data/docs/HideAdCommentRequest.md +18 -0
  35. data/docs/ListAccountCallouts200Response.md +2 -2
  36. data/docs/ListAccountCallouts200ResponseCalloutsInner.md +3 -3
  37. data/docs/ListAccountSitelinks200Response.md +24 -0
  38. data/docs/ListAccountSitelinks200ResponseSitelinksInner.md +32 -0
  39. data/docs/ListAccountStructuredSnippets200Response.md +24 -0
  40. data/docs/ListAccountStructuredSnippets200ResponseStructuredSnippetsInner.md +28 -0
  41. data/docs/ListAdGroupAssets200Response.md +28 -0
  42. data/docs/ListAdGroupAssets200ResponseCalloutsInner.md +22 -0
  43. data/docs/ListAdGroupAssets200ResponseSitelinksInner.md +28 -0
  44. data/docs/ListAdGroupAssets200ResponseStructuredSnippetsInner.md +24 -0
  45. data/docs/ListAdsInstagramAccounts200Response.md +22 -0
  46. data/docs/ListAdsInstagramAccounts200ResponseAccountsInner.md +26 -0
  47. data/docs/ListAdsInstagramAccounts200ResponsePagesInner.md +24 -0
  48. data/docs/ListAdsInstagramAccounts200ResponseResolved.md +22 -0
  49. data/docs/ListAdvertisableApplications200Response.md +18 -0
  50. data/docs/ListAdvertisableApplications200ResponseApplicationsInner.md +24 -0
  51. data/docs/ListCampaignAssets200Response.md +28 -0
  52. data/docs/ListCampaignAssets200ResponseCalloutsInner.md +22 -0
  53. data/docs/ListCampaignAssets200ResponseSitelinksInner.md +28 -0
  54. data/docs/ListCampaignAssets200ResponseStructuredSnippetsInner.md +24 -0
  55. data/docs/MetaInstagramIdentityRef.md +22 -0
  56. data/docs/RemoveAccountCalloutRequest.md +3 -3
  57. data/docs/RemoveAdGroupAssetsRequest.md +24 -0
  58. data/docs/RemoveCampaignAssets200Response.md +18 -0
  59. data/docs/RemoveCampaignAssetsRequest.md +24 -0
  60. data/docs/ReplyToAdComment200Response.md +20 -0
  61. data/docs/ReplyToAdCommentRequest.md +18 -0
  62. data/docs/TargetingSpec.md +4 -0
  63. data/docs/UpdateAccountCallouts200Response.md +20 -0
  64. data/docs/UpdateAccountCalloutsRequest.md +22 -0
  65. data/docs/UpdateAccountCalloutsRequestUpdatesInner.md +20 -0
  66. data/docs/UpdateAccountCalloutsRequestUpdatesInnerCalloutAsset.md +18 -0
  67. data/docs/UpdateAccountSitelinksRequest.md +22 -0
  68. data/docs/UpdateAccountSitelinksRequestUpdatesInner.md +22 -0
  69. data/docs/UpdateAccountSitelinksRequestUpdatesInnerSitelinkAsset.md +24 -0
  70. data/docs/UpdateAccountStructuredSnippetsRequest.md +22 -0
  71. data/docs/UpdateAccountStructuredSnippetsRequestUpdatesInner.md +20 -0
  72. data/docs/UpdateAdRequest.md +6 -0
  73. data/docs/UpdateCampaignAssets200Response.md +18 -0
  74. data/docs/UpdateCampaignAssetsRequest.md +22 -0
  75. data/lib/zernio-sdk/api/ad_accounts_api.rb +1511 -363
  76. data/lib/zernio-sdk/api/ad_campaigns_api.rb +589 -13
  77. data/lib/zernio-sdk/models/ad_creative.rb +112 -1
  78. data/lib/zernio-sdk/models/{create_standalone_ad_request_tracking.rb → ad_tracking.rb} +5 -5
  79. data/lib/zernio-sdk/models/add_account_callouts_request.rb +34 -3
  80. data/lib/zernio-sdk/models/add_account_sitelinks201_response.rb +158 -0
  81. data/lib/zernio-sdk/models/add_account_sitelinks201_response_sitelinks_inner.rb +267 -0
  82. data/lib/zernio-sdk/models/add_account_sitelinks_request.rb +253 -0
  83. data/lib/zernio-sdk/models/add_account_structured_snippets201_response.rb +158 -0
  84. data/lib/zernio-sdk/models/add_account_structured_snippets201_response_structured_snippets_inner.rb +229 -0
  85. data/lib/zernio-sdk/models/add_account_structured_snippets_request.rb +253 -0
  86. data/lib/zernio-sdk/models/attach_ad_group_assets201_response.rb +180 -0
  87. data/lib/zernio-sdk/models/attach_campaign_assets_request.rb +37 -5
  88. data/lib/zernio-sdk/models/create_ad_campaign200_response.rb +231 -0
  89. data/lib/zernio-sdk/models/create_ad_campaign_request.rb +52 -1
  90. data/lib/zernio-sdk/models/create_call_ad_request.rb +10 -1
  91. data/lib/zernio-sdk/models/create_messaging_ad_request.rb +10 -1
  92. data/lib/zernio-sdk/models/create_standalone_ad_request.rb +102 -8
  93. data/lib/zernio-sdk/models/create_standalone_ad_request_additional_descriptions_inner.rb +104 -0
  94. data/lib/zernio-sdk/models/create_standalone_ad_request_additional_headlines_inner.rb +104 -0
  95. data/lib/zernio-sdk/models/ctwa_ad_request_body.rb +10 -1
  96. data/lib/zernio-sdk/models/get_ad200_response.rb +25 -4
  97. data/lib/zernio-sdk/models/get_ad_comments200_response_meta.rb +36 -46
  98. data/lib/zernio-sdk/models/get_ios_fourteen_campaign_limits200_response.rb +164 -0
  99. data/lib/zernio-sdk/models/get_ios_fourteen_campaign_limits200_response_limits.rb +172 -0
  100. data/lib/zernio-sdk/models/google_asset_update.rb +234 -0
  101. data/lib/zernio-sdk/models/google_rsa_description.rb +226 -0
  102. data/lib/zernio-sdk/models/google_rsa_headline.rb +226 -0
  103. data/lib/zernio-sdk/models/{attach_campaign_assets_request_sitelinks_inner.rb → google_sitelink.rb} +3 -3
  104. data/lib/zernio-sdk/models/{attach_campaign_assets_request_structured_snippets_inner.rb → google_structured_snippet.rb} +3 -3
  105. data/lib/zernio-sdk/models/hide_ad_comment200_response.rb +225 -0
  106. data/lib/zernio-sdk/models/hide_ad_comment_request.rb +165 -0
  107. data/lib/zernio-sdk/models/list_account_callouts200_response.rb +2 -2
  108. data/lib/zernio-sdk/models/list_account_callouts200_response_callouts_inner.rb +13 -14
  109. data/lib/zernio-sdk/models/list_account_sitelinks200_response.rb +179 -0
  110. data/lib/zernio-sdk/models/list_account_sitelinks200_response_sitelinks_inner.rb +210 -0
  111. data/lib/zernio-sdk/models/list_account_structured_snippets200_response.rb +179 -0
  112. data/lib/zernio-sdk/models/list_account_structured_snippets200_response_structured_snippets_inner.rb +194 -0
  113. data/lib/zernio-sdk/models/list_ad_group_assets200_response.rb +201 -0
  114. data/lib/zernio-sdk/models/list_ad_group_assets200_response_callouts_inner.rb +165 -0
  115. data/lib/zernio-sdk/models/list_ad_group_assets200_response_sitelinks_inner.rb +192 -0
  116. data/lib/zernio-sdk/models/list_ad_group_assets200_response_structured_snippets_inner.rb +176 -0
  117. data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response.rb +220 -0
  118. data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response_accounts_inner.rb +287 -0
  119. data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response_pages_inner.rb +210 -0
  120. data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response_resolved.rb +211 -0
  121. data/lib/zernio-sdk/models/list_advertisable_applications200_response.rb +166 -0
  122. data/lib/zernio-sdk/models/list_advertisable_applications200_response_applications_inner.rb +250 -0
  123. data/lib/zernio-sdk/models/list_campaign_assets200_response.rb +201 -0
  124. data/lib/zernio-sdk/models/list_campaign_assets200_response_callouts_inner.rb +165 -0
  125. data/lib/zernio-sdk/models/list_campaign_assets200_response_sitelinks_inner.rb +192 -0
  126. data/lib/zernio-sdk/models/list_campaign_assets200_response_structured_snippets_inner.rb +176 -0
  127. data/lib/zernio-sdk/models/meta_instagram_identity_ref.rb +202 -0
  128. data/lib/zernio-sdk/models/remove_account_callout_request.rb +45 -3
  129. data/lib/zernio-sdk/models/remove_ad_group_assets_request.rb +281 -0
  130. data/lib/zernio-sdk/models/remove_campaign_assets200_response.rb +147 -0
  131. data/lib/zernio-sdk/models/remove_campaign_assets_request.rb +281 -0
  132. data/lib/zernio-sdk/models/reply_to_ad_comment200_response.rb +215 -0
  133. data/lib/zernio-sdk/models/reply_to_ad_comment_request.rb +174 -0
  134. data/lib/zernio-sdk/models/targeting_spec.rb +63 -1
  135. data/lib/zernio-sdk/models/update_account_callouts200_response.rb +156 -0
  136. data/lib/zernio-sdk/models/update_account_callouts_request.rb +253 -0
  137. data/lib/zernio-sdk/models/update_account_callouts_request_updates_inner.rb +186 -0
  138. data/lib/zernio-sdk/models/update_account_callouts_request_updates_inner_callout_asset.rb +182 -0
  139. data/lib/zernio-sdk/models/update_account_sitelinks_request.rb +253 -0
  140. data/lib/zernio-sdk/models/update_account_sitelinks_request_updates_inner.rb +216 -0
  141. data/lib/zernio-sdk/models/update_account_sitelinks_request_updates_inner_sitelink_asset.rb +241 -0
  142. data/lib/zernio-sdk/models/update_account_structured_snippets_request.rb +253 -0
  143. data/lib/zernio-sdk/models/update_account_structured_snippets_request_updates_inner.rb +186 -0
  144. data/lib/zernio-sdk/models/update_ad_request.rb +112 -1
  145. data/lib/zernio-sdk/models/update_campaign_assets200_response.rb +147 -0
  146. data/lib/zernio-sdk/models/update_campaign_assets_request.rb +253 -0
  147. data/lib/zernio-sdk/version.rb +1 -1
  148. data/lib/zernio-sdk.rb +55 -4
  149. data/openapi.yaml +2898 -733
  150. data/spec/api/ad_accounts_api_spec.rb +209 -10
  151. data/spec/api/ad_campaigns_api_spec.rb +99 -6
  152. data/spec/models/ad_creative_spec.rb +18 -0
  153. data/spec/models/{create_standalone_ad_request_tracking_spec.rb → ad_tracking_spec.rb} +6 -6
  154. data/spec/models/add_account_sitelinks201_response_sitelinks_inner_spec.rb +60 -0
  155. data/spec/models/add_account_sitelinks201_response_spec.rb +42 -0
  156. data/spec/models/add_account_sitelinks_request_spec.rb +48 -0
  157. data/spec/models/add_account_structured_snippets201_response_spec.rb +42 -0
  158. data/spec/models/add_account_structured_snippets201_response_structured_snippets_inner_spec.rb +52 -0
  159. data/spec/models/add_account_structured_snippets_request_spec.rb +48 -0
  160. data/spec/models/attach_ad_group_assets201_response_spec.rb +54 -0
  161. data/spec/models/create_ad_campaign200_response_spec.rb +68 -0
  162. data/spec/models/create_ad_campaign_request_spec.rb +28 -0
  163. data/spec/models/create_call_ad_request_spec.rb +6 -0
  164. data/spec/models/create_messaging_ad_request_spec.rb +6 -0
  165. data/spec/models/create_standalone_ad_request_additional_descriptions_inner_spec.rb +32 -0
  166. data/spec/models/create_standalone_ad_request_additional_headlines_inner_spec.rb +32 -0
  167. data/spec/models/create_standalone_ad_request_spec.rb +28 -0
  168. data/spec/models/ctwa_ad_request_body_spec.rb +6 -0
  169. data/spec/models/get_ad200_response_spec.rb +12 -0
  170. data/spec/models/get_ad_comments200_response_meta_spec.rb +19 -1
  171. data/spec/models/get_ios_fourteen_campaign_limits200_response_limits_spec.rb +48 -0
  172. data/spec/models/get_ios_fourteen_campaign_limits200_response_spec.rb +36 -0
  173. data/spec/models/google_asset_update_spec.rb +60 -0
  174. data/spec/models/google_rsa_description_spec.rb +46 -0
  175. data/spec/models/google_rsa_headline_spec.rb +46 -0
  176. data/spec/models/{attach_campaign_assets_request_sitelinks_inner_spec.rb → google_sitelink_spec.rb} +6 -6
  177. data/spec/models/{attach_campaign_assets_request_structured_snippets_inner_spec.rb → google_structured_snippet_spec.rb} +6 -6
  178. data/spec/models/hide_ad_comment200_response_spec.rb +52 -0
  179. data/spec/models/hide_ad_comment_request_spec.rb +36 -0
  180. data/spec/models/list_account_callouts200_response_callouts_inner_spec.rb +2 -2
  181. data/spec/models/{create_standalone_ad_request_promoted_object_spec.rb → list_account_sitelinks200_response_sitelinks_inner_spec.rb} +14 -32
  182. data/spec/models/list_account_sitelinks200_response_spec.rb +54 -0
  183. data/spec/models/list_account_structured_snippets200_response_spec.rb +54 -0
  184. data/spec/models/list_account_structured_snippets200_response_structured_snippets_inner_spec.rb +66 -0
  185. data/spec/models/list_ad_group_assets200_response_callouts_inner_spec.rb +48 -0
  186. data/spec/models/list_ad_group_assets200_response_sitelinks_inner_spec.rb +66 -0
  187. data/spec/models/list_ad_group_assets200_response_spec.rb +66 -0
  188. data/spec/models/list_ad_group_assets200_response_structured_snippets_inner_spec.rb +54 -0
  189. data/spec/models/list_ads_instagram_accounts200_response_accounts_inner_spec.rb +64 -0
  190. data/spec/models/list_ads_instagram_accounts200_response_pages_inner_spec.rb +54 -0
  191. data/spec/models/list_ads_instagram_accounts200_response_resolved_spec.rb +52 -0
  192. data/spec/models/list_ads_instagram_accounts200_response_spec.rb +48 -0
  193. data/spec/models/list_advertisable_applications200_response_applications_inner_spec.rb +54 -0
  194. data/spec/models/list_advertisable_applications200_response_spec.rb +36 -0
  195. data/spec/models/list_campaign_assets200_response_callouts_inner_spec.rb +48 -0
  196. data/spec/models/list_campaign_assets200_response_sitelinks_inner_spec.rb +66 -0
  197. data/spec/models/list_campaign_assets200_response_spec.rb +66 -0
  198. data/spec/models/list_campaign_assets200_response_structured_snippets_inner_spec.rb +54 -0
  199. data/spec/models/meta_instagram_identity_ref_spec.rb +48 -0
  200. data/spec/models/remove_ad_group_assets_request_spec.rb +54 -0
  201. data/spec/models/remove_campaign_assets200_response_spec.rb +36 -0
  202. data/spec/models/remove_campaign_assets_request_spec.rb +54 -0
  203. data/spec/models/reply_to_ad_comment200_response_spec.rb +46 -0
  204. data/spec/models/reply_to_ad_comment_request_spec.rb +36 -0
  205. data/spec/models/targeting_spec_spec.rb +12 -0
  206. data/spec/models/update_account_callouts200_response_spec.rb +42 -0
  207. data/spec/models/update_account_callouts_request_spec.rb +48 -0
  208. data/spec/models/update_account_callouts_request_updates_inner_callout_asset_spec.rb +36 -0
  209. data/spec/models/update_account_callouts_request_updates_inner_spec.rb +42 -0
  210. data/spec/models/update_account_sitelinks_request_spec.rb +48 -0
  211. data/spec/models/update_account_sitelinks_request_updates_inner_sitelink_asset_spec.rb +54 -0
  212. data/spec/models/update_account_sitelinks_request_updates_inner_spec.rb +48 -0
  213. data/spec/models/update_account_structured_snippets_request_spec.rb +48 -0
  214. data/spec/models/update_account_structured_snippets_request_updates_inner_spec.rb +42 -0
  215. data/spec/models/update_ad_request_spec.rb +18 -0
  216. data/spec/models/update_campaign_assets200_response_spec.rb +36 -0
  217. data/spec/models/update_campaign_assets_request_spec.rb +48 -0
  218. data/zernio-sdk-0.0.901.gem +0 -0
  219. metadata +222 -18
  220. data/docs/CreateStandaloneAdRequestPromotedObject.md +0 -38
  221. data/docs/CreateStandaloneAdRequestTracking.md +0 -20
  222. data/lib/zernio-sdk/models/create_standalone_ad_request_promoted_object.rb +0 -249
  223. data/zernio-sdk-0.0.899.gem +0 -0
@@ -5,7 +5,8 @@ All URIs are relative to *https://zernio.com/api*
5
5
  | Method | HTTP request | Description |
6
6
  | ------ | ------------ | ----------- |
7
7
  | [**add_ad_keywords**](AdCampaignsApi.md#add_ad_keywords) | **POST** /v1/ads/keywords | Add Search keywords to an ad group |
8
- | [**attach_campaign_assets**](AdCampaignsApi.md#attach_campaign_assets) | **POST** /v1/ads/campaigns/{campaignId}/assets | Attach extension assets to a Google Search campaign |
8
+ | [**attach_ad_group_assets**](AdCampaignsApi.md#attach_ad_group_assets) | **POST** /v1/ads/ad-sets/{adSetId}/assets | Attach ad-group assets |
9
+ | [**attach_campaign_assets**](AdCampaignsApi.md#attach_campaign_assets) | **POST** /v1/ads/campaigns/{campaignId}/assets | Attach campaign assets |
9
10
  | [**boost_post**](AdCampaignsApi.md#boost_post) | **POST** /v1/ads/boost | Boost post as ad |
10
11
  | [**bulk_update_ad_campaign_status**](AdCampaignsApi.md#bulk_update_ad_campaign_status) | **POST** /v1/ads/campaigns/bulk-status | Pause or resume many campaigns |
11
12
  | [**create_ad_campaign**](AdCampaignsApi.md#create_ad_campaign) | **POST** /v1/ads/campaigns | Create a standalone campaign |
@@ -25,23 +26,29 @@ All URIs are relative to *https://zernio.com/api*
25
26
  | [**get_campaign_bidding**](AdCampaignsApi.md#get_campaign_bidding) | **GET** /v1/ads/campaigns/{campaignId}/bidding | Read a campaign's current bidding |
26
27
  | [**get_campaign_targeting**](AdCampaignsApi.md#get_campaign_targeting) | **GET** /v1/ads/campaigns/{campaignId}/targeting | Read a Google campaign's device, location, and language targeting |
27
28
  | [**list_ad_campaigns**](AdCampaignsApi.md#list_ad_campaigns) | **GET** /v1/ads/campaigns | List campaigns |
29
+ | [**list_ad_group_assets**](AdCampaignsApi.md#list_ad_group_assets) | **GET** /v1/ads/ad-sets/{adSetId}/assets | List ad-group assets |
28
30
  | [**list_ad_keywords**](AdCampaignsApi.md#list_ad_keywords) | **GET** /v1/ads/keywords | List Search keywords |
29
31
  | [**list_ad_sets**](AdCampaignsApi.md#list_ad_sets) | **GET** /v1/ads/ad-sets | List ad sets |
30
32
  | [**list_ads**](AdCampaignsApi.md#list_ads) | **GET** /v1/ads | List ads |
31
33
  | [**list_bid_strategies**](AdCampaignsApi.md#list_bid_strategies) | **GET** /v1/ads/bid-strategies | List Google Ads portfolio bid strategies |
34
+ | [**list_campaign_assets**](AdCampaignsApi.md#list_campaign_assets) | **GET** /v1/ads/campaigns/{campaignId}/assets | List campaign assets |
32
35
  | [**list_campaign_negative_keyword_lists**](AdCampaignsApi.md#list_campaign_negative_keyword_lists) | **GET** /v1/ads/campaigns/{campaignId}/negative-keyword-lists | List campaign negative lists |
33
36
  | [**list_campaign_negative_keywords**](AdCampaignsApi.md#list_campaign_negative_keywords) | **GET** /v1/ads/campaigns/{campaignId}/negative-keywords | List campaign-level negative keywords |
37
+ | [**remove_ad_group_assets**](AdCampaignsApi.md#remove_ad_group_assets) | **DELETE** /v1/ads/ad-sets/{adSetId}/assets | Remove ad-group assets |
34
38
  | [**remove_ad_keyword**](AdCampaignsApi.md#remove_ad_keyword) | **DELETE** /v1/ads/keywords/{keywordId} | Remove a Search keyword |
39
+ | [**remove_campaign_assets**](AdCampaignsApi.md#remove_campaign_assets) | **DELETE** /v1/ads/campaigns/{campaignId}/assets | Remove campaign assets |
35
40
  | [**replace_campaign_negative_keyword_lists**](AdCampaignsApi.md#replace_campaign_negative_keyword_lists) | **PUT** /v1/ads/campaigns/{campaignId}/negative-keyword-lists | Replace campaign negative lists |
36
41
  | [**replace_campaign_negative_keywords**](AdCampaignsApi.md#replace_campaign_negative_keywords) | **PUT** /v1/ads/campaigns/{campaignId}/negative-keywords | Replace campaign-level negative keywords |
37
42
  | [**update_ad**](AdCampaignsApi.md#update_ad) | **PUT** /v1/ads/{adId} | Update ad |
38
43
  | [**update_ad_campaign**](AdCampaignsApi.md#update_ad_campaign) | **PUT** /v1/ads/campaigns/{campaignId} | Update a campaign |
39
44
  | [**update_ad_campaign_status**](AdCampaignsApi.md#update_ad_campaign_status) | **PUT** /v1/ads/campaigns/{campaignId}/status | Pause or resume a campaign |
45
+ | [**update_ad_group_assets**](AdCampaignsApi.md#update_ad_group_assets) | **PUT** /v1/ads/ad-sets/{adSetId}/assets | Update ad-group assets |
40
46
  | [**update_ad_keyword**](AdCampaignsApi.md#update_ad_keyword) | **PATCH** /v1/ads/keywords/{keywordId} | Pause or enable a Search keyword |
41
47
  | [**update_ad_set**](AdCampaignsApi.md#update_ad_set) | **PUT** /v1/ads/ad-sets/{adSetId} | Update an ad set |
42
48
  | [**update_ad_set_status**](AdCampaignsApi.md#update_ad_set_status) | **PUT** /v1/ads/ad-sets/{adSetId}/status | Pause or resume a single ad set |
43
49
  | [**update_ad_status**](AdCampaignsApi.md#update_ad_status) | **PUT** /v1/ads/{adId}/status | Pause or resume a single ad |
44
50
  | [**update_bid_strategy**](AdCampaignsApi.md#update_bid_strategy) | **PATCH** /v1/ads/bid-strategies/{strategyId} | Update a Google Ads portfolio bid strategy |
51
+ | [**update_campaign_assets**](AdCampaignsApi.md#update_campaign_assets) | **PUT** /v1/ads/campaigns/{campaignId}/assets | Update campaign assets |
45
52
  | [**update_campaign_targeting**](AdCampaignsApi.md#update_campaign_targeting) | **PUT** /v1/ads/campaigns/{campaignId}/targeting | Edit a Google campaign's device, location, or language targeting |
46
53
 
47
54
 
@@ -114,13 +121,84 @@ end
114
121
  - **Accept**: application/json
115
122
 
116
123
 
124
+ ## attach_ad_group_assets
125
+
126
+ > <AttachAdGroupAssets201Response> attach_ad_group_assets(ad_set_id, attach_campaign_assets_request)
127
+
128
+ Attach ad-group assets
129
+
130
+ Creates and attaches sitelinks, callouts and structured snippets in one Google mutation.
131
+
132
+ ### Examples
133
+
134
+ ```ruby
135
+ require 'time'
136
+ require 'zernio-sdk'
137
+ # setup authorization
138
+ Zernio.configure do |config|
139
+ # Configure Bearer authorization (JWT): bearerAuth
140
+ config.access_token = 'YOUR_BEARER_TOKEN'
141
+ end
142
+
143
+ api_instance = Zernio::AdCampaignsApi.new
144
+ ad_set_id = 'ad_set_id_example' # String | Numeric Google platform id.
145
+ attach_campaign_assets_request = Zernio::AttachCampaignAssetsRequest.new({account_id: 'account_id_example'}) # AttachCampaignAssetsRequest |
146
+
147
+ begin
148
+ # Attach ad-group assets
149
+ result = api_instance.attach_ad_group_assets(ad_set_id, attach_campaign_assets_request)
150
+ p result
151
+ rescue Zernio::ApiError => e
152
+ puts "Error when calling AdCampaignsApi->attach_ad_group_assets: #{e}"
153
+ end
154
+ ```
155
+
156
+ #### Using the attach_ad_group_assets_with_http_info variant
157
+
158
+ This returns an Array which contains the response data, status code and headers.
159
+
160
+ > <Array(<AttachAdGroupAssets201Response>, Integer, Hash)> attach_ad_group_assets_with_http_info(ad_set_id, attach_campaign_assets_request)
161
+
162
+ ```ruby
163
+ begin
164
+ # Attach ad-group assets
165
+ data, status_code, headers = api_instance.attach_ad_group_assets_with_http_info(ad_set_id, attach_campaign_assets_request)
166
+ p status_code # => 2xx
167
+ p headers # => { ... }
168
+ p data # => <AttachAdGroupAssets201Response>
169
+ rescue Zernio::ApiError => e
170
+ puts "Error when calling AdCampaignsApi->attach_ad_group_assets_with_http_info: #{e}"
171
+ end
172
+ ```
173
+
174
+ ### Parameters
175
+
176
+ | Name | Type | Description | Notes |
177
+ | ---- | ---- | ----------- | ----- |
178
+ | **ad_set_id** | **String** | Numeric Google platform id. | |
179
+ | **attach_campaign_assets_request** | [**AttachCampaignAssetsRequest**](AttachCampaignAssetsRequest.md) | | |
180
+
181
+ ### Return type
182
+
183
+ [**AttachAdGroupAssets201Response**](AttachAdGroupAssets201Response.md)
184
+
185
+ ### Authorization
186
+
187
+ [bearerAuth](../README.md#bearerAuth)
188
+
189
+ ### HTTP request headers
190
+
191
+ - **Content-Type**: application/json
192
+ - **Accept**: application/json
193
+
194
+
117
195
  ## attach_campaign_assets
118
196
 
119
197
  > <AttachCampaignAssets201Response> attach_campaign_assets(campaign_id, attach_campaign_assets_request)
120
198
 
121
- Attach extension assets to a Google Search campaign
199
+ Attach campaign assets
122
200
 
123
- Attach sitelinks, callouts and/or structured snippets to an already-existing Google Search campaign. These are the same builders POST /v1/ads/create uses, but without rebuilding the hierarchy. At least one of sitelinks, callouts or structuredSnippets is required. Google-only. Other platforms have no equivalent extension surface and return 501. Approval status is Google-async; poll `asset.policy_summary` after review. Assets stay in the account library even if the campaign is later deleted.
201
+ Creates and attaches sitelinks, callouts and structured snippets in one Google mutation.
124
202
 
125
203
  ### Examples
126
204
 
@@ -134,11 +212,11 @@ Zernio.configure do |config|
134
212
  end
135
213
 
136
214
  api_instance = Zernio::AdCampaignsApi.new
137
- campaign_id = 'campaign_id_example' # String | Numeric Google platform campaign id.
215
+ campaign_id = 'campaign_id_example' # String | Numeric Google platform id.
138
216
  attach_campaign_assets_request = Zernio::AttachCampaignAssetsRequest.new({account_id: 'account_id_example'}) # AttachCampaignAssetsRequest |
139
217
 
140
218
  begin
141
- # Attach extension assets to a Google Search campaign
219
+ # Attach campaign assets
142
220
  result = api_instance.attach_campaign_assets(campaign_id, attach_campaign_assets_request)
143
221
  p result
144
222
  rescue Zernio::ApiError => e
@@ -154,7 +232,7 @@ This returns an Array which contains the response data, status code and headers.
154
232
 
155
233
  ```ruby
156
234
  begin
157
- # Attach extension assets to a Google Search campaign
235
+ # Attach campaign assets
158
236
  data, status_code, headers = api_instance.attach_campaign_assets_with_http_info(campaign_id, attach_campaign_assets_request)
159
237
  p status_code # => 2xx
160
238
  p headers # => { ... }
@@ -168,7 +246,7 @@ end
168
246
 
169
247
  | Name | Type | Description | Notes |
170
248
  | ---- | ---- | ----------- | ----- |
171
- | **campaign_id** | **String** | Numeric Google platform campaign id. | |
249
+ | **campaign_id** | **String** | Numeric Google platform id. | |
172
250
  | **attach_campaign_assets_request** | [**AttachCampaignAssetsRequest**](AttachCampaignAssetsRequest.md) | | |
173
251
 
174
252
  ### Return type
@@ -329,7 +407,7 @@ end
329
407
 
330
408
  ## create_ad_campaign
331
409
 
332
- > <CreateAdCampaign201Response> create_ad_campaign(create_ad_campaign_request, opts)
410
+ > <CreateAdCampaign200Response> create_ad_campaign(create_ad_campaign_request, opts)
333
411
 
334
412
  Create a standalone campaign
335
413
 
@@ -365,7 +443,7 @@ end
365
443
 
366
444
  This returns an Array which contains the response data, status code and headers.
367
445
 
368
- > <Array(<CreateAdCampaign201Response>, Integer, Hash)> create_ad_campaign_with_http_info(create_ad_campaign_request, opts)
446
+ > <Array(<CreateAdCampaign200Response>, Integer, Hash)> create_ad_campaign_with_http_info(create_ad_campaign_request, opts)
369
447
 
370
448
  ```ruby
371
449
  begin
@@ -373,7 +451,7 @@ begin
373
451
  data, status_code, headers = api_instance.create_ad_campaign_with_http_info(create_ad_campaign_request, opts)
374
452
  p status_code # => 2xx
375
453
  p headers # => { ... }
376
- p data # => <CreateAdCampaign201Response>
454
+ p data # => <CreateAdCampaign200Response>
377
455
  rescue Zernio::ApiError => e
378
456
  puts "Error when calling AdCampaignsApi->create_ad_campaign_with_http_info: #{e}"
379
457
  end
@@ -388,7 +466,7 @@ end
388
466
 
389
467
  ### Return type
390
468
 
391
- [**CreateAdCampaign201Response**](CreateAdCampaign201Response.md)
469
+ [**CreateAdCampaign200Response**](CreateAdCampaign200Response.md)
392
470
 
393
471
  ### Authorization
394
472
 
@@ -1055,7 +1133,7 @@ end
1055
1133
 
1056
1134
  Get ad details
1057
1135
 
1058
- Returns an ad with its creative, targeting, status, and performance metrics. The `{adId}` path segment accepts any identifier dialect Zernio indexes for the ad: - the Zernio internal `_id` (24-char hex) - Meta's numeric `platformAdId` (the value shipped in `comment.received` webhooks as `comment.ad.id`) - the creative's `effective_object_story_id` (`{pageId}_{postId}` shape, Facebook side) - the creative's `effective_instagram_media_id` (Instagram side) Any of the four resolve to the same ad. Caller doesn't need a translation step. By default, creative.promotion and creative.creativeFeatures contain stored requested settings, which do not confirm platform application. With `refreshPromotion=true`, Meta promotion metadata is read live and exposed as `ad.creative.promotion` with `promotionStatus`. Only `applied` confirms an offer; `not_returned` means the creative read succeeded without promotion metadata, and `unavailable` means it failed.
1136
+ Returns an ad with its creative, targeting, status, and performance metrics. Google Search ads include current creative.headlines, creative.descriptions and creative.finalUrls, preserving pinnedField. Top-level cachedAt and stale report cache freshness. Google mutations invalidate this read. RSA enrichment requires a stored advertisingChannelType of SEARCH. Ads with an unknown or other channel return their stored details without a Google read. If RSA enrichment fails, the stored ad is returned with HTTP 200 and without cache metadata. The `{adId}` path segment accepts any identifier dialect Zernio indexes for the ad: - the Zernio internal `_id` (24-char hex) - Meta's numeric `platformAdId` (the value shipped in `comment.received` webhooks as `comment.ad.id`) - the creative's `effective_object_story_id` (`{pageId}_{postId}` shape, Facebook side) - the creative's `effective_instagram_media_id` (Instagram side) Any of the four resolve to the same ad. Caller doesn't need a translation step. By default, creative.promotion and creative.creativeFeatures contain stored requested settings, which do not confirm platform application. With `refreshPromotion=true`, Meta promotion metadata is read live and exposed as `ad.creative.promotion` with `promotionStatus`. Only `applied` confirms an offer; `not_returned` means the creative read succeeded without promotion metadata, and `unavailable` means it failed.
1059
1137
 
1060
1138
  ### Examples
1061
1139
 
@@ -1626,6 +1704,81 @@ end
1626
1704
  - **Accept**: application/json
1627
1705
 
1628
1706
 
1707
+ ## list_ad_group_assets
1708
+
1709
+ > <ListAdGroupAssets200Response> list_ad_group_assets(ad_set_id, account_id, opts)
1710
+
1711
+ List ad-group assets
1712
+
1713
+ Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
1714
+
1715
+ ### Examples
1716
+
1717
+ ```ruby
1718
+ require 'time'
1719
+ require 'zernio-sdk'
1720
+ # setup authorization
1721
+ Zernio.configure do |config|
1722
+ # Configure Bearer authorization (JWT): bearerAuth
1723
+ config.access_token = 'YOUR_BEARER_TOKEN'
1724
+ end
1725
+
1726
+ api_instance = Zernio::AdCampaignsApi.new
1727
+ ad_set_id = 'ad_set_id_example' # String | Numeric Google platform id.
1728
+ account_id = 'account_id_example' # String |
1729
+ opts = {
1730
+ customer_id: 'customer_id_example' # String |
1731
+ }
1732
+
1733
+ begin
1734
+ # List ad-group assets
1735
+ result = api_instance.list_ad_group_assets(ad_set_id, account_id, opts)
1736
+ p result
1737
+ rescue Zernio::ApiError => e
1738
+ puts "Error when calling AdCampaignsApi->list_ad_group_assets: #{e}"
1739
+ end
1740
+ ```
1741
+
1742
+ #### Using the list_ad_group_assets_with_http_info variant
1743
+
1744
+ This returns an Array which contains the response data, status code and headers.
1745
+
1746
+ > <Array(<ListAdGroupAssets200Response>, Integer, Hash)> list_ad_group_assets_with_http_info(ad_set_id, account_id, opts)
1747
+
1748
+ ```ruby
1749
+ begin
1750
+ # List ad-group assets
1751
+ data, status_code, headers = api_instance.list_ad_group_assets_with_http_info(ad_set_id, account_id, opts)
1752
+ p status_code # => 2xx
1753
+ p headers # => { ... }
1754
+ p data # => <ListAdGroupAssets200Response>
1755
+ rescue Zernio::ApiError => e
1756
+ puts "Error when calling AdCampaignsApi->list_ad_group_assets_with_http_info: #{e}"
1757
+ end
1758
+ ```
1759
+
1760
+ ### Parameters
1761
+
1762
+ | Name | Type | Description | Notes |
1763
+ | ---- | ---- | ----------- | ----- |
1764
+ | **ad_set_id** | **String** | Numeric Google platform id. | |
1765
+ | **account_id** | **String** | | |
1766
+ | **customer_id** | **String** | | [optional] |
1767
+
1768
+ ### Return type
1769
+
1770
+ [**ListAdGroupAssets200Response**](ListAdGroupAssets200Response.md)
1771
+
1772
+ ### Authorization
1773
+
1774
+ [bearerAuth](../README.md#bearerAuth)
1775
+
1776
+ ### HTTP request headers
1777
+
1778
+ - **Content-Type**: Not defined
1779
+ - **Accept**: application/json
1780
+
1781
+
1629
1782
  ## list_ad_keywords
1630
1783
 
1631
1784
  > <ListAdKeywords200Response> list_ad_keywords(opts)
@@ -1970,6 +2123,81 @@ end
1970
2123
  - **Accept**: application/json
1971
2124
 
1972
2125
 
2126
+ ## list_campaign_assets
2127
+
2128
+ > <ListCampaignAssets200Response> list_campaign_assets(campaign_id, account_id, opts)
2129
+
2130
+ List campaign assets
2131
+
2132
+ Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
2133
+
2134
+ ### Examples
2135
+
2136
+ ```ruby
2137
+ require 'time'
2138
+ require 'zernio-sdk'
2139
+ # setup authorization
2140
+ Zernio.configure do |config|
2141
+ # Configure Bearer authorization (JWT): bearerAuth
2142
+ config.access_token = 'YOUR_BEARER_TOKEN'
2143
+ end
2144
+
2145
+ api_instance = Zernio::AdCampaignsApi.new
2146
+ campaign_id = 'campaign_id_example' # String | Numeric Google platform id.
2147
+ account_id = 'account_id_example' # String |
2148
+ opts = {
2149
+ customer_id: 'customer_id_example' # String |
2150
+ }
2151
+
2152
+ begin
2153
+ # List campaign assets
2154
+ result = api_instance.list_campaign_assets(campaign_id, account_id, opts)
2155
+ p result
2156
+ rescue Zernio::ApiError => e
2157
+ puts "Error when calling AdCampaignsApi->list_campaign_assets: #{e}"
2158
+ end
2159
+ ```
2160
+
2161
+ #### Using the list_campaign_assets_with_http_info variant
2162
+
2163
+ This returns an Array which contains the response data, status code and headers.
2164
+
2165
+ > <Array(<ListCampaignAssets200Response>, Integer, Hash)> list_campaign_assets_with_http_info(campaign_id, account_id, opts)
2166
+
2167
+ ```ruby
2168
+ begin
2169
+ # List campaign assets
2170
+ data, status_code, headers = api_instance.list_campaign_assets_with_http_info(campaign_id, account_id, opts)
2171
+ p status_code # => 2xx
2172
+ p headers # => { ... }
2173
+ p data # => <ListCampaignAssets200Response>
2174
+ rescue Zernio::ApiError => e
2175
+ puts "Error when calling AdCampaignsApi->list_campaign_assets_with_http_info: #{e}"
2176
+ end
2177
+ ```
2178
+
2179
+ ### Parameters
2180
+
2181
+ | Name | Type | Description | Notes |
2182
+ | ---- | ---- | ----------- | ----- |
2183
+ | **campaign_id** | **String** | Numeric Google platform id. | |
2184
+ | **account_id** | **String** | | |
2185
+ | **customer_id** | **String** | | [optional] |
2186
+
2187
+ ### Return type
2188
+
2189
+ [**ListCampaignAssets200Response**](ListCampaignAssets200Response.md)
2190
+
2191
+ ### Authorization
2192
+
2193
+ [bearerAuth](../README.md#bearerAuth)
2194
+
2195
+ ### HTTP request headers
2196
+
2197
+ - **Content-Type**: Not defined
2198
+ - **Accept**: application/json
2199
+
2200
+
1973
2201
  ## list_campaign_negative_keyword_lists
1974
2202
 
1975
2203
  > <ListAdNegativeKeywordLists200Response> list_campaign_negative_keyword_lists(campaign_id, opts)
@@ -2116,6 +2344,77 @@ end
2116
2344
  - **Accept**: application/json
2117
2345
 
2118
2346
 
2347
+ ## remove_ad_group_assets
2348
+
2349
+ > <RemoveCampaignAssets200Response> remove_ad_group_assets(ad_set_id, remove_ad_group_assets_request)
2350
+
2351
+ Remove ad-group assets
2352
+
2353
+ Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility.
2354
+
2355
+ ### Examples
2356
+
2357
+ ```ruby
2358
+ require 'time'
2359
+ require 'zernio-sdk'
2360
+ # setup authorization
2361
+ Zernio.configure do |config|
2362
+ # Configure Bearer authorization (JWT): bearerAuth
2363
+ config.access_token = 'YOUR_BEARER_TOKEN'
2364
+ end
2365
+
2366
+ api_instance = Zernio::AdCampaignsApi.new
2367
+ ad_set_id = 'ad_set_id_example' # String | Numeric Google platform id.
2368
+ remove_ad_group_assets_request = Zernio::RemoveAdGroupAssetsRequest.new({account_id: 'account_id_example', asset_resource_names: ['asset_resource_names_example'], ad_group_asset_resource_names: ['ad_group_asset_resource_names_example']}) # RemoveAdGroupAssetsRequest |
2369
+
2370
+ begin
2371
+ # Remove ad-group assets
2372
+ result = api_instance.remove_ad_group_assets(ad_set_id, remove_ad_group_assets_request)
2373
+ p result
2374
+ rescue Zernio::ApiError => e
2375
+ puts "Error when calling AdCampaignsApi->remove_ad_group_assets: #{e}"
2376
+ end
2377
+ ```
2378
+
2379
+ #### Using the remove_ad_group_assets_with_http_info variant
2380
+
2381
+ This returns an Array which contains the response data, status code and headers.
2382
+
2383
+ > <Array(<RemoveCampaignAssets200Response>, Integer, Hash)> remove_ad_group_assets_with_http_info(ad_set_id, remove_ad_group_assets_request)
2384
+
2385
+ ```ruby
2386
+ begin
2387
+ # Remove ad-group assets
2388
+ data, status_code, headers = api_instance.remove_ad_group_assets_with_http_info(ad_set_id, remove_ad_group_assets_request)
2389
+ p status_code # => 2xx
2390
+ p headers # => { ... }
2391
+ p data # => <RemoveCampaignAssets200Response>
2392
+ rescue Zernio::ApiError => e
2393
+ puts "Error when calling AdCampaignsApi->remove_ad_group_assets_with_http_info: #{e}"
2394
+ end
2395
+ ```
2396
+
2397
+ ### Parameters
2398
+
2399
+ | Name | Type | Description | Notes |
2400
+ | ---- | ---- | ----------- | ----- |
2401
+ | **ad_set_id** | **String** | Numeric Google platform id. | |
2402
+ | **remove_ad_group_assets_request** | [**RemoveAdGroupAssetsRequest**](RemoveAdGroupAssetsRequest.md) | | |
2403
+
2404
+ ### Return type
2405
+
2406
+ [**RemoveCampaignAssets200Response**](RemoveCampaignAssets200Response.md)
2407
+
2408
+ ### Authorization
2409
+
2410
+ [bearerAuth](../README.md#bearerAuth)
2411
+
2412
+ ### HTTP request headers
2413
+
2414
+ - **Content-Type**: application/json
2415
+ - **Accept**: application/json
2416
+
2417
+
2119
2418
  ## remove_ad_keyword
2120
2419
 
2121
2420
  > <RemoveAdKeyword200Response> remove_ad_keyword(keyword_id)
@@ -2185,6 +2484,77 @@ end
2185
2484
  - **Accept**: application/json
2186
2485
 
2187
2486
 
2487
+ ## remove_campaign_assets
2488
+
2489
+ > <RemoveCampaignAssets200Response> remove_campaign_assets(campaign_id, remove_campaign_assets_request)
2490
+
2491
+ Remove campaign assets
2492
+
2493
+ Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility.
2494
+
2495
+ ### Examples
2496
+
2497
+ ```ruby
2498
+ require 'time'
2499
+ require 'zernio-sdk'
2500
+ # setup authorization
2501
+ Zernio.configure do |config|
2502
+ # Configure Bearer authorization (JWT): bearerAuth
2503
+ config.access_token = 'YOUR_BEARER_TOKEN'
2504
+ end
2505
+
2506
+ api_instance = Zernio::AdCampaignsApi.new
2507
+ campaign_id = 'campaign_id_example' # String | Numeric Google platform id.
2508
+ remove_campaign_assets_request = Zernio::RemoveCampaignAssetsRequest.new({account_id: 'account_id_example', asset_resource_names: ['asset_resource_names_example'], campaign_asset_resource_names: ['campaign_asset_resource_names_example']}) # RemoveCampaignAssetsRequest |
2509
+
2510
+ begin
2511
+ # Remove campaign assets
2512
+ result = api_instance.remove_campaign_assets(campaign_id, remove_campaign_assets_request)
2513
+ p result
2514
+ rescue Zernio::ApiError => e
2515
+ puts "Error when calling AdCampaignsApi->remove_campaign_assets: #{e}"
2516
+ end
2517
+ ```
2518
+
2519
+ #### Using the remove_campaign_assets_with_http_info variant
2520
+
2521
+ This returns an Array which contains the response data, status code and headers.
2522
+
2523
+ > <Array(<RemoveCampaignAssets200Response>, Integer, Hash)> remove_campaign_assets_with_http_info(campaign_id, remove_campaign_assets_request)
2524
+
2525
+ ```ruby
2526
+ begin
2527
+ # Remove campaign assets
2528
+ data, status_code, headers = api_instance.remove_campaign_assets_with_http_info(campaign_id, remove_campaign_assets_request)
2529
+ p status_code # => 2xx
2530
+ p headers # => { ... }
2531
+ p data # => <RemoveCampaignAssets200Response>
2532
+ rescue Zernio::ApiError => e
2533
+ puts "Error when calling AdCampaignsApi->remove_campaign_assets_with_http_info: #{e}"
2534
+ end
2535
+ ```
2536
+
2537
+ ### Parameters
2538
+
2539
+ | Name | Type | Description | Notes |
2540
+ | ---- | ---- | ----------- | ----- |
2541
+ | **campaign_id** | **String** | Numeric Google platform id. | |
2542
+ | **remove_campaign_assets_request** | [**RemoveCampaignAssetsRequest**](RemoveCampaignAssetsRequest.md) | | |
2543
+
2544
+ ### Return type
2545
+
2546
+ [**RemoveCampaignAssets200Response**](RemoveCampaignAssets200Response.md)
2547
+
2548
+ ### Authorization
2549
+
2550
+ [bearerAuth](../README.md#bearerAuth)
2551
+
2552
+ ### HTTP request headers
2553
+
2554
+ - **Content-Type**: application/json
2555
+ - **Accept**: application/json
2556
+
2557
+
2188
2558
  ## replace_campaign_negative_keyword_lists
2189
2559
 
2190
2560
  > <ReplaceAdNegativeKeywordListKeywords200Response> replace_campaign_negative_keyword_lists(campaign_id, replace_campaign_negative_keyword_lists_request)
@@ -2333,7 +2703,7 @@ end
2333
2703
 
2334
2704
  Update ad
2335
2705
 
2336
- 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 (countries or regions, excludedLocations (countries), the B2B facets, and audience segments; applied to the LinkedIn Campaign via PARTIAL_UPDATE, and REPLACES the campaign's entire targetingCriteria, not a merge), 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). **Google keyword replacement:** These edits affect the ad's entire ad group, including sibling ads. Positive (`targeting.keywords`) and negative (`targeting.negativeKeywords`) sets are independent: omit a field to leave that set unchanged, or send `[]` to remove every keyword of that kind. Zernio compares each supplied set with Google's live criteria by case-insensitive keyword text and match type. A matching criterion is left untouched, retaining its criterion ID, enabled/paused status, keyword-level bid overrides, labels, and criterion-associated history/statistics. Zernio does not reset its quality score; Google continues to calculate scores and statistics normally. Text comparison does not trim whitespace. A bare string or an object without `matchType` means `broad`, not the existing criterion's match type. For example, resending an existing `{ \"text\": \"plumber\", \"matchType\": \"exact\" }` preserves it; sending `\"plumber\"` instead removes that EXACT criterion and requests a BROAD one. Changing text or match type removes criteria no longer requested and creates any missing criteria. New criteria get new IDs and do not inherit removed criteria's bid overrides, labels, or history. Historical reporting for a removed criterion is not transferred to its replacement. To add keywords without replacing a set, use [POST /v1/ads/keywords](https://docs.zernio.com/ad-campaigns/add-ad-keywords). Use `PATCH /v1/ads/keywords/{keywordId}` to pause/enable one keyword, or `DELETE /v1/ads/keywords/{keywordId}` to remove it.
2706
+ 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. RSA text updates use top-level `headlines`, `descriptions` and `finalUrls`. Each supplied array replaces the full list; omit a field to preserve it. Use 3-15 headlines (1-30 characters) and 2-4 descriptions (1-90 characters). Omit an asset to remove it; omit pinnedField on an included asset to unpin it. Updates do not pad or truncate text. The legacy creative fields remain unsupported for Google. - **LinkedIn**: status, budget, targeting (countries or regions, excludedLocations (countries), the B2B facets, and audience segments; applied to the LinkedIn Campaign via PARTIAL_UPDATE, and REPLACES the campaign's entire targetingCriteria, not a merge), 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). **Google keyword replacement:** These edits affect the ad's entire ad group, including sibling ads. Positive (`targeting.keywords`) and negative (`targeting.negativeKeywords`) sets are independent: omit a field to leave that set unchanged, or send `[]` to remove every keyword of that kind. Zernio compares each supplied set with Google's live criteria by case-insensitive keyword text and match type. A matching criterion is left untouched, retaining its criterion ID, enabled/paused status, keyword-level bid overrides, labels, and criterion-associated history/statistics. Zernio does not reset its quality score; Google continues to calculate scores and statistics normally. Text comparison does not trim whitespace. A bare string or an object without `matchType` means `broad`, not the existing criterion's match type. For example, resending an existing `{ \"text\": \"plumber\", \"matchType\": \"exact\" }` preserves it; sending `\"plumber\"` instead removes that EXACT criterion and requests a BROAD one. Changing text or match type removes criteria no longer requested and creates any missing criteria. New criteria get new IDs and do not inherit removed criteria's bid overrides, labels, or history. Historical reporting for a removed criterion is not transferred to its replacement. To add keywords without replacing a set, use [POST /v1/ads/keywords](https://docs.zernio.com/ad-campaigns/add-ad-keywords). Use `PATCH /v1/ads/keywords/{keywordId}` to pause/enable one keyword, or `DELETE /v1/ads/keywords/{keywordId}` to remove it.
2337
2707
 
2338
2708
  ### Examples
2339
2709
 
@@ -2540,6 +2910,77 @@ end
2540
2910
  - **Accept**: application/json
2541
2911
 
2542
2912
 
2913
+ ## update_ad_group_assets
2914
+
2915
+ > <UpdateCampaignAssets200Response> update_ad_group_assets(ad_set_id, update_campaign_assets_request)
2916
+
2917
+ Update ad-group assets
2918
+
2919
+ Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
2920
+
2921
+ ### Examples
2922
+
2923
+ ```ruby
2924
+ require 'time'
2925
+ require 'zernio-sdk'
2926
+ # setup authorization
2927
+ Zernio.configure do |config|
2928
+ # Configure Bearer authorization (JWT): bearerAuth
2929
+ config.access_token = 'YOUR_BEARER_TOKEN'
2930
+ end
2931
+
2932
+ api_instance = Zernio::AdCampaignsApi.new
2933
+ ad_set_id = 'ad_set_id_example' # String | Numeric Google platform id.
2934
+ update_campaign_assets_request = Zernio::UpdateCampaignAssetsRequest.new({account_id: 'account_id_example', updates: [Zernio::GoogleAssetUpdate.new({asset_resource_name: 'asset_resource_name_example'})]}) # UpdateCampaignAssetsRequest |
2935
+
2936
+ begin
2937
+ # Update ad-group assets
2938
+ result = api_instance.update_ad_group_assets(ad_set_id, update_campaign_assets_request)
2939
+ p result
2940
+ rescue Zernio::ApiError => e
2941
+ puts "Error when calling AdCampaignsApi->update_ad_group_assets: #{e}"
2942
+ end
2943
+ ```
2944
+
2945
+ #### Using the update_ad_group_assets_with_http_info variant
2946
+
2947
+ This returns an Array which contains the response data, status code and headers.
2948
+
2949
+ > <Array(<UpdateCampaignAssets200Response>, Integer, Hash)> update_ad_group_assets_with_http_info(ad_set_id, update_campaign_assets_request)
2950
+
2951
+ ```ruby
2952
+ begin
2953
+ # Update ad-group assets
2954
+ data, status_code, headers = api_instance.update_ad_group_assets_with_http_info(ad_set_id, update_campaign_assets_request)
2955
+ p status_code # => 2xx
2956
+ p headers # => { ... }
2957
+ p data # => <UpdateCampaignAssets200Response>
2958
+ rescue Zernio::ApiError => e
2959
+ puts "Error when calling AdCampaignsApi->update_ad_group_assets_with_http_info: #{e}"
2960
+ end
2961
+ ```
2962
+
2963
+ ### Parameters
2964
+
2965
+ | Name | Type | Description | Notes |
2966
+ | ---- | ---- | ----------- | ----- |
2967
+ | **ad_set_id** | **String** | Numeric Google platform id. | |
2968
+ | **update_campaign_assets_request** | [**UpdateCampaignAssetsRequest**](UpdateCampaignAssetsRequest.md) | | |
2969
+
2970
+ ### Return type
2971
+
2972
+ [**UpdateCampaignAssets200Response**](UpdateCampaignAssets200Response.md)
2973
+
2974
+ ### Authorization
2975
+
2976
+ [bearerAuth](../README.md#bearerAuth)
2977
+
2978
+ ### HTTP request headers
2979
+
2980
+ - **Content-Type**: application/json
2981
+ - **Accept**: application/json
2982
+
2983
+
2543
2984
  ## update_ad_keyword
2544
2985
 
2545
2986
  > <UpdateAdKeyword200Response> update_ad_keyword(keyword_id, update_ad_keyword_request)
@@ -2895,6 +3336,77 @@ end
2895
3336
  - **Accept**: application/json
2896
3337
 
2897
3338
 
3339
+ ## update_campaign_assets
3340
+
3341
+ > <UpdateCampaignAssets200Response> update_campaign_assets(campaign_id, update_campaign_assets_request)
3342
+
3343
+ Update campaign assets
3344
+
3345
+ Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
3346
+
3347
+ ### Examples
3348
+
3349
+ ```ruby
3350
+ require 'time'
3351
+ require 'zernio-sdk'
3352
+ # setup authorization
3353
+ Zernio.configure do |config|
3354
+ # Configure Bearer authorization (JWT): bearerAuth
3355
+ config.access_token = 'YOUR_BEARER_TOKEN'
3356
+ end
3357
+
3358
+ api_instance = Zernio::AdCampaignsApi.new
3359
+ campaign_id = 'campaign_id_example' # String | Numeric Google platform id.
3360
+ update_campaign_assets_request = Zernio::UpdateCampaignAssetsRequest.new({account_id: 'account_id_example', updates: [Zernio::GoogleAssetUpdate.new({asset_resource_name: 'asset_resource_name_example'})]}) # UpdateCampaignAssetsRequest |
3361
+
3362
+ begin
3363
+ # Update campaign assets
3364
+ result = api_instance.update_campaign_assets(campaign_id, update_campaign_assets_request)
3365
+ p result
3366
+ rescue Zernio::ApiError => e
3367
+ puts "Error when calling AdCampaignsApi->update_campaign_assets: #{e}"
3368
+ end
3369
+ ```
3370
+
3371
+ #### Using the update_campaign_assets_with_http_info variant
3372
+
3373
+ This returns an Array which contains the response data, status code and headers.
3374
+
3375
+ > <Array(<UpdateCampaignAssets200Response>, Integer, Hash)> update_campaign_assets_with_http_info(campaign_id, update_campaign_assets_request)
3376
+
3377
+ ```ruby
3378
+ begin
3379
+ # Update campaign assets
3380
+ data, status_code, headers = api_instance.update_campaign_assets_with_http_info(campaign_id, update_campaign_assets_request)
3381
+ p status_code # => 2xx
3382
+ p headers # => { ... }
3383
+ p data # => <UpdateCampaignAssets200Response>
3384
+ rescue Zernio::ApiError => e
3385
+ puts "Error when calling AdCampaignsApi->update_campaign_assets_with_http_info: #{e}"
3386
+ end
3387
+ ```
3388
+
3389
+ ### Parameters
3390
+
3391
+ | Name | Type | Description | Notes |
3392
+ | ---- | ---- | ----------- | ----- |
3393
+ | **campaign_id** | **String** | Numeric Google platform id. | |
3394
+ | **update_campaign_assets_request** | [**UpdateCampaignAssetsRequest**](UpdateCampaignAssetsRequest.md) | | |
3395
+
3396
+ ### Return type
3397
+
3398
+ [**UpdateCampaignAssets200Response**](UpdateCampaignAssets200Response.md)
3399
+
3400
+ ### Authorization
3401
+
3402
+ [bearerAuth](../README.md#bearerAuth)
3403
+
3404
+ ### HTTP request headers
3405
+
3406
+ - **Content-Type**: application/json
3407
+ - **Accept**: application/json
3408
+
3409
+
2898
3410
  ## update_campaign_targeting
2899
3411
 
2900
3412
  > <UpdateCampaignTargeting200Response> update_campaign_targeting(campaign_id, update_campaign_targeting_request)