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.
- checksums.yaml +4 -4
- data/README.md +21 -2
- data/docs/AdAccountsApi.md +463 -3
- data/docs/AdCampaignsApi.md +4 -4
- data/docs/AdTracking.md +20 -0
- data/docs/CreateAdCampaign200Response.md +26 -0
- data/docs/CreateAdCampaignRequest.md +8 -0
- data/docs/CreateCallAdRequest.md +2 -0
- data/docs/CreateMessagingAdRequest.md +2 -0
- data/docs/CreateStandaloneAdRequest.md +11 -3
- data/docs/CtwaAdRequestBody.md +2 -0
- data/docs/GetAdComments200ResponseMeta.md +10 -4
- data/docs/GetIosFourteenCampaignLimits200Response.md +18 -0
- data/docs/GetIosFourteenCampaignLimits200ResponseLimits.md +22 -0
- data/docs/HideAdComment200Response.md +22 -0
- data/docs/HideAdCommentRequest.md +18 -0
- data/docs/ListAdsInstagramAccounts200Response.md +22 -0
- data/docs/ListAdsInstagramAccounts200ResponseAccountsInner.md +26 -0
- data/docs/ListAdsInstagramAccounts200ResponsePagesInner.md +24 -0
- data/docs/ListAdsInstagramAccounts200ResponseResolved.md +22 -0
- data/docs/ListAdvertisableApplications200Response.md +18 -0
- data/docs/ListAdvertisableApplications200ResponseApplicationsInner.md +24 -0
- data/docs/MetaInstagramIdentityRef.md +22 -0
- data/docs/ReplyToAdComment200Response.md +20 -0
- data/docs/ReplyToAdCommentRequest.md +18 -0
- data/docs/TargetingSpec.md +4 -0
- data/lib/zernio-sdk/api/ad_accounts_api.rb +512 -4
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +3 -3
- data/lib/zernio-sdk/models/{create_standalone_ad_request_tracking.rb → ad_tracking.rb} +5 -5
- data/lib/zernio-sdk/models/create_ad_campaign200_response.rb +231 -0
- data/lib/zernio-sdk/models/create_ad_campaign_request.rb +52 -1
- data/lib/zernio-sdk/models/create_call_ad_request.rb +10 -1
- data/lib/zernio-sdk/models/create_messaging_ad_request.rb +10 -1
- data/lib/zernio-sdk/models/create_standalone_ad_request.rb +98 -4
- data/lib/zernio-sdk/models/ctwa_ad_request_body.rb +10 -1
- data/lib/zernio-sdk/models/get_ad_comments200_response_meta.rb +36 -46
- data/lib/zernio-sdk/models/get_ios_fourteen_campaign_limits200_response.rb +164 -0
- data/lib/zernio-sdk/models/get_ios_fourteen_campaign_limits200_response_limits.rb +172 -0
- data/lib/zernio-sdk/models/hide_ad_comment200_response.rb +225 -0
- data/lib/zernio-sdk/models/hide_ad_comment_request.rb +165 -0
- data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response.rb +220 -0
- data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response_accounts_inner.rb +287 -0
- data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response_pages_inner.rb +210 -0
- data/lib/zernio-sdk/models/list_ads_instagram_accounts200_response_resolved.rb +211 -0
- data/lib/zernio-sdk/models/list_advertisable_applications200_response.rb +166 -0
- data/lib/zernio-sdk/models/list_advertisable_applications200_response_applications_inner.rb +250 -0
- data/lib/zernio-sdk/models/meta_instagram_identity_ref.rb +202 -0
- data/lib/zernio-sdk/models/reply_to_ad_comment200_response.rb +215 -0
- data/lib/zernio-sdk/models/reply_to_ad_comment_request.rb +174 -0
- data/lib/zernio-sdk/models/targeting_spec.rb +63 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +15 -2
- data/openapi.yaml +618 -143
- data/spec/api/ad_accounts_api_spec.rb +91 -2
- data/spec/api/ad_campaigns_api_spec.rb +1 -1
- data/spec/models/{create_standalone_ad_request_tracking_spec.rb → ad_tracking_spec.rb} +6 -6
- data/spec/models/create_ad_campaign200_response_spec.rb +68 -0
- data/spec/models/create_ad_campaign_request_spec.rb +28 -0
- data/spec/models/create_call_ad_request_spec.rb +6 -0
- data/spec/models/create_messaging_ad_request_spec.rb +6 -0
- data/spec/models/create_standalone_ad_request_spec.rb +28 -0
- data/spec/models/ctwa_ad_request_body_spec.rb +6 -0
- data/spec/models/get_ad_comments200_response_meta_spec.rb +19 -1
- data/spec/models/get_ios_fourteen_campaign_limits200_response_limits_spec.rb +48 -0
- data/spec/models/get_ios_fourteen_campaign_limits200_response_spec.rb +36 -0
- data/spec/models/hide_ad_comment200_response_spec.rb +52 -0
- data/spec/models/hide_ad_comment_request_spec.rb +36 -0
- data/spec/models/list_ads_instagram_accounts200_response_accounts_inner_spec.rb +64 -0
- data/spec/models/list_ads_instagram_accounts200_response_pages_inner_spec.rb +54 -0
- data/spec/models/list_ads_instagram_accounts200_response_resolved_spec.rb +52 -0
- data/spec/models/list_ads_instagram_accounts200_response_spec.rb +48 -0
- data/spec/models/list_advertisable_applications200_response_applications_inner_spec.rb +54 -0
- data/spec/models/list_advertisable_applications200_response_spec.rb +36 -0
- data/spec/models/meta_instagram_identity_ref_spec.rb +48 -0
- data/spec/models/reply_to_ad_comment200_response_spec.rb +46 -0
- data/spec/models/reply_to_ad_comment_request_spec.rb +36 -0
- data/spec/models/targeting_spec_spec.rb +12 -0
- data/zernio-sdk-0.0.900.gem +0 -0
- metadata +62 -10
- data/docs/CreateStandaloneAdRequestPromotedObject.md +0 -38
- data/docs/CreateStandaloneAdRequestTracking.md +0 -20
- data/lib/zernio-sdk/models/create_standalone_ad_request_promoted_object.rb +0 -249
- data/spec/models/create_standalone_ad_request_promoted_object_spec.rb +0 -96
- 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
|
|
606
|
-
# @param ad_id [String] Internal Zernio ad ID
|
|
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'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
|
|
619
|
-
# @param ad_id [String] Internal Zernio ad ID
|
|
700
|
+
# 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.
|
|
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=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.
|
|
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'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.
|
|
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 [
|
|
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<(
|
|
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] || '
|
|
360
|
+
return_type = opts[:debug_return_type] || 'CreateAdCampaign200Response'
|
|
361
361
|
|
|
362
362
|
# auth_names
|
|
363
363
|
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|