late-sdk 0.0.871 → 0.0.873

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 (514) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -8
  3. data/docs/AccountGroupsApi.md +1 -1
  4. data/docs/AccountWithFollowerStatsAllOfAccountStats.md +2 -2
  5. data/docs/AccountsApi.md +5 -5
  6. data/docs/Ad.md +4 -4
  7. data/docs/AdAccountsApi.md +9 -9
  8. data/docs/AdAudiencesApi.md +4 -4
  9. data/docs/AdCampaignsApi.md +46 -46
  10. data/docs/AdCreative.md +6 -6
  11. data/docs/AdCreativesApi.md +12 -12
  12. data/docs/AdDailyMetrics.md +4 -4
  13. data/docs/AdFunnelCounts.md +3 -3
  14. data/docs/AdInsightsApi.md +3 -3
  15. data/docs/AdKeyword.md +1 -1
  16. data/docs/AdLibraryApi.md +2 -2
  17. data/docs/AdMetrics.md +4 -4
  18. data/docs/AdTargetingApi.md +5 -5
  19. data/docs/AdTreeAdSet.md +1 -1
  20. data/docs/AdTreeCampaign.md +4 -4
  21. data/docs/AddAdKeywordsRequest.md +1 -1
  22. data/docs/AddMessageReactionRequest.md +1 -1
  23. data/docs/AdjustConversionsRequestAdjustmentsInner.md +4 -4
  24. data/docs/AdsTimelineResponseRowsInner.md +1 -1
  25. data/docs/AnalyticsApi.md +22 -22
  26. data/docs/AnalyticsDeltaEntry.md +1 -1
  27. data/docs/AnalyticsListResponse.md +1 -1
  28. data/docs/ApiKey.md +1 -1
  29. data/docs/AppealSmsRegistrationRequest.md +1 -1
  30. data/docs/AssignGoogleBusinessLocation200ResponseAccount.md +1 -1
  31. data/docs/AssignGoogleBusinessLocationRequest.md +2 -2
  32. data/docs/AttachCampaignAssetsRequest.md +2 -2
  33. data/docs/BillingSnapshotPlan.md +1 -1
  34. data/docs/BlockWhatsAppUsersRequest.md +1 -1
  35. data/docs/BookmarkPostRequest.md +1 -1
  36. data/docs/BoostPostRequest.md +5 -5
  37. data/docs/BusinessCenter.md +1 -1
  38. data/docs/CallRecord.md +2 -2
  39. data/docs/CampaignAnalyticsResponseAnalyticsDailyInner.md +4 -4
  40. data/docs/CheckPhoneNumberAvailability200Response.md +1 -1
  41. data/docs/CheckPhoneNumberPortability200ResponseResultsInner.md +2 -2
  42. data/docs/CommentsApi.md +11 -11
  43. data/docs/ConnectApi.md +102 -35
  44. data/docs/ConnectWhatsAppEmbeddedSignupRequest.md +4 -4
  45. data/docs/Conversation.md +34 -0
  46. data/docs/ConversionEvent.md +1 -1
  47. data/docs/ConversionsApi.md +6 -6
  48. data/docs/CreateAdCampaignRequest.md +1 -1
  49. data/docs/CreateAdCreativeRequest.md +1 -1
  50. data/docs/CreateApiKeyRequest.md +1 -1
  51. data/docs/CreateInboxConversation201ResponseData.md +2 -2
  52. data/docs/CreateInboxConversationRequest.md +3 -3
  53. data/docs/CreatePhoneNumberPortInRequestEndUser.md +2 -2
  54. data/docs/CreateStandaloneAdRequest.md +22 -22
  55. data/docs/CreateStandaloneAdRequestVideo.md +2 -2
  56. data/docs/CreateWhatsAppFlowRequest.md +1 -1
  57. data/docs/CreateWhatsAppGroupChatRequest.md +1 -1
  58. data/docs/CreateWhatsAppTemplateRequest.md +1 -1
  59. data/docs/CtwaAdRequestBodyVideo.md +1 -1
  60. data/docs/CustomConversion.md +1 -1
  61. data/docs/DeleteWhatsappBusinessUsernameRequest.md +1 -1
  62. data/docs/DiscordApi.md +9 -9
  63. data/docs/DiscordScheduledEvent.md +1 -1
  64. data/docs/EditInboxCommentRequest.md +1 -1
  65. data/docs/EditInboxMessageRequest.md +1 -1
  66. data/docs/EnableSmsOnNumber200Response.md +1 -1
  67. data/docs/ErrorResponse.md +1 -1
  68. data/docs/EstimateAdReachRequest.md +1 -1
  69. data/docs/ExternalPostWebhookPost.md +2 -2
  70. data/docs/FollowUserRequest.md +2 -2
  71. data/docs/GMBAttributesApi.md +3 -3
  72. data/docs/GMBFoodMenusApi.md +2 -2
  73. data/docs/GMBLocationDetailsApi.md +2 -2
  74. data/docs/GMBMediaApi.md +1 -1
  75. data/docs/GMBPlaceActionsApi.md +1 -1
  76. data/docs/GMBReviewsApi.md +4 -4
  77. data/docs/GetAdComments200ResponseMeta.md +4 -4
  78. data/docs/GetAdMedia200Response.md +1 -1
  79. data/docs/GetAdMedia200ResponseMediaInner.md +1 -1
  80. data/docs/GetAdsSearchTerms200ResponseDataInner.md +1 -1
  81. data/docs/GetGoogleBusinessLocationDetails200ResponseLocation.md +1 -1
  82. data/docs/GetInboxConversation200ResponseData.md +1 -1
  83. data/docs/GetInboxConversationMessages200ResponseMessagesInner.md +1 -1
  84. data/docs/GetInboxPostComments200ResponseCommentsInner.md +2 -2
  85. data/docs/GetInboxPostComments200ResponseCommentsInnerFrom.md +1 -1
  86. data/docs/GetInboxTopAccounts200ResponseAccountsInner.md +1 -1
  87. data/docs/GetLinkedInBidPricingRequest.md +1 -1
  88. data/docs/GetPhoneNumber200ResponsePhoneNumber.md +1 -1
  89. data/docs/GetPhoneNumberKycForm200ResponseReusable.md +1 -1
  90. data/docs/GetPhoneNumberKycForm200ResponseReusableOptionsInner.md +2 -2
  91. data/docs/GetPhoneNumberKycForm200ResponseReusableOptionsInnerDetailsInner.md +1 -1
  92. data/docs/GetPhoneNumberPortInRequirements200Response.md +1 -1
  93. data/docs/GetWhatsAppNumberKycForm200ResponseFieldsInner.md +1 -1
  94. data/docs/GetWhatsAppSdkConfig200Response.md +22 -0
  95. data/docs/GoogleBusinessPlatformData.md +1 -1
  96. data/docs/HideInboxCommentRequest.md +1 -1
  97. data/docs/InboxAnalyticsApi.md +5 -5
  98. data/docs/InboxWebhookAccount.md +3 -3
  99. data/docs/InboxWebhookConversation.md +1 -1
  100. data/docs/InboxWebhookMessageSender.md +3 -3
  101. data/docs/InstagramApi.md +1 -1
  102. data/docs/LeadGenApi.md +2 -2
  103. data/docs/LikeInboxCommentRequest.md +1 -1
  104. data/docs/LikePostRequest.md +1 -1
  105. data/docs/LinkedInMentionsApi.md +1 -1
  106. data/docs/LinkedInPlatformData.md +1 -1
  107. data/docs/ListAdAudiences200ResponseAudiencesInner.md +1 -1
  108. data/docs/ListCalls200ResponseCallsInner.md +2 -2
  109. data/docs/ListGoogleBusinessLocations200ResponseLocationsInner.md +1 -1
  110. data/docs/ListInboxComments200ResponseDataInner.md +3 -3
  111. data/docs/ListInboxConversations200ResponseDataInner.md +3 -1
  112. data/docs/ListInboxReviews200ResponseDataInner.md +6 -6
  113. data/docs/ListPhoneNumbers200Response.md +1 -1
  114. data/docs/ListPhoneNumbers200ResponseNumbersInner.md +3 -3
  115. data/docs/ListSipTrunks200Response.md +1 -1
  116. data/docs/ListWhatsAppAccountEvents200ResponseEventsInner.md +1 -1
  117. data/docs/LogsApi.md +2 -2
  118. data/docs/MediaItem.md +1 -1
  119. data/docs/MentionsApi.md +3 -3
  120. data/docs/MessagesApi.md +95 -23
  121. data/docs/MessagingAdsApi.md +1 -1
  122. data/docs/PhoneNumbersApi.md +14 -14
  123. data/docs/PinterestPlatformData.md +1 -1
  124. data/docs/PostAnalytics.md +1 -1
  125. data/docs/PostsApi.md +5 -5
  126. data/docs/ProfilesApi.md +1 -1
  127. data/docs/PurchasePhoneNumberRequest.md +1 -1
  128. data/docs/PurchaseWhatsAppPhoneNumberRequest.md +1 -1
  129. data/docs/ReachAndFrequencyApi.md +2 -2
  130. data/docs/RecyclingConfig.md +1 -1
  131. data/docs/ReplyToMentionRequest.md +1 -1
  132. data/docs/RetweetPostRequest.md +1 -1
  133. data/docs/ReviewWebhookReview.md +1 -1
  134. data/docs/ReviewWebhookReviewReviewer.md +1 -1
  135. data/docs/ReviewsApi.md +6 -6
  136. data/docs/SMSApi.md +11 -11
  137. data/docs/SavedTargetingAudience.md +1 -1
  138. data/docs/SelectGoogleBusinessLocation200ResponseAccount.md +1 -1
  139. data/docs/SelectGoogleBusinessLocationRequest.md +2 -2
  140. data/docs/SendDiscordDirectMessage200Response.md +1 -1
  141. data/docs/SendInboxMessage200ResponseData.md +1 -1
  142. data/docs/SendInboxMessageRequest.md +3 -3
  143. data/docs/SendPrivateReplyToCommentRequest.md +2 -2
  144. data/docs/SendTypingIndicatorRequest.md +1 -1
  145. data/docs/SendWhatsAppFlowMessageRequest.md +1 -1
  146. data/docs/SetCommentModerationRequest.md +1 -1
  147. data/docs/SetConversationThreadControl200Response.md +20 -0
  148. data/docs/SetConversationThreadControl200ResponseControl.md +18 -0
  149. data/docs/SetConversationThreadControlRequest.md +24 -0
  150. data/docs/SetWhatsAppFlowsEncryptionKeyRequest.md +1 -1
  151. data/docs/SetWhatsappBusinessUsernameRequest.md +1 -1
  152. data/docs/StartSmsRegistrationRequest.md +1 -1
  153. data/docs/StartSmsRegistrationRequestCampaign.md +1 -1
  154. data/docs/SubmitPhoneNumberKycRequest.md +1 -1
  155. data/docs/SubmitWhatsAppNumberKycRequest.md +1 -1
  156. data/docs/SyncExternalPosts200Response.md +1 -1
  157. data/docs/SyncExternalPostsRequest.md +1 -1
  158. data/docs/TrackingTag.md +2 -2
  159. data/docs/TrackingTagsApi.md +6 -6
  160. data/docs/TwitterEngagementApi.md +9 -9
  161. data/docs/UnblockWhatsAppUsersRequest.md +1 -1
  162. data/docs/UpdateAccountRequestXCapabilities.md +1 -1
  163. data/docs/UpdateAdAccountRequest.md +1 -1
  164. data/docs/UpdateAdSetRequestPlatformSpecificData.md +1 -1
  165. data/docs/UpdateConversionDestinationRequest.md +1 -1
  166. data/docs/UpdateGmbLocationRequest.md +1 -1
  167. data/docs/UpdateInboxConversationRequest.md +1 -1
  168. data/docs/UpdatePostMetadataRequest.md +1 -1
  169. data/docs/UpdateWhatsAppBusinessProfileRequest.md +1 -1
  170. data/docs/UpdateWhatsAppDisplayNameRequest.md +1 -1
  171. data/docs/UpdateWhatsAppFlowRequest.md +1 -1
  172. data/docs/UpdateWhatsAppTemplateByIdRequest.md +1 -1
  173. data/docs/UpdateWhatsAppTemplateRequest.md +1 -1
  174. data/docs/UpdateWorkflowRequest.md +1 -1
  175. data/docs/UploadWhatsAppFlowJsonRequest.md +1 -1
  176. data/docs/UploadWhatsAppProfilePhotoRequest1.md +1 -1
  177. data/docs/UploadedOrDerivedAudience.md +2 -2
  178. data/docs/UsageApi.md +12 -12
  179. data/docs/UsageMetering.md +1 -1
  180. data/docs/UsageStats.md +1 -1
  181. data/docs/UsageStatsSpend.md +1 -1
  182. data/docs/UsageStatsUsage.md +2 -2
  183. data/docs/UsersApi.md +1 -1
  184. data/docs/ValidateApi.md +3 -3
  185. data/docs/VerifyApi.md +1 -1
  186. data/docs/VoiceApi.md +2 -2
  187. data/docs/WebhookEventsApi.md +76 -7
  188. data/docs/WebhookPayloadAdStatusChangedError.md +3 -3
  189. data/docs/WebhookPayloadAdStatusChangedStatus.md +1 -1
  190. data/docs/WebhookPayloadCommentAccount.md +2 -2
  191. data/docs/WebhookPayloadCommentPost.md +1 -1
  192. data/docs/WebhookPayloadConversationControlChanged.md +30 -0
  193. data/docs/WebhookPayloadConversationControlChangedControl.md +22 -0
  194. data/docs/WebhookPayloadLeadAccount.md +2 -2
  195. data/docs/WebhookPayloadMessageMessageSender.md +3 -3
  196. data/docs/WebhookPayloadMessageMetadata.md +3 -1
  197. data/docs/WebhookPayloadMessageSentMessage.md +1 -1
  198. data/docs/WebhookPayloadReviewNewAccount.md +1 -1
  199. data/docs/WhatsAppApi.md +51 -51
  200. data/docs/WhatsAppCallingApi.md +3 -3
  201. data/docs/WhatsAppFlowsApi.md +18 -18
  202. data/docs/WhatsAppPhoneNumbersApi.md +12 -12
  203. data/docs/WhatsAppSandboxApi.md +2 -2
  204. data/docs/WhatsAppTemplatesApi.md +2 -2
  205. data/docs/WorkflowEdge.md +1 -1
  206. data/docs/WorkflowExecutionEvent.md +1 -1
  207. data/docs/WorkflowsApi.md +3 -3
  208. data/docs/XApiOperation.md +2 -2
  209. data/docs/XApiOperationTriggeredByInner.md +1 -1
  210. data/docs/XApiPricing.md +1 -1
  211. data/lib/zernio-sdk/api/account_groups_api.rb +2 -2
  212. data/lib/zernio-sdk/api/accounts_api.rb +10 -10
  213. data/lib/zernio-sdk/api/ad_accounts_api.rb +12 -12
  214. data/lib/zernio-sdk/api/ad_audiences_api.rb +6 -6
  215. data/lib/zernio-sdk/api/ad_campaigns_api.rb +60 -60
  216. data/lib/zernio-sdk/api/ad_creatives_api.rb +20 -20
  217. data/lib/zernio-sdk/api/ad_insights_api.rb +4 -4
  218. data/lib/zernio-sdk/api/ad_library_api.rb +2 -2
  219. data/lib/zernio-sdk/api/ad_targeting_api.rb +6 -6
  220. data/lib/zernio-sdk/api/analytics_api.rb +22 -22
  221. data/lib/zernio-sdk/api/comments_api.rb +20 -20
  222. data/lib/zernio-sdk/api/connect_api.rb +91 -34
  223. data/lib/zernio-sdk/api/conversions_api.rb +12 -12
  224. data/lib/zernio-sdk/api/discord_api.rb +18 -18
  225. data/lib/zernio-sdk/api/gmb_attributes_api.rb +4 -4
  226. data/lib/zernio-sdk/api/gmb_food_menus_api.rb +4 -4
  227. data/lib/zernio-sdk/api/gmb_location_details_api.rb +4 -4
  228. data/lib/zernio-sdk/api/gmb_media_api.rb +2 -2
  229. data/lib/zernio-sdk/api/gmb_place_actions_api.rb +2 -2
  230. data/lib/zernio-sdk/api/gmb_reviews_api.rb +8 -8
  231. data/lib/zernio-sdk/api/inbox_analytics_api.rb +10 -10
  232. data/lib/zernio-sdk/api/instagram_api.rb +2 -2
  233. data/lib/zernio-sdk/api/lead_gen_api.rb +4 -4
  234. data/lib/zernio-sdk/api/linked_in_mentions_api.rb +2 -2
  235. data/lib/zernio-sdk/api/logs_api.rb +2 -2
  236. data/lib/zernio-sdk/api/mentions_api.rb +4 -4
  237. data/lib/zernio-sdk/api/messages_api.rb +104 -30
  238. data/lib/zernio-sdk/api/messaging_ads_api.rb +2 -2
  239. data/lib/zernio-sdk/api/phone_numbers_api.rb +24 -24
  240. data/lib/zernio-sdk/api/posts_api.rb +8 -8
  241. data/lib/zernio-sdk/api/profiles_api.rb +2 -2
  242. data/lib/zernio-sdk/api/reach_and_frequency_api.rb +4 -4
  243. data/lib/zernio-sdk/api/reviews_api.rb +8 -8
  244. data/lib/zernio-sdk/api/sms_api.rb +20 -20
  245. data/lib/zernio-sdk/api/tracking_tags_api.rb +12 -12
  246. data/lib/zernio-sdk/api/twitter_engagement_api.rb +12 -12
  247. data/lib/zernio-sdk/api/usage_api.rb +14 -14
  248. data/lib/zernio-sdk/api/users_api.rb +2 -2
  249. data/lib/zernio-sdk/api/validate_api.rb +4 -4
  250. data/lib/zernio-sdk/api/verify_api.rb +2 -2
  251. data/lib/zernio-sdk/api/voice_api.rb +4 -4
  252. data/lib/zernio-sdk/api/webhook_events_api.rb +80 -14
  253. data/lib/zernio-sdk/api/whats_app_api.rb +54 -54
  254. data/lib/zernio-sdk/api/whats_app_calling_api.rb +4 -4
  255. data/lib/zernio-sdk/api/whats_app_flows_api.rb +20 -20
  256. data/lib/zernio-sdk/api/whats_app_phone_numbers_api.rb +20 -20
  257. data/lib/zernio-sdk/api/whats_app_sandbox_api.rb +4 -4
  258. data/lib/zernio-sdk/api/whats_app_templates_api.rb +2 -2
  259. data/lib/zernio-sdk/api/workflows_api.rb +6 -6
  260. data/lib/zernio-sdk/models/account_with_follower_stats_all_of_account_stats.rb +2 -2
  261. data/lib/zernio-sdk/models/ad.rb +4 -4
  262. data/lib/zernio-sdk/models/ad_creative.rb +6 -6
  263. data/lib/zernio-sdk/models/ad_daily_metrics.rb +4 -4
  264. data/lib/zernio-sdk/models/ad_engagement_counts.rb +1 -1
  265. data/lib/zernio-sdk/models/ad_funnel_counts.rb +4 -4
  266. data/lib/zernio-sdk/models/ad_keyword.rb +1 -1
  267. data/lib/zernio-sdk/models/ad_metrics.rb +4 -4
  268. data/lib/zernio-sdk/models/ad_tree_ad_set.rb +1 -1
  269. data/lib/zernio-sdk/models/ad_tree_campaign.rb +4 -4
  270. data/lib/zernio-sdk/models/add_ad_keywords_request.rb +1 -1
  271. data/lib/zernio-sdk/models/add_message_reaction_request.rb +1 -1
  272. data/lib/zernio-sdk/models/adjust_conversions_request_adjustments_inner.rb +4 -4
  273. data/lib/zernio-sdk/models/adjust_conversions_request_adjustments_inner_user.rb +1 -1
  274. data/lib/zernio-sdk/models/ads_timeline_response_rows_inner.rb +1 -1
  275. data/lib/zernio-sdk/models/analytics_delta_entry.rb +1 -1
  276. data/lib/zernio-sdk/models/analytics_list_response.rb +1 -1
  277. data/lib/zernio-sdk/models/api_key.rb +1 -1
  278. data/lib/zernio-sdk/models/appeal_sms_registration_request.rb +1 -1
  279. data/lib/zernio-sdk/models/assign_google_business_location200_response_account.rb +1 -1
  280. data/lib/zernio-sdk/models/assign_google_business_location_request.rb +2 -2
  281. data/lib/zernio-sdk/models/attach_campaign_assets_request.rb +2 -2
  282. data/lib/zernio-sdk/models/billing_snapshot.rb +1 -1
  283. data/lib/zernio-sdk/models/billing_snapshot_plan.rb +1 -1
  284. data/lib/zernio-sdk/models/block_whats_app_users_request.rb +1 -1
  285. data/lib/zernio-sdk/models/bookmark_post_request.rb +1 -1
  286. data/lib/zernio-sdk/models/boost_post_request.rb +5 -5
  287. data/lib/zernio-sdk/models/boost_post_request_platform_specific_data.rb +1 -1
  288. data/lib/zernio-sdk/models/business_center.rb +2 -2
  289. data/lib/zernio-sdk/models/call_record.rb +2 -2
  290. data/lib/zernio-sdk/models/campaign_analytics_response_analytics_daily_inner.rb +4 -4
  291. data/lib/zernio-sdk/models/check_phone_number_availability200_response.rb +1 -1
  292. data/lib/zernio-sdk/models/check_phone_number_portability200_response_results_inner.rb +2 -2
  293. data/lib/zernio-sdk/models/connect_whats_app_embedded_signup_request.rb +4 -3
  294. data/lib/zernio-sdk/models/conversation.rb +334 -0
  295. data/lib/zernio-sdk/models/conversion_destination.rb +1 -1
  296. data/lib/zernio-sdk/models/conversion_event.rb +1 -1
  297. data/lib/zernio-sdk/models/create_ad_campaign_request.rb +1 -1
  298. data/lib/zernio-sdk/models/create_ad_creative_request.rb +1 -1
  299. data/lib/zernio-sdk/models/create_api_key_request.rb +1 -1
  300. data/lib/zernio-sdk/models/create_inbox_conversation201_response_data.rb +2 -2
  301. data/lib/zernio-sdk/models/create_inbox_conversation_request.rb +3 -3
  302. data/lib/zernio-sdk/models/create_phone_number_port_in_request_end_user.rb +3 -3
  303. data/lib/zernio-sdk/models/create_standalone_ad201_response_one_of.rb +1 -1
  304. data/lib/zernio-sdk/models/create_standalone_ad201_response_one_of1.rb +1 -1
  305. data/lib/zernio-sdk/models/create_standalone_ad_request.rb +22 -22
  306. data/lib/zernio-sdk/models/create_standalone_ad_request_placement_assets.rb +1 -1
  307. data/lib/zernio-sdk/models/create_standalone_ad_request_placement_assets_rules_inner_placements.rb +1 -1
  308. data/lib/zernio-sdk/models/create_standalone_ad_request_placements.rb +1 -1
  309. data/lib/zernio-sdk/models/create_standalone_ad_request_platform_specific_data.rb +1 -1
  310. data/lib/zernio-sdk/models/create_standalone_ad_request_video.rb +3 -3
  311. data/lib/zernio-sdk/models/create_whats_app_flow_request.rb +1 -1
  312. data/lib/zernio-sdk/models/create_whats_app_group_chat_request.rb +1 -1
  313. data/lib/zernio-sdk/models/create_whats_app_template_request.rb +1 -1
  314. data/lib/zernio-sdk/models/ctwa_ad_request_body_video.rb +1 -1
  315. data/lib/zernio-sdk/models/custom_conversion.rb +1 -1
  316. data/lib/zernio-sdk/models/delete_whatsapp_business_username_request.rb +1 -1
  317. data/lib/zernio-sdk/models/discord_scheduled_event.rb +2 -2
  318. data/lib/zernio-sdk/models/edit_inbox_comment_request.rb +1 -1
  319. data/lib/zernio-sdk/models/edit_inbox_message_request.rb +1 -1
  320. data/lib/zernio-sdk/models/enable_sms_on_number200_response.rb +1 -1
  321. data/lib/zernio-sdk/models/error_response.rb +1 -1
  322. data/lib/zernio-sdk/models/estimate_ad_reach_request.rb +1 -1
  323. data/lib/zernio-sdk/models/external_post_webhook_post.rb +2 -2
  324. data/lib/zernio-sdk/models/follow_user_request.rb +2 -2
  325. data/lib/zernio-sdk/models/geo_restriction.rb +1 -1
  326. data/lib/zernio-sdk/models/get_ad_comments200_response_meta.rb +4 -4
  327. data/lib/zernio-sdk/models/get_ad_media200_response.rb +1 -1
  328. data/lib/zernio-sdk/models/get_ad_media200_response_media_inner.rb +1 -1
  329. data/lib/zernio-sdk/models/get_ads_search_terms200_response_data_inner.rb +1 -1
  330. data/lib/zernio-sdk/models/get_google_business_location_details200_response_location.rb +1 -1
  331. data/lib/zernio-sdk/models/get_inbox_conversation200_response_data.rb +1 -1
  332. data/lib/zernio-sdk/models/get_inbox_conversation_messages200_response_messages_inner.rb +1 -1
  333. data/lib/zernio-sdk/models/get_inbox_post_comments200_response_comments_inner.rb +2 -2
  334. data/lib/zernio-sdk/models/get_inbox_post_comments200_response_comments_inner_from.rb +1 -1
  335. data/lib/zernio-sdk/models/get_inbox_post_comments200_response_meta_ad_comments.rb +1 -1
  336. data/lib/zernio-sdk/models/get_inbox_top_accounts200_response_accounts_inner.rb +1 -1
  337. data/lib/zernio-sdk/models/get_linked_in_bid_pricing_request.rb +1 -1
  338. data/lib/zernio-sdk/models/get_phone_number200_response_phone_number.rb +1 -1
  339. data/lib/zernio-sdk/models/get_phone_number_kyc_form200_response_reusable.rb +1 -1
  340. data/lib/zernio-sdk/models/get_phone_number_kyc_form200_response_reusable_options_inner.rb +2 -2
  341. data/lib/zernio-sdk/models/get_phone_number_kyc_form200_response_reusable_options_inner_details_inner.rb +1 -1
  342. data/lib/zernio-sdk/models/get_phone_number_port_in_requirements200_response.rb +1 -1
  343. data/lib/zernio-sdk/models/get_whats_app_number_kyc_form200_response_fields_inner.rb +1 -1
  344. data/lib/zernio-sdk/models/get_whats_app_sdk_config200_response.rb +219 -0
  345. data/lib/zernio-sdk/models/google_business_platform_data.rb +2 -2
  346. data/lib/zernio-sdk/models/hide_inbox_comment_request.rb +1 -1
  347. data/lib/zernio-sdk/models/inbox_webhook_account.rb +3 -3
  348. data/lib/zernio-sdk/models/inbox_webhook_conversation.rb +1 -1
  349. data/lib/zernio-sdk/models/inbox_webhook_message_sender.rb +3 -3
  350. data/lib/zernio-sdk/models/like_inbox_comment_request.rb +1 -1
  351. data/lib/zernio-sdk/models/like_post_request.rb +1 -1
  352. data/lib/zernio-sdk/models/linked_in_ads_platform_data_thought_leader.rb +1 -1
  353. data/lib/zernio-sdk/models/linked_in_platform_data.rb +1 -1
  354. data/lib/zernio-sdk/models/list_ad_audiences200_response_audiences_inner.rb +1 -1
  355. data/lib/zernio-sdk/models/list_calls200_response_calls_inner.rb +2 -2
  356. data/lib/zernio-sdk/models/list_discord_pinned_messages200_response_data_inner.rb +1 -1
  357. data/lib/zernio-sdk/models/list_google_business_locations200_response_locations_inner.rb +1 -1
  358. data/lib/zernio-sdk/models/list_inbox_comments200_response_data_inner.rb +3 -3
  359. data/lib/zernio-sdk/models/list_inbox_conversations200_response_data_inner.rb +24 -2
  360. data/lib/zernio-sdk/models/list_inbox_reviews200_response_data_inner.rb +6 -6
  361. data/lib/zernio-sdk/models/list_phone_numbers200_response.rb +1 -1
  362. data/lib/zernio-sdk/models/list_phone_numbers200_response_numbers_inner.rb +3 -3
  363. data/lib/zernio-sdk/models/list_sip_trunks200_response.rb +1 -1
  364. data/lib/zernio-sdk/models/list_sms_sender_ids200_response_budget.rb +1 -1
  365. data/lib/zernio-sdk/models/list_whats_app_account_events200_response_events_inner.rb +1 -1
  366. data/lib/zernio-sdk/models/media_item.rb +1 -1
  367. data/lib/zernio-sdk/models/pinterest_platform_data.rb +1 -1
  368. data/lib/zernio-sdk/models/post_analytics.rb +1 -1
  369. data/lib/zernio-sdk/models/purchase_phone_number_request.rb +1 -1
  370. data/lib/zernio-sdk/models/purchase_whats_app_phone_number_request.rb +1 -1
  371. data/lib/zernio-sdk/models/recycling_config.rb +2 -2
  372. data/lib/zernio-sdk/models/reply_to_mention_request.rb +1 -1
  373. data/lib/zernio-sdk/models/retweet_post_request.rb +1 -1
  374. data/lib/zernio-sdk/models/review_webhook_review.rb +1 -1
  375. data/lib/zernio-sdk/models/review_webhook_review_reviewer.rb +1 -1
  376. data/lib/zernio-sdk/models/saved_targeting_audience.rb +1 -1
  377. data/lib/zernio-sdk/models/select_google_business_location200_response_account.rb +1 -1
  378. data/lib/zernio-sdk/models/select_google_business_location_request.rb +2 -2
  379. data/lib/zernio-sdk/models/send_discord_direct_message200_response.rb +1 -1
  380. data/lib/zernio-sdk/models/send_inbox_message200_response_data.rb +1 -1
  381. data/lib/zernio-sdk/models/send_inbox_message_request.rb +3 -3
  382. data/lib/zernio-sdk/models/send_private_reply_to_comment_request.rb +2 -2
  383. data/lib/zernio-sdk/models/send_typing_indicator_request.rb +1 -1
  384. data/lib/zernio-sdk/models/send_whats_app_flow_message_request.rb +1 -1
  385. data/lib/zernio-sdk/models/set_comment_moderation_request.rb +1 -1
  386. data/lib/zernio-sdk/models/set_conversation_thread_control200_response.rb +156 -0
  387. data/lib/zernio-sdk/models/set_conversation_thread_control200_response_control.rb +181 -0
  388. data/lib/zernio-sdk/models/set_conversation_thread_control_request.rb +266 -0
  389. data/lib/zernio-sdk/models/set_whats_app_flows_encryption_key_request.rb +1 -1
  390. data/lib/zernio-sdk/models/set_whatsapp_business_username_request.rb +1 -1
  391. data/lib/zernio-sdk/models/slack_platform_data.rb +1 -1
  392. data/lib/zernio-sdk/models/start_sms_registration_request.rb +1 -1
  393. data/lib/zernio-sdk/models/start_sms_registration_request_campaign.rb +2 -2
  394. data/lib/zernio-sdk/models/submit_phone_number_kyc_request.rb +1 -1
  395. data/lib/zernio-sdk/models/submit_whats_app_number_kyc_request.rb +1 -1
  396. data/lib/zernio-sdk/models/sync_external_posts200_response.rb +1 -1
  397. data/lib/zernio-sdk/models/sync_external_posts_request.rb +1 -1
  398. data/lib/zernio-sdk/models/tracking_tag.rb +3 -3
  399. data/lib/zernio-sdk/models/unblock_whats_app_users_request.rb +1 -1
  400. data/lib/zernio-sdk/models/update_account_request_x_capabilities.rb +2 -2
  401. data/lib/zernio-sdk/models/update_ad_account_request.rb +1 -1
  402. data/lib/zernio-sdk/models/update_ad_request_creative.rb +1 -1
  403. data/lib/zernio-sdk/models/update_ad_set_request_platform_specific_data.rb +1 -1
  404. data/lib/zernio-sdk/models/update_ad_tracking_tags_request_creative.rb +1 -1
  405. data/lib/zernio-sdk/models/update_conversion_destination_request.rb +1 -1
  406. data/lib/zernio-sdk/models/update_gmb_location_request.rb +1 -1
  407. data/lib/zernio-sdk/models/update_inbox_conversation_request.rb +1 -1
  408. data/lib/zernio-sdk/models/update_post_metadata_request.rb +1 -1
  409. data/lib/zernio-sdk/models/update_whats_app_business_profile_request.rb +1 -1
  410. data/lib/zernio-sdk/models/update_whats_app_display_name_request.rb +1 -1
  411. data/lib/zernio-sdk/models/update_whats_app_flow_request.rb +1 -1
  412. data/lib/zernio-sdk/models/update_whats_app_template_by_id_request.rb +1 -1
  413. data/lib/zernio-sdk/models/update_whats_app_template_request.rb +1 -1
  414. data/lib/zernio-sdk/models/update_workflow_request.rb +1 -1
  415. data/lib/zernio-sdk/models/upload_whats_app_flow_json_request.rb +1 -1
  416. data/lib/zernio-sdk/models/upload_whats_app_profile_photo_request1.rb +1 -1
  417. data/lib/zernio-sdk/models/uploaded_or_derived_audience.rb +2 -2
  418. data/lib/zernio-sdk/models/usage_metering.rb +2 -2
  419. data/lib/zernio-sdk/models/usage_metering_peaks.rb +1 -1
  420. data/lib/zernio-sdk/models/usage_stats.rb +2 -2
  421. data/lib/zernio-sdk/models/usage_stats_limits.rb +1 -1
  422. data/lib/zernio-sdk/models/usage_stats_spend.rb +2 -2
  423. data/lib/zernio-sdk/models/usage_stats_usage.rb +3 -3
  424. data/lib/zernio-sdk/models/usage_stats_usage_x_api_calls.rb +1 -1
  425. data/lib/zernio-sdk/models/webhook_payload_ad_status_changed_error.rb +3 -3
  426. data/lib/zernio-sdk/models/webhook_payload_ad_status_changed_status.rb +1 -1
  427. data/lib/zernio-sdk/models/webhook_payload_analytics_synced.rb +1 -1
  428. data/lib/zernio-sdk/models/webhook_payload_analytics_synced_sync.rb +1 -1
  429. data/lib/zernio-sdk/models/webhook_payload_comment.rb +1 -1
  430. data/lib/zernio-sdk/models/webhook_payload_comment_account.rb +2 -2
  431. data/lib/zernio-sdk/models/webhook_payload_comment_post.rb +1 -1
  432. data/lib/zernio-sdk/models/webhook_payload_conversation_control_changed.rb +347 -0
  433. data/lib/zernio-sdk/models/webhook_payload_conversation_control_changed_control.rb +224 -0
  434. data/lib/zernio-sdk/models/webhook_payload_conversation_started.rb +1 -1
  435. data/lib/zernio-sdk/models/webhook_payload_lead_account.rb +2 -2
  436. data/lib/zernio-sdk/models/webhook_payload_message_message_sender.rb +3 -3
  437. data/lib/zernio-sdk/models/webhook_payload_message_metadata.rb +13 -3
  438. data/lib/zernio-sdk/models/webhook_payload_message_sent_message.rb +3 -3
  439. data/lib/zernio-sdk/models/webhook_payload_post_platform.rb +1 -1
  440. data/lib/zernio-sdk/models/webhook_payload_post_platform_account.rb +1 -1
  441. data/lib/zernio-sdk/models/webhook_payload_post_platform_platform.rb +1 -1
  442. data/lib/zernio-sdk/models/webhook_payload_review_new_account.rb +1 -1
  443. data/lib/zernio-sdk/models/workflow_edge.rb +1 -1
  444. data/lib/zernio-sdk/models/workflow_execution_event.rb +1 -1
  445. data/lib/zernio-sdk/models/x_api_operation.rb +2 -2
  446. data/lib/zernio-sdk/models/x_api_operation_triggered_by_inner.rb +1 -1
  447. data/lib/zernio-sdk/models/x_api_pricing.rb +2 -2
  448. data/lib/zernio-sdk/version.rb +1 -1
  449. data/lib/zernio-sdk.rb +7 -0
  450. data/openapi.yaml +1073 -853
  451. data/spec/api/account_groups_api_spec.rb +1 -1
  452. data/spec/api/accounts_api_spec.rb +5 -5
  453. data/spec/api/ad_accounts_api_spec.rb +6 -6
  454. data/spec/api/ad_audiences_api_spec.rb +3 -3
  455. data/spec/api/ad_campaigns_api_spec.rb +30 -30
  456. data/spec/api/ad_creatives_api_spec.rb +10 -10
  457. data/spec/api/ad_insights_api_spec.rb +2 -2
  458. data/spec/api/ad_library_api_spec.rb +1 -1
  459. data/spec/api/ad_targeting_api_spec.rb +3 -3
  460. data/spec/api/analytics_api_spec.rb +11 -11
  461. data/spec/api/comments_api_spec.rb +10 -10
  462. data/spec/api/connect_api_spec.rb +28 -17
  463. data/spec/api/conversions_api_spec.rb +6 -6
  464. data/spec/api/discord_api_spec.rb +9 -9
  465. data/spec/api/gmb_attributes_api_spec.rb +2 -2
  466. data/spec/api/gmb_food_menus_api_spec.rb +2 -2
  467. data/spec/api/gmb_location_details_api_spec.rb +2 -2
  468. data/spec/api/gmb_media_api_spec.rb +1 -1
  469. data/spec/api/gmb_place_actions_api_spec.rb +1 -1
  470. data/spec/api/gmb_reviews_api_spec.rb +4 -4
  471. data/spec/api/inbox_analytics_api_spec.rb +5 -5
  472. data/spec/api/instagram_api_spec.rb +1 -1
  473. data/spec/api/lead_gen_api_spec.rb +2 -2
  474. data/spec/api/linked_in_mentions_api_spec.rb +1 -1
  475. data/spec/api/logs_api_spec.rb +1 -1
  476. data/spec/api/mentions_api_spec.rb +2 -2
  477. data/spec/api/messages_api_spec.rb +28 -15
  478. data/spec/api/messaging_ads_api_spec.rb +1 -1
  479. data/spec/api/phone_numbers_api_spec.rb +12 -12
  480. data/spec/api/posts_api_spec.rb +4 -4
  481. data/spec/api/profiles_api_spec.rb +1 -1
  482. data/spec/api/reach_and_frequency_api_spec.rb +2 -2
  483. data/spec/api/reviews_api_spec.rb +4 -4
  484. data/spec/api/sms_api_spec.rb +10 -10
  485. data/spec/api/tracking_tags_api_spec.rb +6 -6
  486. data/spec/api/twitter_engagement_api_spec.rb +6 -6
  487. data/spec/api/usage_api_spec.rb +7 -7
  488. data/spec/api/users_api_spec.rb +1 -1
  489. data/spec/api/validate_api_spec.rb +2 -2
  490. data/spec/api/verify_api_spec.rb +1 -1
  491. data/spec/api/voice_api_spec.rb +2 -2
  492. data/spec/api/whats_app_api_spec.rb +27 -27
  493. data/spec/api/whats_app_calling_api_spec.rb +2 -2
  494. data/spec/api/whats_app_flows_api_spec.rb +10 -10
  495. data/spec/api/whats_app_phone_numbers_api_spec.rb +10 -10
  496. data/spec/api/whats_app_sandbox_api_spec.rb +2 -2
  497. data/spec/api/whats_app_templates_api_spec.rb +1 -1
  498. data/spec/api/workflows_api_spec.rb +3 -3
  499. data/spec/models/conversation_spec.rb +92 -0
  500. data/spec/models/create_webhook_settings_request_spec.rb +1 -1
  501. data/spec/models/get_whats_app_sdk_config200_response_spec.rb +48 -0
  502. data/spec/models/list_inbox_conversations200_response_data_inner_spec.rb +10 -0
  503. data/spec/models/set_conversation_thread_control200_response_control_spec.rb +40 -0
  504. data/spec/models/set_conversation_thread_control200_response_spec.rb +42 -0
  505. data/spec/models/set_conversation_thread_control_request_spec.rb +62 -0
  506. data/spec/models/update_webhook_settings_request_spec.rb +1 -1
  507. data/spec/models/webhook_payload_conversation_control_changed_control_spec.rb +56 -0
  508. data/spec/models/webhook_payload_conversation_control_changed_spec.rb +76 -0
  509. data/spec/models/webhook_payload_message_metadata_spec.rb +6 -0
  510. data/spec/models/webhook_payload_message_sent_message_spec.rb +1 -1
  511. data/spec/models/webhook_spec.rb +1 -1
  512. data/zernio-sdk-0.0.873.gem +0 -0
  513. metadata +30 -2
  514. data/zernio-sdk-0.0.871.gem +0 -0
data/docs/UsageApi.md CHANGED
@@ -9,7 +9,7 @@ All URIs are relative to *https://zernio.com/api*
9
9
  | [**get_sms_usage**](UsageApi.md#get_sms_usage) | **GET** /v1/usage/sms | SMS usage (volumes) |
10
10
  | [**get_usage**](UsageApi.md#get_usage) | **GET** /v1/usage | Usage snapshot (default) or billed-spend metering (with params) |
11
11
  | [**get_usage_stats**](UsageApi.md#get_usage_stats) | **GET** /v1/usage-stats | Get plan and usage snapshot (plan, limits, payment status) |
12
- | [**get_x_api_pricing**](UsageApi.md#get_x_api_pricing) | **GET** /v1/billing/x-pricing | Get X/Twitter API pricing table |
12
+ | [**get_x_api_pricing**](UsageApi.md#get_x_api_pricing) | **GET** /v1/billing/x-pricing | Get X API pricing table |
13
13
 
14
14
 
15
15
  ## get_billing
@@ -18,7 +18,7 @@ All URIs are relative to *https://zernio.com/api*
18
18
 
19
19
  Account billing snapshot (plan, cycle, balance, caps, status)
20
20
 
21
- The billing \"wallet/statement\" view: current plan, billing cycle, accrued balance + remaining credits this period, spend caps, and payment / access status. This is the billing half of the legacy `/v1/usage-stats` snapshot — the per-product consumption half is metering and lives on `GET /v1/usage`. Usage-based (Metronome) accounts get a populated `balance`; legacy Stripe accounts get `balance: null` plus a deprecated `legacy.limits` block and, when payment-blocked, `status.openInvoiceUrl` / `status.declineReason`.
21
+ The billing \"wallet/statement\" view: current plan, billing cycle, accrued balance + remaining credits this period, spend caps, and payment / access status. This is the billing half of the legacy `/v1/usage-stats` snapshot. The per-product consumption half is metering and lives on `GET /v1/usage`. Accounts on usage-based billing get a populated `balance`; legacy Stripe accounts get `balance: null` plus a deprecated `legacy.limits` block and, when payment-blocked, `status.openInvoiceUrl` / `status.declineReason`.
22
22
 
23
23
  ### Examples
24
24
 
@@ -240,7 +240,7 @@ end
240
240
 
241
241
  Usage snapshot (default) or billed-spend metering (with params)
242
242
 
243
- Dual-mode endpoint, selected by query params — fully backward compatible: **Without metering params (the default):** the plan / quota / usage snapshot — plan name, billing period, limits, usage counts, access state. Identical to `GET /v1/usage-stats`. Existing integrations keep working unchanged. **With `range`, `granularity`, `from`, or `to`:** usage METERING — billed spend (USD) by product family (`accounts`, `numbers`, `calls`, `sms`, `dlc`, `xApi`, `credits`, `other`) over the window, at `day` / `month` / `total` granularity, from Metronome's invoice breakdown (the CHARGE view — always reconciles with what gets billed). Also served at `GET /v1/usage/daily`. Usage-based accounts only — legacy Stripe accounts get `{ \"supported\": false, \"days\": [] }`. **Attribution (metering mode):** `groupBy=profile|account` adds an `attribution` breakdown of the window's spend per profile or account, assembled from your own records and pro-rated against the invoice so `sum(groups) + unattributed` equals `totals` exactly. `profileId` / `accountId` instead project the whole payload (`days`, `totals`, `lineItems`) onto that one group; `peaks`, `callUsage` and `tax` are then `null` (workspace-level facts). Projected `days` spread the group's period share over each day (usage is attributed per period, not per day). Profile-scoped API keys and members only see their profiles' groups (`attribution.restricted: true`, with `totals` summing the visible groups). Credits, 10DLC fees and Verify are always unattributed. `profileId` / `accountId` on their own do not select metering mode: pair them with `range`. For per-domain consumption *volumes* use `GET /v1/usage/calls` and `GET /v1/usage/sms`. For the billing statement (balance, credits, caps, payment status) use `GET /v1/billing`.
243
+ Dual-mode endpoint, selected by query params, and fully backward compatible: **Without metering params (the default):** the plan / quota / usage snapshot: plan name, billing period, limits, usage counts, access state. Identical to `GET /v1/usage-stats`. Existing integrations keep working unchanged. **With `range`, `granularity`, `from`, or `to`:** usage METERING: billed spend (USD) by product family (`accounts`, `numbers`, `calls`, `sms`, `dlc`, `xApi`, `credits`, `other`) over the window, at `day` / `month` / `total` granularity, from the usage-based invoice breakdown (the CHARGE view, which always reconciles with what gets billed). Also served at `GET /v1/usage/daily`. Usage-based accounts only: legacy Stripe accounts get `{ \"supported\": false, \"days\": [] }`. **Attribution (metering mode):** `groupBy=profile|account` adds an `attribution` breakdown of the window's spend per profile or account, assembled from your own records and pro-rated against the invoice so `sum(groups) + unattributed` equals `totals` exactly. `profileId` / `accountId` instead project the whole payload (`days`, `totals`, `lineItems`) onto that one group; `peaks`, `callUsage` and `tax` are then `null` (team-level facts). Projected `days` spread the group's period share over each day (usage is attributed per period, not per day). Profile-scoped API keys and members only see their profiles' groups (`attribution.restricted: true`, with `totals` summing the visible groups). Credits, 10DLC fees and Verify are always unattributed. `profileId` / `accountId` on their own do not select metering mode: pair them with `range`. For per-domain consumption *volumes* use `GET /v1/usage/calls` and `GET /v1/usage/sms`. For the billing statement (balance, credits, caps, payment status) use `GET /v1/billing`.
244
244
 
245
245
  ### Examples
246
246
 
@@ -259,9 +259,9 @@ opts = {
259
259
  range: 'cycle', # String | Window to report. `cycle` / `prev-cycle` resolve to the customer's real billing-period bounds (falling back to a trailing 30 days when no invoice exists yet); `7d`…`12mo` are trailing windows; `custom` uses `from` / `to`.
260
260
  from: Date.parse('2013-10-20'), # Date | Inclusive start (UTC date). Required when `range=custom`.
261
261
  to: Date.parse('2013-10-20'), # Date | Inclusive end (UTC date). Required when `range=custom`. Max span 366 days.
262
- granularity: 'day', # String | Bucketing of the `days` series: `day` (one row per UTC day), `month` (one row per calendar month, dated to the 1st), or `total` (no series — read `totals`). Does not affect `totals`.
262
+ granularity: 'day', # String | Bucketing of the `days` series: `day` (one row per UTC day), `month` (one row per calendar month, dated to the 1st), or `total` (no series, read `totals`). Does not affect `totals`.
263
263
  group_by: 'profile', # String | Metering mode. Adds `attribution`: the window's spend split per profile or per account (keys are ids; resolve names via `GET /v1/profiles` / `GET /v1/accounts`).
264
- profile_id: 'profile_id_example', # String | Metering mode (pair with `range`). Project the payload onto this profile's attributed share. Mutually exclusive with `accountId`, and `groupBy` (if given) must be `profile`; 404 when the profile is not in your workspace (or outside a scoped key's profiles).
264
+ profile_id: 'profile_id_example', # String | Metering mode (pair with `range`). Project the payload onto this profile's attributed share. Mutually exclusive with `accountId`, and `groupBy` (if given) must be `profile`; 404 when the profile is not in your team (or outside a scoped key's profiles).
265
265
  account_id: 'account_id_example' # String | Metering mode (pair with `range`). Project the payload onto this account's attributed share. Mutually exclusive with `profileId`, and `groupBy` (if given) must be `account`; 404 when the account is not visible to the caller.
266
266
  }
267
267
 
@@ -300,9 +300,9 @@ end
300
300
  | **range** | **String** | Window to report. `cycle` / `prev-cycle` resolve to the customer's real billing-period bounds (falling back to a trailing 30 days when no invoice exists yet); `7d`…`12mo` are trailing windows; `custom` uses `from` / `to`. | [optional][default to 'cycle'] |
301
301
  | **from** | **Date** | Inclusive start (UTC date). Required when `range=custom`. | [optional] |
302
302
  | **to** | **Date** | Inclusive end (UTC date). Required when `range=custom`. Max span 366 days. | [optional] |
303
- | **granularity** | **String** | Bucketing of the `days` series: `day` (one row per UTC day), `month` (one row per calendar month, dated to the 1st), or `total` (no series — read `totals`). Does not affect `totals`. | [optional][default to 'day'] |
303
+ | **granularity** | **String** | Bucketing of the `days` series: `day` (one row per UTC day), `month` (one row per calendar month, dated to the 1st), or `total` (no series, read `totals`). Does not affect `totals`. | [optional][default to 'day'] |
304
304
  | **group_by** | **String** | Metering mode. Adds `attribution`: the window's spend split per profile or per account (keys are ids; resolve names via `GET /v1/profiles` / `GET /v1/accounts`). | [optional] |
305
- | **profile_id** | **String** | Metering mode (pair with `range`). Project the payload onto this profile's attributed share. Mutually exclusive with `accountId`, and `groupBy` (if given) must be `profile`; 404 when the profile is not in your workspace (or outside a scoped key's profiles). | [optional] |
305
+ | **profile_id** | **String** | Metering mode (pair with `range`). Project the payload onto this profile's attributed share. Mutually exclusive with `accountId`, and `groupBy` (if given) must be `profile`; 404 when the profile is not in your team (or outside a scoped key's profiles). | [optional] |
306
306
  | **account_id** | **String** | Metering mode (pair with `range`). Project the payload onto this account's attributed share. Mutually exclusive with `profileId`, and `groupBy` (if given) must be `account`; 404 when the account is not visible to the caller. | [optional] |
307
307
 
308
308
  ### Return type
@@ -325,7 +325,7 @@ end
325
325
 
326
326
  Get plan and usage snapshot (plan, limits, payment status)
327
327
 
328
- The plan / quota / payment-status snapshot: current plan name, billing period, plan limits, usage counts, and access state. Identical to a bare `GET /v1/usage` call (this path is its deprecated alias). For billed spend by product, call `GET /v1/usage` with `range` / `granularity` params. The statement view (balance, credits, caps, payment status) lives at `GET /v1/billing`. The response shape depends on the account's `billingSystem`: * Stripe users: per-period `usage.uploads` / `usage.profiles` counters. * Metronome (usage-based) users: `usage.connectedAccounts`, `usage.xApiCallsByOperation` (per-operation X API call counts — resolve keys via `GET /v1/billing/x-pricing`), plus a `spend` block with `currentPeriodCents`, `xSpendCents`, and `xSpendLimitCents`. The legacy `usage.xApiCalls` 3-tier aggregate is still emitted for back-compat but excludes the $0.200 URL tier and any future tiers — new clients should consume `xApiCallsByOperation` only.
328
+ The plan / quota / payment-status snapshot: current plan name, billing period, plan limits, usage counts, and access state. Identical to a bare `GET /v1/usage` call (this path is its deprecated alias). For billed spend by product, call `GET /v1/usage` with `range` / `granularity` params. The statement view (balance, credits, caps, payment status) lives at `GET /v1/billing`. The response shape depends on the account's `billingSystem`: * Stripe users: per-period `usage.uploads` / `usage.profiles` counters. * Usage-based billing users: `usage.connectedAccounts`, `usage.xApiCallsByOperation` (per-operation X API call counts; resolve keys via `GET /v1/billing/x-pricing`), plus a `spend` block with `currentPeriodCents`, `xSpendCents`, and `xSpendLimitCents`. The legacy `usage.xApiCalls` 3-tier aggregate is still emitted for back-compat but excludes the $0.200 URL tier and any future tiers, so new clients should consume `xApiCallsByOperation` only.
329
329
 
330
330
  ### Examples
331
331
 
@@ -394,9 +394,9 @@ end
394
394
 
395
395
  > <XApiPricing> get_x_api_pricing
396
396
 
397
- Get X/Twitter API pricing table
397
+ Get X API pricing table
398
398
 
399
- Returns Zernio's canonical X/Twitter API pricing table. Each X action has its own Metronome product and its own rate, and Zernio passes X API costs through at exact rates with zero markup. The response is identical for every authenticated user (pricing is universal), so it is safe to cache on the client for the duration of a billing period. To compute your own per-operation spend, pair this endpoint with `GET /v1/usage-stats` — that endpoint returns `usage.xApiCallsByOperation` keyed by the same `operation` field you get here.
399
+ Returns Zernio's canonical X API pricing table. Each X action has its own billing product and its own rate, and Zernio passes X API costs through at exact rates with zero markup. The response is identical for every authenticated user (pricing is universal), so it is safe to cache on the client for the duration of a billing period. To compute your own per-operation spend, pair this endpoint with `GET /v1/usage-stats`, which returns `usage.xApiCallsByOperation` keyed by the same `operation` field you get here.
400
400
 
401
401
  ### Examples
402
402
 
@@ -412,7 +412,7 @@ end
412
412
  api_instance = Zernio::UsageApi.new
413
413
 
414
414
  begin
415
- # Get X/Twitter API pricing table
415
+ # Get X API pricing table
416
416
  result = api_instance.get_x_api_pricing
417
417
  p result
418
418
  rescue Zernio::ApiError => e
@@ -428,7 +428,7 @@ This returns an Array which contains the response data, status code and headers.
428
428
 
429
429
  ```ruby
430
430
  begin
431
- # Get X/Twitter API pricing table
431
+ # Get X API pricing table
432
432
  data, status_code, headers = api_instance.get_x_api_pricing_with_http_info
433
433
  p status_code # => 2xx
434
434
  p headers # => { ... }
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **supported** | **Boolean** | False for legacy Stripe accounts (no Metronome invoice to split); &#x60;days&#x60; and &#x60;totals&#x60; are then empty/zero. | [optional] |
7
+ | **supported** | **Boolean** | False for legacy Stripe accounts (no usage-based invoice to split); &#x60;days&#x60; and &#x60;totals&#x60; are then empty/zero. | [optional] |
8
8
  | **granularity** | **String** | | [optional] |
9
9
  | **days** | [**Array&lt;UsageMeteringDaysInner&gt;**](UsageMeteringDaysInner.md) | One row per bucket. Empty when &#x60;granularity&#x3D;total&#x60;. &#x60;date&#x60; is a UTC date (month buckets use the 1st). | [optional] |
10
10
  | **totals** | [**UsageMeteringTotals**](UsageMeteringTotals.md) | | [optional] |
data/docs/UsageStats.md CHANGED
@@ -12,7 +12,7 @@
12
12
  | **has_access** | **Boolean** | True if the account is in good standing. False for past-due/unpaid/paused subscriptions. | [optional] |
13
13
  | **customer_id** | **String** | Stripe customer ID, when present. | [optional] |
14
14
  | **is_invited_user** | **Boolean** | True if this is a team member; limits/usage reflect the account owner. | [optional] |
15
- | **auto_upgrade_enabled** | **Boolean** | Stripe-only. Always false for Metronome users. | [optional] |
15
+ | **auto_upgrade_enabled** | **Boolean** | Stripe-only. Always false for accounts on usage-based billing. | [optional] |
16
16
  | **limits** | [**UsageStatsLimits**](UsageStatsLimits.md) | | [optional] |
17
17
  | **usage** | [**UsageStatsUsage**](UsageStatsUsage.md) | | [optional] |
18
18
  | **spend** | [**UsageStatsSpend**](UsageStatsSpend.md) | | [optional] |
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **current_period_cents** | **Integer** | Total current-period spend in cents (all products combined). | [optional] |
8
8
  | **credits_remaining_cents** | **Integer** | Free-tier credit remaining in cents. Applied before any charge. | [optional] |
9
- | **x_spend_cents** | **Integer** | Current-period X/Twitter API spend in cents, summed from &#x60;xApiCallsByOperation&#x60; × per-operation prices. Tier-agnostic (covers every price including the $0.200 URL tier). Rounded up for conservative enforcement against &#x60;xSpendLimitCents&#x60;. | [optional] |
9
+ | **x_spend_cents** | **Integer** | Current-period X API spend in cents, summed from &#x60;xApiCallsByOperation&#x60; × per-operation prices. Tier-agnostic (covers every price including the $0.200 URL tier). Rounded up for conservative enforcement against &#x60;xSpendLimitCents&#x60;. | [optional] |
10
10
  | **x_spend_limit_cents** | **Integer** | Monthly X spend cap set by the account owner, or null if no cap. When current X spend hits this cap, analytics and inbox sync are auto-paused for X accounts. Publishing is never blocked by this cap. | [optional] |
11
11
 
12
12
  ## Example
@@ -7,9 +7,9 @@
7
7
  | **uploads** | **Integer** | Stripe users only. Uploads consumed in the current period. | [optional] |
8
8
  | **profiles** | **Integer** | Stripe users only. Profiles currently owned. | [optional] |
9
9
  | **last_reset** | **Time** | Stripe users only. | [optional] |
10
- | **connected_accounts** | **Integer** | Metronome users only. Accounts currently connected across the team. | [optional] |
10
+ | **connected_accounts** | **Integer** | Usage-based billing only. Accounts currently connected across the team. | [optional] |
11
11
  | **x_api_calls** | [**UsageStatsUsageXApiCalls**](UsageStatsUsageXApiCalls.md) | | [optional] |
12
- | **x_api_calls_by_operation** | **Hash&lt;String, Integer&gt;** | Metronome users only. Per-operation X API call counts keyed by operation (e.g. &#x60;posts_read&#x60;, &#x60;content_create&#x60;, &#x60;content_create_with_url&#x60;). Resolve each key to price and metadata via &#x60;GET /v1/billing/x-pricing&#x60;. This is the canonical source — covers every price tier including the $0.200 URL tier that &#x60;xApiCalls&#x60; excludes. | [optional] |
12
+ | **x_api_calls_by_operation** | **Hash&lt;String, Integer&gt;** | Usage-based billing only. Per-operation X API call counts keyed by operation (e.g. &#x60;posts_read&#x60;, &#x60;content_create&#x60;, &#x60;content_create_with_url&#x60;). Resolve each key to price and metadata via &#x60;GET /v1/billing/x-pricing&#x60;. This is the canonical source: it covers every price tier including the $0.200 URL tier that &#x60;xApiCalls&#x60; excludes. | [optional] |
13
13
 
14
14
  ## Example
15
15
 
data/docs/UsersApi.md CHANGED
@@ -83,7 +83,7 @@ end
83
83
 
84
84
  List users
85
85
 
86
- Returns all users in the workspace including roles and profile access. Also returns the currentUserId of the caller.
86
+ Returns all users in the team including roles and profile access. Also returns the currentUserId of the caller.
87
87
 
88
88
  ### Examples
89
89
 
data/docs/ValidateApi.md CHANGED
@@ -154,7 +154,7 @@ end
154
154
 
155
155
  Validate character count
156
156
 
157
- Check weighted character count per platform and whether the text is within each platform's limit. Twitter/X uses weighted counting (URLs = 23 chars via t.co, emojis = 2 chars). All other platforms use plain character length. Returns counts and limits for all 15 supported platform variants. X (Twitter) returns two rows and this endpoint cannot tell you which one applies to you: it takes only `text`, so it never resolves an account. `twitter` (280) is the free tier limit. `twitterPremium` (25000) applies only when the target X account has a paid X subscription, and publishing enforces 280 instead for any post carrying a poll (this endpoint has no poll input, so the `twitterPremium` row always shows 25000). A free account trusting the `twitterPremium` row can pass validation here and still fail at publish time, where the account's real limit is enforced. To validate against the per-account limit, use `POST /v1/tools/validate/post` instead: it accepts an `accountId` per platform entry, resolves X Premium status, and checks the text against the limit publishing enforces, including the poll cap. A missing, foreign, or invalid `accountId` falls back to the conservative 280.
157
+ Check weighted character count per platform and whether the text is within each platform's limit. X uses weighted counting (URLs = 23 chars via t.co, emojis = 2 chars). All other platforms use plain character length. Returns counts and limits for all 15 supported platform variants. X returns two rows and this endpoint cannot tell you which one applies to you: it takes only `text`, so it never resolves an account. `twitter` (280) is the free tier limit. `twitterPremium` (25000) applies only when the target X account has a paid X subscription, and publishing enforces 280 instead for any post carrying a poll (this endpoint has no poll input, so the `twitterPremium` row always shows 25000). A free account trusting the `twitterPremium` row can pass validation here and still fail at publish time, where the account's real limit is enforced. To validate against the per-account limit, use `POST /v1/tools/validate/post` instead: it accepts an `accountId` per platform entry, resolves X Premium status, and checks the text against the limit publishing enforces, including the poll cap. A missing, foreign, or invalid `accountId` falls back to the conservative 280.
158
158
 
159
159
  ### Examples
160
160
 
@@ -239,7 +239,7 @@ end
239
239
  api_instance = Zernio::ValidateApi.new
240
240
  name = 'programming' # String | Subreddit name (with or without \"r/\" prefix)
241
241
  opts = {
242
- account_id: 'account_id_example' # String | Reddit social account ID for authenticated lookup (recommended for reliable results)
242
+ account_id: 'account_id_example' # String | Reddit account ID for authenticated lookup (recommended for reliable results)
243
243
  }
244
244
 
245
245
  begin
@@ -274,7 +274,7 @@ end
274
274
  | Name | Type | Description | Notes |
275
275
  | ---- | ---- | ----------- | ----- |
276
276
  | **name** | **String** | Subreddit name (with or without \&quot;r/\&quot; prefix) | |
277
- | **account_id** | **String** | Reddit social account ID for authenticated lookup (recommended for reliable results) | [optional] |
277
+ | **account_id** | **String** | Reddit account ID for authenticated lookup (recommended for reliable results) | [optional] |
278
278
 
279
279
  ### Return type
280
280
 
data/docs/VerifyApi.md CHANGED
@@ -15,7 +15,7 @@ All URIs are relative to *https://zernio.com/api*
15
15
 
16
16
  Check a verification code
17
17
 
18
- Verify the code the user typed. Wrong, expired, and exhausted codes answer 200 with `valid: false` and the settled `status` — only an unknown id is a 404. A correct code consumes the verification (single-use, `status: approved`) and fires the `verification.approved` webhook; the 5th wrong attempt settles it as `max_attempts_reached` and fires `verification.failed`.
18
+ Verify the code the user typed. Wrong, expired, and exhausted codes answer 200 with `valid: false` and the settled `status`. Only an unknown id is a 404. A correct code consumes the verification (single-use, `status: approved`) and fires the `verification.approved` webhook; the 5th wrong attempt settles it as `max_attempts_reached` and fires `verification.failed`.
19
19
 
20
20
  ### Examples
21
21
 
data/docs/VoiceApi.md CHANGED
@@ -101,7 +101,7 @@ end
101
101
 
102
102
  Create a SIP trunk
103
103
 
104
- Creates a SIP trunk an external voice platform (Retell, ElevenLabs, Vapi, or any SIP endpoint) can import your Zernio numbers into. The trunk carries both directions: inbound calls on attached numbers are delivered to `sipHost`, and the platform originates outbound calls through `termination.uri` with the digest credentials. The `digestPassword` is returned only by this call (and by rotate-credentials); store it immediately. Attach any number of numbers to a trunk. Several trunks may point at the same host — each carries its own credentials and spend cap, so separate destination workspaces (e.g. an agency's clients) stay isolated.
104
+ Creates a SIP trunk an external voice platform (Retell, ElevenLabs, Vapi, or any SIP endpoint) can import your Zernio numbers into. The trunk carries both directions: inbound calls on attached numbers are delivered to `sipHost`, and the platform originates outbound calls through `termination.uri` with the digest credentials. The `digestPassword` is returned only by this call (and by rotate-credentials); store it immediately. Attach any number of numbers to a trunk. Several trunks may point at the same host. Each carries its own credentials and spend cap, so separate destinations (e.g. an agency's clients) stay isolated.
105
105
 
106
106
  ### Examples
107
107
 
@@ -243,7 +243,7 @@ end
243
243
 
244
244
  Mint a browser softphone session
245
245
 
246
- Step 1 of the two-step browser softphone handshake. Mints a WebRTC session (token + credential) the browser registers with the `@telnyx/webrtc` SDK. Once registered, call `POST /v1/voice/calls/web/dial` with the returned `credentialId` to place the call. The split avoids bridging to a browser that has not finished registering. The token lives ~1 hour (it must outlive the whole call, not just the handshake).
246
+ Step 1 of the two-step browser softphone handshake. Mints a WebRTC session (token + credential) the browser registers with the `@telnyx/webrtc` SDK. Once registered, call `POST /v1/voice/calls/web/dial` with the returned `credentialId` to place the call. The split avoids bridging to a browser that has not finished registering. The token lives ~1 hour (it must outlive the whole call, not only the handshake).
247
247
 
248
248
  ### Examples
249
249
 
@@ -14,6 +14,7 @@ All URIs are relative to *https://zernio.com/api*
14
14
  | [**on_call_permission_request**](WebhookEventsApi.md#on_call_permission_request) | **POST** /call.permission_request | Call permission request reply event |
15
15
  | [**on_call_received**](WebhookEventsApi.md#on_call_received) | **POST** /call.received | Call received event |
16
16
  | [**on_comment_received**](WebhookEventsApi.md#on_comment_received) | **POST** /comment.received | Comment received event |
17
+ | [**on_conversation_control_changed**](WebhookEventsApi.md#on_conversation_control_changed) | **POST** /conversation.control_changed | Conversation control changed event |
17
18
  | [**on_conversation_started**](WebhookEventsApi.md#on_conversation_started) | **POST** /conversation.started | Conversation started event |
18
19
  | [**on_lead_received**](WebhookEventsApi.md#on_lead_received) | **POST** /lead.received | Lead received event |
19
20
  | [**on_message_deleted**](WebhookEventsApi.md#on_message_deleted) | **POST** /message.deleted | Message deleted event |
@@ -132,7 +133,7 @@ nil (empty response body)
132
133
 
133
134
  Account connected event
134
135
 
135
- Fired when a social account is successfully connected.
136
+ Fired when a account is successfully connected.
136
137
 
137
138
  ### Examples
138
139
 
@@ -200,7 +201,7 @@ nil (empty response body)
200
201
 
201
202
  Account disconnected event
202
203
 
203
- Fired when a connected social account becomes disconnected.
204
+ Fired when a connected account becomes disconnected.
204
205
 
205
206
  ### Examples
206
207
 
@@ -268,7 +269,7 @@ nil (empty response body)
268
269
 
269
270
  Ad status changed event
270
271
 
271
- Fired when a campaign, ad set, or ad on a connected ad platform changes status. Currently emitted only for Meta (`metaads`). Subscribed to two Meta `ad_account` webhook fields: - `in_process_ad_objects` - the ad object finished processing and exited the `IN_PROCESS` state. `status.raw` carries Meta's `status_name` (e.g. `ACTIVE`, `PAUSED`, `ARCHIVED`, `DELETED`). - `with_issues_ad_objects` - the ad object entered the `WITH_ISSUES` state. `status.raw` is set to `WITH_ISSUES` and the `error` block is populated from Meta's `error_code` / `error_summary` / `error_message`. `adObject.level` mirrors Meta's `level` and is one of `CAMPAIGN`, `AD_SET`, or `AD`. Creative-level events are not forwarded. Branch on `status.raw` to handle each transition; use `error.code` (when present) as the stable discriminator — `error.summary` and `error.message` are localized to the ad-account owner's Meta locale. The `error` block is optional. It's present on most `WITH_ISSUES` events but can be absent (Meta does not always include diagnostics), and is never present on any other status. Always null-check `error` before reading `error.code`. **Fan-out:** matching is keyed on `adObject.platformAdAccountId`. When multiple connected Zernio `metaads` accounts are linked to the same Meta ad account, each receives its own delivery.
272
+ Fired when a campaign, ad set, or ad on a connected ad platform changes status. Currently emitted only for Meta (`metaads`). Subscribed to two Meta `ad_account` webhook fields: - `in_process_ad_objects` - the ad object finished processing and exited the `IN_PROCESS` state. `status.raw` carries Meta's `status_name` (e.g. `ACTIVE`, `PAUSED`, `ARCHIVED`, `DELETED`). - `with_issues_ad_objects` - the ad object entered the `WITH_ISSUES` state. `status.raw` is set to `WITH_ISSUES` and the `error` block is populated from Meta's `error_code` / `error_summary` / `error_message`. `adObject.level` mirrors Meta's `level` and is one of `CAMPAIGN`, `AD_SET`, or `AD`. Creative-level events are not forwarded. Branch on `status.raw` to handle each transition; use `error.code` (when present) as the stable discriminator, since `error.summary` and `error.message` are localized to the ad-account owner's Meta locale. The `error` block is optional. It's present on most `WITH_ISSUES` events but can be absent (Meta does not always include diagnostics), and is never present on any other status. Always null-check `error` before reading `error.code`. **Fan-out:** matching is keyed on `adObject.platformAdAccountId`. When multiple connected Zernio `metaads` accounts are linked to the same Meta ad account, each receives its own delivery.
272
273
 
273
274
  ### Examples
274
275
 
@@ -738,13 +739,81 @@ nil (empty response body)
738
739
  - **Accept**: Not defined
739
740
 
740
741
 
742
+ ## on_conversation_control_changed
743
+
744
+ > on_conversation_control_changed(webhook_payload_conversation_control_changed)
745
+
746
+ Conversation control changed event
747
+
748
+ WhatsApp only. Fired when control of a conversation moves between Meta Business Agent and your app (Meta's `messaging_handovers`), or when the agent is first seen answering a thread. While `control.owner` is `ai_agent`, inbound messages arrive on `message.received` with `metadata.standby: true` and the agent's replies on `message.sent` with `source: meta_business_agent`. Sending any message takes control back; release it with `POST /v1/inbox/conversations/{conversationId}/thread-control`.
749
+
750
+ ### Examples
751
+
752
+ ```ruby
753
+ require 'time'
754
+ require 'zernio-sdk'
755
+ # setup authorization
756
+ Zernio.configure do |config|
757
+ # Configure Bearer authorization (JWT): bearerAuth
758
+ config.access_token = 'YOUR_BEARER_TOKEN'
759
+ end
760
+
761
+ api_instance = Zernio::WebhookEventsApi.new
762
+ webhook_payload_conversation_control_changed = # WebhookPayloadConversationControlChanged |
763
+
764
+ begin
765
+ # Conversation control changed event
766
+ api_instance.on_conversation_control_changed(webhook_payload_conversation_control_changed)
767
+ rescue Zernio::ApiError => e
768
+ puts "Error when calling WebhookEventsApi->on_conversation_control_changed: #{e}"
769
+ end
770
+ ```
771
+
772
+ #### Using the on_conversation_control_changed_with_http_info variant
773
+
774
+ This returns an Array which contains the response data (`nil` in this case), status code and headers.
775
+
776
+ > <Array(nil, Integer, Hash)> on_conversation_control_changed_with_http_info(webhook_payload_conversation_control_changed)
777
+
778
+ ```ruby
779
+ begin
780
+ # Conversation control changed event
781
+ data, status_code, headers = api_instance.on_conversation_control_changed_with_http_info(webhook_payload_conversation_control_changed)
782
+ p status_code # => 2xx
783
+ p headers # => { ... }
784
+ p data # => nil
785
+ rescue Zernio::ApiError => e
786
+ puts "Error when calling WebhookEventsApi->on_conversation_control_changed_with_http_info: #{e}"
787
+ end
788
+ ```
789
+
790
+ ### Parameters
791
+
792
+ | Name | Type | Description | Notes |
793
+ | ---- | ---- | ----------- | ----- |
794
+ | **webhook_payload_conversation_control_changed** | [**WebhookPayloadConversationControlChanged**](WebhookPayloadConversationControlChanged.md) | | |
795
+
796
+ ### Return type
797
+
798
+ nil (empty response body)
799
+
800
+ ### Authorization
801
+
802
+ [bearerAuth](../README.md#bearerAuth)
803
+
804
+ ### HTTP request headers
805
+
806
+ - **Content-Type**: application/json
807
+ - **Accept**: Not defined
808
+
809
+
741
810
  ## on_conversation_started
742
811
 
743
812
  > on_conversation_started(webhook_payload_conversation_started)
744
813
 
745
814
  Conversation started event
746
815
 
747
- Fired once when a new conversation begins between one of your connected accounts and a contact, in either direction. Works across every DM platform (Instagram, Messenger/Facebook, Telegram, WhatsApp, Twitter, Reddit, Bluesky). Naturally deduped — a given conversation only fires this event the very first time it appears.
816
+ Fired once when a new conversation begins between one of your connected accounts and a contact, in either direction. Works across every DM platform (Instagram, Messenger/Facebook, Telegram, WhatsApp, X, Reddit, Bluesky). Naturally deduped: a given conversation only fires this event the very first time it appears.
748
817
 
749
818
  ### Examples
750
819
 
@@ -1900,7 +1969,7 @@ nil (empty response body)
1900
1969
 
1901
1970
  Post platform failed event
1902
1971
 
1903
- Fired once per platform target inside a post as that platform fails permanently. Temporary/retryable failures do NOT fire this event — only permanent ones, so retry loops stay quiet. The envelope event (`post.failed` / `post.partial`) fires separately AFTER all platforms have terminated.
1972
+ Fired once per platform target inside a post as that platform fails permanently. Temporary/retryable failures do NOT fire this event, only permanent ones do, so retry loops stay quiet. The envelope event (`post.failed` / `post.partial`) fires separately AFTER all platforms have terminated.
1904
1973
 
1905
1974
  ### Examples
1906
1975
 
@@ -1968,7 +2037,7 @@ nil (empty response body)
1968
2037
 
1969
2038
  Post platform published event
1970
2039
 
1971
- Fired once per platform target inside a post as that platform finishes publishing successfully. Does NOT wait for the post-level rollup — consumers building incremental UIs get notified immediately, even when other platforms on the same post are still processing. The envelope event (`post.published` / `post.partial`) fires separately AFTER all platforms have terminated.
2040
+ Fired once per platform target inside a post as that platform finishes publishing successfully. Does NOT wait for the post-level rollup, so consumers building incremental UIs get notified immediately, even when other platforms on the same post are still processing. The envelope event (`post.published` / `post.partial`) fires separately AFTER all platforms have terminated.
1972
2041
 
1973
2042
  ### Examples
1974
2043
 
@@ -2988,7 +3057,7 @@ nil (empty response body)
2988
3057
 
2989
3058
  WhatsApp number activated event
2990
3059
 
2991
- Fired when a purchased WhatsApp number becomes active and usable — both the synchronous (Tier 1/2) path and the asynchronous regulated (Tier 3/4) path land here. Lets integrators react without polling GET /v1/phone-numbers.
3060
+ Fired when a purchased WhatsApp number becomes active and usable. Both the synchronous (Tier 1/2) path and the asynchronous regulated (Tier 3/4) path land here. Lets integrators react without polling GET /v1/phone-numbers.
2992
3061
 
2993
3062
  ### Examples
2994
3063
 
@@ -4,9 +4,9 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **code** | **String** | Platform-native error code, forwarded verbatim. For Meta this is &#x60;error_code&#x60; as a string. Use as the stable discriminator — &#x60;summary&#x60; and &#x60;message&#x60; are localized. | |
8
- | **summary** | **String** | Short human-readable summary (Meta &#x60;error_summary&#x60;). Localized to the ad-account owner&#39;s Meta locale — display only, do not match on it. | [optional] |
9
- | **message** | **String** | Full human-readable error message (Meta &#x60;error_message&#x60;). Localized — display only. | [optional] |
7
+ | **code** | **String** | Platform-native error code, forwarded verbatim. For Meta this is &#x60;error_code&#x60; as a string. Use as the stable discriminator, since &#x60;summary&#x60; and &#x60;message&#x60; are localized. | |
8
+ | **summary** | **String** | Short human-readable summary (Meta &#x60;error_summary&#x60;). Localized to the ad-account owner&#39;s Meta locale. Display only, do not match on it. | [optional] |
9
+ | **message** | **String** | Full human-readable error message (Meta &#x60;error_message&#x60;). Localized, display only. | [optional] |
10
10
 
11
11
  ## Example
12
12
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **raw** | **String** | Platform-native status string, forwarded verbatim. For Meta this is &#x60;status_name&#x60; from &#x60;in_process_ad_objects&#x60; (e.g. &#x60;ACTIVE&#x60;, &#x60;PAUSED&#x60;, &#x60;PENDING_REVIEW&#x60;, &#x60;ARCHIVED&#x60;, &#x60;DELETED&#x60;, &#x60;DISAPPROVED&#x60;), or &#x60;WITH_ISSUES&#x60; when sourced from &#x60;with_issues_ad_objects&#x60;. Not constrained by an &#x60;enum&#x60; — Meta may add new values. | |
7
+ | **raw** | **String** | Platform-native status string, forwarded verbatim. For Meta this is &#x60;status_name&#x60; from &#x60;in_process_ad_objects&#x60; (e.g. &#x60;ACTIVE&#x60;, &#x60;PAUSED&#x60;, &#x60;PENDING_REVIEW&#x60;, &#x60;ARCHIVED&#x60;, &#x60;DELETED&#x60;, &#x60;DISAPPROVED&#x60;), or &#x60;WITH_ISSUES&#x60; when sourced from &#x60;with_issues_ad_objects&#x60;. Not constrained by an &#x60;enum&#x60;, because Meta may add new values. | |
8
8
 
9
9
  ## Example
10
10
 
@@ -4,8 +4,8 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **String** | Social account ID | |
8
- | **account_id** | **String** | Social account ID (same as id); canonical field for account filtering. | [optional] |
7
+ | **id** | **String** | Account ID | |
8
+ | **account_id** | **String** | Account ID (same as id); canonical field for account filtering. | [optional] |
9
9
  | **platform** | **String** | | |
10
10
  | **username** | **String** | | |
11
11
 
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | Internal post ID (null for posts not published through Zernio) | |
8
8
  | **platform_post_id** | **String** | Platform&#39;s post ID | |
9
- | **content** | **String** | Post text, from our synced copy — no platform call is made on the comment path, so null when the post was never synced. | |
9
+ | **content** | **String** | Post text, from our synced copy. No platform call is made on the comment path, so null when the post was never synced. | |
10
10
  | **image_url** | **String** | Post thumbnail or first media item URL. Platform CDN URLs expire, fetch promptly. | |
11
11
  | **permalink** | **String** | Public URL of the post. Null when no URL was ever stored for it, for example a platform draft or a post recovered without one. | |
12
12
 
@@ -0,0 +1,30 @@
1
+ # Zernio::WebhookPayloadConversationControlChanged
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **id** | **String** | Stable webhook event ID | |
8
+ | **event** | **String** | | |
9
+ | **conversation** | [**WebhookPayloadConversationStartedConversation**](WebhookPayloadConversationStartedConversation.md) | | |
10
+ | **account** | [**InboxWebhookAccount**](InboxWebhookAccount.md) | | |
11
+ | **control** | [**WebhookPayloadConversationControlChangedControl**](WebhookPayloadConversationControlChangedControl.md) | | |
12
+ | **changed_at** | **Time** | | |
13
+ | **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. | |
14
+
15
+ ## Example
16
+
17
+ ```ruby
18
+ require 'zernio-sdk'
19
+
20
+ instance = Zernio::WebhookPayloadConversationControlChanged.new(
21
+ id: null,
22
+ event: null,
23
+ conversation: null,
24
+ account: null,
25
+ control: null,
26
+ changed_at: null,
27
+ timestamp: null
28
+ )
29
+ ```
30
+
@@ -0,0 +1,22 @@
1
+ # Zernio::WebhookPayloadConversationControlChangedControl
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **owner** | **String** | Who answers now. ai_agent: Meta Business Agent; app: you; other: another partner app on the number. | |
8
+ | **previous_owner** | **String** | Owner before this change, null when the thread had never been agent-handled. | |
9
+ | **metadata** | **String** | Free-form string the transferring app attached to the handover, forwarded verbatim. | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'zernio-sdk'
15
+
16
+ instance = Zernio::WebhookPayloadConversationControlChangedControl.new(
17
+ owner: null,
18
+ previous_owner: null,
19
+ metadata: null
20
+ )
21
+ ```
22
+
@@ -4,8 +4,8 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **String** | Social account ID (the facebook account owning the Page) | |
8
- | **account_id** | **String** | Social account ID (same as id); canonical field for account filtering. | [optional] |
7
+ | **id** | **String** | Account ID (the facebook account owning the Page) | |
8
+ | **account_id** | **String** | Account ID (same as id); canonical field for account filtering. | [optional] |
9
9
  | **platform** | **String** | | |
10
10
 
11
11
  ## Example
@@ -9,10 +9,10 @@
9
9
  | **name** | **String** | | [optional] |
10
10
  | **username** | **String** | | [optional] |
11
11
  | **picture** | **String** | | [optional] |
12
- | **phone_number** | **String** | WhatsApp only. Sender&#39;s phone number in E.164 format (with leading &#x60;+&#x60;). **Nullable during the BSUID rollout (April 2026+).** WhatsApp users who adopt a username can message businesses without exposing a phone number — this field is omitted for them. Match by &#x60;businessScopedUserId&#x60; instead. See &#x60;docs/whatsapp-bsuid-migration.md&#x60;. | [optional] |
13
- | **business_scoped_user_id** | **String** | WhatsApp only. Business-scoped user ID (BSUID) — Meta&#39;s canonical identifier for a WhatsApp user within your business. Present when Meta includes it in the inbound payload (rollout in progress since early April 2026). **Recommended primary identity anchor** going forward; fall back to &#x60;phoneNumber&#x60; only when this field is absent. | [optional] |
12
+ | **phone_number** | **String** | WhatsApp only. Sender&#39;s phone number in E.164 format (with leading &#x60;+&#x60;). **Nullable during the BSUID rollout (April 2026+).** WhatsApp users who adopt a username can message businesses without exposing a phone number, so this field is omitted for them. Match by &#x60;businessScopedUserId&#x60; instead. See &#x60;docs/whatsapp-bsuid-migration.md&#x60;. | [optional] |
13
+ | **business_scoped_user_id** | **String** | WhatsApp only. Business-scoped user ID (BSUID), Meta&#39;s canonical identifier for a WhatsApp user within your business. Present when Meta includes it in the inbound payload (rollout in progress since early April 2026). **Recommended primary identity anchor** going forward; fall back to &#x60;phoneNumber&#x60; only when this field is absent. | [optional] |
14
14
  | **parent_business_scoped_user_id** | **String** | WhatsApp only. Parent BSUID for businesses with linked business portfolios. Omitted for standalone portfolios. | [optional] |
15
- | **whatsapp_username** | **String** | WhatsApp only. User&#39;s WhatsApp username (e.g. &#x60;@jane&#x60;). Not a stable identifier — users can change it. Useful for display, not recommended as an identity anchor. | [optional] |
15
+ | **whatsapp_username** | **String** | WhatsApp only. User&#39;s WhatsApp username (e.g. &#x60;@jane&#x60;). Not a stable identifier, because users can change it. Useful for display, not recommended as an identity anchor. | [optional] |
16
16
  | **instagram_profile** | [**WebhookPayloadMessageMessageSenderInstagramProfile**](WebhookPayloadMessageMessageSenderInstagramProfile.md) | | [optional] |
17
17
 
18
18
  ## Example
@@ -4,6 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
+ | **standby** | **Boolean** | WhatsApp only. true when this inbound arrived while Meta Business Agent held the conversation: the agent answers it, and Zernio only observes. Sending a reply takes control back. See conversation.control_changed. | [optional] |
7
8
  | **quoted_message_id** | **String** | Raw platform envelope id (WhatsApp &#x60;context.id&#x60;; Instagram and Facebook Messenger &#x60;reply_to.mid&#x60;) of the message this one is a quote-reply to, forwarded verbatim. It may not equal the stored id of that message (see &#x60;quotedMessage.platformMessageId&#x60;). On outgoing messages the same field appears on &#x60;message.sent&#x60;, but only on some surfaces: see WebhookPayloadMessageSent.metadata.quotedMessageId. | [optional] |
8
9
  | **quoted_message** | [**WebhookPayloadMessageMetadataQuotedMessage**](WebhookPayloadMessageMetadataQuotedMessage.md) | | [optional] |
9
10
  | **quick_reply_payload** | **String** | Payload from a quick reply tap (Facebook/Instagram Messenger). | [optional] |
@@ -24,7 +25,7 @@
24
25
  | **is_story_mention** | **Boolean** | Instagram only. True when the message was generated by an IG user mentioning the account in their own story (&#x60;story_mention&#x60; attachment type). Mutually exclusive in practice with &#x60;storyReply&#x60;. | [optional] |
25
26
  | **referral** | [**WebhookPayloadMessageMetadataReferral**](WebhookPayloadMessageMetadataReferral.md) | | [optional] |
26
27
  | **unsupported** | [**WebhookPayloadMessageMetadataUnsupported**](WebhookPayloadMessageMetadataUnsupported.md) | | [optional] |
27
- | **no_renderable_content** | **Boolean** | Instagram / Facebook Messenger only. Set when the message carries nothing an integrator can render (a &#x60;template&#x60; attachment with no text and no parseable content, or Meta&#39;s own &#x60;is_unsupported&#x60; flag). Sibling of &#x60;unsupported&#x60; above (WhatsApp only, carries Meta&#39;s error code/title/details): this field has no error envelope, just the boolean. Absence means \&quot;not flagged\&quot;, never \&quot;checked and renderable\&quot;. | [optional] |
28
+ | **no_renderable_content** | **Boolean** | Instagram / Facebook Messenger only. Set when the message carries nothing an integrator can render (a &#x60;template&#x60; attachment with no text and no parseable content, or Meta&#39;s own &#x60;is_unsupported&#x60; flag). Sibling of &#x60;unsupported&#x60; above (WhatsApp only, carries Meta&#39;s error code/title/details): this field has no error envelope, only the boolean. Absence means \&quot;not flagged\&quot;, never \&quot;checked and renderable\&quot;. | [optional] |
28
29
 
29
30
  ## Example
30
31
 
@@ -32,6 +33,7 @@
32
33
  require 'zernio-sdk'
33
34
 
34
35
  instance = Zernio::WebhookPayloadMessageMetadata.new(
36
+ standby: null,
35
37
  quoted_message_id: null,
36
38
  quoted_message: null,
37
39
  quick_reply_payload: null,
@@ -14,7 +14,7 @@
14
14
  | **sender** | [**WebhookPayloadMessageSentMessageSender**](WebhookPayloadMessageSentMessageSender.md) | | |
15
15
  | **sent_at** | **Time** | When the message was sent, as reported by the platform and passed through unmodified. Full ISO 8601 date-time: Instagram and Facebook carry millisecond precision, while some platforms (for example WhatsApp and Telegram) report whole seconds. Use this field as the chronological ordering key. If two messages share the same value, fetch the conversation messages with sortOrder&#x3D;desc for the deterministic order. | |
16
16
  | **is_read** | **Boolean** | | |
17
- | **source** | **String** | WhatsApp send origin. whatsapp_business_app when sent from the WhatsApp Business phone app on a Coexistence number; cloud_api when sent through Zernio (dashboard, API, or broadcasts). Absent on non-WhatsApp platforms. Says where WhatsApp saw the send come from, not which Zernio surface produced it: read sentVia for that. | [optional] |
17
+ | **source** | **String** | WhatsApp send origin. whatsapp_business_app when sent from the WhatsApp Business phone app on a Coexistence number; cloud_api when sent through Zernio (dashboard, API, or broadcasts); meta_business_agent when Meta Business Agent answered on the number. Absent on non-WhatsApp platforms. Says where WhatsApp saw the send come from, not which Zernio surface produced it: read sentVia for that. | [optional] |
18
18
  | **sent_via** | **String** | Which Zernio surface produced this message: &#x60;human&#x60; (an operator in the Zernio inbox), &#x60;api&#x60; (a call to this API), &#x60;broadcast&#x60;, &#x60;sequence&#x60;, &#x60;workflow&#x60;, &#x60;comment_automation&#x60;, or &#x60;bulk-api&#x60; (POST /v1/whatsapp/bulk). Same vocabulary as the &#x60;source&#x60; filter on the inbox analytics endpoints, and the same value a later GET on this message returns. Always present, and &#x60;null&#x60; whenever the lineage is unknown: a message sent from the platform&#39;s own app, and every message stored before this field shipped (2026-08). Existing messages are NOT backfilled, so treat &#x60;null&#x60; as \&quot;unknown\&quot;, never as \&quot;sent by a human\&quot;. | [optional] |
19
19
 
20
20
  ## Example
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **id** | **String** | | |
8
- | **account_id** | **String** | Social account ID (same as id); canonical field for account filtering. | [optional] |
8
+ | **account_id** | **String** | Account ID (same as id); canonical field for account filtering. | [optional] |
9
9
  | **platform** | **String** | | |
10
10
  | **username** | **String** | | |
11
11