late-sdk 0.0.913 → 0.0.915
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 +4 -0
- data/docs/AnalyticsApi.md +1 -1
- data/docs/CommentsApi.md +153 -5
- data/docs/CreateAdCampaignRequest.md +1 -1
- data/docs/CreateStandaloneAdRequest.md +1 -1
- data/docs/PinInboxComment200Response.md +24 -0
- data/docs/PinInboxCommentRequest.md +18 -0
- data/docs/SyncExternalPosts200ResponseSynced.md +1 -1
- data/docs/TikTokPlatformData.md +1 -1
- data/lib/zernio-sdk/api/analytics_api.rb +2 -2
- data/lib/zernio-sdk/api/comments_api.rb +164 -8
- data/lib/zernio-sdk/models/create_ad_campaign_request.rb +3 -1
- data/lib/zernio-sdk/models/create_standalone_ad_request.rb +3 -1
- data/lib/zernio-sdk/models/pin_inbox_comment200_response.rb +174 -0
- data/lib/zernio-sdk/models/pin_inbox_comment_request.rb +165 -0
- data/lib/zernio-sdk/models/sync_external_posts200_response_synced.rb +1 -1
- data/lib/zernio-sdk/models/tik_tok_platform_data.rb +1 -1
- data/lib/zernio-sdk/models/webhook_payload_comment.rb +1 -1
- data/lib/zernio-sdk/models/webhook_payload_comment_comment.rb +2 -2
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +2 -0
- data/openapi.yaml +116 -12
- data/spec/api/analytics_api_spec.rb +1 -1
- data/spec/api/comments_api_spec.rb +32 -4
- data/spec/models/pin_inbox_comment200_response_spec.rb +54 -0
- data/spec/models/pin_inbox_comment_request_spec.rb +36 -0
- data/spec/models/webhook_payload_comment_comment_spec.rb +1 -1
- data/zernio-sdk-0.0.915.gem +0 -0
- metadata +10 -2
- data/zernio-sdk-0.0.913.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 394bc279d7a8724c26c9c55e816c2d889acacbe59539f81d4f234b932aa84eb5
|
|
4
|
+
data.tar.gz: dcd606820334c837fd340dbd448b6bc23988b101df474a0ef7c77ad798c28f37
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e754078fee7d4930471f76baaba1f576563c7da1c64ea9361e9e9d555b0dfa78425cc7c51b0030748118cbbddfb8e5773e6ed07519ef0d21e8a18bfe48e7dce8
|
|
7
|
+
data.tar.gz: 2a480e49687d1a658a6300d55eea4778bb7bda212ce49a0b38f13e1f423d16ded3d3aa59d1c49d46a0a3cac5faf52877235a1b04fe942962c4d3c8231380a7a9
|
data/README.md
CHANGED
|
@@ -357,12 +357,14 @@ Class | Method | HTTP request | Description
|
|
|
357
357
|
*Zernio::CommentsApi* | [**like_inbox_comment**](docs/CommentsApi.md#like_inbox_comment) | **POST** /v1/inbox/comments/{postId}/{commentId}/like | Like comment
|
|
358
358
|
*Zernio::CommentsApi* | [**like_post**](docs/CommentsApi.md#like_post) | **POST** /v1/inbox/posts/{postId}/like | Like post
|
|
359
359
|
*Zernio::CommentsApi* | [**list_inbox_comments**](docs/CommentsApi.md#list_inbox_comments) | **GET** /v1/inbox/comments | List commented posts
|
|
360
|
+
*Zernio::CommentsApi* | [**pin_inbox_comment**](docs/CommentsApi.md#pin_inbox_comment) | **POST** /v1/inbox/comments/{postId}/{commentId}/pin | Pin comment
|
|
360
361
|
*Zernio::CommentsApi* | [**reply_to_inbox_post**](docs/CommentsApi.md#reply_to_inbox_post) | **POST** /v1/inbox/comments/{postId} | Reply to comment
|
|
361
362
|
*Zernio::CommentsApi* | [**send_private_reply_to_comment**](docs/CommentsApi.md#send_private_reply_to_comment) | **POST** /v1/inbox/comments/{postId}/{commentId}/private-reply | Send private reply
|
|
362
363
|
*Zernio::CommentsApi* | [**set_comment_moderation**](docs/CommentsApi.md#set_comment_moderation) | **POST** /v1/inbox/comments/{postId}/{commentId}/moderation | Set comment moderation status
|
|
363
364
|
*Zernio::CommentsApi* | [**unhide_inbox_comment**](docs/CommentsApi.md#unhide_inbox_comment) | **DELETE** /v1/inbox/comments/{postId}/{commentId}/hide | Unhide comment
|
|
364
365
|
*Zernio::CommentsApi* | [**unlike_inbox_comment**](docs/CommentsApi.md#unlike_inbox_comment) | **DELETE** /v1/inbox/comments/{postId}/{commentId}/like | Unlike comment
|
|
365
366
|
*Zernio::CommentsApi* | [**unlike_post**](docs/CommentsApi.md#unlike_post) | **DELETE** /v1/inbox/posts/{postId}/like | Unlike post
|
|
367
|
+
*Zernio::CommentsApi* | [**unpin_inbox_comment**](docs/CommentsApi.md#unpin_inbox_comment) | **DELETE** /v1/inbox/comments/{postId}/{commentId}/pin | Unpin comment
|
|
366
368
|
*Zernio::ConnectApi* | [**assign_google_business_location**](docs/ConnectApi.md#assign_google_business_location) | **POST** /v1/accounts/{accountId}/gmb-locations/assign | Assign Google Business Profile location to another profile
|
|
367
369
|
*Zernio::ConnectApi* | [**complete_meta_ads_business_login**](docs/ConnectApi.md#complete_meta_ads_business_login) | **GET** /v1/connect/meta-ads/callback | Complete Meta business login
|
|
368
370
|
*Zernio::ConnectApi* | [**complete_telegram_connect**](docs/ConnectApi.md#complete_telegram_connect) | **PATCH** /v1/connect/telegram | Check Telegram status
|
|
@@ -2060,6 +2062,8 @@ Class | Method | HTTP request | Description
|
|
|
2060
2062
|
- [Zernio::Pending](docs/Pending.md)
|
|
2061
2063
|
- [Zernio::PhoneNumberStockWatch](docs/PhoneNumberStockWatch.md)
|
|
2062
2064
|
- [Zernio::PinDiscordMessage200Response](docs/PinDiscordMessage200Response.md)
|
|
2065
|
+
- [Zernio::PinInboxComment200Response](docs/PinInboxComment200Response.md)
|
|
2066
|
+
- [Zernio::PinInboxCommentRequest](docs/PinInboxCommentRequest.md)
|
|
2063
2067
|
- [Zernio::PinterestPlatformData](docs/PinterestPlatformData.md)
|
|
2064
2068
|
- [Zernio::PlatformAnalytics](docs/PlatformAnalytics.md)
|
|
2065
2069
|
- [Zernio::PlatformTarget](docs/PlatformTarget.md)
|
data/docs/AnalyticsApi.md
CHANGED
|
@@ -1985,7 +1985,7 @@ end
|
|
|
1985
1985
|
|
|
1986
1986
|
Sync an external post
|
|
1987
1987
|
|
|
1988
|
-
Fetch an account's latest external posts (published directly on the platform, not through Zernio) on demand, so a newly published post is retrievable within seconds instead of waiting for the background sync (which refreshes each account at most every ~90 minutes). Primary use case: verifying a submitted post. When a user publishes on the platform and immediately pastes the post URL into your app, call this with `accountId` plus `url` (or `postId`) to confirm the post exists and return its metadata. Behavior: -
|
|
1988
|
+
Fetch an account's latest external posts (published directly on the platform, not through Zernio) on demand, so a newly published post is retrievable within seconds instead of waiting for the background sync (which refreshes each account at most every ~90 minutes). Primary use case: verifying a submitted post. When a user publishes on the platform and immediately pastes the post URL into your app, call this with `accountId` plus `url` (or `postId`) to confirm the post exists and return its metadata. Behavior: - Account access and connection state are checked before any platform call, including requests inside the debounce window. - Inactive accounts or accounts marked `needsReconnection` return `409` with code `ads_connection_required`. Stop scheduled retries for that account until it is reconnected, then read `GET /v1/accounts` for its current account ID. - For connected accounts, we fetch the latest posts live from the platform, then match and return the submitted post. - Requests are debounced per account (~15s): if the account was synced inside that window, the live fetch is skipped. `accountId` is required, because a post URL or id alone cannot be resolved to an account, and the account must be connected to Zernio (we use its token to read the platform). Supported for every platform with a listing API (Instagram, Facebook, TikTok, YouTube, X, Threads, Pinterest, Reddit, Bluesky, Google Business Profile, and LinkedIn organization accounts). LinkedIn personal profiles: LinkedIn has no listing API for personal profiles, so a `url` is REQUIRED and imports that single post. Pass any LinkedIn post URL (`linkedin.com/posts/…`, `linkedin.com/feed/update/urn:li:activity:…`) or a `urn:li:share:…` / `urn:li:ugcPost:…` URN. Works for posts published outside Zernio and before the account was connected, any age; the post must be authored by the connected member. Imported posts return full analytics (impressions, reach, reactions, comments, reshares, saves) and keep refreshing on the background analytics cycle, but carry no content/media (LinkedIn does not expose them for personal profiles). `url` accepts any format the platform uses (e.g. `instagram.com/p/…`, `instagram.com/reel/…`, `youtu.be/…`, `youtube.com/shorts/…`, `tiktok.com/@user/video/…`, `vm.tiktok.com` short links, `pinterest.com/pin/…` on any regional domain, and `pin.it` short links). Pass `postId` (the platform media/video/pin id) as an alternative locator. Note: post-level analytics (reach, impressions) still carry the platform's own delay (e.g. ~24h on Instagram). This endpoint confirms the post exists and returns its metadata plus basic engagement (likes, comments), not delayed insights.
|
|
1989
1989
|
|
|
1990
1990
|
### Examples
|
|
1991
1991
|
|
data/docs/CommentsApi.md
CHANGED
|
@@ -11,12 +11,14 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
11
11
|
| [**like_inbox_comment**](CommentsApi.md#like_inbox_comment) | **POST** /v1/inbox/comments/{postId}/{commentId}/like | Like comment |
|
|
12
12
|
| [**like_post**](CommentsApi.md#like_post) | **POST** /v1/inbox/posts/{postId}/like | Like post |
|
|
13
13
|
| [**list_inbox_comments**](CommentsApi.md#list_inbox_comments) | **GET** /v1/inbox/comments | List commented posts |
|
|
14
|
+
| [**pin_inbox_comment**](CommentsApi.md#pin_inbox_comment) | **POST** /v1/inbox/comments/{postId}/{commentId}/pin | Pin comment |
|
|
14
15
|
| [**reply_to_inbox_post**](CommentsApi.md#reply_to_inbox_post) | **POST** /v1/inbox/comments/{postId} | Reply to comment |
|
|
15
16
|
| [**send_private_reply_to_comment**](CommentsApi.md#send_private_reply_to_comment) | **POST** /v1/inbox/comments/{postId}/{commentId}/private-reply | Send private reply |
|
|
16
17
|
| [**set_comment_moderation**](CommentsApi.md#set_comment_moderation) | **POST** /v1/inbox/comments/{postId}/{commentId}/moderation | Set comment moderation status |
|
|
17
18
|
| [**unhide_inbox_comment**](CommentsApi.md#unhide_inbox_comment) | **DELETE** /v1/inbox/comments/{postId}/{commentId}/hide | Unhide comment |
|
|
18
19
|
| [**unlike_inbox_comment**](CommentsApi.md#unlike_inbox_comment) | **DELETE** /v1/inbox/comments/{postId}/{commentId}/like | Unlike comment |
|
|
19
20
|
| [**unlike_post**](CommentsApi.md#unlike_post) | **DELETE** /v1/inbox/posts/{postId}/like | Unlike post |
|
|
21
|
+
| [**unpin_inbox_comment**](CommentsApi.md#unpin_inbox_comment) | **DELETE** /v1/inbox/comments/{postId}/{commentId}/pin | Unpin comment |
|
|
20
22
|
|
|
21
23
|
|
|
22
24
|
## delete_inbox_comment
|
|
@@ -171,7 +173,7 @@ end
|
|
|
171
173
|
|
|
172
174
|
Get post comments
|
|
173
175
|
|
|
174
|
-
Fetch comments for a specific post. Requires accountId query parameter. On Facebook and Instagram, passing a COMMENT id as `postId` is also supported and returns that comment's replies instead of the post's top-level comments. This is not available on YouTube, where `postId` must be a video id. Responses are cached for up to 10 minutes, so a page may lag new comments by that window. Do not poll this endpoint for real-time updates: subscribe to the `comment.received` webhook, which delivers new comments as they arrive. Your own writes (creating, replying to, or deleting a comment) refresh the cache immediately.
|
|
176
|
+
Fetch comments for a specific post. Requires accountId query parameter. On Facebook and Instagram, passing a COMMENT id as `postId` is also supported and returns that comment's replies instead of the post's top-level comments. This is not available on YouTube, where `postId` must be a video id. Responses are cached for up to 10 minutes, so a page may lag new comments by that window. Do not poll this endpoint for real-time updates: subscribe to the `comment.received` webhook, which delivers new comments as they arrive. Your own writes (creating, replying to, or deleting a comment) refresh the cache immediately. TikTok is served for accounts connected through the TikTok for Business app: `postId` is the TikTok video id, each top-level comment carries up to three inline replies, and `commentId` pages the full reply list of one comment. Developer-app TikTok accounts return 400 with code `PLATFORM_LIMITATION`.
|
|
175
177
|
|
|
176
178
|
### Examples
|
|
177
179
|
|
|
@@ -191,7 +193,7 @@ opts = {
|
|
|
191
193
|
subreddit: 'subreddit_example', # String | (Reddit only) Subreddit name
|
|
192
194
|
limit: 56, # Integer | Maximum number of comments to return
|
|
193
195
|
cursor: 'cursor_example', # String | Pagination cursor, returned by a previous call as `pagination.cursor`. This is the platform's own opaque paging value passed through verbatim: never construct, decode or validate it client-side.
|
|
194
|
-
comment_id: 'comment_id_example' # String | (Reddit only) Get replies to a specific comment
|
|
196
|
+
comment_id: 'comment_id_example' # String | (Reddit and TikTok only) Get replies to a specific comment
|
|
195
197
|
}
|
|
196
198
|
|
|
197
199
|
begin
|
|
@@ -230,7 +232,7 @@ end
|
|
|
230
232
|
| **subreddit** | **String** | (Reddit only) Subreddit name | [optional] |
|
|
231
233
|
| **limit** | **Integer** | Maximum number of comments to return | [optional][default to 25] |
|
|
232
234
|
| **cursor** | **String** | Pagination cursor, returned by a previous call as `pagination.cursor`. This is the platform's own opaque paging value passed through verbatim: never construct, decode or validate it client-side. | [optional] |
|
|
233
|
-
| **comment_id** | **String** | (Reddit only) Get replies to a specific comment | [optional] |
|
|
235
|
+
| **comment_id** | **String** | (Reddit and TikTok only) Get replies to a specific comment | [optional] |
|
|
234
236
|
|
|
235
237
|
### Return type
|
|
236
238
|
|
|
@@ -252,7 +254,7 @@ end
|
|
|
252
254
|
|
|
253
255
|
Hide comment
|
|
254
256
|
|
|
255
|
-
Hide a comment on a post. Supported by Facebook, Instagram, Threads, and
|
|
257
|
+
Hide a comment on a post. Supported by Facebook, Instagram, Threads, X, and TikTok (accounts connected through the TikTok for Business app). Hidden comments are only visible to the commenter and page admin. For X, the reply must belong to a conversation started by the authenticated user.
|
|
256
258
|
|
|
257
259
|
### Examples
|
|
258
260
|
|
|
@@ -550,6 +552,79 @@ end
|
|
|
550
552
|
- **Accept**: application/json
|
|
551
553
|
|
|
552
554
|
|
|
555
|
+
## pin_inbox_comment
|
|
556
|
+
|
|
557
|
+
> <PinInboxComment200Response> pin_inbox_comment(post_id, comment_id, pin_inbox_comment_request)
|
|
558
|
+
|
|
559
|
+
Pin comment
|
|
560
|
+
|
|
561
|
+
Pin a top-level comment to the top of a post's comment section. TikTok accounts connected through the TikTok for Business app only; every other platform returns 400.
|
|
562
|
+
|
|
563
|
+
### Examples
|
|
564
|
+
|
|
565
|
+
```ruby
|
|
566
|
+
require 'time'
|
|
567
|
+
require 'zernio-sdk'
|
|
568
|
+
# setup authorization
|
|
569
|
+
Zernio.configure do |config|
|
|
570
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
571
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
572
|
+
end
|
|
573
|
+
|
|
574
|
+
api_instance = Zernio::CommentsApi.new
|
|
575
|
+
post_id = 'post_id_example' # String |
|
|
576
|
+
comment_id = 'comment_id_example' # String |
|
|
577
|
+
pin_inbox_comment_request = Zernio::PinInboxCommentRequest.new({account_id: 'account_id_example'}) # PinInboxCommentRequest |
|
|
578
|
+
|
|
579
|
+
begin
|
|
580
|
+
# Pin comment
|
|
581
|
+
result = api_instance.pin_inbox_comment(post_id, comment_id, pin_inbox_comment_request)
|
|
582
|
+
p result
|
|
583
|
+
rescue Zernio::ApiError => e
|
|
584
|
+
puts "Error when calling CommentsApi->pin_inbox_comment: #{e}"
|
|
585
|
+
end
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
#### Using the pin_inbox_comment_with_http_info variant
|
|
589
|
+
|
|
590
|
+
This returns an Array which contains the response data, status code and headers.
|
|
591
|
+
|
|
592
|
+
> <Array(<PinInboxComment200Response>, Integer, Hash)> pin_inbox_comment_with_http_info(post_id, comment_id, pin_inbox_comment_request)
|
|
593
|
+
|
|
594
|
+
```ruby
|
|
595
|
+
begin
|
|
596
|
+
# Pin comment
|
|
597
|
+
data, status_code, headers = api_instance.pin_inbox_comment_with_http_info(post_id, comment_id, pin_inbox_comment_request)
|
|
598
|
+
p status_code # => 2xx
|
|
599
|
+
p headers # => { ... }
|
|
600
|
+
p data # => <PinInboxComment200Response>
|
|
601
|
+
rescue Zernio::ApiError => e
|
|
602
|
+
puts "Error when calling CommentsApi->pin_inbox_comment_with_http_info: #{e}"
|
|
603
|
+
end
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
### Parameters
|
|
607
|
+
|
|
608
|
+
| Name | Type | Description | Notes |
|
|
609
|
+
| ---- | ---- | ----------- | ----- |
|
|
610
|
+
| **post_id** | **String** | | |
|
|
611
|
+
| **comment_id** | **String** | | |
|
|
612
|
+
| **pin_inbox_comment_request** | [**PinInboxCommentRequest**](PinInboxCommentRequest.md) | | |
|
|
613
|
+
|
|
614
|
+
### Return type
|
|
615
|
+
|
|
616
|
+
[**PinInboxComment200Response**](PinInboxComment200Response.md)
|
|
617
|
+
|
|
618
|
+
### Authorization
|
|
619
|
+
|
|
620
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
621
|
+
|
|
622
|
+
### HTTP request headers
|
|
623
|
+
|
|
624
|
+
- **Content-Type**: application/json
|
|
625
|
+
- **Accept**: application/json
|
|
626
|
+
|
|
627
|
+
|
|
553
628
|
## reply_to_inbox_post
|
|
554
629
|
|
|
555
630
|
> <ReplyToInboxPost200Response> reply_to_inbox_post(post_id, reply_to_inbox_post_request, opts)
|
|
@@ -777,7 +852,7 @@ end
|
|
|
777
852
|
|
|
778
853
|
Unhide comment
|
|
779
854
|
|
|
780
|
-
Unhide a previously hidden comment. Supported by Facebook, Instagram, Threads, and
|
|
855
|
+
Unhide a previously hidden comment. Supported by Facebook, Instagram, Threads, X, and TikTok (accounts connected through the TikTok for Business app).
|
|
781
856
|
|
|
782
857
|
### Examples
|
|
783
858
|
|
|
@@ -995,3 +1070,76 @@ end
|
|
|
995
1070
|
- **Content-Type**: Not defined
|
|
996
1071
|
- **Accept**: application/json
|
|
997
1072
|
|
|
1073
|
+
|
|
1074
|
+
## unpin_inbox_comment
|
|
1075
|
+
|
|
1076
|
+
> <PinInboxComment200Response> unpin_inbox_comment(post_id, comment_id, account_id)
|
|
1077
|
+
|
|
1078
|
+
Unpin comment
|
|
1079
|
+
|
|
1080
|
+
Unpin a previously pinned comment. TikTok accounts connected through the TikTok for Business app only.
|
|
1081
|
+
|
|
1082
|
+
### Examples
|
|
1083
|
+
|
|
1084
|
+
```ruby
|
|
1085
|
+
require 'time'
|
|
1086
|
+
require 'zernio-sdk'
|
|
1087
|
+
# setup authorization
|
|
1088
|
+
Zernio.configure do |config|
|
|
1089
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
1090
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
1091
|
+
end
|
|
1092
|
+
|
|
1093
|
+
api_instance = Zernio::CommentsApi.new
|
|
1094
|
+
post_id = 'post_id_example' # String |
|
|
1095
|
+
comment_id = 'comment_id_example' # String |
|
|
1096
|
+
account_id = 'account_id_example' # String |
|
|
1097
|
+
|
|
1098
|
+
begin
|
|
1099
|
+
# Unpin comment
|
|
1100
|
+
result = api_instance.unpin_inbox_comment(post_id, comment_id, account_id)
|
|
1101
|
+
p result
|
|
1102
|
+
rescue Zernio::ApiError => e
|
|
1103
|
+
puts "Error when calling CommentsApi->unpin_inbox_comment: #{e}"
|
|
1104
|
+
end
|
|
1105
|
+
```
|
|
1106
|
+
|
|
1107
|
+
#### Using the unpin_inbox_comment_with_http_info variant
|
|
1108
|
+
|
|
1109
|
+
This returns an Array which contains the response data, status code and headers.
|
|
1110
|
+
|
|
1111
|
+
> <Array(<PinInboxComment200Response>, Integer, Hash)> unpin_inbox_comment_with_http_info(post_id, comment_id, account_id)
|
|
1112
|
+
|
|
1113
|
+
```ruby
|
|
1114
|
+
begin
|
|
1115
|
+
# Unpin comment
|
|
1116
|
+
data, status_code, headers = api_instance.unpin_inbox_comment_with_http_info(post_id, comment_id, account_id)
|
|
1117
|
+
p status_code # => 2xx
|
|
1118
|
+
p headers # => { ... }
|
|
1119
|
+
p data # => <PinInboxComment200Response>
|
|
1120
|
+
rescue Zernio::ApiError => e
|
|
1121
|
+
puts "Error when calling CommentsApi->unpin_inbox_comment_with_http_info: #{e}"
|
|
1122
|
+
end
|
|
1123
|
+
```
|
|
1124
|
+
|
|
1125
|
+
### Parameters
|
|
1126
|
+
|
|
1127
|
+
| Name | Type | Description | Notes |
|
|
1128
|
+
| ---- | ---- | ----------- | ----- |
|
|
1129
|
+
| **post_id** | **String** | | |
|
|
1130
|
+
| **comment_id** | **String** | | |
|
|
1131
|
+
| **account_id** | **String** | | |
|
|
1132
|
+
|
|
1133
|
+
### Return type
|
|
1134
|
+
|
|
1135
|
+
[**PinInboxComment200Response**](PinInboxComment200Response.md)
|
|
1136
|
+
|
|
1137
|
+
### Authorization
|
|
1138
|
+
|
|
1139
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
1140
|
+
|
|
1141
|
+
### HTTP request headers
|
|
1142
|
+
|
|
1143
|
+
- **Content-Type**: Not defined
|
|
1144
|
+
- **Accept**: application/json
|
|
1145
|
+
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
| **goal** | **String** | Mapped to the ODAX objective (same mapping as POST /v1/ads/create). | |
|
|
11
11
|
| **is_skadnetwork_attribution** | **Boolean** | Meta app promotion only. Immutable campaign flag. Set true for iOS 14+ SKAdNetwork campaigns and supply promotedObject.applicationId plus promotedObject.objectStoreUrl. The campaign receives promotedObject only when this flag is true. Cannot be changed on an existing campaign. | [optional] |
|
|
12
12
|
| **promoted_object** | [**AdPromotedObject**](AdPromotedObject.md) | | [optional] |
|
|
13
|
-
| **buying_type** | **String** | Meta only. SKAdNetwork app promotion requires AUCTION. | [optional] |
|
|
13
|
+
| **buying_type** | **String** | Meta only. Defaults to AUCTION and is explicitly sent on new campaigns, including validateOnly. SKAdNetwork app promotion requires AUCTION. | [optional][default to 'AUCTION'] |
|
|
14
14
|
| **validate_only** | **Boolean** | Meta only. Runs campaign validation without creating or persisting a campaign; Idempotency-Key storage is bypassed. Returns HTTP 200 with validateOnly true and status VALIDATED. | [optional] |
|
|
15
15
|
| **special_ad_categories** | **Array<String>** | | [optional] |
|
|
16
16
|
| **budget_amount** | **Float** | Campaign-level (CBO) budget in WHOLE currency units (USD: 50 = $50.00), NOT cents. Meta's own Marketing API takes this same number in minor units, so it is an easy and expensive mix-up. Requires budgetType. | [optional] |
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
| **goal** | **String** | Required on legacy and multi-creative shapes; the attach shape inherits it from the ad set. Available goals vary by platform. **Meta** - `conversions`: OUTCOME_SALES. Requires `promotedObject.pixelId` and `promotedObject.customEventType` with a commerce event such as PURCHASE or START_TRIAL, or `promotedObject.customConversionId` to optimise against a Custom Conversion, or `customEventType: OTHER` + `customEventStr` to optimise against a pixel custom event. - `lead_conversion`: OUTCOME_LEADS optimizing website pixel leads. Same pixel and event fields, but with a leads-class event such as LEAD, SUBMIT_APPLICATION, SCHEDULE or CONTACT (or `promotedObject.customConversionId` to optimise against a Custom Conversion instead). Meta gates conversion events by objective, so leads-class events are rejected under `conversions`. - `lead_generation`: OUTCOME_LEADS with instant forms. Requires `leadGenFormId`. `promotedObject.pageId` is optional and auto-filled from the connected Page. - `app_promotion`: requires `promotedObject.applicationId` and `promotedObject.objectStoreUrl`. - `catalog_sales`: Advantage+ catalog ads, for example vehicle inventory. Requires `promotedObject.productSetId`, `promotedObject.pixelId` and `promotedObject.customEventType`. Builds a catalog TEMPLATE creative from the copy fields, which may carry template tags like {{product.name}} or {{vehicle.make}}. No imageUrl or video is sent; Meta renders the visuals per catalog item. Discover catalogs via GET /v1/ads/catalogs and product sets via GET /v1/ads/catalogs/{catalogId}/product-sets. Single shape only, no creatives[], adSetId, dynamicCreative or placementAssets. - `page_likes`: Page Likes conversion location under OUTCOME_ENGAGEMENT (destination_type ON_PAGE, optimization PAGE_LIKES). `promotedObject.pageId` is optional and auto-filled from the connected Page. The creative CTA is fixed to LIKE_PAGE targeting that Page; headline / body / linkUrl / callToAction / imageUrl / video are all optional (Meta derives the link and the Like button from the Page). **TikTok** - `conversions`: website-conversion ad group. Requires `promotedObject.pixelId`, your TikTok Pixel ID. Accepts an optional `promotedObject.customEventType` with a TikTok optimization_event code your pixel tracks (newer pixels use e.g. SHOPPING for purchase events; legacy pixels use ON_WEB_ORDER, INITIATE_ORDER, ON_WEB_REGISTER or FORM). To inherit pixel and event from an existing ad group, pass `adSetId` instead. **LinkedIn** - `engagement`, `traffic`, `awareness` and `video_views` create standalone Direct Sponsored Content ads. `traffic` requires `linkUrl`; `video_views` requires `video`. - `lead_generation`: requires `leadGenFormId` (an adForm ID from POST /v1/ads/lead-forms). The campaign objective is set to MAX_LEAD and the creative's `leadgenCallToAction` destination is set to `urn:li:adForm:{id}`. - `job_applicants` requires a `platformSpecificData.jobs` creative. - For `conversions` on LinkedIn, or to promote an existing post, use POST /v1/ads/boost. **OpenAI Ads** - Only `traffic`, `awareness`, and `conversions` are supported (other goals return 400). Maps to OpenAI's `bidding_type` (clicks, impressions, conversions respectively). `conversions` requires an active conversion event setting on the account; create a tracking tag with `defaultEventType` via the tracking-tags API (`POST /v1/accounts/{accountId}/tracking-tags`), or configure a conversion event in OpenAI Ads Manager, or the request returns 422. | [optional] |
|
|
15
15
|
| **optimization_goal** | **String** | Meta only. Explicit ad-set `optimization_goal` (e.g. `LANDING_PAGE_VIEWS`, `LINK_CLICKS`, `REACH`, `IMPRESSIONS`, `OFFSITE_CONVERSIONS`, `THRUPLAY`, `LEAD_GENERATION`). Overrides the default derived from `goal` (e.g. `traffic` defaults to `LINK_CLICKS`). Forwarded verbatim to Meta, which validates compatibility with the campaign objective and rejects incompatible combinations. | [optional] |
|
|
16
16
|
| **billing_event** | **String** | Meta only. Explicit ad-set `billing_event`. Defaults to `IMPRESSIONS`. Forwarded verbatim to Meta, which validates compatibility with the optimization goal. | [optional] |
|
|
17
|
-
| **buying_type** | **String** | Meta only. RESERVED = Reach & Frequency: requires `rfPredictionId` (a RESERVED prediction from /v1/ads/rf-predictions + /reserve). Budget, schedule and pricing come from the reservation, so budgetAmount/budgetType are not required and bid fields are ignored. Only the plain single-ad shape (no creatives[], adSetId, existingCampaignId or dynamicCreative). | [optional] |
|
|
17
|
+
| **buying_type** | **String** | Meta only. Defaults to AUCTION and is explicitly sent on new campaigns, including validateOnly. Reusing existingCampaignId does not change the campaign. RESERVED = Reach & Frequency: requires `rfPredictionId` (a RESERVED prediction from /v1/ads/rf-predictions + /reserve). Budget, schedule and pricing come from the reservation, so budgetAmount/budgetType are not required and bid fields are ignored. Only the plain single-ad shape (no creatives[], adSetId, existingCampaignId or dynamicCreative). | [optional][default to 'AUCTION'] |
|
|
18
18
|
| **rf_prediction_id** | **String** | Meta only. The RESERVED prediction id the R&F ad set runs on (reserving mints a new id, so pass that one). Requires buyingType RESERVED. | [optional] |
|
|
19
19
|
| **promotion** | [**MetaPromotion**](MetaPromotion.md) | | [optional] |
|
|
20
20
|
| **creative_features** | **Hash<String, String>** | Meta only. Applied to each new creative, including standalone and attach shapes. With creatives[], these are defaults; an item replaces the whole feature map, including an empty map. auto_promotion_tag is an enhancement; an explicit offer uses promotion. | [optional] |
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::PinInboxComment200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **status** | **String** | | [optional] |
|
|
8
|
+
| **comment_id** | **String** | | [optional] |
|
|
9
|
+
| **pinned** | **Boolean** | | [optional] |
|
|
10
|
+
| **platform** | **String** | | [optional] |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::PinInboxComment200Response.new(
|
|
18
|
+
status: null,
|
|
19
|
+
comment_id: null,
|
|
20
|
+
pinned: null,
|
|
21
|
+
platform: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Zernio::PinInboxCommentRequest
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **account_id** | **String** | The social account ID | |
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
require 'zernio-sdk'
|
|
13
|
+
|
|
14
|
+
instance = Zernio::PinInboxCommentRequest.new(
|
|
15
|
+
account_id: null
|
|
16
|
+
)
|
|
17
|
+
```
|
|
18
|
+
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **posts_found** | **Integer** | Posts returned by the platform listing during the on-demand sync | [optional] |
|
|
8
8
|
| **posts_synced** | **Integer** | Posts inserted or updated in Zernio | [optional] |
|
|
9
|
-
| **skipped** | **Boolean** | True when
|
|
9
|
+
| **skipped** | **Boolean** | True when the account was synced within the debounce window and no live fetch ran. | [optional] |
|
|
10
10
|
|
|
11
11
|
## Example
|
|
12
12
|
|
data/docs/TikTokPlatformData.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **draft** | **Boolean** | When true, sends the post to the TikTok Creator Inbox as a draft instead of publishing immediately. The creator receives an inbox notification to complete posting via TikTok's editing flow. Maps to TikTok API post_mode: \"MEDIA_UPLOAD\" (photos) or the dedicated inbox endpoint (videos). When false or omitted, publishes directly via post_mode: \"DIRECT_POST\". Note: publish_type is not a supported field. Use this field instead. | [optional] |
|
|
8
|
-
| **privacy_level** | **String** | One of the values returned by the TikTok creator info API for the account | [optional] |
|
|
8
|
+
| **privacy_level** | **String** | One of the values returned by the TikTok creator info API for the account. Accounts connected through the TikTok for Business app publish videos as public only: a non-public value on a video post is rejected at creation unless draft is true (photo posts keep every level). | [optional] |
|
|
9
9
|
| **allow_comment** | **Boolean** | Allow comments on the post | [optional] |
|
|
10
10
|
| **allow_duet** | **Boolean** | Allow duets (required for video posts) | [optional] |
|
|
11
11
|
| **allow_stitch** | **Boolean** | Allow stitches (required for video posts) | [optional] |
|
|
@@ -1995,7 +1995,7 @@ module Zernio
|
|
|
1995
1995
|
end
|
|
1996
1996
|
|
|
1997
1997
|
# Sync an external post
|
|
1998
|
-
# Fetch an account's latest external posts (published directly on the platform, not through Zernio) on demand, so a newly published post is retrievable within seconds instead of waiting for the background sync (which refreshes each account at most every ~90 minutes). Primary use case: verifying a submitted post. When a user publishes on the platform and immediately pastes the post URL into your app, call this with `accountId` plus `url` (or `postId`) to confirm the post exists and return its metadata. Behavior: -
|
|
1998
|
+
# Fetch an account's latest external posts (published directly on the platform, not through Zernio) on demand, so a newly published post is retrievable within seconds instead of waiting for the background sync (which refreshes each account at most every ~90 minutes). Primary use case: verifying a submitted post. When a user publishes on the platform and immediately pastes the post URL into your app, call this with `accountId` plus `url` (or `postId`) to confirm the post exists and return its metadata. Behavior: - Account access and connection state are checked before any platform call, including requests inside the debounce window. - Inactive accounts or accounts marked `needsReconnection` return `409` with code `ads_connection_required`. Stop scheduled retries for that account until it is reconnected, then read `GET /v1/accounts` for its current account ID. - For connected accounts, we fetch the latest posts live from the platform, then match and return the submitted post. - Requests are debounced per account (~15s): if the account was synced inside that window, the live fetch is skipped. `accountId` is required, because a post URL or id alone cannot be resolved to an account, and the account must be connected to Zernio (we use its token to read the platform). Supported for every platform with a listing API (Instagram, Facebook, TikTok, YouTube, X, Threads, Pinterest, Reddit, Bluesky, Google Business Profile, and LinkedIn organization accounts). LinkedIn personal profiles: LinkedIn has no listing API for personal profiles, so a `url` is REQUIRED and imports that single post. Pass any LinkedIn post URL (`linkedin.com/posts/…`, `linkedin.com/feed/update/urn:li:activity:…`) or a `urn:li:share:…` / `urn:li:ugcPost:…` URN. Works for posts published outside Zernio and before the account was connected, any age; the post must be authored by the connected member. Imported posts return full analytics (impressions, reach, reactions, comments, reshares, saves) and keep refreshing on the background analytics cycle, but carry no content/media (LinkedIn does not expose them for personal profiles). `url` accepts any format the platform uses (e.g. `instagram.com/p/…`, `instagram.com/reel/…`, `youtu.be/…`, `youtube.com/shorts/…`, `tiktok.com/@user/video/…`, `vm.tiktok.com` short links, `pinterest.com/pin/…` on any regional domain, and `pin.it` short links). Pass `postId` (the platform media/video/pin id) as an alternative locator. Note: post-level analytics (reach, impressions) still carry the platform's own delay (e.g. ~24h on Instagram). This endpoint confirms the post exists and returns its metadata plus basic engagement (likes, comments), not delayed insights.
|
|
1999
1999
|
# @param sync_external_posts_request [SyncExternalPostsRequest]
|
|
2000
2000
|
# @param [Hash] opts the optional parameters
|
|
2001
2001
|
# @return [SyncExternalPosts200Response]
|
|
@@ -2005,7 +2005,7 @@ module Zernio
|
|
|
2005
2005
|
end
|
|
2006
2006
|
|
|
2007
2007
|
# Sync an external post
|
|
2008
|
-
# Fetch an account's latest external posts (published directly on the platform, not through Zernio) on demand, so a newly published post is retrievable within seconds instead of waiting for the background sync (which refreshes each account at most every ~90 minutes). Primary use case: verifying a submitted post. When a user publishes on the platform and immediately pastes the post URL into your app, call this with `accountId` plus `url` (or `postId`) to confirm the post exists and return its metadata. Behavior: -
|
|
2008
|
+
# Fetch an account's latest external posts (published directly on the platform, not through Zernio) on demand, so a newly published post is retrievable within seconds instead of waiting for the background sync (which refreshes each account at most every ~90 minutes). Primary use case: verifying a submitted post. When a user publishes on the platform and immediately pastes the post URL into your app, call this with `accountId` plus `url` (or `postId`) to confirm the post exists and return its metadata. Behavior: - Account access and connection state are checked before any platform call, including requests inside the debounce window. - Inactive accounts or accounts marked `needsReconnection` return `409` with code `ads_connection_required`. Stop scheduled retries for that account until it is reconnected, then read `GET /v1/accounts` for its current account ID. - For connected accounts, we fetch the latest posts live from the platform, then match and return the submitted post. - Requests are debounced per account (~15s): if the account was synced inside that window, the live fetch is skipped. `accountId` is required, because a post URL or id alone cannot be resolved to an account, and the account must be connected to Zernio (we use its token to read the platform). Supported for every platform with a listing API (Instagram, Facebook, TikTok, YouTube, X, Threads, Pinterest, Reddit, Bluesky, Google Business Profile, and LinkedIn organization accounts). LinkedIn personal profiles: LinkedIn has no listing API for personal profiles, so a `url` is REQUIRED and imports that single post. Pass any LinkedIn post URL (`linkedin.com/posts/…`, `linkedin.com/feed/update/urn:li:activity:…`) or a `urn:li:share:…` / `urn:li:ugcPost:…` URN. Works for posts published outside Zernio and before the account was connected, any age; the post must be authored by the connected member. Imported posts return full analytics (impressions, reach, reactions, comments, reshares, saves) and keep refreshing on the background analytics cycle, but carry no content/media (LinkedIn does not expose them for personal profiles). `url` accepts any format the platform uses (e.g. `instagram.com/p/…`, `instagram.com/reel/…`, `youtu.be/…`, `youtube.com/shorts/…`, `tiktok.com/@user/video/…`, `vm.tiktok.com` short links, `pinterest.com/pin/…` on any regional domain, and `pin.it` short links). Pass `postId` (the platform media/video/pin id) as an alternative locator. Note: post-level analytics (reach, impressions) still carry the platform's own delay (e.g. ~24h on Instagram). This endpoint confirms the post exists and returns its metadata plus basic engagement (likes, comments), not delayed insights.
|
|
2009
2009
|
# @param sync_external_posts_request [SyncExternalPostsRequest]
|
|
2010
2010
|
# @param [Hash] opts the optional parameters
|
|
2011
2011
|
# @return [Array<(SyncExternalPosts200Response, Integer, Hash)>] SyncExternalPosts200Response data, response status code and response headers
|