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 +4 -4
- data/README.md +1 -1
- data/docs/CommentsApi.md +4 -4
- data/docs/GetMediaPresignedUrlRequest.md +2 -2
- data/docs/MediaApi.md +1 -1
- data/docs/MediaContentType.md +15 -0
- data/docs/PlatformTarget.md +1 -1
- data/lib/zernio-sdk/api/comments_api.rb +8 -8
- data/lib/zernio-sdk/models/get_media_presigned_url_request.rb +6 -9
- data/lib/zernio-sdk/models/media_content_type.rb +58 -0
- data/lib/zernio-sdk/models/platform_target.rb +5 -2
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +1 -1
- data/openapi.yaml +86 -49
- data/spec/api/comments_api_spec.rb +4 -4
- data/spec/models/get_media_presigned_url_request_spec.rb +0 -4
- data/spec/models/{platform_target_platform_specific_data_spec.rb → media_content_type_spec.rb} +8 -10
- data/zernio-sdk-0.0.778.gem +0 -0
- metadata +7 -7
- data/docs/PlatformTargetPlatformSpecificData.md +0 -75
- data/lib/zernio-sdk/models/platform_target_platform_specific_data.rb +0 -118
- data/zernio-sdk-0.0.776.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: 56db0fb238364eef6bb11a8e8957ac348cefba523d467a1f38f227c2ea9e0cc7
|
|
4
|
+
data.tar.gz: dff9cb9ad41bb533d40ceb3b78152997e286fcbcbb3e6ccb455bf529f1c445fd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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** | **
|
|
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:
|
|
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:
|
|
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
|
data/docs/PlatformTarget.md
CHANGED
|
@@ -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** |
|
|
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
|
|
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
|
|
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' => :'
|
|
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
|
|
154
|
-
# @param [Object] content_type
|
|
150
|
+
# Custom attribute writer method with validation
|
|
151
|
+
# @param [Object] content_type Value to be assigned
|
|
155
152
|
def content_type=(content_type)
|
|
156
|
-
|
|
157
|
-
|
|
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' => :'
|
|
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
|
-
|
|
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')
|
data/lib/zernio-sdk/version.rb
CHANGED
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
|
-
|
|
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
|
-
|
|
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
|
|
28328
|
-
|
|
28329
|
-
|
|
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
|
|
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
|
|
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
|
|
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 `linkedin_reconnect_required`.
|
|
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 `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.
|
|
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
|
|
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 `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.
|
|
111
111
|
# @param post_id Zernio post ID or the platform'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, `instagram_manage_engagement` 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'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`.
|
|
213
|
+
# 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`.
|
|
214
214
|
# @param post_id Zernio post ID or the platform'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
|
|
data/spec/models/{platform_target_platform_specific_data_spec.rb → media_content_type_spec.rb}
RENAMED
|
@@ -14,19 +14,17 @@ require 'spec_helper'
|
|
|
14
14
|
require 'json'
|
|
15
15
|
require 'date'
|
|
16
16
|
|
|
17
|
-
# Unit tests for Zernio::
|
|
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::
|
|
21
|
-
|
|
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 '
|
|
28
|
-
it '
|
|
29
|
-
#
|
|
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.
|
|
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-
|
|
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.
|
|
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
|
data/zernio-sdk-0.0.776.gem
DELETED
|
Binary file
|