late-sdk 0.0.899 → 0.0.900

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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -2
  3. data/docs/AdAccountsApi.md +463 -3
  4. data/docs/AdCampaignsApi.md +4 -4
  5. data/docs/AdTracking.md +20 -0
  6. data/docs/CreateAdCampaign200Response.md +26 -0
  7. data/docs/CreateAdCampaignRequest.md +8 -0
  8. data/docs/CreateCallAdRequest.md +2 -0
  9. data/docs/CreateMessagingAdRequest.md +2 -0
  10. data/docs/CreateStandaloneAdRequest.md +11 -3
  11. data/docs/CtwaAdRequestBody.md +2 -0
  12. data/docs/GetAdComments200ResponseMeta.md +10 -4
  13. data/docs/GetIosFourteenCampaignLimits200Response.md +18 -0
  14. data/docs/GetIosFourteenCampaignLimits200ResponseLimits.md +22 -0
  15. data/docs/HideAdComment200Response.md +22 -0
  16. data/docs/HideAdCommentRequest.md +18 -0
  17. data/docs/ListAdsInstagramAccounts200Response.md +22 -0
  18. data/docs/ListAdsInstagramAccounts200ResponseAccountsInner.md +26 -0
  19. data/docs/ListAdsInstagramAccounts200ResponsePagesInner.md +24 -0
  20. data/docs/ListAdsInstagramAccounts200ResponseResolved.md +22 -0
  21. data/docs/ListAdvertisableApplications200Response.md +18 -0
  22. data/docs/ListAdvertisableApplications200ResponseApplicationsInner.md +24 -0
  23. data/docs/MetaInstagramIdentityRef.md +22 -0
  24. data/docs/ReplyToAdComment200Response.md +20 -0
  25. data/docs/ReplyToAdCommentRequest.md +18 -0
  26. data/docs/TargetingSpec.md +4 -0
  27. data/lib/zernio-sdk/api/ad_accounts_api.rb +512 -4
  28. data/lib/zernio-sdk/api/ad_campaigns_api.rb +3 -3
  29. data/lib/zernio-sdk/models/{create_standalone_ad_request_tracking.rb → ad_tracking.rb} +5 -5
  30. data/lib/zernio-sdk/models/create_ad_campaign200_response.rb +231 -0
  31. data/lib/zernio-sdk/models/create_ad_campaign_request.rb +52 -1
  32. data/lib/zernio-sdk/models/create_call_ad_request.rb +10 -1
  33. data/lib/zernio-sdk/models/create_messaging_ad_request.rb +10 -1
  34. data/lib/zernio-sdk/models/create_standalone_ad_request.rb +98 -4
  35. data/lib/zernio-sdk/models/ctwa_ad_request_body.rb +10 -1
  36. data/lib/zernio-sdk/models/get_ad_comments200_response_meta.rb +36 -46
  37. data/lib/zernio-sdk/models/get_ios_fourteen_campaign_limits200_response.rb +164 -0
  38. data/lib/zernio-sdk/models/get_ios_fourteen_campaign_limits200_response_limits.rb +172 -0
  39. data/lib/zernio-sdk/models/hide_ad_comment200_response.rb +225 -0
  40. data/lib/zernio-sdk/models/hide_ad_comment_request.rb +165 -0
  41. data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response.rb +220 -0
  42. data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response_accounts_inner.rb +287 -0
  43. data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response_pages_inner.rb +210 -0
  44. data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response_resolved.rb +211 -0
  45. data/lib/zernio-sdk/models/list_advertisable_applications200_response.rb +166 -0
  46. data/lib/zernio-sdk/models/list_advertisable_applications200_response_applications_inner.rb +250 -0
  47. data/lib/zernio-sdk/models/meta_instagram_identity_ref.rb +202 -0
  48. data/lib/zernio-sdk/models/reply_to_ad_comment200_response.rb +215 -0
  49. data/lib/zernio-sdk/models/reply_to_ad_comment_request.rb +174 -0
  50. data/lib/zernio-sdk/models/targeting_spec.rb +63 -1
  51. data/lib/zernio-sdk/version.rb +1 -1
  52. data/lib/zernio-sdk.rb +15 -2
  53. data/openapi.yaml +618 -143
  54. data/spec/api/ad_accounts_api_spec.rb +91 -2
  55. data/spec/api/ad_campaigns_api_spec.rb +1 -1
  56. data/spec/models/{create_standalone_ad_request_tracking_spec.rb → ad_tracking_spec.rb} +6 -6
  57. data/spec/models/create_ad_campaign200_response_spec.rb +68 -0
  58. data/spec/models/create_ad_campaign_request_spec.rb +28 -0
  59. data/spec/models/create_call_ad_request_spec.rb +6 -0
  60. data/spec/models/create_messaging_ad_request_spec.rb +6 -0
  61. data/spec/models/create_standalone_ad_request_spec.rb +28 -0
  62. data/spec/models/ctwa_ad_request_body_spec.rb +6 -0
  63. data/spec/models/get_ad_comments200_response_meta_spec.rb +19 -1
  64. data/spec/models/get_ios_fourteen_campaign_limits200_response_limits_spec.rb +48 -0
  65. data/spec/models/get_ios_fourteen_campaign_limits200_response_spec.rb +36 -0
  66. data/spec/models/hide_ad_comment200_response_spec.rb +52 -0
  67. data/spec/models/hide_ad_comment_request_spec.rb +36 -0
  68. data/spec/models/list_ads_instagram_accounts200_response_accounts_inner_spec.rb +64 -0
  69. data/spec/models/list_ads_instagram_accounts200_response_pages_inner_spec.rb +54 -0
  70. data/spec/models/list_ads_instagram_accounts200_response_resolved_spec.rb +52 -0
  71. data/spec/models/list_ads_instagram_accounts200_response_spec.rb +48 -0
  72. data/spec/models/list_advertisable_applications200_response_applications_inner_spec.rb +54 -0
  73. data/spec/models/list_advertisable_applications200_response_spec.rb +36 -0
  74. data/spec/models/meta_instagram_identity_ref_spec.rb +48 -0
  75. data/spec/models/reply_to_ad_comment200_response_spec.rb +46 -0
  76. data/spec/models/reply_to_ad_comment_request_spec.rb +36 -0
  77. data/spec/models/targeting_spec_spec.rb +12 -0
  78. data/zernio-sdk-0.0.900.gem +0 -0
  79. metadata +62 -10
  80. data/docs/CreateStandaloneAdRequestPromotedObject.md +0 -38
  81. data/docs/CreateStandaloneAdRequestTracking.md +0 -20
  82. data/lib/zernio-sdk/models/create_standalone_ad_request_promoted_object.rb +0 -249
  83. data/spec/models/create_standalone_ad_request_promoted_object_spec.rb +0 -96
  84. data/zernio-sdk-0.0.899.gem +0 -0
@@ -365,6 +365,86 @@ module Zernio
365
365
  return data, status_code, headers
366
366
  end
367
367
 
368
+ # Delete an ad comment
369
+ # 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.
370
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
371
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
372
+ # @param [Hash] opts the optional parameters
373
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
374
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
375
+ # @return [ReplyToAdComment200Response]
376
+ def delete_ad_comment(ad_id, comment_id, opts = {})
377
+ data, _status_code, _headers = delete_ad_comment_with_http_info(ad_id, comment_id, opts)
378
+ data
379
+ end
380
+
381
+ # Delete an ad comment
382
+ # 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.
383
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
384
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
385
+ # @param [Hash] opts the optional parameters
386
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
387
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
388
+ # @return [Array<(ReplyToAdComment200Response, Integer, Hash)>] ReplyToAdComment200Response data, response status code and response headers
389
+ def delete_ad_comment_with_http_info(ad_id, comment_id, opts = {})
390
+ if @api_client.config.debugging
391
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.delete_ad_comment ...'
392
+ end
393
+ # verify the required parameter 'ad_id' is set
394
+ if @api_client.config.client_side_validation && ad_id.nil?
395
+ fail ArgumentError, "Missing the required parameter 'ad_id' when calling AdAccountsApi.delete_ad_comment"
396
+ end
397
+ # verify the required parameter 'comment_id' is set
398
+ if @api_client.config.client_side_validation && comment_id.nil?
399
+ fail ArgumentError, "Missing the required parameter 'comment_id' when calling AdAccountsApi.delete_ad_comment"
400
+ end
401
+ pattern = Regexp.new(/^\d+$/)
402
+ if @api_client.config.client_side_validation && comment_id !~ pattern
403
+ fail ArgumentError, "invalid value for 'comment_id' when calling AdAccountsApi.delete_ad_comment, must conform to the pattern #{pattern}."
404
+ end
405
+
406
+ # resource path
407
+ local_var_path = '/v1/ads/{adId}/comments/{commentId}'.sub('{' + 'adId' + '}', CGI.escape(ad_id.to_s)).sub('{' + 'commentId' + '}', CGI.escape(comment_id.to_s))
408
+
409
+ # query parameters
410
+ query_params = opts[:query_params] || {}
411
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
412
+ query_params[:'until'] = opts[:'_until'] if !opts[:'_until'].nil?
413
+
414
+ # header parameters
415
+ header_params = opts[:header_params] || {}
416
+ # HTTP header 'Accept' (if needed)
417
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
418
+
419
+ # form parameters
420
+ form_params = opts[:form_params] || {}
421
+
422
+ # http body (model)
423
+ post_body = opts[:debug_body]
424
+
425
+ # return_type
426
+ return_type = opts[:debug_return_type] || 'ReplyToAdComment200Response'
427
+
428
+ # auth_names
429
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
430
+
431
+ new_options = opts.merge(
432
+ :operation => :"AdAccountsApi.delete_ad_comment",
433
+ :header_params => header_params,
434
+ :query_params => query_params,
435
+ :form_params => form_params,
436
+ :body => post_body,
437
+ :auth_names => auth_names,
438
+ :return_type => return_type
439
+ )
440
+
441
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
442
+ if @api_client.config.debugging
443
+ @api_client.config.logger.debug "API called: AdAccountsApi#delete_ad_comment\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
444
+ end
445
+ return data, status_code, headers
446
+ end
447
+
368
448
  # Delete a negative keyword list
369
449
  # 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
450
  # @param list_id [String]
@@ -602,11 +682,13 @@ module Zernio
602
682
  end
603
683
 
604
684
  # 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).
685
+ # 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.
686
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad/post ID.
607
687
  # @param [Hash] opts the optional parameters
608
688
  # @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
689
  # @option opts [Integer] :limit (default to 25)
690
+ # @option opts [Date] :since TikTok-only start date. Defaults to 30 days before until. Maximum window is 30 days.
691
+ # @option opts [Date] :_until TikTok-only end date. Defaults to today in UTC.
610
692
  # @option opts [String] :cursor Pagination cursor from a previous response.
611
693
  # @return [GetAdComments200Response]
612
694
  def get_ad_comments(ad_id, opts = {})
@@ -615,11 +697,13 @@ module Zernio
615
697
  end
616
698
 
617
699
  # 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).
700
+ # 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.
701
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad/post ID.
620
702
  # @param [Hash] opts the optional parameters
621
703
  # @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
704
  # @option opts [Integer] :limit (default to 25)
705
+ # @option opts [Date] :since TikTok-only start date. Defaults to 30 days before until. Maximum window is 30 days.
706
+ # @option opts [Date] :_until TikTok-only end date. Defaults to today in UTC.
623
707
  # @option opts [String] :cursor Pagination cursor from a previous response.
624
708
  # @return [Array<(GetAdComments200Response, Integer, Hash)>] GetAdComments200Response data, response status code and response headers
625
709
  def get_ad_comments_with_http_info(ad_id, opts = {})
@@ -649,6 +733,8 @@ module Zernio
649
733
  query_params = opts[:query_params] || {}
650
734
  query_params[:'placement'] = opts[:'placement'] if !opts[:'placement'].nil?
651
735
  query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
736
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
737
+ query_params[:'until'] = opts[:'_until'] if !opts[:'_until'].nil?
652
738
  query_params[:'cursor'] = opts[:'cursor'] if !opts[:'cursor'].nil?
653
739
 
654
740
  # header parameters
@@ -1016,6 +1102,94 @@ module Zernio
1016
1102
  return data, status_code, headers
1017
1103
  end
1018
1104
 
1105
+ # Get iOS 14 campaign limits
1106
+ # 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.
1107
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
1108
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1109
+ # @param application_id [String] Meta application ID from advertisable-applications.
1110
+ # @param [Hash] opts the optional parameters
1111
+ # @return [GetIosFourteenCampaignLimits200Response]
1112
+ def get_ios_fourteen_campaign_limits(account_id, ad_account_id, application_id, opts = {})
1113
+ data, _status_code, _headers = get_ios_fourteen_campaign_limits_with_http_info(account_id, ad_account_id, application_id, opts)
1114
+ data
1115
+ end
1116
+
1117
+ # Get iOS 14 campaign limits
1118
+ # 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.
1119
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
1120
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1121
+ # @param application_id [String] Meta application ID from advertisable-applications.
1122
+ # @param [Hash] opts the optional parameters
1123
+ # @return [Array<(GetIosFourteenCampaignLimits200Response, Integer, Hash)>] GetIosFourteenCampaignLimits200Response data, response status code and response headers
1124
+ def get_ios_fourteen_campaign_limits_with_http_info(account_id, ad_account_id, application_id, opts = {})
1125
+ if @api_client.config.debugging
1126
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.get_ios_fourteen_campaign_limits ...'
1127
+ end
1128
+ # verify the required parameter 'account_id' is set
1129
+ if @api_client.config.client_side_validation && account_id.nil?
1130
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits"
1131
+ end
1132
+ # verify the required parameter 'ad_account_id' is set
1133
+ if @api_client.config.client_side_validation && ad_account_id.nil?
1134
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits"
1135
+ end
1136
+ pattern = Regexp.new(/^act_[0-9]+$/)
1137
+ if @api_client.config.client_side_validation && ad_account_id !~ pattern
1138
+ fail ArgumentError, "invalid value for 'ad_account_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits, must conform to the pattern #{pattern}."
1139
+ end
1140
+
1141
+ # verify the required parameter 'application_id' is set
1142
+ if @api_client.config.client_side_validation && application_id.nil?
1143
+ fail ArgumentError, "Missing the required parameter 'application_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits"
1144
+ end
1145
+ pattern = Regexp.new(/^[0-9]+$/)
1146
+ if @api_client.config.client_side_validation && application_id !~ pattern
1147
+ fail ArgumentError, "invalid value for 'application_id' when calling AdAccountsApi.get_ios_fourteen_campaign_limits, must conform to the pattern #{pattern}."
1148
+ end
1149
+
1150
+ # resource path
1151
+ local_var_path = '/v1/ads/ios-fourteen-campaign-limits'
1152
+
1153
+ # query parameters
1154
+ query_params = opts[:query_params] || {}
1155
+ query_params[:'accountId'] = account_id
1156
+ query_params[:'adAccountId'] = ad_account_id
1157
+ query_params[:'applicationId'] = application_id
1158
+
1159
+ # header parameters
1160
+ header_params = opts[:header_params] || {}
1161
+ # HTTP header 'Accept' (if needed)
1162
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
1163
+
1164
+ # form parameters
1165
+ form_params = opts[:form_params] || {}
1166
+
1167
+ # http body (model)
1168
+ post_body = opts[:debug_body]
1169
+
1170
+ # return_type
1171
+ return_type = opts[:debug_return_type] || 'GetIosFourteenCampaignLimits200Response'
1172
+
1173
+ # auth_names
1174
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
1175
+
1176
+ new_options = opts.merge(
1177
+ :operation => :"AdAccountsApi.get_ios_fourteen_campaign_limits",
1178
+ :header_params => header_params,
1179
+ :query_params => query_params,
1180
+ :form_params => form_params,
1181
+ :body => post_body,
1182
+ :auth_names => auth_names,
1183
+ :return_type => return_type
1184
+ )
1185
+
1186
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1187
+ if @api_client.config.debugging
1188
+ @api_client.config.logger.debug "API called: AdAccountsApi#get_ios_fourteen_campaign_limits\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1189
+ end
1190
+ return data, status_code, headers
1191
+ end
1192
+
1019
1193
  # Read a value rule set
1020
1194
  # 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
1195
  # @param value_rule_set_id [String] Platform value rule set id.
@@ -1086,6 +1260,97 @@ module Zernio
1086
1260
  return data, status_code, headers
1087
1261
  end
1088
1262
 
1263
+ # Hide or unhide an ad comment
1264
+ # 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.
1265
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
1266
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
1267
+ # @param hide_ad_comment_request [HideAdCommentRequest]
1268
+ # @param [Hash] opts the optional parameters
1269
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
1270
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
1271
+ # @return [HideAdComment200Response]
1272
+ def hide_ad_comment(ad_id, comment_id, hide_ad_comment_request, opts = {})
1273
+ data, _status_code, _headers = hide_ad_comment_with_http_info(ad_id, comment_id, hide_ad_comment_request, opts)
1274
+ data
1275
+ end
1276
+
1277
+ # Hide or unhide an ad comment
1278
+ # 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.
1279
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
1280
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
1281
+ # @param hide_ad_comment_request [HideAdCommentRequest]
1282
+ # @param [Hash] opts the optional parameters
1283
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
1284
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
1285
+ # @return [Array<(HideAdComment200Response, Integer, Hash)>] HideAdComment200Response data, response status code and response headers
1286
+ def hide_ad_comment_with_http_info(ad_id, comment_id, hide_ad_comment_request, opts = {})
1287
+ if @api_client.config.debugging
1288
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.hide_ad_comment ...'
1289
+ end
1290
+ # verify the required parameter 'ad_id' is set
1291
+ if @api_client.config.client_side_validation && ad_id.nil?
1292
+ fail ArgumentError, "Missing the required parameter 'ad_id' when calling AdAccountsApi.hide_ad_comment"
1293
+ end
1294
+ # verify the required parameter 'comment_id' is set
1295
+ if @api_client.config.client_side_validation && comment_id.nil?
1296
+ fail ArgumentError, "Missing the required parameter 'comment_id' when calling AdAccountsApi.hide_ad_comment"
1297
+ end
1298
+ pattern = Regexp.new(/^\d+$/)
1299
+ if @api_client.config.client_side_validation && comment_id !~ pattern
1300
+ fail ArgumentError, "invalid value for 'comment_id' when calling AdAccountsApi.hide_ad_comment, must conform to the pattern #{pattern}."
1301
+ end
1302
+
1303
+ # verify the required parameter 'hide_ad_comment_request' is set
1304
+ if @api_client.config.client_side_validation && hide_ad_comment_request.nil?
1305
+ fail ArgumentError, "Missing the required parameter 'hide_ad_comment_request' when calling AdAccountsApi.hide_ad_comment"
1306
+ end
1307
+ # resource path
1308
+ 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))
1309
+
1310
+ # query parameters
1311
+ query_params = opts[:query_params] || {}
1312
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
1313
+ query_params[:'until'] = opts[:'_until'] if !opts[:'_until'].nil?
1314
+
1315
+ # header parameters
1316
+ header_params = opts[:header_params] || {}
1317
+ # HTTP header 'Accept' (if needed)
1318
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
1319
+ # HTTP header 'Content-Type'
1320
+ content_type = @api_client.select_header_content_type(['application/json'])
1321
+ if !content_type.nil?
1322
+ header_params['Content-Type'] = content_type
1323
+ end
1324
+
1325
+ # form parameters
1326
+ form_params = opts[:form_params] || {}
1327
+
1328
+ # http body (model)
1329
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(hide_ad_comment_request)
1330
+
1331
+ # return_type
1332
+ return_type = opts[:debug_return_type] || 'HideAdComment200Response'
1333
+
1334
+ # auth_names
1335
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
1336
+
1337
+ new_options = opts.merge(
1338
+ :operation => :"AdAccountsApi.hide_ad_comment",
1339
+ :header_params => header_params,
1340
+ :query_params => query_params,
1341
+ :form_params => form_params,
1342
+ :body => post_body,
1343
+ :auth_names => auth_names,
1344
+ :return_type => return_type
1345
+ )
1346
+
1347
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
1348
+ if @api_client.config.debugging
1349
+ @api_client.config.logger.debug "API called: AdAccountsApi#hide_ad_comment\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1350
+ end
1351
+ return data, status_code, headers
1352
+ end
1353
+
1089
1354
  # List account-level callout extensions
1090
1355
  # 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
1356
  # @param account_id [String] Google ads SocialAccount id.
@@ -1552,6 +1817,158 @@ module Zernio
1552
1817
  return data, status_code, headers
1553
1818
  end
1554
1819
 
1820
+ # List Instagram ad identities
1821
+ # 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.
1822
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
1823
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1824
+ # @param [Hash] opts the optional parameters
1825
+ # @return [ListAdsInstagramAccounts200Response]
1826
+ def list_ads_instagram_accounts(account_id, ad_account_id, opts = {})
1827
+ data, _status_code, _headers = list_ads_instagram_accounts_with_http_info(account_id, ad_account_id, opts)
1828
+ data
1829
+ end
1830
+
1831
+ # List Instagram ad identities
1832
+ # 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.
1833
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
1834
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1835
+ # @param [Hash] opts the optional parameters
1836
+ # @return [Array<(ListAdsInstagramAccounts200Response, Integer, Hash)>] ListAdsInstagramAccounts200Response data, response status code and response headers
1837
+ def list_ads_instagram_accounts_with_http_info(account_id, ad_account_id, opts = {})
1838
+ if @api_client.config.debugging
1839
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_ads_instagram_accounts ...'
1840
+ end
1841
+ # verify the required parameter 'account_id' is set
1842
+ if @api_client.config.client_side_validation && account_id.nil?
1843
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_ads_instagram_accounts"
1844
+ end
1845
+ # verify the required parameter 'ad_account_id' is set
1846
+ if @api_client.config.client_side_validation && ad_account_id.nil?
1847
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_ads_instagram_accounts"
1848
+ end
1849
+ pattern = Regexp.new(/^act_[0-9]+$/)
1850
+ if @api_client.config.client_side_validation && ad_account_id !~ pattern
1851
+ fail ArgumentError, "invalid value for 'ad_account_id' when calling AdAccountsApi.list_ads_instagram_accounts, must conform to the pattern #{pattern}."
1852
+ end
1853
+
1854
+ # resource path
1855
+ local_var_path = '/v1/ads/instagram-accounts'
1856
+
1857
+ # query parameters
1858
+ query_params = opts[:query_params] || {}
1859
+ query_params[:'accountId'] = account_id
1860
+ query_params[:'adAccountId'] = ad_account_id
1861
+
1862
+ # header parameters
1863
+ header_params = opts[:header_params] || {}
1864
+ # HTTP header 'Accept' (if needed)
1865
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
1866
+
1867
+ # form parameters
1868
+ form_params = opts[:form_params] || {}
1869
+
1870
+ # http body (model)
1871
+ post_body = opts[:debug_body]
1872
+
1873
+ # return_type
1874
+ return_type = opts[:debug_return_type] || 'ListAdsInstagramAccounts200Response'
1875
+
1876
+ # auth_names
1877
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
1878
+
1879
+ new_options = opts.merge(
1880
+ :operation => :"AdAccountsApi.list_ads_instagram_accounts",
1881
+ :header_params => header_params,
1882
+ :query_params => query_params,
1883
+ :form_params => form_params,
1884
+ :body => post_body,
1885
+ :auth_names => auth_names,
1886
+ :return_type => return_type
1887
+ )
1888
+
1889
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1890
+ if @api_client.config.debugging
1891
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_ads_instagram_accounts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1892
+ end
1893
+ return data, status_code, headers
1894
+ end
1895
+
1896
+ # List advertisable apps
1897
+ # 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.
1898
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
1899
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1900
+ # @param [Hash] opts the optional parameters
1901
+ # @return [ListAdvertisableApplications200Response]
1902
+ def list_advertisable_applications(account_id, ad_account_id, opts = {})
1903
+ data, _status_code, _headers = list_advertisable_applications_with_http_info(account_id, ad_account_id, opts)
1904
+ data
1905
+ end
1906
+
1907
+ # List advertisable apps
1908
+ # 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.
1909
+ # @param account_id [String] Zernio Meta Ads or Facebook SocialAccount ID.
1910
+ # @param ad_account_id [String] Meta ad account ID including the act_ prefix.
1911
+ # @param [Hash] opts the optional parameters
1912
+ # @return [Array<(ListAdvertisableApplications200Response, Integer, Hash)>] ListAdvertisableApplications200Response data, response status code and response headers
1913
+ def list_advertisable_applications_with_http_info(account_id, ad_account_id, opts = {})
1914
+ if @api_client.config.debugging
1915
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.list_advertisable_applications ...'
1916
+ end
1917
+ # verify the required parameter 'account_id' is set
1918
+ if @api_client.config.client_side_validation && account_id.nil?
1919
+ fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_advertisable_applications"
1920
+ end
1921
+ # verify the required parameter 'ad_account_id' is set
1922
+ if @api_client.config.client_side_validation && ad_account_id.nil?
1923
+ fail ArgumentError, "Missing the required parameter 'ad_account_id' when calling AdAccountsApi.list_advertisable_applications"
1924
+ end
1925
+ pattern = Regexp.new(/^act_[0-9]+$/)
1926
+ if @api_client.config.client_side_validation && ad_account_id !~ pattern
1927
+ fail ArgumentError, "invalid value for 'ad_account_id' when calling AdAccountsApi.list_advertisable_applications, must conform to the pattern #{pattern}."
1928
+ end
1929
+
1930
+ # resource path
1931
+ local_var_path = '/v1/ads/advertisable-applications'
1932
+
1933
+ # query parameters
1934
+ query_params = opts[:query_params] || {}
1935
+ query_params[:'accountId'] = account_id
1936
+ query_params[:'adAccountId'] = ad_account_id
1937
+
1938
+ # header parameters
1939
+ header_params = opts[:header_params] || {}
1940
+ # HTTP header 'Accept' (if needed)
1941
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
1942
+
1943
+ # form parameters
1944
+ form_params = opts[:form_params] || {}
1945
+
1946
+ # http body (model)
1947
+ post_body = opts[:debug_body]
1948
+
1949
+ # return_type
1950
+ return_type = opts[:debug_return_type] || 'ListAdvertisableApplications200Response'
1951
+
1952
+ # auth_names
1953
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
1954
+
1955
+ new_options = opts.merge(
1956
+ :operation => :"AdAccountsApi.list_advertisable_applications",
1957
+ :header_params => header_params,
1958
+ :query_params => query_params,
1959
+ :form_params => form_params,
1960
+ :body => post_body,
1961
+ :auth_names => auth_names,
1962
+ :return_type => return_type
1963
+ )
1964
+
1965
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
1966
+ if @api_client.config.debugging
1967
+ @api_client.config.logger.debug "API called: AdAccountsApi#list_advertisable_applications\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1968
+ end
1969
+ return data, status_code, headers
1970
+ end
1971
+
1555
1972
  # List custom conversions
1556
1973
  # The ad account's Meta custom conversions, including archived ones (`isArchived`).
1557
1974
  # @param account_id [String] Meta ads SocialAccount id.
@@ -2016,6 +2433,97 @@ module Zernio
2016
2433
  return data, status_code, headers
2017
2434
  end
2018
2435
 
2436
+ # Reply to an ad comment
2437
+ # 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.
2438
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
2439
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
2440
+ # @param reply_to_ad_comment_request [ReplyToAdCommentRequest]
2441
+ # @param [Hash] opts the optional parameters
2442
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
2443
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
2444
+ # @return [ReplyToAdComment200Response]
2445
+ def reply_to_ad_comment(ad_id, comment_id, reply_to_ad_comment_request, opts = {})
2446
+ data, _status_code, _headers = reply_to_ad_comment_with_http_info(ad_id, comment_id, reply_to_ad_comment_request, opts)
2447
+ data
2448
+ end
2449
+
2450
+ # Reply to an ad comment
2451
+ # 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.
2452
+ # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
2453
+ # @param comment_id [String] TikTok comment ID from the ad comment listing.
2454
+ # @param reply_to_ad_comment_request [ReplyToAdCommentRequest]
2455
+ # @param [Hash] opts the optional parameters
2456
+ # @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
2457
+ # @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
2458
+ # @return [Array<(ReplyToAdComment200Response, Integer, Hash)>] ReplyToAdComment200Response data, response status code and response headers
2459
+ def reply_to_ad_comment_with_http_info(ad_id, comment_id, reply_to_ad_comment_request, opts = {})
2460
+ if @api_client.config.debugging
2461
+ @api_client.config.logger.debug 'Calling API: AdAccountsApi.reply_to_ad_comment ...'
2462
+ end
2463
+ # verify the required parameter 'ad_id' is set
2464
+ if @api_client.config.client_side_validation && ad_id.nil?
2465
+ fail ArgumentError, "Missing the required parameter 'ad_id' when calling AdAccountsApi.reply_to_ad_comment"
2466
+ end
2467
+ # verify the required parameter 'comment_id' is set
2468
+ if @api_client.config.client_side_validation && comment_id.nil?
2469
+ fail ArgumentError, "Missing the required parameter 'comment_id' when calling AdAccountsApi.reply_to_ad_comment"
2470
+ end
2471
+ pattern = Regexp.new(/^\d+$/)
2472
+ if @api_client.config.client_side_validation && comment_id !~ pattern
2473
+ fail ArgumentError, "invalid value for 'comment_id' when calling AdAccountsApi.reply_to_ad_comment, must conform to the pattern #{pattern}."
2474
+ end
2475
+
2476
+ # verify the required parameter 'reply_to_ad_comment_request' is set
2477
+ if @api_client.config.client_side_validation && reply_to_ad_comment_request.nil?
2478
+ fail ArgumentError, "Missing the required parameter 'reply_to_ad_comment_request' when calling AdAccountsApi.reply_to_ad_comment"
2479
+ end
2480
+ # resource path
2481
+ 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))
2482
+
2483
+ # query parameters
2484
+ query_params = opts[:query_params] || {}
2485
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
2486
+ query_params[:'until'] = opts[:'_until'] if !opts[:'_until'].nil?
2487
+
2488
+ # header parameters
2489
+ header_params = opts[:header_params] || {}
2490
+ # HTTP header 'Accept' (if needed)
2491
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
2492
+ # HTTP header 'Content-Type'
2493
+ content_type = @api_client.select_header_content_type(['application/json'])
2494
+ if !content_type.nil?
2495
+ header_params['Content-Type'] = content_type
2496
+ end
2497
+
2498
+ # form parameters
2499
+ form_params = opts[:form_params] || {}
2500
+
2501
+ # http body (model)
2502
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(reply_to_ad_comment_request)
2503
+
2504
+ # return_type
2505
+ return_type = opts[:debug_return_type] || 'ReplyToAdComment200Response'
2506
+
2507
+ # auth_names
2508
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
2509
+
2510
+ new_options = opts.merge(
2511
+ :operation => :"AdAccountsApi.reply_to_ad_comment",
2512
+ :header_params => header_params,
2513
+ :query_params => query_params,
2514
+ :form_params => form_params,
2515
+ :body => post_body,
2516
+ :auth_names => auth_names,
2517
+ :return_type => return_type
2518
+ )
2519
+
2520
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
2521
+ if @api_client.config.debugging
2522
+ @api_client.config.logger.debug "API called: AdAccountsApi#reply_to_ad_comment\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
2523
+ end
2524
+ return data, status_code, headers
2525
+ end
2526
+
2019
2527
  # Update ad account settings
2020
2528
  # Sets the default DSA beneficiary and payor on a Meta ad account (EU DSA, Article 26). Set them once and every EU-targeted call to `/v1/ads/create`, `/v1/ads/boost` and `/v1/ads/ctwa` on that ad account can omit `dsaBeneficiary`/`dsaPayor`: Meta applies the defaults automatically. The values are written to the ad account on Meta, the same setting Ads Manager edits. Nothing is stored in Zernio, and defaults already set in Ads Manager work identically. Zernio never guesses these values for you. Beneficiary and payor are legal disclosures shown to EU users, so you must provide the entity names explicitly. Use `GET /v1/ads/dsa-recommendations` to offer suggestions in your UI. If `defaultDsaPayor` is omitted, the beneficiary is also set as the payor, which covers the common case where the same entity benefits from and pays for the ads. Read the current values back with `GET /v1/ads/dsa-defaults`. Currently supported for Meta accounts only; other platforms return 400.
2021
2529
  # @param update_ad_account_request [UpdateAdAccountRequest]
@@ -309,7 +309,7 @@ module Zernio
309
309
  # @param create_ad_campaign_request [CreateAdCampaignRequest]
310
310
  # @param [Hash] opts the optional parameters
311
311
  # @option opts [String] :idempotency_key Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409. Only 2xx responses are stored, so a request that failed with a 4xx can be retried with a corrected body under the SAME key.
312
- # @return [CreateAdCampaign201Response]
312
+ # @return [CreateAdCampaign200Response]
313
313
  def create_ad_campaign(create_ad_campaign_request, opts = {})
314
314
  data, _status_code, _headers = create_ad_campaign_with_http_info(create_ad_campaign_request, opts)
315
315
  data
@@ -320,7 +320,7 @@ module Zernio
320
320
  # @param create_ad_campaign_request [CreateAdCampaignRequest]
321
321
  # @param [Hash] opts the optional parameters
322
322
  # @option opts [String] :idempotency_key Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409. Only 2xx responses are stored, so a request that failed with a 4xx can be retried with a corrected body under the SAME key.
323
- # @return [Array<(CreateAdCampaign201Response, Integer, Hash)>] CreateAdCampaign201Response data, response status code and response headers
323
+ # @return [Array<(CreateAdCampaign200Response, Integer, Hash)>] CreateAdCampaign200Response data, response status code and response headers
324
324
  def create_ad_campaign_with_http_info(create_ad_campaign_request, opts = {})
325
325
  if @api_client.config.debugging
326
326
  @api_client.config.logger.debug 'Calling API: AdCampaignsApi.create_ad_campaign ...'
@@ -357,7 +357,7 @@ module Zernio
357
357
  post_body = opts[:debug_body] || @api_client.object_to_http_body(create_ad_campaign_request)
358
358
 
359
359
  # return_type
360
- return_type = opts[:debug_return_type] || 'CreateAdCampaign201Response'
360
+ return_type = opts[:debug_return_type] || 'CreateAdCampaign200Response'
361
361
 
362
362
  # auth_names
363
363
  auth_names = opts[:debug_auth_names] || ['bearerAuth']