late-sdk 0.0.899 → 0.0.901
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +81 -8
- data/docs/AdAccountsApi.md +1375 -277
- data/docs/AdCampaignsApi.md +525 -13
- data/docs/AdCreative.md +6 -0
- data/docs/AdTracking.md +20 -0
- data/docs/AddAccountCalloutsRequest.md +3 -3
- data/docs/AddAccountSitelinks201Response.md +20 -0
- data/docs/AddAccountSitelinks201ResponseSitelinksInner.md +26 -0
- data/docs/AddAccountSitelinksRequest.md +22 -0
- data/docs/AddAccountStructuredSnippets201Response.md +20 -0
- data/docs/AddAccountStructuredSnippets201ResponseStructuredSnippetsInner.md +22 -0
- data/docs/AddAccountStructuredSnippetsRequest.md +22 -0
- data/docs/AttachAdGroupAssets201Response.md +24 -0
- data/docs/AttachCampaignAssetsRequest.md +4 -4
- 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 +15 -7
- data/docs/CreateStandaloneAdRequestAdditionalDescriptionsInner.md +49 -0
- data/docs/CreateStandaloneAdRequestAdditionalHeadlinesInner.md +49 -0
- data/docs/CtwaAdRequestBody.md +2 -0
- data/docs/GetAd200Response.md +5 -1
- data/docs/GetAdComments200ResponseMeta.md +10 -4
- data/docs/GetIosFourteenCampaignLimits200Response.md +18 -0
- data/docs/GetIosFourteenCampaignLimits200ResponseLimits.md +22 -0
- data/docs/GoogleAssetUpdate.md +26 -0
- data/docs/GoogleRsaDescription.md +20 -0
- data/docs/GoogleRsaHeadline.md +20 -0
- data/docs/{AttachCampaignAssetsRequestSitelinksInner.md → GoogleSitelink.md} +2 -2
- data/docs/{AttachCampaignAssetsRequestStructuredSnippetsInner.md → GoogleStructuredSnippet.md} +2 -2
- data/docs/HideAdComment200Response.md +22 -0
- data/docs/HideAdCommentRequest.md +18 -0
- data/docs/ListAccountCallouts200Response.md +2 -2
- data/docs/ListAccountCallouts200ResponseCalloutsInner.md +3 -3
- data/docs/ListAccountSitelinks200Response.md +24 -0
- data/docs/ListAccountSitelinks200ResponseSitelinksInner.md +32 -0
- data/docs/ListAccountStructuredSnippets200Response.md +24 -0
- data/docs/ListAccountStructuredSnippets200ResponseStructuredSnippetsInner.md +28 -0
- data/docs/ListAdGroupAssets200Response.md +28 -0
- data/docs/ListAdGroupAssets200ResponseCalloutsInner.md +22 -0
- data/docs/ListAdGroupAssets200ResponseSitelinksInner.md +28 -0
- data/docs/ListAdGroupAssets200ResponseStructuredSnippetsInner.md +24 -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/ListCampaignAssets200Response.md +28 -0
- data/docs/ListCampaignAssets200ResponseCalloutsInner.md +22 -0
- data/docs/ListCampaignAssets200ResponseSitelinksInner.md +28 -0
- data/docs/ListCampaignAssets200ResponseStructuredSnippetsInner.md +24 -0
- data/docs/MetaInstagramIdentityRef.md +22 -0
- data/docs/RemoveAccountCalloutRequest.md +3 -3
- data/docs/RemoveAdGroupAssetsRequest.md +24 -0
- data/docs/RemoveCampaignAssets200Response.md +18 -0
- data/docs/RemoveCampaignAssetsRequest.md +24 -0
- data/docs/ReplyToAdComment200Response.md +20 -0
- data/docs/ReplyToAdCommentRequest.md +18 -0
- data/docs/TargetingSpec.md +4 -0
- data/docs/UpdateAccountCallouts200Response.md +20 -0
- data/docs/UpdateAccountCalloutsRequest.md +22 -0
- data/docs/UpdateAccountCalloutsRequestUpdatesInner.md +20 -0
- data/docs/UpdateAccountCalloutsRequestUpdatesInnerCalloutAsset.md +18 -0
- data/docs/UpdateAccountSitelinksRequest.md +22 -0
- data/docs/UpdateAccountSitelinksRequestUpdatesInner.md +22 -0
- data/docs/UpdateAccountSitelinksRequestUpdatesInnerSitelinkAsset.md +24 -0
- data/docs/UpdateAccountStructuredSnippetsRequest.md +22 -0
- data/docs/UpdateAccountStructuredSnippetsRequestUpdatesInner.md +20 -0
- data/docs/UpdateAdRequest.md +6 -0
- data/docs/UpdateCampaignAssets200Response.md +18 -0
- data/docs/UpdateCampaignAssetsRequest.md +22 -0
- data/lib/zernio-sdk/api/ad_accounts_api.rb +1511 -363
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +589 -13
- data/lib/zernio-sdk/models/ad_creative.rb +112 -1
- data/lib/zernio-sdk/models/{create_standalone_ad_request_tracking.rb → ad_tracking.rb} +5 -5
- data/lib/zernio-sdk/models/add_account_callouts_request.rb +34 -3
- data/lib/zernio-sdk/models/add_account_sitelinks201_response.rb +158 -0
- data/lib/zernio-sdk/models/add_account_sitelinks201_response_sitelinks_inner.rb +267 -0
- data/lib/zernio-sdk/models/add_account_sitelinks_request.rb +253 -0
- data/lib/zernio-sdk/models/add_account_structured_snippets201_response.rb +158 -0
- data/lib/zernio-sdk/models/add_account_structured_snippets201_response_structured_snippets_inner.rb +229 -0
- data/lib/zernio-sdk/models/add_account_structured_snippets_request.rb +253 -0
- data/lib/zernio-sdk/models/attach_ad_group_assets201_response.rb +180 -0
- data/lib/zernio-sdk/models/attach_campaign_assets_request.rb +37 -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 +102 -8
- data/lib/zernio-sdk/models/create_standalone_ad_request_additional_descriptions_inner.rb +104 -0
- data/lib/zernio-sdk/models/create_standalone_ad_request_additional_headlines_inner.rb +104 -0
- data/lib/zernio-sdk/models/ctwa_ad_request_body.rb +10 -1
- data/lib/zernio-sdk/models/get_ad200_response.rb +25 -4
- 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/google_asset_update.rb +234 -0
- data/lib/zernio-sdk/models/google_rsa_description.rb +226 -0
- data/lib/zernio-sdk/models/google_rsa_headline.rb +226 -0
- data/lib/zernio-sdk/models/{attach_campaign_assets_request_sitelinks_inner.rb → google_sitelink.rb} +3 -3
- data/lib/zernio-sdk/models/{attach_campaign_assets_request_structured_snippets_inner.rb → google_structured_snippet.rb} +3 -3
- 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_account_callouts200_response.rb +2 -2
- data/lib/zernio-sdk/models/list_account_callouts200_response_callouts_inner.rb +13 -14
- data/lib/zernio-sdk/models/list_account_sitelinks200_response.rb +179 -0
- data/lib/zernio-sdk/models/list_account_sitelinks200_response_sitelinks_inner.rb +210 -0
- data/lib/zernio-sdk/models/list_account_structured_snippets200_response.rb +179 -0
- data/lib/zernio-sdk/models/list_account_structured_snippets200_response_structured_snippets_inner.rb +194 -0
- data/lib/zernio-sdk/models/list_ad_group_assets200_response.rb +201 -0
- data/lib/zernio-sdk/models/list_ad_group_assets200_response_callouts_inner.rb +165 -0
- data/lib/zernio-sdk/models/list_ad_group_assets200_response_sitelinks_inner.rb +192 -0
- data/lib/zernio-sdk/models/list_ad_group_assets200_response_structured_snippets_inner.rb +176 -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/list_campaign_assets200_response.rb +201 -0
- data/lib/zernio-sdk/models/list_campaign_assets200_response_callouts_inner.rb +165 -0
- data/lib/zernio-sdk/models/list_campaign_assets200_response_sitelinks_inner.rb +192 -0
- data/lib/zernio-sdk/models/list_campaign_assets200_response_structured_snippets_inner.rb +176 -0
- data/lib/zernio-sdk/models/meta_instagram_identity_ref.rb +202 -0
- data/lib/zernio-sdk/models/remove_account_callout_request.rb +45 -3
- data/lib/zernio-sdk/models/remove_ad_group_assets_request.rb +281 -0
- data/lib/zernio-sdk/models/remove_campaign_assets200_response.rb +147 -0
- data/lib/zernio-sdk/models/remove_campaign_assets_request.rb +281 -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/models/update_account_callouts200_response.rb +156 -0
- data/lib/zernio-sdk/models/update_account_callouts_request.rb +253 -0
- data/lib/zernio-sdk/models/update_account_callouts_request_updates_inner.rb +186 -0
- data/lib/zernio-sdk/models/update_account_callouts_request_updates_inner_callout_asset.rb +182 -0
- data/lib/zernio-sdk/models/update_account_sitelinks_request.rb +253 -0
- data/lib/zernio-sdk/models/update_account_sitelinks_request_updates_inner.rb +216 -0
- data/lib/zernio-sdk/models/update_account_sitelinks_request_updates_inner_sitelink_asset.rb +241 -0
- data/lib/zernio-sdk/models/update_account_structured_snippets_request.rb +253 -0
- data/lib/zernio-sdk/models/update_account_structured_snippets_request_updates_inner.rb +186 -0
- data/lib/zernio-sdk/models/update_ad_request.rb +112 -1
- data/lib/zernio-sdk/models/update_campaign_assets200_response.rb +147 -0
- data/lib/zernio-sdk/models/update_campaign_assets_request.rb +253 -0
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +55 -4
- data/openapi.yaml +2898 -733
- data/spec/api/ad_accounts_api_spec.rb +209 -10
- data/spec/api/ad_campaigns_api_spec.rb +99 -6
- data/spec/models/ad_creative_spec.rb +18 -0
- data/spec/models/{create_standalone_ad_request_tracking_spec.rb → ad_tracking_spec.rb} +6 -6
- data/spec/models/add_account_sitelinks201_response_sitelinks_inner_spec.rb +60 -0
- data/spec/models/add_account_sitelinks201_response_spec.rb +42 -0
- data/spec/models/add_account_sitelinks_request_spec.rb +48 -0
- data/spec/models/add_account_structured_snippets201_response_spec.rb +42 -0
- data/spec/models/add_account_structured_snippets201_response_structured_snippets_inner_spec.rb +52 -0
- data/spec/models/add_account_structured_snippets_request_spec.rb +48 -0
- data/spec/models/attach_ad_group_assets201_response_spec.rb +54 -0
- 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_additional_descriptions_inner_spec.rb +32 -0
- data/spec/models/create_standalone_ad_request_additional_headlines_inner_spec.rb +32 -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_ad200_response_spec.rb +12 -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/google_asset_update_spec.rb +60 -0
- data/spec/models/google_rsa_description_spec.rb +46 -0
- data/spec/models/google_rsa_headline_spec.rb +46 -0
- data/spec/models/{attach_campaign_assets_request_sitelinks_inner_spec.rb → google_sitelink_spec.rb} +6 -6
- data/spec/models/{attach_campaign_assets_request_structured_snippets_inner_spec.rb → google_structured_snippet_spec.rb} +6 -6
- 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_account_callouts200_response_callouts_inner_spec.rb +2 -2
- data/spec/models/{create_standalone_ad_request_promoted_object_spec.rb → list_account_sitelinks200_response_sitelinks_inner_spec.rb} +14 -32
- data/spec/models/list_account_sitelinks200_response_spec.rb +54 -0
- data/spec/models/list_account_structured_snippets200_response_spec.rb +54 -0
- data/spec/models/list_account_structured_snippets200_response_structured_snippets_inner_spec.rb +66 -0
- data/spec/models/list_ad_group_assets200_response_callouts_inner_spec.rb +48 -0
- data/spec/models/list_ad_group_assets200_response_sitelinks_inner_spec.rb +66 -0
- data/spec/models/list_ad_group_assets200_response_spec.rb +66 -0
- data/spec/models/list_ad_group_assets200_response_structured_snippets_inner_spec.rb +54 -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/list_campaign_assets200_response_callouts_inner_spec.rb +48 -0
- data/spec/models/list_campaign_assets200_response_sitelinks_inner_spec.rb +66 -0
- data/spec/models/list_campaign_assets200_response_spec.rb +66 -0
- data/spec/models/list_campaign_assets200_response_structured_snippets_inner_spec.rb +54 -0
- data/spec/models/meta_instagram_identity_ref_spec.rb +48 -0
- data/spec/models/remove_ad_group_assets_request_spec.rb +54 -0
- data/spec/models/remove_campaign_assets200_response_spec.rb +36 -0
- data/spec/models/remove_campaign_assets_request_spec.rb +54 -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/spec/models/update_account_callouts200_response_spec.rb +42 -0
- data/spec/models/update_account_callouts_request_spec.rb +48 -0
- data/spec/models/update_account_callouts_request_updates_inner_callout_asset_spec.rb +36 -0
- data/spec/models/update_account_callouts_request_updates_inner_spec.rb +42 -0
- data/spec/models/update_account_sitelinks_request_spec.rb +48 -0
- data/spec/models/update_account_sitelinks_request_updates_inner_sitelink_asset_spec.rb +54 -0
- data/spec/models/update_account_sitelinks_request_updates_inner_spec.rb +48 -0
- data/spec/models/update_account_structured_snippets_request_spec.rb +48 -0
- data/spec/models/update_account_structured_snippets_request_updates_inner_spec.rb +42 -0
- data/spec/models/update_ad_request_spec.rb +18 -0
- data/spec/models/update_campaign_assets200_response_spec.rb +36 -0
- data/spec/models/update_campaign_assets_request_spec.rb +48 -0
- data/zernio-sdk-0.0.901.gem +0 -0
- metadata +222 -18
- 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/zernio-sdk-0.0.899.gem +0 -0
|
@@ -33,8 +33,8 @@ describe 'AdAccountsApi' do
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
# unit tests for add_account_callouts
|
|
36
|
-
# Add account
|
|
37
|
-
# Creates
|
|
36
|
+
# Add account callouts
|
|
37
|
+
# Creates assets and customer_asset links for this Google customer. Links apply at account level.
|
|
38
38
|
# @param add_account_callouts_request
|
|
39
39
|
# @param [Hash] opts the optional parameters
|
|
40
40
|
# @return [AddAccountCallouts201Response]
|
|
@@ -44,6 +44,30 @@ describe 'AdAccountsApi' do
|
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
+
# unit tests for add_account_sitelinks
|
|
48
|
+
# Add account sitelinks
|
|
49
|
+
# Creates assets and customer_asset links for this Google customer. Links apply at account level.
|
|
50
|
+
# @param add_account_sitelinks_request
|
|
51
|
+
# @param [Hash] opts the optional parameters
|
|
52
|
+
# @return [AddAccountSitelinks201Response]
|
|
53
|
+
describe 'add_account_sitelinks test' do
|
|
54
|
+
it 'should work' do
|
|
55
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# unit tests for add_account_structured_snippets
|
|
60
|
+
# Add account snippets
|
|
61
|
+
# Creates assets and customer_asset links for this Google customer. Links apply at account level.
|
|
62
|
+
# @param add_account_structured_snippets_request
|
|
63
|
+
# @param [Hash] opts the optional parameters
|
|
64
|
+
# @return [AddAccountStructuredSnippets201Response]
|
|
65
|
+
describe 'add_account_structured_snippets test' do
|
|
66
|
+
it 'should work' do
|
|
67
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
47
71
|
# unit tests for create_ad_negative_keyword_list
|
|
48
72
|
# Create a negative keyword list
|
|
49
73
|
# Creates one Google Ads shared negative keyword list with optional initial keywords in a single atomic mutation. Daily quota is reserved for every mutate item, so large batches may return 429 before any change. This operation is not idempotent. The list is not attached to any campaign.
|
|
@@ -93,6 +117,21 @@ describe 'AdAccountsApi' do
|
|
|
93
117
|
end
|
|
94
118
|
end
|
|
95
119
|
|
|
120
|
+
# unit tests for delete_ad_comment
|
|
121
|
+
# Delete an ad comment
|
|
122
|
+
# 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.
|
|
123
|
+
# @param ad_id Internal Zernio ad ID or indexed platform ad ID.
|
|
124
|
+
# @param comment_id TikTok comment ID from the ad comment listing.
|
|
125
|
+
# @param [Hash] opts the optional parameters
|
|
126
|
+
# @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
|
|
127
|
+
# @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
|
|
128
|
+
# @return [ReplyToAdComment200Response]
|
|
129
|
+
describe 'delete_ad_comment test' do
|
|
130
|
+
it 'should work' do
|
|
131
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
96
135
|
# unit tests for delete_ad_negative_keyword_list
|
|
97
136
|
# Delete a negative keyword list
|
|
98
137
|
# 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.
|
|
@@ -136,11 +175,13 @@ describe 'AdAccountsApi' do
|
|
|
136
175
|
|
|
137
176
|
# unit tests for get_ad_comments
|
|
138
177
|
# List comments on an ad
|
|
139
|
-
# 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
|
|
140
|
-
# @param ad_id Internal Zernio ad ID
|
|
178
|
+
# 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.
|
|
179
|
+
# @param ad_id Internal Zernio ad ID or indexed platform ad/post ID.
|
|
141
180
|
# @param [Hash] opts the optional parameters
|
|
142
181
|
# @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.
|
|
143
182
|
# @option opts [Integer] :limit
|
|
183
|
+
# @option opts [Date] :since TikTok-only start date. Defaults to 30 days before until. Maximum window is 30 days.
|
|
184
|
+
# @option opts [Date] :_until TikTok-only end date. Defaults to today in UTC.
|
|
144
185
|
# @option opts [String] :cursor Pagination cursor from a previous response.
|
|
145
186
|
# @return [GetAdComments200Response]
|
|
146
187
|
describe 'get_ad_comments test' do
|
|
@@ -208,6 +249,20 @@ describe 'AdAccountsApi' do
|
|
|
208
249
|
end
|
|
209
250
|
end
|
|
210
251
|
|
|
252
|
+
# unit tests for get_ios_fourteen_campaign_limits
|
|
253
|
+
# Get iOS 14 campaign limits
|
|
254
|
+
# 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.
|
|
255
|
+
# @param account_id Zernio Meta Ads or Facebook SocialAccount ID.
|
|
256
|
+
# @param ad_account_id Meta ad account ID including the act_ prefix.
|
|
257
|
+
# @param application_id Meta application ID from advertisable-applications.
|
|
258
|
+
# @param [Hash] opts the optional parameters
|
|
259
|
+
# @return [GetIosFourteenCampaignLimits200Response]
|
|
260
|
+
describe 'get_ios_fourteen_campaign_limits test' do
|
|
261
|
+
it 'should work' do
|
|
262
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
|
|
211
266
|
# unit tests for get_value_rule_set
|
|
212
267
|
# Read a value rule set
|
|
213
268
|
# 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.
|
|
@@ -221,12 +276,28 @@ describe 'AdAccountsApi' do
|
|
|
221
276
|
end
|
|
222
277
|
end
|
|
223
278
|
|
|
279
|
+
# unit tests for hide_ad_comment
|
|
280
|
+
# Hide or unhide an ad comment
|
|
281
|
+
# 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.
|
|
282
|
+
# @param ad_id Internal Zernio ad ID or indexed platform ad ID.
|
|
283
|
+
# @param comment_id TikTok comment ID from the ad comment listing.
|
|
284
|
+
# @param hide_ad_comment_request
|
|
285
|
+
# @param [Hash] opts the optional parameters
|
|
286
|
+
# @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
|
|
287
|
+
# @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
|
|
288
|
+
# @return [HideAdComment200Response]
|
|
289
|
+
describe 'hide_ad_comment test' do
|
|
290
|
+
it 'should work' do
|
|
291
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
292
|
+
end
|
|
293
|
+
end
|
|
294
|
+
|
|
224
295
|
# unit tests for list_account_callouts
|
|
225
|
-
# List account
|
|
226
|
-
#
|
|
227
|
-
# @param account_id
|
|
296
|
+
# List account callouts
|
|
297
|
+
# Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included. Preserves Google RMF C.75 account-level callouts.
|
|
298
|
+
# @param account_id
|
|
228
299
|
# @param [Hash] opts the optional parameters
|
|
229
|
-
# @option opts [String] :customer_id
|
|
300
|
+
# @option opts [String] :customer_id
|
|
230
301
|
# @return [ListAccountCallouts200Response]
|
|
231
302
|
describe 'list_account_callouts test' do
|
|
232
303
|
it 'should work' do
|
|
@@ -234,6 +305,32 @@ describe 'AdAccountsApi' do
|
|
|
234
305
|
end
|
|
235
306
|
end
|
|
236
307
|
|
|
308
|
+
# unit tests for list_account_sitelinks
|
|
309
|
+
# List account sitelinks
|
|
310
|
+
# Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
|
|
311
|
+
# @param account_id
|
|
312
|
+
# @param [Hash] opts the optional parameters
|
|
313
|
+
# @option opts [String] :customer_id
|
|
314
|
+
# @return [ListAccountSitelinks200Response]
|
|
315
|
+
describe 'list_account_sitelinks test' do
|
|
316
|
+
it 'should work' do
|
|
317
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
# unit tests for list_account_structured_snippets
|
|
322
|
+
# List account snippets
|
|
323
|
+
# Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
|
|
324
|
+
# @param account_id
|
|
325
|
+
# @param [Hash] opts the optional parameters
|
|
326
|
+
# @option opts [String] :customer_id
|
|
327
|
+
# @return [ListAccountStructuredSnippets200Response]
|
|
328
|
+
describe 'list_account_structured_snippets test' do
|
|
329
|
+
it 'should work' do
|
|
330
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
331
|
+
end
|
|
332
|
+
end
|
|
333
|
+
|
|
237
334
|
# unit tests for list_ad_accounts
|
|
238
335
|
# List ad accounts
|
|
239
336
|
# Returns the platform ad accounts available for the given account (e.g. Meta ad accounts, TikTok advertiser IDs, Google Ads customer IDs). For TikTok agencies: enumerates every advertiser under every Business Center the token can read (paginated server-side), then chunks the lookup against TikTok's `/advertiser/info/` endpoint (which has a per-call cap of ≤100 IDs). Solo advertisers without a BC fall back to the OAuth-time `advertiser_ids` list. Cached for 1h on the SocialAccount; lazy-refreshed on first call after expiry. For Google Ads: responds `429` when Google's API quota is temporarily exhausted (instead of an empty list). Retry after a delay.
|
|
@@ -305,6 +402,32 @@ describe 'AdAccountsApi' do
|
|
|
305
402
|
end
|
|
306
403
|
end
|
|
307
404
|
|
|
405
|
+
# unit tests for list_ads_instagram_accounts
|
|
406
|
+
# List Instagram ad identities
|
|
407
|
+
# 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.
|
|
408
|
+
# @param account_id Zernio Meta Ads or Facebook SocialAccount ID.
|
|
409
|
+
# @param ad_account_id Meta ad account ID including the act_ prefix.
|
|
410
|
+
# @param [Hash] opts the optional parameters
|
|
411
|
+
# @return [ListAdsInstagramAccounts200Response]
|
|
412
|
+
describe 'list_ads_instagram_accounts test' do
|
|
413
|
+
it 'should work' do
|
|
414
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
415
|
+
end
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
# unit tests for list_advertisable_applications
|
|
419
|
+
# List advertisable apps
|
|
420
|
+
# 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.
|
|
421
|
+
# @param account_id Zernio Meta Ads or Facebook SocialAccount ID.
|
|
422
|
+
# @param ad_account_id Meta ad account ID including the act_ prefix.
|
|
423
|
+
# @param [Hash] opts the optional parameters
|
|
424
|
+
# @return [ListAdvertisableApplications200Response]
|
|
425
|
+
describe 'list_advertisable_applications test' do
|
|
426
|
+
it 'should work' do
|
|
427
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
|
|
308
431
|
# unit tests for list_custom_conversions
|
|
309
432
|
# List custom conversions
|
|
310
433
|
# The ad account's Meta custom conversions, including archived ones (`isArchived`).
|
|
@@ -364,8 +487,8 @@ describe 'AdAccountsApi' do
|
|
|
364
487
|
end
|
|
365
488
|
|
|
366
489
|
# unit tests for remove_account_callout
|
|
367
|
-
# Remove
|
|
368
|
-
# Removes the
|
|
490
|
+
# Remove account callout
|
|
491
|
+
# Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
|
|
369
492
|
# @param remove_account_callout_request
|
|
370
493
|
# @param [Hash] opts the optional parameters
|
|
371
494
|
# @return [RemoveAccountCallout200Response]
|
|
@@ -375,6 +498,30 @@ describe 'AdAccountsApi' do
|
|
|
375
498
|
end
|
|
376
499
|
end
|
|
377
500
|
|
|
501
|
+
# unit tests for remove_account_sitelink
|
|
502
|
+
# Remove account sitelink
|
|
503
|
+
# Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
|
|
504
|
+
# @param remove_account_callout_request
|
|
505
|
+
# @param [Hash] opts the optional parameters
|
|
506
|
+
# @return [RemoveAccountCallout200Response]
|
|
507
|
+
describe 'remove_account_sitelink test' do
|
|
508
|
+
it 'should work' do
|
|
509
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
510
|
+
end
|
|
511
|
+
end
|
|
512
|
+
|
|
513
|
+
# unit tests for remove_account_structured_snippet
|
|
514
|
+
# Remove account snippet
|
|
515
|
+
# Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain.
|
|
516
|
+
# @param remove_account_callout_request
|
|
517
|
+
# @param [Hash] opts the optional parameters
|
|
518
|
+
# @return [RemoveAccountCallout200Response]
|
|
519
|
+
describe 'remove_account_structured_snippet test' do
|
|
520
|
+
it 'should work' do
|
|
521
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
522
|
+
end
|
|
523
|
+
end
|
|
524
|
+
|
|
378
525
|
# unit tests for replace_ad_negative_keyword_list_keywords
|
|
379
526
|
# Replace negative list keywords
|
|
380
527
|
# Replaces the full desired keyword set. Existing keywords are diffed by normalized text and match type; creates and removals are applied atomically in one mutation. Unchanged criteria retain their ids. Send an empty keywords array to clear the list. Changes affect every campaign using this list. Each create or removal consumes one daily operation; the entire batch must fit the remaining quota.
|
|
@@ -388,6 +535,58 @@ describe 'AdAccountsApi' do
|
|
|
388
535
|
end
|
|
389
536
|
end
|
|
390
537
|
|
|
538
|
+
# unit tests for reply_to_ad_comment
|
|
539
|
+
# Reply to an ad comment
|
|
540
|
+
# 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.
|
|
541
|
+
# @param ad_id Internal Zernio ad ID or indexed platform ad ID.
|
|
542
|
+
# @param comment_id TikTok comment ID from the ad comment listing.
|
|
543
|
+
# @param reply_to_ad_comment_request
|
|
544
|
+
# @param [Hash] opts the optional parameters
|
|
545
|
+
# @option opts [Date] :since Start date of the comment lookup window. Defaults to 30 days before until.
|
|
546
|
+
# @option opts [Date] :_until End date of the comment lookup window. Defaults to today in UTC.
|
|
547
|
+
# @return [ReplyToAdComment200Response]
|
|
548
|
+
describe 'reply_to_ad_comment test' do
|
|
549
|
+
it 'should work' do
|
|
550
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
551
|
+
end
|
|
552
|
+
end
|
|
553
|
+
|
|
554
|
+
# unit tests for update_account_callouts
|
|
555
|
+
# Update account callouts
|
|
556
|
+
# Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
|
|
557
|
+
# @param update_account_callouts_request
|
|
558
|
+
# @param [Hash] opts the optional parameters
|
|
559
|
+
# @return [UpdateAccountCallouts200Response]
|
|
560
|
+
describe 'update_account_callouts test' do
|
|
561
|
+
it 'should work' do
|
|
562
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
# unit tests for update_account_sitelinks
|
|
567
|
+
# Update account sitelinks
|
|
568
|
+
# Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
|
|
569
|
+
# @param update_account_sitelinks_request
|
|
570
|
+
# @param [Hash] opts the optional parameters
|
|
571
|
+
# @return [UpdateAccountCallouts200Response]
|
|
572
|
+
describe 'update_account_sitelinks test' do
|
|
573
|
+
it 'should work' do
|
|
574
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
575
|
+
end
|
|
576
|
+
end
|
|
577
|
+
|
|
578
|
+
# unit tests for update_account_structured_snippets
|
|
579
|
+
# Update account snippets
|
|
580
|
+
# Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
|
|
581
|
+
# @param update_account_structured_snippets_request
|
|
582
|
+
# @param [Hash] opts the optional parameters
|
|
583
|
+
# @return [UpdateAccountCallouts200Response]
|
|
584
|
+
describe 'update_account_structured_snippets test' do
|
|
585
|
+
it 'should work' do
|
|
586
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
587
|
+
end
|
|
588
|
+
end
|
|
589
|
+
|
|
391
590
|
# unit tests for update_ad_account
|
|
392
591
|
# Update ad account settings
|
|
393
592
|
# 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.
|
|
@@ -44,10 +44,23 @@ describe 'AdCampaignsApi' do
|
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
+
# unit tests for attach_ad_group_assets
|
|
48
|
+
# Attach ad-group assets
|
|
49
|
+
# Creates and attaches sitelinks, callouts and structured snippets in one Google mutation.
|
|
50
|
+
# @param ad_set_id Numeric Google platform id.
|
|
51
|
+
# @param attach_campaign_assets_request
|
|
52
|
+
# @param [Hash] opts the optional parameters
|
|
53
|
+
# @return [AttachAdGroupAssets201Response]
|
|
54
|
+
describe 'attach_ad_group_assets test' do
|
|
55
|
+
it 'should work' do
|
|
56
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
47
60
|
# unit tests for attach_campaign_assets
|
|
48
|
-
# Attach
|
|
49
|
-
#
|
|
50
|
-
# @param campaign_id Numeric Google platform
|
|
61
|
+
# Attach campaign assets
|
|
62
|
+
# Creates and attaches sitelinks, callouts and structured snippets in one Google mutation.
|
|
63
|
+
# @param campaign_id Numeric Google platform id.
|
|
51
64
|
# @param attach_campaign_assets_request
|
|
52
65
|
# @param [Hash] opts the optional parameters
|
|
53
66
|
# @return [AttachCampaignAssets201Response]
|
|
@@ -88,7 +101,7 @@ describe 'AdCampaignsApi' do
|
|
|
88
101
|
# @param create_ad_campaign_request
|
|
89
102
|
# @param [Hash] opts the optional parameters
|
|
90
103
|
# @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.
|
|
91
|
-
# @return [
|
|
104
|
+
# @return [CreateAdCampaign200Response]
|
|
92
105
|
describe 'create_ad_campaign test' do
|
|
93
106
|
it 'should work' do
|
|
94
107
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
@@ -214,7 +227,7 @@ describe 'AdCampaignsApi' do
|
|
|
214
227
|
|
|
215
228
|
# unit tests for get_ad
|
|
216
229
|
# Get ad details
|
|
217
|
-
# Returns an ad with its creative, targeting, status, and performance metrics. The `{adId}` path segment accepts any identifier dialect Zernio indexes for the ad: - the Zernio internal `_id` (24-char hex) - Meta's numeric `platformAdId` (the value shipped in `comment.received` webhooks as `comment.ad.id`) - the creative's `effective_object_story_id` (`{pageId}_{postId}` shape, Facebook side) - the creative's `effective_instagram_media_id` (Instagram side) Any of the four resolve to the same ad. Caller doesn't need a translation step. By default, creative.promotion and creative.creativeFeatures contain stored requested settings, which do not confirm platform application. With `refreshPromotion=true`, Meta promotion metadata is read live and exposed as `ad.creative.promotion` with `promotionStatus`. Only `applied` confirms an offer; `not_returned` means the creative read succeeded without promotion metadata, and `unavailable` means it failed.
|
|
230
|
+
# Returns an ad with its creative, targeting, status, and performance metrics. Google Search ads include current creative.headlines, creative.descriptions and creative.finalUrls, preserving pinnedField. Top-level cachedAt and stale report cache freshness. Google mutations invalidate this read. RSA enrichment requires a stored advertisingChannelType of SEARCH. Ads with an unknown or other channel return their stored details without a Google read. If RSA enrichment fails, the stored ad is returned with HTTP 200 and without cache metadata. The `{adId}` path segment accepts any identifier dialect Zernio indexes for the ad: - the Zernio internal `_id` (24-char hex) - Meta's numeric `platformAdId` (the value shipped in `comment.received` webhooks as `comment.ad.id`) - the creative's `effective_object_story_id` (`{pageId}_{postId}` shape, Facebook side) - the creative's `effective_instagram_media_id` (Instagram side) Any of the four resolve to the same ad. Caller doesn't need a translation step. By default, creative.promotion and creative.creativeFeatures contain stored requested settings, which do not confirm platform application. With `refreshPromotion=true`, Meta promotion metadata is read live and exposed as `ad.creative.promotion` with `promotionStatus`. Only `applied` confirms an offer; `not_returned` means the creative read succeeded without promotion metadata, and `unavailable` means it failed.
|
|
218
231
|
# @param ad_id Zernio `_id` (hex), Meta `platformAdId` (numeric), or one of the creative's effective story/media IDs. See description for details.
|
|
219
232
|
# @param [Hash] opts the optional parameters
|
|
220
233
|
# @option opts [Boolean] :refresh_promotion Meta only. Read current promotion metadata from Meta and include promotionStatus. Omit for stored creative settings with no promotion-specific Graph call.
|
|
@@ -336,6 +349,20 @@ describe 'AdCampaignsApi' do
|
|
|
336
349
|
end
|
|
337
350
|
end
|
|
338
351
|
|
|
352
|
+
# unit tests for list_ad_group_assets
|
|
353
|
+
# List ad-group assets
|
|
354
|
+
# Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
|
|
355
|
+
# @param ad_set_id Numeric Google platform id.
|
|
356
|
+
# @param account_id
|
|
357
|
+
# @param [Hash] opts the optional parameters
|
|
358
|
+
# @option opts [String] :customer_id
|
|
359
|
+
# @return [ListAdGroupAssets200Response]
|
|
360
|
+
describe 'list_ad_group_assets test' do
|
|
361
|
+
it 'should work' do
|
|
362
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
|
|
339
366
|
# unit tests for list_ad_keywords
|
|
340
367
|
# List Search keywords
|
|
341
368
|
# Returns the Google Search keyword criteria (positive and negative) synced from connected Google Ads accounts, one row per ad-group keyword. Refreshed about once a week per Google Ads customer (the keyword sweep rides the ads discovery pass on a slower slot, to stay inside Google's shared daily API quota), so keywords added on Google can take several days to appear. A customer synced for the first time is populated on the next discovery pass rather than waiting for its weekly slot, and connecting an account or triggering a manual sync refreshes it immediately. Campaign-level negative keywords are not included; only ad-group-level criteria are.
|
|
@@ -414,6 +441,20 @@ describe 'AdCampaignsApi' do
|
|
|
414
441
|
end
|
|
415
442
|
end
|
|
416
443
|
|
|
444
|
+
# unit tests for list_campaign_assets
|
|
445
|
+
# List campaign assets
|
|
446
|
+
# Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
|
|
447
|
+
# @param campaign_id Numeric Google platform id.
|
|
448
|
+
# @param account_id
|
|
449
|
+
# @param [Hash] opts the optional parameters
|
|
450
|
+
# @option opts [String] :customer_id
|
|
451
|
+
# @return [ListCampaignAssets200Response]
|
|
452
|
+
describe 'list_campaign_assets test' do
|
|
453
|
+
it 'should work' do
|
|
454
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
455
|
+
end
|
|
456
|
+
end
|
|
457
|
+
|
|
417
458
|
# unit tests for list_campaign_negative_keyword_lists
|
|
418
459
|
# List campaign negative lists
|
|
419
460
|
# Returns shared negative keyword lists attached to the campaign, separate from campaign-level negative keywords. Google Ads shared negative keyword lists (shared_set type NEGATIVE_KEYWORDS). Reads are cached for 10 minutes; quota exhaustion may return the last successful result for up to 7 days with stale=true. Customer selection is limited to this connection and its account scope.
|
|
@@ -440,6 +481,19 @@ describe 'AdCampaignsApi' do
|
|
|
440
481
|
end
|
|
441
482
|
end
|
|
442
483
|
|
|
484
|
+
# unit tests for remove_ad_group_assets
|
|
485
|
+
# Remove ad-group assets
|
|
486
|
+
# Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility.
|
|
487
|
+
# @param ad_set_id Numeric Google platform id.
|
|
488
|
+
# @param remove_ad_group_assets_request
|
|
489
|
+
# @param [Hash] opts the optional parameters
|
|
490
|
+
# @return [RemoveCampaignAssets200Response]
|
|
491
|
+
describe 'remove_ad_group_assets test' do
|
|
492
|
+
it 'should work' do
|
|
493
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
494
|
+
end
|
|
495
|
+
end
|
|
496
|
+
|
|
443
497
|
# unit tests for remove_ad_keyword
|
|
444
498
|
# Remove a Search keyword
|
|
445
499
|
# Removes one keyword criterion (positive or negative) from its ad group (M.140).
|
|
@@ -452,6 +506,19 @@ describe 'AdCampaignsApi' do
|
|
|
452
506
|
end
|
|
453
507
|
end
|
|
454
508
|
|
|
509
|
+
# unit tests for remove_campaign_assets
|
|
510
|
+
# Remove campaign assets
|
|
511
|
+
# Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility.
|
|
512
|
+
# @param campaign_id Numeric Google platform id.
|
|
513
|
+
# @param remove_campaign_assets_request
|
|
514
|
+
# @param [Hash] opts the optional parameters
|
|
515
|
+
# @return [RemoveCampaignAssets200Response]
|
|
516
|
+
describe 'remove_campaign_assets test' do
|
|
517
|
+
it 'should work' do
|
|
518
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
519
|
+
end
|
|
520
|
+
end
|
|
521
|
+
|
|
455
522
|
# unit tests for replace_campaign_negative_keyword_lists
|
|
456
523
|
# Replace campaign negative lists
|
|
457
524
|
# Sets the full desired set of shared negative keyword list associations on this campaign. Send listIds=[] to detach all negative keyword lists. Only campaign_shared_set links are changed; the lists and their keywords are preserved. Every list must belong to the campaign customer and have type NEGATIVE_KEYWORDS.
|
|
@@ -480,7 +547,7 @@ describe 'AdCampaignsApi' do
|
|
|
480
547
|
|
|
481
548
|
# unit tests for update_ad
|
|
482
549
|
# Update ad
|
|
483
|
-
# Patch one or more fields on an ad. Status, budget, targeting, and creative changes are propagated to the platform. Per-platform support: - **Meta** (Facebook + Instagram): all fields supported. - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative (via `/v2/ad/update/` patch-style: `headline` is ignored, `body` becomes `ad_text`). - **Google**: status, budget, KEYWORD edits via `targeting.keywords` / `targeting.negativeKeywords`, and DEVICE bid adjustments via `targeting.devices`. Each list you send becomes the FULL new set of its kind (criteria not in the list are removed); a kind left out is untouched. Any other `targeting` field returns 400: Google cannot mutate broad targeting post-create without recreating the campaign. `
|
|
550
|
+
# Patch one or more fields on an ad. Status, budget, targeting, and creative changes are propagated to the platform. Per-platform support: - **Meta** (Facebook + Instagram): all fields supported. - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative (via `/v2/ad/update/` patch-style: `headline` is ignored, `body` becomes `ad_text`). - **Google**: status, budget, KEYWORD edits via `targeting.keywords` / `targeting.negativeKeywords`, and DEVICE bid adjustments via `targeting.devices`. Each list you send becomes the FULL new set of its kind (criteria not in the list are removed); a kind left out is untouched. Any other `targeting` field returns 400: Google cannot mutate broad targeting post-create without recreating the campaign. RSA text updates use top-level `headlines`, `descriptions` and `finalUrls`. Each supplied array replaces the full list; omit a field to preserve it. Use 3-15 headlines (1-30 characters) and 2-4 descriptions (1-90 characters). Omit an asset to remove it; omit pinnedField on an included asset to unpin it. Updates do not pad or truncate text. The legacy creative fields remain unsupported for Google. - **LinkedIn**: status, budget, targeting (countries or regions, excludedLocations (countries), the B2B facets, and audience segments; applied to the LinkedIn Campaign via PARTIAL_UPDATE, and REPLACES the campaign's entire targetingCriteria, not a merge), and creative (uploads new media, creates a replacement inline creative on the same campaign, pauses the old one). - **Pinterest / X / OpenAI Ads**: status + budget only. Sending `targeting` or `creative` returns 501 with code `unsupported_platform_operation`. OpenAI Ads budget is lifetime-only (see `budget.type` below). **Google keyword replacement:** These edits affect the ad's entire ad group, including sibling ads. Positive (`targeting.keywords`) and negative (`targeting.negativeKeywords`) sets are independent: omit a field to leave that set unchanged, or send `[]` to remove every keyword of that kind. Zernio compares each supplied set with Google's live criteria by case-insensitive keyword text and match type. A matching criterion is left untouched, retaining its criterion ID, enabled/paused status, keyword-level bid overrides, labels, and criterion-associated history/statistics. Zernio does not reset its quality score; Google continues to calculate scores and statistics normally. Text comparison does not trim whitespace. A bare string or an object without `matchType` means `broad`, not the existing criterion's match type. For example, resending an existing `{ \"text\": \"plumber\", \"matchType\": \"exact\" }` preserves it; sending `\"plumber\"` instead removes that EXACT criterion and requests a BROAD one. Changing text or match type removes criteria no longer requested and creates any missing criteria. New criteria get new IDs and do not inherit removed criteria's bid overrides, labels, or history. Historical reporting for a removed criterion is not transferred to its replacement. To add keywords without replacing a set, use [POST /v1/ads/keywords](https://docs.zernio.com/ad-campaigns/add-ad-keywords). Use `PATCH /v1/ads/keywords/{keywordId}` to pause/enable one keyword, or `DELETE /v1/ads/keywords/{keywordId}` to remove it.
|
|
484
551
|
# @param ad_id
|
|
485
552
|
# @param update_ad_request
|
|
486
553
|
# @param [Hash] opts the optional parameters
|
|
@@ -517,6 +584,19 @@ describe 'AdCampaignsApi' do
|
|
|
517
584
|
end
|
|
518
585
|
end
|
|
519
586
|
|
|
587
|
+
# unit tests for update_ad_group_assets
|
|
588
|
+
# Update ad-group assets
|
|
589
|
+
# Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
|
|
590
|
+
# @param ad_set_id Numeric Google platform id.
|
|
591
|
+
# @param update_campaign_assets_request
|
|
592
|
+
# @param [Hash] opts the optional parameters
|
|
593
|
+
# @return [UpdateCampaignAssets200Response]
|
|
594
|
+
describe 'update_ad_group_assets test' do
|
|
595
|
+
it 'should work' do
|
|
596
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
597
|
+
end
|
|
598
|
+
end
|
|
599
|
+
|
|
520
600
|
# unit tests for update_ad_keyword
|
|
521
601
|
# Pause or enable a Search keyword
|
|
522
602
|
# Changes `ad_group_criterion.status` for one keyword criterion (M.140). Negative keywords have no status on Google and cannot be paused or enabled.
|
|
@@ -582,6 +662,19 @@ describe 'AdCampaignsApi' do
|
|
|
582
662
|
end
|
|
583
663
|
end
|
|
584
664
|
|
|
665
|
+
# unit tests for update_campaign_assets
|
|
666
|
+
# Update campaign assets
|
|
667
|
+
# Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
|
|
668
|
+
# @param campaign_id Numeric Google platform id.
|
|
669
|
+
# @param update_campaign_assets_request
|
|
670
|
+
# @param [Hash] opts the optional parameters
|
|
671
|
+
# @return [UpdateCampaignAssets200Response]
|
|
672
|
+
describe 'update_campaign_assets test' do
|
|
673
|
+
it 'should work' do
|
|
674
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
675
|
+
end
|
|
676
|
+
end
|
|
677
|
+
|
|
585
678
|
# unit tests for update_campaign_targeting
|
|
586
679
|
# Edit a Google campaign's device, location, or language targeting
|
|
587
680
|
# Google Ads compliance row M.10: geo and language targeting set at creation must stay editable afterwards. Send at least one of `devices`, `locations`, `languages`; each provided field REPLACES that field's existing criteria on the campaign (a full set, not a delta). Fields left out of the body are untouched. Google only; every other platform returns 501. `locations` accepts the same shapes as campaign creation: a bare array of ISO country codes, or an object with `countries`/`regions`/`cities`/`zips`/`metros` key lists (`key` from GET /v1/ads/targeting/search?dimension=geo). Negative (excluded) locations are left untouched by this endpoint. `languages` is an array of Google's language codes (ISO 639-1, plus variants such as `zh_CN`); an unknown code returns 400. The response includes the refreshed `devices`/`locations`/`languages` state read back from Google after the edit, and invalidates the cached copy `GET` on this campaign would otherwise keep serving.
|
|
@@ -27,6 +27,24 @@ describe Zernio::AdCreative do
|
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
describe 'test attribute "headlines"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'test attribute "descriptions"' do
|
|
37
|
+
it 'should work' do
|
|
38
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe 'test attribute "final_urls"' do
|
|
43
|
+
it 'should work' do
|
|
44
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
30
48
|
describe 'test attribute "thumbnail_url"' do
|
|
31
49
|
it 'should work' do
|
|
32
50
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
@@ -14,16 +14,16 @@ require 'spec_helper'
|
|
|
14
14
|
require 'json'
|
|
15
15
|
require 'date'
|
|
16
16
|
|
|
17
|
-
# Unit tests for Zernio::
|
|
17
|
+
# Unit tests for Zernio::AdTracking
|
|
18
18
|
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
19
|
# Please update as you see appropriate
|
|
20
|
-
describe Zernio::
|
|
21
|
-
#let(:instance) { Zernio::
|
|
20
|
+
describe Zernio::AdTracking do
|
|
21
|
+
#let(:instance) { Zernio::AdTracking.new }
|
|
22
22
|
|
|
23
|
-
describe 'test an instance of
|
|
24
|
-
it 'should create an instance of
|
|
23
|
+
describe 'test an instance of AdTracking' do
|
|
24
|
+
it 'should create an instance of AdTracking' do
|
|
25
25
|
# uncomment below to test the instance creation
|
|
26
|
-
#expect(instance).to be_instance_of(Zernio::
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::AdTracking)
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
require 'date'
|
|
16
|
+
|
|
17
|
+
# Unit tests for Zernio::AddAccountSitelinks201ResponseSitelinksInner
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::AddAccountSitelinks201ResponseSitelinksInner do
|
|
21
|
+
#let(:instance) { Zernio::AddAccountSitelinks201ResponseSitelinksInner.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of AddAccountSitelinks201ResponseSitelinksInner' do
|
|
24
|
+
it 'should create an instance of AddAccountSitelinks201ResponseSitelinksInner' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::AddAccountSitelinks201ResponseSitelinksInner)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "asset_id"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'test attribute "text"' do
|
|
37
|
+
it 'should work' do
|
|
38
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe 'test attribute "link_url"' do
|
|
43
|
+
it 'should work' do
|
|
44
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe 'test attribute "description1"' do
|
|
49
|
+
it 'should work' do
|
|
50
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe 'test attribute "description2"' do
|
|
55
|
+
it 'should work' do
|
|
56
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|