late-sdk 0.0.908 → 0.0.910
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 +32 -19
- data/docs/AdAccountsApi.md +92 -16
- data/docs/AdCampaignsApi.md +20 -20
- data/docs/AdCreativesApi.md +222 -0
- data/docs/AdInsightsApi.md +16 -16
- data/docs/AdTargetingApi.md +4 -4
- data/docs/CheckPhoneNumberAvailability200Response.md +1 -1
- data/docs/ConversionsApi.md +8 -8
- data/docs/GetAdComments200ResponseMeta.md +1 -1
- data/docs/ListPartnershipAdContent200Response.md +18 -0
- data/docs/ListPartnershipAdContent200ResponseMediaInner.md +30 -0
- data/docs/ListPartnershipAdPermissions200Response.md +18 -0
- data/docs/ListPartnershipAdPermissions200ResponsePermissionsInner.md +22 -0
- data/docs/ListPhoneNumberCountries200ResponseCountriesInnerTypesInner.md +1 -1
- data/docs/ListTikTokAdPixels200Response.md +20 -0
- data/docs/ListTikTokAdPixels200ResponsePixelsInner.md +26 -0
- data/docs/ListTikTokAdPixels200ResponsePixelsInnerEventDetailsInner.md +22 -0
- data/docs/ReachAndFrequencyApi.md +16 -16
- data/docs/SetPartnershipAdPermission200Response.md +18 -0
- data/docs/SetPartnershipAdPermissionRequest.md +22 -0
- data/docs/SubmitPhoneNumberKyc200Response.md +1 -1
- data/lib/zernio-sdk/api/ad_accounts_api.rb +89 -14
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +10 -10
- data/lib/zernio-sdk/api/ad_creatives_api.rb +218 -0
- data/lib/zernio-sdk/api/ad_insights_api.rb +8 -8
- data/lib/zernio-sdk/api/ad_targeting_api.rb +2 -2
- data/lib/zernio-sdk/api/conversions_api.rb +4 -4
- data/lib/zernio-sdk/api/reach_and_frequency_api.rb +8 -8
- data/lib/zernio-sdk/models/check_phone_number_availability200_response.rb +1 -1
- data/lib/zernio-sdk/models/get_ad_comments200_response_meta.rb +1 -1
- data/lib/zernio-sdk/models/list_partnership_ad_content200_response.rb +149 -0
- data/lib/zernio-sdk/models/list_partnership_ad_content200_response_media_inner.rb +205 -0
- data/lib/zernio-sdk/models/list_partnership_ad_permissions200_response.rb +149 -0
- data/lib/zernio-sdk/models/list_partnership_ad_permissions200_response_permissions_inner.rb +165 -0
- data/lib/zernio-sdk/models/list_phone_number_countries200_response_countries_inner_types_inner.rb +1 -1
- data/lib/zernio-sdk/models/list_tik_tok_ad_pixels200_response.rb +158 -0
- data/lib/zernio-sdk/models/list_tik_tok_ad_pixels200_response_pixels_inner.rb +187 -0
- data/lib/zernio-sdk/models/list_tik_tok_ad_pixels200_response_pixels_inner_event_details_inner.rb +166 -0
- data/lib/zernio-sdk/models/set_partnership_ad_permission200_response.rb +147 -0
- data/lib/zernio-sdk/models/set_partnership_ad_permission_request.rb +219 -0
- data/lib/zernio-sdk/models/submit_phone_number_kyc200_response.rb +1 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +9 -0
- data/openapi.yaml +675 -171
- data/spec/api/ad_accounts_api_spec.rb +21 -7
- data/spec/api/ad_campaigns_api_spec.rb +5 -5
- data/spec/api/ad_creatives_api_spec.rb +40 -0
- data/spec/api/ad_insights_api_spec.rb +4 -4
- data/spec/api/ad_targeting_api_spec.rb +1 -1
- data/spec/api/conversions_api_spec.rb +2 -2
- data/spec/api/reach_and_frequency_api_spec.rb +4 -4
- data/spec/models/list_partnership_ad_content200_response_media_inner_spec.rb +72 -0
- data/spec/models/list_partnership_ad_content200_response_spec.rb +36 -0
- data/spec/models/list_partnership_ad_permissions200_response_permissions_inner_spec.rb +48 -0
- data/spec/models/list_partnership_ad_permissions200_response_spec.rb +36 -0
- data/spec/models/list_tik_tok_ad_pixels200_response_pixels_inner_event_details_inner_spec.rb +48 -0
- data/spec/models/list_tik_tok_ad_pixels200_response_pixels_inner_spec.rb +60 -0
- data/spec/models/list_tik_tok_ad_pixels200_response_spec.rb +42 -0
- data/spec/models/set_partnership_ad_permission200_response_spec.rb +36 -0
- data/spec/models/set_partnership_ad_permission_request_spec.rb +48 -0
- data/zernio-sdk-0.0.910.gem +0 -0
- metadata +38 -2
- data/zernio-sdk-0.0.908.gem +0 -0
|
@@ -4,17 +4,17 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
4
4
|
|
|
5
5
|
| Method | HTTP request | Description |
|
|
6
6
|
| ------ | ------------ | ----------- |
|
|
7
|
-
| [**cancel_rf_reservation**](ReachAndFrequencyApi.md#cancel_rf_reservation) | **DELETE** /v1/ads/rf-predictions/{predictionId} | Cancel
|
|
8
|
-
| [**create_rf_prediction**](ReachAndFrequencyApi.md#create_rf_prediction) | **POST** /v1/ads/rf-predictions | Create
|
|
9
|
-
| [**get_rf_prediction**](ReachAndFrequencyApi.md#get_rf_prediction) | **GET** /v1/ads/rf-predictions/{predictionId} |
|
|
10
|
-
| [**reserve_rf_prediction**](ReachAndFrequencyApi.md#reserve_rf_prediction) | **POST** /v1/ads/rf-predictions/{predictionId}/reserve | Reserve
|
|
7
|
+
| [**cancel_rf_reservation**](ReachAndFrequencyApi.md#cancel_rf_reservation) | **DELETE** /v1/ads/rf-predictions/{predictionId} | Cancel reach-frequency booking |
|
|
8
|
+
| [**create_rf_prediction**](ReachAndFrequencyApi.md#create_rf_prediction) | **POST** /v1/ads/rf-predictions | Create reach-frequency prediction |
|
|
9
|
+
| [**get_rf_prediction**](ReachAndFrequencyApi.md#get_rf_prediction) | **GET** /v1/ads/rf-predictions/{predictionId} | Get reach-frequency prediction |
|
|
10
|
+
| [**reserve_rf_prediction**](ReachAndFrequencyApi.md#reserve_rf_prediction) | **POST** /v1/ads/rf-predictions/{predictionId}/reserve | Reserve reach-frequency inventory |
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
## cancel_rf_reservation
|
|
14
14
|
|
|
15
15
|
> cancel_rf_reservation(prediction_id, account_id, ad_account_id)
|
|
16
16
|
|
|
17
|
-
Cancel
|
|
17
|
+
Cancel reach-frequency booking
|
|
18
18
|
|
|
19
19
|
Releases a RESERVATION's locked price and inventory. Unreserved predictions expire on their own.
|
|
20
20
|
|
|
@@ -35,7 +35,7 @@ account_id = 'account_id_example' # String |
|
|
|
35
35
|
ad_account_id = 'ad_account_id_example' # String |
|
|
36
36
|
|
|
37
37
|
begin
|
|
38
|
-
# Cancel
|
|
38
|
+
# Cancel reach-frequency booking
|
|
39
39
|
api_instance.cancel_rf_reservation(prediction_id, account_id, ad_account_id)
|
|
40
40
|
rescue Zernio::ApiError => e
|
|
41
41
|
puts "Error when calling ReachAndFrequencyApi->cancel_rf_reservation: #{e}"
|
|
@@ -50,7 +50,7 @@ This returns an Array which contains the response data (`nil` in this case), sta
|
|
|
50
50
|
|
|
51
51
|
```ruby
|
|
52
52
|
begin
|
|
53
|
-
# Cancel
|
|
53
|
+
# Cancel reach-frequency booking
|
|
54
54
|
data, status_code, headers = api_instance.cancel_rf_reservation_with_http_info(prediction_id, account_id, ad_account_id)
|
|
55
55
|
p status_code # => 2xx
|
|
56
56
|
p headers # => { ... }
|
|
@@ -86,7 +86,7 @@ nil (empty response body)
|
|
|
86
86
|
|
|
87
87
|
> <CreateRfPrediction201Response> create_rf_prediction(create_rf_prediction_request)
|
|
88
88
|
|
|
89
|
-
Create
|
|
89
|
+
Create reach-frequency prediction
|
|
90
90
|
|
|
91
91
|
Creates an R&F prediction. This is a QUOTE, nothing is bought and no ad entities are created. Provide a date range plus exactly one of `budgetAmount` (Meta predicts reach) or `reach` (Meta predicts the budget). The response carries the estimate and its allowed bounds (min/max budget and reach). Predictions expire on their own; to buy, reserve one via POST /v1/ads/rf-predictions/{predictionId}/reserve and pass the RESERVED id to POST /v1/ads/create with `buyingType: \"RESERVED\"`. Reservation campaigns reject automatic placements. Top-level `placements` wins; when it is omitted, `targeting.placements` is used; when neither is set, placements default to Facebook feed (+ Instagram stream when a linked IG professional account resolves). Instagram placements require that IG account.
|
|
92
92
|
|
|
@@ -105,7 +105,7 @@ api_instance = Zernio::ReachAndFrequencyApi.new
|
|
|
105
105
|
create_rf_prediction_request = Zernio::CreateRfPredictionRequest.new({account_id: 'account_id_example', ad_account_id: 'ad_account_id_example', start_date: Time.now, end_date: Time.now}) # CreateRfPredictionRequest |
|
|
106
106
|
|
|
107
107
|
begin
|
|
108
|
-
# Create
|
|
108
|
+
# Create reach-frequency prediction
|
|
109
109
|
result = api_instance.create_rf_prediction(create_rf_prediction_request)
|
|
110
110
|
p result
|
|
111
111
|
rescue Zernio::ApiError => e
|
|
@@ -121,7 +121,7 @@ This returns an Array which contains the response data, status code and headers.
|
|
|
121
121
|
|
|
122
122
|
```ruby
|
|
123
123
|
begin
|
|
124
|
-
# Create
|
|
124
|
+
# Create reach-frequency prediction
|
|
125
125
|
data, status_code, headers = api_instance.create_rf_prediction_with_http_info(create_rf_prediction_request)
|
|
126
126
|
p status_code # => 2xx
|
|
127
127
|
p headers # => { ... }
|
|
@@ -155,7 +155,7 @@ end
|
|
|
155
155
|
|
|
156
156
|
> <CreateRfPrediction201Response> get_rf_prediction(prediction_id, account_id, ad_account_id)
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
Get reach-frequency prediction
|
|
159
159
|
|
|
160
160
|
### Examples
|
|
161
161
|
|
|
@@ -174,7 +174,7 @@ account_id = 'account_id_example' # String |
|
|
|
174
174
|
ad_account_id = 'ad_account_id_example' # String |
|
|
175
175
|
|
|
176
176
|
begin
|
|
177
|
-
#
|
|
177
|
+
# Get reach-frequency prediction
|
|
178
178
|
result = api_instance.get_rf_prediction(prediction_id, account_id, ad_account_id)
|
|
179
179
|
p result
|
|
180
180
|
rescue Zernio::ApiError => e
|
|
@@ -190,7 +190,7 @@ This returns an Array which contains the response data, status code and headers.
|
|
|
190
190
|
|
|
191
191
|
```ruby
|
|
192
192
|
begin
|
|
193
|
-
#
|
|
193
|
+
# Get reach-frequency prediction
|
|
194
194
|
data, status_code, headers = api_instance.get_rf_prediction_with_http_info(prediction_id, account_id, ad_account_id)
|
|
195
195
|
p status_code # => 2xx
|
|
196
196
|
p headers # => { ... }
|
|
@@ -226,7 +226,7 @@ end
|
|
|
226
226
|
|
|
227
227
|
> <ReserveRfPrediction201Response> reserve_rf_prediction(prediction_id, reserve_rf_prediction_request)
|
|
228
228
|
|
|
229
|
-
Reserve
|
|
229
|
+
Reserve reach-frequency inventory
|
|
230
230
|
|
|
231
231
|
Locks the quoted price + inventory until the returned `expiresAt` and mints a NEW prediction id. Pass that RESERVED id (not the original) as `rfPredictionId` on POST /v1/ads/create. Release an unused reservation via DELETE.
|
|
232
232
|
|
|
@@ -246,7 +246,7 @@ prediction_id = 'prediction_id_example' # String |
|
|
|
246
246
|
reserve_rf_prediction_request = Zernio::ReserveRfPredictionRequest.new({account_id: 'account_id_example', ad_account_id: 'ad_account_id_example'}) # ReserveRfPredictionRequest |
|
|
247
247
|
|
|
248
248
|
begin
|
|
249
|
-
# Reserve
|
|
249
|
+
# Reserve reach-frequency inventory
|
|
250
250
|
result = api_instance.reserve_rf_prediction(prediction_id, reserve_rf_prediction_request)
|
|
251
251
|
p result
|
|
252
252
|
rescue Zernio::ApiError => e
|
|
@@ -262,7 +262,7 @@ This returns an Array which contains the response data, status code and headers.
|
|
|
262
262
|
|
|
263
263
|
```ruby
|
|
264
264
|
begin
|
|
265
|
-
# Reserve
|
|
265
|
+
# Reserve reach-frequency inventory
|
|
266
266
|
data, status_code, headers = api_instance.reserve_rf_prediction_with_http_info(prediction_id, reserve_rf_prediction_request)
|
|
267
267
|
p status_code # => 2xx
|
|
268
268
|
p headers # => { ... }
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Zernio::SetPartnershipAdPermission200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **permission** | [**ListPartnershipAdPermissions200ResponsePermissionsInner**](ListPartnershipAdPermissions200ResponsePermissionsInner.md) | | [optional] |
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
require 'zernio-sdk'
|
|
13
|
+
|
|
14
|
+
instance = Zernio::SetPartnershipAdPermission200Response.new(
|
|
15
|
+
permission: null
|
|
16
|
+
)
|
|
17
|
+
```
|
|
18
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Zernio::SetPartnershipAdPermissionRequest
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **account_id** | **String** | | |
|
|
8
|
+
| **creator_username** | **String** | | |
|
|
9
|
+
| **revoke** | **Boolean** | | [optional] |
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
require 'zernio-sdk'
|
|
15
|
+
|
|
16
|
+
instance = Zernio::SetPartnershipAdPermissionRequest.new(
|
|
17
|
+
account_id: null,
|
|
18
|
+
creator_username: null,
|
|
19
|
+
revoke: null
|
|
20
|
+
)
|
|
21
|
+
```
|
|
22
|
+
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **status** | **String** | | [optional] |
|
|
8
|
-
| **pre_order** | **Boolean** | True when nothing was in stock and this submission placed a pre-order. The number stays `pending_regulatory` until the
|
|
8
|
+
| **pre_order** | **Boolean** | True when nothing was in stock and this submission placed a pre-order. The number stays `pending_regulatory` until we get it, from regular stock the moment it returns or sourced by the carrier (usually 2 to 4 weeks), and is not billed until active. Releasing it (DELETE /v1/phone-numbers/{id}) cancels the pre-order. A pre-order is one number: `quantity` above 1 is rejected with 400. | [optional] |
|
|
9
9
|
| **phone_number** | [**SubmitPhoneNumberKyc200ResponsePhoneNumber**](SubmitPhoneNumberKyc200ResponsePhoneNumber.md) | | [optional] |
|
|
10
10
|
| **numbers** | [**Array<SubmitPhoneNumberKyc200ResponseNumbersInner>**](SubmitPhoneNumberKyc200ResponseNumbersInner.md) | Every number provisioned from this submission. Length equals the requested `quantity` on full success (fewer if some orders failed; best-effort). The first element mirrors `phoneNumber`. | [optional] |
|
|
11
11
|
|
|
@@ -359,7 +359,7 @@ module Zernio
|
|
|
359
359
|
return data, status_code, headers
|
|
360
360
|
end
|
|
361
361
|
|
|
362
|
-
# Create
|
|
362
|
+
# Create custom conversion
|
|
363
363
|
# Provision the Meta custom conversion an ads flow optimises toward, and hand back the `customConversionId` for `promotedObject.customConversionId` on POST /v1/ads/create. Removes the manual \"create it in Ads Manager first\" step. **Reuse is ours, not Meta's.** Meta's create is not idempotent, so a retried request would otherwise mint a duplicate carrying none of the original's optimisation history. A non-archived conversion with the same `name` on the same `pixelId` is returned instead of created, with `reused: true` and a 200 rather than a 201. `rule` is forwarded verbatim in Meta's own grammar (e.g. `{\"url\": {\"i_contains\": \"thank-you\"}}`); Meta validates it and rejects a malformed one with \"A conversion rule is required at creation time\".
|
|
364
364
|
# @param account_id [String] Meta ads SocialAccount id.
|
|
365
365
|
# @param create_custom_conversion_request [CreateCustomConversionRequest]
|
|
@@ -370,7 +370,7 @@ module Zernio
|
|
|
370
370
|
data
|
|
371
371
|
end
|
|
372
372
|
|
|
373
|
-
# Create
|
|
373
|
+
# Create custom conversion
|
|
374
374
|
# Provision the Meta custom conversion an ads flow optimises toward, and hand back the `customConversionId` for `promotedObject.customConversionId` on POST /v1/ads/create. Removes the manual \"create it in Ads Manager first\" step. **Reuse is ours, not Meta's.** Meta's create is not idempotent, so a retried request would otherwise mint a duplicate carrying none of the original's optimisation history. A non-archived conversion with the same `name` on the same `pixelId` is returned instead of created, with `reused: true` and a 200 rather than a 201. `rule` is forwarded verbatim in Meta's own grammar (e.g. `{\"url\": {\"i_contains\": \"thank-you\"}}`); Meta validates it and rejects a malformed one with \"A conversion rule is required at creation time\".
|
|
375
375
|
# @param account_id [String] Meta ads SocialAccount id.
|
|
376
376
|
# @param create_custom_conversion_request [CreateCustomConversionRequest]
|
|
@@ -570,7 +570,7 @@ module Zernio
|
|
|
570
570
|
end
|
|
571
571
|
|
|
572
572
|
# Delete an ad comment
|
|
573
|
-
# 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.
|
|
573
|
+
# Delete your own TikTok ad comment or reply. TikTok must return can_delete=true for the comment. Other users' comments can be hidden instead. Unknown identity and video item fields are resolved only when needed for this action, then persisted for reuse. Comment-specific fields take precedence. If TikTok no longer returns the ad needed to resolve identity, 404 ad_not_found directs you to check deletion or archival in TikTok Ads Manager. Listing can still succeed. Unsupported or unavailable identity returns 403 feature_not_available. Denied access to ad details returns 403 insufficient_permissions with reconnect guidance and the upstream platformError. 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.
|
|
574
574
|
# @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
|
|
575
575
|
# @param comment_id [String] TikTok comment ID from the ad comment listing.
|
|
576
576
|
# @param [Hash] opts the optional parameters
|
|
@@ -583,7 +583,7 @@ module Zernio
|
|
|
583
583
|
end
|
|
584
584
|
|
|
585
585
|
# Delete an ad comment
|
|
586
|
-
# 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.
|
|
586
|
+
# Delete your own TikTok ad comment or reply. TikTok must return can_delete=true for the comment. Other users' comments can be hidden instead. Unknown identity and video item fields are resolved only when needed for this action, then persisted for reuse. Comment-specific fields take precedence. If TikTok no longer returns the ad needed to resolve identity, 404 ad_not_found directs you to check deletion or archival in TikTok Ads Manager. Listing can still succeed. Unsupported or unavailable identity returns 403 feature_not_available. Denied access to ad details returns 403 insufficient_permissions with reconnect guidance and the upstream platformError. 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.
|
|
587
587
|
# @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
|
|
588
588
|
# @param comment_id [String] TikTok comment ID from the ad comment listing.
|
|
589
589
|
# @param [Hash] opts the optional parameters
|
|
@@ -886,7 +886,7 @@ module Zernio
|
|
|
886
886
|
end
|
|
887
887
|
|
|
888
888
|
# List comments on an ad
|
|
889
|
-
# 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
|
|
889
|
+
# 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. Listing needs no identity or video item ID. When the ad group is stored, each page makes one comment-list call and no ad-detail lookup, including for external ads that TikTok no longer returns from ad details. `meta.tiktokItemId: null` does not prevent listing. If the ad group is missing, Zernio fetches ad details; unavailable details return 404 ad_not_found, and no ad group returns 400 ad_not_commentable. TikTok returns replies as separate comments with `parentId`; nested reply fetching is not supported. `canReply` requires a first-level comment, comment-management permission, a video item ID and a supported TT_USER or CUSTOMIZED_USER identity. `canDelete` requires TikTok's own-comment deletion capability, a video item ID and a supported identity. Both flags are false when identity or item is unknown. Listing uses stored and comment-specific fields without fetching identity. A direct reply or delete request can lazily resolve missing fields and succeed even after a false flag. `canHide` is true because visibility changes need only advertiser and comment IDs. `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.
|
|
890
890
|
# @param ad_id [String] Internal Zernio ad ID or indexed platform ad/post ID.
|
|
891
891
|
# @param [Hash] opts the optional parameters
|
|
892
892
|
# @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.
|
|
@@ -901,7 +901,7 @@ module Zernio
|
|
|
901
901
|
end
|
|
902
902
|
|
|
903
903
|
# List comments on an ad
|
|
904
|
-
# 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
|
|
904
|
+
# 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. Listing needs no identity or video item ID. When the ad group is stored, each page makes one comment-list call and no ad-detail lookup, including for external ads that TikTok no longer returns from ad details. `meta.tiktokItemId: null` does not prevent listing. If the ad group is missing, Zernio fetches ad details; unavailable details return 404 ad_not_found, and no ad group returns 400 ad_not_commentable. TikTok returns replies as separate comments with `parentId`; nested reply fetching is not supported. `canReply` requires a first-level comment, comment-management permission, a video item ID and a supported TT_USER or CUSTOMIZED_USER identity. `canDelete` requires TikTok's own-comment deletion capability, a video item ID and a supported identity. Both flags are false when identity or item is unknown. Listing uses stored and comment-specific fields without fetching identity. A direct reply or delete request can lazily resolve missing fields and succeed even after a false flag. `canHide` is true because visibility changes need only advertiser and comment IDs. `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.
|
|
905
905
|
# @param ad_id [String] Internal Zernio ad ID or indexed platform ad/post ID.
|
|
906
906
|
# @param [Hash] opts the optional parameters
|
|
907
907
|
# @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.
|
|
@@ -1235,7 +1235,7 @@ module Zernio
|
|
|
1235
1235
|
return data, status_code, headers
|
|
1236
1236
|
end
|
|
1237
1237
|
|
|
1238
|
-
#
|
|
1238
|
+
# Get DSA recommendations
|
|
1239
1239
|
# Returns Meta's suggested beneficiary/payor names for an ad account, derived by Meta from the account's recent activity. Useful for prefilling `dsaBeneficiary`/`dsaPayor` inputs, or the defaults sent to `PATCH /v1/ads/accounts`, in your own UI. Meta returns a single flat list. Entries are not labeled as beneficiary or payor, and since these are legal disclosures Zernio never applies them automatically: let your user pick the right entity. The list may be empty for accounts with little activity. Meta accounts only.
|
|
1240
1240
|
# @param account_id [String] Account ID (metaads, or a facebook/instagram posting account)
|
|
1241
1241
|
# @param ad_account_id [String] Meta ad account ID (act_...)
|
|
@@ -1246,7 +1246,7 @@ module Zernio
|
|
|
1246
1246
|
data
|
|
1247
1247
|
end
|
|
1248
1248
|
|
|
1249
|
-
#
|
|
1249
|
+
# Get DSA recommendations
|
|
1250
1250
|
# Returns Meta's suggested beneficiary/payor names for an ad account, derived by Meta from the account's recent activity. Useful for prefilling `dsaBeneficiary`/`dsaPayor` inputs, or the defaults sent to `PATCH /v1/ads/accounts`, in your own UI. Meta returns a single flat list. Entries are not labeled as beneficiary or payor, and since these are legal disclosures Zernio never applies them automatically: let your user pick the right entity. The list may be empty for accounts with little activity. Meta accounts only.
|
|
1251
1251
|
# @param account_id [String] Account ID (metaads, or a facebook/instagram posting account)
|
|
1252
1252
|
# @param ad_account_id [String] Meta ad account ID (act_...)
|
|
@@ -1465,7 +1465,7 @@ module Zernio
|
|
|
1465
1465
|
end
|
|
1466
1466
|
|
|
1467
1467
|
# Hide or unhide an ad comment
|
|
1468
|
-
# 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.
|
|
1468
|
+
# Hide or restore a TikTok ad comment. Send hidden=true to hide it or hidden=false to make it public again. Identity and video item ID are not required; no identity lookup is performed. 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.
|
|
1469
1469
|
# @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
|
|
1470
1470
|
# @param comment_id [String] TikTok comment ID from the ad comment listing.
|
|
1471
1471
|
# @param hide_ad_comment_request [HideAdCommentRequest]
|
|
@@ -1479,7 +1479,7 @@ module Zernio
|
|
|
1479
1479
|
end
|
|
1480
1480
|
|
|
1481
1481
|
# Hide or unhide an ad comment
|
|
1482
|
-
# 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.
|
|
1482
|
+
# Hide or restore a TikTok ad comment. Send hidden=true to hide it or hidden=false to make it public again. Identity and video item ID are not required; no identity lookup is performed. 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.
|
|
1483
1483
|
# @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
|
|
1484
1484
|
# @param comment_id [String] TikTok comment ID from the ad comment listing.
|
|
1485
1485
|
# @param hide_ad_comment_request [HideAdCommentRequest]
|
|
@@ -2407,7 +2407,7 @@ module Zernio
|
|
|
2407
2407
|
return data, status_code, headers
|
|
2408
2408
|
end
|
|
2409
2409
|
|
|
2410
|
-
#
|
|
2410
|
+
# List high-demand periods
|
|
2411
2411
|
# Scheduled budget increases (Meta's budget-scheduling API). The Graph edge lives on the campaign and ad-set nodes only, so exactly one of `campaignId` / `adSetId` (platform ids) is required. Rows returned verbatim (budget_value, budget_value_type, time window, recurrence).
|
|
2412
2412
|
# @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
|
|
2413
2413
|
# @param [Hash] opts the optional parameters
|
|
@@ -2421,7 +2421,7 @@ module Zernio
|
|
|
2421
2421
|
data
|
|
2422
2422
|
end
|
|
2423
2423
|
|
|
2424
|
-
#
|
|
2424
|
+
# List high-demand periods
|
|
2425
2425
|
# Scheduled budget increases (Meta's budget-scheduling API). The Graph edge lives on the campaign and ad-set nodes only, so exactly one of `campaignId` / `adSetId` (platform ids) is required. Rows returned verbatim (budget_value, budget_value_type, time window, recurrence).
|
|
2426
2426
|
# @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
|
|
2427
2427
|
# @param [Hash] opts the optional parameters
|
|
@@ -2569,6 +2569,81 @@ module Zernio
|
|
|
2569
2569
|
return data, status_code, headers
|
|
2570
2570
|
end
|
|
2571
2571
|
|
|
2572
|
+
# List TikTok ad pixels
|
|
2573
|
+
# Lists pixels and their supported optimization events for a connected TikTok Ads account. The advertiser defaults to the first advertiser on the connection. Reconnect if Pixel Management permission has not been granted.
|
|
2574
|
+
# @param account_id [String] Zernio SocialAccount ID.
|
|
2575
|
+
# @param [Hash] opts the optional parameters
|
|
2576
|
+
# @option opts [String] :advertiser_id Advertiser belonging to this connection.
|
|
2577
|
+
# @option opts [String] :code Filter by a Pixel Code.
|
|
2578
|
+
# @return [ListTikTokAdPixels200Response]
|
|
2579
|
+
def list_tik_tok_ad_pixels(account_id, opts = {})
|
|
2580
|
+
data, _status_code, _headers = list_tik_tok_ad_pixels_with_http_info(account_id, opts)
|
|
2581
|
+
data
|
|
2582
|
+
end
|
|
2583
|
+
|
|
2584
|
+
# List TikTok ad pixels
|
|
2585
|
+
# Lists pixels and their supported optimization events for a connected TikTok Ads account. The advertiser defaults to the first advertiser on the connection. Reconnect if Pixel Management permission has not been granted.
|
|
2586
|
+
# @param account_id [String] Zernio SocialAccount ID.
|
|
2587
|
+
# @param [Hash] opts the optional parameters
|
|
2588
|
+
# @option opts [String] :advertiser_id Advertiser belonging to this connection.
|
|
2589
|
+
# @option opts [String] :code Filter by a Pixel Code.
|
|
2590
|
+
# @return [Array<(ListTikTokAdPixels200Response, Integer, Hash)>] ListTikTokAdPixels200Response data, response status code and response headers
|
|
2591
|
+
def list_tik_tok_ad_pixels_with_http_info(account_id, opts = {})
|
|
2592
|
+
if @api_client.config.debugging
|
|
2593
|
+
@api_client.config.logger.debug 'Calling API: AdAccountsApi.list_tik_tok_ad_pixels ...'
|
|
2594
|
+
end
|
|
2595
|
+
# verify the required parameter 'account_id' is set
|
|
2596
|
+
if @api_client.config.client_side_validation && account_id.nil?
|
|
2597
|
+
fail ArgumentError, "Missing the required parameter 'account_id' when calling AdAccountsApi.list_tik_tok_ad_pixels"
|
|
2598
|
+
end
|
|
2599
|
+
pattern = Regexp.new(/^[a-fA-F0-9]{24}$/)
|
|
2600
|
+
if @api_client.config.client_side_validation && account_id !~ pattern
|
|
2601
|
+
fail ArgumentError, "invalid value for 'account_id' when calling AdAccountsApi.list_tik_tok_ad_pixels, must conform to the pattern #{pattern}."
|
|
2602
|
+
end
|
|
2603
|
+
|
|
2604
|
+
# resource path
|
|
2605
|
+
local_var_path = '/v1/ads/pixels'
|
|
2606
|
+
|
|
2607
|
+
# query parameters
|
|
2608
|
+
query_params = opts[:query_params] || {}
|
|
2609
|
+
query_params[:'accountId'] = account_id
|
|
2610
|
+
query_params[:'advertiserId'] = opts[:'advertiser_id'] if !opts[:'advertiser_id'].nil?
|
|
2611
|
+
query_params[:'code'] = opts[:'code'] if !opts[:'code'].nil?
|
|
2612
|
+
|
|
2613
|
+
# header parameters
|
|
2614
|
+
header_params = opts[:header_params] || {}
|
|
2615
|
+
# HTTP header 'Accept' (if needed)
|
|
2616
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
2617
|
+
|
|
2618
|
+
# form parameters
|
|
2619
|
+
form_params = opts[:form_params] || {}
|
|
2620
|
+
|
|
2621
|
+
# http body (model)
|
|
2622
|
+
post_body = opts[:debug_body]
|
|
2623
|
+
|
|
2624
|
+
# return_type
|
|
2625
|
+
return_type = opts[:debug_return_type] || 'ListTikTokAdPixels200Response'
|
|
2626
|
+
|
|
2627
|
+
# auth_names
|
|
2628
|
+
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
|
2629
|
+
|
|
2630
|
+
new_options = opts.merge(
|
|
2631
|
+
:operation => :"AdAccountsApi.list_tik_tok_ad_pixels",
|
|
2632
|
+
:header_params => header_params,
|
|
2633
|
+
:query_params => query_params,
|
|
2634
|
+
:form_params => form_params,
|
|
2635
|
+
:body => post_body,
|
|
2636
|
+
:auth_names => auth_names,
|
|
2637
|
+
:return_type => return_type
|
|
2638
|
+
)
|
|
2639
|
+
|
|
2640
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
2641
|
+
if @api_client.config.debugging
|
|
2642
|
+
@api_client.config.logger.debug "API called: AdAccountsApi#list_tik_tok_ad_pixels\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
2643
|
+
end
|
|
2644
|
+
return data, status_code, headers
|
|
2645
|
+
end
|
|
2646
|
+
|
|
2572
2647
|
# List value rule sets
|
|
2573
2648
|
# Lists the ad account's value rule sets (Meta's `/act_X/value_rule_set`). A value rule set adjusts the auction bid up or down for audience segments you value differently; attach one to an ad set with `valueRuleSetId` on `POST /v1/ads/create` or `PUT /v1/ads/ad-sets/{adSetId}`. Rows are returned in the same camelCase shape the `PUT` body takes, ids included, so a set round-trips 1:1: **the update is a full replace, not a patch**, so you GET, mutate and send the whole thing back. Limits: 6 rule sets per ad account, 10 rules per set, 4 criteria per rule. **Rule order is semantic.** Rules are evaluated in array order and only the FIRST matching rule adjusts the bid for an overlapping audience. The order you send is the order that is stored and returned. Eligibility: value rule sets apply only to ad sets on the `LOWEST_COST_WITHOUT_CAP` (auto-bid) or `COST_CAP` bid strategies. Meta rejects the rest server-side.
|
|
2574
2649
|
# @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
|
|
@@ -2938,7 +3013,7 @@ module Zernio
|
|
|
2938
3013
|
end
|
|
2939
3014
|
|
|
2940
3015
|
# Reply to an ad comment
|
|
2941
|
-
# 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.
|
|
3016
|
+
# 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. Unknown identity and video item fields are resolved only when needed for this action, then persisted for reuse. Comment-specific fields take precedence. If TikTok no longer returns the ad needed to resolve identity, 404 ad_not_found directs you to check deletion or archival in TikTok Ads Manager. Listing can still succeed. Unsupported or unavailable identity returns 403 feature_not_available. Denied access to ad details returns 403 insufficient_permissions with reconnect guidance and the upstream platformError. 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.
|
|
2942
3017
|
# @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
|
|
2943
3018
|
# @param comment_id [String] TikTok comment ID from the ad comment listing.
|
|
2944
3019
|
# @param reply_to_ad_comment_request [ReplyToAdCommentRequest]
|
|
@@ -2952,7 +3027,7 @@ module Zernio
|
|
|
2952
3027
|
end
|
|
2953
3028
|
|
|
2954
3029
|
# Reply to an ad comment
|
|
2955
|
-
# 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.
|
|
3030
|
+
# 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. Unknown identity and video item fields are resolved only when needed for this action, then persisted for reuse. Comment-specific fields take precedence. If TikTok no longer returns the ad needed to resolve identity, 404 ad_not_found directs you to check deletion or archival in TikTok Ads Manager. Listing can still succeed. Unsupported or unavailable identity returns 403 feature_not_available. Denied access to ad details returns 403 insufficient_permissions with reconnect guidance and the upstream platformError. 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.
|
|
2956
3031
|
# @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
|
|
2957
3032
|
# @param comment_id [String] TikTok comment ID from the ad comment listing.
|
|
2958
3033
|
# @param reply_to_ad_comment_request [ReplyToAdCommentRequest]
|
|
@@ -19,7 +19,7 @@ module Zernio
|
|
|
19
19
|
def initialize(api_client = ApiClient.default)
|
|
20
20
|
@api_client = api_client
|
|
21
21
|
end
|
|
22
|
-
# Add Search
|
|
22
|
+
# Add Search ad-group keywords
|
|
23
23
|
# Adds one or more keyword criteria to an existing Google Search ad group, without touching the keywords already there (unlike the whole-set diff on `PUT /v1/ads/{adId}`, `keywords`/`negativeKeywords` in `platformSpecificData`, which replaces the set). Set `negative: true` to add ad-group-level negatives instead of positive keywords.
|
|
24
24
|
# @param add_ad_keywords_request [AddAdKeywordsRequest]
|
|
25
25
|
# @param [Hash] opts the optional parameters
|
|
@@ -29,7 +29,7 @@ module Zernio
|
|
|
29
29
|
data
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
# Add Search
|
|
32
|
+
# Add Search ad-group keywords
|
|
33
33
|
# Adds one or more keyword criteria to an existing Google Search ad group, without touching the keywords already there (unlike the whole-set diff on `PUT /v1/ads/{adId}`, `keywords`/`negativeKeywords` in `platformSpecificData`, which replaces the set). Set `negative: true` to add ad-group-level negatives instead of positive keywords.
|
|
34
34
|
# @param add_ad_keywords_request [AddAdKeywordsRequest]
|
|
35
35
|
# @param [Hash] opts the optional parameters
|
|
@@ -538,7 +538,7 @@ module Zernio
|
|
|
538
538
|
return data, status_code, headers
|
|
539
539
|
end
|
|
540
540
|
|
|
541
|
-
# Create
|
|
541
|
+
# Create portfolio bid strategy
|
|
542
542
|
# Creates a standalone bid strategy shared across campaigns. Attach it to a campaign with `portfolioBidStrategyId` on POST /v1/ads/create, PUT /v1/ads/campaigns/{campaignId}, or PUT /v1/ads/ad-sets/{adSetId}. Attaching a strategy aligned to a shared budget fails there with a 400 (Google's `BIDDING_STRATEGY_AND_BUDGET_MUST_BE_ALIGNED`); this is not retryable.
|
|
543
543
|
# @param create_bid_strategy_request [CreateBidStrategyRequest]
|
|
544
544
|
# @param [Hash] opts the optional parameters
|
|
@@ -548,7 +548,7 @@ module Zernio
|
|
|
548
548
|
data
|
|
549
549
|
end
|
|
550
550
|
|
|
551
|
-
# Create
|
|
551
|
+
# Create portfolio bid strategy
|
|
552
552
|
# Creates a standalone bid strategy shared across campaigns. Attach it to a campaign with `portfolioBidStrategyId` on POST /v1/ads/create, PUT /v1/ads/campaigns/{campaignId}, or PUT /v1/ads/ad-sets/{adSetId}. Attaching a strategy aligned to a shared budget fails there with a 400 (Google's `BIDDING_STRATEGY_AND_BUDGET_MUST_BE_ALIGNED`); this is not retryable.
|
|
553
553
|
# @param create_bid_strategy_request [CreateBidStrategyRequest]
|
|
554
554
|
# @param [Hash] opts the optional parameters
|
|
@@ -1186,7 +1186,7 @@ module Zernio
|
|
|
1186
1186
|
return data, status_code, headers
|
|
1187
1187
|
end
|
|
1188
1188
|
|
|
1189
|
-
#
|
|
1189
|
+
# Get live ad-set details
|
|
1190
1190
|
# Reads the ad set live from Meta, returned verbatim. The default projection includes `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING; Meta omits its `status` key on paused ad sets), delivery settings, budgets, schedule and targeting. `fields` is a raw-passthrough override; unknown fields return Meta's 400 verbatim.
|
|
1191
1191
|
# @param ad_set_id [String] Meta ad set id (platformAdSetId).
|
|
1192
1192
|
# @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
|
|
@@ -1198,7 +1198,7 @@ module Zernio
|
|
|
1198
1198
|
data
|
|
1199
1199
|
end
|
|
1200
1200
|
|
|
1201
|
-
#
|
|
1201
|
+
# Get live ad-set details
|
|
1202
1202
|
# Reads the ad set live from Meta, returned verbatim. The default projection includes `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING; Meta omits its `status` key on paused ad sets), delivery settings, budgets, schedule and targeting. `fields` is a raw-passthrough override; unknown fields return Meta's 400 verbatim.
|
|
1203
1203
|
# @param ad_set_id [String] Meta ad set id (platformAdSetId).
|
|
1204
1204
|
# @param account_id [String] Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
|
|
@@ -2158,7 +2158,7 @@ module Zernio
|
|
|
2158
2158
|
return data, status_code, headers
|
|
2159
2159
|
end
|
|
2160
2160
|
|
|
2161
|
-
# List
|
|
2161
|
+
# List portfolio bid strategies
|
|
2162
2162
|
# Bidding strategy report: type, status, campaign count, clicks, cost, cost per conversion, impressions, average CPC and conversions over the date range (default last 30 days). Reads Google's `bidding_strategy` resource, cached for the quota window. Draws on the shared Google Ads operations budget. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
|
|
2163
2163
|
# @param account_id [String] Google ads SocialAccount id.
|
|
2164
2164
|
# @param [Hash] opts the optional parameters
|
|
@@ -2171,7 +2171,7 @@ module Zernio
|
|
|
2171
2171
|
data
|
|
2172
2172
|
end
|
|
2173
2173
|
|
|
2174
|
-
# List
|
|
2174
|
+
# List portfolio bid strategies
|
|
2175
2175
|
# Bidding strategy report: type, status, campaign count, clicks, cost, cost per conversion, impressions, average CPC and conversions over the date range (default last 30 days). Reads Google's `bidding_strategy` resource, cached for the quota window. Draws on the shared Google Ads operations budget. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
|
|
2176
2176
|
# @param account_id [String] Google ads SocialAccount id.
|
|
2177
2177
|
# @param [Hash] opts the optional parameters
|
|
@@ -3503,7 +3503,7 @@ module Zernio
|
|
|
3503
3503
|
return data, status_code, headers
|
|
3504
3504
|
end
|
|
3505
3505
|
|
|
3506
|
-
# Update
|
|
3506
|
+
# Update portfolio bid strategy
|
|
3507
3507
|
# Renames or retargets a portfolio bid strategy. The strategy's status is output only on Google's side, so it cannot be changed here; remove a strategy in Google Ads. `type` is only needed alongside `targetCpa`/`targetRoas` to disambiguate the field Google writes to (TARGET_CPA and MAXIMIZE_CONVERSIONS both take a target CPA; TARGET_ROAS and MAXIMIZE_CONVERSION_VALUE both take a target ROAS); the strategy's family is otherwise immutable once created.
|
|
3508
3508
|
# @param strategy_id [String] Numeric Google Ads bid strategy id.
|
|
3509
3509
|
# @param update_bid_strategy_request [UpdateBidStrategyRequest]
|
|
@@ -3514,7 +3514,7 @@ module Zernio
|
|
|
3514
3514
|
data
|
|
3515
3515
|
end
|
|
3516
3516
|
|
|
3517
|
-
# Update
|
|
3517
|
+
# Update portfolio bid strategy
|
|
3518
3518
|
# Renames or retargets a portfolio bid strategy. The strategy's status is output only on Google's side, so it cannot be changed here; remove a strategy in Google Ads. `type` is only needed alongside `targetCpa`/`targetRoas` to disambiguate the field Google writes to (TARGET_CPA and MAXIMIZE_CONVERSIONS both take a target CPA; TARGET_ROAS and MAXIMIZE_CONVERSION_VALUE both take a target ROAS); the strategy's family is otherwise immutable once created.
|
|
3519
3519
|
# @param strategy_id [String] Numeric Google Ads bid strategy id.
|
|
3520
3520
|
# @param update_bid_strategy_request [UpdateBidStrategyRequest]
|