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
@@ -19,8 +19,8 @@ module Zernio
19
19
  def initialize(api_client = ApiClient.default)
20
20
  @api_client = api_client
21
21
  end
22
- # Add account-level callout extensions
23
- # Creates one asset plus one `customerAsset` link (field type CALLOUT) per callout text, in a single mutate. Google only; every other platform returns 501.
22
+ # Add account callouts
23
+ # Creates assets and customer_asset links for this Google customer. Links apply at account level.
24
24
  # @param add_account_callouts_request [AddAccountCalloutsRequest]
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [AddAccountCallouts201Response]
@@ -29,8 +29,8 @@ module Zernio
29
29
  data
30
30
  end
31
31
 
32
- # Add account-level callout extensions
33
- # Creates one asset plus one `customerAsset` link (field type CALLOUT) per callout text, in a single mutate. Google only; every other platform returns 501.
32
+ # Add account callouts
33
+ # Creates assets and customer_asset links for this Google customer. Links apply at account level.
34
34
  # @param add_account_callouts_request [AddAccountCalloutsRequest]
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(AddAccountCallouts201Response, Integer, Hash)>] AddAccountCallouts201Response data, response status code and response headers
@@ -87,6 +87,142 @@ module Zernio
87
87
  return data, status_code, headers
88
88
  end
89
89
 
90
+ # Add account sitelinks
91
+ # Creates assets and customer_asset links for this Google customer. Links apply at account level.
92
+ # @param add_account_sitelinks_request [AddAccountSitelinksRequest]
93
+ # @param [Hash] opts the optional parameters
94
+ # @return [AddAccountSitelinks201Response]
95
+ def add_account_sitelinks(add_account_sitelinks_request, opts = {})
96
+ data, _status_code, _headers = add_account_sitelinks_with_http_info(add_account_sitelinks_request, opts)
97
+ data
98
+ end
99
+
100
+ # Add account sitelinks
101
+ # Creates assets and customer_asset links for this Google customer. Links apply at account level.
102
+ # @param add_account_sitelinks_request [AddAccountSitelinksRequest]
103
+ # @param [Hash] opts the optional parameters
104
+ # @return [Array<(AddAccountSitelinks201Response, Integer, Hash)>] AddAccountSitelinks201Response data, response status code and response headers
105
+ def add_account_sitelinks_with_http_info(add_account_sitelinks_request, opts = {})
106
+ if @api_client.config.debugging
107
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.add_account_sitelinks ...'
108
+ end
109
+ # verify the required parameter 'add_account_sitelinks_request' is set
110
+ if @api_client.config.client_side_validation && add_account_sitelinks_request.nil?
111
+ fail ArgumentError, "Missing the required parameter 'add_account_sitelinks_request' when calling AdAccountsApi.add_account_sitelinks"
112
+ end
113
+ # resource path
114
+ local_var_path = '/v1/ads/accounts/sitelinks'
115
+
116
+ # query parameters
117
+ query_params = opts[:query_params] || {}
118
+
119
+ # header parameters
120
+ header_params = opts[:header_params] || {}
121
+ # HTTP header 'Accept' (if needed)
122
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
123
+ # HTTP header 'Content-Type'
124
+ content_type = @api_client.select_header_content_type(['application/json'])
125
+ if !content_type.nil?
126
+ header_params['Content-Type'] = content_type
127
+ end
128
+
129
+ # form parameters
130
+ form_params = opts[:form_params] || {}
131
+
132
+ # http body (model)
133
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(add_account_sitelinks_request)
134
+
135
+ # return_type
136
+ return_type = opts[:debug_return_type] || 'AddAccountSitelinks201Response'
137
+
138
+ # auth_names
139
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
140
+
141
+ new_options = opts.merge(
142
+ :operation => :"AdAccountsApi.add_account_sitelinks",
143
+ :header_params => header_params,
144
+ :query_params => query_params,
145
+ :form_params => form_params,
146
+ :body => post_body,
147
+ :auth_names => auth_names,
148
+ :return_type => return_type
149
+ )
150
+
151
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
152
+ if @api_client.config.debugging
153
+ @api_client.config.logger.debug "API called: AdAccountsApi#add_account_sitelinks\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
154
+ end
155
+ return data, status_code, headers
156
+ end
157
+
158
+ # Add account snippets
159
+ # Creates assets and customer_asset links for this Google customer. Links apply at account level.
160
+ # @param add_account_structured_snippets_request [AddAccountStructuredSnippetsRequest]
161
+ # @param [Hash] opts the optional parameters
162
+ # @return [AddAccountStructuredSnippets201Response]
163
+ def add_account_structured_snippets(add_account_structured_snippets_request, opts = {})
164
+ data, _status_code, _headers = add_account_structured_snippets_with_http_info(add_account_structured_snippets_request, opts)
165
+ data
166
+ end
167
+
168
+ # Add account snippets
169
+ # Creates assets and customer_asset links for this Google customer. Links apply at account level.
170
+ # @param add_account_structured_snippets_request [AddAccountStructuredSnippetsRequest]
171
+ # @param [Hash] opts the optional parameters
172
+ # @return [Array<(AddAccountStructuredSnippets201Response, Integer, Hash)>] AddAccountStructuredSnippets201Response data, response status code and response headers
173
+ def add_account_structured_snippets_with_http_info(add_account_structured_snippets_request, opts = {})
174
+ if @api_client.config.debugging
175
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.add_account_structured_snippets ...'
176
+ end
177
+ # verify the required parameter 'add_account_structured_snippets_request' is set
178
+ if @api_client.config.client_side_validation && add_account_structured_snippets_request.nil?
179
+ fail ArgumentError, "Missing the required parameter 'add_account_structured_snippets_request' when calling AdAccountsApi.add_account_structured_snippets"
180
+ end
181
+ # resource path
182
+ local_var_path = '/v1/ads/accounts/structured-snippets'
183
+
184
+ # query parameters
185
+ query_params = opts[:query_params] || {}
186
+
187
+ # header parameters
188
+ header_params = opts[:header_params] || {}
189
+ # HTTP header 'Accept' (if needed)
190
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
191
+ # HTTP header 'Content-Type'
192
+ content_type = @api_client.select_header_content_type(['application/json'])
193
+ if !content_type.nil?
194
+ header_params['Content-Type'] = content_type
195
+ end
196
+
197
+ # form parameters
198
+ form_params = opts[:form_params] || {}
199
+
200
+ # http body (model)
201
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(add_account_structured_snippets_request)
202
+
203
+ # return_type
204
+ return_type = opts[:debug_return_type] || 'AddAccountStructuredSnippets201Response'
205
+
206
+ # auth_names
207
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
208
+
209
+ new_options = opts.merge(
210
+ :operation => :"AdAccountsApi.add_account_structured_snippets",
211
+ :header_params => header_params,
212
+ :query_params => query_params,
213
+ :form_params => form_params,
214
+ :body => post_body,
215
+ :auth_names => auth_names,
216
+ :return_type => return_type
217
+ )
218
+
219
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
220
+ if @api_client.config.debugging
221
+ @api_client.config.logger.debug "API called: AdAccountsApi#add_account_structured_snippets\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
222
+ end
223
+ return data, status_code, headers
224
+ end
225
+
90
226
  # Create a negative keyword list
91
227
  # Creates one Google Ads shared negative keyword list with optional initial keywords in a single atomic mutation. Daily quota is reserved for every mutate item, so large batches may return 429 before any change. This operation is not idempotent. The list is not attached to any campaign.
92
228
  # @param create_ad_negative_keyword_list_request [CreateAdNegativeKeywordListRequest]
@@ -365,6 +501,86 @@ module Zernio
365
501
  return data, status_code, headers
366
502
  end
367
503
 
504
+ # Delete an ad comment
505
+ # Delete your own TikTok ad comment or reply. TikTok must return can_delete=true for the comment. Other users' comments can be hidden instead. Requires Ads access. The ad is resolved within the caller's accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok's ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
506
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
507
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
508
+ # @param [Hash] opts the optional parameters
509
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
510
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
511
+ # @return [ReplyToAdComment200Response]
512
+ def delete_ad_comment(ad_id, comment_id, opts = {})
513
+ data, _status_code, _headers = delete_ad_comment_with_http_info(ad_id, comment_id, opts)
514
+ data
515
+ end
516
+
517
+ # Delete an ad comment
518
+ # Delete your own TikTok ad comment or reply. TikTok must return can_delete&#x3D;true for the comment. Other users&#39; comments can be hidden instead. Requires Ads access. The ad is resolved within the caller&#39;s accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok&#39;s ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
519
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
520
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
521
+ # @param [Hash] opts the optional parameters
522
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
523
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
524
+ # @return [Array<(ReplyToAdComment200Response, Integer, Hash)>] ReplyToAdComment200Response data, response status code and response headers
525
+ def delete_ad_comment_with_http_info(ad_id, comment_id, opts = {})
526
+ if @api_client.config.debugging
527
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.delete_ad_comment ...'
528
+ end
529
+ # verify the required parameter 'ad_id' is set
530
+ if @api_client.config.client_side_validation && ad_id.nil?
531
+ fail ArgumentError, "Missing the required parameter 'ad_id' when calling AdAccountsApi.delete_ad_comment"
532
+ end
533
+ # verify the required parameter 'comment_id' is set
534
+ if @api_client.config.client_side_validation && comment_id.nil?
535
+ fail ArgumentError, "Missing the required parameter 'comment_id' when calling AdAccountsApi.delete_ad_comment"
536
+ end
537
+ pattern = Regexp.new(/^\d+$/)
538
+ if @api_client.config.client_side_validation && comment_id !~ pattern
539
+ fail ArgumentError, "invalid value for 'comment_id' when calling AdAccountsApi.delete_ad_comment, must conform to the pattern #{pattern}."
540
+ end
541
+
542
+ # resource path
543
+ local_var_path = '/v1/ads/{adId}/comments/{commentId}'.sub('{' + 'adId' + '}', CGI.escape(ad_id.to_s)).sub('{' + 'commentId' + '}', CGI.escape(comment_id.to_s))
544
+
545
+ # query parameters
546
+ query_params = opts[:query_params] || {}
547
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
548
+ query_params[:'until'] = opts[:'_until'] if !opts[:'_until'].nil?
549
+
550
+ # header parameters
551
+ header_params = opts[:header_params] || {}
552
+ # HTTP header 'Accept' (if needed)
553
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
554
+
555
+ # form parameters
556
+ form_params = opts[:form_params] || {}
557
+
558
+ # http body (model)
559
+ post_body = opts[:debug_body]
560
+
561
+ # return_type
562
+ return_type = opts[:debug_return_type] || 'ReplyToAdComment200Response'
563
+
564
+ # auth_names
565
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
566
+
567
+ new_options = opts.merge(
568
+ :operation => :"AdAccountsApi.delete_ad_comment",
569
+ :header_params => header_params,
570
+ :query_params => query_params,
571
+ :form_params => form_params,
572
+ :body => post_body,
573
+ :auth_names => auth_names,
574
+ :return_type => return_type
575
+ )
576
+
577
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
578
+ if @api_client.config.debugging
579
+ @api_client.config.logger.debug "API called: AdAccountsApi#delete_ad_comment\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
580
+ end
581
+ return data, status_code, headers
582
+ end
583
+
368
584
  # Delete a negative keyword list
369
585
  # Removes the Google shared negative keyword list. Detach it from all campaigns first; an in-use list is rejected. Only NEGATIVE_KEYWORDS shared sets are supported.
370
586
  # @param list_id [String]
@@ -602,11 +818,13 @@ module Zernio
602
818
  end
603
819
 
604
820
  # List comments on an ad
605
- # Returns comments on an ad's underlying creative post. Useful for moderating or analyzing engagement on dark posts (ad creatives that never went live organically), which the regular GET /v1/inbox/comments/{postId} endpoint cannot serve because dark posts are not in Zernio's post database. An ad that runs on both Facebook feed and Instagram feed has two separate underlying posts with separate comment threads (the creative's effective_object_story_id and effective_instagram_media_id). Use the `placement` query param to pick one; with no param the Instagram side is returned when it exists, otherwise Facebook. The identifiers are read from the ad record (persisted during sync) with a Marketing-API fallback for ads that predate the field. For Instagram-placed comments, the Instagram account that runs the ad must be connected to Zernio, because those comments are read through that account's token. If no connected Instagram account on the profile can read the ad's media, the call returns ads_connection_required (the Facebook side, if any, is still readable via ?placement=facebook). Meta-only for now. Other ad platforms (TikTok, LinkedIn, Pinterest, Google, X) are not wired to this endpoint and return feature_not_available. Requires the Ads add-on. Response shape matches GET /v1/inbox/comments/{postId}. The `{adId}` path segment accepts any identifier dialect Zernio indexes for the ad: Zernio internal `_id` (24-char hex), Meta's numeric `platformAdId` (the value shipped in `comment.received` webhooks as `comment.ad.id`), or the creative's `effective_object_story_id` / `effective_instagram_media_id`. Caller doesn't need a translation step.
606
- # @param ad_id [String] Internal Zernio ad ID (ObjectId).
821
+ # Returns comments on an ad's underlying creative post. Useful for moderating or analyzing engagement on dark posts (ad creatives that never went live organically), which the regular GET /v1/inbox/comments/{postId} endpoint cannot serve because dark posts are not in Zernio's post database. An ad that runs on both Facebook feed and Instagram feed has two separate underlying posts with separate comment threads (the creative's effective_object_story_id and effective_instagram_media_id). Use the `placement` query param to pick one; with no param the Instagram side is returned when it exists, otherwise Facebook. The identifiers are read from the ad record (persisted during sync) with a Marketing-API fallback for ads that predate the field. For Instagram-placed comments, the Instagram account that runs the ad must be connected to Zernio, because those comments are read through that account's token. If no connected Instagram account on the profile can read the ad's media, the call returns ads_connection_required (the Facebook side, if any, is still readable via ?placement=facebook). TikTok uses the connected TikTok Ads advertiser token and supports both paid video ads and Spark Ads. `since` and `until` select a date window of at most 30 days; the default is the last 30 days. TikTok searches by ad group, so Zernio filters each page to this ad. A page can be empty while `pagination.hasMore` is true. Reuse `pagination.cursor` with the same `limit`; the cursor retains the date window. `placement` is Meta-only and returns a 400 for TikTok. TikTok returns replies as separate comments with `parentId`; nested reply fetching is not supported. `canReply` requires a first-level comment and an identity with comment-management permission. `canDelete` reflects TikTok's own-comment deletion capability. `canHide` is supported and `canLike` is false. Use the ad comment reply, hide and delete operations below to moderate TikTok comments. Other platforms return feature_not_available. Requires the Ads add-on. Response shape matches GET /v1/inbox/comments/{postId}. The `{adId}` path segment accepts any identifier dialect Zernio indexes for the ad: Zernio internal `_id` (24-char hex), the numeric `platformAdId` (the value shipped in `comment.received` webhooks as `comment.ad.id`), or the creative's `effective_object_story_id` / `effective_instagram_media_id`. Caller doesn't need a translation step.
822
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad/post ID.
607
823
  # @param [Hash] opts the optional parameters
608
824
  # @option opts [String] :placement Which side of the ad to return comments for. Omit to default to the Instagram side when present, else Facebook. Returns ad_not_commentable if the ad has no such placement.
609
825
  # @option opts [Integer] :limit (default to 25)
826
+ # @option opts [Date] :since TikTok-only start date. Defaults to 30 days before until. Maximum window is 30 days.
827
+ # @option opts [Date] :_until TikTok-only end date. Defaults to today in UTC.
610
828
  # @option opts [String] :cursor Pagination cursor from a previous response.
611
829
  # @return [GetAdComments200Response]
612
830
  def get_ad_comments(ad_id, opts = {})
@@ -615,11 +833,13 @@ module Zernio
615
833
  end
616
834
 
617
835
  # List comments on an ad
618
- # Returns comments on an ad&#39;s underlying creative post. Useful for moderating or analyzing engagement on dark posts (ad creatives that never went live organically), which the regular GET /v1/inbox/comments/{postId} endpoint cannot serve because dark posts are not in Zernio&#39;s post database. An ad that runs on both Facebook feed and Instagram feed has two separate underlying posts with separate comment threads (the creative&#39;s effective_object_story_id and effective_instagram_media_id). Use the &#x60;placement&#x60; query param to pick one; with no param the Instagram side is returned when it exists, otherwise Facebook. The identifiers are read from the ad record (persisted during sync) with a Marketing-API fallback for ads that predate the field. For Instagram-placed comments, the Instagram account that runs the ad must be connected to Zernio, because those comments are read through that account&#39;s token. If no connected Instagram account on the profile can read the ad&#39;s media, the call returns ads_connection_required (the Facebook side, if any, is still readable via ?placement&#x3D;facebook). Meta-only for now. Other ad platforms (TikTok, LinkedIn, Pinterest, Google, X) are not wired to this endpoint and return feature_not_available. Requires the Ads add-on. Response shape matches GET /v1/inbox/comments/{postId}. The &#x60;{adId}&#x60; path segment accepts any identifier dialect Zernio indexes for the ad: Zernio internal &#x60;_id&#x60; (24-char hex), Meta&#39;s numeric &#x60;platformAdId&#x60; (the value shipped in &#x60;comment.received&#x60; webhooks as &#x60;comment.ad.id&#x60;), or the creative&#39;s &#x60;effective_object_story_id&#x60; / &#x60;effective_instagram_media_id&#x60;. Caller doesn&#39;t need a translation step.
619
- # @param ad_id [String] Internal Zernio ad ID (ObjectId).
836
+ # Returns comments on an ad&#39;s underlying creative post. Useful for moderating or analyzing engagement on dark posts (ad creatives that never went live organically), which the regular GET /v1/inbox/comments/{postId} endpoint cannot serve because dark posts are not in Zernio&#39;s post database. An ad that runs on both Facebook feed and Instagram feed has two separate underlying posts with separate comment threads (the creative&#39;s effective_object_story_id and effective_instagram_media_id). Use the &#x60;placement&#x60; query param to pick one; with no param the Instagram side is returned when it exists, otherwise Facebook. The identifiers are read from the ad record (persisted during sync) with a Marketing-API fallback for ads that predate the field. For Instagram-placed comments, the Instagram account that runs the ad must be connected to Zernio, because those comments are read through that account&#39;s token. If no connected Instagram account on the profile can read the ad&#39;s media, the call returns ads_connection_required (the Facebook side, if any, is still readable via ?placement&#x3D;facebook). TikTok uses the connected TikTok Ads advertiser token and supports both paid video ads and Spark Ads. &#x60;since&#x60; and &#x60;until&#x60; select a date window of at most 30 days; the default is the last 30 days. TikTok searches by ad group, so Zernio filters each page to this ad. A page can be empty while &#x60;pagination.hasMore&#x60; is true. Reuse &#x60;pagination.cursor&#x60; with the same &#x60;limit&#x60;; the cursor retains the date window. &#x60;placement&#x60; is Meta-only and returns a 400 for TikTok. TikTok returns replies as separate comments with &#x60;parentId&#x60;; nested reply fetching is not supported. &#x60;canReply&#x60; requires a first-level comment and an identity with comment-management permission. &#x60;canDelete&#x60; reflects TikTok&#39;s own-comment deletion capability. &#x60;canHide&#x60; is supported and &#x60;canLike&#x60; is false. Use the ad comment reply, hide and delete operations below to moderate TikTok comments. Other platforms return feature_not_available. Requires the Ads add-on. Response shape matches GET /v1/inbox/comments/{postId}. The &#x60;{adId}&#x60; path segment accepts any identifier dialect Zernio indexes for the ad: Zernio internal &#x60;_id&#x60; (24-char hex), the numeric &#x60;platformAdId&#x60; (the value shipped in &#x60;comment.received&#x60; webhooks as &#x60;comment.ad.id&#x60;), or the creative&#39;s &#x60;effective_object_story_id&#x60; / &#x60;effective_instagram_media_id&#x60;. Caller doesn&#39;t need a translation step.
837
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad/post ID.
620
838
  # @param [Hash] opts the optional parameters
621
839
  # @option opts [String] :placement Which side of the ad to return comments for. Omit to default to the Instagram side when present, else Facebook. Returns ad_not_commentable if the ad has no such placement.
622
840
  # @option opts [Integer] :limit (default to 25)
841
+ # @option opts [Date] :since TikTok-only start date. Defaults to 30 days before until. Maximum window is 30 days.
842
+ # @option opts [Date] :_until TikTok-only end date. Defaults to today in UTC.
623
843
  # @option opts [String] :cursor Pagination cursor from a previous response.
624
844
  # @return [Array<(GetAdComments200Response, Integer, Hash)>] GetAdComments200Response data, response status code and response headers
625
845
  def get_ad_comments_with_http_info(ad_id, opts = {})
@@ -649,6 +869,8 @@ module Zernio
649
869
  query_params = opts[:query_params] || {}
650
870
  query_params[:'placement'] = opts[:'placement'] if !opts[:'placement'].nil?
651
871
  query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
872
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
873
+ query_params[:'until'] = opts[:'_until'] if !opts[:'_until'].nil?
652
874
  query_params[:'cursor'] = opts[:'cursor'] if !opts[:'cursor'].nil?
653
875
 
654
876
  # header parameters
@@ -1016,41 +1238,59 @@ module Zernio
1016
1238
  return data, status_code, headers
1017
1239
  end
1018
1240
 
1019
- # Read a value rule set
1020
- # Reads one value rule set including every nested rule id and criterion id. This is step one of any edit: `PUT` is a full replace, so you need the ids before you can keep the objects you are not changing. Meta's own read returns `GENDER` values lowercase (`\"male\"`) while writes require `\"MALE\"`. Values are passed through untouched, so never case-compare a stored rule against a fetched one.
1021
- # @param value_rule_set_id [String] Platform value rule set id.
1022
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1241
+ # Get iOS 14 campaign limits
1242
+ # Reads Meta iOS 14 campaign limits for an application on an ad account. applicationId is sent as Meta app_id. This read does not establish that the application is configured for iOS promotion.
1243
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
1244
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1245
+ # @param application_id [String] Meta application ID from advertisable-applications.
1023
1246
  # @param [Hash] opts the optional parameters
1024
- # @return [GetValueRuleSet200Response]
1025
- def get_value_rule_set(value_rule_set_id, account_id, opts = {})
1026
- data, _status_code, _headers = get_value_rule_set_with_http_info(value_rule_set_id, account_id, opts)
1247
+ # @return [GetIosFourteenCampaignLimits200Response]
1248
+ def get_ios_fourteen_campaign_limits(account_id, ad_account_id, application_id, opts = {})
1249
+ data, _status_code, _headers = get_ios_fourteen_campaign_limits_with_http_info(account_id, ad_account_id, application_id, opts)
1027
1250
  data
1028
1251
  end
1029
1252
 
1030
- # Read a value rule set
1031
- # Reads one value rule set including every nested rule id and criterion id. This is step one of any edit: &#x60;PUT&#x60; is a full replace, so you need the ids before you can keep the objects you are not changing. Meta&#39;s own read returns &#x60;GENDER&#x60; values lowercase (&#x60;\&quot;male\&quot;&#x60;) while writes require &#x60;\&quot;MALE\&quot;&#x60;. Values are passed through untouched, so never case-compare a stored rule against a fetched one.
1032
- # @param value_rule_set_id [String] Platform value rule set id.
1033
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1253
+ # Get iOS 14 campaign limits
1254
+ # Reads Meta iOS 14 campaign limits for an application on an ad account. applicationId is sent as Meta app_id. This read does not establish that the application is configured for iOS promotion.
1255
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
1256
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1257
+ # @param application_id [String] Meta application ID from advertisable-applications.
1034
1258
  # @param [Hash] opts the optional parameters
1035
- # @return [Array<(GetValueRuleSet200Response, Integer, Hash)>] GetValueRuleSet200Response data, response status code and response headers
1036
- def get_value_rule_set_with_http_info(value_rule_set_id, account_id, opts = {})
1259
+ # @return [Array<(GetIosFourteenCampaignLimits200Response, Integer, Hash)>] GetIosFourteenCampaignLimits200Response data, response status code and response headers
1260
+ def get_ios_fourteen_campaign_limits_with_http_info(account_id, ad_account_id, application_id, opts = {})
1037
1261
  if @api_client.config.debugging
1038
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.get_value_rule_set ...'
1039
- end
1040
- # verify the required parameter 'value_rule_set_id' is set
1041
- if @api_client.config.client_side_validation && value_rule_set_id.nil?
1042
- fail ArgumentError, "Missing the required parameter 'value_rule_set_id' when calling AdAccountsApi.get_value_rule_set"
1262
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.get_ios_fourteen_campaign_limits ...'
1043
1263
  end
1044
1264
  # verify the required parameter 'account_id' is set
1045
1265
  if @api_client.config.client_side_validation && account_id.nil?
1046
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.get_value_rule_set"
1266
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits"
1267
+ end
1268
+ # verify the required parameter 'ad_account_id' is set
1269
+ if @api_client.config.client_side_validation && ad_account_id.nil?
1270
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits"
1271
+ end
1272
+ pattern = Regexp.new(/^act_[0-9]+$/)
1273
+ if @api_client.config.client_side_validation && ad_account_id !~ pattern
1274
+ fail ArgumentError, "invalid value for 'ad_account_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits, must conform to the pattern #{pattern}."
1275
+ end
1276
+
1277
+ # verify the required parameter 'application_id' is set
1278
+ if @api_client.config.client_side_validation && application_id.nil?
1279
+ fail ArgumentError, "Missing the required parameter 'application_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits"
1280
+ end
1281
+ pattern = Regexp.new(/^[0-9]+$/)
1282
+ if @api_client.config.client_side_validation && application_id !~ pattern
1283
+ fail ArgumentError, "invalid value for 'application_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits, must conform to the pattern #{pattern}."
1047
1284
  end
1285
+
1048
1286
  # resource path
1049
- local_var_path = '/v1/ads/value-rule-sets/{valueRuleSetId}'.sub('{' + 'valueRuleSetId' + '}', CGI.escape(value_rule_set_id.to_s))
1287
+ local_var_path = '/v1/ads/ios-fourteen-campaign-limits'
1050
1288
 
1051
1289
  # query parameters
1052
1290
  query_params = opts[:query_params] || {}
1053
1291
  query_params[:'accountId'] = account_id
1292
+ query_params[:'adAccountId'] = ad_account_id
1293
+ query_params[:'applicationId'] = application_id
1054
1294
 
1055
1295
  # header parameters
1056
1296
  header_params = opts[:header_params] || {}
@@ -1064,13 +1304,13 @@ module Zernio
1064
1304
  post_body = opts[:debug_body]
1065
1305
 
1066
1306
  # return_type
1067
- return_type = opts[:debug_return_type] || 'GetValueRuleSet200Response'
1307
+ return_type = opts[:debug_return_type] || 'GetIosFourteenCampaignLimits200Response'
1068
1308
 
1069
1309
  # auth_names
1070
1310
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1071
1311
 
1072
1312
  new_options = opts.merge(
1073
- :operation => :"AdAccountsApi.get_value_rule_set",
1313
+ :operation => :"AdAccountsApi.get_ios_fourteen_campaign_limits",
1074
1314
  :header_params => header_params,
1075
1315
  :query_params => query_params,
1076
1316
  :form_params => form_params,
@@ -1081,43 +1321,46 @@ module Zernio
1081
1321
 
1082
1322
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1083
1323
  if @api_client.config.debugging
1084
- @api_client.config.logger.debug "API called: AdAccountsApi#get_value_rule_set\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1324
+ @api_client.config.logger.debug "API called: AdAccountsApi#get_ios_fourteen_campaign_limits\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1085
1325
  end
1086
1326
  return data, status_code, headers
1087
1327
  end
1088
1328
 
1089
- # List account-level callout extensions
1090
- # Google Ads compliance row C.75: callout assets linked at the CUSTOMER level via `customer_asset` (not a campaign or ad group), so they serve fleet-wide across the account. Google only; every other platform returns 501. Cached for the quota window (10 minutes fresh, up to 7 days last-good), and gated by the shared Google Ads operations budget on a cache miss. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
1091
- # @param account_id [String] Google ads SocialAccount id.
1329
+ # Read a value rule set
1330
+ # Reads one value rule set including every nested rule id and criterion id. This is step one of any edit: `PUT` is a full replace, so you need the ids before you can keep the objects you are not changing. Meta's own read returns `GENDER` values lowercase (`\"male\"`) while writes require `\"MALE\"`. Values are passed through untouched, so never case-compare a stored rule against a fetched one.
1331
+ # @param value_rule_set_id [String] Platform value rule set id.
1332
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1092
1333
  # @param [Hash] opts the optional parameters
1093
- # @option opts [String] :customer_id Numeric Google Ads customer id (no dashes). Defaults to the account&#39;s connected customer.
1094
- # @return [ListAccountCallouts200Response]
1095
- def list_account_callouts(account_id, opts = {})
1096
- data, _status_code, _headers = list_account_callouts_with_http_info(account_id, opts)
1334
+ # @return [GetValueRuleSet200Response]
1335
+ def get_value_rule_set(value_rule_set_id, account_id, opts = {})
1336
+ data, _status_code, _headers = get_value_rule_set_with_http_info(value_rule_set_id, account_id, opts)
1097
1337
  data
1098
1338
  end
1099
1339
 
1100
- # List account-level callout extensions
1101
- # Google Ads compliance row C.75: callout assets linked at the CUSTOMER level via &#x60;customer_asset&#x60; (not a campaign or ad group), so they serve fleet-wide across the account. Google only; every other platform returns 501. Cached for the quota window (10 minutes fresh, up to 7 days last-good), and gated by the shared Google Ads operations budget on a cache miss. The response carries &#x60;cachedAt&#x60; and &#x60;stale&#x60;, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
1102
- # @param account_id [String] Google ads SocialAccount id.
1340
+ # Read a value rule set
1341
+ # Reads one value rule set including every nested rule id and criterion id. This is step one of any edit: &#x60;PUT&#x60; is a full replace, so you need the ids before you can keep the objects you are not changing. Meta&#39;s own read returns &#x60;GENDER&#x60; values lowercase (&#x60;\&quot;male\&quot;&#x60;) while writes require &#x60;\&quot;MALE\&quot;&#x60;. Values are passed through untouched, so never case-compare a stored rule against a fetched one.
1342
+ # @param value_rule_set_id [String] Platform value rule set id.
1343
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1103
1344
  # @param [Hash] opts the optional parameters
1104
- # @option opts [String] :customer_id Numeric Google Ads customer id (no dashes). Defaults to the account&#39;s connected customer.
1105
- # @return [Array<(ListAccountCallouts200Response, Integer, Hash)>] ListAccountCallouts200Response data, response status code and response headers
1106
- def list_account_callouts_with_http_info(account_id, opts = {})
1345
+ # @return [Array<(GetValueRuleSet200Response, Integer, Hash)>] GetValueRuleSet200Response data, response status code and response headers
1346
+ def get_value_rule_set_with_http_info(value_rule_set_id, account_id, opts = {})
1107
1347
  if @api_client.config.debugging
1108
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_account_callouts ...'
1348
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.get_value_rule_set ...'
1349
+ end
1350
+ # verify the required parameter 'value_rule_set_id' is set
1351
+ if @api_client.config.client_side_validation && value_rule_set_id.nil?
1352
+ fail ArgumentError, "Missing the required parameter 'value_rule_set_id' when calling AdAccountsApi.get_value_rule_set"
1109
1353
  end
1110
1354
  # verify the required parameter 'account_id' is set
1111
1355
  if @api_client.config.client_side_validation && account_id.nil?
1112
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_account_callouts"
1356
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.get_value_rule_set"
1113
1357
  end
1114
1358
  # resource path
1115
- local_var_path = '/v1/ads/accounts/callouts'
1359
+ local_var_path = '/v1/ads/value-rule-sets/{valueRuleSetId}'.sub('{' + 'valueRuleSetId' + '}', CGI.escape(value_rule_set_id.to_s))
1116
1360
 
1117
1361
  # query parameters
1118
1362
  query_params = opts[:query_params] || {}
1119
1363
  query_params[:'accountId'] = account_id
1120
- query_params[:'customerId'] = opts[:'customer_id'] if !opts[:'customer_id'].nil?
1121
1364
 
1122
1365
  # header parameters
1123
1366
  header_params = opts[:header_params] || {}
@@ -1131,13 +1374,13 @@ module Zernio
1131
1374
  post_body = opts[:debug_body]
1132
1375
 
1133
1376
  # return_type
1134
- return_type = opts[:debug_return_type] || 'ListAccountCallouts200Response'
1377
+ return_type = opts[:debug_return_type] || 'GetValueRuleSet200Response'
1135
1378
 
1136
1379
  # auth_names
1137
1380
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1138
1381
 
1139
1382
  new_options = opts.merge(
1140
- :operation => :"AdAccountsApi.list_account_callouts",
1383
+ :operation => :"AdAccountsApi.get_value_rule_set",
1141
1384
  :header_params => header_params,
1142
1385
  :query_params => query_params,
1143
1386
  :form_params => form_params,
@@ -1148,74 +1391,87 @@ module Zernio
1148
1391
 
1149
1392
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1150
1393
  if @api_client.config.debugging
1151
- @api_client.config.logger.debug "API called: AdAccountsApi#list_account_callouts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1394
+ @api_client.config.logger.debug "API called: AdAccountsApi#get_value_rule_set\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1152
1395
  end
1153
1396
  return data, status_code, headers
1154
1397
  end
1155
1398
 
1156
- # List ad accounts
1157
- # Returns the platform ad accounts available for the given account (e.g. Meta ad accounts, TikTok advertiser IDs, Google Ads customer IDs). For TikTok agencies: enumerates every advertiser under every Business Center the token can read (paginated server-side), then chunks the lookup against TikTok's `/advertiser/info/` endpoint (which has a per-call cap of ≤100 IDs). Solo advertisers without a BC fall back to the OAuth-time `advertiser_ids` list. Cached for 1h on the SocialAccount; lazy-refreshed on first call after expiry. For Google Ads: responds `429` when Google's API quota is temporarily exhausted (instead of an empty list). Retry after a delay.
1158
- # @param account_id [String] Account ID
1399
+ # Hide or unhide an ad comment
1400
+ # Hide or restore a TikTok ad comment. Send hidden=true to hide it or hidden=false to make it public again. Requires Ads access. The ad is resolved within the caller's accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok's ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
1401
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
1402
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
1403
+ # @param hide_ad_comment_request [HideAdCommentRequest]
1159
1404
  # @param [Hash] opts the optional parameters
1160
- # @option opts [String] :ad_account_id Filter response to a single platform ad account ID (e.g. &#x60;act_123&#x60; for Meta, advertiser_id for TikTok). Returns at most one item.
1161
- # @option opts [Integer] :limit Clamp the returned &#x60;accounts[]&#x60; length. Useful for typeahead pickers on agency tokens with hundreds of advertisers.
1162
- # @return [ListAdAccounts200Response]
1163
- def list_ad_accounts(account_id, opts = {})
1164
- data, _status_code, _headers = list_ad_accounts_with_http_info(account_id, opts)
1405
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
1406
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
1407
+ # @return [HideAdComment200Response]
1408
+ def hide_ad_comment(ad_id, comment_id, hide_ad_comment_request, opts = {})
1409
+ data, _status_code, _headers = hide_ad_comment_with_http_info(ad_id, comment_id, hide_ad_comment_request, opts)
1165
1410
  data
1166
1411
  end
1167
1412
 
1168
- # List ad accounts
1169
- # Returns the platform ad accounts available for the given account (e.g. Meta ad accounts, TikTok advertiser IDs, Google Ads customer IDs). For TikTok agencies: enumerates every advertiser under every Business Center the token can read (paginated server-side), then chunks the lookup against TikTok&#39;s &#x60;/advertiser/info/&#x60; endpoint (which has a per-call cap of ≤100 IDs). Solo advertisers without a BC fall back to the OAuth-time &#x60;advertiser_ids&#x60; list. Cached for 1h on the SocialAccount; lazy-refreshed on first call after expiry. For Google Ads: responds &#x60;429&#x60; when Google&#39;s API quota is temporarily exhausted (instead of an empty list). Retry after a delay.
1170
- # @param account_id [String] Account ID
1413
+ # Hide or unhide an ad comment
1414
+ # Hide or restore a TikTok ad comment. Send hidden&#x3D;true to hide it or hidden&#x3D;false to make it public again. Requires Ads access. The ad is resolved within the caller&#39;s accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok&#39;s ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
1415
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
1416
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
1417
+ # @param hide_ad_comment_request [HideAdCommentRequest]
1171
1418
  # @param [Hash] opts the optional parameters
1172
- # @option opts [String] :ad_account_id Filter response to a single platform ad account ID (e.g. &#x60;act_123&#x60; for Meta, advertiser_id for TikTok). Returns at most one item.
1173
- # @option opts [Integer] :limit Clamp the returned &#x60;accounts[]&#x60; length. Useful for typeahead pickers on agency tokens with hundreds of advertisers.
1174
- # @return [Array<(ListAdAccounts200Response, Integer, Hash)>] ListAdAccounts200Response data, response status code and response headers
1175
- def list_ad_accounts_with_http_info(account_id, opts = {})
1419
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
1420
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
1421
+ # @return [Array<(HideAdComment200Response, Integer, Hash)>] HideAdComment200Response data, response status code and response headers
1422
+ def hide_ad_comment_with_http_info(ad_id, comment_id, hide_ad_comment_request, opts = {})
1176
1423
  if @api_client.config.debugging
1177
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ad_accounts ...'
1424
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.hide_ad_comment ...'
1178
1425
  end
1179
- # verify the required parameter 'account_id' is set
1180
- if @api_client.config.client_side_validation && account_id.nil?
1181
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ad_accounts"
1426
+ # verify the required parameter 'ad_id' is set
1427
+ if @api_client.config.client_side_validation && ad_id.nil?
1428
+ fail ArgumentError, "Missing the required parameter 'ad_id' when calling AdAccountsApi.hide_ad_comment"
1182
1429
  end
1183
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 1000
1184
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_accounts, must be smaller than or equal to 1000.'
1430
+ # verify the required parameter 'comment_id' is set
1431
+ if @api_client.config.client_side_validation && comment_id.nil?
1432
+ fail ArgumentError, "Missing the required parameter 'comment_id' when calling AdAccountsApi.hide_ad_comment"
1185
1433
  end
1186
-
1187
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
1188
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_accounts, must be greater than or equal to 1.'
1434
+ pattern = Regexp.new(/^\d+$/)
1435
+ if @api_client.config.client_side_validation && comment_id !~ pattern
1436
+ fail ArgumentError, "invalid value for 'comment_id' when calling AdAccountsApi.hide_ad_comment, must conform to the pattern #{pattern}."
1189
1437
  end
1190
1438
 
1439
+ # verify the required parameter 'hide_ad_comment_request' is set
1440
+ if @api_client.config.client_side_validation && hide_ad_comment_request.nil?
1441
+ fail ArgumentError, "Missing the required parameter 'hide_ad_comment_request' when calling AdAccountsApi.hide_ad_comment"
1442
+ end
1191
1443
  # resource path
1192
- local_var_path = '/v1/ads/accounts'
1444
+ local_var_path = '/v1/ads/{adId}/comments/{commentId}/hide'.sub('{' + 'adId' + '}', CGI.escape(ad_id.to_s)).sub('{' + 'commentId' + '}', CGI.escape(comment_id.to_s))
1193
1445
 
1194
1446
  # query parameters
1195
1447
  query_params = opts[:query_params] || {}
1196
- query_params[:'accountId'] = account_id
1197
- query_params[:'adAccountId'] = opts[:'ad_account_id'] if !opts[:'ad_account_id'].nil?
1198
- query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
1448
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
1449
+ query_params[:'until'] = opts[:'_until'] if !opts[:'_until'].nil?
1199
1450
 
1200
1451
  # header parameters
1201
1452
  header_params = opts[:header_params] || {}
1202
1453
  # HTTP header 'Accept' (if needed)
1203
1454
  header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
1455
+ # HTTP header 'Content-Type'
1456
+ content_type = @api_client.select_header_content_type(['application/json'])
1457
+ if !content_type.nil?
1458
+ header_params['Content-Type'] = content_type
1459
+ end
1204
1460
 
1205
1461
  # form parameters
1206
1462
  form_params = opts[:form_params] || {}
1207
1463
 
1208
1464
  # http body (model)
1209
- post_body = opts[:debug_body]
1465
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(hide_ad_comment_request)
1210
1466
 
1211
1467
  # return_type
1212
- return_type = opts[:debug_return_type] || 'ListAdAccounts200Response'
1468
+ return_type = opts[:debug_return_type] || 'HideAdComment200Response'
1213
1469
 
1214
1470
  # auth_names
1215
1471
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1216
1472
 
1217
1473
  new_options = opts.merge(
1218
- :operation => :"AdAccountsApi.list_ad_accounts",
1474
+ :operation => :"AdAccountsApi.hide_ad_comment",
1219
1475
  :header_params => header_params,
1220
1476
  :query_params => query_params,
1221
1477
  :form_params => form_params,
@@ -1224,63 +1480,55 @@ module Zernio
1224
1480
  :return_type => return_type
1225
1481
  )
1226
1482
 
1227
- data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1483
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
1228
1484
  if @api_client.config.debugging
1229
- @api_client.config.logger.debug "API called: AdAccountsApi#list_ad_accounts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1485
+ @api_client.config.logger.debug "API called: AdAccountsApi#hide_ad_comment\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1230
1486
  end
1231
1487
  return data, status_code, headers
1232
1488
  end
1233
1489
 
1234
- # Ad labels
1235
- # Lists the ad account's organizational labels (Meta's `/act_X/adlabels`), rows returned verbatim (id, name, created/updated time).
1236
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1237
- # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
1490
+ # List account callouts
1491
+ # 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. Preserves Google RMF C.75 account-level callouts.
1492
+ # @param account_id [String]
1238
1493
  # @param [Hash] opts the optional parameters
1239
- # @option opts [Integer] :limit Rows per page (default to 25)
1240
- # @option opts [String] :after Cursor from paging.after of the previous page.
1241
- # @return [ListAdLabels200Response]
1242
- def list_ad_labels(account_id, ad_account_id, opts = {})
1243
- data, _status_code, _headers = list_ad_labels_with_http_info(account_id, ad_account_id, opts)
1494
+ # @option opts [String] :customer_id
1495
+ # @return [ListAccountCallouts200Response]
1496
+ def list_account_callouts(account_id, opts = {})
1497
+ data, _status_code, _headers = list_account_callouts_with_http_info(account_id, opts)
1244
1498
  data
1245
1499
  end
1246
1500
 
1247
- # Ad labels
1248
- # Lists the ad account&#39;s organizational labels (Meta&#39;s &#x60;/act_X/adlabels&#x60;), rows returned verbatim (id, name, created/updated time).
1249
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1250
- # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
1501
+ # List account callouts
1502
+ # Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale&#x3D;true. Inherited assets are not included. Preserves Google RMF C.75 account-level callouts.
1503
+ # @param account_id [String]
1251
1504
  # @param [Hash] opts the optional parameters
1252
- # @option opts [Integer] :limit Rows per page (default to 25)
1253
- # @option opts [String] :after Cursor from paging.after of the previous page.
1254
- # @return [Array<(ListAdLabels200Response, Integer, Hash)>] ListAdLabels200Response data, response status code and response headers
1255
- def list_ad_labels_with_http_info(account_id, ad_account_id, opts = {})
1505
+ # @option opts [String] :customer_id
1506
+ # @return [Array<(ListAccountCallouts200Response, Integer, Hash)>] ListAccountCallouts200Response data, response status code and response headers
1507
+ def list_account_callouts_with_http_info(account_id, opts = {})
1256
1508
  if @api_client.config.debugging
1257
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ad_labels ...'
1509
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_account_callouts ...'
1258
1510
  end
1259
1511
  # verify the required parameter 'account_id' is set
1260
1512
  if @api_client.config.client_side_validation && account_id.nil?
1261
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ad_labels"
1262
- end
1263
- # verify the required parameter 'ad_account_id' is set
1264
- if @api_client.config.client_side_validation && ad_account_id.nil?
1265
- fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_ad_labels"
1513
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_account_callouts"
1266
1514
  end
1267
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
1268
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_labels, must be smaller than or equal to 100.'
1515
+ pattern = Regexp.new(/^[a-fA-F0-9]{24}$/)
1516
+ if @api_client.config.client_side_validation && account_id !~ pattern
1517
+ fail ArgumentError, "invalid value for 'account_id' when calling AdAccountsApi.list_account_callouts, must conform to the pattern #{pattern}."
1269
1518
  end
1270
1519
 
1271
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
1272
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_labels, must be greater than or equal to 1.'
1520
+ pattern = Regexp.new(/^\d+$/)
1521
+ if @api_client.config.client_side_validation && !opts[:'customer_id'].nil? && opts[:'customer_id'] !~ pattern
1522
+ fail ArgumentError, "invalid value for 'opts[:\"customer_id\"]' when calling AdAccountsApi.list_account_callouts, must conform to the pattern #{pattern}."
1273
1523
  end
1274
1524
 
1275
1525
  # resource path
1276
- local_var_path = '/v1/ads/labels'
1526
+ local_var_path = '/v1/ads/accounts/callouts'
1277
1527
 
1278
1528
  # query parameters
1279
1529
  query_params = opts[:query_params] || {}
1280
1530
  query_params[:'accountId'] = account_id
1281
- query_params[:'adAccountId'] = ad_account_id
1282
- query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
1283
- query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
1531
+ query_params[:'customerId'] = opts[:'customer_id'] if !opts[:'customer_id'].nil?
1284
1532
 
1285
1533
  # header parameters
1286
1534
  header_params = opts[:header_params] || {}
@@ -1294,13 +1542,13 @@ module Zernio
1294
1542
  post_body = opts[:debug_body]
1295
1543
 
1296
1544
  # return_type
1297
- return_type = opts[:debug_return_type] || 'ListAdLabels200Response'
1545
+ return_type = opts[:debug_return_type] || 'ListAccountCallouts200Response'
1298
1546
 
1299
1547
  # auth_names
1300
1548
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1301
1549
 
1302
1550
  new_options = opts.merge(
1303
- :operation => :"AdAccountsApi.list_ad_labels",
1551
+ :operation => :"AdAccountsApi.list_account_callouts",
1304
1552
  :header_params => header_params,
1305
1553
  :query_params => query_params,
1306
1554
  :form_params => form_params,
@@ -1311,60 +1559,53 @@ module Zernio
1311
1559
 
1312
1560
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1313
1561
  if @api_client.config.debugging
1314
- @api_client.config.logger.debug "API called: AdAccountsApi#list_ad_labels\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1562
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_account_callouts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1315
1563
  end
1316
1564
  return data, status_code, headers
1317
1565
  end
1318
1566
 
1319
- # List negative keyword lists
1320
- # Google Ads shared negative keyword lists (shared_set type NEGATIVE_KEYWORDS). Reads are cached for 10 minutes; quota exhaustion may return the last successful result for up to 7 days with stale=true. Customer selection is limited to this connection and its account scope.
1567
+ # List account sitelinks
1568
+ # 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.
1321
1569
  # @param account_id [String]
1322
1570
  # @param [Hash] opts the optional parameters
1323
1571
  # @option opts [String] :customer_id
1324
- # @option opts [String] :platform
1325
- # @return [ListAdNegativeKeywordLists200Response]
1326
- def list_ad_negative_keyword_lists(account_id, opts = {})
1327
- data, _status_code, _headers = list_ad_negative_keyword_lists_with_http_info(account_id, opts)
1572
+ # @return [ListAccountSitelinks200Response]
1573
+ def list_account_sitelinks(account_id, opts = {})
1574
+ data, _status_code, _headers = list_account_sitelinks_with_http_info(account_id, opts)
1328
1575
  data
1329
1576
  end
1330
1577
 
1331
- # List negative keyword lists
1332
- # Google Ads shared negative keyword lists (shared_set type NEGATIVE_KEYWORDS). Reads are cached for 10 minutes; quota exhaustion may return the last successful result for up to 7 days with stale&#x3D;true. Customer selection is limited to this connection and its account scope.
1578
+ # List account sitelinks
1579
+ # Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale&#x3D;true. Inherited assets are not included.
1333
1580
  # @param account_id [String]
1334
1581
  # @param [Hash] opts the optional parameters
1335
1582
  # @option opts [String] :customer_id
1336
- # @option opts [String] :platform
1337
- # @return [Array<(ListAdNegativeKeywordLists200Response, Integer, Hash)>] ListAdNegativeKeywordLists200Response data, response status code and response headers
1338
- def list_ad_negative_keyword_lists_with_http_info(account_id, opts = {})
1583
+ # @return [Array<(ListAccountSitelinks200Response, Integer, Hash)>] ListAccountSitelinks200Response data, response status code and response headers
1584
+ def list_account_sitelinks_with_http_info(account_id, opts = {})
1339
1585
  if @api_client.config.debugging
1340
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ad_negative_keyword_lists ...'
1586
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_account_sitelinks ...'
1341
1587
  end
1342
1588
  # verify the required parameter 'account_id' is set
1343
1589
  if @api_client.config.client_side_validation && account_id.nil?
1344
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ad_negative_keyword_lists"
1590
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_account_sitelinks"
1345
1591
  end
1346
1592
  pattern = Regexp.new(/^[a-fA-F0-9]{24}$/)
1347
1593
  if @api_client.config.client_side_validation && account_id !~ pattern
1348
- fail ArgumentError, "invalid value for 'account_id' when calling AdAccountsApi.list_ad_negative_keyword_lists, must conform to the pattern #{pattern}."
1594
+ fail ArgumentError, "invalid value for 'account_id' when calling AdAccountsApi.list_account_sitelinks, must conform to the pattern #{pattern}."
1349
1595
  end
1350
1596
 
1351
1597
  pattern = Regexp.new(/^\d+$/)
1352
1598
  if @api_client.config.client_side_validation && !opts[:'customer_id'].nil? && opts[:'customer_id'] !~ pattern
1353
- fail ArgumentError, "invalid value for 'opts[:\"customer_id\"]' when calling AdAccountsApi.list_ad_negative_keyword_lists, must conform to the pattern #{pattern}."
1599
+ fail ArgumentError, "invalid value for 'opts[:\"customer_id\"]' when calling AdAccountsApi.list_account_sitelinks, must conform to the pattern #{pattern}."
1354
1600
  end
1355
1601
 
1356
- allowable_values = ["facebook", "instagram", "tiktok", "linkedin", "pinterest", "google", "twitter", "openai"]
1357
- if @api_client.config.client_side_validation && opts[:'platform'] && !allowable_values.include?(opts[:'platform'])
1358
- fail ArgumentError, "invalid value for \"platform\", must be one of #{allowable_values}"
1359
- end
1360
1602
  # resource path
1361
- local_var_path = '/v1/ads/accounts/negative-keyword-lists'
1603
+ local_var_path = '/v1/ads/accounts/sitelinks'
1362
1604
 
1363
1605
  # query parameters
1364
1606
  query_params = opts[:query_params] || {}
1365
1607
  query_params[:'accountId'] = account_id
1366
1608
  query_params[:'customerId'] = opts[:'customer_id'] if !opts[:'customer_id'].nil?
1367
- query_params[:'platform'] = opts[:'platform'] if !opts[:'platform'].nil?
1368
1609
 
1369
1610
  # header parameters
1370
1611
  header_params = opts[:header_params] || {}
@@ -1378,13 +1619,13 @@ module Zernio
1378
1619
  post_body = opts[:debug_body]
1379
1620
 
1380
1621
  # return_type
1381
- return_type = opts[:debug_return_type] || 'ListAdNegativeKeywordLists200Response'
1622
+ return_type = opts[:debug_return_type] || 'ListAccountSitelinks200Response'
1382
1623
 
1383
1624
  # auth_names
1384
1625
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1385
1626
 
1386
1627
  new_options = opts.merge(
1387
- :operation => :"AdAccountsApi.list_ad_negative_keyword_lists",
1628
+ :operation => :"AdAccountsApi.list_account_sitelinks",
1388
1629
  :header_params => header_params,
1389
1630
  :query_params => query_params,
1390
1631
  :form_params => form_params,
@@ -1395,64 +1636,53 @@ module Zernio
1395
1636
 
1396
1637
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1397
1638
  if @api_client.config.debugging
1398
- @api_client.config.logger.debug "API called: AdAccountsApi#list_ad_negative_keyword_lists\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1639
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_account_sitelinks\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1399
1640
  end
1400
1641
  return data, status_code, headers
1401
1642
  end
1402
1643
 
1403
- # A/B tests and lift studies
1404
- # Lists the ad account's A/B tests and lift studies (Meta's `/act_X/ad_studies`), rows returned verbatim. The default projection covers id, name, type, timing and cells with split percentages; `fields` is a raw-passthrough override.
1405
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1406
- # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
1644
+ # List account snippets
1645
+ # 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.
1646
+ # @param account_id [String]
1407
1647
  # @param [Hash] opts the optional parameters
1408
- # @option opts [String] :fields Comma-separated Graph field override (supports nested {} projections).
1409
- # @option opts [Integer] :limit Rows per page (default to 25)
1410
- # @option opts [String] :after Cursor from paging.after of the previous page.
1411
- # @return [ListAdStudies200Response]
1412
- def list_ad_studies(account_id, ad_account_id, opts = {})
1413
- data, _status_code, _headers = list_ad_studies_with_http_info(account_id, ad_account_id, opts)
1648
+ # @option opts [String] :customer_id
1649
+ # @return [ListAccountStructuredSnippets200Response]
1650
+ def list_account_structured_snippets(account_id, opts = {})
1651
+ data, _status_code, _headers = list_account_structured_snippets_with_http_info(account_id, opts)
1414
1652
  data
1415
1653
  end
1416
1654
 
1417
- # A/B tests and lift studies
1418
- # Lists the ad account&#39;s A/B tests and lift studies (Meta&#39;s &#x60;/act_X/ad_studies&#x60;), rows returned verbatim. The default projection covers id, name, type, timing and cells with split percentages; &#x60;fields&#x60; is a raw-passthrough override.
1419
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1420
- # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
1655
+ # List account snippets
1656
+ # Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale&#x3D;true. Inherited assets are not included.
1657
+ # @param account_id [String]
1421
1658
  # @param [Hash] opts the optional parameters
1422
- # @option opts [String] :fields Comma-separated Graph field override (supports nested {} projections).
1423
- # @option opts [Integer] :limit Rows per page (default to 25)
1424
- # @option opts [String] :after Cursor from paging.after of the previous page.
1425
- # @return [Array<(ListAdStudies200Response, Integer, Hash)>] ListAdStudies200Response data, response status code and response headers
1426
- def list_ad_studies_with_http_info(account_id, ad_account_id, opts = {})
1659
+ # @option opts [String] :customer_id
1660
+ # @return [Array<(ListAccountStructuredSnippets200Response, Integer, Hash)>] ListAccountStructuredSnippets200Response data, response status code and response headers
1661
+ def list_account_structured_snippets_with_http_info(account_id, opts = {})
1427
1662
  if @api_client.config.debugging
1428
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ad_studies ...'
1663
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_account_structured_snippets ...'
1429
1664
  end
1430
1665
  # verify the required parameter 'account_id' is set
1431
1666
  if @api_client.config.client_side_validation && account_id.nil?
1432
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ad_studies"
1433
- end
1434
- # verify the required parameter 'ad_account_id' is set
1435
- if @api_client.config.client_side_validation && ad_account_id.nil?
1436
- fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_ad_studies"
1667
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_account_structured_snippets"
1437
1668
  end
1438
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
1439
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_studies, must be smaller than or equal to 100.'
1669
+ pattern = Regexp.new(/^[a-fA-F0-9]{24}$/)
1670
+ if @api_client.config.client_side_validation && account_id !~ pattern
1671
+ fail ArgumentError, "invalid value for 'account_id' when calling AdAccountsApi.list_account_structured_snippets, must conform to the pattern #{pattern}."
1440
1672
  end
1441
1673
 
1442
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
1443
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_studies, must be greater than or equal to 1.'
1674
+ pattern = Regexp.new(/^\d+$/)
1675
+ if @api_client.config.client_side_validation && !opts[:'customer_id'].nil? && opts[:'customer_id'] !~ pattern
1676
+ fail ArgumentError, "invalid value for 'opts[:\"customer_id\"]' when calling AdAccountsApi.list_account_structured_snippets, must conform to the pattern #{pattern}."
1444
1677
  end
1445
1678
 
1446
1679
  # resource path
1447
- local_var_path = '/v1/ads/studies'
1680
+ local_var_path = '/v1/ads/accounts/structured-snippets'
1448
1681
 
1449
1682
  # query parameters
1450
1683
  query_params = opts[:query_params] || {}
1451
1684
  query_params[:'accountId'] = account_id
1452
- query_params[:'adAccountId'] = ad_account_id
1453
- query_params[:'fields'] = opts[:'fields'] if !opts[:'fields'].nil?
1454
- query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
1455
- query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
1685
+ query_params[:'customerId'] = opts[:'customer_id'] if !opts[:'customer_id'].nil?
1456
1686
 
1457
1687
  # header parameters
1458
1688
  header_params = opts[:header_params] || {}
@@ -1466,13 +1696,13 @@ module Zernio
1466
1696
  post_body = opts[:debug_body]
1467
1697
 
1468
1698
  # return_type
1469
- return_type = opts[:debug_return_type] || 'ListAdStudies200Response'
1699
+ return_type = opts[:debug_return_type] || 'ListAccountStructuredSnippets200Response'
1470
1700
 
1471
1701
  # auth_names
1472
1702
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1473
1703
 
1474
1704
  new_options = opts.merge(
1475
- :operation => :"AdAccountsApi.list_ad_studies",
1705
+ :operation => :"AdAccountsApi.list_account_structured_snippets",
1476
1706
  :header_params => header_params,
1477
1707
  :query_params => query_params,
1478
1708
  :form_params => form_params,
@@ -1483,40 +1713,54 @@ module Zernio
1483
1713
 
1484
1714
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1485
1715
  if @api_client.config.debugging
1486
- @api_client.config.logger.debug "API called: AdAccountsApi#list_ad_studies\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1716
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_account_structured_snippets\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1487
1717
  end
1488
1718
  return data, status_code, headers
1489
1719
  end
1490
1720
 
1491
- # List TikTok Business Centers
1492
- # Returns the TikTok Business Centers (BCs) the connected `tiktokads` account can read. Each BC reports its advertiser count so callers can build agency-style pickers without re-walking `/v1/ads/accounts` per BC. TikTok-only. Solo advertisers (non-agency tokens) return an empty array.
1493
- # @param account_id [String] ID of the &#x60;tiktokads&#x60; (or parent &#x60;tiktok&#x60; posting) SocialAccount
1721
+ # List ad accounts
1722
+ # Returns the platform ad accounts available for the given account (e.g. Meta ad accounts, TikTok advertiser IDs, Google Ads customer IDs). For TikTok agencies: enumerates every advertiser under every Business Center the token can read (paginated server-side), then chunks the lookup against TikTok's `/advertiser/info/` endpoint (which has a per-call cap of ≤100 IDs). Solo advertisers without a BC fall back to the OAuth-time `advertiser_ids` list. Cached for 1h on the SocialAccount; lazy-refreshed on first call after expiry. For Google Ads: responds `429` when Google's API quota is temporarily exhausted (instead of an empty list). Retry after a delay.
1723
+ # @param account_id [String] Account ID
1494
1724
  # @param [Hash] opts the optional parameters
1495
- # @return [ListAdsBusinessCenters200Response]
1496
- def list_ads_business_centers(account_id, opts = {})
1497
- data, _status_code, _headers = list_ads_business_centers_with_http_info(account_id, opts)
1725
+ # @option opts [String] :ad_account_id Filter response to a single platform ad account ID (e.g. &#x60;act_123&#x60; for Meta, advertiser_id for TikTok). Returns at most one item.
1726
+ # @option opts [Integer] :limit Clamp the returned &#x60;accounts[]&#x60; length. Useful for typeahead pickers on agency tokens with hundreds of advertisers.
1727
+ # @return [ListAdAccounts200Response]
1728
+ def list_ad_accounts(account_id, opts = {})
1729
+ data, _status_code, _headers = list_ad_accounts_with_http_info(account_id, opts)
1498
1730
  data
1499
1731
  end
1500
1732
 
1501
- # List TikTok Business Centers
1502
- # Returns the TikTok Business Centers (BCs) the connected &#x60;tiktokads&#x60; account can read. Each BC reports its advertiser count so callers can build agency-style pickers without re-walking &#x60;/v1/ads/accounts&#x60; per BC. TikTok-only. Solo advertisers (non-agency tokens) return an empty array.
1503
- # @param account_id [String] ID of the &#x60;tiktokads&#x60; (or parent &#x60;tiktok&#x60; posting) SocialAccount
1733
+ # List ad accounts
1734
+ # Returns the platform ad accounts available for the given account (e.g. Meta ad accounts, TikTok advertiser IDs, Google Ads customer IDs). For TikTok agencies: enumerates every advertiser under every Business Center the token can read (paginated server-side), then chunks the lookup against TikTok&#39;s &#x60;/advertiser/info/&#x60; endpoint (which has a per-call cap of ≤100 IDs). Solo advertisers without a BC fall back to the OAuth-time &#x60;advertiser_ids&#x60; list. Cached for 1h on the SocialAccount; lazy-refreshed on first call after expiry. For Google Ads: responds &#x60;429&#x60; when Google&#39;s API quota is temporarily exhausted (instead of an empty list). Retry after a delay.
1735
+ # @param account_id [String] Account ID
1504
1736
  # @param [Hash] opts the optional parameters
1505
- # @return [Array<(ListAdsBusinessCenters200Response, Integer, Hash)>] ListAdsBusinessCenters200Response data, response status code and response headers
1506
- def list_ads_business_centers_with_http_info(account_id, opts = {})
1737
+ # @option opts [String] :ad_account_id Filter response to a single platform ad account ID (e.g. &#x60;act_123&#x60; for Meta, advertiser_id for TikTok). Returns at most one item.
1738
+ # @option opts [Integer] :limit Clamp the returned &#x60;accounts[]&#x60; length. Useful for typeahead pickers on agency tokens with hundreds of advertisers.
1739
+ # @return [Array<(ListAdAccounts200Response, Integer, Hash)>] ListAdAccounts200Response data, response status code and response headers
1740
+ def list_ad_accounts_with_http_info(account_id, opts = {})
1507
1741
  if @api_client.config.debugging
1508
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ads_business_centers ...'
1742
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ad_accounts ...'
1509
1743
  end
1510
1744
  # verify the required parameter 'account_id' is set
1511
1745
  if @api_client.config.client_side_validation && account_id.nil?
1512
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ads_business_centers"
1746
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ad_accounts"
1513
1747
  end
1748
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 1000
1749
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_accounts, must be smaller than or equal to 1000.'
1750
+ end
1751
+
1752
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
1753
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_accounts, must be greater than or equal to 1.'
1754
+ end
1755
+
1514
1756
  # resource path
1515
- local_var_path = '/v1/ads/business-centers'
1757
+ local_var_path = '/v1/ads/accounts'
1516
1758
 
1517
1759
  # query parameters
1518
1760
  query_params = opts[:query_params] || {}
1519
1761
  query_params[:'accountId'] = account_id
1762
+ query_params[:'adAccountId'] = opts[:'ad_account_id'] if !opts[:'ad_account_id'].nil?
1763
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
1520
1764
 
1521
1765
  # header parameters
1522
1766
  header_params = opts[:header_params] || {}
@@ -1530,13 +1774,13 @@ module Zernio
1530
1774
  post_body = opts[:debug_body]
1531
1775
 
1532
1776
  # return_type
1533
- return_type = opts[:debug_return_type] || 'ListAdsBusinessCenters200Response'
1777
+ return_type = opts[:debug_return_type] || 'ListAdAccounts200Response'
1534
1778
 
1535
1779
  # auth_names
1536
1780
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1537
1781
 
1538
1782
  new_options = opts.merge(
1539
- :operation => :"AdAccountsApi.list_ads_business_centers",
1783
+ :operation => :"AdAccountsApi.list_ad_accounts",
1540
1784
  :header_params => header_params,
1541
1785
  :query_params => query_params,
1542
1786
  :form_params => form_params,
@@ -1547,46 +1791,61 @@ module Zernio
1547
1791
 
1548
1792
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1549
1793
  if @api_client.config.debugging
1550
- @api_client.config.logger.debug "API called: AdAccountsApi#list_ads_business_centers\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1794
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_ad_accounts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1551
1795
  end
1552
1796
  return data, status_code, headers
1553
1797
  end
1554
1798
 
1555
- # List custom conversions
1556
- # The ad account's Meta custom conversions, including archived ones (`isArchived`).
1557
- # @param account_id [String] Meta ads SocialAccount id.
1799
+ # Ad labels
1800
+ # Lists the ad account's organizational labels (Meta's `/act_X/adlabels`), rows returned verbatim (id, name, created/updated time).
1801
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1558
1802
  # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
1559
1803
  # @param [Hash] opts the optional parameters
1560
- # @return [ListCustomConversions200Response]
1561
- def list_custom_conversions(account_id, ad_account_id, opts = {})
1562
- data, _status_code, _headers = list_custom_conversions_with_http_info(account_id, ad_account_id, opts)
1804
+ # @option opts [Integer] :limit Rows per page (default to 25)
1805
+ # @option opts [String] :after Cursor from paging.after of the previous page.
1806
+ # @return [ListAdLabels200Response]
1807
+ def list_ad_labels(account_id, ad_account_id, opts = {})
1808
+ data, _status_code, _headers = list_ad_labels_with_http_info(account_id, ad_account_id, opts)
1563
1809
  data
1564
1810
  end
1565
1811
 
1566
- # List custom conversions
1567
- # The ad account&#39;s Meta custom conversions, including archived ones (&#x60;isArchived&#x60;).
1568
- # @param account_id [String] Meta ads SocialAccount id.
1812
+ # Ad labels
1813
+ # Lists the ad account&#39;s organizational labels (Meta&#39;s &#x60;/act_X/adlabels&#x60;), rows returned verbatim (id, name, created/updated time).
1814
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1569
1815
  # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
1570
1816
  # @param [Hash] opts the optional parameters
1571
- # @return [Array<(ListCustomConversions200Response, Integer, Hash)>] ListCustomConversions200Response data, response status code and response headers
1572
- def list_custom_conversions_with_http_info(account_id, ad_account_id, opts = {})
1817
+ # @option opts [Integer] :limit Rows per page (default to 25)
1818
+ # @option opts [String] :after Cursor from paging.after of the previous page.
1819
+ # @return [Array<(ListAdLabels200Response, Integer, Hash)>] ListAdLabels200Response data, response status code and response headers
1820
+ def list_ad_labels_with_http_info(account_id, ad_account_id, opts = {})
1573
1821
  if @api_client.config.debugging
1574
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_custom_conversions ...'
1822
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ad_labels ...'
1575
1823
  end
1576
1824
  # verify the required parameter 'account_id' is set
1577
1825
  if @api_client.config.client_side_validation && account_id.nil?
1578
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_custom_conversions"
1826
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ad_labels"
1579
1827
  end
1580
1828
  # verify the required parameter 'ad_account_id' is set
1581
1829
  if @api_client.config.client_side_validation && ad_account_id.nil?
1582
- fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_custom_conversions"
1830
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_ad_labels"
1831
+ end
1832
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
1833
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_labels, must be smaller than or equal to 100.'
1834
+ end
1835
+
1836
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
1837
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_labels, must be greater than or equal to 1.'
1583
1838
  end
1839
+
1584
1840
  # resource path
1585
- local_var_path = '/v1/accounts/{accountId}/custom-conversions'.sub('{' + 'accountId' + '}', CGI.escape(account_id.to_s))
1841
+ local_var_path = '/v1/ads/labels'
1586
1842
 
1587
1843
  # query parameters
1588
1844
  query_params = opts[:query_params] || {}
1845
+ query_params[:'accountId'] = account_id
1589
1846
  query_params[:'adAccountId'] = ad_account_id
1847
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
1848
+ query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
1590
1849
 
1591
1850
  # header parameters
1592
1851
  header_params = opts[:header_params] || {}
@@ -1600,13 +1859,13 @@ module Zernio
1600
1859
  post_body = opts[:debug_body]
1601
1860
 
1602
1861
  # return_type
1603
- return_type = opts[:debug_return_type] || 'ListCustomConversions200Response'
1862
+ return_type = opts[:debug_return_type] || 'ListAdLabels200Response'
1604
1863
 
1605
1864
  # auth_names
1606
1865
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1607
1866
 
1608
1867
  new_options = opts.merge(
1609
- :operation => :"AdAccountsApi.list_custom_conversions",
1868
+ :operation => :"AdAccountsApi.list_ad_labels",
1610
1869
  :header_params => header_params,
1611
1870
  :query_params => query_params,
1612
1871
  :form_params => form_params,
@@ -1617,60 +1876,60 @@ module Zernio
1617
1876
 
1618
1877
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1619
1878
  if @api_client.config.debugging
1620
- @api_client.config.logger.debug "API called: AdAccountsApi#list_custom_conversions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1879
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_ad_labels\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1621
1880
  end
1622
1881
  return data, status_code, headers
1623
1882
  end
1624
1883
 
1625
- # High demand periods / budget schedules
1626
- # Scheduled budget increases (Meta's budget-scheduling API). The Graph edge lives on the campaign and ad-set nodes only, so exactly one of `campaignId` / `adSetId` (platform ids) is required. Rows returned verbatim (budget_value, budget_value_type, time window, recurrence).
1627
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1884
+ # List negative keyword lists
1885
+ # Google Ads shared negative keyword lists (shared_set type NEGATIVE_KEYWORDS). Reads are cached for 10 minutes; quota exhaustion may return the last successful result for up to 7 days with stale=true. Customer selection is limited to this connection and its account scope.
1886
+ # @param account_id [String]
1628
1887
  # @param [Hash] opts the optional parameters
1629
- # @option opts [String] :campaign_id Platform campaign id. Exactly one of campaignId / adSetId.
1630
- # @option opts [String] :ad_set_id Platform ad set id. Exactly one of campaignId / adSetId.
1631
- # @option opts [Integer] :limit Rows per page (default to 25)
1632
- # @option opts [String] :after Cursor from paging.after of the previous page.
1633
- # @return [ListHighDemandPeriods200Response]
1634
- def list_high_demand_periods(account_id, opts = {})
1635
- data, _status_code, _headers = list_high_demand_periods_with_http_info(account_id, opts)
1888
+ # @option opts [String] :customer_id
1889
+ # @option opts [String] :platform
1890
+ # @return [ListAdNegativeKeywordLists200Response]
1891
+ def list_ad_negative_keyword_lists(account_id, opts = {})
1892
+ data, _status_code, _headers = list_ad_negative_keyword_lists_with_http_info(account_id, opts)
1636
1893
  data
1637
1894
  end
1638
1895
 
1639
- # High demand periods / budget schedules
1640
- # Scheduled budget increases (Meta&#39;s budget-scheduling API). The Graph edge lives on the campaign and ad-set nodes only, so exactly one of &#x60;campaignId&#x60; / &#x60;adSetId&#x60; (platform ids) is required. Rows returned verbatim (budget_value, budget_value_type, time window, recurrence).
1641
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1896
+ # List negative keyword lists
1897
+ # Google Ads shared negative keyword lists (shared_set type NEGATIVE_KEYWORDS). Reads are cached for 10 minutes; quota exhaustion may return the last successful result for up to 7 days with stale&#x3D;true. Customer selection is limited to this connection and its account scope.
1898
+ # @param account_id [String]
1642
1899
  # @param [Hash] opts the optional parameters
1643
- # @option opts [String] :campaign_id Platform campaign id. Exactly one of campaignId / adSetId.
1644
- # @option opts [String] :ad_set_id Platform ad set id. Exactly one of campaignId / adSetId.
1645
- # @option opts [Integer] :limit Rows per page (default to 25)
1646
- # @option opts [String] :after Cursor from paging.after of the previous page.
1647
- # @return [Array<(ListHighDemandPeriods200Response, Integer, Hash)>] ListHighDemandPeriods200Response data, response status code and response headers
1648
- def list_high_demand_periods_with_http_info(account_id, opts = {})
1900
+ # @option opts [String] :customer_id
1901
+ # @option opts [String] :platform
1902
+ # @return [Array<(ListAdNegativeKeywordLists200Response, Integer, Hash)>] ListAdNegativeKeywordLists200Response data, response status code and response headers
1903
+ def list_ad_negative_keyword_lists_with_http_info(account_id, opts = {})
1649
1904
  if @api_client.config.debugging
1650
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_high_demand_periods ...'
1905
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ad_negative_keyword_lists ...'
1651
1906
  end
1652
1907
  # verify the required parameter 'account_id' is set
1653
1908
  if @api_client.config.client_side_validation && account_id.nil?
1654
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_high_demand_periods"
1909
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ad_negative_keyword_lists"
1655
1910
  end
1656
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
1657
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_high_demand_periods, must be smaller than or equal to 100.'
1911
+ pattern = Regexp.new(/^[a-fA-F0-9]{24}$/)
1912
+ if @api_client.config.client_side_validation && account_id !~ pattern
1913
+ fail ArgumentError, "invalid value for 'account_id' when calling AdAccountsApi.list_ad_negative_keyword_lists, must conform to the pattern #{pattern}."
1658
1914
  end
1659
1915
 
1660
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
1661
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_high_demand_periods, must be greater than or equal to 1.'
1916
+ pattern = Regexp.new(/^\d+$/)
1917
+ if @api_client.config.client_side_validation && !opts[:'customer_id'].nil? && opts[:'customer_id'] !~ pattern
1918
+ fail ArgumentError, "invalid value for 'opts[:\"customer_id\"]' when calling AdAccountsApi.list_ad_negative_keyword_lists, must conform to the pattern #{pattern}."
1662
1919
  end
1663
1920
 
1921
+ allowable_values = ["facebook", "instagram", "tiktok", "linkedin", "pinterest", "google", "twitter", "openai"]
1922
+ if @api_client.config.client_side_validation && opts[:'platform'] && !allowable_values.include?(opts[:'platform'])
1923
+ fail ArgumentError, "invalid value for \"platform\", must be one of #{allowable_values}"
1924
+ end
1664
1925
  # resource path
1665
- local_var_path = '/v1/ads/high-demand-periods'
1926
+ local_var_path = '/v1/ads/accounts/negative-keyword-lists'
1666
1927
 
1667
1928
  # query parameters
1668
1929
  query_params = opts[:query_params] || {}
1669
1930
  query_params[:'accountId'] = account_id
1670
- query_params[:'campaignId'] = opts[:'campaign_id'] if !opts[:'campaign_id'].nil?
1671
- query_params[:'adSetId'] = opts[:'ad_set_id'] if !opts[:'ad_set_id'].nil?
1672
- query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
1673
- query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
1931
+ query_params[:'customerId'] = opts[:'customer_id'] if !opts[:'customer_id'].nil?
1932
+ query_params[:'platform'] = opts[:'platform'] if !opts[:'platform'].nil?
1674
1933
 
1675
1934
  # header parameters
1676
1935
  header_params = opts[:header_params] || {}
@@ -1684,13 +1943,13 @@ module Zernio
1684
1943
  post_body = opts[:debug_body]
1685
1944
 
1686
1945
  # return_type
1687
- return_type = opts[:debug_return_type] || 'ListHighDemandPeriods200Response'
1946
+ return_type = opts[:debug_return_type] || 'ListAdNegativeKeywordLists200Response'
1688
1947
 
1689
1948
  # auth_names
1690
1949
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1691
1950
 
1692
1951
  new_options = opts.merge(
1693
- :operation => :"AdAccountsApi.list_high_demand_periods",
1952
+ :operation => :"AdAccountsApi.list_ad_negative_keyword_lists",
1694
1953
  :header_params => header_params,
1695
1954
  :query_params => query_params,
1696
1955
  :form_params => form_params,
@@ -1701,52 +1960,62 @@ module Zernio
1701
1960
 
1702
1961
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1703
1962
  if @api_client.config.debugging
1704
- @api_client.config.logger.debug "API called: AdAccountsApi#list_high_demand_periods\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1963
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_ad_negative_keyword_lists\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1705
1964
  end
1706
1965
  return data, status_code, headers
1707
1966
  end
1708
1967
 
1709
- # Businesses list
1710
- # Business Manager portfolios the connected Meta user belongs to (Meta's `/me/businesses`), rows returned verbatim (id, name, verification_status, created_time). Token-scoped, so no `adAccountId` is needed. For TikTok Business Centers use `GET /v1/ads/business-centers`.
1968
+ # A/B tests and lift studies
1969
+ # Lists the ad account's A/B tests and lift studies (Meta's `/act_X/ad_studies`), rows returned verbatim. The default projection covers id, name, type, timing and cells with split percentages; `fields` is a raw-passthrough override.
1711
1970
  # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1971
+ # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
1712
1972
  # @param [Hash] opts the optional parameters
1973
+ # @option opts [String] :fields Comma-separated Graph field override (supports nested {} projections).
1713
1974
  # @option opts [Integer] :limit Rows per page (default to 25)
1714
1975
  # @option opts [String] :after Cursor from paging.after of the previous page.
1715
- # @return [ListMetaBusinesses200Response]
1716
- def list_meta_businesses(account_id, opts = {})
1717
- data, _status_code, _headers = list_meta_businesses_with_http_info(account_id, opts)
1976
+ # @return [ListAdStudies200Response]
1977
+ def list_ad_studies(account_id, ad_account_id, opts = {})
1978
+ data, _status_code, _headers = list_ad_studies_with_http_info(account_id, ad_account_id, opts)
1718
1979
  data
1719
1980
  end
1720
1981
 
1721
- # Businesses list
1722
- # Business Manager portfolios the connected Meta user belongs to (Meta&#39;s &#x60;/me/businesses&#x60;), rows returned verbatim (id, name, verification_status, created_time). Token-scoped, so no &#x60;adAccountId&#x60; is needed. For TikTok Business Centers use &#x60;GET /v1/ads/business-centers&#x60;.
1982
+ # A/B tests and lift studies
1983
+ # Lists the ad account&#39;s A/B tests and lift studies (Meta&#39;s &#x60;/act_X/ad_studies&#x60;), rows returned verbatim. The default projection covers id, name, type, timing and cells with split percentages; &#x60;fields&#x60; is a raw-passthrough override.
1723
1984
  # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1985
+ # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
1724
1986
  # @param [Hash] opts the optional parameters
1987
+ # @option opts [String] :fields Comma-separated Graph field override (supports nested {} projections).
1725
1988
  # @option opts [Integer] :limit Rows per page (default to 25)
1726
1989
  # @option opts [String] :after Cursor from paging.after of the previous page.
1727
- # @return [Array<(ListMetaBusinesses200Response, Integer, Hash)>] ListMetaBusinesses200Response data, response status code and response headers
1728
- def list_meta_businesses_with_http_info(account_id, opts = {})
1990
+ # @return [Array<(ListAdStudies200Response, Integer, Hash)>] ListAdStudies200Response data, response status code and response headers
1991
+ def list_ad_studies_with_http_info(account_id, ad_account_id, opts = {})
1729
1992
  if @api_client.config.debugging
1730
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_meta_businesses ...'
1993
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ad_studies ...'
1731
1994
  end
1732
1995
  # verify the required parameter 'account_id' is set
1733
1996
  if @api_client.config.client_side_validation && account_id.nil?
1734
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_meta_businesses"
1997
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ad_studies"
1998
+ end
1999
+ # verify the required parameter 'ad_account_id' is set
2000
+ if @api_client.config.client_side_validation && ad_account_id.nil?
2001
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_ad_studies"
1735
2002
  end
1736
2003
  if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
1737
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_meta_businesses, must be smaller than or equal to 100.'
2004
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_studies, must be smaller than or equal to 100.'
1738
2005
  end
1739
2006
 
1740
2007
  if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
1741
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_meta_businesses, must be greater than or equal to 1.'
2008
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_ad_studies, must be greater than or equal to 1.'
1742
2009
  end
1743
2010
 
1744
2011
  # resource path
1745
- local_var_path = '/v1/ads/businesses'
2012
+ local_var_path = '/v1/ads/studies'
1746
2013
 
1747
2014
  # query parameters
1748
2015
  query_params = opts[:query_params] || {}
1749
2016
  query_params[:'accountId'] = account_id
2017
+ query_params[:'adAccountId'] = ad_account_id
2018
+ query_params[:'fields'] = opts[:'fields'] if !opts[:'fields'].nil?
1750
2019
  query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
1751
2020
  query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
1752
2021
 
@@ -1762,13 +2031,13 @@ module Zernio
1762
2031
  post_body = opts[:debug_body]
1763
2032
 
1764
2033
  # return_type
1765
- return_type = opts[:debug_return_type] || 'ListMetaBusinesses200Response'
2034
+ return_type = opts[:debug_return_type] || 'ListAdStudies200Response'
1766
2035
 
1767
2036
  # auth_names
1768
2037
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1769
2038
 
1770
2039
  new_options = opts.merge(
1771
- :operation => :"AdAccountsApi.list_meta_businesses",
2040
+ :operation => :"AdAccountsApi.list_ad_studies",
1772
2041
  :header_params => header_params,
1773
2042
  :query_params => query_params,
1774
2043
  :form_params => form_params,
@@ -1779,61 +2048,40 @@ module Zernio
1779
2048
 
1780
2049
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1781
2050
  if @api_client.config.debugging
1782
- @api_client.config.logger.debug "API called: AdAccountsApi#list_meta_businesses\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2051
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_ad_studies\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1783
2052
  end
1784
2053
  return data, status_code, headers
1785
2054
  end
1786
2055
 
1787
- # List value rule sets
1788
- # Lists the ad account's value rule sets (Meta's `/act_X/value_rule_set`). A value rule set adjusts the auction bid up or down for audience segments you value differently; attach one to an ad set with `valueRuleSetId` on `POST /v1/ads/create` or `PUT /v1/ads/ad-sets/{adSetId}`. Rows are returned in the same camelCase shape the `PUT` body takes, ids included, so a set round-trips 1:1: **the update is a full replace, not a patch**, so you GET, mutate and send the whole thing back. Limits: 6 rule sets per ad account, 10 rules per set, 4 criteria per rule. **Rule order is semantic.** Rules are evaluated in array order and only the FIRST matching rule adjusts the bid for an overlapping audience. The order you send is the order that is stored and returned. Eligibility: value rule sets apply only to ad sets on the `LOWEST_COST_WITHOUT_CAP` (auto-bid) or `COST_CAP` bid strategies. Meta rejects the rest server-side.
1789
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1790
- # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
2056
+ # List TikTok Business Centers
2057
+ # Returns the TikTok Business Centers (BCs) the connected `tiktokads` account can read. Each BC reports its advertiser count so callers can build agency-style pickers without re-walking `/v1/ads/accounts` per BC. TikTok-only. Solo advertisers (non-agency tokens) return an empty array.
2058
+ # @param account_id [String] ID of the &#x60;tiktokads&#x60; (or parent &#x60;tiktok&#x60; posting) SocialAccount
1791
2059
  # @param [Hash] opts the optional parameters
1792
- # @option opts [Integer] :limit Rows per page (default to 25)
1793
- # @option opts [String] :after Cursor from paging.after of the previous page. Meta does not document paging on this edge; &#x60;after&#x60; comes back null when it omits cursors.
1794
- # @return [ListValueRuleSets200Response]
1795
- def list_value_rule_sets(account_id, ad_account_id, opts = {})
1796
- data, _status_code, _headers = list_value_rule_sets_with_http_info(account_id, ad_account_id, opts)
2060
+ # @return [ListAdsBusinessCenters200Response]
2061
+ def list_ads_business_centers(account_id, opts = {})
2062
+ data, _status_code, _headers = list_ads_business_centers_with_http_info(account_id, opts)
1797
2063
  data
1798
2064
  end
1799
2065
 
1800
- # List value rule sets
1801
- # Lists the ad account&#39;s value rule sets (Meta&#39;s &#x60;/act_X/value_rule_set&#x60;). A value rule set adjusts the auction bid up or down for audience segments you value differently; attach one to an ad set with &#x60;valueRuleSetId&#x60; on &#x60;POST /v1/ads/create&#x60; or &#x60;PUT /v1/ads/ad-sets/{adSetId}&#x60;. Rows are returned in the same camelCase shape the &#x60;PUT&#x60; body takes, ids included, so a set round-trips 1:1: **the update is a full replace, not a patch**, so you GET, mutate and send the whole thing back. Limits: 6 rule sets per ad account, 10 rules per set, 4 criteria per rule. **Rule order is semantic.** Rules are evaluated in array order and only the FIRST matching rule adjusts the bid for an overlapping audience. The order you send is the order that is stored and returned. Eligibility: value rule sets apply only to ad sets on the &#x60;LOWEST_COST_WITHOUT_CAP&#x60; (auto-bid) or &#x60;COST_CAP&#x60; bid strategies. Meta rejects the rest server-side.
1802
- # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1803
- # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
2066
+ # List TikTok Business Centers
2067
+ # Returns the TikTok Business Centers (BCs) the connected &#x60;tiktokads&#x60; account can read. Each BC reports its advertiser count so callers can build agency-style pickers without re-walking &#x60;/v1/ads/accounts&#x60; per BC. TikTok-only. Solo advertisers (non-agency tokens) return an empty array.
2068
+ # @param account_id [String] ID of the &#x60;tiktokads&#x60; (or parent &#x60;tiktok&#x60; posting) SocialAccount
1804
2069
  # @param [Hash] opts the optional parameters
1805
- # @option opts [Integer] :limit Rows per page (default to 25)
1806
- # @option opts [String] :after Cursor from paging.after of the previous page. Meta does not document paging on this edge; &#x60;after&#x60; comes back null when it omits cursors.
1807
- # @return [Array<(ListValueRuleSets200Response, Integer, Hash)>] ListValueRuleSets200Response data, response status code and response headers
1808
- def list_value_rule_sets_with_http_info(account_id, ad_account_id, opts = {})
2070
+ # @return [Array<(ListAdsBusinessCenters200Response, Integer, Hash)>] ListAdsBusinessCenters200Response data, response status code and response headers
2071
+ def list_ads_business_centers_with_http_info(account_id, opts = {})
1809
2072
  if @api_client.config.debugging
1810
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_value_rule_sets ...'
2073
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ads_business_centers ...'
1811
2074
  end
1812
2075
  # verify the required parameter 'account_id' is set
1813
2076
  if @api_client.config.client_side_validation && account_id.nil?
1814
- fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_value_rule_sets"
1815
- end
1816
- # verify the required parameter 'ad_account_id' is set
1817
- if @api_client.config.client_side_validation && ad_account_id.nil?
1818
- fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_value_rule_sets"
1819
- end
1820
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
1821
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_value_rule_sets, must be smaller than or equal to 100.'
1822
- end
1823
-
1824
- if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
1825
- fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_value_rule_sets, must be greater than or equal to 1.'
2077
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ads_business_centers"
1826
2078
  end
1827
-
1828
2079
  # resource path
1829
- local_var_path = '/v1/ads/value-rule-sets'
2080
+ local_var_path = '/v1/ads/business-centers'
1830
2081
 
1831
2082
  # query parameters
1832
2083
  query_params = opts[:query_params] || {}
1833
2084
  query_params[:'accountId'] = account_id
1834
- query_params[:'adAccountId'] = ad_account_id
1835
- query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
1836
- query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
1837
2085
 
1838
2086
  # header parameters
1839
2087
  header_params = opts[:header_params] || {}
@@ -1847,13 +2095,13 @@ module Zernio
1847
2095
  post_body = opts[:debug_body]
1848
2096
 
1849
2097
  # return_type
1850
- return_type = opts[:debug_return_type] || 'ListValueRuleSets200Response'
2098
+ return_type = opts[:debug_return_type] || 'ListAdsBusinessCenters200Response'
1851
2099
 
1852
2100
  # auth_names
1853
2101
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1854
2102
 
1855
2103
  new_options = opts.merge(
1856
- :operation => :"AdAccountsApi.list_value_rule_sets",
2104
+ :operation => :"AdAccountsApi.list_ads_business_centers",
1857
2105
  :header_params => header_params,
1858
2106
  :query_params => query_params,
1859
2107
  :form_params => form_params,
@@ -1864,64 +2112,72 @@ module Zernio
1864
2112
 
1865
2113
  data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1866
2114
  if @api_client.config.debugging
1867
- @api_client.config.logger.debug "API called: AdAccountsApi#list_value_rule_sets\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2115
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_ads_business_centers\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1868
2116
  end
1869
2117
  return data, status_code, headers
1870
2118
  end
1871
2119
 
1872
- # Remove an account-level callout extension
1873
- # Removes the `customerAsset` link (`customers/{cid}/customerAssets/{assetId}~CALLOUT`). Google only; every other platform returns 501.
1874
- # @param remove_account_callout_request [RemoveAccountCalloutRequest]
2120
+ # List Instagram ad identities
2121
+ # Discovers identities through connected_instagram_accounts, Page linkage and Page-backed identities, with a best-effort business fallback. Business permission errors do not fail discovery. The resolved object uses the same profile-scoped resolver as ad creation; null means no identity was resolved. Format-specific observed-actor fallbacks at creative creation are not predicted.
2122
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
2123
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1875
2124
  # @param [Hash] opts the optional parameters
1876
- # @return [RemoveAccountCallout200Response]
1877
- def remove_account_callout(remove_account_callout_request, opts = {})
1878
- data, _status_code, _headers = remove_account_callout_with_http_info(remove_account_callout_request, opts)
2125
+ # @return [ListAdsInstagramAccounts200Response]
2126
+ def list_ads_instagram_accounts(account_id, ad_account_id, opts = {})
2127
+ data, _status_code, _headers = list_ads_instagram_accounts_with_http_info(account_id, ad_account_id, opts)
1879
2128
  data
1880
2129
  end
1881
2130
 
1882
- # Remove an account-level callout extension
1883
- # Removes the &#x60;customerAsset&#x60; link (&#x60;customers/{cid}/customerAssets/{assetId}~CALLOUT&#x60;). Google only; every other platform returns 501.
1884
- # @param remove_account_callout_request [RemoveAccountCalloutRequest]
2131
+ # List Instagram ad identities
2132
+ # Discovers identities through connected_instagram_accounts, Page linkage and Page-backed identities, with a best-effort business fallback. Business permission errors do not fail discovery. The resolved object uses the same profile-scoped resolver as ad creation; null means no identity was resolved. Format-specific observed-actor fallbacks at creative creation are not predicted.
2133
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
2134
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1885
2135
  # @param [Hash] opts the optional parameters
1886
- # @return [Array<(RemoveAccountCallout200Response, Integer, Hash)>] RemoveAccountCallout200Response data, response status code and response headers
1887
- def remove_account_callout_with_http_info(remove_account_callout_request, opts = {})
2136
+ # @return [Array<(ListAdsInstagramAccounts200Response, Integer, Hash)>] ListAdsInstagramAccounts200Response data, response status code and response headers
2137
+ def list_ads_instagram_accounts_with_http_info(account_id, ad_account_id, opts = {})
1888
2138
  if @api_client.config.debugging
1889
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.remove_account_callout ...'
2139
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ads_instagram_accounts ...'
1890
2140
  end
1891
- # verify the required parameter 'remove_account_callout_request' is set
1892
- if @api_client.config.client_side_validation && remove_account_callout_request.nil?
1893
- fail ArgumentError, "Missing the required parameter 'remove_account_callout_request' when calling AdAccountsApi.remove_account_callout"
2141
+ # verify the required parameter 'account_id' is set
2142
+ if @api_client.config.client_side_validation && account_id.nil?
2143
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ads_instagram_accounts"
2144
+ end
2145
+ # verify the required parameter 'ad_account_id' is set
2146
+ if @api_client.config.client_side_validation && ad_account_id.nil?
2147
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_ads_instagram_accounts"
1894
2148
  end
2149
+ pattern = Regexp.new(/^act_[0-9]+$/)
2150
+ if @api_client.config.client_side_validation && ad_account_id !~ pattern
2151
+ fail ArgumentError, "invalid value for 'ad_account_id' when calling AdAccountsApi.list_ads_instagram_accounts, must conform to the pattern #{pattern}."
2152
+ end
2153
+
1895
2154
  # resource path
1896
- local_var_path = '/v1/ads/accounts/callouts'
2155
+ local_var_path = '/v1/ads/instagram-accounts'
1897
2156
 
1898
2157
  # query parameters
1899
2158
  query_params = opts[:query_params] || {}
2159
+ query_params[:'accountId'] = account_id
2160
+ query_params[:'adAccountId'] = ad_account_id
1900
2161
 
1901
2162
  # header parameters
1902
2163
  header_params = opts[:header_params] || {}
1903
2164
  # HTTP header 'Accept' (if needed)
1904
2165
  header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
1905
- # HTTP header 'Content-Type'
1906
- content_type = @api_client.select_header_content_type(['application/json'])
1907
- if !content_type.nil?
1908
- header_params['Content-Type'] = content_type
1909
- end
1910
2166
 
1911
2167
  # form parameters
1912
2168
  form_params = opts[:form_params] || {}
1913
2169
 
1914
2170
  # http body (model)
1915
- post_body = opts[:debug_body] || @api_client.object_to_http_body(remove_account_callout_request)
2171
+ post_body = opts[:debug_body]
1916
2172
 
1917
2173
  # return_type
1918
- return_type = opts[:debug_return_type] || 'RemoveAccountCallout200Response'
2174
+ return_type = opts[:debug_return_type] || 'ListAdsInstagramAccounts200Response'
1919
2175
 
1920
2176
  # auth_names
1921
2177
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
1922
2178
 
1923
2179
  new_options = opts.merge(
1924
- :operation => :"AdAccountsApi.remove_account_callout",
2180
+ :operation => :"AdAccountsApi.list_ads_instagram_accounts",
1925
2181
  :header_params => header_params,
1926
2182
  :query_params => query_params,
1927
2183
  :form_params => form_params,
@@ -1930,77 +2186,74 @@ module Zernio
1930
2186
  :return_type => return_type
1931
2187
  )
1932
2188
 
1933
- data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
2189
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1934
2190
  if @api_client.config.debugging
1935
- @api_client.config.logger.debug "API called: AdAccountsApi#remove_account_callout\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2191
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_ads_instagram_accounts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1936
2192
  end
1937
2193
  return data, status_code, headers
1938
2194
  end
1939
2195
 
1940
- # Replace negative list keywords
1941
- # Replaces the full desired keyword set. Existing keywords are diffed by normalized text and match type; creates and removals are applied atomically in one mutation. Unchanged criteria retain their ids. Send an empty keywords array to clear the list. Changes affect every campaign using this list. Each create or removal consumes one daily operation; the entire batch must fit the remaining quota.
1942
- # @param list_id [String]
1943
- # @param replace_ad_negative_keyword_list_keywords_request [ReplaceAdNegativeKeywordListKeywordsRequest]
2196
+ # List advertisable apps
2197
+ # Lists applications available to a Meta ad account, their supported platforms and unmodified object store URLs. A listed app still needs a configured mobile platform and store URL to run install promotion.
2198
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
2199
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1944
2200
  # @param [Hash] opts the optional parameters
1945
- # @return [ReplaceAdNegativeKeywordListKeywords200Response]
1946
- def replace_ad_negative_keyword_list_keywords(list_id, replace_ad_negative_keyword_list_keywords_request, opts = {})
1947
- data, _status_code, _headers = replace_ad_negative_keyword_list_keywords_with_http_info(list_id, replace_ad_negative_keyword_list_keywords_request, opts)
2201
+ # @return [ListAdvertisableApplications200Response]
2202
+ def list_advertisable_applications(account_id, ad_account_id, opts = {})
2203
+ data, _status_code, _headers = list_advertisable_applications_with_http_info(account_id, ad_account_id, opts)
1948
2204
  data
1949
2205
  end
1950
2206
 
1951
- # Replace negative list keywords
1952
- # Replaces the full desired keyword set. Existing keywords are diffed by normalized text and match type; creates and removals are applied atomically in one mutation. Unchanged criteria retain their ids. Send an empty keywords array to clear the list. Changes affect every campaign using this list. Each create or removal consumes one daily operation; the entire batch must fit the remaining quota.
1953
- # @param list_id [String]
1954
- # @param replace_ad_negative_keyword_list_keywords_request [ReplaceAdNegativeKeywordListKeywordsRequest]
2207
+ # List advertisable apps
2208
+ # Lists applications available to a Meta ad account, their supported platforms and unmodified object store URLs. A listed app still needs a configured mobile platform and store URL to run install promotion.
2209
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
2210
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1955
2211
  # @param [Hash] opts the optional parameters
1956
- # @return [Array<(ReplaceAdNegativeKeywordListKeywords200Response, Integer, Hash)>] ReplaceAdNegativeKeywordListKeywords200Response data, response status code and response headers
1957
- def replace_ad_negative_keyword_list_keywords_with_http_info(list_id, replace_ad_negative_keyword_list_keywords_request, opts = {})
2212
+ # @return [Array<(ListAdvertisableApplications200Response, Integer, Hash)>] ListAdvertisableApplications200Response data, response status code and response headers
2213
+ def list_advertisable_applications_with_http_info(account_id, ad_account_id, opts = {})
1958
2214
  if @api_client.config.debugging
1959
- @api_client.config.logger.debug 'Calling API: AdAccountsApi.replace_ad_negative_keyword_list_keywords ...'
2215
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_advertisable_applications ...'
1960
2216
  end
1961
- # verify the required parameter 'list_id' is set
1962
- if @api_client.config.client_side_validation && list_id.nil?
1963
- fail ArgumentError, "Missing the required parameter 'list_id' when calling AdAccountsApi.replace_ad_negative_keyword_list_keywords"
2217
+ # verify the required parameter 'account_id' is set
2218
+ if @api_client.config.client_side_validation && account_id.nil?
2219
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_advertisable_applications"
1964
2220
  end
1965
- pattern = Regexp.new(/^\d+$/)
1966
- if @api_client.config.client_side_validation && list_id !~ pattern
1967
- fail ArgumentError, "invalid value for 'list_id' when calling AdAccountsApi.replace_ad_negative_keyword_list_keywords, must conform to the pattern #{pattern}."
2221
+ # verify the required parameter 'ad_account_id' is set
2222
+ if @api_client.config.client_side_validation && ad_account_id.nil?
2223
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_advertisable_applications"
1968
2224
  end
1969
-
1970
- # verify the required parameter 'replace_ad_negative_keyword_list_keywords_request' is set
1971
- if @api_client.config.client_side_validation && replace_ad_negative_keyword_list_keywords_request.nil?
1972
- fail ArgumentError, "Missing the required parameter 'replace_ad_negative_keyword_list_keywords_request' when calling AdAccountsApi.replace_ad_negative_keyword_list_keywords"
2225
+ pattern = Regexp.new(/^act_[0-9]+$/)
2226
+ if @api_client.config.client_side_validation && ad_account_id !~ pattern
2227
+ fail ArgumentError, "invalid value for 'ad_account_id' when calling AdAccountsApi.list_advertisable_applications, must conform to the pattern #{pattern}."
1973
2228
  end
2229
+
1974
2230
  # resource path
1975
- local_var_path = '/v1/ads/accounts/negative-keyword-lists/{listId}/keywords'.sub('{' + 'listId' + '}', CGI.escape(list_id.to_s))
2231
+ local_var_path = '/v1/ads/advertisable-applications'
1976
2232
 
1977
2233
  # query parameters
1978
2234
  query_params = opts[:query_params] || {}
2235
+ query_params[:'accountId'] = account_id
2236
+ query_params[:'adAccountId'] = ad_account_id
1979
2237
 
1980
2238
  # header parameters
1981
2239
  header_params = opts[:header_params] || {}
1982
2240
  # HTTP header 'Accept' (if needed)
1983
2241
  header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
1984
- # HTTP header 'Content-Type'
1985
- content_type = @api_client.select_header_content_type(['application/json'])
1986
- if !content_type.nil?
1987
- header_params['Content-Type'] = content_type
1988
- end
1989
2242
 
1990
2243
  # form parameters
1991
2244
  form_params = opts[:form_params] || {}
1992
2245
 
1993
2246
  # http body (model)
1994
- post_body = opts[:debug_body] || @api_client.object_to_http_body(replace_ad_negative_keyword_list_keywords_request)
2247
+ post_body = opts[:debug_body]
1995
2248
 
1996
2249
  # return_type
1997
- return_type = opts[:debug_return_type] || 'ReplaceAdNegativeKeywordListKeywords200Response'
2250
+ return_type = opts[:debug_return_type] || 'ListAdvertisableApplications200Response'
1998
2251
 
1999
2252
  # auth_names
2000
2253
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
2001
2254
 
2002
2255
  new_options = opts.merge(
2003
- :operation => :"AdAccountsApi.replace_ad_negative_keyword_list_keywords",
2256
+ :operation => :"AdAccountsApi.list_advertisable_applications",
2004
2257
  :header_params => header_params,
2005
2258
  :query_params => query_params,
2006
2259
  :form_params => form_params,
@@ -2009,9 +2262,904 @@ module Zernio
2009
2262
  :return_type => return_type
2010
2263
  )
2011
2264
 
2012
- data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
2265
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
2013
2266
  if @api_client.config.debugging
2014
- @api_client.config.logger.debug "API called: AdAccountsApi#replace_ad_negative_keyword_list_keywords\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2267
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_advertisable_applications\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2268
+ end
2269
+ return data, status_code, headers
2270
+ end
2271
+
2272
+ # List custom conversions
2273
+ # The ad account's Meta custom conversions, including archived ones (`isArchived`).
2274
+ # @param account_id [String] Meta ads SocialAccount id.
2275
+ # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
2276
+ # @param [Hash] opts the optional parameters
2277
+ # @return [ListCustomConversions200Response]
2278
+ def list_custom_conversions(account_id, ad_account_id, opts = {})
2279
+ data, _status_code, _headers = list_custom_conversions_with_http_info(account_id, ad_account_id, opts)
2280
+ data
2281
+ end
2282
+
2283
+ # List custom conversions
2284
+ # The ad account&#39;s Meta custom conversions, including archived ones (&#x60;isArchived&#x60;).
2285
+ # @param account_id [String] Meta ads SocialAccount id.
2286
+ # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
2287
+ # @param [Hash] opts the optional parameters
2288
+ # @return [Array<(ListCustomConversions200Response, Integer, Hash)>] ListCustomConversions200Response data, response status code and response headers
2289
+ def list_custom_conversions_with_http_info(account_id, ad_account_id, opts = {})
2290
+ if @api_client.config.debugging
2291
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_custom_conversions ...'
2292
+ end
2293
+ # verify the required parameter 'account_id' is set
2294
+ if @api_client.config.client_side_validation && account_id.nil?
2295
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_custom_conversions"
2296
+ end
2297
+ # verify the required parameter 'ad_account_id' is set
2298
+ if @api_client.config.client_side_validation && ad_account_id.nil?
2299
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_custom_conversions"
2300
+ end
2301
+ # resource path
2302
+ local_var_path = '/v1/accounts/{accountId}/custom-conversions'.sub('{' + 'accountId' + '}', CGI.escape(account_id.to_s))
2303
+
2304
+ # query parameters
2305
+ query_params = opts[:query_params] || {}
2306
+ query_params[:'adAccountId'] = ad_account_id
2307
+
2308
+ # header parameters
2309
+ header_params = opts[:header_params] || {}
2310
+ # HTTP header 'Accept' (if needed)
2311
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2312
+
2313
+ # form parameters
2314
+ form_params = opts[:form_params] || {}
2315
+
2316
+ # http body (model)
2317
+ post_body = opts[:debug_body]
2318
+
2319
+ # return_type
2320
+ return_type = opts[:debug_return_type] || 'ListCustomConversions200Response'
2321
+
2322
+ # auth_names
2323
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2324
+
2325
+ new_options = opts.merge(
2326
+ :operation => :"AdAccountsApi.list_custom_conversions",
2327
+ :header_params => header_params,
2328
+ :query_params => query_params,
2329
+ :form_params => form_params,
2330
+ :body => post_body,
2331
+ :auth_names => auth_names,
2332
+ :return_type => return_type
2333
+ )
2334
+
2335
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
2336
+ if @api_client.config.debugging
2337
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_custom_conversions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2338
+ end
2339
+ return data, status_code, headers
2340
+ end
2341
+
2342
+ # High demand periods / budget schedules
2343
+ # Scheduled budget increases (Meta's budget-scheduling API). The Graph edge lives on the campaign and ad-set nodes only, so exactly one of `campaignId` / `adSetId` (platform ids) is required. Rows returned verbatim (budget_value, budget_value_type, time window, recurrence).
2344
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
2345
+ # @param [Hash] opts the optional parameters
2346
+ # @option opts [String] :campaign_id Platform campaign id. Exactly one of campaignId / adSetId.
2347
+ # @option opts [String] :ad_set_id Platform ad set id. Exactly one of campaignId / adSetId.
2348
+ # @option opts [Integer] :limit Rows per page (default to 25)
2349
+ # @option opts [String] :after Cursor from paging.after of the previous page.
2350
+ # @return [ListHighDemandPeriods200Response]
2351
+ def list_high_demand_periods(account_id, opts = {})
2352
+ data, _status_code, _headers = list_high_demand_periods_with_http_info(account_id, opts)
2353
+ data
2354
+ end
2355
+
2356
+ # High demand periods / budget schedules
2357
+ # Scheduled budget increases (Meta&#39;s budget-scheduling API). The Graph edge lives on the campaign and ad-set nodes only, so exactly one of &#x60;campaignId&#x60; / &#x60;adSetId&#x60; (platform ids) is required. Rows returned verbatim (budget_value, budget_value_type, time window, recurrence).
2358
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
2359
+ # @param [Hash] opts the optional parameters
2360
+ # @option opts [String] :campaign_id Platform campaign id. Exactly one of campaignId / adSetId.
2361
+ # @option opts [String] :ad_set_id Platform ad set id. Exactly one of campaignId / adSetId.
2362
+ # @option opts [Integer] :limit Rows per page (default to 25)
2363
+ # @option opts [String] :after Cursor from paging.after of the previous page.
2364
+ # @return [Array<(ListHighDemandPeriods200Response, Integer, Hash)>] ListHighDemandPeriods200Response data, response status code and response headers
2365
+ def list_high_demand_periods_with_http_info(account_id, opts = {})
2366
+ if @api_client.config.debugging
2367
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_high_demand_periods ...'
2368
+ end
2369
+ # verify the required parameter 'account_id' is set
2370
+ if @api_client.config.client_side_validation && account_id.nil?
2371
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_high_demand_periods"
2372
+ end
2373
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
2374
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_high_demand_periods, must be smaller than or equal to 100.'
2375
+ end
2376
+
2377
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
2378
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_high_demand_periods, must be greater than or equal to 1.'
2379
+ end
2380
+
2381
+ # resource path
2382
+ local_var_path = '/v1/ads/high-demand-periods'
2383
+
2384
+ # query parameters
2385
+ query_params = opts[:query_params] || {}
2386
+ query_params[:'accountId'] = account_id
2387
+ query_params[:'campaignId'] = opts[:'campaign_id'] if !opts[:'campaign_id'].nil?
2388
+ query_params[:'adSetId'] = opts[:'ad_set_id'] if !opts[:'ad_set_id'].nil?
2389
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
2390
+ query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
2391
+
2392
+ # header parameters
2393
+ header_params = opts[:header_params] || {}
2394
+ # HTTP header 'Accept' (if needed)
2395
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2396
+
2397
+ # form parameters
2398
+ form_params = opts[:form_params] || {}
2399
+
2400
+ # http body (model)
2401
+ post_body = opts[:debug_body]
2402
+
2403
+ # return_type
2404
+ return_type = opts[:debug_return_type] || 'ListHighDemandPeriods200Response'
2405
+
2406
+ # auth_names
2407
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2408
+
2409
+ new_options = opts.merge(
2410
+ :operation => :"AdAccountsApi.list_high_demand_periods",
2411
+ :header_params => header_params,
2412
+ :query_params => query_params,
2413
+ :form_params => form_params,
2414
+ :body => post_body,
2415
+ :auth_names => auth_names,
2416
+ :return_type => return_type
2417
+ )
2418
+
2419
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
2420
+ if @api_client.config.debugging
2421
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_high_demand_periods\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2422
+ end
2423
+ return data, status_code, headers
2424
+ end
2425
+
2426
+ # Businesses list
2427
+ # Business Manager portfolios the connected Meta user belongs to (Meta's `/me/businesses`), rows returned verbatim (id, name, verification_status, created_time). Token-scoped, so no `adAccountId` is needed. For TikTok Business Centers use `GET /v1/ads/business-centers`.
2428
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
2429
+ # @param [Hash] opts the optional parameters
2430
+ # @option opts [Integer] :limit Rows per page (default to 25)
2431
+ # @option opts [String] :after Cursor from paging.after of the previous page.
2432
+ # @return [ListMetaBusinesses200Response]
2433
+ def list_meta_businesses(account_id, opts = {})
2434
+ data, _status_code, _headers = list_meta_businesses_with_http_info(account_id, opts)
2435
+ data
2436
+ end
2437
+
2438
+ # Businesses list
2439
+ # Business Manager portfolios the connected Meta user belongs to (Meta&#39;s &#x60;/me/businesses&#x60;), rows returned verbatim (id, name, verification_status, created_time). Token-scoped, so no &#x60;adAccountId&#x60; is needed. For TikTok Business Centers use &#x60;GET /v1/ads/business-centers&#x60;.
2440
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
2441
+ # @param [Hash] opts the optional parameters
2442
+ # @option opts [Integer] :limit Rows per page (default to 25)
2443
+ # @option opts [String] :after Cursor from paging.after of the previous page.
2444
+ # @return [Array<(ListMetaBusinesses200Response, Integer, Hash)>] ListMetaBusinesses200Response data, response status code and response headers
2445
+ def list_meta_businesses_with_http_info(account_id, opts = {})
2446
+ if @api_client.config.debugging
2447
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_meta_businesses ...'
2448
+ end
2449
+ # verify the required parameter 'account_id' is set
2450
+ if @api_client.config.client_side_validation && account_id.nil?
2451
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_meta_businesses"
2452
+ end
2453
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
2454
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_meta_businesses, must be smaller than or equal to 100.'
2455
+ end
2456
+
2457
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
2458
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_meta_businesses, must be greater than or equal to 1.'
2459
+ end
2460
+
2461
+ # resource path
2462
+ local_var_path = '/v1/ads/businesses'
2463
+
2464
+ # query parameters
2465
+ query_params = opts[:query_params] || {}
2466
+ query_params[:'accountId'] = account_id
2467
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
2468
+ query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
2469
+
2470
+ # header parameters
2471
+ header_params = opts[:header_params] || {}
2472
+ # HTTP header 'Accept' (if needed)
2473
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2474
+
2475
+ # form parameters
2476
+ form_params = opts[:form_params] || {}
2477
+
2478
+ # http body (model)
2479
+ post_body = opts[:debug_body]
2480
+
2481
+ # return_type
2482
+ return_type = opts[:debug_return_type] || 'ListMetaBusinesses200Response'
2483
+
2484
+ # auth_names
2485
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2486
+
2487
+ new_options = opts.merge(
2488
+ :operation => :"AdAccountsApi.list_meta_businesses",
2489
+ :header_params => header_params,
2490
+ :query_params => query_params,
2491
+ :form_params => form_params,
2492
+ :body => post_body,
2493
+ :auth_names => auth_names,
2494
+ :return_type => return_type
2495
+ )
2496
+
2497
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
2498
+ if @api_client.config.debugging
2499
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_meta_businesses\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2500
+ end
2501
+ return data, status_code, headers
2502
+ end
2503
+
2504
+ # List value rule sets
2505
+ # Lists the ad account's value rule sets (Meta's `/act_X/value_rule_set`). A value rule set adjusts the auction bid up or down for audience segments you value differently; attach one to an ad set with `valueRuleSetId` on `POST /v1/ads/create` or `PUT /v1/ads/ad-sets/{adSetId}`. Rows are returned in the same camelCase shape the `PUT` body takes, ids included, so a set round-trips 1:1: **the update is a full replace, not a patch**, so you GET, mutate and send the whole thing back. Limits: 6 rule sets per ad account, 10 rules per set, 4 criteria per rule. **Rule order is semantic.** Rules are evaluated in array order and only the FIRST matching rule adjusts the bid for an overlapping audience. The order you send is the order that is stored and returned. Eligibility: value rule sets apply only to ad sets on the `LOWEST_COST_WITHOUT_CAP` (auto-bid) or `COST_CAP` bid strategies. Meta rejects the rest server-side.
2506
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
2507
+ # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
2508
+ # @param [Hash] opts the optional parameters
2509
+ # @option opts [Integer] :limit Rows per page (default to 25)
2510
+ # @option opts [String] :after Cursor from paging.after of the previous page. Meta does not document paging on this edge; &#x60;after&#x60; comes back null when it omits cursors.
2511
+ # @return [ListValueRuleSets200Response]
2512
+ def list_value_rule_sets(account_id, ad_account_id, opts = {})
2513
+ data, _status_code, _headers = list_value_rule_sets_with_http_info(account_id, ad_account_id, opts)
2514
+ data
2515
+ end
2516
+
2517
+ # List value rule sets
2518
+ # Lists the ad account&#39;s value rule sets (Meta&#39;s &#x60;/act_X/value_rule_set&#x60;). A value rule set adjusts the auction bid up or down for audience segments you value differently; attach one to an ad set with &#x60;valueRuleSetId&#x60; on &#x60;POST /v1/ads/create&#x60; or &#x60;PUT /v1/ads/ad-sets/{adSetId}&#x60;. Rows are returned in the same camelCase shape the &#x60;PUT&#x60; body takes, ids included, so a set round-trips 1:1: **the update is a full replace, not a patch**, so you GET, mutate and send the whole thing back. Limits: 6 rule sets per ad account, 10 rules per set, 4 criteria per rule. **Rule order is semantic.** Rules are evaluated in array order and only the FIRST matching rule adjusts the bid for an overlapping audience. The order you send is the order that is stored and returned. Eligibility: value rule sets apply only to ad sets on the &#x60;LOWEST_COST_WITHOUT_CAP&#x60; (auto-bid) or &#x60;COST_CAP&#x60; bid strategies. Meta rejects the rest server-side.
2519
+ # @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
2520
+ # @param ad_account_id [String] Meta ad account id (act_&lt;n&gt;).
2521
+ # @param [Hash] opts the optional parameters
2522
+ # @option opts [Integer] :limit Rows per page (default to 25)
2523
+ # @option opts [String] :after Cursor from paging.after of the previous page. Meta does not document paging on this edge; &#x60;after&#x60; comes back null when it omits cursors.
2524
+ # @return [Array<(ListValueRuleSets200Response, Integer, Hash)>] ListValueRuleSets200Response data, response status code and response headers
2525
+ def list_value_rule_sets_with_http_info(account_id, ad_account_id, opts = {})
2526
+ if @api_client.config.debugging
2527
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_value_rule_sets ...'
2528
+ end
2529
+ # verify the required parameter 'account_id' is set
2530
+ if @api_client.config.client_side_validation && account_id.nil?
2531
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_value_rule_sets"
2532
+ end
2533
+ # verify the required parameter 'ad_account_id' is set
2534
+ if @api_client.config.client_side_validation && ad_account_id.nil?
2535
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_value_rule_sets"
2536
+ end
2537
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
2538
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_value_rule_sets, must be smaller than or equal to 100.'
2539
+ end
2540
+
2541
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
2542
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AdAccountsApi.list_value_rule_sets, must be greater than or equal to 1.'
2543
+ end
2544
+
2545
+ # resource path
2546
+ local_var_path = '/v1/ads/value-rule-sets'
2547
+
2548
+ # query parameters
2549
+ query_params = opts[:query_params] || {}
2550
+ query_params[:'accountId'] = account_id
2551
+ query_params[:'adAccountId'] = ad_account_id
2552
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
2553
+ query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
2554
+
2555
+ # header parameters
2556
+ header_params = opts[:header_params] || {}
2557
+ # HTTP header 'Accept' (if needed)
2558
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2559
+
2560
+ # form parameters
2561
+ form_params = opts[:form_params] || {}
2562
+
2563
+ # http body (model)
2564
+ post_body = opts[:debug_body]
2565
+
2566
+ # return_type
2567
+ return_type = opts[:debug_return_type] || 'ListValueRuleSets200Response'
2568
+
2569
+ # auth_names
2570
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2571
+
2572
+ new_options = opts.merge(
2573
+ :operation => :"AdAccountsApi.list_value_rule_sets",
2574
+ :header_params => header_params,
2575
+ :query_params => query_params,
2576
+ :form_params => form_params,
2577
+ :body => post_body,
2578
+ :auth_names => auth_names,
2579
+ :return_type => return_type
2580
+ )
2581
+
2582
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
2583
+ if @api_client.config.debugging
2584
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_value_rule_sets\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2585
+ end
2586
+ return data, status_code, headers
2587
+ end
2588
+
2589
+ # Remove account callout
2590
+ # Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
2591
+ # @param remove_account_callout_request [RemoveAccountCalloutRequest]
2592
+ # @param [Hash] opts the optional parameters
2593
+ # @return [RemoveAccountCallout200Response]
2594
+ def remove_account_callout(remove_account_callout_request, opts = {})
2595
+ data, _status_code, _headers = remove_account_callout_with_http_info(remove_account_callout_request, opts)
2596
+ data
2597
+ end
2598
+
2599
+ # Remove account callout
2600
+ # Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
2601
+ # @param remove_account_callout_request [RemoveAccountCalloutRequest]
2602
+ # @param [Hash] opts the optional parameters
2603
+ # @return [Array<(RemoveAccountCallout200Response, Integer, Hash)>] RemoveAccountCallout200Response data, response status code and response headers
2604
+ def remove_account_callout_with_http_info(remove_account_callout_request, opts = {})
2605
+ if @api_client.config.debugging
2606
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.remove_account_callout ...'
2607
+ end
2608
+ # verify the required parameter 'remove_account_callout_request' is set
2609
+ if @api_client.config.client_side_validation && remove_account_callout_request.nil?
2610
+ fail ArgumentError, "Missing the required parameter 'remove_account_callout_request' when calling AdAccountsApi.remove_account_callout"
2611
+ end
2612
+ # resource path
2613
+ local_var_path = '/v1/ads/accounts/callouts'
2614
+
2615
+ # query parameters
2616
+ query_params = opts[:query_params] || {}
2617
+
2618
+ # header parameters
2619
+ header_params = opts[:header_params] || {}
2620
+ # HTTP header 'Accept' (if needed)
2621
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2622
+ # HTTP header 'Content-Type'
2623
+ content_type = @api_client.select_header_content_type(['application/json'])
2624
+ if !content_type.nil?
2625
+ header_params['Content-Type'] = content_type
2626
+ end
2627
+
2628
+ # form parameters
2629
+ form_params = opts[:form_params] || {}
2630
+
2631
+ # http body (model)
2632
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(remove_account_callout_request)
2633
+
2634
+ # return_type
2635
+ return_type = opts[:debug_return_type] || 'RemoveAccountCallout200Response'
2636
+
2637
+ # auth_names
2638
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2639
+
2640
+ new_options = opts.merge(
2641
+ :operation => :"AdAccountsApi.remove_account_callout",
2642
+ :header_params => header_params,
2643
+ :query_params => query_params,
2644
+ :form_params => form_params,
2645
+ :body => post_body,
2646
+ :auth_names => auth_names,
2647
+ :return_type => return_type
2648
+ )
2649
+
2650
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
2651
+ if @api_client.config.debugging
2652
+ @api_client.config.logger.debug "API called: AdAccountsApi#remove_account_callout\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2653
+ end
2654
+ return data, status_code, headers
2655
+ end
2656
+
2657
+ # Remove account sitelink
2658
+ # Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
2659
+ # @param remove_account_callout_request [RemoveAccountCalloutRequest]
2660
+ # @param [Hash] opts the optional parameters
2661
+ # @return [RemoveAccountCallout200Response]
2662
+ def remove_account_sitelink(remove_account_callout_request, opts = {})
2663
+ data, _status_code, _headers = remove_account_sitelink_with_http_info(remove_account_callout_request, opts)
2664
+ data
2665
+ end
2666
+
2667
+ # Remove account sitelink
2668
+ # Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
2669
+ # @param remove_account_callout_request [RemoveAccountCalloutRequest]
2670
+ # @param [Hash] opts the optional parameters
2671
+ # @return [Array<(RemoveAccountCallout200Response, Integer, Hash)>] RemoveAccountCallout200Response data, response status code and response headers
2672
+ def remove_account_sitelink_with_http_info(remove_account_callout_request, opts = {})
2673
+ if @api_client.config.debugging
2674
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.remove_account_sitelink ...'
2675
+ end
2676
+ # verify the required parameter 'remove_account_callout_request' is set
2677
+ if @api_client.config.client_side_validation && remove_account_callout_request.nil?
2678
+ fail ArgumentError, "Missing the required parameter 'remove_account_callout_request' when calling AdAccountsApi.remove_account_sitelink"
2679
+ end
2680
+ # resource path
2681
+ local_var_path = '/v1/ads/accounts/sitelinks'
2682
+
2683
+ # query parameters
2684
+ query_params = opts[:query_params] || {}
2685
+
2686
+ # header parameters
2687
+ header_params = opts[:header_params] || {}
2688
+ # HTTP header 'Accept' (if needed)
2689
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2690
+ # HTTP header 'Content-Type'
2691
+ content_type = @api_client.select_header_content_type(['application/json'])
2692
+ if !content_type.nil?
2693
+ header_params['Content-Type'] = content_type
2694
+ end
2695
+
2696
+ # form parameters
2697
+ form_params = opts[:form_params] || {}
2698
+
2699
+ # http body (model)
2700
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(remove_account_callout_request)
2701
+
2702
+ # return_type
2703
+ return_type = opts[:debug_return_type] || 'RemoveAccountCallout200Response'
2704
+
2705
+ # auth_names
2706
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2707
+
2708
+ new_options = opts.merge(
2709
+ :operation => :"AdAccountsApi.remove_account_sitelink",
2710
+ :header_params => header_params,
2711
+ :query_params => query_params,
2712
+ :form_params => form_params,
2713
+ :body => post_body,
2714
+ :auth_names => auth_names,
2715
+ :return_type => return_type
2716
+ )
2717
+
2718
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
2719
+ if @api_client.config.debugging
2720
+ @api_client.config.logger.debug "API called: AdAccountsApi#remove_account_sitelink\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2721
+ end
2722
+ return data, status_code, headers
2723
+ end
2724
+
2725
+ # Remove account snippet
2726
+ # Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
2727
+ # @param remove_account_callout_request [RemoveAccountCalloutRequest]
2728
+ # @param [Hash] opts the optional parameters
2729
+ # @return [RemoveAccountCallout200Response]
2730
+ def remove_account_structured_snippet(remove_account_callout_request, opts = {})
2731
+ data, _status_code, _headers = remove_account_structured_snippet_with_http_info(remove_account_callout_request, opts)
2732
+ data
2733
+ end
2734
+
2735
+ # Remove account snippet
2736
+ # Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
2737
+ # @param remove_account_callout_request [RemoveAccountCalloutRequest]
2738
+ # @param [Hash] opts the optional parameters
2739
+ # @return [Array<(RemoveAccountCallout200Response, Integer, Hash)>] RemoveAccountCallout200Response data, response status code and response headers
2740
+ def remove_account_structured_snippet_with_http_info(remove_account_callout_request, opts = {})
2741
+ if @api_client.config.debugging
2742
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.remove_account_structured_snippet ...'
2743
+ end
2744
+ # verify the required parameter 'remove_account_callout_request' is set
2745
+ if @api_client.config.client_side_validation && remove_account_callout_request.nil?
2746
+ fail ArgumentError, "Missing the required parameter 'remove_account_callout_request' when calling AdAccountsApi.remove_account_structured_snippet"
2747
+ end
2748
+ # resource path
2749
+ local_var_path = '/v1/ads/accounts/structured-snippets'
2750
+
2751
+ # query parameters
2752
+ query_params = opts[:query_params] || {}
2753
+
2754
+ # header parameters
2755
+ header_params = opts[:header_params] || {}
2756
+ # HTTP header 'Accept' (if needed)
2757
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2758
+ # HTTP header 'Content-Type'
2759
+ content_type = @api_client.select_header_content_type(['application/json'])
2760
+ if !content_type.nil?
2761
+ header_params['Content-Type'] = content_type
2762
+ end
2763
+
2764
+ # form parameters
2765
+ form_params = opts[:form_params] || {}
2766
+
2767
+ # http body (model)
2768
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(remove_account_callout_request)
2769
+
2770
+ # return_type
2771
+ return_type = opts[:debug_return_type] || 'RemoveAccountCallout200Response'
2772
+
2773
+ # auth_names
2774
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2775
+
2776
+ new_options = opts.merge(
2777
+ :operation => :"AdAccountsApi.remove_account_structured_snippet",
2778
+ :header_params => header_params,
2779
+ :query_params => query_params,
2780
+ :form_params => form_params,
2781
+ :body => post_body,
2782
+ :auth_names => auth_names,
2783
+ :return_type => return_type
2784
+ )
2785
+
2786
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
2787
+ if @api_client.config.debugging
2788
+ @api_client.config.logger.debug "API called: AdAccountsApi#remove_account_structured_snippet\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2789
+ end
2790
+ return data, status_code, headers
2791
+ end
2792
+
2793
+ # Replace negative list keywords
2794
+ # Replaces the full desired keyword set. Existing keywords are diffed by normalized text and match type; creates and removals are applied atomically in one mutation. Unchanged criteria retain their ids. Send an empty keywords array to clear the list. Changes affect every campaign using this list. Each create or removal consumes one daily operation; the entire batch must fit the remaining quota.
2795
+ # @param list_id [String]
2796
+ # @param replace_ad_negative_keyword_list_keywords_request [ReplaceAdNegativeKeywordListKeywordsRequest]
2797
+ # @param [Hash] opts the optional parameters
2798
+ # @return [ReplaceAdNegativeKeywordListKeywords200Response]
2799
+ def replace_ad_negative_keyword_list_keywords(list_id, replace_ad_negative_keyword_list_keywords_request, opts = {})
2800
+ data, _status_code, _headers = replace_ad_negative_keyword_list_keywords_with_http_info(list_id, replace_ad_negative_keyword_list_keywords_request, opts)
2801
+ data
2802
+ end
2803
+
2804
+ # Replace negative list keywords
2805
+ # Replaces the full desired keyword set. Existing keywords are diffed by normalized text and match type; creates and removals are applied atomically in one mutation. Unchanged criteria retain their ids. Send an empty keywords array to clear the list. Changes affect every campaign using this list. Each create or removal consumes one daily operation; the entire batch must fit the remaining quota.
2806
+ # @param list_id [String]
2807
+ # @param replace_ad_negative_keyword_list_keywords_request [ReplaceAdNegativeKeywordListKeywordsRequest]
2808
+ # @param [Hash] opts the optional parameters
2809
+ # @return [Array<(ReplaceAdNegativeKeywordListKeywords200Response, Integer, Hash)>] ReplaceAdNegativeKeywordListKeywords200Response data, response status code and response headers
2810
+ def replace_ad_negative_keyword_list_keywords_with_http_info(list_id, replace_ad_negative_keyword_list_keywords_request, opts = {})
2811
+ if @api_client.config.debugging
2812
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.replace_ad_negative_keyword_list_keywords ...'
2813
+ end
2814
+ # verify the required parameter 'list_id' is set
2815
+ if @api_client.config.client_side_validation && list_id.nil?
2816
+ fail ArgumentError, "Missing the required parameter 'list_id' when calling AdAccountsApi.replace_ad_negative_keyword_list_keywords"
2817
+ end
2818
+ pattern = Regexp.new(/^\d+$/)
2819
+ if @api_client.config.client_side_validation && list_id !~ pattern
2820
+ fail ArgumentError, "invalid value for 'list_id' when calling AdAccountsApi.replace_ad_negative_keyword_list_keywords, must conform to the pattern #{pattern}."
2821
+ end
2822
+
2823
+ # verify the required parameter 'replace_ad_negative_keyword_list_keywords_request' is set
2824
+ if @api_client.config.client_side_validation && replace_ad_negative_keyword_list_keywords_request.nil?
2825
+ fail ArgumentError, "Missing the required parameter 'replace_ad_negative_keyword_list_keywords_request' when calling AdAccountsApi.replace_ad_negative_keyword_list_keywords"
2826
+ end
2827
+ # resource path
2828
+ local_var_path = '/v1/ads/accounts/negative-keyword-lists/{listId}/keywords'.sub('{' + 'listId' + '}', CGI.escape(list_id.to_s))
2829
+
2830
+ # query parameters
2831
+ query_params = opts[:query_params] || {}
2832
+
2833
+ # header parameters
2834
+ header_params = opts[:header_params] || {}
2835
+ # HTTP header 'Accept' (if needed)
2836
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2837
+ # HTTP header 'Content-Type'
2838
+ content_type = @api_client.select_header_content_type(['application/json'])
2839
+ if !content_type.nil?
2840
+ header_params['Content-Type'] = content_type
2841
+ end
2842
+
2843
+ # form parameters
2844
+ form_params = opts[:form_params] || {}
2845
+
2846
+ # http body (model)
2847
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(replace_ad_negative_keyword_list_keywords_request)
2848
+
2849
+ # return_type
2850
+ return_type = opts[:debug_return_type] || 'ReplaceAdNegativeKeywordListKeywords200Response'
2851
+
2852
+ # auth_names
2853
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2854
+
2855
+ new_options = opts.merge(
2856
+ :operation => :"AdAccountsApi.replace_ad_negative_keyword_list_keywords",
2857
+ :header_params => header_params,
2858
+ :query_params => query_params,
2859
+ :form_params => form_params,
2860
+ :body => post_body,
2861
+ :auth_names => auth_names,
2862
+ :return_type => return_type
2863
+ )
2864
+
2865
+ data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
2866
+ if @api_client.config.debugging
2867
+ @api_client.config.logger.debug "API called: AdAccountsApi#replace_ad_negative_keyword_list_keywords\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2868
+ end
2869
+ return data, status_code, headers
2870
+ end
2871
+
2872
+ # Reply to an ad comment
2873
+ # Reply to a first-level TikTok ad comment. Requires a TT_USER or CUSTOMIZED_USER identity with comment-management permission. Replies to replies are rejected. The response commentId identifies the new reply. This operation is not idempotent; do not blindly retry an uncertain response. Requires Ads access. The ad is resolved within the caller's accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok's ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
2874
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
2875
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
2876
+ # @param reply_to_ad_comment_request [ReplyToAdCommentRequest]
2877
+ # @param [Hash] opts the optional parameters
2878
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
2879
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
2880
+ # @return [ReplyToAdComment200Response]
2881
+ def reply_to_ad_comment(ad_id, comment_id, reply_to_ad_comment_request, opts = {})
2882
+ data, _status_code, _headers = reply_to_ad_comment_with_http_info(ad_id, comment_id, reply_to_ad_comment_request, opts)
2883
+ data
2884
+ end
2885
+
2886
+ # Reply to an ad comment
2887
+ # Reply to a first-level TikTok ad comment. Requires a TT_USER or CUSTOMIZED_USER identity with comment-management permission. Replies to replies are rejected. The response commentId identifies the new reply. This operation is not idempotent; do not blindly retry an uncertain response. Requires Ads access. The ad is resolved within the caller&#39;s accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok&#39;s ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
2888
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
2889
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
2890
+ # @param reply_to_ad_comment_request [ReplyToAdCommentRequest]
2891
+ # @param [Hash] opts the optional parameters
2892
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
2893
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
2894
+ # @return [Array<(ReplyToAdComment200Response, Integer, Hash)>] ReplyToAdComment200Response data, response status code and response headers
2895
+ def reply_to_ad_comment_with_http_info(ad_id, comment_id, reply_to_ad_comment_request, opts = {})
2896
+ if @api_client.config.debugging
2897
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.reply_to_ad_comment ...'
2898
+ end
2899
+ # verify the required parameter 'ad_id' is set
2900
+ if @api_client.config.client_side_validation && ad_id.nil?
2901
+ fail ArgumentError, "Missing the required parameter 'ad_id' when calling AdAccountsApi.reply_to_ad_comment"
2902
+ end
2903
+ # verify the required parameter 'comment_id' is set
2904
+ if @api_client.config.client_side_validation && comment_id.nil?
2905
+ fail ArgumentError, "Missing the required parameter 'comment_id' when calling AdAccountsApi.reply_to_ad_comment"
2906
+ end
2907
+ pattern = Regexp.new(/^\d+$/)
2908
+ if @api_client.config.client_side_validation && comment_id !~ pattern
2909
+ fail ArgumentError, "invalid value for 'comment_id' when calling AdAccountsApi.reply_to_ad_comment, must conform to the pattern #{pattern}."
2910
+ end
2911
+
2912
+ # verify the required parameter 'reply_to_ad_comment_request' is set
2913
+ if @api_client.config.client_side_validation && reply_to_ad_comment_request.nil?
2914
+ fail ArgumentError, "Missing the required parameter 'reply_to_ad_comment_request' when calling AdAccountsApi.reply_to_ad_comment"
2915
+ end
2916
+ # resource path
2917
+ local_var_path = '/v1/ads/{adId}/comments/{commentId}/reply'.sub('{' + 'adId' + '}', CGI.escape(ad_id.to_s)).sub('{' + 'commentId' + '}', CGI.escape(comment_id.to_s))
2918
+
2919
+ # query parameters
2920
+ query_params = opts[:query_params] || {}
2921
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
2922
+ query_params[:'until'] = opts[:'_until'] if !opts[:'_until'].nil?
2923
+
2924
+ # header parameters
2925
+ header_params = opts[:header_params] || {}
2926
+ # HTTP header 'Accept' (if needed)
2927
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2928
+ # HTTP header 'Content-Type'
2929
+ content_type = @api_client.select_header_content_type(['application/json'])
2930
+ if !content_type.nil?
2931
+ header_params['Content-Type'] = content_type
2932
+ end
2933
+
2934
+ # form parameters
2935
+ form_params = opts[:form_params] || {}
2936
+
2937
+ # http body (model)
2938
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(reply_to_ad_comment_request)
2939
+
2940
+ # return_type
2941
+ return_type = opts[:debug_return_type] || 'ReplyToAdComment200Response'
2942
+
2943
+ # auth_names
2944
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2945
+
2946
+ new_options = opts.merge(
2947
+ :operation => :"AdAccountsApi.reply_to_ad_comment",
2948
+ :header_params => header_params,
2949
+ :query_params => query_params,
2950
+ :form_params => form_params,
2951
+ :body => post_body,
2952
+ :auth_names => auth_names,
2953
+ :return_type => return_type
2954
+ )
2955
+
2956
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
2957
+ if @api_client.config.debugging
2958
+ @api_client.config.logger.debug "API called: AdAccountsApi#reply_to_ad_comment\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2959
+ end
2960
+ return data, status_code, headers
2961
+ end
2962
+
2963
+ # Update account callouts
2964
+ # 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.
2965
+ # @param update_account_callouts_request [UpdateAccountCalloutsRequest]
2966
+ # @param [Hash] opts the optional parameters
2967
+ # @return [UpdateAccountCallouts200Response]
2968
+ def update_account_callouts(update_account_callouts_request, opts = {})
2969
+ data, _status_code, _headers = update_account_callouts_with_http_info(update_account_callouts_request, opts)
2970
+ data
2971
+ end
2972
+
2973
+ # Update account callouts
2974
+ # 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.
2975
+ # @param update_account_callouts_request [UpdateAccountCalloutsRequest]
2976
+ # @param [Hash] opts the optional parameters
2977
+ # @return [Array<(UpdateAccountCallouts200Response, Integer, Hash)>] UpdateAccountCallouts200Response data, response status code and response headers
2978
+ def update_account_callouts_with_http_info(update_account_callouts_request, opts = {})
2979
+ if @api_client.config.debugging
2980
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.update_account_callouts ...'
2981
+ end
2982
+ # verify the required parameter 'update_account_callouts_request' is set
2983
+ if @api_client.config.client_side_validation && update_account_callouts_request.nil?
2984
+ fail ArgumentError, "Missing the required parameter 'update_account_callouts_request' when calling AdAccountsApi.update_account_callouts"
2985
+ end
2986
+ # resource path
2987
+ local_var_path = '/v1/ads/accounts/callouts'
2988
+
2989
+ # query parameters
2990
+ query_params = opts[:query_params] || {}
2991
+
2992
+ # header parameters
2993
+ header_params = opts[:header_params] || {}
2994
+ # HTTP header 'Accept' (if needed)
2995
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2996
+ # HTTP header 'Content-Type'
2997
+ content_type = @api_client.select_header_content_type(['application/json'])
2998
+ if !content_type.nil?
2999
+ header_params['Content-Type'] = content_type
3000
+ end
3001
+
3002
+ # form parameters
3003
+ form_params = opts[:form_params] || {}
3004
+
3005
+ # http body (model)
3006
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(update_account_callouts_request)
3007
+
3008
+ # return_type
3009
+ return_type = opts[:debug_return_type] || 'UpdateAccountCallouts200Response'
3010
+
3011
+ # auth_names
3012
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
3013
+
3014
+ new_options = opts.merge(
3015
+ :operation => :"AdAccountsApi.update_account_callouts",
3016
+ :header_params => header_params,
3017
+ :query_params => query_params,
3018
+ :form_params => form_params,
3019
+ :body => post_body,
3020
+ :auth_names => auth_names,
3021
+ :return_type => return_type
3022
+ )
3023
+
3024
+ data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
3025
+ if @api_client.config.debugging
3026
+ @api_client.config.logger.debug "API called: AdAccountsApi#update_account_callouts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
3027
+ end
3028
+ return data, status_code, headers
3029
+ end
3030
+
3031
+ # Update account sitelinks
3032
+ # 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.
3033
+ # @param update_account_sitelinks_request [UpdateAccountSitelinksRequest]
3034
+ # @param [Hash] opts the optional parameters
3035
+ # @return [UpdateAccountCallouts200Response]
3036
+ def update_account_sitelinks(update_account_sitelinks_request, opts = {})
3037
+ data, _status_code, _headers = update_account_sitelinks_with_http_info(update_account_sitelinks_request, opts)
3038
+ data
3039
+ end
3040
+
3041
+ # Update account sitelinks
3042
+ # 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.
3043
+ # @param update_account_sitelinks_request [UpdateAccountSitelinksRequest]
3044
+ # @param [Hash] opts the optional parameters
3045
+ # @return [Array<(UpdateAccountCallouts200Response, Integer, Hash)>] UpdateAccountCallouts200Response data, response status code and response headers
3046
+ def update_account_sitelinks_with_http_info(update_account_sitelinks_request, opts = {})
3047
+ if @api_client.config.debugging
3048
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.update_account_sitelinks ...'
3049
+ end
3050
+ # verify the required parameter 'update_account_sitelinks_request' is set
3051
+ if @api_client.config.client_side_validation && update_account_sitelinks_request.nil?
3052
+ fail ArgumentError, "Missing the required parameter 'update_account_sitelinks_request' when calling AdAccountsApi.update_account_sitelinks"
3053
+ end
3054
+ # resource path
3055
+ local_var_path = '/v1/ads/accounts/sitelinks'
3056
+
3057
+ # query parameters
3058
+ query_params = opts[:query_params] || {}
3059
+
3060
+ # header parameters
3061
+ header_params = opts[:header_params] || {}
3062
+ # HTTP header 'Accept' (if needed)
3063
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
3064
+ # HTTP header 'Content-Type'
3065
+ content_type = @api_client.select_header_content_type(['application/json'])
3066
+ if !content_type.nil?
3067
+ header_params['Content-Type'] = content_type
3068
+ end
3069
+
3070
+ # form parameters
3071
+ form_params = opts[:form_params] || {}
3072
+
3073
+ # http body (model)
3074
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(update_account_sitelinks_request)
3075
+
3076
+ # return_type
3077
+ return_type = opts[:debug_return_type] || 'UpdateAccountCallouts200Response'
3078
+
3079
+ # auth_names
3080
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
3081
+
3082
+ new_options = opts.merge(
3083
+ :operation => :"AdAccountsApi.update_account_sitelinks",
3084
+ :header_params => header_params,
3085
+ :query_params => query_params,
3086
+ :form_params => form_params,
3087
+ :body => post_body,
3088
+ :auth_names => auth_names,
3089
+ :return_type => return_type
3090
+ )
3091
+
3092
+ data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
3093
+ if @api_client.config.debugging
3094
+ @api_client.config.logger.debug "API called: AdAccountsApi#update_account_sitelinks\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
3095
+ end
3096
+ return data, status_code, headers
3097
+ end
3098
+
3099
+ # Update account snippets
3100
+ # 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.
3101
+ # @param update_account_structured_snippets_request [UpdateAccountStructuredSnippetsRequest]
3102
+ # @param [Hash] opts the optional parameters
3103
+ # @return [UpdateAccountCallouts200Response]
3104
+ def update_account_structured_snippets(update_account_structured_snippets_request, opts = {})
3105
+ data, _status_code, _headers = update_account_structured_snippets_with_http_info(update_account_structured_snippets_request, opts)
3106
+ data
3107
+ end
3108
+
3109
+ # Update account snippets
3110
+ # 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.
3111
+ # @param update_account_structured_snippets_request [UpdateAccountStructuredSnippetsRequest]
3112
+ # @param [Hash] opts the optional parameters
3113
+ # @return [Array<(UpdateAccountCallouts200Response, Integer, Hash)>] UpdateAccountCallouts200Response data, response status code and response headers
3114
+ def update_account_structured_snippets_with_http_info(update_account_structured_snippets_request, opts = {})
3115
+ if @api_client.config.debugging
3116
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.update_account_structured_snippets ...'
3117
+ end
3118
+ # verify the required parameter 'update_account_structured_snippets_request' is set
3119
+ if @api_client.config.client_side_validation && update_account_structured_snippets_request.nil?
3120
+ fail ArgumentError, "Missing the required parameter 'update_account_structured_snippets_request' when calling AdAccountsApi.update_account_structured_snippets"
3121
+ end
3122
+ # resource path
3123
+ local_var_path = '/v1/ads/accounts/structured-snippets'
3124
+
3125
+ # query parameters
3126
+ query_params = opts[:query_params] || {}
3127
+
3128
+ # header parameters
3129
+ header_params = opts[:header_params] || {}
3130
+ # HTTP header 'Accept' (if needed)
3131
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
3132
+ # HTTP header 'Content-Type'
3133
+ content_type = @api_client.select_header_content_type(['application/json'])
3134
+ if !content_type.nil?
3135
+ header_params['Content-Type'] = content_type
3136
+ end
3137
+
3138
+ # form parameters
3139
+ form_params = opts[:form_params] || {}
3140
+
3141
+ # http body (model)
3142
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(update_account_structured_snippets_request)
3143
+
3144
+ # return_type
3145
+ return_type = opts[:debug_return_type] || 'UpdateAccountCallouts200Response'
3146
+
3147
+ # auth_names
3148
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
3149
+
3150
+ new_options = opts.merge(
3151
+ :operation => :"AdAccountsApi.update_account_structured_snippets",
3152
+ :header_params => header_params,
3153
+ :query_params => query_params,
3154
+ :form_params => form_params,
3155
+ :body => post_body,
3156
+ :auth_names => auth_names,
3157
+ :return_type => return_type
3158
+ )
3159
+
3160
+ data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
3161
+ if @api_client.config.debugging
3162
+ @api_client.config.logger.debug "API called: AdAccountsApi#update_account_structured_snippets\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2015
3163
  end
2016
3164
  return data, status_code, headers
2017
3165
  end