postboost 1.8.0 → 1.14.0

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 (735) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +7 -0
  3. data/CONTRIBUTING.md +31 -0
  4. data/README.md +134 -1
  5. data/SECURITY.md +9 -0
  6. data/docs/AIApi.md +432 -0
  7. data/docs/AIUsage.md +20 -0
  8. data/docs/AIUsageText.md +24 -0
  9. data/docs/Account.md +6 -2
  10. data/docs/AccountConnectionHealth.md +34 -0
  11. data/docs/AccountErrorsInner.md +49 -0
  12. data/docs/AccountErrorsInnerOneOf.md +24 -0
  13. data/docs/AccountGroup.md +24 -0
  14. data/docs/AccountGroupInput.md +20 -0
  15. data/docs/AccountGroupsApi.md +372 -0
  16. data/docs/AccountHealth.md +34 -0
  17. data/docs/AccountHealthDailyCap.md +20 -0
  18. data/docs/AccountsApi.md +216 -0
  19. data/docs/ActivityApi.md +87 -0
  20. data/docs/AddCompetitor202Response.md +20 -0
  21. data/docs/AddCompetitor409Response.md +20 -0
  22. data/docs/AgentPageMeta.md +24 -0
  23. data/docs/AgentProposal.md +44 -0
  24. data/docs/AgentProposalDecision.md +18 -0
  25. data/docs/AgentRun.md +44 -0
  26. data/docs/AgentsApi.md +745 -0
  27. data/docs/AnalyticsApi.md +498 -0
  28. data/docs/ApiActivity.md +36 -0
  29. data/docs/ApiActivityOutcome.md +15 -0
  30. data/docs/ApiKey.md +32 -0
  31. data/docs/ApiKeyAbility.md +15 -0
  32. data/docs/ApiKeyInput.md +24 -0
  33. data/docs/ApproveAgentProposal200Response.md +18 -0
  34. data/docs/ApproveAgentProposal409Response.md +20 -0
  35. data/docs/ApproveInboxReplyDraft403Response.md +20 -0
  36. data/docs/BlogToSocial200Response.md +3 -1
  37. data/docs/BlogToSocialInput.md +3 -1
  38. data/docs/BrandVoice.md +48 -0
  39. data/docs/BrandVoiceInput.md +46 -0
  40. data/docs/BrandVoiceMeta.md +18 -0
  41. data/docs/ChannelAccount.md +36 -0
  42. data/docs/CodedError.md +22 -0
  43. data/docs/Competitor.md +34 -0
  44. data/docs/CompetitorDetail.md +38 -0
  45. data/docs/CompetitorInput.md +20 -0
  46. data/docs/CompetitorMedia.md +28 -0
  47. data/docs/CompetitorSnapshot.md +22 -0
  48. data/docs/CompetitorsApi.md +296 -0
  49. data/docs/ConnectChannelInput.md +24 -0
  50. data/docs/CreateAccountGroup201Response.md +18 -0
  51. data/docs/CreateAgent201Response.md +18 -0
  52. data/docs/CreateApiKey201Response.md +18 -0
  53. data/docs/CreateApiKey201ResponseData.md +34 -0
  54. data/docs/CreateHashtagGroup201Response.md +18 -0
  55. data/docs/CreateInboxReplyDraft201Response.md +18 -0
  56. data/docs/CreateRecyclingRule201Response.md +18 -0
  57. data/docs/CreateReportExport201Response.md +18 -0
  58. data/docs/CreateResellerClient201Response.md +18 -0
  59. data/docs/CreateRssFeed201Response.md +18 -0
  60. data/docs/CreateTemplate201Response.md +18 -0
  61. data/docs/CreateWebhookSubscription201Response.md +18 -0
  62. data/docs/CreateWebhookSubscription201ResponseData.md +30 -0
  63. data/docs/DeleteAgent200Response.md +18 -0
  64. data/docs/GetAccountHealth200Response.md +18 -0
  65. data/docs/GetBrandVoice200Response.md +18 -0
  66. data/docs/GetCompetitor200Response.md +18 -0
  67. data/docs/GetInboxConversation200Response.md +18 -0
  68. data/docs/GetPostingSchedule200Response.md +18 -0
  69. data/docs/GetReportBranding200Response.md +18 -0
  70. data/docs/GuardrailError.md +28 -0
  71. data/docs/HashtagGroup.md +22 -0
  72. data/docs/HashtagGroupInput.md +20 -0
  73. data/docs/HashtagGroupsApi.md +372 -0
  74. data/docs/ImageCreditBalance.md +28 -0
  75. data/docs/ImageEditInput.md +2 -0
  76. data/docs/ImageGenerate200Response.md +3 -1
  77. data/docs/ImageGenerateInput.md +3 -1
  78. data/docs/ImagePrompt200Response.md +3 -1
  79. data/docs/ImagePromptInput.md +3 -1
  80. data/docs/InboxApi.md +758 -0
  81. data/docs/InboxAuthor.md +22 -0
  82. data/docs/InboxConversation.md +46 -0
  83. data/docs/InboxConversationAccount.md +24 -0
  84. data/docs/InboxConversationUpdate.md +20 -0
  85. data/docs/InboxMessage.md +32 -0
  86. data/docs/InboxMessageAuthor.md +22 -0
  87. data/docs/InboxReplyDraft.md +42 -0
  88. data/docs/InboxReplyDraftApprove.md +18 -0
  89. data/docs/InboxReplyDraftEdit.md +18 -0
  90. data/docs/InboxReplyDraftInput.md +20 -0
  91. data/docs/LearnBrandVoiceInput.md +24 -0
  92. data/docs/LearnBrandVoiceResponse.md +20 -0
  93. data/docs/LearnBrandVoiceResponseMeta.md +26 -0
  94. data/docs/ListAccountGroups200Response.md +22 -0
  95. data/docs/ListAgentProposals200Response.md +20 -0
  96. data/docs/ListAgentRuns200Response.md +20 -0
  97. data/docs/ListAgents200Response.md +18 -0
  98. data/docs/ListApiActivity200Response.md +22 -0
  99. data/docs/ListApiKeys200Response.md +18 -0
  100. data/docs/ListCompetitors200Response.md +18 -0
  101. data/docs/ListHashtagGroups200Response.md +22 -0
  102. data/docs/ListInboxConversations200Response.md +22 -0
  103. data/docs/ListInboxReplyDrafts200Response.md +22 -0
  104. data/docs/ListRecyclingRules200Response.md +18 -0
  105. data/docs/ListRecyclingRuns200Response.md +18 -0
  106. data/docs/ListReportExports200Response.md +18 -0
  107. data/docs/ListResellerClients200Response.md +20 -0
  108. data/docs/ListRssFeeds200Response.md +18 -0
  109. data/docs/ListTemplates200Response.md +22 -0
  110. data/docs/ListWebhookSubscriptions200Response.md +18 -0
  111. data/docs/MediaApi.md +103 -13
  112. data/docs/MediaBase64Input.md +24 -0
  113. data/docs/MentionsApi.md +8 -4
  114. data/docs/MessageOnly.md +18 -0
  115. data/docs/PollRssFeed200Response.md +22 -0
  116. data/docs/PostContent.md +1 -1
  117. data/docs/PostInput.md +5 -1
  118. data/docs/PostOptionsInstagram.md +22 -0
  119. data/docs/PostOptionsTikTok.md +34 -0
  120. data/docs/PostOptionsYoutube.md +24 -0
  121. data/docs/PostVersion.md +2 -2
  122. data/docs/PostVersionOptions.md +24 -0
  123. data/docs/PostingSchedule.md +28 -0
  124. data/docs/PostingScheduleApi.md +377 -0
  125. data/docs/PostingScheduleDay.md +22 -0
  126. data/docs/PostingScheduleDayTimesInner.md +18 -0
  127. data/docs/PostingScheduleInput.md +24 -0
  128. data/docs/PostsApi.md +1132 -110
  129. data/docs/PreflightResult.md +26 -0
  130. data/docs/QueueSlots.md +20 -0
  131. data/docs/RecommendedPostingTimes.md +26 -0
  132. data/docs/ReconnectLink.md +22 -0
  133. data/docs/RecyclingRule.md +42 -0
  134. data/docs/RecyclingRuleInput.md +34 -0
  135. data/docs/RecyclingRuleSettings.md +28 -0
  136. data/docs/RecyclingRuleUpdate.md +28 -0
  137. data/docs/RecyclingRun.md +28 -0
  138. data/docs/ReportBranding.md +28 -0
  139. data/docs/ReportBrandingInput.md +24 -0
  140. data/docs/ReportExport.md +42 -0
  141. data/docs/ReportExportInput.md +28 -0
  142. data/docs/RepurposeContent200Response.md +20 -0
  143. data/docs/RepurposeInput.md +54 -0
  144. data/docs/RepurposeInputTheme.md +22 -0
  145. data/docs/RepurposeResult.md +32 -0
  146. data/docs/RepurposeResultMedia.md +20 -0
  147. data/docs/RepurposeResultSource.md +22 -0
  148. data/docs/RepurposeSlide.md +20 -0
  149. data/docs/ResellerClient.md +32 -0
  150. data/docs/ResellerClientInput.md +18 -0
  151. data/docs/ResellerClientUsage.md +20 -0
  152. data/docs/RssFeed.md +38 -0
  153. data/docs/RssFeedInput.md +30 -0
  154. data/docs/RssFeedUpdate.md +30 -0
  155. data/docs/RunAgent202Response.md +18 -0
  156. data/docs/TagsApi.md +8 -4
  157. data/docs/Template.md +22 -0
  158. data/docs/TemplateContentItem.md +20 -0
  159. data/docs/TemplateInput.md +20 -0
  160. data/docs/TemplateInputContentInner.md +20 -0
  161. data/docs/TemplatesApi.md +372 -0
  162. data/docs/WebhookEventName.md +15 -0
  163. data/docs/WebhookEventPayload.md +20 -0
  164. data/docs/WebhookSubscription.md +28 -0
  165. data/docs/WebhookSubscriptionInput.md +24 -0
  166. data/docs/WebhooksApi.md +221 -0
  167. data/docs/WorkspaceAgent.md +34 -0
  168. data/docs/WorkspaceAgentInput.md +26 -0
  169. data/docs/WorkspaceAgentSettings.md +26 -0
  170. data/docs/WorkspaceAgentUpdate.md +24 -0
  171. data/docs/WorkspacesApi.md +426 -0
  172. data/docs/XUsage.md +28 -0
  173. data/docs/XUsageCounter.md +20 -0
  174. data/lib/postboost/api/account_groups_api.rb +395 -0
  175. data/lib/postboost/api/accounts_api.rb +219 -2
  176. data/lib/postboost/api/activity_api.rb +97 -0
  177. data/lib/postboost/api/agents_api.rb +771 -0
  178. data/lib/postboost/api/ai_api.rb +420 -2
  179. data/lib/postboost/api/analytics_api.rb +487 -2
  180. data/lib/postboost/api/competitors_api.rb +300 -0
  181. data/lib/postboost/api/hashtag_groups_api.rb +395 -0
  182. data/lib/postboost/api/inbox_api.rb +789 -0
  183. data/lib/postboost/api/media_api.rb +133 -4
  184. data/lib/postboost/api/mentions_api.rb +13 -2
  185. data/lib/postboost/api/posting_schedule_api.rb +389 -0
  186. data/lib/postboost/api/posts_api.rb +1149 -96
  187. data/lib/postboost/api/receipts_api.rb +2 -2
  188. data/lib/postboost/api/subscriptions_api.rb +2 -2
  189. data/lib/postboost/api/tags_api.rb +13 -2
  190. data/lib/postboost/api/templates_api.rb +395 -0
  191. data/lib/postboost/api/users_api.rb +2 -2
  192. data/lib/postboost/api/webhooks_api.rb +228 -0
  193. data/lib/postboost/api/workspaces_api.rb +408 -2
  194. data/lib/postboost/api_client.rb +2 -2
  195. data/lib/postboost/api_error.rb +2 -2
  196. data/lib/postboost/configuration.rb +2 -2
  197. data/lib/postboost/models/account.rb +28 -4
  198. data/lib/postboost/models/account_analytics.rb +2 -2
  199. data/lib/postboost/models/account_analytics_initial_sync.rb +2 -2
  200. data/lib/postboost/models/account_connection_health.rb +389 -0
  201. data/lib/postboost/models/account_errors_inner.rb +105 -0
  202. data/lib/postboost/models/account_errors_inner_one_of.rb +243 -0
  203. data/lib/postboost/models/account_group.rb +271 -0
  204. data/lib/postboost/models/account_group_input.rb +252 -0
  205. data/lib/postboost/models/account_health.rb +352 -0
  206. data/lib/postboost/models/account_health_daily_cap.rb +239 -0
  207. data/lib/postboost/models/account_schedule.rb +2 -2
  208. data/lib/postboost/models/add_competitor202_response.rb +271 -0
  209. data/lib/postboost/models/add_competitor409_response.rb +223 -0
  210. data/lib/postboost/models/add_generic_subscription_request.rb +2 -2
  211. data/lib/postboost/models/add_post_to_queue_request.rb +2 -2
  212. data/lib/postboost/models/agent_page_meta.rb +269 -0
  213. data/lib/postboost/models/agent_proposal.rb +444 -0
  214. data/lib/postboost/models/agent_proposal_decision.rb +233 -0
  215. data/lib/postboost/models/agent_run.rb +434 -0
  216. data/lib/postboost/models/ai_credits.rb +2 -2
  217. data/lib/postboost/models/ai_usage.rb +237 -0
  218. data/lib/postboost/models/ai_usage_text.rb +252 -0
  219. data/lib/postboost/models/analytics_period.rb +2 -2
  220. data/lib/postboost/models/analytics_summary.rb +2 -2
  221. data/lib/postboost/models/analytics_summary_data.rb +2 -2
  222. data/lib/postboost/models/api_activity.rb +359 -0
  223. data/lib/postboost/models/api_activity_outcome.rb +49 -0
  224. data/lib/postboost/models/api_key.rb +308 -0
  225. data/lib/postboost/models/api_key_ability.rb +43 -0
  226. data/lib/postboost/models/api_key_input.rb +316 -0
  227. data/lib/postboost/models/approve_agent_proposal200_response.rb +221 -0
  228. data/lib/postboost/models/approve_agent_proposal409_response.rb +237 -0
  229. data/lib/postboost/models/approve_inbox_reply_draft403_response.rb +264 -0
  230. data/lib/postboost/models/approve_post_request.rb +2 -2
  231. data/lib/postboost/models/best_posting_times.rb +2 -2
  232. data/lib/postboost/models/best_posting_times_times_inner.rb +2 -2
  233. data/lib/postboost/models/blog_to_social200_response.rb +15 -6
  234. data/lib/postboost/models/blog_to_social429_response.rb +2 -2
  235. data/lib/postboost/models/blog_to_social_caption.rb +2 -2
  236. data/lib/postboost/models/blog_to_social_input.rb +18 -6
  237. data/lib/postboost/models/blog_to_social_media.rb +2 -2
  238. data/lib/postboost/models/blog_to_social_response.rb +2 -2
  239. data/lib/postboost/models/brand_voice.rb +531 -0
  240. data/lib/postboost/models/brand_voice_input.rb +646 -0
  241. data/lib/postboost/models/brand_voice_meta.rb +222 -0
  242. data/lib/postboost/models/cancel_subscription422_response.rb +2 -2
  243. data/lib/postboost/models/cancel_subscription422_response_errors.rb +2 -2
  244. data/lib/postboost/models/cancel_subscription_request.rb +2 -2
  245. data/lib/postboost/models/change_subscription_plan_request.rb +2 -2
  246. data/lib/postboost/models/channel_account.rb +380 -0
  247. data/lib/postboost/models/checkout_subscription200_response.rb +2 -2
  248. data/lib/postboost/models/checkout_subscription_request.rb +2 -2
  249. data/lib/postboost/models/coded_error.rb +242 -0
  250. data/lib/postboost/models/competitor.rb +320 -0
  251. data/lib/postboost/models/competitor_detail.rb +358 -0
  252. data/lib/postboost/models/competitor_input.rb +258 -0
  253. data/lib/postboost/models/competitor_media.rb +263 -0
  254. data/lib/postboost/models/competitor_snapshot.rb +234 -0
  255. data/lib/postboost/models/complete_chunked_upload_request.rb +2 -2
  256. data/lib/postboost/models/connect_channel_input.rb +265 -0
  257. data/lib/postboost/models/create_account_group201_response.rb +221 -0
  258. data/lib/postboost/models/create_agent201_response.rb +221 -0
  259. data/lib/postboost/models/create_api_key201_response.rb +221 -0
  260. data/lib/postboost/models/create_api_key201_response_data.rb +327 -0
  261. data/lib/postboost/models/create_hashtag_group201_response.rb +221 -0
  262. data/lib/postboost/models/create_inbox_reply_draft201_response.rb +221 -0
  263. data/lib/postboost/models/create_media_folder_request.rb +2 -2
  264. data/lib/postboost/models/create_mention201_response.rb +2 -2
  265. data/lib/postboost/models/create_recycling_rule201_response.rb +221 -0
  266. data/lib/postboost/models/create_report_export201_response.rb +221 -0
  267. data/lib/postboost/models/create_reseller_client201_response.rb +221 -0
  268. data/lib/postboost/models/create_rss_feed201_response.rb +221 -0
  269. data/lib/postboost/models/create_template201_response.rb +221 -0
  270. data/lib/postboost/models/create_webhook_subscription201_response.rb +221 -0
  271. data/lib/postboost/models/create_webhook_subscription201_response_data.rb +320 -0
  272. data/lib/postboost/models/delete_agent200_response.rb +221 -0
  273. data/lib/postboost/models/delete_media_bulk_request.rb +2 -2
  274. data/lib/postboost/models/delete_media_bulk_request_items_inner.rb +2 -2
  275. data/lib/postboost/models/delete_media_folder_request.rb +2 -2
  276. data/lib/postboost/models/delete_mode.rb +2 -2
  277. data/lib/postboost/models/delete_post_request.rb +2 -2
  278. data/lib/postboost/models/delete_posts_bulk_request.rb +2 -2
  279. data/lib/postboost/models/delete_receipts_bulk_request.rb +2 -2
  280. data/lib/postboost/models/delete_result.rb +2 -2
  281. data/lib/postboost/models/delete_user400_response.rb +2 -2
  282. data/lib/postboost/models/delete_users_bulk_request.rb +2 -2
  283. data/lib/postboost/models/delete_workspaces_bulk_request.rb +2 -2
  284. data/lib/postboost/models/get_account_health200_response.rb +223 -0
  285. data/lib/postboost/models/get_brand_voice200_response.rb +217 -0
  286. data/lib/postboost/models/get_competitor200_response.rb +221 -0
  287. data/lib/postboost/models/get_inbox_conversation200_response.rb +221 -0
  288. data/lib/postboost/models/get_posting_schedule200_response.rb +221 -0
  289. data/lib/postboost/models/get_remote_upload_status200_response.rb +2 -2
  290. data/lib/postboost/models/get_report_branding200_response.rb +221 -0
  291. data/lib/postboost/models/guardrail_error.rb +304 -0
  292. data/lib/postboost/models/hashtag_group.rb +254 -0
  293. data/lib/postboost/models/hashtag_group_input.rb +275 -0
  294. data/lib/postboost/models/image_alt_text200_response.rb +2 -2
  295. data/lib/postboost/models/image_alt_text_input.rb +2 -2
  296. data/lib/postboost/models/image_alt_text_response.rb +2 -2
  297. data/lib/postboost/models/image_credit_balance.rb +295 -0
  298. data/lib/postboost/models/image_edit_input.rb +15 -3
  299. data/lib/postboost/models/image_generate200_response.rb +15 -6
  300. data/lib/postboost/models/image_generate429_response.rb +2 -2
  301. data/lib/postboost/models/image_generate_input.rb +35 -3
  302. data/lib/postboost/models/image_generation_response.rb +2 -2
  303. data/lib/postboost/models/image_prompt200_response.rb +15 -6
  304. data/lib/postboost/models/image_prompt429_response.rb +2 -2
  305. data/lib/postboost/models/image_prompt_input.rb +35 -3
  306. data/lib/postboost/models/image_prompt_response.rb +2 -2
  307. data/lib/postboost/models/image_variations200_response.rb +2 -2
  308. data/lib/postboost/models/image_variations_input.rb +2 -2
  309. data/lib/postboost/models/image_variations_response.rb +2 -2
  310. data/lib/postboost/models/inbox_author.rb +235 -0
  311. data/lib/postboost/models/inbox_conversation.rb +425 -0
  312. data/lib/postboost/models/inbox_conversation_account.rb +241 -0
  313. data/lib/postboost/models/inbox_conversation_update.rb +257 -0
  314. data/lib/postboost/models/inbox_message.rb +360 -0
  315. data/lib/postboost/models/inbox_message_author.rb +235 -0
  316. data/lib/postboost/models/inbox_reply_draft.rb +410 -0
  317. data/lib/postboost/models/inbox_reply_draft_approve.rb +215 -0
  318. data/lib/postboost/models/inbox_reply_draft_edit.rb +221 -0
  319. data/lib/postboost/models/inbox_reply_draft_input.rb +232 -0
  320. data/lib/postboost/models/initiate_chunked_upload201_response.rb +2 -2
  321. data/lib/postboost/models/initiate_chunked_upload_request.rb +2 -2
  322. data/lib/postboost/models/initiate_remote_upload201_response.rb +2 -2
  323. data/lib/postboost/models/initiate_remote_upload201_response_one_of.rb +2 -2
  324. data/lib/postboost/models/initiate_remote_upload_request.rb +2 -2
  325. data/lib/postboost/models/learn_brand_voice_input.rb +300 -0
  326. data/lib/postboost/models/learn_brand_voice_response.rb +237 -0
  327. data/lib/postboost/models/learn_brand_voice_response_meta.rb +281 -0
  328. data/lib/postboost/models/list_account_groups200_response.rb +248 -0
  329. data/lib/postboost/models/list_accounts200_response.rb +2 -2
  330. data/lib/postboost/models/list_agent_proposals200_response.rb +239 -0
  331. data/lib/postboost/models/list_agent_runs200_response.rb +239 -0
  332. data/lib/postboost/models/list_agents200_response.rb +223 -0
  333. data/lib/postboost/models/list_api_activity200_response.rb +241 -0
  334. data/lib/postboost/models/list_api_keys200_response.rb +223 -0
  335. data/lib/postboost/models/list_competitors200_response.rb +223 -0
  336. data/lib/postboost/models/list_hashtag_groups200_response.rb +248 -0
  337. data/lib/postboost/models/list_inbox_conversations200_response.rb +241 -0
  338. data/lib/postboost/models/list_inbox_reply_drafts200_response.rb +241 -0
  339. data/lib/postboost/models/list_media200_response.rb +2 -2
  340. data/lib/postboost/models/list_media_folders200_response.rb +2 -2
  341. data/lib/postboost/models/list_mentions200_response.rb +2 -2
  342. data/lib/postboost/models/list_my_workspaces200_response.rb +2 -2
  343. data/lib/postboost/models/list_posts200_response.rb +2 -2
  344. data/lib/postboost/models/list_receipts200_response.rb +2 -2
  345. data/lib/postboost/models/list_recycling_rules200_response.rb +223 -0
  346. data/lib/postboost/models/list_recycling_runs200_response.rb +223 -0
  347. data/lib/postboost/models/list_report_exports200_response.rb +223 -0
  348. data/lib/postboost/models/list_reseller_clients200_response.rb +239 -0
  349. data/lib/postboost/models/list_rss_feeds200_response.rb +223 -0
  350. data/lib/postboost/models/list_tags200_response.rb +2 -2
  351. data/lib/postboost/models/list_templates200_response.rb +248 -0
  352. data/lib/postboost/models/list_users200_response.rb +2 -2
  353. data/lib/postboost/models/list_webhook_subscriptions200_response.rb +223 -0
  354. data/lib/postboost/models/list_workspaces200_response.rb +2 -2
  355. data/lib/postboost/models/media.rb +2 -2
  356. data/lib/postboost/models/media_base64_input.rb +295 -0
  357. data/lib/postboost/models/media_folder.rb +2 -2
  358. data/lib/postboost/models/media_folder_input.rb +2 -2
  359. data/lib/postboost/models/media_folder_ref.rb +2 -2
  360. data/lib/postboost/models/mention.rb +2 -2
  361. data/lib/postboost/models/mention_identity.rb +2 -2
  362. data/lib/postboost/models/mention_identity_input.rb +2 -2
  363. data/lib/postboost/models/mention_input.rb +2 -2
  364. data/lib/postboost/models/message_only.rb +221 -0
  365. data/lib/postboost/models/pagination_meta.rb +2 -2
  366. data/lib/postboost/models/pagination_meta_links.rb +4 -2
  367. data/lib/postboost/models/pagination_meta_meta.rb +4 -2
  368. data/lib/postboost/models/poll_rss_feed200_response.rb +255 -0
  369. data/lib/postboost/models/post.rb +2 -2
  370. data/lib/postboost/models/post_analytics.rb +2 -2
  371. data/lib/postboost/models/post_content.rb +4 -3
  372. data/lib/postboost/models/post_input.rb +28 -6
  373. data/lib/postboost/models/post_options_instagram.rb +294 -0
  374. data/lib/postboost/models/post_options_tik_tok.rb +329 -0
  375. data/lib/postboost/models/post_options_youtube.rb +302 -0
  376. data/lib/postboost/models/post_status.rb +2 -2
  377. data/lib/postboost/models/post_version.rb +23 -4
  378. data/lib/postboost/models/post_version_options.rb +242 -0
  379. data/lib/postboost/models/posting_schedule.rb +303 -0
  380. data/lib/postboost/models/posting_schedule_day.rb +285 -0
  381. data/lib/postboost/models/posting_schedule_day_times_inner.rb +222 -0
  382. data/lib/postboost/models/posting_schedule_input.rb +312 -0
  383. data/lib/postboost/models/posting_time_slot.rb +2 -2
  384. data/lib/postboost/models/posting_times.rb +2 -2
  385. data/lib/postboost/models/posting_times_best_inner.rb +2 -2
  386. data/lib/postboost/models/posting_times_day_intervals_inner_inner.rb +2 -2
  387. data/lib/postboost/models/posting_times_days_inner.rb +2 -2
  388. data/lib/postboost/models/preflight_result.rb +291 -0
  389. data/lib/postboost/models/public_workspace.rb +2 -2
  390. data/lib/postboost/models/public_workspace_pivot.rb +2 -2
  391. data/lib/postboost/models/publish_progress.rb +2 -2
  392. data/lib/postboost/models/queue_slots.rb +237 -0
  393. data/lib/postboost/models/receipt.rb +2 -2
  394. data/lib/postboost/models/receipt_input.rb +2 -2
  395. data/lib/postboost/models/receipt_update_input.rb +2 -2
  396. data/lib/postboost/models/recommended_posting_times.rb +282 -0
  397. data/lib/postboost/models/reconnect_link.rb +254 -0
  398. data/lib/postboost/models/recycling_rule.rb +434 -0
  399. data/lib/postboost/models/recycling_rule_input.rb +435 -0
  400. data/lib/postboost/models/recycling_rule_settings.rb +381 -0
  401. data/lib/postboost/models/recycling_rule_update.rb +366 -0
  402. data/lib/postboost/models/recycling_run.rb +320 -0
  403. data/lib/postboost/models/remove_generic_subscription422_response.rb +2 -2
  404. data/lib/postboost/models/remove_user_from_workspace_request.rb +2 -2
  405. data/lib/postboost/models/report_branding.rb +285 -0
  406. data/lib/postboost/models/report_branding_input.rb +293 -0
  407. data/lib/postboost/models/report_export.rb +442 -0
  408. data/lib/postboost/models/report_export_input.rb +350 -0
  409. data/lib/postboost/models/repurpose_content200_response.rb +237 -0
  410. data/lib/postboost/models/repurpose_input.rb +667 -0
  411. data/lib/postboost/models/repurpose_input_theme.rb +296 -0
  412. data/lib/postboost/models/repurpose_result.rb +328 -0
  413. data/lib/postboost/models/repurpose_result_media.rb +224 -0
  414. data/lib/postboost/models/repurpose_result_source.rb +283 -0
  415. data/lib/postboost/models/repurpose_slide.rb +239 -0
  416. data/lib/postboost/models/reseller_client.rb +360 -0
  417. data/lib/postboost/models/reseller_client_input.rb +240 -0
  418. data/lib/postboost/models/reseller_client_usage.rb +239 -0
  419. data/lib/postboost/models/retry_post_account_result.rb +2 -2
  420. data/lib/postboost/models/rss_feed.rb +402 -0
  421. data/lib/postboost/models/rss_feed_input.rb +433 -0
  422. data/lib/postboost/models/rss_feed_update.rb +396 -0
  423. data/lib/postboost/models/run_agent202_response.rb +221 -0
  424. data/lib/postboost/models/schedule_post_request.rb +2 -2
  425. data/lib/postboost/models/schedule_result.rb +2 -2
  426. data/lib/postboost/models/subscription.rb +2 -2
  427. data/lib/postboost/models/subscription_input.rb +2 -2
  428. data/lib/postboost/models/subscription_status.rb +2 -2
  429. data/lib/postboost/models/subscription_update_input.rb +2 -2
  430. data/lib/postboost/models/tag.rb +2 -2
  431. data/lib/postboost/models/tag_input.rb +2 -2
  432. data/lib/postboost/models/template.rb +256 -0
  433. data/lib/postboost/models/template_content_item.rb +240 -0
  434. data/lib/postboost/models/template_input.rb +271 -0
  435. data/lib/postboost/models/template_input_content_inner.rb +227 -0
  436. data/lib/postboost/models/update_media_request.rb +2 -2
  437. data/lib/postboost/models/upload_chunk201_response.rb +2 -2
  438. data/lib/postboost/models/user.rb +2 -2
  439. data/lib/postboost/models/user_input.rb +2 -2
  440. data/lib/postboost/models/user_update_input.rb +2 -2
  441. data/lib/postboost/models/webhook_event_name.rb +50 -0
  442. data/lib/postboost/models/webhook_event_payload.rb +262 -0
  443. data/lib/postboost/models/webhook_subscription.rb +297 -0
  444. data/lib/postboost/models/webhook_subscription_input.rb +349 -0
  445. data/lib/postboost/models/workspace.rb +2 -2
  446. data/lib/postboost/models/workspace_agent.rb +381 -0
  447. data/lib/postboost/models/workspace_agent_input.rb +326 -0
  448. data/lib/postboost/models/workspace_agent_settings.rb +340 -0
  449. data/lib/postboost/models/workspace_agent_update.rb +294 -0
  450. data/lib/postboost/models/workspace_input.rb +2 -2
  451. data/lib/postboost/models/workspace_user_input.rb +2 -2
  452. data/lib/postboost/models/x_usage.rb +303 -0
  453. data/lib/postboost/models/x_usage_counter.rb +234 -0
  454. data/lib/postboost/version.rb +3 -3
  455. data/lib/postboost.rb +151 -2
  456. data/postboost.gemspec +3 -3
  457. data/spec/api/account_groups_api_spec.rb +102 -0
  458. data/spec/api/accounts_api_spec.rb +41 -2
  459. data/spec/api/activity_api_spec.rb +51 -0
  460. data/spec/api/agents_api_spec.rb +170 -0
  461. data/spec/api/ai_api_spec.rb +78 -2
  462. data/spec/api/analytics_api_spec.rb +90 -2
  463. data/spec/api/competitors_api_spec.rb +87 -0
  464. data/spec/api/hashtag_groups_api_spec.rb +102 -0
  465. data/spec/api/inbox_api_spec.rb +178 -0
  466. data/spec/api/media_api_spec.rb +21 -3
  467. data/spec/api/mentions_api_spec.rb +3 -2
  468. data/spec/api/posting_schedule_api_spec.rb +102 -0
  469. data/spec/api/posts_api_spec.rb +189 -3
  470. data/spec/api/receipts_api_spec.rb +2 -2
  471. data/spec/api/subscriptions_api_spec.rb +2 -2
  472. data/spec/api/tags_api_spec.rb +3 -2
  473. data/spec/api/templates_api_spec.rb +102 -0
  474. data/spec/api/users_api_spec.rb +2 -2
  475. data/spec/api/webhooks_api_spec.rb +73 -0
  476. data/spec/api/workspaces_api_spec.rb +77 -2
  477. data/spec/models/account_analytics_initial_sync_spec.rb +2 -2
  478. data/spec/models/account_analytics_spec.rb +2 -2
  479. data/spec/models/account_connection_health_spec.rb +92 -0
  480. data/spec/models/account_errors_inner_one_of_spec.rb +54 -0
  481. data/spec/models/account_errors_inner_spec.rb +32 -0
  482. data/spec/models/account_group_input_spec.rb +42 -0
  483. data/spec/models/account_group_spec.rb +54 -0
  484. data/spec/models/account_health_daily_cap_spec.rb +42 -0
  485. data/spec/models/account_health_spec.rb +84 -0
  486. data/spec/models/account_schedule_spec.rb +2 -2
  487. data/spec/models/account_spec.rb +14 -2
  488. data/spec/models/add_competitor202_response_spec.rb +46 -0
  489. data/spec/models/add_competitor409_response_spec.rb +42 -0
  490. data/spec/models/add_generic_subscription_request_spec.rb +2 -2
  491. data/spec/models/add_post_to_queue_request_spec.rb +2 -2
  492. data/spec/models/agent_page_meta_spec.rb +54 -0
  493. data/spec/models/agent_proposal_decision_spec.rb +36 -0
  494. data/spec/models/agent_proposal_spec.rb +126 -0
  495. data/spec/models/agent_run_spec.rb +122 -0
  496. data/spec/models/ai_credits_spec.rb +2 -2
  497. data/spec/models/ai_usage_spec.rb +42 -0
  498. data/spec/models/ai_usage_text_spec.rb +54 -0
  499. data/spec/models/analytics_period_spec.rb +2 -2
  500. data/spec/models/analytics_summary_data_spec.rb +2 -2
  501. data/spec/models/analytics_summary_spec.rb +2 -2
  502. data/spec/models/api_activity_outcome_spec.rb +30 -0
  503. data/spec/models/api_activity_spec.rb +90 -0
  504. data/spec/models/api_key_ability_spec.rb +30 -0
  505. data/spec/models/api_key_input_spec.rb +54 -0
  506. data/spec/models/api_key_spec.rb +78 -0
  507. data/spec/models/approve_agent_proposal200_response_spec.rb +36 -0
  508. data/spec/models/approve_agent_proposal409_response_spec.rb +42 -0
  509. data/spec/models/approve_inbox_reply_draft403_response_spec.rb +46 -0
  510. data/spec/models/approve_post_request_spec.rb +2 -2
  511. data/spec/models/best_posting_times_spec.rb +2 -2
  512. data/spec/models/best_posting_times_times_inner_spec.rb +2 -2
  513. data/spec/models/blog_to_social200_response_spec.rb +8 -2
  514. data/spec/models/blog_to_social429_response_spec.rb +2 -2
  515. data/spec/models/blog_to_social_caption_spec.rb +2 -2
  516. data/spec/models/blog_to_social_input_spec.rb +8 -2
  517. data/spec/models/blog_to_social_media_spec.rb +2 -2
  518. data/spec/models/blog_to_social_response_spec.rb +2 -2
  519. data/spec/models/brand_voice_input_spec.rb +128 -0
  520. data/spec/models/brand_voice_meta_spec.rb +36 -0
  521. data/spec/models/brand_voice_spec.rb +134 -0
  522. data/spec/models/cancel_subscription422_response_errors_spec.rb +2 -2
  523. data/spec/models/cancel_subscription422_response_spec.rb +2 -2
  524. data/spec/models/cancel_subscription_request_spec.rb +2 -2
  525. data/spec/models/change_subscription_plan_request_spec.rb +2 -2
  526. data/spec/models/channel_account_spec.rb +94 -0
  527. data/spec/models/checkout_subscription200_response_spec.rb +2 -2
  528. data/spec/models/checkout_subscription_request_spec.rb +2 -2
  529. data/spec/models/coded_error_spec.rb +48 -0
  530. data/spec/models/competitor_detail_spec.rb +96 -0
  531. data/spec/models/competitor_input_spec.rb +42 -0
  532. data/spec/models/competitor_media_spec.rb +66 -0
  533. data/spec/models/competitor_snapshot_spec.rb +48 -0
  534. data/spec/models/competitor_spec.rb +84 -0
  535. data/spec/models/complete_chunked_upload_request_spec.rb +2 -2
  536. data/spec/models/connect_channel_input_spec.rb +54 -0
  537. data/spec/models/create_account_group201_response_spec.rb +36 -0
  538. data/spec/models/create_agent201_response_spec.rb +36 -0
  539. data/spec/models/create_api_key201_response_data_spec.rb +84 -0
  540. data/spec/models/create_api_key201_response_spec.rb +36 -0
  541. data/spec/models/create_hashtag_group201_response_spec.rb +36 -0
  542. data/spec/models/create_inbox_reply_draft201_response_spec.rb +36 -0
  543. data/spec/models/create_media_folder_request_spec.rb +2 -2
  544. data/spec/models/create_mention201_response_spec.rb +2 -2
  545. data/spec/models/create_recycling_rule201_response_spec.rb +36 -0
  546. data/spec/models/create_report_export201_response_spec.rb +36 -0
  547. data/spec/models/create_reseller_client201_response_spec.rb +36 -0
  548. data/spec/models/create_rss_feed201_response_spec.rb +36 -0
  549. data/spec/models/create_template201_response_spec.rb +36 -0
  550. data/spec/models/create_webhook_subscription201_response_data_spec.rb +72 -0
  551. data/spec/models/create_webhook_subscription201_response_spec.rb +36 -0
  552. data/spec/models/delete_agent200_response_spec.rb +36 -0
  553. data/spec/models/delete_media_bulk_request_items_inner_spec.rb +2 -2
  554. data/spec/models/delete_media_bulk_request_spec.rb +2 -2
  555. data/spec/models/delete_media_folder_request_spec.rb +2 -2
  556. data/spec/models/delete_mode_spec.rb +2 -2
  557. data/spec/models/delete_post_request_spec.rb +2 -2
  558. data/spec/models/delete_posts_bulk_request_spec.rb +2 -2
  559. data/spec/models/delete_receipts_bulk_request_spec.rb +2 -2
  560. data/spec/models/delete_result_spec.rb +2 -2
  561. data/spec/models/delete_user400_response_spec.rb +2 -2
  562. data/spec/models/delete_users_bulk_request_spec.rb +2 -2
  563. data/spec/models/delete_workspaces_bulk_request_spec.rb +2 -2
  564. data/spec/models/get_account_health200_response_spec.rb +36 -0
  565. data/spec/models/get_brand_voice200_response_spec.rb +36 -0
  566. data/spec/models/get_competitor200_response_spec.rb +36 -0
  567. data/spec/models/get_inbox_conversation200_response_spec.rb +36 -0
  568. data/spec/models/get_posting_schedule200_response_spec.rb +36 -0
  569. data/spec/models/get_remote_upload_status200_response_spec.rb +2 -2
  570. data/spec/models/get_report_branding200_response_spec.rb +36 -0
  571. data/spec/models/guardrail_error_spec.rb +70 -0
  572. data/spec/models/hashtag_group_input_spec.rb +42 -0
  573. data/spec/models/hashtag_group_spec.rb +48 -0
  574. data/spec/models/image_alt_text200_response_spec.rb +2 -2
  575. data/spec/models/image_alt_text_input_spec.rb +2 -2
  576. data/spec/models/image_alt_text_response_spec.rb +2 -2
  577. data/spec/models/image_credit_balance_spec.rb +66 -0
  578. data/spec/models/image_edit_input_spec.rb +8 -2
  579. data/spec/models/image_generate200_response_spec.rb +8 -2
  580. data/spec/models/image_generate429_response_spec.rb +2 -2
  581. data/spec/models/image_generate_input_spec.rb +8 -2
  582. data/spec/models/image_generation_response_spec.rb +2 -2
  583. data/spec/models/image_prompt200_response_spec.rb +8 -2
  584. data/spec/models/image_prompt429_response_spec.rb +2 -2
  585. data/spec/models/image_prompt_input_spec.rb +8 -2
  586. data/spec/models/image_prompt_response_spec.rb +2 -2
  587. data/spec/models/image_variations200_response_spec.rb +2 -2
  588. data/spec/models/image_variations_input_spec.rb +2 -2
  589. data/spec/models/image_variations_response_spec.rb +2 -2
  590. data/spec/models/inbox_author_spec.rb +48 -0
  591. data/spec/models/inbox_conversation_account_spec.rb +54 -0
  592. data/spec/models/inbox_conversation_spec.rb +128 -0
  593. data/spec/models/inbox_conversation_update_spec.rb +46 -0
  594. data/spec/models/inbox_message_author_spec.rb +48 -0
  595. data/spec/models/inbox_message_spec.rb +90 -0
  596. data/spec/models/inbox_reply_draft_approve_spec.rb +36 -0
  597. data/spec/models/inbox_reply_draft_edit_spec.rb +36 -0
  598. data/spec/models/inbox_reply_draft_input_spec.rb +42 -0
  599. data/spec/models/inbox_reply_draft_spec.rb +116 -0
  600. data/spec/models/initiate_chunked_upload201_response_spec.rb +2 -2
  601. data/spec/models/initiate_chunked_upload_request_spec.rb +2 -2
  602. data/spec/models/initiate_remote_upload201_response_one_of_spec.rb +2 -2
  603. data/spec/models/initiate_remote_upload201_response_spec.rb +2 -2
  604. data/spec/models/initiate_remote_upload_request_spec.rb +2 -2
  605. data/spec/models/learn_brand_voice_input_spec.rb +54 -0
  606. data/spec/models/learn_brand_voice_response_meta_spec.rb +60 -0
  607. data/spec/models/learn_brand_voice_response_spec.rb +42 -0
  608. data/spec/models/list_account_groups200_response_spec.rb +48 -0
  609. data/spec/models/list_accounts200_response_spec.rb +2 -2
  610. data/spec/models/list_agent_proposals200_response_spec.rb +42 -0
  611. data/spec/models/list_agent_runs200_response_spec.rb +42 -0
  612. data/spec/models/list_agents200_response_spec.rb +36 -0
  613. data/spec/models/list_api_activity200_response_spec.rb +48 -0
  614. data/spec/models/list_api_keys200_response_spec.rb +36 -0
  615. data/spec/models/list_competitors200_response_spec.rb +36 -0
  616. data/spec/models/list_hashtag_groups200_response_spec.rb +48 -0
  617. data/spec/models/list_inbox_conversations200_response_spec.rb +48 -0
  618. data/spec/models/list_inbox_reply_drafts200_response_spec.rb +48 -0
  619. data/spec/models/list_media200_response_spec.rb +2 -2
  620. data/spec/models/list_media_folders200_response_spec.rb +2 -2
  621. data/spec/models/list_mentions200_response_spec.rb +2 -2
  622. data/spec/models/list_my_workspaces200_response_spec.rb +2 -2
  623. data/spec/models/list_posts200_response_spec.rb +2 -2
  624. data/spec/models/list_receipts200_response_spec.rb +2 -2
  625. data/spec/models/list_recycling_rules200_response_spec.rb +36 -0
  626. data/spec/models/list_recycling_runs200_response_spec.rb +36 -0
  627. data/spec/models/list_report_exports200_response_spec.rb +36 -0
  628. data/spec/models/list_reseller_clients200_response_spec.rb +42 -0
  629. data/spec/models/list_rss_feeds200_response_spec.rb +36 -0
  630. data/spec/models/list_tags200_response_spec.rb +2 -2
  631. data/spec/models/list_templates200_response_spec.rb +48 -0
  632. data/spec/models/list_users200_response_spec.rb +2 -2
  633. data/spec/models/list_webhook_subscriptions200_response_spec.rb +36 -0
  634. data/spec/models/list_workspaces200_response_spec.rb +2 -2
  635. data/spec/models/media_base64_input_spec.rb +54 -0
  636. data/spec/models/media_folder_input_spec.rb +2 -2
  637. data/spec/models/media_folder_ref_spec.rb +2 -2
  638. data/spec/models/media_folder_spec.rb +2 -2
  639. data/spec/models/media_spec.rb +2 -2
  640. data/spec/models/mention_identity_input_spec.rb +2 -2
  641. data/spec/models/mention_identity_spec.rb +2 -2
  642. data/spec/models/mention_input_spec.rb +2 -2
  643. data/spec/models/mention_spec.rb +2 -2
  644. data/spec/models/message_only_spec.rb +36 -0
  645. data/spec/models/pagination_meta_links_spec.rb +2 -2
  646. data/spec/models/pagination_meta_meta_spec.rb +2 -2
  647. data/spec/models/pagination_meta_spec.rb +2 -2
  648. data/spec/models/poll_rss_feed200_response_spec.rb +48 -0
  649. data/spec/models/post_analytics_spec.rb +2 -2
  650. data/spec/models/post_content_spec.rb +2 -2
  651. data/spec/models/post_input_spec.rb +14 -2
  652. data/spec/models/post_options_instagram_spec.rb +52 -0
  653. data/spec/models/post_options_tik_tok_spec.rb +88 -0
  654. data/spec/models/post_options_youtube_spec.rb +58 -0
  655. data/spec/models/post_spec.rb +2 -2
  656. data/spec/models/post_status_spec.rb +2 -2
  657. data/spec/models/post_version_options_spec.rb +54 -0
  658. data/spec/models/post_version_spec.rb +2 -2
  659. data/spec/models/posting_schedule_day_spec.rb +48 -0
  660. data/spec/models/posting_schedule_day_times_inner_spec.rb +36 -0
  661. data/spec/models/posting_schedule_input_spec.rb +54 -0
  662. data/spec/models/posting_schedule_spec.rb +66 -0
  663. data/spec/models/posting_time_slot_spec.rb +2 -2
  664. data/spec/models/posting_times_best_inner_spec.rb +2 -2
  665. data/spec/models/posting_times_day_intervals_inner_inner_spec.rb +2 -2
  666. data/spec/models/posting_times_days_inner_spec.rb +2 -2
  667. data/spec/models/posting_times_spec.rb +2 -2
  668. data/spec/models/preflight_result_spec.rb +60 -0
  669. data/spec/models/public_workspace_pivot_spec.rb +2 -2
  670. data/spec/models/public_workspace_spec.rb +2 -2
  671. data/spec/models/publish_progress_spec.rb +2 -2
  672. data/spec/models/queue_slots_spec.rb +42 -0
  673. data/spec/models/receipt_input_spec.rb +2 -2
  674. data/spec/models/receipt_spec.rb +2 -2
  675. data/spec/models/receipt_update_input_spec.rb +2 -2
  676. data/spec/models/recommended_posting_times_spec.rb +60 -0
  677. data/spec/models/reconnect_link_spec.rb +48 -0
  678. data/spec/models/recycling_rule_input_spec.rb +92 -0
  679. data/spec/models/recycling_rule_settings_spec.rb +70 -0
  680. data/spec/models/recycling_rule_spec.rb +116 -0
  681. data/spec/models/recycling_rule_update_spec.rb +70 -0
  682. data/spec/models/recycling_run_spec.rb +70 -0
  683. data/spec/models/remove_generic_subscription422_response_spec.rb +2 -2
  684. data/spec/models/remove_user_from_workspace_request_spec.rb +2 -2
  685. data/spec/models/report_branding_input_spec.rb +54 -0
  686. data/spec/models/report_branding_spec.rb +66 -0
  687. data/spec/models/report_export_input_spec.rb +78 -0
  688. data/spec/models/report_export_spec.rb +120 -0
  689. data/spec/models/repurpose_content200_response_spec.rb +42 -0
  690. data/spec/models/repurpose_input_spec.rb +164 -0
  691. data/spec/models/repurpose_input_theme_spec.rb +48 -0
  692. data/spec/models/repurpose_result_media_spec.rb +42 -0
  693. data/spec/models/repurpose_result_source_spec.rb +52 -0
  694. data/spec/models/repurpose_result_spec.rb +78 -0
  695. data/spec/models/repurpose_slide_spec.rb +42 -0
  696. data/spec/models/reseller_client_input_spec.rb +36 -0
  697. data/spec/models/reseller_client_spec.rb +82 -0
  698. data/spec/models/reseller_client_usage_spec.rb +42 -0
  699. data/spec/models/retry_post_account_result_spec.rb +2 -2
  700. data/spec/models/rss_feed_input_spec.rb +76 -0
  701. data/spec/models/rss_feed_spec.rb +100 -0
  702. data/spec/models/rss_feed_update_spec.rb +76 -0
  703. data/spec/models/run_agent202_response_spec.rb +36 -0
  704. data/spec/models/schedule_post_request_spec.rb +2 -2
  705. data/spec/models/schedule_result_spec.rb +2 -2
  706. data/spec/models/subscription_input_spec.rb +2 -2
  707. data/spec/models/subscription_spec.rb +2 -2
  708. data/spec/models/subscription_status_spec.rb +2 -2
  709. data/spec/models/subscription_update_input_spec.rb +2 -2
  710. data/spec/models/tag_input_spec.rb +2 -2
  711. data/spec/models/tag_spec.rb +2 -2
  712. data/spec/models/template_content_item_spec.rb +42 -0
  713. data/spec/models/template_input_content_inner_spec.rb +42 -0
  714. data/spec/models/template_input_spec.rb +42 -0
  715. data/spec/models/template_spec.rb +48 -0
  716. data/spec/models/update_media_request_spec.rb +2 -2
  717. data/spec/models/upload_chunk201_response_spec.rb +2 -2
  718. data/spec/models/user_input_spec.rb +2 -2
  719. data/spec/models/user_spec.rb +2 -2
  720. data/spec/models/user_update_input_spec.rb +2 -2
  721. data/spec/models/webhook_event_name_spec.rb +30 -0
  722. data/spec/models/webhook_event_payload_spec.rb +42 -0
  723. data/spec/models/webhook_subscription_input_spec.rb +58 -0
  724. data/spec/models/webhook_subscription_spec.rb +66 -0
  725. data/spec/models/workspace_agent_input_spec.rb +68 -0
  726. data/spec/models/workspace_agent_settings_spec.rb +60 -0
  727. data/spec/models/workspace_agent_spec.rb +92 -0
  728. data/spec/models/workspace_agent_update_spec.rb +58 -0
  729. data/spec/models/workspace_input_spec.rb +2 -2
  730. data/spec/models/workspace_spec.rb +2 -2
  731. data/spec/models/workspace_user_input_spec.rb +2 -2
  732. data/spec/models/x_usage_counter_spec.rb +42 -0
  733. data/spec/models/x_usage_spec.rb +66 -0
  734. data/spec/spec_helper.rb +2 -2
  735. metadata +615 -4
@@ -0,0 +1,395 @@
1
+ =begin
2
+ #PostBoost API
3
+
4
+ #The PostBoost REST API lets you publish, schedule, and analyze social media posts across 12+ platforms from a single integration. No OAuth apps to maintain — PostBoost handles platform authorization for you. ## Base URL All workspace-scoped endpoints are prefixed with `/{workspaceUuid}`. Panel/admin endpoints are prefixed with `/panel`. ## Plan access Every workspace-scoped endpoint returns `403` when the workspace's plan does not include API access (capability `api`). ## Dates and times Post dates and times (`date`, `time`, `accounts_schedule`) are read in the request's `timezone` when one is given, otherwise in the workspace timezone. ## Idempotent requests Send an `Idempotency-Key` header (any unique string, for example a UUID) with a `POST`. Repeating the request with the same key within 24 hours returns the stored response with `Idempotent-Replayed: true` and creates nothing new. Reusing a key with a different body returns `422`; a request still in progress with the same key returns `409`. `5xx` and `429` responses are not stored, so they can be retried with the same key. ## Guardrails for automated clients Create and update requests are checked before anything is written: a post whose content matches one created for the same account in the last 24 hours returns `409` (`code: duplicate_post`, override with `allow_duplicate: true`), scheduling past an account's daily cap returns `429` (`code: account_daily_cap_reached`), and scheduling to an account that must be reconnected returns `422` (`code: account_unauthorized` or `account_token_missing`). Use `POST /{workspaceUuid}/posts/validate` for a dry run and `GET /{workspaceUuid}/activity` to review what API clients did. ## Authentication All requests require a Bearer token in the `Authorization` header. Generate tokens in your PostBoost dashboard under **Settings → Access Tokens**. ``` Authorization: Bearer YOUR_API_TOKEN ```
5
+
6
+ The version of the OpenAPI document: 1.14.0
7
+ Contact: hi@postboost.co
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.9.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module PostBoost
16
+ class AccountGroupsApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Create an account group
23
+ # Creates a named set of accounts of this workspace. Admins and members only (not viewers).
24
+ # @param workspace_uuid [String] UUID of the workspace.
25
+ # @param account_group_input [AccountGroupInput]
26
+ # @param [Hash] opts the optional parameters
27
+ # @return [CreateAccountGroup201Response]
28
+ def create_account_group(workspace_uuid, account_group_input, opts = {})
29
+ data, _status_code, _headers = create_account_group_with_http_info(workspace_uuid, account_group_input, opts)
30
+ data
31
+ end
32
+
33
+ # Create an account group
34
+ # Creates a named set of accounts of this workspace. Admins and members only (not viewers).
35
+ # @param workspace_uuid [String] UUID of the workspace.
36
+ # @param account_group_input [AccountGroupInput]
37
+ # @param [Hash] opts the optional parameters
38
+ # @return [Array<(CreateAccountGroup201Response, Integer, Hash)>] CreateAccountGroup201Response data, response status code and response headers
39
+ def create_account_group_with_http_info(workspace_uuid, account_group_input, opts = {})
40
+ if @api_client.config.debugging
41
+ @api_client.config.logger.debug 'Calling API: AccountGroupsApi.create_account_group ...'
42
+ end
43
+ # verify the required parameter 'workspace_uuid' is set
44
+ if @api_client.config.client_side_validation && workspace_uuid.nil?
45
+ fail ArgumentError, "Missing the required parameter 'workspace_uuid' when calling AccountGroupsApi.create_account_group"
46
+ end
47
+ # verify the required parameter 'account_group_input' is set
48
+ if @api_client.config.client_side_validation && account_group_input.nil?
49
+ fail ArgumentError, "Missing the required parameter 'account_group_input' when calling AccountGroupsApi.create_account_group"
50
+ end
51
+ # resource path
52
+ local_var_path = '/{workspaceUuid}/account-groups'.sub('{' + 'workspaceUuid' + '}', CGI.escape(workspace_uuid.to_s))
53
+
54
+ # query parameters
55
+ query_params = opts[:query_params] || {}
56
+
57
+ # header parameters
58
+ header_params = opts[:header_params] || {}
59
+ # HTTP header 'Accept' (if needed)
60
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
61
+ # HTTP header 'Content-Type'
62
+ content_type = @api_client.select_header_content_type(['application/json'])
63
+ if !content_type.nil?
64
+ header_params['Content-Type'] = content_type
65
+ end
66
+
67
+ # form parameters
68
+ form_params = opts[:form_params] || {}
69
+
70
+ # http body (model)
71
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(account_group_input)
72
+
73
+ # return_type
74
+ return_type = opts[:debug_return_type] || 'CreateAccountGroup201Response'
75
+
76
+ # auth_names
77
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
78
+
79
+ new_options = opts.merge(
80
+ :operation => :"AccountGroupsApi.create_account_group",
81
+ :header_params => header_params,
82
+ :query_params => query_params,
83
+ :form_params => form_params,
84
+ :body => post_body,
85
+ :auth_names => auth_names,
86
+ :return_type => return_type
87
+ )
88
+
89
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
90
+ if @api_client.config.debugging
91
+ @api_client.config.logger.debug "API called: AccountGroupsApi#create_account_group\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
92
+ end
93
+ return data, status_code, headers
94
+ end
95
+
96
+ # Delete an account group
97
+ # Deletes the group, not its accounts. Admins and members only (not viewers).
98
+ # @param workspace_uuid [String] UUID of the workspace.
99
+ # @param account_group_uuid [String] The account group &#x60;uuid&#x60;.
100
+ # @param [Hash] opts the optional parameters
101
+ # @return [nil]
102
+ def delete_account_group(workspace_uuid, account_group_uuid, opts = {})
103
+ delete_account_group_with_http_info(workspace_uuid, account_group_uuid, opts)
104
+ nil
105
+ end
106
+
107
+ # Delete an account group
108
+ # Deletes the group, not its accounts. Admins and members only (not viewers).
109
+ # @param workspace_uuid [String] UUID of the workspace.
110
+ # @param account_group_uuid [String] The account group &#x60;uuid&#x60;.
111
+ # @param [Hash] opts the optional parameters
112
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
113
+ def delete_account_group_with_http_info(workspace_uuid, account_group_uuid, opts = {})
114
+ if @api_client.config.debugging
115
+ @api_client.config.logger.debug 'Calling API: AccountGroupsApi.delete_account_group ...'
116
+ end
117
+ # verify the required parameter 'workspace_uuid' is set
118
+ if @api_client.config.client_side_validation && workspace_uuid.nil?
119
+ fail ArgumentError, "Missing the required parameter 'workspace_uuid' when calling AccountGroupsApi.delete_account_group"
120
+ end
121
+ # verify the required parameter 'account_group_uuid' is set
122
+ if @api_client.config.client_side_validation && account_group_uuid.nil?
123
+ fail ArgumentError, "Missing the required parameter 'account_group_uuid' when calling AccountGroupsApi.delete_account_group"
124
+ end
125
+ # resource path
126
+ local_var_path = '/{workspaceUuid}/account-groups/{accountGroupUuid}'.sub('{' + 'workspaceUuid' + '}', CGI.escape(workspace_uuid.to_s)).sub('{' + 'accountGroupUuid' + '}', CGI.escape(account_group_uuid.to_s))
127
+
128
+ # query parameters
129
+ query_params = opts[:query_params] || {}
130
+
131
+ # header parameters
132
+ header_params = opts[:header_params] || {}
133
+ # HTTP header 'Accept' (if needed)
134
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
135
+
136
+ # form parameters
137
+ form_params = opts[:form_params] || {}
138
+
139
+ # http body (model)
140
+ post_body = opts[:debug_body]
141
+
142
+ # return_type
143
+ return_type = opts[:debug_return_type]
144
+
145
+ # auth_names
146
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
147
+
148
+ new_options = opts.merge(
149
+ :operation => :"AccountGroupsApi.delete_account_group",
150
+ :header_params => header_params,
151
+ :query_params => query_params,
152
+ :form_params => form_params,
153
+ :body => post_body,
154
+ :auth_names => auth_names,
155
+ :return_type => return_type
156
+ )
157
+
158
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
159
+ if @api_client.config.debugging
160
+ @api_client.config.logger.debug "API called: AccountGroupsApi#delete_account_group\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
161
+ end
162
+ return data, status_code, headers
163
+ end
164
+
165
+ # Get an account group
166
+ # One account group.
167
+ # @param workspace_uuid [String] UUID of the workspace.
168
+ # @param account_group_uuid [String] The account group &#x60;uuid&#x60;.
169
+ # @param [Hash] opts the optional parameters
170
+ # @return [CreateAccountGroup201Response]
171
+ def get_account_group(workspace_uuid, account_group_uuid, opts = {})
172
+ data, _status_code, _headers = get_account_group_with_http_info(workspace_uuid, account_group_uuid, opts)
173
+ data
174
+ end
175
+
176
+ # Get an account group
177
+ # One account group.
178
+ # @param workspace_uuid [String] UUID of the workspace.
179
+ # @param account_group_uuid [String] The account group &#x60;uuid&#x60;.
180
+ # @param [Hash] opts the optional parameters
181
+ # @return [Array<(CreateAccountGroup201Response, Integer, Hash)>] CreateAccountGroup201Response data, response status code and response headers
182
+ def get_account_group_with_http_info(workspace_uuid, account_group_uuid, opts = {})
183
+ if @api_client.config.debugging
184
+ @api_client.config.logger.debug 'Calling API: AccountGroupsApi.get_account_group ...'
185
+ end
186
+ # verify the required parameter 'workspace_uuid' is set
187
+ if @api_client.config.client_side_validation && workspace_uuid.nil?
188
+ fail ArgumentError, "Missing the required parameter 'workspace_uuid' when calling AccountGroupsApi.get_account_group"
189
+ end
190
+ # verify the required parameter 'account_group_uuid' is set
191
+ if @api_client.config.client_side_validation && account_group_uuid.nil?
192
+ fail ArgumentError, "Missing the required parameter 'account_group_uuid' when calling AccountGroupsApi.get_account_group"
193
+ end
194
+ # resource path
195
+ local_var_path = '/{workspaceUuid}/account-groups/{accountGroupUuid}'.sub('{' + 'workspaceUuid' + '}', CGI.escape(workspace_uuid.to_s)).sub('{' + 'accountGroupUuid' + '}', CGI.escape(account_group_uuid.to_s))
196
+
197
+ # query parameters
198
+ query_params = opts[:query_params] || {}
199
+
200
+ # header parameters
201
+ header_params = opts[:header_params] || {}
202
+ # HTTP header 'Accept' (if needed)
203
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
204
+
205
+ # form parameters
206
+ form_params = opts[:form_params] || {}
207
+
208
+ # http body (model)
209
+ post_body = opts[:debug_body]
210
+
211
+ # return_type
212
+ return_type = opts[:debug_return_type] || 'CreateAccountGroup201Response'
213
+
214
+ # auth_names
215
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
216
+
217
+ new_options = opts.merge(
218
+ :operation => :"AccountGroupsApi.get_account_group",
219
+ :header_params => header_params,
220
+ :query_params => query_params,
221
+ :form_params => form_params,
222
+ :body => post_body,
223
+ :auth_names => auth_names,
224
+ :return_type => return_type
225
+ )
226
+
227
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
228
+ if @api_client.config.debugging
229
+ @api_client.config.logger.debug "API called: AccountGroupsApi#get_account_group\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
230
+ end
231
+ return data, status_code, headers
232
+ end
233
+
234
+ # List account groups
235
+ # Named sets of accounts, sorted by name, with their account ids. Pass `account_ids` as `accounts` when you create a post to publish to the whole group. Paginated with `page` and `per_page` (default 100). A key limited to some accounts only sees groups whose accounts are all among its accounts, and `meta.total` counts only those.
236
+ # @param workspace_uuid [String] UUID of the workspace.
237
+ # @param [Hash] opts the optional parameters
238
+ # @option opts [Integer] :page Page number (1-based). (default to 1)
239
+ # @option opts [Integer] :per_page Items per page, 1-100. (default to 100)
240
+ # @return [ListAccountGroups200Response]
241
+ def list_account_groups(workspace_uuid, opts = {})
242
+ data, _status_code, _headers = list_account_groups_with_http_info(workspace_uuid, opts)
243
+ data
244
+ end
245
+
246
+ # List account groups
247
+ # Named sets of accounts, sorted by name, with their account ids. Pass &#x60;account_ids&#x60; as &#x60;accounts&#x60; when you create a post to publish to the whole group. Paginated with &#x60;page&#x60; and &#x60;per_page&#x60; (default 100). A key limited to some accounts only sees groups whose accounts are all among its accounts, and &#x60;meta.total&#x60; counts only those.
248
+ # @param workspace_uuid [String] UUID of the workspace.
249
+ # @param [Hash] opts the optional parameters
250
+ # @option opts [Integer] :page Page number (1-based). (default to 1)
251
+ # @option opts [Integer] :per_page Items per page, 1-100. (default to 100)
252
+ # @return [Array<(ListAccountGroups200Response, Integer, Hash)>] ListAccountGroups200Response data, response status code and response headers
253
+ def list_account_groups_with_http_info(workspace_uuid, opts = {})
254
+ if @api_client.config.debugging
255
+ @api_client.config.logger.debug 'Calling API: AccountGroupsApi.list_account_groups ...'
256
+ end
257
+ # verify the required parameter 'workspace_uuid' is set
258
+ if @api_client.config.client_side_validation && workspace_uuid.nil?
259
+ fail ArgumentError, "Missing the required parameter 'workspace_uuid' when calling AccountGroupsApi.list_account_groups"
260
+ end
261
+ if @api_client.config.client_side_validation && !opts[:'page'].nil? && opts[:'page'] < 1
262
+ fail ArgumentError, 'invalid value for "opts[:"page"]" when calling AccountGroupsApi.list_account_groups, must be greater than or equal to 1.'
263
+ end
264
+
265
+ if @api_client.config.client_side_validation && !opts[:'per_page'].nil? && opts[:'per_page'] > 100
266
+ fail ArgumentError, 'invalid value for "opts[:"per_page"]" when calling AccountGroupsApi.list_account_groups, must be smaller than or equal to 100.'
267
+ end
268
+
269
+ if @api_client.config.client_side_validation && !opts[:'per_page'].nil? && opts[:'per_page'] < 1
270
+ fail ArgumentError, 'invalid value for "opts[:"per_page"]" when calling AccountGroupsApi.list_account_groups, must be greater than or equal to 1.'
271
+ end
272
+
273
+ # resource path
274
+ local_var_path = '/{workspaceUuid}/account-groups'.sub('{' + 'workspaceUuid' + '}', CGI.escape(workspace_uuid.to_s))
275
+
276
+ # query parameters
277
+ query_params = opts[:query_params] || {}
278
+ query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
279
+ query_params[:'per_page'] = opts[:'per_page'] if !opts[:'per_page'].nil?
280
+
281
+ # header parameters
282
+ header_params = opts[:header_params] || {}
283
+ # HTTP header 'Accept' (if needed)
284
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
285
+
286
+ # form parameters
287
+ form_params = opts[:form_params] || {}
288
+
289
+ # http body (model)
290
+ post_body = opts[:debug_body]
291
+
292
+ # return_type
293
+ return_type = opts[:debug_return_type] || 'ListAccountGroups200Response'
294
+
295
+ # auth_names
296
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
297
+
298
+ new_options = opts.merge(
299
+ :operation => :"AccountGroupsApi.list_account_groups",
300
+ :header_params => header_params,
301
+ :query_params => query_params,
302
+ :form_params => form_params,
303
+ :body => post_body,
304
+ :auth_names => auth_names,
305
+ :return_type => return_type
306
+ )
307
+
308
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
309
+ if @api_client.config.debugging
310
+ @api_client.config.logger.debug "API called: AccountGroupsApi#list_account_groups\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
311
+ end
312
+ return data, status_code, headers
313
+ end
314
+
315
+ # Update an account group
316
+ # Replaces the name and the accounts of the group (accounts you leave out are removed). Admins and members only (not viewers).
317
+ # @param workspace_uuid [String] UUID of the workspace.
318
+ # @param account_group_uuid [String] The account group &#x60;uuid&#x60;.
319
+ # @param account_group_input [AccountGroupInput]
320
+ # @param [Hash] opts the optional parameters
321
+ # @return [CreateAccountGroup201Response]
322
+ def update_account_group(workspace_uuid, account_group_uuid, account_group_input, opts = {})
323
+ data, _status_code, _headers = update_account_group_with_http_info(workspace_uuid, account_group_uuid, account_group_input, opts)
324
+ data
325
+ end
326
+
327
+ # Update an account group
328
+ # Replaces the name and the accounts of the group (accounts you leave out are removed). Admins and members only (not viewers).
329
+ # @param workspace_uuid [String] UUID of the workspace.
330
+ # @param account_group_uuid [String] The account group &#x60;uuid&#x60;.
331
+ # @param account_group_input [AccountGroupInput]
332
+ # @param [Hash] opts the optional parameters
333
+ # @return [Array<(CreateAccountGroup201Response, Integer, Hash)>] CreateAccountGroup201Response data, response status code and response headers
334
+ def update_account_group_with_http_info(workspace_uuid, account_group_uuid, account_group_input, opts = {})
335
+ if @api_client.config.debugging
336
+ @api_client.config.logger.debug 'Calling API: AccountGroupsApi.update_account_group ...'
337
+ end
338
+ # verify the required parameter 'workspace_uuid' is set
339
+ if @api_client.config.client_side_validation && workspace_uuid.nil?
340
+ fail ArgumentError, "Missing the required parameter 'workspace_uuid' when calling AccountGroupsApi.update_account_group"
341
+ end
342
+ # verify the required parameter 'account_group_uuid' is set
343
+ if @api_client.config.client_side_validation && account_group_uuid.nil?
344
+ fail ArgumentError, "Missing the required parameter 'account_group_uuid' when calling AccountGroupsApi.update_account_group"
345
+ end
346
+ # verify the required parameter 'account_group_input' is set
347
+ if @api_client.config.client_side_validation && account_group_input.nil?
348
+ fail ArgumentError, "Missing the required parameter 'account_group_input' when calling AccountGroupsApi.update_account_group"
349
+ end
350
+ # resource path
351
+ local_var_path = '/{workspaceUuid}/account-groups/{accountGroupUuid}'.sub('{' + 'workspaceUuid' + '}', CGI.escape(workspace_uuid.to_s)).sub('{' + 'accountGroupUuid' + '}', CGI.escape(account_group_uuid.to_s))
352
+
353
+ # query parameters
354
+ query_params = opts[:query_params] || {}
355
+
356
+ # header parameters
357
+ header_params = opts[:header_params] || {}
358
+ # HTTP header 'Accept' (if needed)
359
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
360
+ # HTTP header 'Content-Type'
361
+ content_type = @api_client.select_header_content_type(['application/json'])
362
+ if !content_type.nil?
363
+ header_params['Content-Type'] = content_type
364
+ end
365
+
366
+ # form parameters
367
+ form_params = opts[:form_params] || {}
368
+
369
+ # http body (model)
370
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(account_group_input)
371
+
372
+ # return_type
373
+ return_type = opts[:debug_return_type] || 'CreateAccountGroup201Response'
374
+
375
+ # auth_names
376
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
377
+
378
+ new_options = opts.merge(
379
+ :operation => :"AccountGroupsApi.update_account_group",
380
+ :header_params => header_params,
381
+ :query_params => query_params,
382
+ :form_params => form_params,
383
+ :body => post_body,
384
+ :auth_names => auth_names,
385
+ :return_type => return_type
386
+ )
387
+
388
+ data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
389
+ if @api_client.config.debugging
390
+ @api_client.config.logger.debug "API called: AccountGroupsApi#update_account_group\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
391
+ end
392
+ return data, status_code, headers
393
+ end
394
+ end
395
+ end
@@ -1,9 +1,9 @@
1
1
  =begin
2
2
  #PostBoost API
3
3
 
4
- #The PostBoost REST API lets you publish, schedule, and analyze social media posts across 12+ platforms from a single integration. No OAuth apps to maintain — PostBoost handles platform authorization for you. ## Base URL All workspace-scoped endpoints are prefixed with `/{workspaceUuid}`. Panel/admin endpoints are prefixed with `/panel`. ## Plan access Every workspace-scoped endpoint returns `403` when the workspace's plan does not include API access (capability `api`). ## Dates and times Post dates and times (`date`, `time`, `accounts_schedule`) are read in the request's `timezone` when one is given, otherwise in the workspace timezone. ## Authentication All requests require a Bearer token in the `Authorization` header. Generate tokens in your PostBoost dashboard under **Settings → Access Tokens**. ``` Authorization: Bearer YOUR_API_TOKEN ```
4
+ #The PostBoost REST API lets you publish, schedule, and analyze social media posts across 12+ platforms from a single integration. No OAuth apps to maintain — PostBoost handles platform authorization for you. ## Base URL All workspace-scoped endpoints are prefixed with `/{workspaceUuid}`. Panel/admin endpoints are prefixed with `/panel`. ## Plan access Every workspace-scoped endpoint returns `403` when the workspace's plan does not include API access (capability `api`). ## Dates and times Post dates and times (`date`, `time`, `accounts_schedule`) are read in the request's `timezone` when one is given, otherwise in the workspace timezone. ## Idempotent requests Send an `Idempotency-Key` header (any unique string, for example a UUID) with a `POST`. Repeating the request with the same key within 24 hours returns the stored response with `Idempotent-Replayed: true` and creates nothing new. Reusing a key with a different body returns `422`; a request still in progress with the same key returns `409`. `5xx` and `429` responses are not stored, so they can be retried with the same key. ## Guardrails for automated clients Create and update requests are checked before anything is written: a post whose content matches one created for the same account in the last 24 hours returns `409` (`code: duplicate_post`, override with `allow_duplicate: true`), scheduling past an account's daily cap returns `429` (`code: account_daily_cap_reached`), and scheduling to an account that must be reconnected returns `422` (`code: account_unauthorized` or `account_token_missing`). Use `POST /{workspaceUuid}/posts/validate` for a dry run and `GET /{workspaceUuid}/activity` to review what API clients did. ## Authentication All requests require a Bearer token in the `Authorization` header. Generate tokens in your PostBoost dashboard under **Settings → Access Tokens**. ``` Authorization: Bearer YOUR_API_TOKEN ```
5
5
 
6
- The version of the OpenAPI document: 1.8.0
6
+ The version of the OpenAPI document: 1.14.0
7
7
  Contact: hi@postboost.co
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.9.0
@@ -19,6 +19,160 @@ module PostBoost
19
19
  def initialize(api_client = ApiClient.default)
20
20
  @api_client = api_client
21
21
  end
22
+ # Connect a Telegram, Discord or Slack channel
23
+ # Connects a channel that uses a bot token or a webhook URL instead of a login. The credentials are checked against the network first, stored encrypted and never returned. Connecting the same channel again updates it (`200`) instead of adding a second account. Workspace admins only; counts toward the plan's social account limit. - **telegram**: `bot_token` from @BotFather and `chat` (the channel's `@username`, or its numeric id such as `-1001234567890` for a private channel). The bot must be an administrator of the channel allowed to post messages. - **discord**: `webhook_url` from Channel settings → Integrations → Webhooks (`https://discord.com/api/webhooks/…`). - **slack**: `webhook_url` of an incoming webhook (`https://hooks.slack.com/services/…`) and an optional display `name`. Slack posts cannot be deleted from PostBoost, and images must be publicly reachable. Webhook URLs on any other host are refused (`422`) before any request is made.
24
+ # @param workspace_uuid [String] UUID of the workspace.
25
+ # @param provider [String]
26
+ # @param connect_channel_input [ConnectChannelInput]
27
+ # @param [Hash] opts the optional parameters
28
+ # @return [ChannelAccount]
29
+ def connect_channel(workspace_uuid, provider, connect_channel_input, opts = {})
30
+ data, _status_code, _headers = connect_channel_with_http_info(workspace_uuid, provider, connect_channel_input, opts)
31
+ data
32
+ end
33
+
34
+ # Connect a Telegram, Discord or Slack channel
35
+ # Connects a channel that uses a bot token or a webhook URL instead of a login. The credentials are checked against the network first, stored encrypted and never returned. Connecting the same channel again updates it (&#x60;200&#x60;) instead of adding a second account. Workspace admins only; counts toward the plan&#39;s social account limit. - **telegram**: &#x60;bot_token&#x60; from @BotFather and &#x60;chat&#x60; (the channel&#39;s &#x60;@username&#x60;, or its numeric id such as &#x60;-1001234567890&#x60; for a private channel). The bot must be an administrator of the channel allowed to post messages. - **discord**: &#x60;webhook_url&#x60; from Channel settings → Integrations → Webhooks (&#x60;https://discord.com/api/webhooks/…&#x60;). - **slack**: &#x60;webhook_url&#x60; of an incoming webhook (&#x60;https://hooks.slack.com/services/…&#x60;) and an optional display &#x60;name&#x60;. Slack posts cannot be deleted from PostBoost, and images must be publicly reachable. Webhook URLs on any other host are refused (&#x60;422&#x60;) before any request is made.
36
+ # @param workspace_uuid [String] UUID of the workspace.
37
+ # @param provider [String]
38
+ # @param connect_channel_input [ConnectChannelInput]
39
+ # @param [Hash] opts the optional parameters
40
+ # @return [Array<(ChannelAccount, Integer, Hash)>] ChannelAccount data, response status code and response headers
41
+ def connect_channel_with_http_info(workspace_uuid, provider, connect_channel_input, opts = {})
42
+ if @api_client.config.debugging
43
+ @api_client.config.logger.debug 'Calling API: AccountsApi.connect_channel ...'
44
+ end
45
+ # verify the required parameter 'workspace_uuid' is set
46
+ if @api_client.config.client_side_validation && workspace_uuid.nil?
47
+ fail ArgumentError, "Missing the required parameter 'workspace_uuid' when calling AccountsApi.connect_channel"
48
+ end
49
+ # verify the required parameter 'provider' is set
50
+ if @api_client.config.client_side_validation && provider.nil?
51
+ fail ArgumentError, "Missing the required parameter 'provider' when calling AccountsApi.connect_channel"
52
+ end
53
+ # verify enum value
54
+ allowable_values = ["telegram", "discord", "slack"]
55
+ if @api_client.config.client_side_validation && !allowable_values.include?(provider)
56
+ fail ArgumentError, "invalid value for \"provider\", must be one of #{allowable_values}"
57
+ end
58
+ # verify the required parameter 'connect_channel_input' is set
59
+ if @api_client.config.client_side_validation && connect_channel_input.nil?
60
+ fail ArgumentError, "Missing the required parameter 'connect_channel_input' when calling AccountsApi.connect_channel"
61
+ end
62
+ # resource path
63
+ local_var_path = '/{workspaceUuid}/accounts/connect/{provider}'.sub('{' + 'workspaceUuid' + '}', CGI.escape(workspace_uuid.to_s)).sub('{' + 'provider' + '}', CGI.escape(provider.to_s))
64
+
65
+ # query parameters
66
+ query_params = opts[:query_params] || {}
67
+
68
+ # header parameters
69
+ header_params = opts[:header_params] || {}
70
+ # HTTP header 'Accept' (if needed)
71
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
72
+ # HTTP header 'Content-Type'
73
+ content_type = @api_client.select_header_content_type(['application/json'])
74
+ if !content_type.nil?
75
+ header_params['Content-Type'] = content_type
76
+ end
77
+
78
+ # form parameters
79
+ form_params = opts[:form_params] || {}
80
+
81
+ # http body (model)
82
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(connect_channel_input)
83
+
84
+ # return_type
85
+ return_type = opts[:debug_return_type] || 'ChannelAccount'
86
+
87
+ # auth_names
88
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
89
+
90
+ new_options = opts.merge(
91
+ :operation => :"AccountsApi.connect_channel",
92
+ :header_params => header_params,
93
+ :query_params => query_params,
94
+ :form_params => form_params,
95
+ :body => post_body,
96
+ :auth_names => auth_names,
97
+ :return_type => return_type
98
+ )
99
+
100
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
101
+ if @api_client.config.debugging
102
+ @api_client.config.logger.debug "API called: AccountsApi#connect_channel\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
103
+ end
104
+ return data, status_code, headers
105
+ end
106
+
107
+ # Create a reconnect link
108
+ # Creates a single-use link (valid 7 days) that lets someone without a PostBoost login, such as an agency's client, re-authorize this one account on its network. The link only refreshes the connection of this account; signing in as a different profile or page changes nothing. Workspace admins only. Available for Facebook Pages, Instagram, Threads, LinkedIn, TikTok, YouTube and Pinterest. Returns `404` while the feature is not enabled on this instance.
109
+ # @param workspace_uuid [String] UUID of the workspace.
110
+ # @param account_uuid [String] UUID of the social media account.
111
+ # @param [Hash] opts the optional parameters
112
+ # @return [ReconnectLink]
113
+ def create_reconnect_link(workspace_uuid, account_uuid, opts = {})
114
+ data, _status_code, _headers = create_reconnect_link_with_http_info(workspace_uuid, account_uuid, opts)
115
+ data
116
+ end
117
+
118
+ # Create a reconnect link
119
+ # Creates a single-use link (valid 7 days) that lets someone without a PostBoost login, such as an agency&#39;s client, re-authorize this one account on its network. The link only refreshes the connection of this account; signing in as a different profile or page changes nothing. Workspace admins only. Available for Facebook Pages, Instagram, Threads, LinkedIn, TikTok, YouTube and Pinterest. Returns &#x60;404&#x60; while the feature is not enabled on this instance.
120
+ # @param workspace_uuid [String] UUID of the workspace.
121
+ # @param account_uuid [String] UUID of the social media account.
122
+ # @param [Hash] opts the optional parameters
123
+ # @return [Array<(ReconnectLink, Integer, Hash)>] ReconnectLink data, response status code and response headers
124
+ def create_reconnect_link_with_http_info(workspace_uuid, account_uuid, opts = {})
125
+ if @api_client.config.debugging
126
+ @api_client.config.logger.debug 'Calling API: AccountsApi.create_reconnect_link ...'
127
+ end
128
+ # verify the required parameter 'workspace_uuid' is set
129
+ if @api_client.config.client_side_validation && workspace_uuid.nil?
130
+ fail ArgumentError, "Missing the required parameter 'workspace_uuid' when calling AccountsApi.create_reconnect_link"
131
+ end
132
+ # verify the required parameter 'account_uuid' is set
133
+ if @api_client.config.client_side_validation && account_uuid.nil?
134
+ fail ArgumentError, "Missing the required parameter 'account_uuid' when calling AccountsApi.create_reconnect_link"
135
+ end
136
+ # resource path
137
+ local_var_path = '/{workspaceUuid}/accounts/{accountUuid}/reconnect-links'.sub('{' + 'workspaceUuid' + '}', CGI.escape(workspace_uuid.to_s)).sub('{' + 'accountUuid' + '}', CGI.escape(account_uuid.to_s))
138
+
139
+ # query parameters
140
+ query_params = opts[:query_params] || {}
141
+
142
+ # header parameters
143
+ header_params = opts[:header_params] || {}
144
+ # HTTP header 'Accept' (if needed)
145
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
146
+
147
+ # form parameters
148
+ form_params = opts[:form_params] || {}
149
+
150
+ # http body (model)
151
+ post_body = opts[:debug_body]
152
+
153
+ # return_type
154
+ return_type = opts[:debug_return_type] || 'ReconnectLink'
155
+
156
+ # auth_names
157
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
158
+
159
+ new_options = opts.merge(
160
+ :operation => :"AccountsApi.create_reconnect_link",
161
+ :header_params => header_params,
162
+ :query_params => query_params,
163
+ :form_params => form_params,
164
+ :body => post_body,
165
+ :auth_names => auth_names,
166
+ :return_type => return_type
167
+ )
168
+
169
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
170
+ if @api_client.config.debugging
171
+ @api_client.config.logger.debug "API called: AccountsApi#create_reconnect_link\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
172
+ end
173
+ return data, status_code, headers
174
+ end
175
+
22
176
  # Get account
23
177
  # Returns a single social media account.
24
178
  # @param workspace_uuid [String] UUID of the workspace.
@@ -88,6 +242,69 @@ module PostBoost
88
242
  return data, status_code, headers
89
243
  end
90
244
 
245
+ # Account health
246
+ # Pre-flight health of every account in the workspace: whether it is authorized and holds an access token, how much of its daily post cap (per UTC day, scheduled, awaiting approval and published posts) is used today, and its connection health: predicted token expiry, latest publish outcome and where to reconnect it. The `account.token_expiring` and `account.disconnected` webhooks report changes as they happen.
247
+ # @param workspace_uuid [String] UUID of the workspace.
248
+ # @param [Hash] opts the optional parameters
249
+ # @return [GetAccountHealth200Response]
250
+ def get_account_health(workspace_uuid, opts = {})
251
+ data, _status_code, _headers = get_account_health_with_http_info(workspace_uuid, opts)
252
+ data
253
+ end
254
+
255
+ # Account health
256
+ # Pre-flight health of every account in the workspace: whether it is authorized and holds an access token, how much of its daily post cap (per UTC day, scheduled, awaiting approval and published posts) is used today, and its connection health: predicted token expiry, latest publish outcome and where to reconnect it. The &#x60;account.token_expiring&#x60; and &#x60;account.disconnected&#x60; webhooks report changes as they happen.
257
+ # @param workspace_uuid [String] UUID of the workspace.
258
+ # @param [Hash] opts the optional parameters
259
+ # @return [Array<(GetAccountHealth200Response, Integer, Hash)>] GetAccountHealth200Response data, response status code and response headers
260
+ def get_account_health_with_http_info(workspace_uuid, opts = {})
261
+ if @api_client.config.debugging
262
+ @api_client.config.logger.debug 'Calling API: AccountsApi.get_account_health ...'
263
+ end
264
+ # verify the required parameter 'workspace_uuid' is set
265
+ if @api_client.config.client_side_validation && workspace_uuid.nil?
266
+ fail ArgumentError, "Missing the required parameter 'workspace_uuid' when calling AccountsApi.get_account_health"
267
+ end
268
+ # resource path
269
+ local_var_path = '/{workspaceUuid}/account-health'.sub('{' + 'workspaceUuid' + '}', CGI.escape(workspace_uuid.to_s))
270
+
271
+ # query parameters
272
+ query_params = opts[:query_params] || {}
273
+
274
+ # header parameters
275
+ header_params = opts[:header_params] || {}
276
+ # HTTP header 'Accept' (if needed)
277
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
278
+
279
+ # form parameters
280
+ form_params = opts[:form_params] || {}
281
+
282
+ # http body (model)
283
+ post_body = opts[:debug_body]
284
+
285
+ # return_type
286
+ return_type = opts[:debug_return_type] || 'GetAccountHealth200Response'
287
+
288
+ # auth_names
289
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
290
+
291
+ new_options = opts.merge(
292
+ :operation => :"AccountsApi.get_account_health",
293
+ :header_params => header_params,
294
+ :query_params => query_params,
295
+ :form_params => form_params,
296
+ :body => post_body,
297
+ :auth_names => auth_names,
298
+ :return_type => return_type
299
+ )
300
+
301
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
302
+ if @api_client.config.debugging
303
+ @api_client.config.logger.debug "API called: AccountsApi#get_account_health\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
304
+ end
305
+ return data, status_code, headers
306
+ end
307
+
91
308
  # List accounts
92
309
  # Returns all social media accounts connected to the workspace, newest first. Optional filters narrow the list.
93
310
  # @param workspace_uuid [String] UUID of the workspace.