Class: Zernio::PostsApi
- Inherits:
-
Object
- Object
- Zernio::PostsApi
- Defined in:
- lib/zernio-sdk/api/posts_api.rb
Instance Attribute Summary collapse
-
#api_client ⇒ Object
Returns the value of attribute api_client.
Instance Method Summary collapse
-
#bulk_upload_posts(opts = {}) ⇒ BulkUploadResult
Bulk upload from CSV Create multiple posts by uploading a CSV file.
-
#bulk_upload_posts_with_http_info(opts = {}) ⇒ Array<(BulkUploadResult, Integer, Hash)>
Bulk upload from CSV Create multiple posts by uploading a CSV file.
-
#create_post(create_post_request, opts = {}) ⇒ CreatePost200Response
Create post Create a post, and optionally publish it in the same request.
-
#create_post_with_http_info(create_post_request, opts = {}) ⇒ Array<(CreatePost200Response, Integer, Hash)>
Create post Create a post, and optionally publish it in the same request.
-
#delete_post(post_id, opts = {}) ⇒ PostDeleteResponse
Delete post Delete a post from Zernio.
-
#delete_post_with_http_info(post_id, opts = {}) ⇒ Array<(PostDeleteResponse, Integer, Hash)>
Delete post Delete a post from Zernio.
-
#edit_post(post_id, edit_post_request, opts = {}) ⇒ EditPost200Response
Edit published post Edit the text of an already-published post.
-
#edit_post_with_http_info(post_id, edit_post_request, opts = {}) ⇒ Array<(EditPost200Response, Integer, Hash)>
Edit published post Edit the text of an already-published post.
-
#get_post(post_id, opts = {}) ⇒ PostGetResponse
Get post Fetch a single post by ID.
-
#get_post_with_http_info(post_id, opts = {}) ⇒ Array<(PostGetResponse, Integer, Hash)>
Get post Fetch a single post by ID.
-
#initialize(api_client = ApiClient.default) ⇒ PostsApi
constructor
A new instance of PostsApi.
-
#list_posts(opts = {}) ⇒ PostsListResponse
List posts Returns a paginated list of posts.
-
#list_posts_with_http_info(opts = {}) ⇒ Array<(PostsListResponse, Integer, Hash)>
List posts Returns a paginated list of posts.
-
#retry_post(post_id, opts = {}) ⇒ PostRetryResponse
Retry failed post Immediately retries publishing a failed post.
-
#retry_post_with_http_info(post_id, opts = {}) ⇒ Array<(PostRetryResponse, Integer, Hash)>
Retry failed post Immediately retries publishing a failed post.
-
#unpublish_post(post_id, unpublish_post_request, opts = {}) ⇒ UnpublishPost200Response
Unpublish post Deletes a published post from the specified platform.
-
#unpublish_post_with_http_info(post_id, unpublish_post_request, opts = {}) ⇒ Array<(UnpublishPost200Response, Integer, Hash)>
Unpublish post Deletes a published post from the specified platform.
-
#update_post(post_id, update_post_request, opts = {}) ⇒ PostUpdateResponse
Update post Update an existing post.
-
#update_post_metadata(post_id, update_post_metadata_request, opts = {}) ⇒ UpdatePostMetadata200Response
Update post metadata Updates metadata of a published video on the specified platform without re-uploading.
-
#update_post_metadata_with_http_info(post_id, update_post_metadata_request, opts = {}) ⇒ Array<(UpdatePostMetadata200Response, Integer, Hash)>
Update post metadata Updates metadata of a published video on the specified platform without re-uploading.
-
#update_post_with_http_info(post_id, update_post_request, opts = {}) ⇒ Array<(PostUpdateResponse, Integer, Hash)>
Update post Update an existing post.
Constructor Details
Instance Attribute Details
#api_client ⇒ Object
Returns the value of attribute api_client.
17 18 19 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 17 def api_client @api_client end |
Instance Method Details
#bulk_upload_posts(opts = {}) ⇒ BulkUploadResult
Bulk upload from CSV
Create multiple posts by uploading a CSV file. Use dryRun=true to validate without creating posts. CSV columns: - Required: platforms, profiles, and a schedule (one of schedule_time, a schedule_time_<platform> override, publish_now=true, use_queue=true, or is_draft=true). - Content: at least one of post_content, title, or media_urls is required. - Aliases: a handful of columns accept the JSON field name from POST /v1/posts, since integrators infer the CSV shape from that endpoint's body. When both are present the real CSV column wins, unless it is blank for that row, in which case the alias value is used. - content aliases post_content - timezone aliases tz - scheduledFor aliases schedule_time - mediaUrls aliases media_urls - Per-platform overrides use three dynamic column prefixes, one column per platform (e.g. schedule_time_instagram, custom_content_tiktok, custom_media_youtube): schedule_time_<platform>, custom_content_<platform>, custom_media_<platform>. - Any other column is not read. It does not error, but it is reported in the response's warnings array as unknown_columns:<a,b,c> (see BulkUploadResult), so a misnamed or unsupported column is never silently dropped. - Row limits: 5000 rows is a hard cap that returns 400 above it. 500 rows is only an advisory threshold, it adds rows_exceed_advisory_limit:500 to warnings and the request still processes. Example row (header + one data row): post_content,platforms,profiles,schedule_time,tz \"Hello world\",instagram,MyProfile,2026-09-01 10:00,America/New_York
28 29 30 31 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 28 def bulk_upload_posts(opts = {}) data, _status_code, _headers = bulk_upload_posts_with_http_info(opts) data end |
#bulk_upload_posts_with_http_info(opts = {}) ⇒ Array<(BulkUploadResult, Integer, Hash)>
Bulk upload from CSV Create multiple posts by uploading a CSV file. Use dryRun=true to validate without creating posts. CSV columns: - Required: `platforms`, `profiles`, and a schedule (one of `schedule_time`, a `schedule_time_<platform>` override, `publish_now=true`, `use_queue=true`, or `is_draft=true`). - Content: at least one of `post_content`, `title`, or `media_urls` is required. - Aliases: a handful of columns accept the JSON field name from POST /v1/posts, since integrators infer the CSV shape from that endpoint's body. When both are present the real CSV column wins, unless it is blank for that row, in which case the alias value is used. - `content` aliases `post_content` - `timezone` aliases `tz` - `scheduledFor` aliases `schedule_time` - `mediaUrls` aliases `media_urls` - Per-platform overrides use three dynamic column prefixes, one column per platform (e.g. `schedule_time_instagram`, `custom_content_tiktok`, `custom_media_youtube`): `schedule_time_<platform>`, `custom_content_<platform>`, `custom_media_<platform>`. - Any other column is not read. It does not error, but it is reported in the response's `warnings` array as `unknown_columns:<a,b,c>` (see BulkUploadResult), so a misnamed or unsupported column is never silently dropped. - Row limits: 5000 rows is a hard cap that returns 400 above it. 500 rows is only an advisory threshold, it adds `rows_exceed_advisory_limit:500` to `warnings` and the request still processes. Example row (header + one data row): ``` post_content,platforms,profiles,schedule_time,tz "Hello world",instagram,MyProfile,2026-09-01 10:00,America/New_York ```
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 39 def bulk_upload_posts_with_http_info(opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.bulk_upload_posts ...' end # resource path local_var_path = '/v1/posts/bulk-upload' # query parameters query_params = opts[:query_params] || {} query_params[:'dryRun'] = opts[:'dry_run'] if !opts[:'dry_run'].nil? # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # HTTP header 'Content-Type' content_type = @api_client.select_header_content_type(['multipart/form-data']) if !content_type.nil? header_params['Content-Type'] = content_type end # form parameters form_params = opts[:form_params] || {} form_params['file'] = opts[:'file'] if !opts[:'file'].nil? # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'BulkUploadResult' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.bulk_upload_posts", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:POST, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#bulk_upload_posts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |
#create_post(create_post_request, opts = {}) ⇒ CreatePost200Response
Create post
Create a post, and optionally publish it in the same request. A post published immediately (publishNow: true) comes back with platformPostUrl in the response. content is optional in four cases: - media is attached - all platforms have customContent - every platform entry is an X Article (platformSpecificData.article) - every platform entry is a LinkedIn text-free reshare (platformSpecificData.reshareUrl with no text) See each platform's schema for media constraints. ## Scheduling Pick one of: - scheduledFor: publish at the scheduled time - publishNow: true: publish synchronously, inside this request - queuedFromProfile: publish in the profile's next queue slot With none of them and isDraft unset, the post is saved as a draft. platforms is required unless the post is a draft. Precedence: isDraft: true wins over publishNow and scheduledFor (the post is saved, never published), and publishNow: true wins over scheduledFor. A scheduledFor already in the past is not rejected: the post is published synchronously in the same request, exactly like publishNow. ## Idempotency Three layers of duplicate-protection apply, so safe-to-retry callers (network blips, n8n / Zapier retries, etc.) don't accidentally double-post. 1. Idempotency-Key (recommended for retries, 24-hour window). Send an Idempotency-Key header (a UUID per logical post, up to 255 characters) and reuse it when you retry after a 5xx, a timeout or a dropped connection. A retry with the same key within 24 hours returns HTTP 200 with the original post in the post field, and no new post is created. The match is on the key alone, not on the body: a retry returns the original post even if its body differs (for example a re-uploaded media URL). It covers drafts, and a post that was saved even though the original response was a 5xx or timed out. If the first request is still being processed, the retry gets HTTP 409 with code: idempotency_conflict and a Retry-After header; retry after that delay. If the first request failed without creating a post, the retry is processed as a new request. Keys are scoped to your user. Never reuse a key for a different post: that post would not be created, and the earlier one would be returned instead. 2. x-request-id retry detection (24-hour window). If a request carries the same x-request-id as an earlier one AND collides with it on the content fingerprint below (same account, content and media URLs), we return HTTP 200 with the original post in the post field (or HTTP 202 with postId if the original is still being saved) instead of a 409. A request with the same x-request-id but different content is a new post. When both headers are sent, Idempotency-Key wins and x-request-id is ignored for matching. The official Zernio SDKs auto-generate a unique x-request-id per call. On a generic HTTP client (curl, n8n's HTTP node, Zapier, custom code), either: - Set a unique x-request-id per logical call (UUIDv4 is fine) - Or omit the header, and we'll treat each request as new 3. Content-hash dedup (24-hour window). Independently, we hash (platform, accountId, content + media URLs) and reject duplicates within 24 hours with HTTP 409. This catches genuine "same content posted twice to the same account" cases regardless of x-request-id. The response carries error, accountId, platform, and existingPostId so you can find the original. To intentionally re-post identical content within 24h, change something (the caption, the media, the account), because the dedup is keyed on the full content fingerprint. Order: an Idempotency-Key match (200) is checked first, then same-x-request-id retries (200), then the content-hash dedup (409).
97 98 99 100 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 97 def create_post(create_post_request, opts = {}) data, _status_code, _headers = create_post_with_http_info(create_post_request, opts) data end |
#create_post_with_http_info(create_post_request, opts = {}) ⇒ Array<(CreatePost200Response, Integer, Hash)>
Create post Create a post, and optionally publish it in the same request. A post published immediately (`publishNow: true`) comes back with `platformPostUrl` in the response. `content` is optional in four cases: - media is attached - all platforms have `customContent` - every platform entry is an X Article (`platformSpecificData.article`) - every platform entry is a LinkedIn text-free reshare (`platformSpecificData.reshareUrl` with no text) See each platform's schema for media constraints. ## Scheduling Pick one of: - `scheduledFor`: publish at the scheduled time - `publishNow: true`: publish synchronously, inside this request - `queuedFromProfile`: publish in the profile's next queue slot With none of them and `isDraft` unset, the post is saved as a draft. `platforms` is required unless the post is a draft. Precedence: `isDraft: true` wins over `publishNow` and `scheduledFor` (the post is saved, never published), and `publishNow: true` wins over `scheduledFor`. A `scheduledFor` already in the past is not rejected: the post is published synchronously in the same request, exactly like `publishNow`. ## Idempotency Three layers of duplicate-protection apply, so safe-to-retry callers (network blips, n8n / Zapier retries, etc.) don't accidentally double-post. 1. `Idempotency-Key` (recommended for retries, 24-hour window). Send an `Idempotency-Key` header (a UUID per logical post, up to 255 characters) and reuse it when you retry after a 5xx, a timeout or a dropped connection. A retry with the same key within 24 hours returns HTTP 200 with the original post in the `post` field, and no new post is created. The match is on the key alone, not on the body: a retry returns the original post even if its body differs (for example a re-uploaded media URL). It covers drafts, and a post that was saved even though the original response was a 5xx or timed out. If the first request is still being processed, the retry gets HTTP 409 with `code: idempotency_conflict` and a `Retry-After` header; retry after that delay. If the first request failed without creating a post, the retry is processed as a new request. Keys are scoped to your user. Never reuse a key for a different post: that post would not be created, and the earlier one would be returned instead. 2. `x-request-id` retry detection (24-hour window). If a request carries the same `x-request-id` as an earlier one AND collides with it on the content fingerprint below (same account, content and media URLs), we return HTTP 200 with the original post in the `post` field (or HTTP 202 with `postId` if the original is still being saved) instead of a 409. A request with the same `x-request-id` but different content is a new post. When both headers are sent, `Idempotency-Key` wins and `x-request-id` is ignored for matching. The official Zernio SDKs auto-generate a unique `x-request-id` per call. On a generic HTTP client (curl, n8n's HTTP node, Zapier, custom code), either: - Set a unique `x-request-id` per logical call (UUIDv4 is fine) - Or omit the header, and we'll treat each request as new 3. Content-hash dedup (24-hour window). Independently, we hash `(platform, accountId, content + media URLs)` and reject duplicates within 24 hours with HTTP 409. This catches genuine "same content posted twice to the same account" cases regardless of `x-request-id`. The response carries `error`, `accountId`, `platform`, and `existingPostId` so you can find the original. To intentionally re-post identical content within 24h, change something (the caption, the media, the account), because the dedup is keyed on the full content fingerprint. Order: an `Idempotency-Key` match (200) is checked first, then same-`x-request-id` retries (200), then the content-hash dedup (409).
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 109 def create_post_with_http_info(create_post_request, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.create_post ...' end # verify the required parameter 'create_post_request' is set if @api_client.config.client_side_validation && create_post_request.nil? fail ArgumentError, "Missing the required parameter 'create_post_request' when calling PostsApi.create_post" end if @api_client.config.client_side_validation && !opts[:'idempotency_key'].nil? && opts[:'idempotency_key'].to_s.length > 255 fail ArgumentError, 'invalid value for "opts[:"idempotency_key"]" when calling PostsApi.create_post, the character length must be smaller than or equal to 255.' end # resource path local_var_path = '/v1/posts' # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # HTTP header 'Content-Type' content_type = @api_client.select_header_content_type(['application/json']) if !content_type.nil? header_params['Content-Type'] = content_type end header_params[:'Idempotency-Key'] = opts[:'idempotency_key'] if !opts[:'idempotency_key'].nil? header_params[:'x-request-id'] = opts[:'x_request_id'] if !opts[:'x_request_id'].nil? # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] || @api_client.object_to_http_body(create_post_request) # return_type return_type = opts[:debug_return_type] || 'CreatePost200Response' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.create_post", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:POST, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#create_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |
#delete_post(post_id, opts = {}) ⇒ PostDeleteResponse
Delete post
Delete a post from Zernio. Any status except published can be deleted: draft, scheduled, publishing, failed, partial and cancelled. Published posts cannot be deleted; use the Unpublish endpoint instead. Upload quota is automatically refunded for draft and scheduled posts. Deleting a publishing or partial post is how you stop entries that are still pending, for example entries held on a disconnected account. It removes the whole post record from Zernio, including the entries that were already published, but it does not remove anything already live on a platform (use Unpublish for that first if needed). An entry that a worker has already started sending when you delete may still go out, or may fail because media uploaded to Zernio and not used by another post is deleted with the post. Analytics for entries already published are removed too. Deleting also frees the content for re-creation, so the same caption and media are no longer reported as a duplicate.
173 174 175 176 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 173 def delete_post(post_id, opts = {}) data, _status_code, _headers = delete_post_with_http_info(post_id, opts) data end |
#delete_post_with_http_info(post_id, opts = {}) ⇒ Array<(PostDeleteResponse, Integer, Hash)>
Delete post Delete a post from Zernio. Any status except `published` can be deleted: `draft`, `scheduled`, `publishing`, `failed`, `partial` and `cancelled`. Published posts cannot be deleted; use the Unpublish endpoint instead. Upload quota is automatically refunded for draft and scheduled posts. Deleting a `publishing` or `partial` post is how you stop entries that are still pending, for example entries held on a disconnected account. It removes the whole post record from Zernio, including the entries that were already published, but it does not remove anything already live on a platform (use Unpublish for that first if needed). An entry that a worker has already started sending when you delete may still go out, or may fail because media uploaded to Zernio and not used by another post is deleted with the post. Analytics for entries already published are removed too. Deleting also frees the content for re-creation, so the same caption and media are no longer reported as a duplicate.
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 183 def delete_post_with_http_info(post_id, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.delete_post ...' end # verify the required parameter 'post_id' is set if @api_client.config.client_side_validation && post_id.nil? fail ArgumentError, "Missing the required parameter 'post_id' when calling PostsApi.delete_post" end # resource path local_var_path = '/v1/posts/{postId}'.sub('{' + 'postId' + '}', CGI.escape(post_id.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'PostDeleteResponse' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.delete_post", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#delete_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |
#edit_post(post_id, edit_post_request, opts = {}) ⇒ EditPost200Response
Edit published post
Edit the text of an already-published post. Supported on X, Discord, Facebook, Reddit, LinkedIn, Telegram, Pinterest, Google Business Profile, YouTube, and Slack. When a post was published to several accounts on the same platform, pass accountId to pick which account's copy to edit (the first entry is edited otherwise). Each platform enforces its own rules: X - Connected X account must have an active X Premium subscription - Must be within 1 hour of original publish time - Maximum 5 edits per tweet (enforced by X) - Threads cannot be edited, only single tweets - X assigns a NEW post ID on edit, returned as id Discord - No time limit and no premium requirement - The message ID is unchanged after the edit Facebook - Graph only permits editing a post that the same app created, so this works on posts published through Zernio and is rejected for posts created in Meta Business Suite / Composer or by another tool - Media cannot be swapped, only the message text - Reactions, comments, and shares are preserved. The post ID is unchanged Reddit - Self-posts only. A link post has no editable body and is rejected before the write - Body only. Reddit exposes no API to edit a post title, ever - The post ID is unchanged LinkedIn - Text only, no time limit. Media, polls, articles, and reshare targets cannot be changed - Works for member and organization posts published through this API. The post keeps its ID and LinkedIn shows an "edited" marker - Text is limited to 3,000 characters; mentions and hashtags are preserved Telegram - No time limit; messages published through Zernio are editable indefinitely - Text posts: edits the message text (up to 4096 characters) - Media posts: edits the caption only (up to 1024 characters). The media itself cannot be swapped - For albums, the caption shown on the album (its first message) is edited - The message ID is unchanged Pinterest - Description only, maximum 800 characters. Media, link, and board cannot be changed, and a pin title derived from the old content's first line at publish stays as-is - Pinterest's pin-update endpoint is currently in closed beta; until the app is allowlisted by Pinterest, edits are rejected with a "beta feature not yet enabled" error - The pin ID is unchanged Google Business Profile - Post body (summary) text only. Call-to-action, event/offer fields, and media are untouched - No time limit and no edit limit. The post ID is unchanged - The post must still exist on Google: a post deleted from the Business Profile dashboard, or an event/offer post past its end date, returns a 404 YouTube - content replaces the video description only. The title is unchanged, even if it was originally derived from the content's first line at publish time - Title, tags, thumbnail, and privacy edits belong to POST /v1/posts/{postId}/update-metadata - No time window and no edit cap. The video ID is unchanged Slack - Text only, up to 4,000 characters. Media cannot be swapped, and media posts whose share message reference never resolved cannot be edited - No time limit unless workspace admins restrict message editing - The message ID is unchanged Media edits are not supported on any platform. The post record in Zernio is updated with the new content and an edit-history entry.
237 238 239 240 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 237 def edit_post(post_id, edit_post_request, opts = {}) data, _status_code, _headers = edit_post_with_http_info(post_id, edit_post_request, opts) data end |
#edit_post_with_http_info(post_id, edit_post_request, opts = {}) ⇒ Array<(EditPost200Response, Integer, Hash)>
Edit published post Edit the text of an already-published post. Supported on X, Discord, Facebook, Reddit, LinkedIn, Telegram, Pinterest, Google Business Profile, YouTube, and Slack. When a post was published to several accounts on the same platform, pass `accountId` to pick which account's copy to edit (the first entry is edited otherwise). Each platform enforces its own rules: X - Connected X account must have an active X Premium subscription - Must be within 1 hour of original publish time - Maximum 5 edits per tweet (enforced by X) - Threads cannot be edited, only single tweets - X assigns a NEW post ID on edit, returned as `id` Discord - No time limit and no premium requirement - The message ID is unchanged after the edit Facebook - Graph only permits editing a post that the same app created, so this works on posts published through Zernio and is rejected for posts created in Meta Business Suite / Composer or by another tool - Media cannot be swapped, only the message text - Reactions, comments, and shares are preserved. The post ID is unchanged Reddit - Self-posts only. A link post has no editable body and is rejected before the write - Body only. Reddit exposes no API to edit a post title, ever - The post ID is unchanged LinkedIn - Text only, no time limit. Media, polls, articles, and reshare targets cannot be changed - Works for member and organization posts published through this API. The post keeps its ID and LinkedIn shows an "edited" marker - Text is limited to 3,000 characters; mentions and hashtags are preserved Telegram - No time limit; messages published through Zernio are editable indefinitely - Text posts: edits the message text (up to 4096 characters) - Media posts: edits the caption only (up to 1024 characters). The media itself cannot be swapped - For albums, the caption shown on the album (its first message) is edited - The message ID is unchanged Pinterest - Description only, maximum 800 characters. Media, link, and board cannot be changed, and a pin title derived from the old content's first line at publish stays as-is - Pinterest's pin-update endpoint is currently in closed beta; until the app is allowlisted by Pinterest, edits are rejected with a "beta feature not yet enabled" error - The pin ID is unchanged Google Business Profile - Post body (summary) text only. Call-to-action, event/offer fields, and media are untouched - No time limit and no edit limit. The post ID is unchanged - The post must still exist on Google: a post deleted from the Business Profile dashboard, or an event/offer post past its end date, returns a 404 YouTube - `content` replaces the video description only. The title is unchanged, even if it was originally derived from the content's first line at publish time - Title, tags, thumbnail, and privacy edits belong to `POST /v1/posts/postId/update-metadata` - No time window and no edit cap. The video ID is unchanged Slack - Text only, up to 4,000 characters. Media cannot be swapped, and media posts whose share message reference never resolved cannot be edited - No time limit unless workspace admins restrict message editing - The message ID is unchanged Media edits are not supported on any platform. The post record in Zernio is updated with the new content and an edit-history entry.
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 248 def edit_post_with_http_info(post_id, edit_post_request, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.edit_post ...' end # verify the required parameter 'post_id' is set if @api_client.config.client_side_validation && post_id.nil? fail ArgumentError, "Missing the required parameter 'post_id' when calling PostsApi.edit_post" end # verify the required parameter 'edit_post_request' is set if @api_client.config.client_side_validation && edit_post_request.nil? fail ArgumentError, "Missing the required parameter 'edit_post_request' when calling PostsApi.edit_post" end # resource path local_var_path = '/v1/posts/{postId}/edit'.sub('{' + 'postId' + '}', CGI.escape(post_id.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # HTTP header 'Content-Type' content_type = @api_client.select_header_content_type(['application/json']) if !content_type.nil? header_params['Content-Type'] = content_type end # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] || @api_client.object_to_http_body(edit_post_request) # return_type return_type = opts[:debug_return_type] || 'EditPost200Response' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.edit_post", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:POST, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#edit_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |
#get_post(post_id, opts = {}) ⇒ PostGetResponse
Get post Fetch a single post by ID. For published posts, this returns platformPostUrl for each platform.
310 311 312 313 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 310 def get_post(post_id, opts = {}) data, _status_code, _headers = get_post_with_http_info(post_id, opts) data end |
#get_post_with_http_info(post_id, opts = {}) ⇒ Array<(PostGetResponse, Integer, Hash)>
Get post Fetch a single post by ID. For published posts, this returns platformPostUrl for each platform.
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 320 def get_post_with_http_info(post_id, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.get_post ...' end # verify the required parameter 'post_id' is set if @api_client.config.client_side_validation && post_id.nil? fail ArgumentError, "Missing the required parameter 'post_id' when calling PostsApi.get_post" end # resource path local_var_path = '/v1/posts/{postId}'.sub('{' + 'postId' + '}', CGI.escape(post_id.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'PostGetResponse' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.get_post", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:GET, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#get_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |
#list_posts(opts = {}) ⇒ PostsListResponse
List posts Returns a paginated list of posts. Published posts include platformPostUrl with the public URL on each platform. A query parameter that is not listed here returns 400 naming it and the accepted parameters, so a misspelled filter never silently returns the unfiltered list.
388 389 390 391 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 388 def list_posts(opts = {}) data, _status_code, _headers = list_posts_with_http_info(opts) data end |
#list_posts_with_http_info(opts = {}) ⇒ Array<(PostsListResponse, Integer, Hash)>
List posts Returns a paginated list of posts. Published posts include platformPostUrl with the public URL on each platform. A query parameter that is not listed here returns 400 naming it and the accepted parameters, so a misspelled filter never silently returns the unfiltered list.
413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 413 def list_posts_with_http_info(opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.list_posts ...' end if @api_client.config.client_side_validation && !opts[:'page'].nil? && opts[:'page'] < 1 fail ArgumentError, 'invalid value for "opts[:"page"]" when calling PostsApi.list_posts, must be greater than or equal to 1.' end if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 500 fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling PostsApi.list_posts, must be smaller than or equal to 500.' end if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1 fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling PostsApi.list_posts, must be greater than or equal to 1.' end if @api_client.config.client_side_validation && !opts[:'offset'].nil? && opts[:'offset'] < 0 fail ArgumentError, 'invalid value for "opts[:"offset"]" when calling PostsApi.list_posts, must be greater than or equal to 0.' end allowable_values = ["zernio", "external"] if @api_client.config.client_side_validation && opts[:'source'] && !allowable_values.include?(opts[:'source']) fail ArgumentError, "invalid value for \"source\", must be one of #{allowable_values}" end allowable_values = ["draft", "scheduled", "publishing", "published", "partial", "failed", "cancelled"] if @api_client.config.client_side_validation && opts[:'status'] && !allowable_values.include?(opts[:'status']) fail ArgumentError, "invalid value for \"status\", must be one of #{allowable_values}" end allowable_values = ["scheduled-desc", "scheduled-asc", "created-desc", "created-asc", "status", "platform"] if @api_client.config.client_side_validation && opts[:'sort_by'] && !allowable_values.include?(opts[:'sort_by']) fail ArgumentError, "invalid value for \"sort_by\", must be one of #{allowable_values}" end # resource path local_var_path = '/v1/posts' # query parameters query_params = opts[:query_params] || {} query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil? query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil? query_params[:'offset'] = opts[:'offset'] if !opts[:'offset'].nil? query_params[:'source'] = opts[:'source'] if !opts[:'source'].nil? query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil? query_params[:'platform'] = opts[:'platform'] if !opts[:'platform'].nil? query_params[:'profileId'] = opts[:'profile_id'] if !opts[:'profile_id'].nil? query_params[:'createdBy'] = opts[:'created_by'] if !opts[:'created_by'].nil? query_params[:'fromDate'] = opts[:'from_date'] if !opts[:'from_date'].nil? query_params[:'toDate'] = opts[:'to_date'] if !opts[:'to_date'].nil? query_params[:'dateFrom'] = opts[:'date_from'] if !opts[:'date_from'].nil? query_params[:'dateTo'] = opts[:'date_to'] if !opts[:'date_to'].nil? query_params[:'includeHidden'] = opts[:'include_hidden'] if !opts[:'include_hidden'].nil? query_params[:'search'] = opts[:'search'] if !opts[:'search'].nil? query_params[:'sortBy'] = opts[:'sort_by'] if !opts[:'sort_by'].nil? query_params[:'accountId'] = opts[:'account_id'] if !opts[:'account_id'].nil? # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'PostsListResponse' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.list_posts", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:GET, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#list_posts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |
#retry_post(post_id, opts = {}) ⇒ PostRetryResponse
Retry failed post Immediately retries publishing a failed post. Returns the updated post with its new status.
506 507 508 509 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 506 def retry_post(post_id, opts = {}) data, _status_code, _headers = retry_post_with_http_info(post_id, opts) data end |
#retry_post_with_http_info(post_id, opts = {}) ⇒ Array<(PostRetryResponse, Integer, Hash)>
Retry failed post Immediately retries publishing a failed post. Returns the updated post with its new status.
516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 516 def retry_post_with_http_info(post_id, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.retry_post ...' end # verify the required parameter 'post_id' is set if @api_client.config.client_side_validation && post_id.nil? fail ArgumentError, "Missing the required parameter 'post_id' when calling PostsApi.retry_post" end # resource path local_var_path = '/v1/posts/{postId}/retry'.sub('{' + 'postId' + '}', CGI.escape(post_id.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'PostRetryResponse' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.retry_post", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:POST, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#retry_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |
#unpublish_post(post_id, unpublish_post_request, opts = {}) ⇒ UnpublishPost200Response
Unpublish post Deletes a published post from the specified platform. The post record in Zernio is kept but its status is updated to cancelled. Not supported on Instagram, TikTok, or Snapchat. Threaded posts delete all items. YouTube deletion is permanent.
570 571 572 573 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 570 def unpublish_post(post_id, unpublish_post_request, opts = {}) data, _status_code, _headers = unpublish_post_with_http_info(post_id, unpublish_post_request, opts) data end |
#unpublish_post_with_http_info(post_id, unpublish_post_request, opts = {}) ⇒ Array<(UnpublishPost200Response, Integer, Hash)>
Unpublish post Deletes a published post from the specified platform. The post record in Zernio is kept but its status is updated to cancelled. Not supported on Instagram, TikTok, or Snapchat. Threaded posts delete all items. YouTube deletion is permanent.
581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 581 def unpublish_post_with_http_info(post_id, unpublish_post_request, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.unpublish_post ...' end # verify the required parameter 'post_id' is set if @api_client.config.client_side_validation && post_id.nil? fail ArgumentError, "Missing the required parameter 'post_id' when calling PostsApi.unpublish_post" end # verify the required parameter 'unpublish_post_request' is set if @api_client.config.client_side_validation && unpublish_post_request.nil? fail ArgumentError, "Missing the required parameter 'unpublish_post_request' when calling PostsApi.unpublish_post" end # resource path local_var_path = '/v1/posts/{postId}/unpublish'.sub('{' + 'postId' + '}', CGI.escape(post_id.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # HTTP header 'Content-Type' content_type = @api_client.select_header_content_type(['application/json']) if !content_type.nil? header_params['Content-Type'] = content_type end # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] || @api_client.object_to_http_body(unpublish_post_request) # return_type return_type = opts[:debug_return_type] || 'UnpublishPost200Response' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.unpublish_post", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:POST, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#unpublish_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |
#update_post(post_id, update_post_request, opts = {}) ⇒ PostUpdateResponse
Update post
Update an existing post. Draft, scheduled, failed, partial, and cancelled posts can be edited. Published posts can only have their recycling config updated. To promote a draft to scheduled, send isDraft: false together with scheduledFor (or publishNow: true, or queuedFromProfile). If isDraft is omitted the post keeps its current draft status, so sending only scheduledFor to a draft returns 200 but the post remains a draft. Non-draft updates run the same per-platform validation as post creation (media requirements, platform-specific field rules, etc.) against the resulting platforms, returning 400 on failure.
644 645 646 647 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 644 def update_post(post_id, update_post_request, opts = {}) data, _status_code, _headers = update_post_with_http_info(post_id, update_post_request, opts) data end |
#update_post_metadata(post_id, update_post_metadata_request, opts = {}) ⇒ UpdatePostMetadata200Response
Update post metadata Updates metadata of a published video on the specified platform without re-uploading. Currently only supported for YouTube. At least one updatable field is required. Two modes: 1. Post-based (video published through Zernio): pass the Zernio postId in the URL and platform in the body. 2. Direct video ID (video uploaded outside Zernio, e.g. directly to YouTube): use _ as the postId, and pass videoId + accountId + platform in the body. The accountId is the Zernio account ID for the connected YouTube channel.
718 719 720 721 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 718 def (post_id, , opts = {}) data, _status_code, _headers = (post_id, , opts) data end |
#update_post_metadata_with_http_info(post_id, update_post_metadata_request, opts = {}) ⇒ Array<(UpdatePostMetadata200Response, Integer, Hash)>
Update post metadata Updates metadata of a published video on the specified platform without re-uploading. Currently only supported for YouTube. At least one updatable field is required. Two modes: 1. Post-based (video published through Zernio): pass the Zernio postId in the URL and platform in the body. 2. Direct video ID (video uploaded outside Zernio, e.g. directly to YouTube): use _ as the postId, and pass videoId + accountId + platform in the body. The accountId is the Zernio account ID for the connected YouTube channel.
729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 729 def (post_id, , opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.update_post_metadata ...' end # verify the required parameter 'post_id' is set if @api_client.config.client_side_validation && post_id.nil? fail ArgumentError, "Missing the required parameter 'post_id' when calling PostsApi.update_post_metadata" end # verify the required parameter 'update_post_metadata_request' is set if @api_client.config.client_side_validation && .nil? fail ArgumentError, "Missing the required parameter 'update_post_metadata_request' when calling PostsApi.update_post_metadata" end # resource path local_var_path = '/v1/posts/{postId}/update-metadata'.sub('{' + 'postId' + '}', CGI.escape(post_id.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # HTTP header 'Content-Type' content_type = @api_client.select_header_content_type(['application/json']) if !content_type.nil? header_params['Content-Type'] = content_type end # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] || @api_client.object_to_http_body() # return_type return_type = opts[:debug_return_type] || 'UpdatePostMetadata200Response' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.update_post_metadata", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:POST, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#update_post_metadata\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |
#update_post_with_http_info(post_id, update_post_request, opts = {}) ⇒ Array<(PostUpdateResponse, Integer, Hash)>
Update post Update an existing post. Draft, scheduled, failed, partial, and cancelled posts can be edited. Published posts can only have their recycling config updated. To promote a draft to scheduled, send `isDraft: false` together with `scheduledFor` (or `publishNow: true`, or `queuedFromProfile`). If `isDraft` is omitted the post keeps its current draft status, so sending only `scheduledFor` to a draft returns 200 but the post remains a draft. Non-draft updates run the same per-platform validation as post creation (media requirements, platform-specific field rules, etc.) against the resulting platforms, returning 400 on failure.
655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 |
# File 'lib/zernio-sdk/api/posts_api.rb', line 655 def update_post_with_http_info(post_id, update_post_request, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: PostsApi.update_post ...' end # verify the required parameter 'post_id' is set if @api_client.config.client_side_validation && post_id.nil? fail ArgumentError, "Missing the required parameter 'post_id' when calling PostsApi.update_post" end # verify the required parameter 'update_post_request' is set if @api_client.config.client_side_validation && update_post_request.nil? fail ArgumentError, "Missing the required parameter 'update_post_request' when calling PostsApi.update_post" end # resource path local_var_path = '/v1/posts/{postId}'.sub('{' + 'postId' + '}', CGI.escape(post_id.to_s)) # query parameters query_params = opts[:query_params] || {} # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept'] # HTTP header 'Content-Type' content_type = @api_client.select_header_content_type(['application/json']) if !content_type.nil? header_params['Content-Type'] = content_type end # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] || @api_client.object_to_http_body(update_post_request) # return_type return_type = opts[:debug_return_type] || 'PostUpdateResponse' # auth_names auth_names = opts[:debug_auth_names] || ['bearerAuth'] = opts.merge( :operation => :"PostsApi.update_post", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:PUT, local_var_path, ) if @api_client.config.debugging @api_client.config.logger.debug "API called: PostsApi#update_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end |