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
@@ -253,7 +253,7 @@ end
253
253
 
254
254
  Create a hosted KYC link
255
255
 
256
- Create a single-use, 7-day hosted KYC link that your end customer completes WITHOUT a Zernio login — useful when the person who holds the ID and address is not your team. They fill the regulated verification on a Zernio-hosted page; the number provisions under YOUR account once they submit. Only regulated (KYC) countries are valid: a country that does not require KYC returns 400. White-label the page with `branding` (your company name, logo, brand color). Supply `redirect_url` to send the end customer back to your own site after a successful submit (completion params are appended — see below). Listen for the `whatsapp.number.kyc_submitted` webhook to react when the form is completed.
256
+ Create a single-use, 7-day hosted KYC link that your end customer completes WITHOUT a Zernio login. Useful when the person who holds the ID and address is not your team. They fill the regulated verification on a Zernio-hosted page; the number provisions under YOUR account once they submit. Only regulated (KYC) countries are valid: a country that does not require KYC returns 400. White-label the page with `branding` (your company name, logo, brand color). Supply `redirect_url` to send the end customer back to your own site after a successful submit (completion params are appended; see below). Listen for the `whatsapp.number.kyc_submitted` webhook to react when the form is completed.
257
257
 
258
258
  ### Examples
259
259
 
@@ -322,7 +322,7 @@ end
322
322
 
323
323
  Port numbers in
324
324
 
325
- Submit a port-in for one or more existing numbers from another carrier. Creates the carrier order(s), attaches the end-user (current account) info plus the LOA and invoice documents, and submits to the losing carrier. The transfer PIN is forwarded to the carrier and never stored. Ported numbers arrive voice-ready (and SMS-ready where the order supports messaging). Run the portability check (POST /v1/phone-numbers/port-in/check) and upload the two documents (POST /v1/phone-numbers/port-in/documents) first — uploaded documents must be attached to an order within 30 minutes or the carrier deletes them, so upload right before this call. The carrier may split the numbers into several orders (by country, number type, losing carrier); `orders` carries per-order results, and a partial failure still returns 201 with the failed orders' `error` set (they stay as cancellable drafts). Non-US/CA numbers additionally need the country-specific values from GET /v1/phone-numbers/port-in/requirements, passed via `requirements`, and must be submitted one country per request. When required information is still missing after submission, the order is kept as a resumable draft whose `error` / `declineReason` names the gaps.
325
+ Submit a port-in for one or more existing numbers from another carrier. Creates the carrier order(s), attaches the end-user (current account) info plus the LOA and invoice documents, and submits to the losing carrier. The transfer PIN is forwarded to the carrier and never stored. Ported numbers arrive voice-ready (and SMS-ready where the order supports messaging). Run the portability check (POST /v1/phone-numbers/port-in/check) and upload the two documents (POST /v1/phone-numbers/port-in/documents) first. Uploaded documents must be attached to an order within 30 minutes or the carrier deletes them, so upload right before this call. The carrier may split the numbers into several orders (by country, number type, losing carrier); `orders` carries per-order results, and a partial failure still returns 201 with the failed orders' `error` set (they stay as cancellable drafts). Non-US/CA numbers additionally need the country-specific values from GET /v1/phone-numbers/port-in/requirements, passed via `requirements`, and must be submitted one country per request. When required information is still missing after submission, the order is kept as a resumable draft whose `error` / `declineReason` names the gaps.
326
326
 
327
327
  ### Examples
328
328
 
@@ -527,7 +527,7 @@ end
527
527
 
528
528
  Get phone number
529
529
 
530
- Retrieve the current status of a purchased phone number. Poll this to track Meta pre-verification (US sync path) and, for regulated (Tier 3/4) numbers, the async lifecycle: pending_regulatory → active (or regulatory_declined). When a regulated number has an Onfido ID step, `onfidoVerificationUrl` appears here once the order is placed — forward it to the end user. (Or subscribe to the whatsapp.number.* webhooks instead of polling.)
530
+ Retrieve the current status of a purchased phone number. Poll this to track Meta pre-verification (US sync path) and, for regulated (Tier 3/4) numbers, the async lifecycle: pending_regulatory → active (or regulatory_declined). When a regulated number has an Onfido ID step, `onfidoVerificationUrl` appears here once the order is placed. Forward it to the end user. (Or subscribe to the whatsapp.number.* webhooks instead of polling.)
531
531
 
532
532
  ### Examples
533
533
 
@@ -738,7 +738,7 @@ end
738
738
 
739
739
  Country porting requirements
740
740
 
741
- The country-specific information a port-in needs BEYOND the LOA, invoice, and account/address details — e.g. an ID copy, proof of address, a tax id, or a porting code. Call it after the portability check (which returns each number's `countryCode` and `phoneNumberType`), render the fields, and pass the collected values as the create request's `requirements`. US/CA return an empty list.
741
+ The country-specific information a port-in needs BEYOND the LOA, invoice, and account/address details, such as an ID copy, proof of address, a tax id, or a porting code. Call it after the portability check (which returns each number's `countryCode` and `phoneNumberType`), render the fields, and pass the collected values as the create request's `requirements`. US/CA return an empty list.
742
742
 
743
743
  ### Examples
744
744
 
@@ -754,7 +754,7 @@ end
754
754
  api_instance = Zernio::PhoneNumbersApi.new
755
755
  country = 'country_example' # String | ISO country of the numbers being ported (a supported port-in country).
756
756
  opts = {
757
- number_type: 'local' # String | The portability check's phoneNumberType — requirements differ by type.
757
+ number_type: 'local' # String | The portability check's phoneNumberType. Requirements differ by type.
758
758
  }
759
759
 
760
760
  begin
@@ -789,7 +789,7 @@ end
789
789
  | Name | Type | Description | Notes |
790
790
  | ---- | ---- | ----------- | ----- |
791
791
  | **country** | **String** | ISO country of the numbers being ported (a supported port-in country). | |
792
- | **number_type** | **String** | The portability check's phoneNumberType — requirements differ by type. | [optional][default to 'local'] |
792
+ | **number_type** | **String** | The portability check's phoneNumberType. Requirements differ by type. | [optional][default to 'local'] |
793
793
 
794
794
  ### Return type
795
795
 
@@ -811,7 +811,7 @@ end
811
811
 
812
812
  Get declined requirements
813
813
 
814
- For a number in `regulatory_declined`, returns ONLY the requirements the reviewer flagged declined, as a form spec (same shape as the KYC form GET). The customer fixes just those — Telnyx supports correcting a declined requirement group and re-submitting it (no new number/group). Falls back to the full spec if the provider exposes no per-requirement flags.
814
+ For a number in `regulatory_declined`, returns ONLY the requirements the reviewer flagged declined, as a form spec (same shape as the KYC form GET). The customer fixes only those, because Telnyx supports correcting a declined requirement group and re-submitting it (no new number/group). Falls back to the full spec if the provider exposes no per-requirement flags.
815
815
 
816
816
  ### Examples
817
817
 
@@ -1091,7 +1091,7 @@ end
1091
1091
 
1092
1092
  api_instance = Zernio::PhoneNumbersApi.new
1093
1093
  opts = {
1094
- status: 'provisioning', # String | Filter by status (by default excludes released numbers). NOTE: `status=pending_regulatory` returns the \"provisioning\" view — numbers still in review PLUS recently-declined (last 30 days) ones, so a failed registration surfaces (with `regulatoryDeclineReason`) instead of silently disappearing. Declined numbers can be re-submitted via POST /v1/phone-numbers/{id}/remediate. `verifying` is the short-lived state after the number is provisioned on our side while WhatsApp confirms the activation code; the number is not billed until it reaches `active`.
1094
+ status: 'provisioning', # String | Filter by status (by default excludes released numbers). NOTE: `status=pending_regulatory` returns the \"provisioning\" view: numbers still in review PLUS recently-declined (last 30 days) ones, so a failed registration surfaces (with `regulatoryDeclineReason`) instead of silently disappearing. Declined numbers can be re-submitted via POST /v1/phone-numbers/{id}/remediate. `verifying` is the short-lived state after the number is provisioned on our side while WhatsApp confirms the activation code; the number is not billed until it reaches `active`.
1095
1095
  profile_id: 'profile_id_example' # String | Filter by profile
1096
1096
  }
1097
1097
 
@@ -1126,7 +1126,7 @@ end
1126
1126
 
1127
1127
  | Name | Type | Description | Notes |
1128
1128
  | ---- | ---- | ----------- | ----- |
1129
- | **status** | **String** | Filter by status (by default excludes released numbers). NOTE: `status=pending_regulatory` returns the \"provisioning\" view — numbers still in review PLUS recently-declined (last 30 days) ones, so a failed registration surfaces (with `regulatoryDeclineReason`) instead of silently disappearing. Declined numbers can be re-submitted via POST /v1/phone-numbers/{id}/remediate. `verifying` is the short-lived state after the number is provisioned on our side while WhatsApp confirms the activation code; the number is not billed until it reaches `active`. | [optional] |
1129
+ | **status** | **String** | Filter by status (by default excludes released numbers). NOTE: `status=pending_regulatory` returns the \"provisioning\" view: numbers still in review PLUS recently-declined (last 30 days) ones, so a failed registration surfaces (with `regulatoryDeclineReason`) instead of silently disappearing. Declined numbers can be re-submitted via POST /v1/phone-numbers/{id}/remediate. `verifying` is the short-lived state after the number is provisioned on our side while WhatsApp confirms the activation code; the number is not billed until it reaches `active`. | [optional] |
1130
1130
  | **profile_id** | **String** | Filter by profile | [optional] |
1131
1131
 
1132
1132
  ### Return type
@@ -1218,7 +1218,7 @@ end
1218
1218
 
1219
1219
  Release phone number
1220
1220
 
1221
- Release a purchased phone number. This will: 1. Disconnect any linked WhatsApp social account 2. Decrement the Stripe subscription quantity (or cancel if last number) 3. Release the number from Telnyx 4. Mark the number as released
1221
+ Release a purchased phone number. This will: 1. Disconnect any linked WhatsApp account 2. Decrement the Stripe subscription quantity (or cancel if last number) 3. Release the number from Telnyx 4. Mark the number as released
1222
1222
 
1223
1223
  ### Examples
1224
1224
 
@@ -1287,7 +1287,7 @@ end
1287
1287
 
1288
1288
  Resubmit a declined number
1289
1289
 
1290
- Submit corrected values/documents for the declined requirement(s). We PATCH them onto the SAME requirement group and re-submit it for approval; the number goes `regulatory_declined` → `pending_regulatory`. No new number and no new billing. Body shape matches the KYC submit (values / documents / address) — send only the corrected fields.
1290
+ Submit corrected values/documents for the declined requirement(s). We PATCH them onto the SAME requirement group and re-submit it for approval; the number goes `regulatory_declined` → `pending_regulatory`. No new number and no new billing. Body shape matches the KYC submit (values / documents / address). Send only the corrected fields.
1291
1291
 
1292
1292
  ### Examples
1293
1293
 
@@ -1358,7 +1358,7 @@ end
1358
1358
 
1359
1359
  Reply to the regulatory reviewer
1360
1360
 
1361
- Post a free-text reply (with optional file attachments) to the reviewer on a number awaiting remediation — for asks the structured form can't express (e.g. \"is this personal or business?\"). Attachments are stored by us and their links are added to the reviewer's comment thread (the carrier's number order takes no loose files). A reply to a comment-style ask moves the number back to \"in review\"; a reply on a formal decline is supplementary and you must still resubmit the fix. Requires text or at least one attachment.
1361
+ Post a free-text reply (with optional file attachments) to the reviewer on a number awaiting remediation, for asks the structured form can't express (e.g. \"is this personal or business?\"). Attachments are stored by us and their links are added to the reviewer's comment thread (the carrier's number order takes no loose files). A reply to a comment-style ask moves the number back to \"in review\"; a reply on a formal decline is supplementary and you must still resubmit the fix. Requires text or at least one attachment.
1362
1362
 
1363
1363
  ### Examples
1364
1364
 
@@ -1652,7 +1652,7 @@ end
1652
1652
 
1653
1653
  Submit KYC
1654
1654
 
1655
- Submit the end customer's KYC (textual values, uploaded documents, address) for a Tier 3/4 country. Documents are streamed straight to the number provider and are not stored by Zernio. Builds + submits a regulatory requirement group and claims a pending_regulatory slot; the number is ordered + activated once the provider approves (asynchronous). A customer may hold several same-country numbers in review at once; a double-submit of the SAME attempt is deduped via `submissionId`. For an ID-card document requirement, carriers commonly require BOTH sides: combine the front and back into a single file before uploading (the dashboard does this automatically). A one-sided ID is a common decline reason; fix it via POST /v1/phone-numbers/{id}/remediate. Before submitting, call GET /v1/phone-numbers/availability to check the country has deliverable inventory and, for geographic-match countries, which area the address must be in — otherwise the submission can pass review yet never be assignable a number.
1655
+ Submit the end customer's KYC (textual values, uploaded documents, address) for a Tier 3/4 country. Documents are streamed straight to the number provider and are not stored by Zernio. Builds + submits a regulatory requirement group and claims a pending_regulatory slot; the number is ordered + activated once the provider approves (asynchronous). A customer may hold several same-country numbers in review at once; a double-submit of the SAME attempt is deduped via `submissionId`. For an ID-card document requirement, carriers commonly require BOTH sides: combine the front and back into a single file before uploading (the dashboard does this automatically). A one-sided ID is a common decline reason; fix it via POST /v1/phone-numbers/{id}/remediate. Before submitting, call GET /v1/phone-numbers/availability to check the country has deliverable inventory and, for geographic-match countries, which area the address must be in. Otherwise the submission can pass review yet never be assignable a number.
1656
1656
 
1657
1657
  ### Examples
1658
1658
 
@@ -1934,7 +1934,7 @@ end
1934
1934
 
1935
1935
  View a KYC document on file
1936
1936
 
1937
- Stream a document backing a reusable verification (the `documentId` values from GET /v1/phone-numbers/kyc `reusable.options[].details[]`), so the account holder can see what's on file before reusing it. Returned inline as `application/pdf` (uploads are normalized to PDF). Auth-scoped: a document is viewable only when its id is referenced by one of the caller's own numbers — otherwise `404`.
1937
+ Stream a document backing a reusable verification (the `documentId` values from GET /v1/phone-numbers/kyc `reusable.options[].details[]`), so the account holder can see what's on file before reusing it. Returned inline as `application/pdf` (uploads are normalized to PDF). Auth-scoped: a document is viewable only when its id is referenced by one of the caller's own numbers. Otherwise `404`.
1938
1938
 
1939
1939
  ### Examples
1940
1940
 
@@ -10,7 +10,7 @@
10
10
  | **link** | **String** | Destination link (pin URL) | [optional] |
11
11
  | **cover_image_url** | **String** | Optional cover image for video pins | [optional] |
12
12
  | **cover_image_key_frame_time** | **Integer** | Optional key frame time in seconds for derived video cover | [optional] |
13
- | **is_ai_generated** | **Boolean** | When true, the Pin is created with Pinterest's AI_MODIFIED disclosure (ai_disclosures), which shows an \"AI modified\" label. Applies to image and video Pins. Pinterest offers no \"not AI\" value, so false simply omits the disclosure. Pinterest may still label a Pin on its own detection. | [optional][default to false] |
13
+ | **is_ai_generated** | **Boolean** | When true, the Pin is created with Pinterest's AI_MODIFIED disclosure (ai_disclosures), which shows an \"AI modified\" label. Applies to image and video Pins. Pinterest offers no \"not AI\" value, so false omits the disclosure. Pinterest may still label a Pin on its own detection. | [optional][default to false] |
14
14
 
15
15
  ## Example
16
16
 
@@ -9,7 +9,7 @@
9
9
  | **likes** | **Integer** | | [optional] |
10
10
  | **comments** | **Integer** | | [optional] |
11
11
  | **shares** | **Integer** | | [optional] |
12
- | **saves** | **Integer** | Number of saves/bookmarks (Instagram, Pinterest, X/Twitter) | [optional] |
12
+ | **saves** | **Integer** | Number of saves/bookmarks (Instagram, Pinterest, X) | [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. Null on Instagram Reels and non-Reels video, where Meta does not expose this metric for the media. 0 for other platforms. | [optional] |
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, all platforms have `customContent`, every platform entry is an X Article (`platformSpecificData.article`), or every platform entry is a LinkedIn text-free reshare (`platformSpecificData.reshareUrl` with no text). See each platform's schema for media constraints. ## Scheduling Pick one of `scheduledFor` (schedule), `publishNow: true` (publish synchronously) or `queuedFromProfile` (next queue slot). With none of them and `isDraft` unset, the post is saved as a draft. `platforms` is required unless the post is a draft. `isDraft: true` wins over `publishNow` and `scheduledFor` (the post is saved, never published); `publishNow: true` wins over `scheduledFor`. A `scheduledFor` already in the past is not rejected: the post is published synchronously in the same request, exactly like `publishNow`. ## Idempotency 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 a post, and optionally publish it in the same request. A post published immediately (`publishNow: true`) comes back with `platformPostUrl` in the response. `content` is optional in four cases: - media is attached - all platforms have `customContent` - every platform entry is an X Article (`platformSpecificData.article`) - every platform entry is a LinkedIn text-free reshare (`platformSpecificData.reshareUrl` with no text) See each platform's schema for media constraints. ## Scheduling Pick one of: - `scheduledFor`: publish at the scheduled time - `publishNow: true`: publish synchronously, inside this request - `queuedFromProfile`: publish in the profile's next queue slot With none of them and `isDraft` unset, the post is saved as a draft. `platforms` is required unless the post is a draft. Precedence: `isDraft: true` wins over `publishNow` and `scheduledFor` (the post is saved, never published), and `publishNow: true` wins over `scheduledFor`. A `scheduledFor` already in the past is not rejected: the post is published synchronously in the same request, exactly like `publishNow`. ## Idempotency 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, and no new post is created. The official Zernio SDKs auto-generate a unique `x-request-id` per call. On a generic HTTP client (curl, n8n's HTTP node, Zapier, custom code), either: - Set a unique `x-request-id` per logical call (recommended, UUIDv4 is fine) - Or omit the header, and 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`. The response carries `error`, `accountId`, `platform`, and `existingPostId` so you can find the original. To intentionally re-post identical content within 24h, change something (the caption, the media, the account), because the dedup is keyed on the full content fingerprint. Order: 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
 
@@ -237,7 +237,7 @@ end
237
237
 
238
238
  Edit published post
239
239
 
240
- Edit the text of an already-published post. Supported on X (Twitter), Discord, Facebook, Reddit, LinkedIn, Telegram, Pinterest, Google Business Profile, YouTube, and Slack. When a post was published to several accounts on the same platform, pass `accountId` to pick which account's copy to edit (the first entry is edited otherwise). Each platform enforces its own rules: **X (Twitter)** - Connected X account must have an active X Premium subscription - Must be within 1 hour of original publish time - Maximum 5 edits per tweet (enforced by X) - Threads cannot be edited, only single tweets - X assigns a NEW post ID on edit, returned as `id` **Discord** - No time limit and no premium requirement - The message ID is unchanged after the edit **Facebook** - Graph only permits editing a post that the same app created, so this works on posts published through Zernio and is rejected for posts created in Meta Business Suite / Composer or by another tool - Media cannot be swapped, only the message text - Reactions, comments, and shares are preserved. The post ID is unchanged **Reddit** - Self-posts only. A link post has no editable body and is rejected before the write - Body only. Reddit exposes no API to edit a post title, ever - The post ID is unchanged **LinkedIn** - Text only, no time limit. Media, polls, articles, and reshare targets cannot be changed - Works for member and organization posts published through this API. The post keeps its ID and LinkedIn shows an \"edited\" marker - Text is limited to 3,000 characters; mentions and hashtags are preserved **Telegram** - No time limit; messages published through Zernio are editable indefinitely - Text posts: edits the message text (up to 4096 characters) - Media posts: edits the caption only (up to 1024 characters). The media itself cannot be swapped - For albums, the caption shown on the album (its first message) is edited - The message ID is unchanged **Pinterest** - Description only, maximum 800 characters. Media, link, and board cannot be changed, and a pin title derived from the old content's first line at publish stays as-is - Pinterest's pin-update endpoint is currently in closed beta; until the app is allowlisted by Pinterest, edits are rejected with a \"beta feature not yet enabled\" error - The pin ID is unchanged **Google Business Profile** - Post body (summary) text only. Call-to-action, event/offer fields, and media are untouched - No time limit and no edit limit. The post ID is unchanged - The post must still exist on Google: a post deleted from the Business Profile dashboard, or an event/offer post past its end date, returns a 404 **YouTube** - `content` replaces the video description only. The title is unchanged, even if it was originally derived from the content's first line at publish time - Title, tags, thumbnail, and privacy edits belong to `POST /v1/posts/{postId}/update-metadata` - No time window and no edit cap. The video ID is unchanged **Slack** - Text only, up to 4,000 characters. Media cannot be swapped, and media posts whose share message reference never resolved cannot be edited - No time limit unless workspace admins restrict message editing - The message ID is unchanged Media edits are not supported on any platform. The post record in Zernio is updated with the new content and an edit-history entry.
240
+ Edit the text of an already-published post. Supported on X, Discord, Facebook, Reddit, LinkedIn, Telegram, Pinterest, Google Business Profile, YouTube, and Slack. When a post was published to several accounts on the same platform, pass `accountId` to pick which account's copy to edit (the first entry is edited otherwise). Each platform enforces its own rules: **X** - Connected X account must have an active X Premium subscription - Must be within 1 hour of original publish time - Maximum 5 edits per tweet (enforced by X) - Threads cannot be edited, only single tweets - X assigns a NEW post ID on edit, returned as `id` **Discord** - No time limit and no premium requirement - The message ID is unchanged after the edit **Facebook** - Graph only permits editing a post that the same app created, so this works on posts published through Zernio and is rejected for posts created in Meta Business Suite / Composer or by another tool - Media cannot be swapped, only the message text - Reactions, comments, and shares are preserved. The post ID is unchanged **Reddit** - Self-posts only. A link post has no editable body and is rejected before the write - Body only. Reddit exposes no API to edit a post title, ever - The post ID is unchanged **LinkedIn** - Text only, no time limit. Media, polls, articles, and reshare targets cannot be changed - Works for member and organization posts published through this API. The post keeps its ID and LinkedIn shows an \"edited\" marker - Text is limited to 3,000 characters; mentions and hashtags are preserved **Telegram** - No time limit; messages published through Zernio are editable indefinitely - Text posts: edits the message text (up to 4096 characters) - Media posts: edits the caption only (up to 1024 characters). The media itself cannot be swapped - For albums, the caption shown on the album (its first message) is edited - The message ID is unchanged **Pinterest** - Description only, maximum 800 characters. Media, link, and board cannot be changed, and a pin title derived from the old content's first line at publish stays as-is - Pinterest's pin-update endpoint is currently in closed beta; until the app is allowlisted by Pinterest, edits are rejected with a \"beta feature not yet enabled\" error - The pin ID is unchanged **Google Business Profile** - Post body (summary) text only. Call-to-action, event/offer fields, and media are untouched - No time limit and no edit limit. The post ID is unchanged - The post must still exist on Google: a post deleted from the Business Profile dashboard, or an event/offer post past its end date, returns a 404 **YouTube** - `content` replaces the video description only. The title is unchanged, even if it was originally derived from the content's first line at publish time - Title, tags, thumbnail, and privacy edits belong to `POST /v1/posts/{postId}/update-metadata` - No time window and no edit cap. The video ID is unchanged **Slack** - Text only, up to 4,000 characters. Media cannot be swapped, and media posts whose share message reference never resolved cannot be edited - No time limit unless workspace admins restrict message editing - The message ID is unchanged Media edits are not supported on any platform. The post record in Zernio is updated with the new content and an edit-history entry.
241
241
 
242
242
  ### Examples
243
243
 
@@ -404,7 +404,7 @@ opts = {
404
404
  include_hidden: true, # Boolean |
405
405
  search: 'search_example', # String | Search posts by text content.
406
406
  sort_by: 'scheduled-desc', # String | Sort order for results.
407
- account_id: 'account_id_example' # String | Filter posts to those published via a specific social account (24-char hex ObjectId).
407
+ account_id: 'account_id_example' # String | Filter posts to those published via a specific account (24-char hex ObjectId).
408
408
  }
409
409
 
410
410
  begin
@@ -450,7 +450,7 @@ end
450
450
  | **include_hidden** | **Boolean** | | [optional][default to false] |
451
451
  | **search** | **String** | Search posts by text content. | [optional] |
452
452
  | **sort_by** | **String** | Sort order for results. | [optional][default to 'scheduled-desc'] |
453
- | **account_id** | **String** | Filter posts to those published via a specific social account (24-char hex ObjectId). | [optional] |
453
+ | **account_id** | **String** | Filter posts to those published via a specific account (24-char hex ObjectId). | [optional] |
454
454
 
455
455
  ### Return type
456
456
 
@@ -683,7 +683,7 @@ end
683
683
 
684
684
  Update post metadata
685
685
 
686
- Updates metadata of a published video on the specified platform without re-uploading. Currently only supported for YouTube. At least one updatable field is required. Two modes: 1. Post-based (video published through Zernio): pass the Zernio postId in the URL and platform in the body. 2. Direct video ID (video uploaded outside Zernio, e.g. directly to YouTube): use _ as the postId, and pass videoId + accountId + platform in the body. The accountId is the Zernio social account ID for the connected YouTube channel.
686
+ Updates metadata of a published video on the specified platform without re-uploading. Currently only supported for YouTube. At least one updatable field is required. Two modes: 1. Post-based (video published through Zernio): pass the Zernio postId in the URL and platform in the body. 2. Direct video ID (video uploaded outside Zernio, e.g. directly to YouTube): use _ as the postId, and pass videoId + accountId + platform in the body. The accountId is the Zernio account ID for the connected YouTube channel.
687
687
 
688
688
  ### Examples
689
689
 
data/docs/ProfilesApi.md CHANGED
@@ -17,7 +17,7 @@ All URIs are relative to *https://zernio.com/api*
17
17
 
18
18
  Create profile
19
19
 
20
- Creates a new profile with a name, optional description, and color. Names are unique per workspace: a duplicate returns a 409 whose details.existingProfileId carries the id of the existing profile. Send an Idempotency-Key header to make retries safe: a retried create with the same key and body replays the original 201 (same _id) instead of conflicting.
20
+ Creates a new profile with a name, optional description, and color. Names are unique per team: a duplicate returns a 409 whose details.existingProfileId carries the id of the existing profile. Send an Idempotency-Key header to make retries safe: a retried create with the same key and body replays the original 201 (same _id) instead of conflicting.
21
21
 
22
22
  ### Examples
23
23
 
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **profile_id** | **String** | Preferred profile for the number. One number = one profile, so when the requested profile already holds a number the API assigns the next free profile instead (or creates one) and returns the actual assignment in `profileId` on the response. | |
8
- | **country** | **String** | ISO 3166-1 alpha-2 country for the number (default US). International numbers require usage-based billing. Tier 3/4 countries return 202 { status: \"kyc_required\", kycUrl } — the customer must complete KYC at that URL before the number is ordered. See GET /v1/phone-numbers/countries. | [optional][default to 'US'] |
8
+ | **country** | **String** | ISO 3166-1 alpha-2 country for the number (default US). International numbers require usage-based billing. Tier 3/4 countries return 202 { status: \"kyc_required\", kycUrl }. The customer must complete KYC at that URL before the number is ordered. See GET /v1/phone-numbers/countries. | [optional][default to 'US'] |
9
9
  | **number_type** | **String** | Which of the country's offered number types to order (see `types[]` on GET /v1/phone-numbers/countries). Omitted = the country's default type, which is always the WhatsApp-safe choice. Capabilities, price, and KYC requirements are per (country, type): toll_free can never connect WhatsApp (400 when combined with connectWhatsapp:true), and wantsSms:true requires an SMS-capable type. | [optional] |
10
10
  | **area_code** | **String** | Area code (national destination code, e.g. 11 for Sao Paulo) the number must be in. Hard constraint: when the area has no deliverable inventory the purchase fails with 409 code AREA_CODE_UNAVAILABLE instead of assigning a number from another area, and later replacements stay in this area too. Omit for any area. Get live options from GET /v1/phone-numbers/availability (areaOptions). | [optional] |
11
11
  | **connect_whatsapp** | **Boolean** | A phone number is the unit; WhatsApp is one optional feature. Pass false to buy a STANDALONE number (Calls/SMS only): provisioning skips the Meta pre-verify/OTP steps and the number activates immediately. Omitted defaults to the WhatsApp provisioning path. WhatsApp can be connected to a standalone number later from the connect flow. | [optional][default to true] |
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **profile_id** | **String** | Profile to associate the number with | |
8
- | **country** | **String** | ISO 3166-1 alpha-2 country for the number (default US). International numbers require usage-based billing. Tier 3/4 countries return 202 { status: \"kyc_required\", kycUrl } — the customer must complete KYC at that URL before the number is ordered. See GET /v1/whatsapp/phone-numbers/countries. | [optional][default to 'US'] |
8
+ | **country** | **String** | ISO 3166-1 alpha-2 country for the number (default US). International numbers require usage-based billing. Tier 3/4 countries return 202 { status: \"kyc_required\", kycUrl }. The customer must complete KYC at that URL before the number is ordered. See GET /v1/whatsapp/phone-numbers/countries. | [optional][default to 'US'] |
9
9
  | **purchase_intent_id** | **String** | Optional idempotency key. Send the same value when retrying a purchase: if a number was already bought under this key, the API returns { status: \"already_purchased\", numberId, phoneNumber } instead of provisioning a second number. Generate a fresh key for each genuinely new purchase. | [optional] |
10
10
  | **allow_multiple** | **Boolean** | Any second purchase within 10 minutes of a previous one is rejected with 409 code PURCHASE_VELOCITY as duplicate protection. Pass true to confirm the additional purchase is intentional (e.g. bulk provisioning). | [optional][default to false] |
11
11
 
@@ -88,7 +88,7 @@ nil (empty response body)
88
88
 
89
89
  Create a Reach & Frequency prediction
90
90
 
91
- Creates an R&F prediction — a QUOTE, nothing is bought and no ad entities are created. Provide a date range plus exactly one of `budgetAmount` (Meta predicts reach) or `reach` (Meta predicts the budget). The response carries the estimate and its allowed bounds (min/max budget and reach). Predictions expire on their own; to buy, reserve one via POST /v1/ads/rf-predictions/{predictionId}/reserve and pass the RESERVED id to POST /v1/ads/create with `buyingType: \"RESERVED\"`. Reservation campaigns reject automatic placements. Top-level `placements` wins; when it is omitted, `targeting.placements` is used; when neither is set, placements default to Facebook feed (+ Instagram stream when a linked IG professional account resolves). Instagram placements require that IG account.
91
+ Creates an R&F prediction. This is a QUOTE, nothing is bought and no ad entities are created. Provide a date range plus exactly one of `budgetAmount` (Meta predicts reach) or `reach` (Meta predicts the budget). The response carries the estimate and its allowed bounds (min/max budget and reach). Predictions expire on their own; to buy, reserve one via POST /v1/ads/rf-predictions/{predictionId}/reserve and pass the RESERVED id to POST /v1/ads/create with `buyingType: \"RESERVED\"`. Reservation campaigns reject automatic placements. Top-level `placements` wins; when it is omitted, `targeting.placements` is used; when neither is set, placements default to Facebook feed (+ Instagram stream when a linked IG professional account resolves). Instagram placements require that IG account.
92
92
 
93
93
  ### Examples
94
94
 
@@ -228,7 +228,7 @@ end
228
228
 
229
229
  Reserve a Reach & Frequency prediction
230
230
 
231
- Locks the quoted price + inventory until the returned `expiresAt` and mints a NEW prediction id — pass that RESERVED id (not the original) as `rfPredictionId` on POST /v1/ads/create. Release an unused reservation via DELETE.
231
+ Locks the quoted price + inventory until the returned `expiresAt` and mints a NEW prediction id. Pass that RESERVED id (not the original) as `rfPredictionId` on POST /v1/ads/create. Release an unused reservation via DELETE.
232
232
 
233
233
  ### Examples
234
234
 
@@ -10,7 +10,7 @@
10
10
  | **start_date** | **Time** | When to start the recycling cycle. Defaults to the post's scheduledFor date. | [optional] |
11
11
  | **expire_count** | **Integer** | Stop recycling after this many copies have been created. Send null on update to clear this limit. | [optional] |
12
12
  | **expire_date** | **Time** | Stop recycling after this date, regardless of count. Send null on update to clear this limit. | [optional] |
13
- | **content_variations** | **Array<String>** | Array of content variations for recycled copies. On each recycle, the next variation is used in round-robin order. Recommended for Twitter and Pinterest to avoid duplicate content flags. If omitted, the original post content is used for all recycled copies. Send an empty array [] to clear existing variations. Must have 2+ entries when setting variations. Platform-level customContent still overrides the base content per platform. | [optional] |
13
+ | **content_variations** | **Array<String>** | Array of content variations for recycled copies. On each recycle, the next variation is used in round-robin order. Recommended for X and Pinterest to avoid duplicate content flags. If omitted, the original post content is used for all recycled copies. Send an empty array [] to clear existing variations. Must have 2+ entries when setting variations. Platform-level customContent still overrides the base content per platform. | [optional] |
14
14
 
15
15
  ## Example
16
16
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **account_id** | **String** | The Instagram social account ID | |
7
+ | **account_id** | **String** | The Instagram account ID | |
8
8
  | **media_id** | **String** | The ID of the media the account was mentioned in | |
9
9
  | **comment_id** | **String** | The mentioning comment's ID. Omit for a caption mention. | [optional] |
10
10
  | **message** | **String** | The reply text | |
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **account_id** | **String** | The social account ID | |
7
+ | **account_id** | **String** | The account ID | |
8
8
  | **tweet_id** | **String** | The ID of the tweet to retweet | |
9
9
 
10
10
  ## Example
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **String** | Platform review ID (e.g. \"accounts/123/locations/456/reviews/789\" for Google Business). | |
7
+ | **id** | **String** | Platform review ID (e.g. \"accounts/123/locations/456/reviews/789\" for Google Business Profile). | |
8
8
  | **platform** | **String** | Platform the review originated on. Currently Google Business Profile only. | |
9
9
  | **rating** | **Integer** | Star rating the reviewer gave. | |
10
10
  | **text** | **String** | Review text content. May be empty if the reviewer left only a rating. | |
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **String** | Platform reviewer ID. Null when the platform does not expose it (common on Google Business anonymous reviews). | |
7
+ | **id** | **String** | Platform reviewer ID. Null when the platform does not expose it (common on Google Business Profile anonymous reviews). | |
8
8
  | **name** | **String** | | |
9
9
  | **profile_image** | **String** | | |
10
10
 
data/docs/ReviewsApi.md CHANGED
@@ -15,7 +15,7 @@ All URIs are relative to *https://zernio.com/api*
15
15
 
16
16
  Delete review reply
17
17
 
18
- Delete a reply to a review (Google Business only). Requires accountId in request body.
18
+ Delete a reply to a review (Google Business Profile only). Requires accountId in request body.
19
19
 
20
20
  ### Examples
21
21
 
@@ -86,7 +86,7 @@ end
86
86
 
87
87
  List reviews
88
88
 
89
- Fetch reviews from all connected Facebook Pages and Google Business accounts. Aggregates data with filtering and sorting options. Supported platforms: Facebook, Google Business.
89
+ Fetch reviews from all connected Facebook Pages and Google Business Profile accounts. Aggregates data with filtering and sorting options. Supported platforms: Facebook, Google Business Profile.
90
90
 
91
91
  ### Examples
92
92
 
@@ -110,7 +110,7 @@ opts = {
110
110
  sort_order: 'asc', # String |
111
111
  limit: 56, # Integer |
112
112
  cursor: 'cursor_example', # String |
113
- account_id: 'account_id_example' # String | Filter by specific social account ID
113
+ account_id: 'account_id_example' # String | Filter by specific account ID
114
114
  }
115
115
 
116
116
  begin
@@ -153,7 +153,7 @@ end
153
153
  | **sort_order** | **String** | | [optional][default to 'desc'] |
154
154
  | **limit** | **Integer** | | [optional][default to 25] |
155
155
  | **cursor** | **String** | | [optional] |
156
- | **account_id** | **String** | Filter by specific social account ID | [optional] |
156
+ | **account_id** | **String** | Filter by specific account ID | [optional] |
157
157
 
158
158
  ### Return type
159
159
 
@@ -189,7 +189,7 @@ Zernio.configure do |config|
189
189
  end
190
190
 
191
191
  api_instance = Zernio::ReviewsApi.new
192
- review_id = 'review_id_example' # String | Review ID (URL-encoded for Google Business)
192
+ review_id = 'review_id_example' # String | Review ID (URL-encoded for Google Business Profile)
193
193
  reply_to_inbox_review_request = Zernio::ReplyToInboxReviewRequest.new({account_id: 'account_id_example', message: 'message_example'}) # ReplyToInboxReviewRequest |
194
194
  opts = {
195
195
  idempotency_key: 'idempotency_key_example' # String | Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409.
@@ -226,7 +226,7 @@ end
226
226
 
227
227
  | Name | Type | Description | Notes |
228
228
  | ---- | ---- | ----------- | ----- |
229
- | **review_id** | **String** | Review ID (URL-encoded for Google Business) | |
229
+ | **review_id** | **String** | Review ID (URL-encoded for Google Business Profile) | |
230
230
  | **reply_to_inbox_review_request** | [**ReplyToInboxReviewRequest**](ReplyToInboxReviewRequest.md) | | |
231
231
  | **idempotency_key** | **String** | Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409. | [optional] |
232
232
 
data/docs/SMSApi.md CHANGED
@@ -105,7 +105,7 @@ end
105
105
 
106
106
  Create an alphanumeric sender ID
107
107
 
108
- Registers an alphanumeric sender ID (e.g. `ZERNIO`) — a branded `from` for one-way international SMS. No phone number purchase or carrier registration is needed; once created, pass it as `from` on `POST /v1/sms/messages`. Constraints: 3-11 characters (letters, digits, spaces; at least one letter). Sends cannot reach the US, Canada, or Puerto Rico, are text-only, and recipients cannot reply. Sender IDs that impersonate well-known brands or institutions are rejected. Names are not exclusive: the same sender ID can be registered by any number of workspaces. Creating the same sender ID again is a no-op (re-activates it after a delete).
108
+ Registers an alphanumeric sender ID (e.g. `ZERNIO`), a branded `from` for one-way international SMS. No phone number purchase or carrier registration is needed; once created, pass it as `from` on `POST /v1/sms/messages`. Constraints: 3-11 characters (letters, digits, spaces; at least one letter). Sends cannot reach the US, Canada, or Puerto Rico, are text-only, and recipients cannot reply. Sender IDs that impersonate well-known brands or institutions are rejected. Names are not exclusive: the same sender ID can be registered by any number of teams. Creating the same sender ID again is a no-op (re-activates it after a delete).
109
109
 
110
110
  ### Examples
111
111
 
@@ -174,7 +174,7 @@ end
174
174
 
175
175
  Deactivate a brand/campaign registration
176
176
 
177
- Terminates the campaign with the carrier registry so the recurring monthly campaign fee stops (carriers bill the first 3 months of a campaign regardless). Numbers covered by it can no longer SEND texts — receiving is unaffected — until they're registered under a new brand. Irreversible: a deactivated campaign cannot be restored; texting again later requires a new registration (new one-time and review fees). Idempotent.
177
+ Terminates the campaign with the carrier registry so the recurring monthly campaign fee stops (carriers bill the first 3 months of a campaign regardless). Numbers covered by it can no longer SEND texts (receiving is unaffected) until they're registered under a new brand. Irreversible: a deactivated campaign cannot be restored; texting again later requires a new registration (new one-time and review fees). Idempotent.
178
178
 
179
179
  ### Examples
180
180
 
@@ -312,7 +312,7 @@ end
312
312
 
313
313
  Disable SMS on a number
314
314
 
315
- Turns off SMS for the number (deactivates its SMS account). The carrier registration is untouched, so re-enabling later just reactivates it, with no re-registration.
315
+ Turns off SMS for the number (deactivates its SMS account). The carrier registration is untouched, so re-enabling later reactivates it, with no re-registration.
316
316
 
317
317
  ### Examples
318
318
 
@@ -381,7 +381,7 @@ end
381
381
 
382
382
  Enable SMS on a number
383
383
 
384
- Turns on SMS for one of your numbers. The number's real carrier capability is checked first: some number types can't do SMS at all (`smsCapable: false`), and a number still provisioning at the carrier returns `notReady: true` (try again once provisioning finishes). US numbers additionally need a carrier registration before messages deliver; the response tells you which path applies: - `alreadyRegistered: true`: a prior registration still covers this number; SMS was simply reactivated. - `reusable` set: you have an approved registration this number can join in one click via `POST /v1/phone-numbers/{id}/sms/reuse-registration` (no new brand/campaign, no extra carrier fee). - `needsRegistration: true` and no `reusable`: start one via `POST /v1/sms/registrations`. Idempotent: re-running re-attempts any carrier-side setup that failed.
384
+ Turns on SMS for one of your numbers. The number's real carrier capability is checked first: some number types can't do SMS at all (`smsCapable: false`), and a number still provisioning at the carrier returns `notReady: true` (try again once provisioning finishes). US numbers additionally need a carrier registration before messages deliver; the response tells you which path applies: - `alreadyRegistered: true`: a prior registration still covers this number; SMS was reactivated. - `reusable` set: you have an approved registration this number can join in one click via `POST /v1/phone-numbers/{id}/sms/reuse-registration` (no new brand/campaign, no extra carrier fee). - `needsRegistration: true` and no `reusable`: start one via `POST /v1/sms/registrations`. Idempotent: re-running re-attempts any carrier-side setup that failed.
385
385
 
386
386
  ### Examples
387
387
 
@@ -605,7 +605,7 @@ end
605
605
 
606
606
  api_instance = Zernio::SMSApi.new
607
607
  opts = {
608
- include_deactivated: true # Boolean | Deactivated (terminated) registrations are hidden by default — pass true to include them.
608
+ include_deactivated: true # Boolean | Deactivated (terminated) registrations are hidden by default. Pass true to include them.
609
609
  }
610
610
 
611
611
  begin
@@ -639,7 +639,7 @@ end
639
639
 
640
640
  | Name | Type | Description | Notes |
641
641
  | ---- | ---- | ----------- | ----- |
642
- | **include_deactivated** | **Boolean** | Deactivated (terminated) registrations are hidden by default — pass true to include them. | [optional] |
642
+ | **include_deactivated** | **Boolean** | Deactivated (terminated) registrations are hidden by default. Pass true to include them. | [optional] |
643
643
 
644
644
  ### Return type
645
645
 
@@ -863,7 +863,7 @@ end
863
863
 
864
864
  Request a higher sender ID daily limit
865
865
 
866
- Asks support to raise the workspace's daily sender-ID message cap. There is no self-serve raise: the request (desired cap + use case) is reviewed manually, usually within a business day.
866
+ Asks support to raise the team's daily sender-ID message cap. There is no self-serve raise: the request (desired cap + use case) is reviewed manually, usually within a business day.
867
867
 
868
868
  ### Examples
869
869
 
@@ -932,7 +932,7 @@ end
932
932
 
933
933
  Re-send the sole-prop OTP
934
934
 
935
- Re-sends the sole-proprietor verification PIN to the brand's mobile number — use it when the original code expired or never arrived. Only valid while the registration is pending and awaiting its OTP; rate limited to one send per minute.
935
+ Re-sends the sole-proprietor verification PIN to the brand's mobile number. Use it when the original code expired or never arrived. Only valid while the registration is pending and awaiting its OTP; rate limited to one send per minute.
936
936
 
937
937
  ### Examples
938
938
 
@@ -1001,7 +1001,7 @@ end
1001
1001
 
1002
1002
  Reply to a change request
1003
1003
 
1004
- Replies to a reviewer change request on a registration in `changes_requested` state: a note, hosted document URLs (from `POST /v1/sms/opt-in-proof`), or both, sent together. The registration returns to `requested` (back in review) — no need to resubmit the whole registration. To change the submitted brand/campaign fields themselves, resubmit via `POST /v1/sms/registrations` with `resubmitRequestId` instead.
1004
+ Replies to a reviewer change request on a registration in `changes_requested` state: a note, hosted document URLs (from `POST /v1/sms/opt-in-proof`), or both, sent together. The registration returns to `requested` (back in review), and you do not need to resubmit the whole registration. To change the submitted brand/campaign fields themselves, resubmit via `POST /v1/sms/registrations` with `resubmitRequestId` instead.
1005
1005
 
1006
1006
  ### Examples
1007
1007
 
@@ -1352,7 +1352,7 @@ end
1352
1352
 
1353
1353
  Upload opt-in form proof for an appeal
1354
1354
 
1355
- Hosts a screenshot (or PDF) of your SMS opt-in form and returns its public URL. Carrier reviewers reject campaigns whose consent can't be verified and ask for a \"link/screenshot of the opt-in form\" — the registry has no attachment field, so include the returned URL inside the `messageFlow` you submit with the appeal (`POST /v1/sms/registrations/{id}/appeal`).
1355
+ Hosts a screenshot (or PDF) of your SMS opt-in form and returns its public URL. Carrier reviewers reject campaigns whose consent can't be verified and ask for a \"link/screenshot of the opt-in form\". The registry has no attachment field, so include the returned URL inside the `messageFlow` you submit with the appeal (`POST /v1/sms/registrations/{id}/appeal`).
1356
1356
 
1357
1357
  ### Examples
1358
1358
 
@@ -1423,7 +1423,7 @@ end
1423
1423
 
1424
1424
  Upload opt-in form proof
1425
1425
 
1426
- Hosts a screenshot (or PDF) of your SMS opt-in form and returns its public URL. Include that URL in the campaign's `messageFlow` (the opt-in workflow text) — the carrier registry has no attachment field, so reviewers verify consent by opening links in that answer. Works before a registration exists (use it when registering) and for appeals. `/v1/sms/registrations/{id}/opt-in-proof` is an alias.
1426
+ Hosts a screenshot (or PDF) of your SMS opt-in form and returns its public URL. Include that URL in the campaign's `messageFlow` (the opt-in workflow text). The carrier registry has no attachment field, so reviewers verify consent by opening links in that answer. Works before a registration exists (use it when registering) and for appeals. `/v1/sms/registrations/{id}/opt-in-proof` is an alias.
1427
1427
 
1428
1428
  ### Examples
1429
1429
 
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **type** | **String** | | |
8
- | **account_id** | **String** | Social account ID on the target ad platform. | |
8
+ | **account_id** | **String** | Account ID on the target ad platform. | |
9
9
  | **name** | **String** | | |
10
10
  | **description** | **String** | | [optional] |
11
11
  | **spec** | [**TargetingSpec**](TargetingSpec.md) | The targeting spec to store. | |
@@ -10,7 +10,7 @@
10
10
  | **display_name** | **String** | | [optional] |
11
11
  | **is_active** | **Boolean** | | [optional] |
12
12
  | **selected_location_name** | **String** | Human-readable location display name, NOT a resource name. Do not use it to build API paths. | [optional] |
13
- | **selected_location_id** | **String** | Bare GBP location id. Combine with the GBP account id as accounts/{gbpAccountId}/locations/{selectedLocationId} to form the location resource names that gmb-reviews/batch expects in locationNames. | [optional] |
13
+ | **selected_location_id** | **String** | Bare Google Business Profile location id. Combine with the Google Business Profile account id as accounts/{gbpAccountId}/locations/{selectedLocationId} to form the location resource names that gmb-reviews/batch expects in locationNames. | [optional] |
14
14
 
15
15
  ## Example
16
16
 
@@ -5,8 +5,8 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **profile_id** | **String** | Profile ID from your connection flow | |
8
- | **location_id** | **String** | The Google Business location ID selected by the user | |
9
- | **account_id** | **String** | Optional but recommended. The Google Business Account resource name (\"accounts/123\") that owns the selected location (returned per-location by GET /v1/connect/googlebusiness/locations). When provided, the location is resolved directly instead of by enumerating the account, which is required for accounts that own many locations. Omit only for small accounts. | [optional] |
8
+ | **location_id** | **String** | The Google Business Profile location ID selected by the user | |
9
+ | **account_id** | **String** | Optional but recommended. The Google Business Profile Account resource name (\"accounts/123\") that owns the selected location (returned per-location by GET /v1/connect/googlebusiness/locations). When provided, the location is resolved directly instead of by enumerating the account, which is required for accounts that own many locations. Omit only for small accounts. | [optional] |
10
10
  | **pending_data_token** | **String** | Token from the OAuth callback redirect (pendingDataToken query param). Tokens and profile data are retrieved server-side from this token. | |
11
11
  | **redirect_url** | **String** | Optional custom redirect URL to return to after selection | [optional] |
12
12
 
@@ -6,7 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **message_id** | **String** | Discord message snowflake ID | [optional] |
8
8
  | **channel_id** | **String** | DM channel snowflake (Discord auto-creates one per recipient pair) | [optional] |
9
- | **url** | **String** | Direct link to the message — uses Discord's @me path for DMs | [optional] |
9
+ | **url** | **String** | Direct link to the message, using Discord's @me path for DMs | [optional] |
10
10
  | **timestamp** | **Time** | | [optional] |
11
11
  | **recipient** | [**SendDiscordDirectMessage200ResponseRecipient**](SendDiscordDirectMessage200ResponseRecipient.md) | | [optional] |
12
12
  | **account** | [**SendDiscordDirectMessage200ResponseAccount**](SendDiscordDirectMessage200ResponseAccount.md) | | [optional] |
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **message_id** | **String** | Platform id of the sent message (not returned for Reddit). For WhatsApp this is the raw Meta wamid, the same id delivered as message.platformMessageId on webhooks and delivery-status updates, and the value to pass as replyTo to quote-reply. | [optional] |
8
- | **conversation_id** | **String** | Zernio conversation id, echoed so the thread can be read back or replied to. It equals the id the list-conversations endpoint returns for Telegram, WhatsApp, SMS and Slack; for Facebook, Instagram, Bluesky and Reddit that endpoint returns the platform thread id instead, so do not correlate the two by equality. For X (Twitter), when the request addressed the conversation by its Twitter dm_conversation_id, that platform id is echoed back instead. Omitted when the send succeeded but the conversation could not be resolved to a stored record. | [optional] |
8
+ | **conversation_id** | **String** | Zernio conversation id, echoed so the thread can be read back or replied to. It equals the id the list-conversations endpoint returns for Telegram, WhatsApp, SMS and Slack; for Facebook, Instagram, Bluesky and Reddit that endpoint returns the platform thread id instead, so do not correlate the two by equality. For X, when the request addressed the conversation by its Twitter dm_conversation_id, that platform id is echoed back instead. Omitted when the send succeeded but the conversation could not be resolved to a stored record. | [optional] |
9
9
  | **attachments** | [**Array<SendInboxMessage200ResponseDataAttachmentsInner>**](SendInboxMessage200ResponseDataAttachmentsInner.md) | Echo of the sent attachment with its resolved public URL, when one is available (Facebook, Instagram, Telegram, WhatsApp). | [optional] |
10
10
  | **message_ids** | **Array<String>** | Facebook/Instagram only. Present when an attachment and text were both requested: Meta has no single body shape for both, so the send is two Meta messages under the hood. First element === messageId (the attachment); second is the follow-up text. | [optional] |
11
11
  | **partial_failure** | [**SendInboxMessage200ResponseDataPartialFailure**](SendInboxMessage200ResponseDataPartialFailure.md) | | [optional] |
@@ -4,16 +4,16 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **account_id** | **String** | Social account ID | |
7
+ | **account_id** | **String** | Account ID | |
8
8
  | **message** | **String** | Message text | [optional] |
9
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
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] |
12
12
  | **attachment_type** | **String** | Type of attachment. Defaults to file if not specified. | [optional] |
13
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] |
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
+ | **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] |
15
15
  | **quick_replies** | [**Array<SendInboxMessageRequestQuickRepliesInner>**](SendInboxMessageRequestQuickRepliesInner.md) | Quick reply buttons. Mutually exclusive with buttons. Max 13 items. | [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
+ | **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] |
17
17
  | **template** | [**SendInboxMessageRequestTemplate**](SendInboxMessageRequestTemplate.md) | | [optional] |
18
18
  | **interactive** | [**SendInboxMessageRequestInteractive**](SendInboxMessageRequestInteractive.md) | | [optional] |
19
19
  | **reply_markup** | [**SendInboxMessageRequestReplyMarkup**](SendInboxMessageRequestReplyMarkup.md) | | [optional] |
@@ -4,9 +4,9 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **account_id** | **String** | The social account ID (Instagram or Facebook) | |
7
+ | **account_id** | **String** | The account ID (Instagram or Facebook) | |
8
8
  | **message** | **String** | The message text to send as a private DM | |
9
- | **quick_replies** | [**Array<SendPrivateReplyToCommentRequestQuickRepliesInner>**](SendPrivateReplyToCommentRequestQuickRepliesInner.md) | Optional quick-reply chips appended to the message. Visible only in the Instagram and Messenger apps (not on web). Maximum 13 entries. Mutually exclusive with `buttons`. Note: chips do NOT render in the Instagram Message Requests folder where DMs from non-followers land — use `buttons` instead for cold reach. | [optional] |
9
+ | **quick_replies** | [**Array<SendPrivateReplyToCommentRequestQuickRepliesInner>**](SendPrivateReplyToCommentRequestQuickRepliesInner.md) | Optional quick-reply chips appended to the message. Visible only in the Instagram and Messenger apps (not on web). Maximum 13 entries. Mutually exclusive with `buttons`. Note: chips do NOT render in the Instagram Message Requests folder where DMs from non-followers land. Use `buttons` instead for cold reach. | [optional] |
10
10
  | **buttons** | [**Array<SendPrivateReplyToCommentRequestButtonsInner>**](SendPrivateReplyToCommentRequestButtonsInner.md) | Optional 1-3 inline buttons rendered as part of the same message bubble via Meta's button_template. Visible in the Instagram Message Requests folder (unlike quick replies). Mutually exclusive with `quickReplies`. | [optional] |
11
11
 
12
12
  ## Example