late-sdk 0.0.908 → 0.0.909

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 62dbb90fbfabfd6315efd18af91db31687d9f771780b8c2b1fb8d285846a6bda
4
- data.tar.gz: 18586efd5787dbcee4024e1c6e02e816118284413b822f4be0ef504050488fe0
3
+ metadata.gz: 974e77513dba9112d9e110a423ce5297cd5f0527ed74b170e152796ea936db4a
4
+ data.tar.gz: 468ad164a81258985f0539aa1bb46d3e88021834505f5b4826a5c9cda8f6a441
5
5
  SHA512:
6
- metadata.gz: 38912882c7da96bd189576b840f9680fd7a7989dac260f83a03179a2863c6ec4fa5238c3f88f65c9009f8256c9e265e822c1e72a4b04d42de51c37f6c8007f87
7
- data.tar.gz: e5a9cd81e4db3687695af930b796beaf6096ce5ea5a044e90fc059aed4217e96a73ddfdd43bbae19d327889c73ad89113993dce7c96ad76c84001377bba45027
6
+ metadata.gz: 29b970c78f1ccf37b6822e9206bf55c67a183dac2b292aefb6a630eabd8a92bf8b6649923269f732f45d8863e6623cbf19ebf262e00b551292d23197f7e7409b
7
+ data.tar.gz: 826f9fae0064573311d9f19aa06937fe62e17ed2848dd5a149f55a265aba841ff1e780d56d0c5c9ebffca93d9b6cd2af05a685e8b18b00b152f83698123114f7
@@ -611,7 +611,7 @@ end
611
611
 
612
612
  Delete an ad comment
613
613
 
614
- 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.
614
+ 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.
615
615
 
616
616
  ### Examples
617
617
 
@@ -907,7 +907,7 @@ end
907
907
 
908
908
  List comments on an ad
909
909
 
910
- 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.
910
+ 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.
911
911
 
912
912
  ### Examples
913
913
 
@@ -1434,7 +1434,7 @@ end
1434
1434
 
1435
1435
  Hide or unhide an ad comment
1436
1436
 
1437
- 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.
1437
+ 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.
1438
1438
 
1439
1439
  ### Examples
1440
1440
 
@@ -2829,7 +2829,7 @@ end
2829
2829
 
2830
2830
  Reply to an ad comment
2831
2831
 
2832
- 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.
2832
+ 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.
2833
2833
 
2834
2834
  ### Examples
2835
2835
 
@@ -7,7 +7,7 @@
7
7
  | **country** | **String** | | [optional] |
8
8
  | **number_type** | **String** | | [optional] |
9
9
  | **available** | **Boolean** | Whether deliverable voice inventory exists right now. | [optional] |
10
- | **pre_orderable** | **Boolean** | Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and the carrier sources the number after review (usually about 3 weeks, never guaranteed). Only document tiers (3/4) qualify. | [optional] |
10
+ | **pre_orderable** | **Boolean** | Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and we buy regular stock the moment it returns, otherwise the carrier sources the number (usually 2 to 4 weeks, never guaranteed). Only document tiers (3/4) qualify. | [optional] |
11
11
  | **address_constraint** | **String** | | [optional] |
12
12
  | **areas** | **Array<String>** | For `geo` only: the area(s) the registered address must be in. | [optional] |
13
13
  | **area_options** | [**Array<CheckPhoneNumberAvailability200ResponseAreaOptionsInner>**](CheckPhoneNumberAvailability200ResponseAreaOptionsInner.md) | Live inventory grouped by area code. For US and CA this is the full country inventory (every area code with stock, recognizable metros listed first, then alphabetical); other countries are ordered largest stock first; they list the areas in the latest inventory page (up to 500 numbers, which for most countries is the entire pool). Empty when out of stock (or the area lookup failed). Pass a chosen `ndc` as `areaCode` on POST /v1/phone-numbers/purchase (or on the KYC submit for regulated countries) to require that area. | [optional] |
@@ -9,7 +9,7 @@
9
9
  | **ad_id** | **String** | Internal Zernio ad ID. | |
10
10
  | **platform_ad_id** | **String** | Platform ad ID. | [optional] |
11
11
  | **effective_story_id** | **String** | Underlying post ID the comments belong to. effective_object_story_id for the Facebook side, effective_instagram_media_id for the Instagram side. | [optional] |
12
- | **tiktok_item_id** | **String** | TikTok-only video item ID. Null when the ad and comments do not expose it. | [optional] |
12
+ | **tiktok_item_id** | **String** | TikTok-only video item ID from stored ad fields or returned comments. Null does not prevent listing; ad details are not fetched to populate it. | [optional] |
13
13
  | **since** | **Date** | TikTok-only resolved start date. | [optional] |
14
14
  | **_until** | **Date** | TikTok-only resolved end date. | [optional] |
15
15
  | **facebook_account_id** | **String** | Facebook-only. The connected Facebook Page SocialAccount these comments were read through. Pass it as `accountId` (with `effectiveStoryId` as the postId) to /v1/inbox/comments to reply/hide/delete. Null when no connected Page was used (then moderation isn't possible). | [optional] |
@@ -13,7 +13,7 @@
13
13
  | **calls_available** | **Boolean** | | [optional] |
14
14
  | **in_stock** | **Boolean** | | [optional] |
15
15
  | **fulfilment** | **String** | `request`: the carrier stocks this type nowhere and only sources it to order, so it is always a pre-order. | [optional] |
16
- | **pre_orderable** | **Boolean** | Out of stock but orderable anyway. Submit KYC as usual (POST /v1/phone-numbers/kyc) and the carrier sources the number after review, usually about 3 weeks and never guaranteed. Only document tiers (3/4) qualify, and nothing is billed until the number is active. | [optional] |
16
+ | **pre_orderable** | **Boolean** | Out of stock but orderable anyway. Submit KYC as usual (POST /v1/phone-numbers/kyc): we buy regular stock the moment it returns, otherwise the carrier sources the number. Usually 2 to 4 weeks, never guaranteed. Only document tiers (3/4) qualify, and nothing is billed until the number is active. | [optional] |
17
17
 
18
18
  ## Example
19
19
 
@@ -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 carrier sources it (usually about 3 weeks) and is not billed until active. A pre-order is one number: `quantity` above 1 is rejected with 400. | [optional] |
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
 
@@ -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 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.
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 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.
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.
@@ -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]
@@ -2938,7 +2938,7 @@ module Zernio
2938
2938
  end
2939
2939
 
2940
2940
  # 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.
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. 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
2942
  # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
2943
2943
  # @param comment_id [String] TikTok comment ID from the ad comment listing.
2944
2944
  # @param reply_to_ad_comment_request [ReplyToAdCommentRequest]
@@ -2952,7 +2952,7 @@ module Zernio
2952
2952
  end
2953
2953
 
2954
2954
  # 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.
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. 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
2956
  # @param ad_id [String] Internal Zernio ad ID or indexed platform ad ID.
2957
2957
  # @param comment_id [String] TikTok comment ID from the ad comment listing.
2958
2958
  # @param reply_to_ad_comment_request [ReplyToAdCommentRequest]
@@ -22,7 +22,7 @@ module Zernio
22
22
  # Whether deliverable voice inventory exists right now.
23
23
  attr_accessor :available
24
24
 
25
- # Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and the carrier sources the number after review (usually about 3 weeks, never guaranteed). Only document tiers (3/4) qualify.
25
+ # Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and we buy regular stock the moment it returns, otherwise the carrier sources the number (usually 2 to 4 weeks, never guaranteed). Only document tiers (3/4) qualify.
26
26
  attr_accessor :pre_orderable
27
27
 
28
28
  attr_accessor :address_constraint
@@ -30,7 +30,7 @@ module Zernio
30
30
  # Underlying post ID the comments belong to. effective_object_story_id for the Facebook side, effective_instagram_media_id for the Instagram side.
31
31
  attr_accessor :effective_story_id
32
32
 
33
- # TikTok-only video item ID. Null when the ad and comments do not expose it.
33
+ # TikTok-only video item ID from stored ad fields or returned comments. Null does not prevent listing; ad details are not fetched to populate it.
34
34
  attr_accessor :tiktok_item_id
35
35
 
36
36
  # TikTok-only resolved start date.
@@ -37,7 +37,7 @@ module Zernio
37
37
  # `request`: the carrier stocks this type nowhere and only sources it to order, so it is always a pre-order.
38
38
  attr_accessor :fulfilment
39
39
 
40
- # Out of stock but orderable anyway. Submit KYC as usual (POST /v1/phone-numbers/kyc) and the carrier sources the number after review, usually about 3 weeks and never guaranteed. Only document tiers (3/4) qualify, and nothing is billed until the number is active.
40
+ # Out of stock but orderable anyway. Submit KYC as usual (POST /v1/phone-numbers/kyc): we buy regular stock the moment it returns, otherwise the carrier sources the number. Usually 2 to 4 weeks, never guaranteed. Only document tiers (3/4) qualify, and nothing is billed until the number is active.
41
41
  attr_accessor :pre_orderable
42
42
 
43
43
  class EnumAttributeValidator
@@ -17,7 +17,7 @@ module Zernio
17
17
  class SubmitPhoneNumberKyc200Response < ApiModelBase
18
18
  attr_accessor :status
19
19
 
20
- # True when nothing was in stock and this submission placed a pre-order. The number stays `pending_regulatory` until the carrier sources it (usually about 3 weeks) and is not billed until active. A pre-order is one number: `quantity` above 1 is rejected with 400.
20
+ # 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.
21
21
  attr_accessor :pre_order
22
22
 
23
23
  attr_accessor :phone_number
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.908'
14
+ VERSION = '0.0.909'
15
15
  end
data/openapi.yaml CHANGED
@@ -36337,7 +36337,7 @@ paths:
36337
36337
  callsAvailable: { type: boolean }
36338
36338
  inStock: { type: boolean }
36339
36339
  fulfilment: { type: string, enum: [instant, request], description: "`request`: the carrier stocks this type nowhere and only sources it to order, so it is always a pre-order." }
36340
- preOrderable: { type: boolean, description: "Out of stock but orderable anyway. Submit KYC as usual (POST /v1/phone-numbers/kyc) and the carrier sources the number after review, usually about 3 weeks and never guaranteed. Only document tiers (3/4) qualify, and nothing is billed until the number is active." }
36340
+ preOrderable: { type: boolean, description: "Out of stock but orderable anyway. Submit KYC as usual (POST /v1/phone-numbers/kyc): we buy regular stock the moment it returns, otherwise the carrier sources the number. Usually 2 to 4 weeks, never guaranteed. Only document tiers (3/4) qualify, and nothing is billed until the number is active." }
36341
36341
  '401': { $ref: '#/components/responses/Unauthorized' }
36342
36342
 
36343
36343
  /v1/phone-numbers/available:
@@ -36416,7 +36416,7 @@ paths:
36416
36416
  country: { type: string }
36417
36417
  numberType: { type: string }
36418
36418
  available: { type: boolean, description: Whether deliverable voice inventory exists right now. }
36419
- preOrderable: { type: boolean, description: "Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and the carrier sources the number after review (usually about 3 weeks, never guaranteed). Only document tiers (3/4) qualify." }
36419
+ preOrderable: { type: boolean, description: "Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and we buy regular stock the moment it returns, otherwise the carrier sources the number (usually 2 to 4 weeks, never guaranteed). Only document tiers (3/4) qualify." }
36420
36420
  addressConstraint: { type: string, enum: [geo, country, none] }
36421
36421
  areas:
36422
36422
  type: array
@@ -36802,7 +36802,7 @@ paths:
36802
36802
  country: { type: string }
36803
36803
  numberType: { type: string }
36804
36804
  available: { type: boolean, description: Whether deliverable voice inventory exists right now. }
36805
- preOrderable: { type: boolean, description: "Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and the carrier sources the number after review (usually about 3 weeks, never guaranteed). Only document tiers (3/4) qualify." }
36805
+ preOrderable: { type: boolean, description: "Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and we buy regular stock the moment it returns, otherwise the carrier sources the number (usually 2 to 4 weeks, never guaranteed). Only document tiers (3/4) qualify." }
36806
36806
  addressConstraint: { type: string, enum: [geo, country, none] }
36807
36807
  areas:
36808
36808
  type: array
@@ -36987,7 +36987,7 @@ paths:
36987
36987
  type: object
36988
36988
  properties:
36989
36989
  status: { type: string, enum: [kyc_submitted, kyc_reused, kyc_already_submitted] }
36990
- preOrder: { type: boolean, description: "True when nothing was in stock and this submission placed a pre-order. The number stays `pending_regulatory` until the carrier sources it (usually about 3 weeks) and is not billed until active. A pre-order is one number: `quantity` above 1 is rejected with 400." }
36990
+ preOrder: { type: boolean, description: "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." }
36991
36991
  phoneNumber:
36992
36992
  type: object
36993
36993
  description: The first/primary number, kept at the top level for backward compatibility. See `numbers` for the full set when `quantity` > 1.
@@ -37981,7 +37981,7 @@ paths:
37981
37981
  type: object
37982
37982
  properties:
37983
37983
  status: { type: string, enum: [kyc_submitted, kyc_reused, kyc_already_submitted] }
37984
- preOrder: { type: boolean, description: "True when nothing was in stock and this submission placed a pre-order. The number stays `pending_regulatory` until the carrier sources it (usually about 3 weeks) and is not billed until active. A pre-order is one number: `quantity` above 1 is rejected with 400." }
37984
+ preOrder: { type: boolean, description: "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." }
37985
37985
  phoneNumber:
37986
37986
  type: object
37987
37987
  description: The first/primary number, kept at the top level for backward compatibility. See `numbers` for the full set when `quantity` > 1.
@@ -46675,12 +46675,22 @@ paths:
46675
46675
  each page to this ad. A page can be empty while `pagination.hasMore` is true.
46676
46676
  Reuse `pagination.cursor` with the same `limit`; the cursor retains the date window.
46677
46677
  `placement` is Meta-only and returns a 400 for TikTok.
46678
+ Listing needs no identity or video item ID. When the ad group is stored, each
46679
+ page makes one comment-list call and no ad-detail lookup, including for external
46680
+ ads that TikTok no longer returns from ad details. `meta.tiktokItemId: null`
46681
+ does not prevent listing. If the ad group is missing, Zernio fetches ad details;
46682
+ unavailable details return 404 ad_not_found, and no ad group returns 400 ad_not_commentable.
46678
46683
 
46679
46684
  TikTok returns replies as separate comments with `parentId`; nested reply fetching
46680
- is not supported. `canReply` requires a first-level comment and an identity with
46681
- comment-management permission. `canDelete` reflects TikTok's own-comment deletion
46682
- capability. `canHide` is supported and `canLike` is false. Use the ad comment
46683
- reply, hide and delete operations below to moderate TikTok comments.
46685
+ is not supported. `canReply` requires a first-level comment, comment-management
46686
+ permission, a video item ID and a supported TT_USER or CUSTOMIZED_USER identity.
46687
+ `canDelete` requires TikTok's own-comment deletion capability, a video item ID
46688
+ and a supported identity. Both flags are false when identity or item is unknown.
46689
+ Listing uses stored and comment-specific fields without fetching identity.
46690
+ A direct reply or delete request can lazily resolve missing fields and succeed
46691
+ even after a false flag. `canHide` is true because visibility changes need only
46692
+ advertiser and comment IDs. `canLike` is false. Use the ad comment reply, hide
46693
+ and delete operations below to moderate TikTok comments.
46684
46694
  Other platforms return feature_not_available.
46685
46695
 
46686
46696
  Requires the Ads add-on. Response shape matches GET /v1/inbox/comments/{postId}.
@@ -46732,7 +46742,7 @@ paths:
46732
46742
  description: "Underlying post ID the comments belong to. effective_object_story_id for the Facebook side, effective_instagram_media_id for the Instagram side."
46733
46743
  tiktokItemId:
46734
46744
  type: [string, "null"]
46735
- description: "TikTok-only video item ID. Null when the ad and comments do not expose it."
46745
+ description: "TikTok-only video item ID from stored ad fields or returned comments. Null does not prevent listing; ad details are not fetched to populate it."
46736
46746
  since: { type: string, format: date, description: "TikTok-only resolved start date." }
46737
46747
  until: { type: string, format: date, description: "TikTok-only resolved end date." }
46738
46748
  facebookAccountId:
@@ -46762,7 +46772,7 @@ paths:
46762
46772
  url: null
46763
46773
  replies: []
46764
46774
  isHidden: false
46765
- canReply: true
46775
+ canReply: false
46766
46776
  canDelete: false
46767
46777
  canHide: true
46768
46778
  canLike: false
@@ -46773,7 +46783,7 @@ paths:
46773
46783
  adId: "507f1f77bcf86cd799439011"
46774
46784
  platformAdId: "1790166588666881"
46775
46785
  accountId: "507f1f77bcf86cd799439012"
46776
- tiktokItemId: "7512345678901234500"
46786
+ tiktokItemId: null
46777
46787
  since: "2026-08-10"
46778
46788
  until: "2026-09-09"
46779
46789
  lastUpdated: "2026-09-09T12:00:00.000Z"
@@ -46800,6 +46810,14 @@ paths:
46800
46810
  description: |
46801
46811
  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.
46802
46812
 
46813
+ Unknown identity and video item fields are resolved only when needed for this
46814
+ action, then persisted for reuse. Comment-specific fields take precedence.
46815
+ If TikTok no longer returns the ad needed to resolve identity, 404 ad_not_found
46816
+ directs you to check deletion or archival in TikTok Ads Manager. Listing can
46817
+ still succeed. Unsupported or unavailable identity returns 403 feature_not_available.
46818
+ Denied access to ad details returns 403 insufficient_permissions with reconnect
46819
+ guidance and the upstream platformError.
46820
+
46803
46821
  Requires Ads access. The ad is resolved within the caller's accessible profiles.
46804
46822
  Before moderation, Zernio verifies that the comment belongs to this ad using
46805
46823
  TikTok's ad-group comment listing. The default search window is the last 30 days.
@@ -46839,9 +46857,9 @@ paths:
46839
46857
  '400': { $ref: '#/components/responses/BadRequest' }
46840
46858
  '401': { $ref: '#/components/responses/Unauthorized' }
46841
46859
  '403':
46842
- description: "Ads access or the required TikTok comment capability is unavailable."
46860
+ description: "Ads access or supported identity is unavailable (feature_not_available), or TikTok denies ad-detail access or comment-management permission (insufficient_permissions). Grant permission and reconnect the TikTok Ads account before retrying."
46843
46861
  '404':
46844
- description: "Ad is inaccessible or the comment was not found on this ad in the selected date window."
46862
+ description: "Ad is inaccessible or unavailable on TikTok for identity resolution (ad_not_found), or the comment was not found on this ad in the selected date window (resource_not_found)."
46845
46863
  '422':
46846
46864
  description: "TikTok Ads connection is unavailable."
46847
46865
  '501':
@@ -46857,7 +46875,7 @@ paths:
46857
46875
  x-resource-group: "engagement"
46858
46876
  x-platforms: ["tiktok"]
46859
46877
  description: |
46860
- Hide or restore a TikTok ad comment. Send hidden=true to hide it or hidden=false to make it public again.
46878
+ 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.
46861
46879
 
46862
46880
  Requires Ads access. The ad is resolved within the caller's accessible profiles.
46863
46881
  Before moderation, Zernio verifies that the comment belongs to this ad using
@@ -46919,6 +46937,14 @@ paths:
46919
46937
  description: |
46920
46938
  Delete your own TikTok ad comment or reply. TikTok must return can_delete=true for the comment. Other users' comments can be hidden instead.
46921
46939
 
46940
+ Unknown identity and video item fields are resolved only when needed for this
46941
+ action, then persisted for reuse. Comment-specific fields take precedence.
46942
+ If TikTok no longer returns the ad needed to resolve identity, 404 ad_not_found
46943
+ directs you to check deletion or archival in TikTok Ads Manager. Listing can
46944
+ still succeed. Unsupported or unavailable identity returns 403 feature_not_available.
46945
+ Denied access to ad details returns 403 insufficient_permissions with reconnect
46946
+ guidance and the upstream platformError.
46947
+
46922
46948
  Requires Ads access. The ad is resolved within the caller's accessible profiles.
46923
46949
  Before moderation, Zernio verifies that the comment belongs to this ad using
46924
46950
  TikTok's ad-group comment listing. The default search window is the last 30 days.
@@ -46948,9 +46974,9 @@ paths:
46948
46974
  '400': { $ref: '#/components/responses/BadRequest' }
46949
46975
  '401': { $ref: '#/components/responses/Unauthorized' }
46950
46976
  '403':
46951
- description: "Ads access or the required TikTok comment capability is unavailable."
46977
+ description: "Ads access, own-comment deletion or supported identity is unavailable (feature_not_available), or TikTok denies ad-detail access (insufficient_permissions)."
46952
46978
  '404':
46953
- description: "Ad is inaccessible or the comment was not found on this ad in the selected date window."
46979
+ description: "Ad is inaccessible or unavailable on TikTok for identity resolution (ad_not_found), or the comment was not found on this ad in the selected date window (resource_not_found)."
46954
46980
  '422':
46955
46981
  description: "TikTok Ads connection is unavailable."
46956
46982
  '501':
@@ -131,7 +131,7 @@ describe 'AdAccountsApi' do
131
131
 
132
132
  # unit tests for delete_ad_comment
133
133
  # Delete an ad comment
134
- # Delete your own TikTok ad comment or reply. TikTok must return can_delete&#x3D;true for the comment. Other users&#39; comments can be hidden instead. Requires Ads access. The ad is resolved within the caller&#39;s accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok&#39;s ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
134
+ # Delete your own TikTok ad comment or reply. TikTok must return can_delete&#x3D;true for the comment. Other users&#39; comments can be hidden instead. 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&#39;s accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok&#39;s ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
135
135
  # @param ad_id Internal Zernio ad ID or indexed platform ad ID.
136
136
  # @param comment_id TikTok comment ID from the ad comment listing.
137
137
  # @param [Hash] opts the optional parameters
@@ -187,7 +187,7 @@ describe 'AdAccountsApi' do
187
187
 
188
188
  # unit tests for get_ad_comments
189
189
  # List comments on an ad
190
- # Returns comments on an ad&#39;s underlying creative post. Useful for moderating or analyzing engagement on dark posts (ad creatives that never went live organically), which the regular GET /v1/inbox/comments/{postId} endpoint cannot serve because dark posts are not in Zernio&#39;s post database. An ad that runs on both Facebook feed and Instagram feed has two separate underlying posts with separate comment threads (the creative&#39;s effective_object_story_id and effective_instagram_media_id). Use the &#x60;placement&#x60; query param to pick one; with no param the Instagram side is returned when it exists, otherwise Facebook. The identifiers are read from the ad record (persisted during sync) with a Marketing-API fallback for ads that predate the field. For Instagram-placed comments, the Instagram account that runs the ad must be connected to Zernio, because those comments are read through that account&#39;s token. If no connected Instagram account on the profile can read the ad&#39;s media, the call returns ads_connection_required (the Facebook side, if any, is still readable via ?placement&#x3D;facebook). TikTok uses the connected TikTok Ads advertiser token and supports both paid video ads and Spark Ads. &#x60;since&#x60; and &#x60;until&#x60; select a date window of at most 30 days; the default is the last 30 days. TikTok searches by ad group, so Zernio filters each page to this ad. A page can be empty while &#x60;pagination.hasMore&#x60; is true. Reuse &#x60;pagination.cursor&#x60; with the same &#x60;limit&#x60;; the cursor retains the date window. &#x60;placement&#x60; is Meta-only and returns a 400 for TikTok. TikTok returns replies as separate comments with &#x60;parentId&#x60;; nested reply fetching is not supported. &#x60;canReply&#x60; requires a first-level comment and an identity with comment-management permission. &#x60;canDelete&#x60; reflects TikTok&#39;s own-comment deletion capability. &#x60;canHide&#x60; is supported and &#x60;canLike&#x60; is false. Use the ad comment reply, hide and delete operations below to moderate TikTok comments. Other platforms return feature_not_available. Requires the Ads add-on. Response shape matches GET /v1/inbox/comments/{postId}. The &#x60;{adId}&#x60; path segment accepts any identifier dialect Zernio indexes for the ad: Zernio internal &#x60;_id&#x60; (24-char hex), the numeric &#x60;platformAdId&#x60; (the value shipped in &#x60;comment.received&#x60; webhooks as &#x60;comment.ad.id&#x60;), or the creative&#39;s &#x60;effective_object_story_id&#x60; / &#x60;effective_instagram_media_id&#x60;. Caller doesn&#39;t need a translation step.
190
+ # Returns comments on an ad&#39;s underlying creative post. Useful for moderating or analyzing engagement on dark posts (ad creatives that never went live organically), which the regular GET /v1/inbox/comments/{postId} endpoint cannot serve because dark posts are not in Zernio&#39;s post database. An ad that runs on both Facebook feed and Instagram feed has two separate underlying posts with separate comment threads (the creative&#39;s effective_object_story_id and effective_instagram_media_id). Use the &#x60;placement&#x60; query param to pick one; with no param the Instagram side is returned when it exists, otherwise Facebook. The identifiers are read from the ad record (persisted during sync) with a Marketing-API fallback for ads that predate the field. For Instagram-placed comments, the Instagram account that runs the ad must be connected to Zernio, because those comments are read through that account&#39;s token. If no connected Instagram account on the profile can read the ad&#39;s media, the call returns ads_connection_required (the Facebook side, if any, is still readable via ?placement&#x3D;facebook). TikTok uses the connected TikTok Ads advertiser token and supports both paid video ads and Spark Ads. &#x60;since&#x60; and &#x60;until&#x60; select a date window of at most 30 days; the default is the last 30 days. TikTok searches by ad group, so Zernio filters each page to this ad. A page can be empty while &#x60;pagination.hasMore&#x60; is true. Reuse &#x60;pagination.cursor&#x60; with the same &#x60;limit&#x60;; the cursor retains the date window. &#x60;placement&#x60; is Meta-only and returns a 400 for TikTok. 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. &#x60;meta.tiktokItemId: null&#x60; 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 &#x60;parentId&#x60;; nested reply fetching is not supported. &#x60;canReply&#x60; requires a first-level comment, comment-management permission, a video item ID and a supported TT_USER or CUSTOMIZED_USER identity. &#x60;canDelete&#x60; requires TikTok&#39;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. &#x60;canHide&#x60; is true because visibility changes need only advertiser and comment IDs. &#x60;canLike&#x60; is false. Use the ad comment reply, hide and delete operations below to moderate TikTok comments. Other platforms return feature_not_available. Requires the Ads add-on. Response shape matches GET /v1/inbox/comments/{postId}. The &#x60;{adId}&#x60; path segment accepts any identifier dialect Zernio indexes for the ad: Zernio internal &#x60;_id&#x60; (24-char hex), the numeric &#x60;platformAdId&#x60; (the value shipped in &#x60;comment.received&#x60; webhooks as &#x60;comment.ad.id&#x60;), or the creative&#39;s &#x60;effective_object_story_id&#x60; / &#x60;effective_instagram_media_id&#x60;. Caller doesn&#39;t need a translation step.
191
191
  # @param ad_id Internal Zernio ad ID or indexed platform ad/post ID.
192
192
  # @param [Hash] opts the optional parameters
193
193
  # @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.
@@ -290,7 +290,7 @@ describe 'AdAccountsApi' do
290
290
 
291
291
  # unit tests for hide_ad_comment
292
292
  # Hide or unhide an ad comment
293
- # Hide or restore a TikTok ad comment. Send hidden&#x3D;true to hide it or hidden&#x3D;false to make it public again. Requires Ads access. The ad is resolved within the caller&#39;s accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok&#39;s ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
293
+ # Hide or restore a TikTok ad comment. Send hidden&#x3D;true to hide it or hidden&#x3D;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&#39;s accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok&#39;s ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
294
294
  # @param ad_id Internal Zernio ad ID or indexed platform ad ID.
295
295
  # @param comment_id TikTok comment ID from the ad comment listing.
296
296
  # @param hide_ad_comment_request
@@ -549,7 +549,7 @@ describe 'AdAccountsApi' do
549
549
 
550
550
  # unit tests for reply_to_ad_comment
551
551
  # Reply to an ad comment
552
- # Reply to a first-level TikTok ad comment. Requires a TT_USER or CUSTOMIZED_USER identity with comment-management permission. Replies to replies are rejected. The response commentId identifies the new reply. This operation is not idempotent; do not blindly retry an uncertain response. Requires Ads access. The ad is resolved within the caller&#39;s accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok&#39;s ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
552
+ # 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&#39;s accessible profiles. Before moderation, Zernio verifies that the comment belongs to this ad using TikTok&#39;s ad-group comment listing. The default search window is the last 30 days. Use since/until for older comments, with at most 30 days between the dates. Lookups scan at most 2,000 ad-group comments; narrow the date window if exceeded. Meta returns 501 feature_not_available with guidance to use the existing inbox comment endpoints and the account/post IDs from GET /v1/ads/{adId}/comments.
553
553
  # @param ad_id Internal Zernio ad ID or indexed platform ad ID.
554
554
  # @param comment_id TikTok comment ID from the ad comment listing.
555
555
  # @param reply_to_ad_comment_request
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: late-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.908
4
+ version: 0.0.909
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAPI-Generator
@@ -6295,7 +6295,7 @@ files:
6295
6295
  - spec/models/you_tube_video_retention_response_retention_curve_inner_spec.rb
6296
6296
  - spec/models/you_tube_video_retention_response_spec.rb
6297
6297
  - spec/spec_helper.rb
6298
- - zernio-sdk-0.0.908.gem
6298
+ - zernio-sdk-0.0.909.gem
6299
6299
  - zernio-sdk.gemspec
6300
6300
  homepage: https://openapi-generator.tech
6301
6301
  licenses:
Binary file