late-sdk 0.0.716 → 0.0.718

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.
Files changed (475) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +81 -0
  3. data/docs/AccountsApi.md +142 -1
  4. data/docs/AdCampaignsApi.md +22 -10
  5. data/docs/AdCreative.md +2 -0
  6. data/docs/AdDailyMetrics.md +1 -1
  7. data/docs/AdEngagementCounts.md +4 -4
  8. data/docs/AdInsightsApi.md +164 -0
  9. data/docs/AdMetrics.md +1 -1
  10. data/docs/AdTargetingApi.md +3 -3
  11. data/docs/AdTreeCampaign.md +1 -1
  12. data/docs/AddBroadcastRecipientsRequest.md +1 -1
  13. data/docs/AnalyticsListResponsePostsInner.md +1 -1
  14. data/docs/AnalyticsListResponsePostsInnerMediaItemsInner.md +24 -0
  15. data/docs/AnalyticsSinglePostResponseMediaItemsInner.md +7 -3
  16. data/docs/BillingSnapshot.md +2 -0
  17. data/docs/BillingSnapshotPlan.md +3 -1
  18. data/docs/Blog.md +24 -0
  19. data/docs/BlogArticle.md +44 -0
  20. data/docs/BlogArticleImage.md +20 -0
  21. data/docs/BlogsApi.md +747 -0
  22. data/docs/BlueskyPlatformData.md +2 -0
  23. data/docs/BoostPostRequest.md +2 -2
  24. data/docs/CampaignAnalyticsResponseAnalyticsDailyInner.md +1 -1
  25. data/docs/CommentsApi.md +8 -8
  26. data/docs/ConnectApi.md +149 -1
  27. data/docs/ConnectShopifyWithToken200Response.md +18 -0
  28. data/docs/ConnectShopifyWithToken200ResponseAccount.md +26 -0
  29. data/docs/ConnectShopifyWithTokenRequest.md +22 -0
  30. data/docs/CreateBlog201Response.md +20 -0
  31. data/docs/CreateBlogArticle201Response.md +20 -0
  32. data/docs/CreateBlogArticleRequest.md +36 -0
  33. data/docs/CreateBlogArticleRequestImage.md +20 -0
  34. data/docs/CreateBlogArticleRequestSeo.md +20 -0
  35. data/docs/CreateBlogRequest.md +20 -0
  36. data/docs/CreateCallAdRequest.md +1 -1
  37. data/docs/CreateInboxConversationRequest.md +2 -0
  38. data/docs/CreateMessagingAdRequest.md +1 -1
  39. data/docs/CreatePostRequest.md +1 -1
  40. data/docs/CreateStandaloneAdRequest.md +10 -6
  41. data/docs/CreateStandaloneAdRequestPromotedObject.md +2 -2
  42. data/docs/CreateStandaloneAdRequestVideo.md +1 -1
  43. data/docs/CtwaAdRequestBody.md +1 -1
  44. data/docs/ExternalPostMediaItem.md +7 -3
  45. data/docs/ExternalPostSummary.md +0 -2
  46. data/docs/ExternalPostSummaryAnalytics.md +1 -1
  47. data/docs/GetAccountHealth200Response.md +3 -1
  48. data/docs/GetAccountHealth200ResponsePlatformConnection.md +24 -0
  49. data/docs/GetAccountHealth200ResponsePlatformConnectionMetaError.md +22 -0
  50. data/docs/GetAdAnalytics202Response.md +1 -1
  51. data/docs/GetAdTree202Response.md +1 -1
  52. data/docs/GetAdsTimeline202Response.md +1 -1
  53. data/docs/GetBlueskySettings200Response.md +18 -0
  54. data/docs/GetCampaignAnalytics202Response.md +1 -1
  55. data/docs/GetInboxPostComments200ResponseCommentsInner.md +4 -2
  56. data/docs/GetLinkedInPostAnalytics200ResponseAnalytics.md +1 -1
  57. data/docs/GetPhoneNumberKycForm200Response.md +3 -1
  58. data/docs/GetWhatsAppNumberKycForm200Response.md +3 -1
  59. data/docs/LinkedInAggregateAnalyticsTotalResponseAnalytics.md +1 -1
  60. data/docs/LinkedInPlatformData.md +4 -2
  61. data/docs/LinkedInPlatformDataPoll.md +22 -0
  62. data/docs/ListAds202Response.md +1 -1
  63. data/docs/ListBlogArticles200Response.md +22 -0
  64. data/docs/ListBlogs200Response.md +22 -0
  65. data/docs/ListInboxConversations200ResponseDataInnerMetadata.md +3 -3
  66. data/docs/ListLeads200ResponseLeadsInner.md +3 -3
  67. data/docs/ListLocalServicesLeadConversations200Response.md +22 -0
  68. data/docs/ListLocalServicesLeadConversations200ResponseDataInner.md +28 -0
  69. data/docs/ListLocalServicesLeadConversations200ResponseDataInnerMessage.md +20 -0
  70. data/docs/ListLocalServicesLeadConversations200ResponseDataInnerPhoneCall.md +20 -0
  71. data/docs/ListLocalServicesLeads200Response.md +22 -0
  72. data/docs/ListLocalServicesLeads200ResponseDataInner.md +38 -0
  73. data/docs/ListLocalServicesLeads200ResponseDataInnerContact.md +22 -0
  74. data/docs/ListPhoneNumbers200ResponseConnectedInner.md +3 -1
  75. data/docs/ListPhoneNumbers200ResponseNumbersInner.md +2 -0
  76. data/docs/ListWhatsAppAccountEvents200Response.md +18 -0
  77. data/docs/ListWhatsAppAccountEvents200ResponseEventsInner.md +28 -0
  78. data/docs/MessagesApi.md +4 -4
  79. data/docs/OnVerificationApprovedRequest.md +1 -1
  80. data/docs/OnVerificationFailedRequest.md +1 -1
  81. data/docs/OnWhatsAppAutomaticEventRequest.md +1 -1
  82. data/docs/OnWhatsAppNumberActionRequiredRequest.md +1 -1
  83. data/docs/OnWhatsAppNumberActivatedRequest.md +1 -1
  84. data/docs/OnWhatsAppNumberDeclinedRequest.md +1 -1
  85. data/docs/OnWhatsAppNumberKycSubmittedRequest.md +1 -1
  86. data/docs/OnWhatsAppNumberReactivatedRequest.md +1 -1
  87. data/docs/OnWhatsAppNumberReleasedRequest.md +1 -1
  88. data/docs/OnWhatsAppNumberSuspendedRequest.md +1 -1
  89. data/docs/OnWhatsAppNumberVerificationRequiredRequest.md +1 -1
  90. data/docs/PlatformTarget.md +2 -2
  91. data/docs/PostAnalytics.md +3 -3
  92. data/docs/PostsApi.md +1 -1
  93. data/docs/SMSApi.md +1 -1
  94. data/docs/SearchAdTargeting200ResponseResultsInner.md +1 -1
  95. data/docs/SendInboxMessageRequest.md +4 -2
  96. data/docs/SubmitPhoneNumberKycRequest.md +1 -1
  97. data/docs/SubmitPhoneNumberKycRequestAddress.md +2 -0
  98. data/docs/SubmitWhatsAppNumberKycRequest.md +1 -1
  99. data/docs/TwitterPlatformData.md +2 -0
  100. data/docs/UpdateAdCampaignStatus200Response.md +6 -6
  101. data/docs/UpdateAdSet200Response.md +7 -3
  102. data/docs/UpdateAdSetRequest.md +1 -1
  103. data/docs/UpdateAdSetStatus200Response.md +9 -3
  104. data/docs/UpdateBlogArticleRequest.md +36 -0
  105. data/docs/UpdateBlogRequest.md +20 -0
  106. data/docs/UpdateBlueskySettingsRequest.md +18 -0
  107. data/docs/ValidatePhoneNumberKycAddressRequest.md +2 -0
  108. data/docs/WebhookEventsApi.md +138 -0
  109. data/docs/WebhookPayloadAccountAdsInitialSyncCompleted.md +1 -1
  110. data/docs/WebhookPayloadAccountConnected.md +1 -1
  111. data/docs/WebhookPayloadAccountDisconnected.md +1 -1
  112. data/docs/WebhookPayloadAdStatusChanged.md +1 -1
  113. data/docs/WebhookPayloadCallEnded.md +1 -1
  114. data/docs/WebhookPayloadCallEndedCall.md +4 -0
  115. data/docs/WebhookPayloadCallFailed.md +1 -1
  116. data/docs/WebhookPayloadCallPermissionRequest.md +1 -1
  117. data/docs/WebhookPayloadCallReceived.md +1 -1
  118. data/docs/WebhookPayloadComment.md +1 -1
  119. data/docs/WebhookPayloadCommentCommentAuthor.md +2 -0
  120. data/docs/WebhookPayloadConversationStarted.md +1 -1
  121. data/docs/WebhookPayloadExternalPost.md +1 -1
  122. data/docs/WebhookPayloadLead.md +1 -1
  123. data/docs/WebhookPayloadMessage.md +1 -1
  124. data/docs/WebhookPayloadMessageDeleted.md +1 -1
  125. data/docs/WebhookPayloadMessageDeliveryStatus.md +1 -1
  126. data/docs/WebhookPayloadMessageEdited.md +1 -1
  127. data/docs/WebhookPayloadMessageMetadata.md +5 -1
  128. data/docs/WebhookPayloadMessageMetadataReferral.md +5 -3
  129. data/docs/WebhookPayloadMessageMetadataUnsupported.md +22 -0
  130. data/docs/WebhookPayloadMessageSent.md +1 -1
  131. data/docs/WebhookPayloadPost.md +1 -1
  132. data/docs/WebhookPayloadPostPlatform.md +1 -1
  133. data/docs/WebhookPayloadReaction.md +1 -1
  134. data/docs/WebhookPayloadReferral.md +30 -0
  135. data/docs/WebhookPayloadReferralReferral.md +28 -0
  136. data/docs/WebhookPayloadReferralReferralAdsContextData.md +28 -0
  137. data/docs/WebhookPayloadReferralSender.md +20 -0
  138. data/docs/WebhookPayloadReviewNew.md +1 -1
  139. data/docs/WebhookPayloadReviewUpdated.md +1 -1
  140. data/docs/WebhookPayloadTest.md +1 -1
  141. data/docs/WebhookPayloadWhatsAppTemplateCategoryUpdated.md +26 -0
  142. data/docs/WebhookPayloadWhatsAppTemplateCategoryUpdatedTemplate.md +32 -0
  143. data/docs/WebhookPayloadWhatsAppTemplateStatusUpdated.md +1 -1
  144. data/docs/WhatsAppApi.md +74 -0
  145. data/docs/WorkflowNode.md +3 -1
  146. data/docs/XArticle.md +24 -0
  147. data/docs/XArticleBlock.md +28 -0
  148. data/docs/XArticleBlockData.md +24 -0
  149. data/docs/XArticleContentState.md +20 -0
  150. data/docs/XArticleCover.md +20 -0
  151. data/docs/XArticleEntity.md +57 -0
  152. data/docs/XArticleEntityOneOf.md +20 -0
  153. data/docs/XArticleEntityOneOf1.md +20 -0
  154. data/docs/XArticleEntityOneOf1Value.md +22 -0
  155. data/docs/XArticleEntityOneOf1ValueData.md +18 -0
  156. data/docs/XArticleEntityOneOf2.md +20 -0
  157. data/docs/XArticleEntityOneOf2Value.md +22 -0
  158. data/docs/XArticleEntityOneOf2ValueData.md +22 -0
  159. data/docs/XArticleEntityOneOf3.md +20 -0
  160. data/docs/XArticleEntityOneOf3Value.md +22 -0
  161. data/docs/XArticleEntityOneOf3ValueData.md +18 -0
  162. data/docs/XArticleEntityOneOf4.md +20 -0
  163. data/docs/XArticleEntityOneOf4Value.md +22 -0
  164. data/docs/XArticleEntityOneOf4ValueData.md +18 -0
  165. data/docs/XArticleEntityOneOf5.md +20 -0
  166. data/docs/XArticleEntityOneOf5Value.md +22 -0
  167. data/docs/XArticleEntityOneOfValue.md +22 -0
  168. data/docs/XArticleEntityOneOfValueData.md +18 -0
  169. data/docs/XArticleEntityRange.md +22 -0
  170. data/docs/XArticleInlineStyleRange.md +22 -0
  171. data/docs/XArticleTextRange.md +22 -0
  172. data/docs/YouTubeVideoRetentionResponse.md +1 -1
  173. data/docs/YouTubeVideoRetentionResponseRetentionCurveInner.md +2 -2
  174. data/lib/zernio-sdk/api/accounts_api.rb +139 -2
  175. data/lib/zernio-sdk/api/ad_campaigns_api.rb +35 -8
  176. data/lib/zernio-sdk/api/ad_insights_api.rb +165 -0
  177. data/lib/zernio-sdk/api/ad_targeting_api.rb +5 -5
  178. data/lib/zernio-sdk/api/blogs_api.rb +845 -0
  179. data/lib/zernio-sdk/api/comments_api.rb +10 -10
  180. data/lib/zernio-sdk/api/connect_api.rb +149 -0
  181. data/lib/zernio-sdk/api/messages_api.rb +4 -4
  182. data/lib/zernio-sdk/api/posts_api.rb +2 -2
  183. data/lib/zernio-sdk/api/sms_api.rb +2 -2
  184. data/lib/zernio-sdk/api/webhook_events_api.rb +132 -0
  185. data/lib/zernio-sdk/api/whats_app_api.rb +75 -0
  186. data/lib/zernio-sdk/models/account_with_follower_stats.rb +2 -2
  187. data/lib/zernio-sdk/models/ad_creative.rb +12 -1
  188. data/lib/zernio-sdk/models/ad_daily_metrics.rb +1 -1
  189. data/lib/zernio-sdk/models/ad_engagement_counts.rb +5 -5
  190. data/lib/zernio-sdk/models/ad_metrics.rb +1 -1
  191. data/lib/zernio-sdk/models/ad_tree_campaign.rb +1 -1
  192. data/lib/zernio-sdk/models/add_broadcast_recipients_request.rb +1 -1
  193. data/lib/zernio-sdk/models/analytics_list_response_posts_inner.rb +1 -1
  194. data/lib/zernio-sdk/models/analytics_list_response_posts_inner_media_items_inner.rb +211 -0
  195. data/lib/zernio-sdk/models/analytics_single_post_response_media_items_inner.rb +52 -6
  196. data/lib/zernio-sdk/models/billing_snapshot.rb +14 -3
  197. data/lib/zernio-sdk/models/billing_snapshot_plan.rb +14 -4
  198. data/lib/zernio-sdk/models/blog.rb +211 -0
  199. data/lib/zernio-sdk/models/blog_article.rb +315 -0
  200. data/lib/zernio-sdk/models/blog_article_image.rb +158 -0
  201. data/lib/zernio-sdk/models/bluesky_platform_data.rb +42 -2
  202. data/lib/zernio-sdk/models/boost_post_request.rb +30 -1
  203. data/lib/zernio-sdk/models/campaign_analytics_response_analytics_daily_inner.rb +1 -1
  204. data/lib/zernio-sdk/models/connect_shopify_with_token200_response.rb +147 -0
  205. data/lib/zernio-sdk/models/connect_shopify_with_token200_response_account.rb +218 -0
  206. data/lib/zernio-sdk/models/connect_shopify_with_token_request.rb +219 -0
  207. data/lib/zernio-sdk/models/create_blog201_response.rb +190 -0
  208. data/lib/zernio-sdk/models/create_blog_article201_response.rb +190 -0
  209. data/lib/zernio-sdk/models/create_blog_article_request.rb +262 -0
  210. data/lib/zernio-sdk/models/create_blog_article_request_image.rb +174 -0
  211. data/lib/zernio-sdk/models/create_blog_article_request_seo.rb +157 -0
  212. data/lib/zernio-sdk/models/create_blog_request.rb +202 -0
  213. data/lib/zernio-sdk/models/create_call_ad_request.rb +1 -1
  214. data/lib/zernio-sdk/models/create_inbox_conversation_request.rb +13 -1
  215. data/lib/zernio-sdk/models/create_messaging_ad_request.rb +1 -1
  216. data/lib/zernio-sdk/models/create_post_request.rb +1 -1
  217. data/lib/zernio-sdk/models/create_standalone_ad_request.rb +67 -6
  218. data/lib/zernio-sdk/models/create_standalone_ad_request_creatives_inner_video.rb +1 -1
  219. data/lib/zernio-sdk/models/create_standalone_ad_request_promoted_object.rb +3 -3
  220. data/lib/zernio-sdk/models/create_standalone_ad_request_video.rb +1 -1
  221. data/lib/zernio-sdk/models/ctwa_ad_request_body.rb +1 -1
  222. data/lib/zernio-sdk/models/external_post_media_item.rb +48 -16
  223. data/lib/zernio-sdk/models/external_post_summary.rb +1 -11
  224. data/lib/zernio-sdk/models/external_post_summary_analytics.rb +1 -0
  225. data/lib/zernio-sdk/models/facebook_settings.rb +5 -5
  226. data/lib/zernio-sdk/models/get_account_health200_response.rb +13 -4
  227. data/lib/zernio-sdk/models/get_account_health200_response_platform_connection.rb +213 -0
  228. data/lib/zernio-sdk/models/get_account_health200_response_platform_connection_meta_error.rb +168 -0
  229. data/lib/zernio-sdk/models/get_ad_analytics202_response.rb +6 -29
  230. data/lib/zernio-sdk/models/get_ad_tree202_response.rb +6 -29
  231. data/lib/zernio-sdk/models/get_ads_timeline202_response.rb +6 -29
  232. data/lib/zernio-sdk/models/get_bluesky_settings200_response.rb +150 -0
  233. data/lib/zernio-sdk/models/get_campaign_analytics202_response.rb +6 -29
  234. data/lib/zernio-sdk/models/get_inbox_post_comments200_response_comments_inner.rb +13 -2
  235. data/lib/zernio-sdk/models/get_linked_in_post_analytics200_response_analytics.rb +1 -1
  236. data/lib/zernio-sdk/models/get_phone_number_kyc_form200_response.rb +14 -4
  237. data/lib/zernio-sdk/models/get_whats_app_number_kyc_form200_response.rb +14 -4
  238. data/lib/zernio-sdk/models/inbox_webhook_message.rb +2 -2
  239. data/lib/zernio-sdk/models/linked_in_aggregate_analytics_total_response_analytics.rb +1 -1
  240. data/lib/zernio-sdk/models/linked_in_platform_data.rb +15 -6
  241. data/lib/zernio-sdk/models/linked_in_platform_data_poll.rb +277 -0
  242. data/lib/zernio-sdk/models/list_ads202_response.rb +6 -29
  243. data/lib/zernio-sdk/models/list_blog_articles200_response.rb +203 -0
  244. data/lib/zernio-sdk/models/list_blogs200_response.rb +203 -0
  245. data/lib/zernio-sdk/models/list_broadcast_recipients200_response_recipients_inner.rb +1 -0
  246. data/lib/zernio-sdk/models/list_inbox_conversations200_response_data_inner_metadata.rb +4 -4
  247. data/lib/zernio-sdk/models/list_leads200_response_leads_inner.rb +3 -2
  248. data/lib/zernio-sdk/models/list_local_services_lead_conversations200_response.rb +167 -0
  249. data/lib/zernio-sdk/models/list_local_services_lead_conversations200_response_data_inner.rb +198 -0
  250. data/lib/zernio-sdk/models/list_local_services_lead_conversations200_response_data_inner_message.rb +160 -0
  251. data/lib/zernio-sdk/models/list_local_services_lead_conversations200_response_data_inner_phone_call.rb +159 -0
  252. data/lib/zernio-sdk/models/list_local_services_leads200_response.rb +167 -0
  253. data/lib/zernio-sdk/models/list_local_services_leads200_response_data_inner.rb +249 -0
  254. data/lib/zernio-sdk/models/list_local_services_leads200_response_data_inner_contact.rb +169 -0
  255. data/lib/zernio-sdk/models/list_phone_numbers200_response_connected_inner.rb +15 -5
  256. data/lib/zernio-sdk/models/list_phone_numbers200_response_numbers_inner.rb +11 -1
  257. data/lib/zernio-sdk/models/list_sequence_enrollments200_response_enrollments_inner.rb +3 -0
  258. data/lib/zernio-sdk/models/list_whats_app_account_events200_response.rb +149 -0
  259. data/lib/zernio-sdk/models/list_whats_app_account_events200_response_events_inner.rb +228 -0
  260. data/lib/zernio-sdk/models/on_verification_approved_request.rb +1 -0
  261. data/lib/zernio-sdk/models/on_verification_failed_request.rb +1 -0
  262. data/lib/zernio-sdk/models/on_whats_app_automatic_event_request.rb +1 -0
  263. data/lib/zernio-sdk/models/on_whats_app_number_action_required_request.rb +1 -0
  264. data/lib/zernio-sdk/models/on_whats_app_number_activated_request.rb +1 -0
  265. data/lib/zernio-sdk/models/on_whats_app_number_declined_request.rb +1 -0
  266. data/lib/zernio-sdk/models/on_whats_app_number_kyc_submitted_request.rb +1 -0
  267. data/lib/zernio-sdk/models/on_whats_app_number_reactivated_request.rb +1 -0
  268. data/lib/zernio-sdk/models/on_whats_app_number_released_request.rb +1 -0
  269. data/lib/zernio-sdk/models/on_whats_app_number_suspended_request.rb +1 -0
  270. data/lib/zernio-sdk/models/on_whats_app_number_verification_required_request.rb +1 -0
  271. data/lib/zernio-sdk/models/platform_target.rb +5 -4
  272. data/lib/zernio-sdk/models/post_analytics.rb +2 -1
  273. data/lib/zernio-sdk/models/search_ad_targeting200_response_results_inner.rb +1 -1
  274. data/lib/zernio-sdk/models/send_inbox_message_request.rb +15 -3
  275. data/lib/zernio-sdk/models/social_account.rb +2 -2
  276. data/lib/zernio-sdk/models/submit_phone_number_kyc_request.rb +1 -1
  277. data/lib/zernio-sdk/models/submit_phone_number_kyc_request_address.rb +11 -1
  278. data/lib/zernio-sdk/models/submit_whats_app_number_kyc_request.rb +1 -1
  279. data/lib/zernio-sdk/models/twitter_platform_data.rb +11 -2
  280. data/lib/zernio-sdk/models/update_ad_campaign_status200_response.rb +50 -15
  281. data/lib/zernio-sdk/models/update_ad_set200_response.rb +26 -1
  282. data/lib/zernio-sdk/models/update_ad_set_request.rb +1 -1
  283. data/lib/zernio-sdk/models/update_ad_set_status200_response.rb +72 -4
  284. data/lib/zernio-sdk/models/update_blog_article_request.rb +257 -0
  285. data/lib/zernio-sdk/models/update_blog_request.rb +196 -0
  286. data/lib/zernio-sdk/models/update_bluesky_settings_request.rb +176 -0
  287. data/lib/zernio-sdk/models/validate_phone_number_kyc_address_request.rb +11 -1
  288. data/lib/zernio-sdk/models/webhook_payload_account_ads_initial_sync_completed.rb +1 -0
  289. data/lib/zernio-sdk/models/webhook_payload_account_connected.rb +1 -0
  290. data/lib/zernio-sdk/models/webhook_payload_account_disconnected.rb +1 -0
  291. data/lib/zernio-sdk/models/webhook_payload_ad_status_changed.rb +1 -1
  292. data/lib/zernio-sdk/models/webhook_payload_call_ended.rb +1 -0
  293. data/lib/zernio-sdk/models/webhook_payload_call_ended_call.rb +23 -1
  294. data/lib/zernio-sdk/models/webhook_payload_call_failed.rb +1 -0
  295. data/lib/zernio-sdk/models/webhook_payload_call_permission_request.rb +1 -0
  296. data/lib/zernio-sdk/models/webhook_payload_call_received.rb +1 -0
  297. data/lib/zernio-sdk/models/webhook_payload_comment.rb +1 -0
  298. data/lib/zernio-sdk/models/webhook_payload_comment_comment_author.rb +11 -1
  299. data/lib/zernio-sdk/models/webhook_payload_conversation_started.rb +1 -0
  300. data/lib/zernio-sdk/models/webhook_payload_external_post.rb +1 -0
  301. data/lib/zernio-sdk/models/webhook_payload_lead.rb +1 -0
  302. data/lib/zernio-sdk/models/webhook_payload_message.rb +1 -0
  303. data/lib/zernio-sdk/models/webhook_payload_message_deleted.rb +1 -0
  304. data/lib/zernio-sdk/models/webhook_payload_message_delivery_status.rb +2 -1
  305. data/lib/zernio-sdk/models/webhook_payload_message_edited.rb +1 -0
  306. data/lib/zernio-sdk/models/webhook_payload_message_message.rb +2 -2
  307. data/lib/zernio-sdk/models/webhook_payload_message_metadata.rb +23 -4
  308. data/lib/zernio-sdk/models/webhook_payload_message_metadata_referral.rb +15 -5
  309. data/lib/zernio-sdk/models/webhook_payload_message_metadata_unsupported.rb +169 -0
  310. data/lib/zernio-sdk/models/webhook_payload_message_sent.rb +1 -0
  311. data/lib/zernio-sdk/models/webhook_payload_post.rb +1 -0
  312. data/lib/zernio-sdk/models/webhook_payload_post_platform.rb +1 -0
  313. data/lib/zernio-sdk/models/webhook_payload_reaction.rb +1 -0
  314. data/lib/zernio-sdk/models/webhook_payload_reaction_reaction_sender.rb +1 -1
  315. data/lib/zernio-sdk/models/webhook_payload_referral.rb +347 -0
  316. data/lib/zernio-sdk/models/webhook_payload_referral_referral.rb +198 -0
  317. data/lib/zernio-sdk/models/webhook_payload_referral_referral_ads_context_data.rb +193 -0
  318. data/lib/zernio-sdk/models/webhook_payload_referral_sender.rb +176 -0
  319. data/lib/zernio-sdk/models/webhook_payload_review_new.rb +1 -0
  320. data/lib/zernio-sdk/models/webhook_payload_review_updated.rb +1 -0
  321. data/lib/zernio-sdk/models/webhook_payload_test.rb +1 -0
  322. data/lib/zernio-sdk/models/webhook_payload_whats_app_template_category_updated.rb +295 -0
  323. data/lib/zernio-sdk/models/webhook_payload_whats_app_template_category_updated_template.rb +353 -0
  324. data/lib/zernio-sdk/models/webhook_payload_whats_app_template_status_updated.rb +1 -1
  325. data/lib/zernio-sdk/models/workflow_node.rb +42 -4
  326. data/lib/zernio-sdk/models/x_article.rb +255 -0
  327. data/lib/zernio-sdk/models/x_article_block.rb +273 -0
  328. data/lib/zernio-sdk/models/x_article_block_data.rb +182 -0
  329. data/lib/zernio-sdk/models/x_article_content_state.rb +204 -0
  330. data/lib/zernio-sdk/models/x_article_cover.rb +204 -0
  331. data/lib/zernio-sdk/models/x_article_entity.rb +109 -0
  332. data/lib/zernio-sdk/models/x_article_entity_one_of.rb +199 -0
  333. data/lib/zernio-sdk/models/x_article_entity_one_of1.rb +199 -0
  334. data/lib/zernio-sdk/models/x_article_entity_one_of1_value.rb +242 -0
  335. data/lib/zernio-sdk/models/x_article_entity_one_of1_value_data.rb +164 -0
  336. data/lib/zernio-sdk/models/x_article_entity_one_of2.rb +199 -0
  337. data/lib/zernio-sdk/models/x_article_entity_one_of2_value.rb +242 -0
  338. data/lib/zernio-sdk/models/x_article_entity_one_of2_value_data.rb +214 -0
  339. data/lib/zernio-sdk/models/x_article_entity_one_of3.rb +199 -0
  340. data/lib/zernio-sdk/models/x_article_entity_one_of3_value.rb +242 -0
  341. data/lib/zernio-sdk/models/x_article_entity_one_of3_value_data.rb +173 -0
  342. data/lib/zernio-sdk/models/x_article_entity_one_of4.rb +199 -0
  343. data/lib/zernio-sdk/models/x_article_entity_one_of4_value.rb +242 -0
  344. data/lib/zernio-sdk/models/x_article_entity_one_of4_value_data.rb +164 -0
  345. data/lib/zernio-sdk/models/x_article_entity_one_of5.rb +199 -0
  346. data/lib/zernio-sdk/models/x_article_entity_one_of5_value.rb +242 -0
  347. data/lib/zernio-sdk/models/x_article_entity_one_of_value.rb +242 -0
  348. data/lib/zernio-sdk/models/x_article_entity_one_of_value_data.rb +173 -0
  349. data/lib/zernio-sdk/models/x_article_entity_range.rb +245 -0
  350. data/lib/zernio-sdk/models/x_article_inline_style_range.rb +259 -0
  351. data/lib/zernio-sdk/models/x_article_text_range.rb +237 -0
  352. data/lib/zernio-sdk/models/you_tube_video_retention_response.rb +1 -1
  353. data/lib/zernio-sdk/models/you_tube_video_retention_response_retention_curve_inner.rb +2 -2
  354. data/lib/zernio-sdk/version.rb +1 -1
  355. data/lib/zernio-sdk.rb +65 -0
  356. data/openapi.yaml +1956 -165
  357. data/spec/api/accounts_api_spec.rb +26 -1
  358. data/spec/api/ad_campaigns_api_spec.rb +9 -4
  359. data/spec/api/ad_insights_api_spec.rb +34 -0
  360. data/spec/api/ad_targeting_api_spec.rb +2 -2
  361. data/spec/api/blogs_api_spec.rb +174 -0
  362. data/spec/api/comments_api_spec.rb +5 -5
  363. data/spec/api/connect_api_spec.rb +27 -0
  364. data/spec/api/messages_api_spec.rb +2 -2
  365. data/spec/api/posts_api_spec.rb +1 -1
  366. data/spec/api/sms_api_spec.rb +1 -1
  367. data/spec/api/whats_app_api_spec.rb +13 -0
  368. data/spec/models/account_with_follower_stats_spec.rb +1 -1
  369. data/spec/models/ad_creative_spec.rb +6 -0
  370. data/spec/models/analytics_list_response_posts_inner_media_items_inner_spec.rb +58 -0
  371. data/spec/models/analytics_single_post_response_media_items_inner_spec.rb +20 -0
  372. data/spec/models/billing_snapshot_plan_spec.rb +6 -0
  373. data/spec/models/billing_snapshot_spec.rb +7 -1
  374. data/spec/models/blog_article_image_spec.rb +42 -0
  375. data/spec/models/blog_article_spec.rb +118 -0
  376. data/spec/models/blog_spec.rb +58 -0
  377. data/spec/models/bluesky_platform_data_spec.rb +6 -0
  378. data/spec/models/connect_shopify_with_token200_response_account_spec.rb +64 -0
  379. data/spec/models/connect_shopify_with_token200_response_spec.rb +36 -0
  380. data/spec/models/connect_shopify_with_token_request_spec.rb +48 -0
  381. data/spec/models/create_blog201_response_spec.rb +46 -0
  382. data/spec/models/create_blog_article201_response_spec.rb +46 -0
  383. data/spec/models/create_blog_article_request_image_spec.rb +42 -0
  384. data/spec/models/create_blog_article_request_seo_spec.rb +42 -0
  385. data/spec/models/create_blog_article_request_spec.rb +90 -0
  386. data/spec/models/create_blog_request_spec.rb +42 -0
  387. data/spec/models/create_inbox_conversation_request_spec.rb +6 -0
  388. data/spec/models/create_standalone_ad_request_spec.rb +16 -0
  389. data/spec/models/create_webhook_settings_request_spec.rb +1 -1
  390. data/spec/models/external_post_media_item_spec.rb +20 -0
  391. data/spec/models/external_post_summary_spec.rb +0 -6
  392. data/spec/models/get_account_health200_response_platform_connection_meta_error_spec.rb +48 -0
  393. data/spec/models/get_account_health200_response_platform_connection_spec.rb +58 -0
  394. data/spec/models/get_account_health200_response_spec.rb +6 -0
  395. data/spec/models/get_ad_analytics202_response_spec.rb +0 -4
  396. data/spec/models/get_ad_tree202_response_spec.rb +0 -4
  397. data/spec/models/get_ads_timeline202_response_spec.rb +0 -4
  398. data/spec/models/get_bluesky_settings200_response_spec.rb +36 -0
  399. data/spec/models/get_campaign_analytics202_response_spec.rb +0 -4
  400. data/spec/models/get_inbox_post_comments200_response_comments_inner_spec.rb +6 -0
  401. data/spec/models/get_phone_number_kyc_form200_response_spec.rb +6 -0
  402. data/spec/models/get_whats_app_number_kyc_form200_response_spec.rb +6 -0
  403. data/spec/models/inbox_webhook_message_spec.rb +1 -1
  404. data/spec/models/linked_in_platform_data_poll_spec.rb +52 -0
  405. data/spec/models/linked_in_platform_data_spec.rb +6 -0
  406. data/spec/models/list_ads202_response_spec.rb +0 -4
  407. data/spec/models/list_blog_articles200_response_spec.rb +52 -0
  408. data/spec/models/list_blogs200_response_spec.rb +52 -0
  409. data/spec/models/list_local_services_lead_conversations200_response_data_inner_message_spec.rb +42 -0
  410. data/spec/models/list_local_services_lead_conversations200_response_data_inner_phone_call_spec.rb +42 -0
  411. data/spec/models/list_local_services_lead_conversations200_response_data_inner_spec.rb +66 -0
  412. data/spec/models/list_local_services_lead_conversations200_response_spec.rb +48 -0
  413. data/spec/models/list_local_services_leads200_response_data_inner_contact_spec.rb +48 -0
  414. data/spec/models/list_local_services_leads200_response_data_inner_spec.rb +96 -0
  415. data/spec/models/list_local_services_leads200_response_spec.rb +48 -0
  416. data/spec/models/list_phone_numbers200_response_connected_inner_spec.rb +6 -0
  417. data/spec/models/list_phone_numbers200_response_numbers_inner_spec.rb +6 -0
  418. data/spec/models/list_whats_app_account_events200_response_events_inner_spec.rb +70 -0
  419. data/spec/models/list_whats_app_account_events200_response_spec.rb +36 -0
  420. data/spec/models/platform_target_spec.rb +1 -1
  421. data/spec/models/send_inbox_message_request_spec.rb +6 -0
  422. data/spec/models/social_account_spec.rb +1 -1
  423. data/spec/models/submit_phone_number_kyc_request_address_spec.rb +6 -0
  424. data/spec/models/twitter_platform_data_spec.rb +6 -0
  425. data/spec/models/update_ad_campaign_status200_response_spec.rb +8 -4
  426. data/spec/models/update_ad_set200_response_spec.rb +12 -0
  427. data/spec/models/update_ad_set_status200_response_spec.rb +22 -0
  428. data/spec/models/update_blog_article_request_spec.rb +90 -0
  429. data/spec/models/update_blog_request_spec.rb +42 -0
  430. data/spec/models/update_bluesky_settings_request_spec.rb +36 -0
  431. data/spec/models/update_webhook_settings_request_spec.rb +1 -1
  432. data/spec/models/validate_phone_number_kyc_address_request_spec.rb +6 -0
  433. data/spec/models/webhook_payload_call_ended_call_spec.rb +12 -0
  434. data/spec/models/webhook_payload_comment_comment_author_spec.rb +6 -0
  435. data/spec/models/webhook_payload_message_message_spec.rb +1 -1
  436. data/spec/models/webhook_payload_message_metadata_referral_spec.rb +6 -0
  437. data/spec/models/webhook_payload_message_metadata_spec.rb +12 -0
  438. data/spec/models/webhook_payload_message_metadata_unsupported_spec.rb +48 -0
  439. data/spec/models/webhook_payload_referral_referral_ads_context_data_spec.rb +66 -0
  440. data/spec/models/webhook_payload_referral_referral_spec.rb +66 -0
  441. data/spec/models/webhook_payload_referral_sender_spec.rb +42 -0
  442. data/spec/models/webhook_payload_referral_spec.rb +76 -0
  443. data/spec/models/webhook_payload_whats_app_template_category_updated_spec.rb +64 -0
  444. data/spec/models/webhook_payload_whats_app_template_category_updated_template_spec.rb +94 -0
  445. data/spec/models/webhook_spec.rb +1 -1
  446. data/spec/models/workflow_node_spec.rb +6 -0
  447. data/spec/models/x_article_block_data_spec.rb +54 -0
  448. data/spec/models/x_article_block_spec.rb +70 -0
  449. data/spec/models/x_article_content_state_spec.rb +42 -0
  450. data/spec/models/x_article_cover_spec.rb +42 -0
  451. data/spec/models/x_article_entity_one_of1_spec.rb +42 -0
  452. data/spec/models/x_article_entity_one_of1_value_data_spec.rb +36 -0
  453. data/spec/models/x_article_entity_one_of1_value_spec.rb +56 -0
  454. data/spec/models/x_article_entity_one_of2_spec.rb +42 -0
  455. data/spec/models/x_article_entity_one_of2_value_data_spec.rb +48 -0
  456. data/spec/models/x_article_entity_one_of2_value_spec.rb +56 -0
  457. data/spec/models/x_article_entity_one_of3_spec.rb +42 -0
  458. data/spec/models/x_article_entity_one_of3_value_data_spec.rb +36 -0
  459. data/spec/models/x_article_entity_one_of3_value_spec.rb +56 -0
  460. data/spec/models/x_article_entity_one_of4_spec.rb +42 -0
  461. data/spec/models/x_article_entity_one_of4_value_data_spec.rb +36 -0
  462. data/spec/models/x_article_entity_one_of4_value_spec.rb +56 -0
  463. data/spec/models/x_article_entity_one_of5_spec.rb +42 -0
  464. data/spec/models/x_article_entity_one_of5_value_spec.rb +56 -0
  465. data/spec/models/x_article_entity_one_of_spec.rb +42 -0
  466. data/spec/models/x_article_entity_one_of_value_data_spec.rb +36 -0
  467. data/spec/models/x_article_entity_one_of_value_spec.rb +56 -0
  468. data/spec/models/x_article_entity_range_spec.rb +48 -0
  469. data/spec/models/x_article_entity_spec.rb +32 -0
  470. data/spec/models/x_article_inline_style_range_spec.rb +52 -0
  471. data/spec/models/x_article_spec.rb +58 -0
  472. data/spec/models/x_article_text_range_spec.rb +48 -0
  473. data/zernio-sdk-0.0.718.gem +0 -0
  474. metadata +1867 -1607
  475. data/zernio-sdk-0.0.716.gem +0 -0
@@ -0,0 +1,28 @@
1
+ # Zernio::ListLocalServicesLeadConversations200ResponseDataInner
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **id** | **String** | | [optional] |
8
+ | **channel** | **String** | PHONE_CALL / MESSAGE / SMS / EMAIL / WHATSAPP / ADS_API. | [optional] |
9
+ | **participant_type** | **String** | ADVERTISER or CONSUMER. | [optional] |
10
+ | **event_date_time** | **String** | | [optional] |
11
+ | **phone_call** | [**ListLocalServicesLeadConversations200ResponseDataInnerPhoneCall**](ListLocalServicesLeadConversations200ResponseDataInnerPhoneCall.md) | | [optional] |
12
+ | **message** | [**ListLocalServicesLeadConversations200ResponseDataInnerMessage**](ListLocalServicesLeadConversations200ResponseDataInnerMessage.md) | | [optional] |
13
+
14
+ ## Example
15
+
16
+ ```ruby
17
+ require 'zernio-sdk'
18
+
19
+ instance = Zernio::ListLocalServicesLeadConversations200ResponseDataInner.new(
20
+ id: null,
21
+ channel: null,
22
+ participant_type: null,
23
+ event_date_time: null,
24
+ phone_call: null,
25
+ message: null
26
+ )
27
+ ```
28
+
@@ -0,0 +1,20 @@
1
+ # Zernio::ListLocalServicesLeadConversations200ResponseDataInnerMessage
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **text** | **String** | | [optional] |
8
+ | **attachment_urls** | **Array<String>** | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'zernio-sdk'
14
+
15
+ instance = Zernio::ListLocalServicesLeadConversations200ResponseDataInnerMessage.new(
16
+ text: null,
17
+ attachment_urls: null
18
+ )
19
+ ```
20
+
@@ -0,0 +1,20 @@
1
+ # Zernio::ListLocalServicesLeadConversations200ResponseDataInnerPhoneCall
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **call_duration_millis** | **Integer** | | [optional] |
8
+ | **call_recording_url** | **String** | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'zernio-sdk'
14
+
15
+ instance = Zernio::ListLocalServicesLeadConversations200ResponseDataInnerPhoneCall.new(
16
+ call_duration_millis: null,
17
+ call_recording_url: null
18
+ )
19
+ ```
20
+
@@ -0,0 +1,22 @@
1
+ # Zernio::ListLocalServicesLeads200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **customer_id** | **String** | | [optional] |
8
+ | **data** | [**Array<ListLocalServicesLeads200ResponseDataInner>**](ListLocalServicesLeads200ResponseDataInner.md) | | [optional] |
9
+ | **paging** | [**GetAdsSearchTerms200ResponsePaging**](GetAdsSearchTerms200ResponsePaging.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'zernio-sdk'
15
+
16
+ instance = Zernio::ListLocalServicesLeads200Response.new(
17
+ customer_id: null,
18
+ data: null,
19
+ paging: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,38 @@
1
+ # Zernio::ListLocalServicesLeads200ResponseDataInner
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **id** | **String** | Lead id; pass to /v1/ads/local-services/leads/{leadId}/conversations. | [optional] |
8
+ | **lead_type** | **String** | PHONE_CALL / MESSAGE / BOOKING. | [optional] |
9
+ | **category_id** | **String** | | [optional] |
10
+ | **service_id** | **String** | | [optional] |
11
+ | **contact** | [**ListLocalServicesLeads200ResponseDataInnerContact**](ListLocalServicesLeads200ResponseDataInnerContact.md) | | [optional] |
12
+ | **status** | **String** | | [optional] |
13
+ | **created_time** | **String** | Google datetime in the customer's timezone (YYYY-MM-DD HH:MM:SS). | [optional] |
14
+ | **locale** | **String** | | [optional] |
15
+ | **charged** | **Boolean** | | [optional] |
16
+ | **credit_state** | **String** | | [optional] |
17
+ | **credit_state_last_update** | **String** | | [optional] |
18
+
19
+ ## Example
20
+
21
+ ```ruby
22
+ require 'zernio-sdk'
23
+
24
+ instance = Zernio::ListLocalServicesLeads200ResponseDataInner.new(
25
+ id: null,
26
+ lead_type: null,
27
+ category_id: null,
28
+ service_id: null,
29
+ contact: null,
30
+ status: null,
31
+ created_time: null,
32
+ locale: null,
33
+ charged: null,
34
+ credit_state: null,
35
+ credit_state_last_update: null
36
+ )
37
+ ```
38
+
@@ -0,0 +1,22 @@
1
+ # Zernio::ListLocalServicesLeads200ResponseDataInnerContact
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **consumer_name** | **String** | | [optional] |
8
+ | **email** | **String** | | [optional] |
9
+ | **phone_number** | **String** | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'zernio-sdk'
15
+
16
+ instance = Zernio::ListLocalServicesLeads200ResponseDataInnerContact.new(
17
+ consumer_name: null,
18
+ email: null,
19
+ phone_number: null
20
+ )
21
+ ```
22
+
@@ -9,6 +9,7 @@
9
9
  | **display_name** | **String** | | [optional] |
10
10
  | **profile_id** | **String** | | [optional] |
11
11
  | **connected_at** | **Time** | | [optional] |
12
+ | **calling_enabled** | **Boolean** | Whether WhatsApp Business Calling is enabled on this number. | [optional] |
12
13
 
13
14
  ## Example
14
15
 
@@ -20,7 +21,8 @@ instance = Zernio::ListPhoneNumbers200ResponseConnectedInner.new(
20
21
  phone_number: null,
21
22
  display_name: null,
22
23
  profile_id: null,
23
- connected_at: null
24
+ connected_at: null,
25
+ calling_enabled: null
24
26
  )
25
27
  ```
26
28
 
@@ -20,6 +20,7 @@
20
20
  | **end_user_first_name** | **String** | | [optional] |
21
21
  | **end_user_last_name** | **String** | | [optional] |
22
22
  | **regulatory_decline_reason** | **String** | Reviewer rejection reason when status is regulatory_declined. | [optional] |
23
+ | **calling_enabled** | **Boolean** | Whether WhatsApp Business Calling is enabled on this number (manage via /v1/whatsapp/phone-numbers/{id}/calling). | [optional] |
23
24
  | **created_at** | **Time** | | [optional] |
24
25
 
25
26
  ## Example
@@ -44,6 +45,7 @@ instance = Zernio::ListPhoneNumbers200ResponseNumbersInner.new(
44
45
  end_user_first_name: null,
45
46
  end_user_last_name: null,
46
47
  regulatory_decline_reason: null,
48
+ calling_enabled: null,
47
49
  created_at: null
48
50
  )
49
51
  ```
@@ -0,0 +1,18 @@
1
+ # Zernio::ListWhatsAppAccountEvents200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **events** | [**Array<ListWhatsAppAccountEvents200ResponseEventsInner>**](ListWhatsAppAccountEvents200ResponseEventsInner.md) | | [optional] |
8
+
9
+ ## Example
10
+
11
+ ```ruby
12
+ require 'zernio-sdk'
13
+
14
+ instance = Zernio::ListWhatsAppAccountEvents200Response.new(
15
+ events: null
16
+ )
17
+ ```
18
+
@@ -0,0 +1,28 @@
1
+ # Zernio::ListWhatsAppAccountEvents200ResponseEventsInner
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **id** | **String** | | [optional] |
8
+ | **type** | **String** | Event kind, e.g. template_approved, template_rejected, account_restricted, account_disconnected | [optional] |
9
+ | **severity** | **String** | | [optional] |
10
+ | **title** | **String** | | [optional] |
11
+ | **detail** | **String** | | [optional] |
12
+ | **created_at** | **Time** | | [optional] |
13
+
14
+ ## Example
15
+
16
+ ```ruby
17
+ require 'zernio-sdk'
18
+
19
+ instance = Zernio::ListWhatsAppAccountEvents200ResponseEventsInner.new(
20
+ id: null,
21
+ type: null,
22
+ severity: null,
23
+ title: null,
24
+ detail: null,
25
+ created_at: null
26
+ )
27
+ ```
28
+
data/docs/MessagesApi.md CHANGED
@@ -404,7 +404,7 @@ conversation_id = 'conversation_id_example' # String | The conversation ID (id f
404
404
  account_id = 'account_id_example' # String | Social account ID
405
405
  opts = {
406
406
  limit: 56, # Integer | Number of messages to return per page. Default 100, max 100.
407
- cursor: 'cursor_example', # String | Opaque pagination cursor. Pass `pagination.nextCursor` from a prior response.
407
+ cursor: 'cursor_example', # String | Opaque pagination cursor. Pass `pagination.nextCursor` from a prior response verbatim: a cursor we cannot parse returns 400 rather than silently restarting from the first page.
408
408
  sort_order: 'asc' # String | Order of returned messages. Default `asc` (oldest first, chat style). Twitter, Instagram, Telegram, WhatsApp and Reddit honor this order across cursor pages. For Facebook and Bluesky, only intra-page ordering is affected — pages always walk newest→oldest. See `sortOrderApplied` in the response.
409
409
  }
410
410
 
@@ -442,7 +442,7 @@ end
442
442
  | **conversation_id** | **String** | The conversation ID (id field from list conversations endpoint). This is the platform-specific conversation identifier, not an internal database ID. | |
443
443
  | **account_id** | **String** | Social account ID | |
444
444
  | **limit** | **Integer** | Number of messages to return per page. Default 100, max 100. | [optional][default to 100] |
445
- | **cursor** | **String** | Opaque pagination cursor. Pass `pagination.nextCursor` from a prior response. | [optional] |
445
+ | **cursor** | **String** | Opaque pagination cursor. Pass `pagination.nextCursor` from a prior response verbatim: a cursor we cannot parse returns 400 rather than silently restarting from the first page. | [optional] |
446
446
  | **sort_order** | **String** | Order of returned messages. Default `asc` (oldest first, chat style). Twitter, Instagram, Telegram, WhatsApp and Reddit honor this order across cursor pages. For Facebook and Bluesky, only intra-page ordering is affected — pages always walk newest→oldest. See `sortOrderApplied` in the response. | [optional][default to 'asc'] |
447
447
 
448
448
  ### Return type
@@ -792,7 +792,7 @@ opts = {
792
792
  platform: 'facebook', # String | Filter by platform (searchable platforms only)
793
793
  account_id: 'account_id_example', # String | Filter by specific social account ID
794
794
  limit: 56, # Integer | Maximum number of conversations to return
795
- cursor: 'cursor_example' # String | Pagination cursor for next page
795
+ cursor: 'cursor_example' # String | Opaque pagination cursor. Pass back pagination.nextCursor verbatim; do not construct one.
796
796
  }
797
797
 
798
798
  begin
@@ -832,7 +832,7 @@ end
832
832
  | **platform** | **String** | Filter by platform (searchable platforms only) | [optional] |
833
833
  | **account_id** | **String** | Filter by specific social account ID | [optional] |
834
834
  | **limit** | **Integer** | Maximum number of conversations to return | [optional][default to 20] |
835
- | **cursor** | **String** | Pagination cursor for next page | [optional] |
835
+ | **cursor** | **String** | Opaque pagination cursor. Pass back pagination.nextCursor verbatim; do not construct one. | [optional] |
836
836
 
837
837
  ### Return type
838
838
 
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **verification** | [**OnVerificationApprovedRequestVerification**](OnVerificationApprovedRequestVerification.md) | | [optional] |
11
11
 
12
12
  ## Example
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **verification** | [**OnVerificationFailedRequestVerification**](OnVerificationFailedRequestVerification.md) | | [optional] |
11
11
  | **reason** | **String** | | [optional] |
12
12
 
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **account_id** | **String** | SocialAccount id of the WhatsApp number whose conversation was flagged. | [optional] |
11
11
  | **conversation_id** | **String** | Zernio conversation id, when the thread could be resolved. | [optional] |
12
12
  | **platform_message_id** | **String** | The wamid of the message Meta's analysis flagged. | [optional] |
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **reason** | **String** | | [optional] |
11
11
  | **number** | [**OnWhatsAppNumberDeclinedRequestNumber**](OnWhatsAppNumberDeclinedRequestNumber.md) | | [optional] |
12
12
 
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **number** | [**OnWhatsAppNumberActivatedRequestNumber**](OnWhatsAppNumberActivatedRequestNumber.md) | | [optional] |
11
11
 
12
12
  ## Example
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **number** | [**OnWhatsAppNumberDeclinedRequestNumber**](OnWhatsAppNumberDeclinedRequestNumber.md) | | [optional] |
11
11
  | **reason** | **String** | | [optional] |
12
12
 
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **number** | [**OnWhatsAppNumberDeclinedRequestNumber**](OnWhatsAppNumberDeclinedRequestNumber.md) | | [optional] |
11
11
 
12
12
  ## Example
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **number** | [**OnWhatsAppNumberDeclinedRequestNumber**](OnWhatsAppNumberDeclinedRequestNumber.md) | | [optional] |
11
11
 
12
12
  ## Example
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **number** | [**OnWhatsAppNumberDeclinedRequestNumber**](OnWhatsAppNumberDeclinedRequestNumber.md) | | [optional] |
11
11
  | **reason** | **String** | | [optional] |
12
12
 
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **number** | [**OnWhatsAppNumberDeclinedRequestNumber**](OnWhatsAppNumberDeclinedRequestNumber.md) | | [optional] |
11
11
  | **reason** | **String** | | [optional] |
12
12
 
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | [optional] |
8
8
  | **event** | **String** | | [optional] |
9
- | **timestamp** | **Time** | | [optional] |
9
+ | **timestamp** | **Time** | UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt. | [optional] |
10
10
  | **number** | [**OnWhatsAppNumberDeclinedRequestNumber**](OnWhatsAppNumberDeclinedRequestNumber.md) | | [optional] |
11
11
  | **verification_url** | **String** | | [optional] |
12
12
 
@@ -12,13 +12,13 @@
12
12
  | **platform_specific_data** | [**PlatformTargetPlatformSpecificData**](PlatformTargetPlatformSpecificData.md) | | [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
- | **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. | [optional] |
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] |
16
16
  | **published_at** | **Time** | Timestamp when the post was published to this platform | [optional] |
17
17
  | **removed_from_platform_at** | **Time** | Set when a post that was successfully published later disappears from the platform (deleted on-platform or taken down by the platform). status stays \"published\" (it reflects the publish outcome); poll this field to detect post-publish removals. Absent while the post is live, and cleared if the post reappears. Detection runs with the analytics sync, so expect up to a few hours of lag. | [optional] |
18
18
  | **is_trial_reel** | **Boolean** | Present and true only when this Instagram reel was launched as a Trial through Zernio (created with platformSpecificData.trialParams). Use it to segment trial reels in analytics. Note: Instagram's Graph API exposes no readable trial field, so this reflects creation-time intent only. It indicates the reel STARTED as a trial, not whether or when it graduated. | [optional] |
19
19
  | **trial_graduation_strategy** | **String** | Graduation strategy the trial reel was launched with. Present only when isTrialReel is true. | [optional] |
20
20
  | **error_message** | **String** | Human-readable error message when status is failed. Contains platform-specific error details explaining why the publish failed. | [optional] |
21
- | **error_category** | **String** | Error category for programmatic handling: auth_expired (token expired/revoked), user_content (wrong format/too long), user_abuse (rate limits/spam), account_issue (config problems), platform_rejected (policy violation), platform_error (5xx/maintenance), system_error (Zernio infra), unknown | [optional] |
21
+ | **error_category** | **String** | Error category for programmatic handling: auth_expired (token expired/revoked), user_content (wrong format/too long), user_abuse (rate limits/spam), account_issue (config problems), platform_rejected (policy violation), platform_error (5xx/maintenance), platform_rate_limit (platform throttling, retried automatically), quota_exhausted (shared daily API quota empty, resumes at the platform's reset), system_error (Zernio infra), unknown | [optional] |
22
22
  | **error_source** | **String** | Who caused the error: user (fix content/reconnect), platform (outage/API change), system (Zernio issue, rare) | [optional] |
23
23
 
24
24
  ## Example
@@ -9,14 +9,14 @@
9
9
  | **likes** | **Integer** | | [optional] |
10
10
  | **comments** | **Integer** | | [optional] |
11
11
  | **shares** | **Integer** | | [optional] |
12
- | **saves** | **Integer** | Number of saves/bookmarks (Instagram, Pinterest) | [optional] |
12
+ | **saves** | **Integer** | Number of saves/bookmarks (Instagram, Pinterest, X/Twitter) | [optional] |
13
13
  | **clicks** | **Integer** | | [optional] |
14
14
  | **views** | **Integer** | | [optional] |
15
15
  | **follows** | **Integer** | Instagram feed posts and stories only: organic accounts that started following from this post. 0 for reels and other platforms. | [optional] |
16
16
  | **ig_reels_avg_watch_time** | **Integer** | Instagram Reels only: average watch time per play, in milliseconds. 0 for non-Reels media and other platforms. | [optional] |
17
17
  | **ig_reels_video_view_total_time** | **Integer** | Instagram Reels only: total watch time including replays, in milliseconds. 0 for non-Reels media and other platforms. | [optional] |
18
18
  | **video_duration_seconds** | **Integer** | Video length in seconds. Currently Instagram Reels only; combine with igReelsAvgWatchTime (ms) to estimate retention. Null when unknown (other platforms, non-video media, or when Instagram does not expose the media URL, e.g. reels with copyrighted audio). | [optional] |
19
- | **engagement_rate** | **Float** | | [optional] |
19
+ | **engagement_rate** | **Float** | Percentage, rounded to 2 decimals: (likes + comments + shares + saves) / (impressions or reach or views) * 100. Clicks and follows are never counted. The denominator is the FIRST of impressions, reach, views that is non-zero, so it is not the same basis on every post: a post with impressions divides by impressions, one without falls back to reach, then to views. If you need a single consistent basis (e.g. interactions / reach), compute it from the raw fields above. The engagementRate on the LinkedIn account endpoints is a different formula. | [optional] |
20
20
  | **last_updated** | **Time** | | [optional] |
21
21
 
22
22
  ## Example
@@ -37,7 +37,7 @@ instance = Zernio::PostAnalytics.new(
37
37
  ig_reels_avg_watch_time: 0,
38
38
  ig_reels_video_view_total_time: 0,
39
39
  video_duration_seconds: 30,
40
- engagement_rate: 0,
40
+ engagement_rate: 6.59,
41
41
  last_updated: null
42
42
  )
43
43
  ```
data/docs/PostsApi.md CHANGED
@@ -95,7 +95,7 @@ end
95
95
 
96
96
  Create post
97
97
 
98
- Create and optionally publish a post. Immediate posts (`publishNow: true`) include `platformPostUrl` in the response. Content is optional when media is attached or all platforms have `customContent`. See each platform's schema for media constraints. ## Idempotency Two layers of duplicate-protection apply, so safe-to-retry callers (network blips, n8n / Zapier retries, etc.) don't accidentally double-post. **1. Same-request idempotency (5-minute window).** Pass an `x-request-id` header to mark a logical request. If a second request arrives with the same `x-request-id` while the first is in-flight (or within ~5 minutes of completion), we return **HTTP 200** with the original post in the `existingPost` field — no new post is created. The official Zernio SDKs auto-generate a unique `x-request-id` per call. If you're using a generic HTTP client (curl, n8n's HTTP node, Zapier, custom code), either: - Set a unique `x-request-id` per logical call (recommended — UUIDv4 is fine) - Or simply omit the header — we'll treat each request as new **Common pitfall**: if your workflow tool uses a single execution-level request ID and reuses it across multiple HTTP nodes (e.g. one ID for the whole run, shared across 6 different platform calls), every call after the first will look like a retry of the first and return its post. Generate a fresh ID per node. **2. 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`. Returns `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) — the dedup is keyed on the full content fingerprint. Order: same-`x-request-id` retries (200) are checked first; if no idempotency match, the content-hash dedup (409) runs.
98
+ Create and optionally publish a post. Immediate posts (`publishNow: true`) include `platformPostUrl` in the response. Content is optional when media is attached, all platforms have `customContent`, every platform entry is an X Article (`platformSpecificData.article`), or every platform entry is a LinkedIn plain repost (`platformSpecificData.reshareUrl` with no text). See each platform's schema for media constraints. ## Idempotency Two layers of duplicate-protection apply, so safe-to-retry callers (network blips, n8n / Zapier retries, etc.) don't accidentally double-post. **1. Same-request idempotency (5-minute window).** Pass an `x-request-id` header to mark a logical request. If a second request arrives with the same `x-request-id` while the first is in-flight (or within ~5 minutes of completion), we return **HTTP 200** with the original post in the `existingPost` field — no new post is created. The official Zernio SDKs auto-generate a unique `x-request-id` per call. If you're using a generic HTTP client (curl, n8n's HTTP node, Zapier, custom code), either: - Set a unique `x-request-id` per logical call (recommended — UUIDv4 is fine) - Or simply omit the header — we'll treat each request as new **Common pitfall**: if your workflow tool uses a single execution-level request ID and reuses it across multiple HTTP nodes (e.g. one ID for the whole run, shared across 6 different platform calls), every call after the first will look like a retry of the first and return its post. Generate a fresh ID per node. **2. 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`. Returns `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) — the dedup is keyed on the full content fingerprint. Order: same-`x-request-id` retries (200) are checked first; if no idempotency match, the content-hash dedup (409) runs.
99
99
 
100
100
  ### Examples
101
101
 
data/docs/SMSApi.md CHANGED
@@ -1141,7 +1141,7 @@ end
1141
1141
 
1142
1142
  Send an SMS/MMS
1143
1143
 
1144
- Sends an SMS (or MMS when `mediaUrls` is set) from one of your SMS-enabled numbers. At least one of `text` / `mediaUrls` is required. Both numbers are normalized to E.164, so `from` matches regardless of formatting and replies thread into the same inbox conversation. US numbers must have an approved carrier registration (`/v1/sms/registrations`) before messages deliver. **Idempotency:** send an `Idempotency-Key` header to make retries safe: same key + same body replays the original response instead of sending a second message; same key + different body returns 422; a key still in flight returns 409.
1144
+ Sends an SMS (or MMS when `mediaUrls` is set) from one of your SMS-enabled numbers. At least one of `text` / `mediaUrls` is required. Both numbers are normalized to E.164, so `from` matches regardless of formatting and replies thread into the same inbox conversation. US numbers must have an approved carrier registration (`/v1/sms/registrations`) before messages deliver. **Replies and delivery status arrive as webhooks**, not by polling: an inbound reply fires `message.received` with `platform: \"sms\"`, the first message of a new thread also fires `conversation.started`, and this message's own outcome fires `message.delivered` or `message.failed` (the latter carrying the carrier's error code). **Opted-out recipients:** a send to a number that replied STOP is refused with `409`, never silently dropped. **Idempotency:** send an `Idempotency-Key` header to make retries safe: same key + same body replays the original response instead of sending a second message; same key + different body returns 422; a key still in flight returns 409.
1145
1145
 
1146
1146
  ### Examples
1147
1147
 
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | The platform's opaque id. Use as a geo `key` (regions/cities/zips/metros) or an entity `id` (interests/behaviors) in TargetingSpec. | |
8
8
  | **name** | **String** | Human-readable label. | |
9
- | **type** | **String** | What the result is (e.g. city, region, country, zip, metro, interest, behavior, income). | |
9
+ | **type** | **String** | What the result is (e.g. city, region, country, zip, metro, location, interest, behavior, income). | |
10
10
  | **path** | **Array<String>** | Optional breadcrumb of parent labels (e.g. ['United States', 'California', 'Los Angeles']). Disambiguates same-named results. | [optional] |
11
11
  | **audience_size** | **Integer** | Optional estimated reachable users for this option, when the platform returns it. | [optional] |
12
12
 
@@ -6,13 +6,14 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **account_id** | **String** | Social account ID | |
8
8
  | **message** | **String** | Message text | [optional] |
9
- | **attachment_url** | **String** | URL of the attachment to send (image, video, audio, or file). The URL must be publicly accessible. For binary file uploads, use multipart/form-data instead. | [optional] |
9
+ | **attachment_url** | **String** | URL of the attachment to send (image, video, audio, or file). The URL must be publicly accessible. For binary file uploads, use multipart/form-data instead. On WhatsApp, combining an image, video, or file with `buttons` renders the media as the header of one interactive reply-button message; audio cannot be combined with buttons. | [optional] |
10
10
  | **category** | **String** | WhatsApp only (Meta Direct Send). Sends this message as a business-initiated UTILITY message without an approved template, for example outside the 24-hour customer service window; Meta matches or auto-creates a template asynchronously. The WhatsApp Business Account must be eligible for Direct Send, otherwise the send fails with an error telling you to use an approved message template instead. Supported only for text messages (link preview ok) and interactive messages (reply buttons, CTA URL buttons, voice-call button, header of text/image/video/document). Cannot be combined with template, attachments, location, or contacts. Utility messages only; marketing content is not allowed under this category. Accepted on the JSON body only, not on multipart requests. | [optional] |
11
+ | **link_preview** | **Boolean** | WhatsApp only. Set false to send the message without a link-preview thumbnail for the first URL in the text. Defaults to true, which is how every WhatsApp text has been sent to date. Ignored on other platforms. Accepted on the JSON body only, not on multipart requests. | [optional][default to true] |
11
12
  | **attachment_type** | **String** | Type of attachment. Defaults to file if not specified. | [optional] |
12
13
  | **attachment_name** | **String** | WhatsApp only. Display name for a document sent via attachmentUrl with attachmentType: file (e.g. \"Report.pdf\"). Maps to the recipient's file name; without it WhatsApp derives the name from the URL and shows \"Untitled\". Ignored for image/video/audio and for binary uploads (which use the uploaded file's name). | [optional] |
13
14
  | **voice_note** | **Boolean** | WhatsApp only. When `true` on an audio attachment, the message is sent as a voice message (PTT) — the recipient sees the waveform + voice-note UI instead of a basic audio attachment. The audio file MUST be `.ogg` encoded with the OPUS codec (mono) per Meta's voice-message contract; other formats are rejected by WhatsApp. Ignored for non-audio attachments. | [optional] |
14
15
  | **quick_replies** | [**Array<SendInboxMessageRequestQuickRepliesInner>**](SendInboxMessageRequestQuickRepliesInner.md) | Quick reply buttons. Mutually exclusive with buttons. Max 13 items. | [optional] |
15
- | **buttons** | [**Array<SendInboxMessageRequestButtonsInner>**](SendInboxMessageRequestButtonsInner.md) | Action buttons. Mutually exclusive with quickReplies. Max 3 items. Instagram / Facebook: also mutually exclusive with `template`. A Meta message carries one body shape, so sending both is a 400 rather than a silent drop of the buttons. WhatsApp: buttons always render as interactive reply buttons. Only `title` and `payload` are used — `type`, `url`, and `phone` are ignored (WhatsApp has no URL/phone button in this field; use the `interactive` field with `type: cta_url` for a link button). `payload` becomes the button reply ID delivered on the `message.received` webhook when the user taps. To send a simple reply-button message, provide `title` + `payload` and set `type: postback`, e.g. `{ \"type\": \"postback\", \"title\": \"Yes\", \"payload\": \"yes\" }`. | [optional] |
16
+ | **buttons** | [**Array<SendInboxMessageRequestButtonsInner>**](SendInboxMessageRequestButtonsInner.md) | Action buttons. Mutually exclusive with quickReplies. Max 3 items. Instagram / Facebook: also mutually exclusive with `template`. A Meta message carries one body shape, so sending both is a 400 rather than a silent drop of the buttons. WhatsApp: buttons always render as interactive reply buttons. Only `title` and `payload` are used — `type`, `url`, and `phone` are ignored (WhatsApp has no URL/phone button in this field; use the `interactive` field with `type: cta_url` for a link button). `payload` becomes the button reply ID delivered on the `message.received` webhook when the user taps. To send a simple reply-button message, provide `title` + `payload` and set `type: postback`, e.g. `{ \"type\": \"postback\", \"title\": \"Yes\", \"payload\": \"yes\" }`. Combine `buttons` with `attachmentUrl` and `attachmentType` `image`, `video`, or `file` to render one WhatsApp message with a media header, body text, and reply buttons. Audio is not a supported interactive header and returns 400 when combined with buttons. | [optional] |
16
17
  | **template** | [**SendInboxMessageRequestTemplate**](SendInboxMessageRequestTemplate.md) | | [optional] |
17
18
  | **interactive** | [**SendInboxMessageRequestInteractive**](SendInboxMessageRequestInteractive.md) | | [optional] |
18
19
  | **reply_markup** | [**SendInboxMessageRequestReplyMarkup**](SendInboxMessageRequestReplyMarkup.md) | | [optional] |
@@ -32,6 +33,7 @@ instance = Zernio::SendInboxMessageRequest.new(
32
33
  message: null,
33
34
  attachment_url: null,
34
35
  category: null,
36
+ link_preview: null,
35
37
  attachment_type: null,
36
38
  attachment_name: null,
37
39
  voice_note: null,
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **profile_id** | **String** | | |
8
8
  | **country** | **String** | | |
9
- | **submission_id** | **String** | Idempotency token for this submission attempt. A retry/double-submit with the same token returns the same number; omit and each call creates a new number. | [optional] |
9
+ | **submission_id** | **String** | Idempotency token for this submission attempt. Once the number has been ordered, a retry with the same token returns that same number instead of ordering another. A submission that fails before the number is ordered releases the token, so you can correct your details and re-submit with it. Omit it and every call provisions a new number. | [optional] |
10
10
  | **quantity** | **Integer** | Provision several same-country numbers from one submission (1-5). The single verification covers all of them; each number is billed only when it activates. Numbers that fail to order are skipped (best-effort). With `areaCode`, a quantity above that area's live stock is rejected with a 400. | [optional][default to 1] |
11
11
  | **reuse** | **Boolean** | Reuse a prior approved verification for this country (skips document/field collection; places the order immediately). | [optional] |
12
12
  | **reuse_option_id** | **String** | Which reusable verification to use (GET reusable.options[].id). The unambiguous selection key. Omitted = the approved default. No match = 409. | [optional] |
@@ -10,6 +10,7 @@
10
10
  | **first_name** | **String** | | [optional] |
11
11
  | **last_name** | **String** | | [optional] |
12
12
  | **street_address** | **String** | | [optional] |
13
+ | **extended_address** | **String** | Address complement: apartment, suite, unit, or the quadra/lote used in some countries. Optional. Does not substitute for a building number on street_address. | [optional] |
13
14
  | **locality** | **String** | | [optional] |
14
15
  | **administrative_area** | **String** | | [optional] |
15
16
  | **postal_code** | **String** | | [optional] |
@@ -26,6 +27,7 @@ instance = Zernio::SubmitPhoneNumberKycRequestAddress.new(
26
27
  first_name: null,
27
28
  last_name: null,
28
29
  street_address: null,
30
+ extended_address: null,
29
31
  locality: null,
30
32
  administrative_area: null,
31
33
  postal_code: null
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **profile_id** | **String** | | |
8
8
  | **country** | **String** | | |
9
- | **submission_id** | **String** | Idempotency token for this submission attempt. A retry/double-submit with the same token returns the same number; omit and each call creates a new number. | [optional] |
9
+ | **submission_id** | **String** | Idempotency token for this submission attempt. Once the number has been ordered, a retry with the same token returns that same number instead of ordering another. A submission that fails before the number is ordered releases the token, so you can correct your details and re-submit with it. Omit it and every call provisions a new number. | [optional] |
10
10
  | **quantity** | **Integer** | Provision several same-country numbers from one submission (1-5). The single verification covers all of them; each number is billed only when it activates. Numbers that fail to order are skipped (best-effort). With `areaCode`, a quantity above that area's live stock is rejected with a 400. | [optional][default to 1] |
11
11
  | **reuse** | **Boolean** | Reuse a prior approved verification for this country (skips document/field collection; places the order immediately). | [optional] |
12
12
  | **reuse_option_id** | **String** | Which reusable verification to use (GET reusable.options[].id). The unambiguous selection key. Omitted = the approved default. No match = 409. | [optional] |
@@ -4,6 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
+ | **article** | [**XArticle**](XArticle.md) | | [optional] |
7
8
  | **reply_to_tweet_id** | **String** | ID of an existing tweet to reply to. The published tweet will appear as a reply in that tweet's thread. For threads, only the first tweet replies to the target; subsequent tweets chain normally. X only permits replying to your own posts or posts you are mentioned in; replying to an arbitrary other account's post is rejected by X. | [optional] |
8
9
  | **quote_tweet_id** | **String** | ID (or full status URL) of an existing tweet to quote-repost. The published tweet becomes a quote tweet of the target. Mutually exclusive with media and poll. X only permits quoting your own posts or posts you are mentioned in / part of the conversation thread of; quoting an arbitrary other account's post is rejected by X. Billed at the standard create rate ($0.015), unlike pasting a tweet URL into the text which is billed at the URL rate ($0.20). For threads, applies to the first tweet only. | [optional] |
9
10
  | **reply_settings** | **String** | Controls who can reply to the tweet. \"following\" allows only people you follow, \"mentionedUsers\" allows only mentioned users, \"subscribers\" allows only subscribers, \"verified\" allows only verified users. Omit for default (everyone can reply). For threads, applies to the first tweet only. Cannot be combined with replyToTweetId. | [optional] |
@@ -21,6 +22,7 @@
21
22
  require 'zernio-sdk'
22
23
 
23
24
  instance = Zernio::TwitterPlatformData.new(
25
+ article: null,
24
26
  reply_to_tweet_id: null,
25
27
  quote_tweet_id: null,
26
28
  reply_settings: null,
@@ -4,10 +4,10 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **updated** | **Integer** | Number of ads updated | [optional] |
8
- | **skipped** | **Integer** | Number of ads skipped | [optional] |
9
- | **skipped_reasons** | **Array<String>** | | [optional] |
10
- | **message** | **String** | Human-readable summary (present when no ads were actionable) | [optional] |
7
+ | **status** | **String** | The status written to the campaign | [optional] |
8
+ | **updated** | **Integer** | Number of ads whose own stored status changed too. 0 is normal on a resume whose ads are all awaiting the platform. | [optional] |
9
+ | **skipped** | **Integer** | Number of ads whose own status was left as it was | [optional] |
10
+ | **skipped_reasons** | **Array<String>** | Why each group of ads was skipped | [optional] |
11
11
 
12
12
  ## Example
13
13
 
@@ -15,10 +15,10 @@
15
15
  require 'zernio-sdk'
16
16
 
17
17
  instance = Zernio::UpdateAdCampaignStatus200Response.new(
18
+ status: null,
18
19
  updated: null,
19
20
  skipped: null,
20
- skipped_reasons: null,
21
- message: null
21
+ skipped_reasons: null
22
22
  )
23
23
  ```
24
24
 
@@ -6,9 +6,11 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **budget** | [**AdBudget**](AdBudget.md) | | [optional] |
8
8
  | **budget_level** | **String** | | [optional] |
9
- | **status** | **String** | | [optional] |
10
- | **status_updated** | **Integer** | | [optional] |
11
- | **status_skipped** | **Integer** | | [optional] |
9
+ | **status** | **String** | The status written to the ad set. Absent when nothing was written (see statusMessage). | [optional] |
10
+ | **status_updated** | **Integer** | Number of ads whose own stored status changed alongside the ad set switch | [optional] |
11
+ | **status_skipped** | **Integer** | Number of ads whose own status was left as it was | [optional] |
12
+ | **status_skipped_reasons** | **Array<String>** | Why each group of ads was skipped | [optional] |
13
+ | **status_message** | **String** | Present only where the platform has no ad-set switch and no child ad was actionable; `status` is then absent because nothing was written | [optional] |
12
14
  | **bid_strategy** | [**BidStrategy**](BidStrategy.md) | | [optional] |
13
15
  | **bid_amount** | **Float** | | [optional] |
14
16
  | **roas_average_floor** | **Float** | | [optional] |
@@ -25,6 +27,8 @@ instance = Zernio::UpdateAdSet200Response.new(
25
27
  status: null,
26
28
  status_updated: null,
27
29
  status_skipped: null,
30
+ status_skipped_reasons: null,
31
+ status_message: null,
28
32
  bid_strategy: null,
29
33
  bid_amount: null,
30
34
  roas_average_floor: null,