late-sdk 0.0.776 → 0.0.778

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: 5f1db33d5446ea90d2f14749b935837e484816da5967252ac630e0e734044a83
4
- data.tar.gz: ad006649f8e509f919816ee147834125b72cd86b54e52ec349c37df5dc8bab49
3
+ metadata.gz: 56db0fb238364eef6bb11a8e8957ac348cefba523d467a1f38f227c2ea9e0cc7
4
+ data.tar.gz: dff9cb9ad41bb533d40ceb3b78152997e286fcbcbb3e6ccb455bf529f1c445fd
5
5
  SHA512:
6
- metadata.gz: 1ddf8d627eb79d108853a39e7a28faedbf7f29bbc72413925424b804bcfc20a759b283aadf26a5d1d58e8c61a2803a764dee6e0af7d9d6ff257848596b574a50
7
- data.tar.gz: 75fa6c33eb119a5b27977d5951d72672b00b1a11321519eb59c2cde9de85f3d0e4c989eb34598e4b72b9b1e66640b920f36a35b409dd58505a62fa8bb3f494a7
6
+ metadata.gz: d477c5aa50c5c2b20bc66b188dad27fddfc9370d1b9748f5f229e6832318f3832db09acf5871bf79183a9e9da870fce85db1ea08d5746bcfd4327957e305f372
7
+ data.tar.gz: 6af532b0f874e245d0cd86b3591c088c2b4df31e21ed4edb2de2021206cc690ef57bdf1b559611d1fedee7c65f5e1d5fc767b6ccb602b82a7f92c33e17b67951
data/README.md CHANGED
@@ -1721,6 +1721,7 @@ Class | Method | HTTP request | Description
1721
1721
  - [Zernio::ListWorkflows200ResponseWorkflowsInner](docs/ListWorkflows200ResponseWorkflowsInner.md)
1722
1722
  - [Zernio::LookupSmsNumber200Response](docs/LookupSmsNumber200Response.md)
1723
1723
  - [Zernio::MarkConversationRead200Response](docs/MarkConversationRead200Response.md)
1724
+ - [Zernio::MediaContentType](docs/MediaContentType.md)
1724
1725
  - [Zernio::MediaItem](docs/MediaItem.md)
1725
1726
  - [Zernio::MediaUploadResponse](docs/MediaUploadResponse.md)
1726
1727
  - [Zernio::MetaAdsPlatformData](docs/MetaAdsPlatformData.md)
@@ -1756,7 +1757,6 @@ Class | Method | HTTP request | Description
1756
1757
  - [Zernio::PlatformAnalytics](docs/PlatformAnalytics.md)
1757
1758
  - [Zernio::PlatformTarget](docs/PlatformTarget.md)
1758
1759
  - [Zernio::PlatformTargetAccountId](docs/PlatformTargetAccountId.md)
1759
- - [Zernio::PlatformTargetPlatformSpecificData](docs/PlatformTargetPlatformSpecificData.md)
1760
1760
  - [Zernio::Post](docs/Post.md)
1761
1761
  - [Zernio::PostAnalytics](docs/PostAnalytics.md)
1762
1762
  - [Zernio::PostCreateResponse](docs/PostCreateResponse.md)
data/docs/CommentsApi.md CHANGED
@@ -325,7 +325,7 @@ end
325
325
 
326
326
  Like comment
327
327
 
328
- Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn. For Bluesky, the cid (content identifier) is required in the request body. For LinkedIn, pass the composite comment URN returned by the comments endpoints as commentId; an optional reactionType picks the reaction (defaults to LIKE), and accounts connected before the social-feed scopes were requested get a 403 with code `linkedin_reconnect_required`.
328
+ Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn, and Instagram in limited release (see below). For Bluesky, the cid (content identifier) is required in the request body. For LinkedIn, pass the composite comment URN returned by the comments endpoints as commentId; an optional reactionType picks the reaction (defaults to LIKE), and accounts connected before the social-feed scopes were requested get a 403 with code `linkedin_reconnect_required`. Instagram is in LIMITED RELEASE and not generally available: the call needs `instagram_manage_engagement`, which Meta has so far granted this app only under Standard Access, so it works for app admins, developers and testers of our Meta app and returns a 403 with code `PLATFORM_BETA_RESTRICTED` for every other account. That restriction lifts when Meta App Review grants Advanced Access; the constraints below apply once it does. Instagram covers comments and replies on feed posts, reels and carousels. Only an account connected through Facebook Login can be granted `instagram_manage_engagement`: an Instagram Login connection returns a 400 with code `instagram_likes_require_facebook_login`, and an account whose token predates the permission returns a 403 with code `reconnect_required`. Content from private accounts cannot be liked. Instagram also enforces a burst limit of 50 like or unlike calls per 5 seconds per Instagram account, and exceeding it locks that account out of the like API for an hour, so pace bulk loops.
329
329
 
330
330
  ### Examples
331
331
 
@@ -398,7 +398,7 @@ end
398
398
 
399
399
  Like post
400
400
 
401
- Like (or react to) a post as a connected account. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky. Instagram, Threads, TikTok and Pinterest expose no like endpoint in their APIs and return 400. Reddit returns 400 too, pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote, downvote and clear on both posts and comments. The account does not have to be the one that published the post, which is what makes executive engagement possible: pass an exec's `accountId` and the brand post's ID. `postId` accepts either a Zernio post ID or the platform's native post ID. A Zernio post ID resolves to the entry for `accountId`, falling back to the post's single entry on the same platform (two entries on that platform is a 400, so pass the native ID). LinkedIn requires the `w_member_social_feed` / `w_organization_social_feed` scopes, which are not retroactive: accounts connected before those were requested get a 403 with code `linkedin_reconnect_required` until the user reconnects the account. YouTube spends 50 quota units per call.
401
+ Like (or react to) a post as a connected account. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release (see below). Threads, TikTok and Pinterest expose no like endpoint in their APIs and return 400. Reddit returns 400 too, pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote, downvote and clear on both posts and comments. The account does not have to be the one that published the post, which is what makes executive engagement possible: pass an exec's `accountId` and the brand post's ID. `postId` accepts either a Zernio post ID or the platform's native post ID. A Zernio post ID resolves to the entry for `accountId`, falling back to the post's single entry on the same platform (two entries on that platform is a 400, so pass the native ID). LinkedIn requires the `w_member_social_feed` / `w_organization_social_feed` scopes, which are not retroactive: accounts connected before those were requested get a 403 with code `linkedin_reconnect_required` until the user reconnects the account. YouTube spends 50 quota units per call. Instagram is in LIMITED RELEASE and not generally available: the call needs `instagram_manage_engagement`, which Meta has so far granted this app only under Standard Access, so it works for app admins, developers and testers of our Meta app and returns a 403 with code `PLATFORM_BETA_RESTRICTED` for every other account. That restriction lifts when Meta App Review grants Advanced Access; the constraints below apply once it does. Instagram covers feed images, reels and carousels (stories and private-account media are not likeable). Only an account connected through Facebook Login can be granted `instagram_manage_engagement`: an Instagram Login connection returns a 400 with code `instagram_likes_require_facebook_login`, and an account whose token predates the permission returns a 403 with code `reconnect_required`. Instagram also enforces a burst limit of 50 like or unlike calls per 5 seconds per Instagram account, and exceeding it locks that account out of the like API for an hour, so pace bulk loops.
402
402
 
403
403
  ### Examples
404
404
 
@@ -846,7 +846,7 @@ end
846
846
 
847
847
  Unlike comment
848
848
 
849
- Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn. For Bluesky, the likeUri query parameter is required.
849
+ Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn, and Instagram in limited release. For Bluesky, the likeUri query parameter is required. Instagram has the same limited release, Facebook Login, `instagram_manage_engagement` and burst-limit constraints as liking.
850
850
 
851
851
  ### Examples
852
852
 
@@ -923,7 +923,7 @@ end
923
923
 
924
924
  Unlike post
925
925
 
926
- Remove this account's like from a post. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky. On YouTube this clears the rating. For Bluesky, `likeUri` (returned when the post was liked) is required. Reddit uses `POST /v1/accounts/{accountId}/reddit-vote` with `direction: 0`.
926
+ Remove this account's like from a post. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release. On YouTube this clears the rating. Instagram has the same limited release, Facebook Login, `instagram_manage_engagement` and burst-limit constraints as liking. For Bluesky, `likeUri` (returned when the post was liked) is required. Reddit uses `POST /v1/accounts/{accountId}/reddit-vote` with `direction: 0`.
927
927
 
928
928
  ### Examples
929
929
 
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **filename** | **String** | Name of the file to upload | |
8
- | **content_type** | **String** | MIME type of the file | |
8
+ | **content_type** | [**MediaContentType**](MediaContentType.md) | | |
9
9
  | **size** | **Integer** | Optional file size in bytes for pre-validation (max 5GB) | [optional] |
10
10
 
11
11
  ## Example
@@ -15,7 +15,7 @@ require 'zernio-sdk'
15
15
 
16
16
  instance = Zernio::GetMediaPresignedUrlRequest.new(
17
17
  filename: my-video.mp4,
18
- content_type: video/mp4,
18
+ content_type: null,
19
19
  size: 15234567
20
20
  )
21
21
  ```
data/docs/MediaApi.md CHANGED
@@ -27,7 +27,7 @@ Zernio.configure do |config|
27
27
  end
28
28
 
29
29
  api_instance = Zernio::MediaApi.new
30
- get_media_presigned_url_request = Zernio::GetMediaPresignedUrlRequest.new({filename: 'my-video.mp4', content_type: 'image/jpeg'}) # GetMediaPresignedUrlRequest |
30
+ get_media_presigned_url_request = Zernio::GetMediaPresignedUrlRequest.new({filename: 'my-video.mp4', content_type: Zernio::MediaContentType::IMAGE_JPEG}) # GetMediaPresignedUrlRequest |
31
31
 
32
32
  begin
33
33
  # Get upload URL
@@ -0,0 +1,15 @@
1
+ # Zernio::MediaContentType
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+
8
+ ## Example
9
+
10
+ ```ruby
11
+ require 'zernio-sdk'
12
+
13
+ instance = Zernio::MediaContentType.new()
14
+ ```
15
+
@@ -9,7 +9,7 @@
9
9
  | **custom_content** | **String** | Platform-specific text override. When set, this content is used instead of the top-level post content for this platform. Useful for tailoring captions per platform (e.g. keeping tweets under 280 characters). | [optional] |
10
10
  | **custom_media** | [**Array<MediaItem>**](MediaItem.md) | | [optional] |
11
11
  | **scheduled_for** | **Time** | Optional per-platform scheduled time override (uses post.scheduledFor when omitted) | [optional] |
12
- | **platform_specific_data** | [**PlatformTargetPlatformSpecificData**](PlatformTargetPlatformSpecificData.md) | | [optional] |
12
+ | **platform_specific_data** | **Hash<String, Object>** | The platform-specific options stored on this target, echoed back as they were sent. Typed per platform on the way in (see the *PlatformData schemas on the request body); free-form on the way out, because a response is not guaranteed to match exactly one of those variants and generated clients that pick a variant by structure reject the entire response when it doesn't. Zernio's internal publishing state (snapshots, container ids, publish stage) is never returned here, and the key is omitted rather than sent as an empty object. | [optional] |
13
13
  | **status** | **String** | Platform-specific status: pending, publishing, published, failed | [optional] |
14
14
  | **platform_post_id** | **String** | The native post ID on the platform (populated after successful publish) | [optional] |
15
15
  | **platform_post_url** | **String** | Public URL of the published post. Included in the response for immediate posts; for scheduled posts, fetch via GET /v1/posts/{postId} after publish time. Empty when the platform confirmed the publish without returning an id a permalink can be built from (TikTok returns a publish id for some uploads); the TikTok reconcile cron backfills it later. | [optional] |
@@ -347,7 +347,7 @@ module Zernio
347
347
  end
348
348
 
349
349
  # Like comment
350
- # Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn. For Bluesky, the cid (content identifier) is required in the request body. For LinkedIn, pass the composite comment URN returned by the comments endpoints as commentId; an optional reactionType picks the reaction (defaults to LIKE), and accounts connected before the social-feed scopes were requested get a 403 with code `linkedin_reconnect_required`.
350
+ # Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn, and Instagram in limited release (see below). For Bluesky, the cid (content identifier) is required in the request body. For LinkedIn, pass the composite comment URN returned by the comments endpoints as commentId; an optional reactionType picks the reaction (defaults to LIKE), and accounts connected before the social-feed scopes were requested get a 403 with code `linkedin_reconnect_required`. Instagram is in LIMITED RELEASE and not generally available: the call needs `instagram_manage_engagement`, which Meta has so far granted this app only under Standard Access, so it works for app admins, developers and testers of our Meta app and returns a 403 with code `PLATFORM_BETA_RESTRICTED` for every other account. That restriction lifts when Meta App Review grants Advanced Access; the constraints below apply once it does. Instagram covers comments and replies on feed posts, reels and carousels. Only an account connected through Facebook Login can be granted `instagram_manage_engagement`: an Instagram Login connection returns a 400 with code `instagram_likes_require_facebook_login`, and an account whose token predates the permission returns a 403 with code `reconnect_required`. Content from private accounts cannot be liked. Instagram also enforces a burst limit of 50 like or unlike calls per 5 seconds per Instagram account, and exceeding it locks that account out of the like API for an hour, so pace bulk loops.
351
351
  # @param post_id [String]
352
352
  # @param comment_id [String]
353
353
  # @param like_inbox_comment_request [LikeInboxCommentRequest]
@@ -359,7 +359,7 @@ module Zernio
359
359
  end
360
360
 
361
361
  # Like comment
362
- # Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn. For Bluesky, the cid (content identifier) is required in the request body. For LinkedIn, pass the composite comment URN returned by the comments endpoints as commentId; an optional reactionType picks the reaction (defaults to LIKE), and accounts connected before the social-feed scopes were requested get a 403 with code `linkedin_reconnect_required`.
362
+ # Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn, and Instagram in limited release (see below). For Bluesky, the cid (content identifier) is required in the request body. For LinkedIn, pass the composite comment URN returned by the comments endpoints as commentId; an optional reactionType picks the reaction (defaults to LIKE), and accounts connected before the social-feed scopes were requested get a 403 with code `linkedin_reconnect_required`. Instagram is in LIMITED RELEASE and not generally available: the call needs `instagram_manage_engagement`, which Meta has so far granted this app only under Standard Access, so it works for app admins, developers and testers of our Meta app and returns a 403 with code `PLATFORM_BETA_RESTRICTED` for every other account. That restriction lifts when Meta App Review grants Advanced Access; the constraints below apply once it does. Instagram covers comments and replies on feed posts, reels and carousels. Only an account connected through Facebook Login can be granted `instagram_manage_engagement`: an Instagram Login connection returns a 400 with code `instagram_likes_require_facebook_login`, and an account whose token predates the permission returns a 403 with code `reconnect_required`. Content from private accounts cannot be liked. Instagram also enforces a burst limit of 50 like or unlike calls per 5 seconds per Instagram account, and exceeding it locks that account out of the like API for an hour, so pace bulk loops.
363
363
  # @param post_id [String]
364
364
  # @param comment_id [String]
365
365
  # @param like_inbox_comment_request [LikeInboxCommentRequest]
@@ -427,7 +427,7 @@ module Zernio
427
427
  end
428
428
 
429
429
  # Like post
430
- # Like (or react to) a post as a connected account. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky. Instagram, Threads, TikTok and Pinterest expose no like endpoint in their APIs and return 400. Reddit returns 400 too, pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote, downvote and clear on both posts and comments. The account does not have to be the one that published the post, which is what makes executive engagement possible: pass an exec's `accountId` and the brand post's ID. `postId` accepts either a Zernio post ID or the platform's native post ID. A Zernio post ID resolves to the entry for `accountId`, falling back to the post's single entry on the same platform (two entries on that platform is a 400, so pass the native ID). LinkedIn requires the `w_member_social_feed` / `w_organization_social_feed` scopes, which are not retroactive: accounts connected before those were requested get a 403 with code `linkedin_reconnect_required` until the user reconnects the account. YouTube spends 50 quota units per call.
430
+ # Like (or react to) a post as a connected account. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release (see below). Threads, TikTok and Pinterest expose no like endpoint in their APIs and return 400. Reddit returns 400 too, pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote, downvote and clear on both posts and comments. The account does not have to be the one that published the post, which is what makes executive engagement possible: pass an exec's `accountId` and the brand post's ID. `postId` accepts either a Zernio post ID or the platform's native post ID. A Zernio post ID resolves to the entry for `accountId`, falling back to the post's single entry on the same platform (two entries on that platform is a 400, so pass the native ID). LinkedIn requires the `w_member_social_feed` / `w_organization_social_feed` scopes, which are not retroactive: accounts connected before those were requested get a 403 with code `linkedin_reconnect_required` until the user reconnects the account. YouTube spends 50 quota units per call. Instagram is in LIMITED RELEASE and not generally available: the call needs `instagram_manage_engagement`, which Meta has so far granted this app only under Standard Access, so it works for app admins, developers and testers of our Meta app and returns a 403 with code `PLATFORM_BETA_RESTRICTED` for every other account. That restriction lifts when Meta App Review grants Advanced Access; the constraints below apply once it does. Instagram covers feed images, reels and carousels (stories and private-account media are not likeable). Only an account connected through Facebook Login can be granted `instagram_manage_engagement`: an Instagram Login connection returns a 400 with code `instagram_likes_require_facebook_login`, and an account whose token predates the permission returns a 403 with code `reconnect_required`. Instagram also enforces a burst limit of 50 like or unlike calls per 5 seconds per Instagram account, and exceeding it locks that account out of the like API for an hour, so pace bulk loops.
431
431
  # @param post_id [String] Zernio post ID or the platform's native post ID
432
432
  # @param like_post_request [LikePostRequest]
433
433
  # @param [Hash] opts the optional parameters
@@ -438,7 +438,7 @@ module Zernio
438
438
  end
439
439
 
440
440
  # Like post
441
- # Like (or react to) a post as a connected account. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky. Instagram, Threads, TikTok and Pinterest expose no like endpoint in their APIs and return 400. Reddit returns 400 too, pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote, downvote and clear on both posts and comments. The account does not have to be the one that published the post, which is what makes executive engagement possible: pass an exec's `accountId` and the brand post's ID. `postId` accepts either a Zernio post ID or the platform's native post ID. A Zernio post ID resolves to the entry for `accountId`, falling back to the post's single entry on the same platform (two entries on that platform is a 400, so pass the native ID). LinkedIn requires the `w_member_social_feed` / `w_organization_social_feed` scopes, which are not retroactive: accounts connected before those were requested get a 403 with code `linkedin_reconnect_required` until the user reconnects the account. YouTube spends 50 quota units per call.
441
+ # Like (or react to) a post as a connected account. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release (see below). Threads, TikTok and Pinterest expose no like endpoint in their APIs and return 400. Reddit returns 400 too, pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote, downvote and clear on both posts and comments. The account does not have to be the one that published the post, which is what makes executive engagement possible: pass an exec's `accountId` and the brand post's ID. `postId` accepts either a Zernio post ID or the platform's native post ID. A Zernio post ID resolves to the entry for `accountId`, falling back to the post's single entry on the same platform (two entries on that platform is a 400, so pass the native ID). LinkedIn requires the `w_member_social_feed` / `w_organization_social_feed` scopes, which are not retroactive: accounts connected before those were requested get a 403 with code `linkedin_reconnect_required` until the user reconnects the account. YouTube spends 50 quota units per call. Instagram is in LIMITED RELEASE and not generally available: the call needs `instagram_manage_engagement`, which Meta has so far granted this app only under Standard Access, so it works for app admins, developers and testers of our Meta app and returns a 403 with code `PLATFORM_BETA_RESTRICTED` for every other account. That restriction lifts when Meta App Review grants Advanced Access; the constraints below apply once it does. Instagram covers feed images, reels and carousels (stories and private-account media are not likeable). Only an account connected through Facebook Login can be granted `instagram_manage_engagement`: an Instagram Login connection returns a 400 with code `instagram_likes_require_facebook_login`, and an account whose token predates the permission returns a 403 with code `reconnect_required`. Instagram also enforces a burst limit of 50 like or unlike calls per 5 seconds per Instagram account, and exceeding it locks that account out of the like API for an hour, so pace bulk loops.
442
442
  # @param post_id [String] Zernio post ID or the platform's native post ID
443
443
  # @param like_post_request [LikePostRequest]
444
444
  # @param [Hash] opts the optional parameters
@@ -919,7 +919,7 @@ module Zernio
919
919
  end
920
920
 
921
921
  # Unlike comment
922
- # Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn. For Bluesky, the likeUri query parameter is required.
922
+ # Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn, and Instagram in limited release. For Bluesky, the likeUri query parameter is required. Instagram has the same limited release, Facebook Login, `instagram_manage_engagement` and burst-limit constraints as liking.
923
923
  # @param post_id [String]
924
924
  # @param comment_id [String]
925
925
  # @param account_id [String]
@@ -932,7 +932,7 @@ module Zernio
932
932
  end
933
933
 
934
934
  # Unlike comment
935
- # Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn. For Bluesky, the likeUri query parameter is required.
935
+ # Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn, and Instagram in limited release. For Bluesky, the likeUri query parameter is required. Instagram has the same limited release, Facebook Login, `instagram_manage_engagement` and burst-limit constraints as liking.
936
936
  # @param post_id [String]
937
937
  # @param comment_id [String]
938
938
  # @param account_id [String]
@@ -998,7 +998,7 @@ module Zernio
998
998
  end
999
999
 
1000
1000
  # Unlike post
1001
- # Remove this account's like from a post. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky. On YouTube this clears the rating. For Bluesky, `likeUri` (returned when the post was liked) is required. Reddit uses `POST /v1/accounts/{accountId}/reddit-vote` with `direction: 0`.
1001
+ # Remove this account's like from a post. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release. On YouTube this clears the rating. Instagram has the same limited release, Facebook Login, `instagram_manage_engagement` and burst-limit constraints as liking. For Bluesky, `likeUri` (returned when the post was liked) is required. Reddit uses `POST /v1/accounts/{accountId}/reddit-vote` with `direction: 0`.
1002
1002
  # @param post_id [String] Zernio post ID or the platform's native post ID
1003
1003
  # @param account_id [String]
1004
1004
  # @param [Hash] opts the optional parameters
@@ -1010,7 +1010,7 @@ module Zernio
1010
1010
  end
1011
1011
 
1012
1012
  # Unlike post
1013
- # Remove this account's like from a post. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky. On YouTube this clears the rating. For Bluesky, `likeUri` (returned when the post was liked) is required. Reddit uses `POST /v1/accounts/{accountId}/reddit-vote` with `direction: 0`.
1013
+ # Remove this account's like from a post. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release. On YouTube this clears the rating. Instagram has the same limited release, Facebook Login, `instagram_manage_engagement` and burst-limit constraints as liking. For Bluesky, `likeUri` (returned when the post was liked) is required. Reddit uses `POST /v1/accounts/{accountId}/reddit-vote` with `direction: 0`.
1014
1014
  # @param post_id [String] Zernio post ID or the platform's native post ID
1015
1015
  # @param account_id [String]
1016
1016
  # @param [Hash] opts the optional parameters
@@ -18,7 +18,6 @@ module Zernio
18
18
  # Name of the file to upload
19
19
  attr_accessor :filename
20
20
 
21
- # MIME type of the file
22
21
  attr_accessor :content_type
23
22
 
24
23
  # Optional file size in bytes for pre-validation (max 5GB)
@@ -69,7 +68,7 @@ module Zernio
69
68
  def self.openapi_types
70
69
  {
71
70
  :'filename' => :'String',
72
- :'content_type' => :'String',
71
+ :'content_type' => :'MediaContentType',
73
72
  :'size' => :'Integer'
74
73
  }
75
74
  end
@@ -135,8 +134,6 @@ module Zernio
135
134
  warn '[DEPRECATED] the `valid?` method is obsolete'
136
135
  return false if @filename.nil?
137
136
  return false if @content_type.nil?
138
- content_type_validator = EnumAttributeValidator.new('String', ["image/jpeg", "image/jpg", "image/png", "image/webp", "image/gif", "video/mp4", "video/mpeg", "video/quicktime", "video/avi", "video/x-msvideo", "video/webm", "video/x-m4v", "application/pdf", "audio/mpeg", "audio/mp4", "audio/aac", "audio/ogg", "audio/wav", "audio/webm", "audio/x-m4a"])
139
- return false unless content_type_validator.valid?(@content_type)
140
137
  true
141
138
  end
142
139
 
@@ -150,13 +147,13 @@ module Zernio
150
147
  @filename = filename
151
148
  end
152
149
 
153
- # Custom attribute writer method checking allowed values (enum).
154
- # @param [Object] content_type Object to be assigned
150
+ # Custom attribute writer method with validation
151
+ # @param [Object] content_type Value to be assigned
155
152
  def content_type=(content_type)
156
- validator = EnumAttributeValidator.new('String', ["image/jpeg", "image/jpg", "image/png", "image/webp", "image/gif", "video/mp4", "video/mpeg", "video/quicktime", "video/avi", "video/x-msvideo", "video/webm", "video/x-m4v", "application/pdf", "audio/mpeg", "audio/mp4", "audio/aac", "audio/ogg", "audio/wav", "audio/webm", "audio/x-m4a"])
157
- unless validator.valid?(content_type)
158
- fail ArgumentError, "invalid value for \"content_type\", must be one of #{validator.allowable_values}."
153
+ if content_type.nil?
154
+ fail ArgumentError, 'content_type cannot be nil'
159
155
  end
156
+
160
157
  @content_type = content_type
161
158
  end
162
159
 
@@ -0,0 +1,58 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
5
+
6
+ The version of the OpenAPI document: 1.0.4
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Zernio
17
+ class MediaContentType
18
+ IMAGE_JPEG = "image/jpeg".freeze
19
+ IMAGE_JPG = "image/jpg".freeze
20
+ IMAGE_PNG = "image/png".freeze
21
+ IMAGE_WEBP = "image/webp".freeze
22
+ IMAGE_GIF = "image/gif".freeze
23
+ VIDEO_MP4 = "video/mp4".freeze
24
+ VIDEO_MPEG = "video/mpeg".freeze
25
+ VIDEO_QUICKTIME = "video/quicktime".freeze
26
+ VIDEO_AVI = "video/avi".freeze
27
+ VIDEO_X_MSVIDEO = "video/x-msvideo".freeze
28
+ VIDEO_WEBM = "video/webm".freeze
29
+ VIDEO_X_M4V = "video/x-m4v".freeze
30
+ APPLICATION_PDF = "application/pdf".freeze
31
+ AUDIO_MPEG = "audio/mpeg".freeze
32
+ AUDIO_MP4 = "audio/mp4".freeze
33
+ AUDIO_AAC = "audio/aac".freeze
34
+ AUDIO_OGG = "audio/ogg".freeze
35
+ AUDIO_WAV = "audio/wav".freeze
36
+ AUDIO_WEBM = "audio/webm".freeze
37
+ AUDIO_X_M4A = "audio/x-m4a".freeze
38
+
39
+ def self.all_vars
40
+ @all_vars ||= [IMAGE_JPEG, IMAGE_JPG, IMAGE_PNG, IMAGE_WEBP, IMAGE_GIF, VIDEO_MP4, VIDEO_MPEG, VIDEO_QUICKTIME, VIDEO_AVI, VIDEO_X_MSVIDEO, VIDEO_WEBM, VIDEO_X_M4V, APPLICATION_PDF, AUDIO_MPEG, AUDIO_MP4, AUDIO_AAC, AUDIO_OGG, AUDIO_WAV, AUDIO_WEBM, AUDIO_X_M4A].freeze
41
+ end
42
+
43
+ # Builds the enum from string
44
+ # @param [String] The enum value in the form of the string
45
+ # @return [String] The enum value
46
+ def self.build_from_hash(value)
47
+ new.build_from_hash(value)
48
+ end
49
+
50
+ # Builds the enum from string
51
+ # @param [String] The enum value in the form of the string
52
+ # @return [String] The enum value
53
+ def build_from_hash(value)
54
+ return value if MediaContentType.all_vars.include?(value)
55
+ raise "Invalid ENUM value #{value} for class #MediaContentType"
56
+ end
57
+ end
58
+ end
@@ -28,6 +28,7 @@ module Zernio
28
28
  # Optional per-platform scheduled time override (uses post.scheduledFor when omitted)
29
29
  attr_accessor :scheduled_for
30
30
 
31
+ # The platform-specific options stored on this target, echoed back as they were sent. Typed per platform on the way in (see the *PlatformData schemas on the request body); free-form on the way out, because a response is not guaranteed to match exactly one of those variants and generated clients that pick a variant by structure reject the entire response when it doesn't. Zernio's internal publishing state (snapshots, container ids, publish stage) is never returned here, and the key is omitted rather than sent as an empty object.
31
32
  attr_accessor :platform_specific_data
32
33
 
33
34
  # Platform-specific status: pending, publishing, published, failed
@@ -122,7 +123,7 @@ module Zernio
122
123
  :'custom_content' => :'String',
123
124
  :'custom_media' => :'Array<MediaItem>',
124
125
  :'scheduled_for' => :'Time',
125
- :'platform_specific_data' => :'PlatformTargetPlatformSpecificData',
126
+ :'platform_specific_data' => :'Hash<String, Object>',
126
127
  :'status' => :'String',
127
128
  :'platform_post_id' => :'String',
128
129
  :'platform_post_url' => :'String',
@@ -183,7 +184,9 @@ module Zernio
183
184
  end
184
185
 
185
186
  if attributes.key?(:'platform_specific_data')
186
- self.platform_specific_data = attributes[:'platform_specific_data']
187
+ if (value = attributes[:'platform_specific_data']).is_a?(Hash)
188
+ self.platform_specific_data = value
189
+ end
187
190
  end
188
191
 
189
192
  if attributes.key?(:'status')
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.776'
14
+ VERSION = '0.0.778'
15
15
  end
data/lib/zernio-sdk.rb CHANGED
@@ -1072,6 +1072,7 @@ require 'zernio-sdk/models/list_workflows200_response'
1072
1072
  require 'zernio-sdk/models/list_workflows200_response_workflows_inner'
1073
1073
  require 'zernio-sdk/models/lookup_sms_number200_response'
1074
1074
  require 'zernio-sdk/models/mark_conversation_read200_response'
1075
+ require 'zernio-sdk/models/media_content_type'
1075
1076
  require 'zernio-sdk/models/media_item'
1076
1077
  require 'zernio-sdk/models/media_upload_response'
1077
1078
  require 'zernio-sdk/models/meta_ads_platform_data'
@@ -1107,7 +1108,6 @@ require 'zernio-sdk/models/pinterest_platform_data'
1107
1108
  require 'zernio-sdk/models/platform_analytics'
1108
1109
  require 'zernio-sdk/models/platform_target'
1109
1110
  require 'zernio-sdk/models/platform_target_account_id'
1110
- require 'zernio-sdk/models/platform_target_platform_specific_data'
1111
1111
  require 'zernio-sdk/models/post'
1112
1112
  require 'zernio-sdk/models/post_analytics'
1113
1113
  require 'zernio-sdk/models/post_create_response'
data/openapi.yaml CHANGED
@@ -4864,6 +4864,34 @@ components:
4864
4864
  type: string
4865
4865
  enum: [platform_withheld]
4866
4866
  description: 'Why the file is missing. platform_withheld means the platform declined to return it and retrying will not help.'
4867
+ MediaContentType:
4868
+ type: string
4869
+ description: >-
4870
+ MIME type of the file to upload. Rejected with a 400 (INVALID_FIELD_VALUE
4871
+ on contentType) when it is not one of these values, so generic types such
4872
+ as application/octet-stream are not accepted here.
4873
+ example: "video/mp4"
4874
+ enum:
4875
+ - image/jpeg
4876
+ - image/jpg
4877
+ - image/png
4878
+ - image/webp
4879
+ - image/gif
4880
+ - video/mp4
4881
+ - video/mpeg
4882
+ - video/quicktime
4883
+ - video/avi
4884
+ - video/x-msvideo
4885
+ - video/webm
4886
+ - video/x-m4v
4887
+ - application/pdf
4888
+ - audio/mpeg
4889
+ - audio/mp4
4890
+ - audio/aac
4891
+ - audio/ogg
4892
+ - audio/wav
4893
+ - audio/webm
4894
+ - audio/x-m4a
4867
4895
  PlatformTarget:
4868
4896
  type: object
4869
4897
  properties:
@@ -4887,24 +4915,18 @@ components:
4887
4915
  format: date-time
4888
4916
  description: Optional per-platform scheduled time override (uses post.scheduledFor when omitted)
4889
4917
  platformSpecificData:
4890
- description: Platform-specific overrides and options.
4891
- oneOf:
4892
- - $ref: '#/components/schemas/TwitterPlatformData'
4893
- - $ref: '#/components/schemas/ThreadsPlatformData'
4894
- - $ref: '#/components/schemas/FacebookPlatformData'
4895
- - $ref: '#/components/schemas/InstagramPlatformData'
4896
- - $ref: '#/components/schemas/LinkedInPlatformData'
4897
- - $ref: '#/components/schemas/PinterestPlatformData'
4898
- - $ref: '#/components/schemas/YouTubePlatformData'
4899
- - $ref: '#/components/schemas/GoogleBusinessPlatformData'
4900
- - $ref: '#/components/schemas/TikTokPlatformData'
4901
- - $ref: '#/components/schemas/TelegramPlatformData'
4902
- - $ref: '#/components/schemas/SnapchatPlatformData'
4903
- - $ref: '#/components/schemas/RedditPlatformData'
4904
- - $ref: '#/components/schemas/BlueskyPlatformData'
4905
- - $ref: '#/components/schemas/DiscordPlatformData'
4906
- - $ref: '#/components/schemas/SlackPlatformData'
4918
+ type: object
4907
4919
  additionalProperties: true
4920
+ description: >-
4921
+ The platform-specific options stored on this target, echoed back as
4922
+ they were sent. Typed per platform on the way in (see the
4923
+ *PlatformData schemas on the request body); free-form on the way
4924
+ out, because a response is not guaranteed to match exactly one of
4925
+ those variants and generated clients that pick a variant by
4926
+ structure reject the entire response when it doesn't. Zernio's
4927
+ internal publishing state (snapshots, container ids, publish stage)
4928
+ is never returned here, and the key is omitted rather than sent as
4929
+ an empty object.
4908
4930
  status:
4909
4931
  type: string
4910
4932
  example: pending
@@ -13506,30 +13528,7 @@ paths:
13506
13528
  description: Name of the file to upload
13507
13529
  example: "my-video.mp4"
13508
13530
  contentType:
13509
- type: string
13510
- description: MIME type of the file
13511
- enum:
13512
- - image/jpeg
13513
- - image/jpg
13514
- - image/png
13515
- - image/webp
13516
- - image/gif
13517
- - video/mp4
13518
- - video/mpeg
13519
- - video/quicktime
13520
- - video/avi
13521
- - video/x-msvideo
13522
- - video/webm
13523
- - video/x-m4v
13524
- - application/pdf
13525
- - audio/mpeg
13526
- - audio/mp4
13527
- - audio/aac
13528
- - audio/ogg
13529
- - audio/wav
13530
- - audio/webm
13531
- - audio/x-m4a
13532
- example: "video/mp4"
13531
+ $ref: '#/components/schemas/MediaContentType'
13533
13532
  size:
13534
13533
  type: integer
13535
13534
  description: Optional file size in bytes for pre-validation (max 5GB)
@@ -28324,11 +28323,28 @@ paths:
28324
28323
  summary: Like comment
28325
28324
  description: |
28326
28325
  Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X,
28327
- Bluesky, Reddit, LinkedIn. For Bluesky, the cid (content identifier) is required
28328
- in the request body. For LinkedIn, pass the composite comment URN returned by the
28329
- comments endpoints as commentId; an optional reactionType picks the reaction
28326
+ Bluesky, Reddit, LinkedIn, and Instagram in limited release (see below). For
28327
+ Bluesky, the cid (content identifier) is
28328
+ required in the request body. For LinkedIn, pass the composite comment URN returned
28329
+ by the comments endpoints as commentId; an optional reactionType picks the reaction
28330
28330
  (defaults to LIKE), and accounts connected before the social-feed scopes were
28331
28331
  requested get a 403 with code `linkedin_reconnect_required`.
28332
+
28333
+ Instagram is in LIMITED RELEASE and not generally available: the call needs
28334
+ `instagram_manage_engagement`, which Meta has so far granted this app only under
28335
+ Standard Access, so it works for app admins, developers and testers of our Meta app
28336
+ and returns a 403 with code `PLATFORM_BETA_RESTRICTED` for every other account.
28337
+ That restriction lifts when Meta App Review grants Advanced Access; the constraints
28338
+ below apply once it does.
28339
+
28340
+ Instagram covers comments and replies on feed posts, reels and carousels. Only an
28341
+ account connected through Facebook Login can be granted
28342
+ `instagram_manage_engagement`: an Instagram Login connection returns a 400 with
28343
+ code `instagram_likes_require_facebook_login`, and an account whose token predates
28344
+ the permission returns a 403 with code `reconnect_required`. Content from private
28345
+ accounts cannot be liked. Instagram also enforces a burst limit of 50 like or
28346
+ unlike calls per 5 seconds per Instagram account, and exceeding it locks that
28347
+ account out of the like API for an hour, so pace bulk loops.
28332
28348
  tags: [Comments]
28333
28349
  security: [{ bearerAuth: [] }]
28334
28350
  parameters:
@@ -28371,14 +28387,16 @@ paths:
28371
28387
  description: Platform does not support liking comments
28372
28388
  '401': { $ref: '#/components/responses/Unauthorized' }
28373
28389
  '403':
28374
- description: Inbox addon required
28390
+ description: Inbox addon required, or the account is missing the platform permission
28375
28391
  delete:
28376
28392
  x-resource-group: "engagement"
28377
28393
  operationId: unlikeInboxComment
28378
28394
  summary: Unlike comment
28379
28395
  description: |
28380
28396
  Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky,
28381
- Reddit, LinkedIn. For Bluesky, the likeUri query parameter is required.
28397
+ Reddit, LinkedIn, and Instagram in limited release. For Bluesky, the likeUri query
28398
+ parameter is required. Instagram has the same limited release, Facebook Login,
28399
+ `instagram_manage_engagement` and burst-limit constraints as liking.
28382
28400
  tags: [Comments]
28383
28401
  security: [{ bearerAuth: [] }]
28384
28402
  parameters:
@@ -28414,7 +28432,7 @@ paths:
28414
28432
  description: Platform does not support unliking comments
28415
28433
  '401': { $ref: '#/components/responses/Unauthorized' }
28416
28434
  '403':
28417
- description: Inbox addon required
28435
+ description: Inbox addon required, or the account is missing the platform permission
28418
28436
 
28419
28437
  /v1/inbox/posts/{postId}/like:
28420
28438
  post:
@@ -28422,7 +28440,8 @@ paths:
28422
28440
  summary: Like post
28423
28441
  description: |
28424
28442
  Like (or react to) a post as a connected account. Supported platforms: LinkedIn,
28425
- Twitter/X, Facebook, YouTube, Bluesky. Instagram, Threads, TikTok and Pinterest
28443
+ Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release (see below).
28444
+ Threads, TikTok and Pinterest
28426
28445
  expose no like endpoint in their APIs and return 400. Reddit returns 400 too,
28427
28446
  pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote,
28428
28447
  downvote and clear on both posts and comments.
@@ -28438,6 +28457,22 @@ paths:
28438
28457
  scopes, which are not retroactive: accounts connected before those were requested
28439
28458
  get a 403 with code `linkedin_reconnect_required` until the user reconnects the
28440
28459
  account. YouTube spends 50 quota units per call.
28460
+
28461
+ Instagram is in LIMITED RELEASE and not generally available: the call needs
28462
+ `instagram_manage_engagement`, which Meta has so far granted this app only under
28463
+ Standard Access, so it works for app admins, developers and testers of our Meta app
28464
+ and returns a 403 with code `PLATFORM_BETA_RESTRICTED` for every other account.
28465
+ That restriction lifts when Meta App Review grants Advanced Access; the constraints
28466
+ below apply once it does.
28467
+
28468
+ Instagram covers feed images, reels and carousels (stories and private-account
28469
+ media are not likeable). Only an account connected through Facebook Login can be
28470
+ granted `instagram_manage_engagement`: an Instagram Login
28471
+ connection returns a 400 with code `instagram_likes_require_facebook_login`, and an
28472
+ account whose token predates the permission returns a 403 with code
28473
+ `reconnect_required`. Instagram also enforces a burst limit of 50 like or unlike
28474
+ calls per 5 seconds per Instagram account, and exceeding it locks that account out
28475
+ of the like API for an hour, so pace bulk loops.
28441
28476
  tags: [Comments]
28442
28477
  security: [{ bearerAuth: [] }]
28443
28478
  parameters:
@@ -28484,7 +28519,9 @@ paths:
28484
28519
  summary: Unlike post
28485
28520
  description: |
28486
28521
  Remove this account's like from a post. Supported platforms: LinkedIn, Twitter/X,
28487
- Facebook, YouTube, Bluesky. On YouTube this clears the rating. For Bluesky,
28522
+ Facebook, YouTube, Bluesky, and Instagram in limited release. On YouTube this clears
28523
+ the rating. Instagram has the same limited release, Facebook Login,
28524
+ `instagram_manage_engagement` and burst-limit constraints as liking. For Bluesky,
28488
28525
  `likeUri` (returned when the post was liked) is required. Reddit uses
28489
28526
  `POST /v1/accounts/{accountId}/reddit-vote` with `direction: 0`.
28490
28527
  tags: [Comments]
@@ -93,7 +93,7 @@ describe 'CommentsApi' do
93
93
 
94
94
  # unit tests for like_inbox_comment
95
95
  # Like comment
96
- # Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn. For Bluesky, the cid (content identifier) is required in the request body. For LinkedIn, pass the composite comment URN returned by the comments endpoints as commentId; an optional reactionType picks the reaction (defaults to LIKE), and accounts connected before the social-feed scopes were requested get a 403 with code &#x60;linkedin_reconnect_required&#x60;.
96
+ # Like or upvote a comment on a post. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn, and Instagram in limited release (see below). For Bluesky, the cid (content identifier) is required in the request body. For LinkedIn, pass the composite comment URN returned by the comments endpoints as commentId; an optional reactionType picks the reaction (defaults to LIKE), and accounts connected before the social-feed scopes were requested get a 403 with code &#x60;linkedin_reconnect_required&#x60;. Instagram is in LIMITED RELEASE and not generally available: the call needs &#x60;instagram_manage_engagement&#x60;, which Meta has so far granted this app only under Standard Access, so it works for app admins, developers and testers of our Meta app and returns a 403 with code &#x60;PLATFORM_BETA_RESTRICTED&#x60; for every other account. That restriction lifts when Meta App Review grants Advanced Access; the constraints below apply once it does. Instagram covers comments and replies on feed posts, reels and carousels. Only an account connected through Facebook Login can be granted &#x60;instagram_manage_engagement&#x60;: an Instagram Login connection returns a 400 with code &#x60;instagram_likes_require_facebook_login&#x60;, and an account whose token predates the permission returns a 403 with code &#x60;reconnect_required&#x60;. Content from private accounts cannot be liked. Instagram also enforces a burst limit of 50 like or unlike calls per 5 seconds per Instagram account, and exceeding it locks that account out of the like API for an hour, so pace bulk loops.
97
97
  # @param post_id
98
98
  # @param comment_id
99
99
  # @param like_inbox_comment_request
@@ -107,7 +107,7 @@ describe 'CommentsApi' do
107
107
 
108
108
  # unit tests for like_post
109
109
  # Like post
110
- # Like (or react to) a post as a connected account. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky. Instagram, Threads, TikTok and Pinterest expose no like endpoint in their APIs and return 400. Reddit returns 400 too, pointing at &#x60;POST /v1/accounts/{accountId}/reddit-vote&#x60;, which covers upvote, downvote and clear on both posts and comments. The account does not have to be the one that published the post, which is what makes executive engagement possible: pass an exec&#39;s &#x60;accountId&#x60; and the brand post&#39;s ID. &#x60;postId&#x60; accepts either a Zernio post ID or the platform&#39;s native post ID. A Zernio post ID resolves to the entry for &#x60;accountId&#x60;, falling back to the post&#39;s single entry on the same platform (two entries on that platform is a 400, so pass the native ID). LinkedIn requires the &#x60;w_member_social_feed&#x60; / &#x60;w_organization_social_feed&#x60; scopes, which are not retroactive: accounts connected before those were requested get a 403 with code &#x60;linkedin_reconnect_required&#x60; until the user reconnects the account. YouTube spends 50 quota units per call.
110
+ # Like (or react to) a post as a connected account. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release (see below). Threads, TikTok and Pinterest expose no like endpoint in their APIs and return 400. Reddit returns 400 too, pointing at &#x60;POST /v1/accounts/{accountId}/reddit-vote&#x60;, which covers upvote, downvote and clear on both posts and comments. The account does not have to be the one that published the post, which is what makes executive engagement possible: pass an exec&#39;s &#x60;accountId&#x60; and the brand post&#39;s ID. &#x60;postId&#x60; accepts either a Zernio post ID or the platform&#39;s native post ID. A Zernio post ID resolves to the entry for &#x60;accountId&#x60;, falling back to the post&#39;s single entry on the same platform (two entries on that platform is a 400, so pass the native ID). LinkedIn requires the &#x60;w_member_social_feed&#x60; / &#x60;w_organization_social_feed&#x60; scopes, which are not retroactive: accounts connected before those were requested get a 403 with code &#x60;linkedin_reconnect_required&#x60; until the user reconnects the account. YouTube spends 50 quota units per call. Instagram is in LIMITED RELEASE and not generally available: the call needs &#x60;instagram_manage_engagement&#x60;, which Meta has so far granted this app only under Standard Access, so it works for app admins, developers and testers of our Meta app and returns a 403 with code &#x60;PLATFORM_BETA_RESTRICTED&#x60; for every other account. That restriction lifts when Meta App Review grants Advanced Access; the constraints below apply once it does. Instagram covers feed images, reels and carousels (stories and private-account media are not likeable). Only an account connected through Facebook Login can be granted &#x60;instagram_manage_engagement&#x60;: an Instagram Login connection returns a 400 with code &#x60;instagram_likes_require_facebook_login&#x60;, and an account whose token predates the permission returns a 403 with code &#x60;reconnect_required&#x60;. Instagram also enforces a burst limit of 50 like or unlike calls per 5 seconds per Instagram account, and exceeding it locks that account out of the like API for an hour, so pace bulk loops.
111
111
  # @param post_id Zernio post ID or the platform&#39;s native post ID
112
112
  # @param like_post_request
113
113
  # @param [Hash] opts the optional parameters
@@ -195,7 +195,7 @@ describe 'CommentsApi' do
195
195
 
196
196
  # unit tests for unlike_inbox_comment
197
197
  # Unlike comment
198
- # Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn. For Bluesky, the likeUri query parameter is required.
198
+ # Remove a like from a comment. Supported platforms: Facebook, Twitter/X, Bluesky, Reddit, LinkedIn, and Instagram in limited release. For Bluesky, the likeUri query parameter is required. Instagram has the same limited release, Facebook Login, &#x60;instagram_manage_engagement&#x60; and burst-limit constraints as liking.
199
199
  # @param post_id
200
200
  # @param comment_id
201
201
  # @param account_id
@@ -210,7 +210,7 @@ describe 'CommentsApi' do
210
210
 
211
211
  # unit tests for unlike_post
212
212
  # Unlike post
213
- # Remove this account&#39;s like from a post. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky. On YouTube this clears the rating. For Bluesky, &#x60;likeUri&#x60; (returned when the post was liked) is required. Reddit uses &#x60;POST /v1/accounts/{accountId}/reddit-vote&#x60; with &#x60;direction: 0&#x60;.
213
+ # Remove this account&#39;s like from a post. Supported platforms: LinkedIn, Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release. On YouTube this clears the rating. Instagram has the same limited release, Facebook Login, &#x60;instagram_manage_engagement&#x60; and burst-limit constraints as liking. For Bluesky, &#x60;likeUri&#x60; (returned when the post was liked) is required. Reddit uses &#x60;POST /v1/accounts/{accountId}/reddit-vote&#x60; with &#x60;direction: 0&#x60;.
214
214
  # @param post_id Zernio post ID or the platform&#39;s native post ID
215
215
  # @param account_id
216
216
  # @param [Hash] opts the optional parameters
@@ -36,10 +36,6 @@ describe Zernio::GetMediaPresignedUrlRequest do
36
36
  describe 'test attribute "content_type"' do
37
37
  it 'should work' do
38
38
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
39
- # validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["image/jpeg", "image/jpg", "image/png", "image/webp", "image/gif", "video/mp4", "video/mpeg", "video/quicktime", "video/avi", "video/x-msvideo", "video/webm", "video/x-m4v", "application/pdf", "audio/mpeg", "audio/mp4", "audio/aac", "audio/ogg", "audio/wav", "audio/webm", "audio/x-m4a"])
40
- # validator.allowable_values.each do |value|
41
- # expect { instance.content_type = value }.not_to raise_error
42
- # end
43
39
  end
44
40
  end
45
41
 
@@ -14,19 +14,17 @@ require 'spec_helper'
14
14
  require 'json'
15
15
  require 'date'
16
16
 
17
- # Unit tests for Zernio::PlatformTargetPlatformSpecificData
17
+ # Unit tests for Zernio::MediaContentType
18
18
  # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
19
  # Please update as you see appropriate
20
- describe Zernio::PlatformTargetPlatformSpecificData do
21
- describe '.openapi_one_of' do
22
- it 'lists the items referenced in the oneOf array' do
23
- expect(described_class.openapi_one_of).to_not be_empty
24
- end
25
- end
20
+ describe Zernio::MediaContentType do
21
+ #let(:instance) { Zernio::MediaContentType.new }
26
22
 
27
- describe '.build' do
28
- it 'returns the correct model' do
29
- # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
23
+ describe 'test an instance of MediaContentType' do
24
+ it 'should create an instance of MediaContentType' do
25
+ # uncomment below to test the instance creation
26
+ #expect(instance).to be_instance_of(Zernio::MediaContentType)
30
27
  end
31
28
  end
29
+
32
30
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: late-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.776
4
+ version: 0.0.778
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAPI-Generator
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-08-26 00:00:00.000000000 Z
11
+ date: 2026-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -1159,6 +1159,7 @@ files:
1159
1159
  - docs/LookupSmsNumber200Response.md
1160
1160
  - docs/MarkConversationRead200Response.md
1161
1161
  - docs/MediaApi.md
1162
+ - docs/MediaContentType.md
1162
1163
  - docs/MediaItem.md
1163
1164
  - docs/MediaUploadResponse.md
1164
1165
  - docs/MentionsApi.md
@@ -1198,7 +1199,6 @@ files:
1198
1199
  - docs/PlatformAnalytics.md
1199
1200
  - docs/PlatformTarget.md
1200
1201
  - docs/PlatformTargetAccountId.md
1201
- - docs/PlatformTargetPlatformSpecificData.md
1202
1202
  - docs/Post.md
1203
1203
  - docs/PostAnalytics.md
1204
1204
  - docs/PostCreateResponse.md
@@ -2991,6 +2991,7 @@ files:
2991
2991
  - lib/zernio-sdk/models/list_workflows200_response_workflows_inner.rb
2992
2992
  - lib/zernio-sdk/models/lookup_sms_number200_response.rb
2993
2993
  - lib/zernio-sdk/models/mark_conversation_read200_response.rb
2994
+ - lib/zernio-sdk/models/media_content_type.rb
2994
2995
  - lib/zernio-sdk/models/media_item.rb
2995
2996
  - lib/zernio-sdk/models/media_upload_response.rb
2996
2997
  - lib/zernio-sdk/models/meta_ads_platform_data.rb
@@ -3026,7 +3027,6 @@ files:
3026
3027
  - lib/zernio-sdk/models/platform_analytics.rb
3027
3028
  - lib/zernio-sdk/models/platform_target.rb
3028
3029
  - lib/zernio-sdk/models/platform_target_account_id.rb
3029
- - lib/zernio-sdk/models/platform_target_platform_specific_data.rb
3030
3030
  - lib/zernio-sdk/models/post.rb
3031
3031
  - lib/zernio-sdk/models/post_analytics.rb
3032
3032
  - lib/zernio-sdk/models/post_create_response.rb
@@ -4788,6 +4788,7 @@ files:
4788
4788
  - spec/models/list_workflows200_response_workflows_inner_spec.rb
4789
4789
  - spec/models/lookup_sms_number200_response_spec.rb
4790
4790
  - spec/models/mark_conversation_read200_response_spec.rb
4791
+ - spec/models/media_content_type_spec.rb
4791
4792
  - spec/models/media_item_spec.rb
4792
4793
  - spec/models/media_upload_response_spec.rb
4793
4794
  - spec/models/meta_ads_platform_data_spec.rb
@@ -4822,7 +4823,6 @@ files:
4822
4823
  - spec/models/pinterest_platform_data_spec.rb
4823
4824
  - spec/models/platform_analytics_spec.rb
4824
4825
  - spec/models/platform_target_account_id_spec.rb
4825
- - spec/models/platform_target_platform_specific_data_spec.rb
4826
4826
  - spec/models/platform_target_spec.rb
4827
4827
  - spec/models/post_analytics_spec.rb
4828
4828
  - spec/models/post_create_response_spec.rb
@@ -5464,7 +5464,7 @@ files:
5464
5464
  - spec/models/you_tube_video_retention_response_retention_curve_inner_spec.rb
5465
5465
  - spec/models/you_tube_video_retention_response_spec.rb
5466
5466
  - spec/spec_helper.rb
5467
- - zernio-sdk-0.0.776.gem
5467
+ - zernio-sdk-0.0.778.gem
5468
5468
  - zernio-sdk.gemspec
5469
5469
  homepage: https://openapi-generator.tech
5470
5470
  licenses:
@@ -6780,7 +6780,6 @@ test_files:
6780
6780
  - spec/models/update_broadcast200_response_broadcast_spec.rb
6781
6781
  - spec/models/restore_workflow_version200_response_spec.rb
6782
6782
  - spec/models/move_account_to_profile200_response_spec.rb
6783
- - spec/models/platform_target_platform_specific_data_spec.rb
6784
6783
  - spec/models/send_conversions200_response_spec.rb
6785
6784
  - spec/models/usage_stats_limits_spec.rb
6786
6785
  - spec/models/conversion_event_spec.rb
@@ -6991,6 +6990,7 @@ test_files:
6991
6990
  - spec/models/list_broadcasts200_response_broadcasts_inner_spec.rb
6992
6991
  - spec/models/set_instagram_ice_breakers_request_spec.rb
6993
6992
  - spec/models/x_article_entity_one_of2_value_spec.rb
6993
+ - spec/models/media_content_type_spec.rb
6994
6994
  - spec/models/list_sip_trunks200_response_trunks_inner_spec.rb
6995
6995
  - spec/models/send_whats_app_conversion_request_spec.rb
6996
6996
  - spec/models/get_linked_in_supply_forecast200_response_forecast_inner_time_series_inner_spec.rb
@@ -1,75 +0,0 @@
1
- # Zernio::PlatformTargetPlatformSpecificData
2
-
3
- ## Class instance methods
4
-
5
- ### `openapi_one_of`
6
-
7
- Returns the list of classes defined in oneOf.
8
-
9
- #### Example
10
-
11
- ```ruby
12
- require 'zernio-sdk'
13
-
14
- Zernio::PlatformTargetPlatformSpecificData.openapi_one_of
15
- # =>
16
- # [
17
- # :'BlueskyPlatformData',
18
- # :'DiscordPlatformData',
19
- # :'FacebookPlatformData',
20
- # :'GoogleBusinessPlatformData',
21
- # :'InstagramPlatformData',
22
- # :'LinkedInPlatformData',
23
- # :'PinterestPlatformData',
24
- # :'RedditPlatformData',
25
- # :'SlackPlatformData',
26
- # :'SnapchatPlatformData',
27
- # :'TelegramPlatformData',
28
- # :'ThreadsPlatformData',
29
- # :'TikTokPlatformData',
30
- # :'TwitterPlatformData',
31
- # :'YouTubePlatformData'
32
- # ]
33
- ```
34
-
35
- ### build
36
-
37
- Find the appropriate object from the `openapi_one_of` list and casts the data into it.
38
-
39
- #### Example
40
-
41
- ```ruby
42
- require 'zernio-sdk'
43
-
44
- Zernio::PlatformTargetPlatformSpecificData.build(data)
45
- # => #<BlueskyPlatformData:0x00007fdd4aab02a0>
46
-
47
- Zernio::PlatformTargetPlatformSpecificData.build(data_that_doesnt_match)
48
- # => nil
49
- ```
50
-
51
- #### Parameters
52
-
53
- | Name | Type | Description |
54
- | ---- | ---- | ----------- |
55
- | **data** | **Mixed** | data to be matched against the list of oneOf items |
56
-
57
- #### Return type
58
-
59
- - `BlueskyPlatformData`
60
- - `DiscordPlatformData`
61
- - `FacebookPlatformData`
62
- - `GoogleBusinessPlatformData`
63
- - `InstagramPlatformData`
64
- - `LinkedInPlatformData`
65
- - `PinterestPlatformData`
66
- - `RedditPlatformData`
67
- - `SlackPlatformData`
68
- - `SnapchatPlatformData`
69
- - `TelegramPlatformData`
70
- - `ThreadsPlatformData`
71
- - `TikTokPlatformData`
72
- - `TwitterPlatformData`
73
- - `YouTubePlatformData`
74
- - `nil` (if no type matches)
75
-
@@ -1,118 +0,0 @@
1
- =begin
2
- #Zernio API
3
-
4
- #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
5
-
6
- The version of the OpenAPI document: 1.0.4
7
- Contact: support@zernio.com
8
- Generated by: https://openapi-generator.tech
9
- Generator version: 7.19.0
10
-
11
- =end
12
-
13
- require 'date'
14
- require 'time'
15
-
16
- module Zernio
17
- # Platform-specific overrides and options.
18
- module PlatformTargetPlatformSpecificData
19
- class << self
20
- # List of class defined in oneOf (OpenAPI v3)
21
- def openapi_one_of
22
- [
23
- :'BlueskyPlatformData',
24
- :'DiscordPlatformData',
25
- :'FacebookPlatformData',
26
- :'GoogleBusinessPlatformData',
27
- :'InstagramPlatformData',
28
- :'LinkedInPlatformData',
29
- :'PinterestPlatformData',
30
- :'RedditPlatformData',
31
- :'SlackPlatformData',
32
- :'SnapchatPlatformData',
33
- :'TelegramPlatformData',
34
- :'ThreadsPlatformData',
35
- :'TikTokPlatformData',
36
- :'TwitterPlatformData',
37
- :'YouTubePlatformData'
38
- ]
39
- end
40
-
41
- # Builds the object
42
- # @param [Mixed] Data to be matched against the list of oneOf items
43
- # @return [Object] Returns the model or the data itself
44
- def build(data)
45
- # Go through the list of oneOf items and attempt to identify the appropriate one.
46
- # Note:
47
- # - We do not attempt to check whether exactly one item matches.
48
- # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 })
49
- # due to the way the deserialization is made in the base_object template (it just casts without verifying).
50
- # - TODO: scalar values are de facto behaving as if they were nullable.
51
- # - TODO: logging when debugging is set.
52
- openapi_one_of.each do |klass|
53
- begin
54
- next if klass == :AnyType # "nullable: true"
55
- return find_and_cast_into_type(klass, data)
56
- rescue # rescue all errors so we keep iterating even if the current item lookup raises
57
- end
58
- end
59
-
60
- openapi_one_of.include?(:AnyType) ? data : nil
61
- end
62
-
63
- private
64
-
65
- SchemaMismatchError = Class.new(StandardError)
66
-
67
- # Note: 'File' is missing here because in the regular case we get the data _after_ a call to JSON.parse.
68
- def find_and_cast_into_type(klass, data)
69
- return if data.nil?
70
-
71
- case klass.to_s
72
- when 'Boolean'
73
- return data if data.instance_of?(TrueClass) || data.instance_of?(FalseClass)
74
- when 'Float'
75
- return data if data.instance_of?(Float)
76
- when 'Integer'
77
- return data if data.instance_of?(Integer)
78
- when 'Time'
79
- return Time.parse(data)
80
- when 'Date'
81
- return Date.iso8601(data)
82
- when 'String'
83
- return data if data.instance_of?(String)
84
- when 'Object' # "type: object"
85
- return data if data.instance_of?(Hash)
86
- when /\AArray<(?<sub_type>.+)>\z/ # "type: array"
87
- if data.instance_of?(Array)
88
- sub_type = Regexp.last_match[:sub_type]
89
- return data.map { |item| find_and_cast_into_type(sub_type, item) }
90
- end
91
- when /\AHash<String, (?<sub_type>.+)>\z/ # "type: object" with "additionalProperties: { ... }"
92
- if data.instance_of?(Hash) && data.keys.all? { |k| k.instance_of?(Symbol) || k.instance_of?(String) }
93
- sub_type = Regexp.last_match[:sub_type]
94
- return data.each_with_object({}) { |(k, v), hsh| hsh[k] = find_and_cast_into_type(sub_type, v) }
95
- end
96
- else # model
97
- const = Zernio.const_get(klass)
98
- if const
99
- if const.respond_to?(:openapi_one_of) # nested oneOf model
100
- model = const.build(data)
101
- return model if model
102
- else
103
- # raise if data contains keys that are not known to the model
104
- raise if const.respond_to?(:acceptable_attributes) && !(data.keys - const.acceptable_attributes).empty?
105
- model = const.build_from_hash(data)
106
- return model if model
107
- end
108
- end
109
- end
110
-
111
- raise # if no match by now, raise
112
- rescue
113
- raise SchemaMismatchError, "#{data} doesn't match the #{klass} type"
114
- end
115
- end
116
- end
117
-
118
- end
Binary file