postboost 1.21.0 → 1.23.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 (639) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -1
  3. data/docs/FreeToolBuildUtmUrlRequest.md +30 -0
  4. data/docs/FreeToolBuildUtmUrlResponse.md +20 -0
  5. data/docs/FreeToolCalculateEngagementRateRequest.md +32 -0
  6. data/docs/FreeToolCalculateEngagementRateResponse.md +24 -0
  7. data/docs/FreeToolCountCharactersRequest.md +20 -0
  8. data/docs/FreeToolCountCharactersResponse.md +20 -0
  9. data/docs/FreeToolCountCharactersResponseNetworksInner.md +28 -0
  10. data/docs/FreeToolError.md +24 -0
  11. data/docs/FreeToolFormatLinkedInPostRequest.md +22 -0
  12. data/docs/FreeToolFormatLinkedInPostResponse.md +26 -0
  13. data/docs/FreeToolGenerateFancyTextRequest.md +20 -0
  14. data/docs/FreeToolGenerateFancyTextResponse.md +18 -0
  15. data/docs/FreeToolGenerateFancyTextResponseStylesInner.md +22 -0
  16. data/docs/FreeToolList.md +18 -0
  17. data/docs/FreeToolListItem.md +30 -0
  18. data/docs/FreeToolSplitThreadRequest.md +22 -0
  19. data/docs/FreeToolSplitThreadResponse.md +20 -0
  20. data/docs/FreeToolSplitThreadResponsePostsInner.md +20 -0
  21. data/docs/FreeToolsApi.md +459 -0
  22. data/lib/postboost/api/account_groups_api.rb +1 -1
  23. data/lib/postboost/api/accounts_api.rb +1 -1
  24. data/lib/postboost/api/activity_api.rb +1 -1
  25. data/lib/postboost/api/agents_api.rb +1 -1
  26. data/lib/postboost/api/ai_api.rb +1 -1
  27. data/lib/postboost/api/analytics_api.rb +1 -1
  28. data/lib/postboost/api/competitors_api.rb +1 -1
  29. data/lib/postboost/api/free_tools_api.rb +487 -0
  30. data/lib/postboost/api/hashtag_groups_api.rb +1 -1
  31. data/lib/postboost/api/inbox_api.rb +1 -1
  32. data/lib/postboost/api/media_api.rb +1 -1
  33. data/lib/postboost/api/mentions_api.rb +1 -1
  34. data/lib/postboost/api/posting_schedule_api.rb +1 -1
  35. data/lib/postboost/api/posts_api.rb +1 -1
  36. data/lib/postboost/api/receipts_api.rb +1 -1
  37. data/lib/postboost/api/subscriptions_api.rb +1 -1
  38. data/lib/postboost/api/tags_api.rb +1 -1
  39. data/lib/postboost/api/templates_api.rb +1 -1
  40. data/lib/postboost/api/users_api.rb +1 -1
  41. data/lib/postboost/api/webhooks_api.rb +1 -1
  42. data/lib/postboost/api/workspaces_api.rb +1 -1
  43. data/lib/postboost/api_client.rb +1 -1
  44. data/lib/postboost/api_error.rb +1 -1
  45. data/lib/postboost/configuration.rb +1 -1
  46. data/lib/postboost/models/account.rb +1 -1
  47. data/lib/postboost/models/account_analytics.rb +1 -1
  48. data/lib/postboost/models/account_analytics_initial_sync.rb +1 -1
  49. data/lib/postboost/models/account_connection_health.rb +1 -1
  50. data/lib/postboost/models/account_errors_inner.rb +1 -1
  51. data/lib/postboost/models/account_errors_inner_one_of.rb +1 -1
  52. data/lib/postboost/models/account_group.rb +1 -1
  53. data/lib/postboost/models/account_group_input.rb +1 -1
  54. data/lib/postboost/models/account_health.rb +1 -1
  55. data/lib/postboost/models/account_health_daily_cap.rb +1 -1
  56. data/lib/postboost/models/account_schedule.rb +1 -1
  57. data/lib/postboost/models/add_competitor202_response.rb +1 -1
  58. data/lib/postboost/models/add_competitor409_response.rb +1 -1
  59. data/lib/postboost/models/add_generic_subscription_request.rb +1 -1
  60. data/lib/postboost/models/add_post_to_queue_request.rb +1 -1
  61. data/lib/postboost/models/agent_page_meta.rb +1 -1
  62. data/lib/postboost/models/agent_proposal.rb +1 -1
  63. data/lib/postboost/models/agent_proposal_decision.rb +1 -1
  64. data/lib/postboost/models/agent_run.rb +1 -1
  65. data/lib/postboost/models/ai_credits.rb +1 -1
  66. data/lib/postboost/models/ai_usage.rb +1 -1
  67. data/lib/postboost/models/ai_usage_text.rb +1 -1
  68. data/lib/postboost/models/analytics_period.rb +1 -1
  69. data/lib/postboost/models/analytics_summary.rb +1 -1
  70. data/lib/postboost/models/analytics_summary_data.rb +1 -1
  71. data/lib/postboost/models/api_activity.rb +1 -1
  72. data/lib/postboost/models/api_activity_outcome.rb +1 -1
  73. data/lib/postboost/models/api_key.rb +1 -1
  74. data/lib/postboost/models/api_key_ability.rb +1 -1
  75. data/lib/postboost/models/api_key_input.rb +1 -1
  76. data/lib/postboost/models/approve_agent_proposal200_response.rb +1 -1
  77. data/lib/postboost/models/approve_agent_proposal409_response.rb +1 -1
  78. data/lib/postboost/models/approve_inbox_reply_draft403_response.rb +1 -1
  79. data/lib/postboost/models/approve_post_request.rb +1 -1
  80. data/lib/postboost/models/best_posting_times.rb +1 -1
  81. data/lib/postboost/models/best_posting_times_times_inner.rb +1 -1
  82. data/lib/postboost/models/blog_to_social200_response.rb +1 -1
  83. data/lib/postboost/models/blog_to_social429_response.rb +1 -1
  84. data/lib/postboost/models/blog_to_social_caption.rb +1 -1
  85. data/lib/postboost/models/blog_to_social_input.rb +1 -1
  86. data/lib/postboost/models/blog_to_social_media.rb +1 -1
  87. data/lib/postboost/models/blog_to_social_response.rb +1 -1
  88. data/lib/postboost/models/brand_voice.rb +1 -1
  89. data/lib/postboost/models/brand_voice_input.rb +1 -1
  90. data/lib/postboost/models/brand_voice_meta.rb +1 -1
  91. data/lib/postboost/models/cancel_subscription422_response.rb +1 -1
  92. data/lib/postboost/models/cancel_subscription422_response_errors.rb +1 -1
  93. data/lib/postboost/models/cancel_subscription_request.rb +1 -1
  94. data/lib/postboost/models/change_subscription_plan_request.rb +1 -1
  95. data/lib/postboost/models/channel_account.rb +1 -1
  96. data/lib/postboost/models/checkout_subscription200_response.rb +1 -1
  97. data/lib/postboost/models/checkout_subscription_request.rb +1 -1
  98. data/lib/postboost/models/coded_error.rb +1 -1
  99. data/lib/postboost/models/competitor.rb +1 -1
  100. data/lib/postboost/models/competitor_detail.rb +1 -1
  101. data/lib/postboost/models/competitor_input.rb +1 -1
  102. data/lib/postboost/models/competitor_media.rb +1 -1
  103. data/lib/postboost/models/competitor_snapshot.rb +1 -1
  104. data/lib/postboost/models/complete_chunked_upload_request.rb +1 -1
  105. data/lib/postboost/models/connect_channel_input.rb +1 -1
  106. data/lib/postboost/models/create_account_group201_response.rb +1 -1
  107. data/lib/postboost/models/create_agent201_response.rb +1 -1
  108. data/lib/postboost/models/create_api_key201_response.rb +1 -1
  109. data/lib/postboost/models/create_api_key201_response_data.rb +1 -1
  110. data/lib/postboost/models/create_hashtag_group201_response.rb +1 -1
  111. data/lib/postboost/models/create_inbox_reply_draft201_response.rb +1 -1
  112. data/lib/postboost/models/create_media_folder_request.rb +1 -1
  113. data/lib/postboost/models/create_mention201_response.rb +1 -1
  114. data/lib/postboost/models/create_post201_response.rb +1 -1
  115. data/lib/postboost/models/create_recycling_rule201_response.rb +1 -1
  116. data/lib/postboost/models/create_report_export201_response.rb +1 -1
  117. data/lib/postboost/models/create_reseller_client201_response.rb +1 -1
  118. data/lib/postboost/models/create_rss_feed201_response.rb +1 -1
  119. data/lib/postboost/models/create_template201_response.rb +1 -1
  120. data/lib/postboost/models/create_webhook_subscription201_response.rb +1 -1
  121. data/lib/postboost/models/create_webhook_subscription201_response_data.rb +1 -1
  122. data/lib/postboost/models/delete_agent200_response.rb +1 -1
  123. data/lib/postboost/models/delete_media_bulk_request.rb +1 -1
  124. data/lib/postboost/models/delete_media_bulk_request_items_inner.rb +1 -1
  125. data/lib/postboost/models/delete_media_folder_request.rb +1 -1
  126. data/lib/postboost/models/delete_mode.rb +1 -1
  127. data/lib/postboost/models/delete_post_request.rb +1 -1
  128. data/lib/postboost/models/delete_posts_bulk_request.rb +1 -1
  129. data/lib/postboost/models/delete_receipts_bulk_request.rb +1 -1
  130. data/lib/postboost/models/delete_result.rb +1 -1
  131. data/lib/postboost/models/delete_user400_response.rb +1 -1
  132. data/lib/postboost/models/delete_users_bulk_request.rb +1 -1
  133. data/lib/postboost/models/delete_workspaces_bulk_request.rb +1 -1
  134. data/lib/postboost/models/free_tool_build_utm_url_request.rb +420 -0
  135. data/lib/postboost/models/free_tool_build_utm_url_response.rb +226 -0
  136. data/lib/postboost/models/free_tool_calculate_engagement_rate_request.rb +468 -0
  137. data/lib/postboost/models/free_tool_calculate_engagement_rate_response.rb +242 -0
  138. data/lib/postboost/models/free_tool_count_characters_request.rb +280 -0
  139. data/lib/postboost/models/free_tool_count_characters_response.rb +226 -0
  140. data/lib/postboost/models/free_tool_count_characters_response_networks_inner.rb +259 -0
  141. data/lib/postboost/models/free_tool_error.rb +251 -0
  142. data/lib/postboost/models/free_tool_format_linked_in_post_request.rb +306 -0
  143. data/lib/postboost/models/free_tool_format_linked_in_post_response.rb +251 -0
  144. data/lib/postboost/models/free_tool_generate_fancy_text_request.rb +284 -0
  145. data/lib/postboost/models/free_tool_generate_fancy_text_response.rb +216 -0
  146. data/lib/postboost/models/free_tool_generate_fancy_text_response_styles_inner.rb +233 -0
  147. data/lib/postboost/models/free_tool_list.rb +223 -0
  148. data/lib/postboost/models/free_tool_list_item.rb +344 -0
  149. data/lib/postboost/models/free_tool_split_thread_request.rb +293 -0
  150. data/lib/postboost/models/free_tool_split_thread_response.rb +225 -0
  151. data/lib/postboost/models/free_tool_split_thread_response_posts_inner.rb +224 -0
  152. data/lib/postboost/models/get_account_health200_response.rb +1 -1
  153. data/lib/postboost/models/get_brand_voice200_response.rb +1 -1
  154. data/lib/postboost/models/get_competitor200_response.rb +1 -1
  155. data/lib/postboost/models/get_inbox_conversation200_response.rb +1 -1
  156. data/lib/postboost/models/get_posting_schedule200_response.rb +1 -1
  157. data/lib/postboost/models/get_remote_upload_status200_response.rb +1 -1
  158. data/lib/postboost/models/get_report_branding200_response.rb +1 -1
  159. data/lib/postboost/models/get_repurpose_run200_response.rb +1 -1
  160. data/lib/postboost/models/guardrail_error.rb +1 -1
  161. data/lib/postboost/models/hashtag_group.rb +1 -1
  162. data/lib/postboost/models/hashtag_group_input.rb +1 -1
  163. data/lib/postboost/models/image_alt_text200_response.rb +1 -1
  164. data/lib/postboost/models/image_alt_text_input.rb +1 -1
  165. data/lib/postboost/models/image_alt_text_response.rb +1 -1
  166. data/lib/postboost/models/image_credit_balance.rb +1 -1
  167. data/lib/postboost/models/image_edit_input.rb +1 -1
  168. data/lib/postboost/models/image_generate200_response.rb +1 -1
  169. data/lib/postboost/models/image_generate429_response.rb +1 -1
  170. data/lib/postboost/models/image_generate_input.rb +1 -1
  171. data/lib/postboost/models/image_generation_response.rb +1 -1
  172. data/lib/postboost/models/image_prompt200_response.rb +1 -1
  173. data/lib/postboost/models/image_prompt429_response.rb +1 -1
  174. data/lib/postboost/models/image_prompt_input.rb +1 -1
  175. data/lib/postboost/models/image_prompt_response.rb +1 -1
  176. data/lib/postboost/models/image_variations200_response.rb +1 -1
  177. data/lib/postboost/models/image_variations_input.rb +1 -1
  178. data/lib/postboost/models/image_variations_response.rb +1 -1
  179. data/lib/postboost/models/inbox_author.rb +1 -1
  180. data/lib/postboost/models/inbox_conversation.rb +1 -1
  181. data/lib/postboost/models/inbox_conversation_account.rb +1 -1
  182. data/lib/postboost/models/inbox_conversation_update.rb +1 -1
  183. data/lib/postboost/models/inbox_message.rb +1 -1
  184. data/lib/postboost/models/inbox_message_author.rb +1 -1
  185. data/lib/postboost/models/inbox_reply_draft.rb +1 -1
  186. data/lib/postboost/models/inbox_reply_draft_approve.rb +1 -1
  187. data/lib/postboost/models/inbox_reply_draft_edit.rb +1 -1
  188. data/lib/postboost/models/inbox_reply_draft_input.rb +1 -1
  189. data/lib/postboost/models/initiate_chunked_upload201_response.rb +1 -1
  190. data/lib/postboost/models/initiate_chunked_upload_request.rb +1 -1
  191. data/lib/postboost/models/initiate_remote_upload201_response.rb +1 -1
  192. data/lib/postboost/models/initiate_remote_upload201_response_one_of.rb +1 -1
  193. data/lib/postboost/models/initiate_remote_upload_request.rb +1 -1
  194. data/lib/postboost/models/learn_brand_voice_input.rb +1 -1
  195. data/lib/postboost/models/learn_brand_voice_response.rb +1 -1
  196. data/lib/postboost/models/learn_brand_voice_response_meta.rb +1 -1
  197. data/lib/postboost/models/list_account_groups200_response.rb +1 -1
  198. data/lib/postboost/models/list_accounts200_response.rb +1 -1
  199. data/lib/postboost/models/list_agent_proposals200_response.rb +1 -1
  200. data/lib/postboost/models/list_agent_runs200_response.rb +1 -1
  201. data/lib/postboost/models/list_agents200_response.rb +1 -1
  202. data/lib/postboost/models/list_api_activity200_response.rb +1 -1
  203. data/lib/postboost/models/list_api_keys200_response.rb +1 -1
  204. data/lib/postboost/models/list_competitors200_response.rb +1 -1
  205. data/lib/postboost/models/list_hashtag_groups200_response.rb +1 -1
  206. data/lib/postboost/models/list_inbox_conversations200_response.rb +1 -1
  207. data/lib/postboost/models/list_inbox_reply_drafts200_response.rb +1 -1
  208. data/lib/postboost/models/list_media200_response.rb +1 -1
  209. data/lib/postboost/models/list_media_folders200_response.rb +1 -1
  210. data/lib/postboost/models/list_mentions200_response.rb +1 -1
  211. data/lib/postboost/models/list_my_workspaces200_response.rb +1 -1
  212. data/lib/postboost/models/list_posts200_response.rb +1 -1
  213. data/lib/postboost/models/list_receipts200_response.rb +1 -1
  214. data/lib/postboost/models/list_recycling_rules200_response.rb +1 -1
  215. data/lib/postboost/models/list_recycling_runs200_response.rb +1 -1
  216. data/lib/postboost/models/list_report_exports200_response.rb +1 -1
  217. data/lib/postboost/models/list_reseller_clients200_response.rb +1 -1
  218. data/lib/postboost/models/list_rss_feeds200_response.rb +1 -1
  219. data/lib/postboost/models/list_tags200_response.rb +1 -1
  220. data/lib/postboost/models/list_templates200_response.rb +1 -1
  221. data/lib/postboost/models/list_users200_response.rb +1 -1
  222. data/lib/postboost/models/list_webhook_subscriptions200_response.rb +1 -1
  223. data/lib/postboost/models/list_workspaces200_response.rb +1 -1
  224. data/lib/postboost/models/media.rb +1 -1
  225. data/lib/postboost/models/media_base64_input.rb +1 -1
  226. data/lib/postboost/models/media_folder.rb +1 -1
  227. data/lib/postboost/models/media_folder_input.rb +1 -1
  228. data/lib/postboost/models/media_folder_ref.rb +1 -1
  229. data/lib/postboost/models/mention.rb +1 -1
  230. data/lib/postboost/models/mention_identity.rb +1 -1
  231. data/lib/postboost/models/mention_identity_input.rb +1 -1
  232. data/lib/postboost/models/mention_input.rb +1 -1
  233. data/lib/postboost/models/message_only.rb +1 -1
  234. data/lib/postboost/models/pagination_meta.rb +1 -1
  235. data/lib/postboost/models/pagination_meta_links.rb +1 -1
  236. data/lib/postboost/models/pagination_meta_meta.rb +1 -1
  237. data/lib/postboost/models/poll_rss_feed200_response.rb +1 -1
  238. data/lib/postboost/models/post.rb +1 -1
  239. data/lib/postboost/models/post_analytics.rb +1 -1
  240. data/lib/postboost/models/post_content.rb +1 -1
  241. data/lib/postboost/models/post_input.rb +1 -1
  242. data/lib/postboost/models/post_options_instagram.rb +1 -1
  243. data/lib/postboost/models/post_options_tik_tok.rb +1 -1
  244. data/lib/postboost/models/post_options_youtube.rb +1 -1
  245. data/lib/postboost/models/post_status.rb +1 -1
  246. data/lib/postboost/models/post_version.rb +1 -1
  247. data/lib/postboost/models/post_version_options.rb +1 -1
  248. data/lib/postboost/models/post_warning.rb +1 -1
  249. data/lib/postboost/models/post_warnings.rb +1 -1
  250. data/lib/postboost/models/posting_schedule.rb +1 -1
  251. data/lib/postboost/models/posting_schedule_day.rb +1 -1
  252. data/lib/postboost/models/posting_schedule_day_times_inner.rb +1 -1
  253. data/lib/postboost/models/posting_schedule_input.rb +1 -1
  254. data/lib/postboost/models/posting_time_slot.rb +1 -1
  255. data/lib/postboost/models/posting_times.rb +1 -1
  256. data/lib/postboost/models/posting_times_best_inner.rb +1 -1
  257. data/lib/postboost/models/posting_times_day_intervals_inner_inner.rb +1 -1
  258. data/lib/postboost/models/posting_times_days_inner.rb +1 -1
  259. data/lib/postboost/models/preflight_result.rb +1 -1
  260. data/lib/postboost/models/public_workspace.rb +1 -1
  261. data/lib/postboost/models/public_workspace_pivot.rb +1 -1
  262. data/lib/postboost/models/publish_progress.rb +1 -1
  263. data/lib/postboost/models/queue_slots.rb +1 -1
  264. data/lib/postboost/models/receipt.rb +1 -1
  265. data/lib/postboost/models/receipt_input.rb +1 -1
  266. data/lib/postboost/models/receipt_update_input.rb +1 -1
  267. data/lib/postboost/models/recommended_posting_times.rb +1 -1
  268. data/lib/postboost/models/reconnect_link.rb +1 -1
  269. data/lib/postboost/models/recycling_rule.rb +1 -1
  270. data/lib/postboost/models/recycling_rule_input.rb +1 -1
  271. data/lib/postboost/models/recycling_rule_settings.rb +1 -1
  272. data/lib/postboost/models/recycling_rule_update.rb +1 -1
  273. data/lib/postboost/models/recycling_run.rb +1 -1
  274. data/lib/postboost/models/remove_generic_subscription422_response.rb +1 -1
  275. data/lib/postboost/models/remove_user_from_workspace_request.rb +1 -1
  276. data/lib/postboost/models/report_branding.rb +1 -1
  277. data/lib/postboost/models/report_branding_input.rb +1 -1
  278. data/lib/postboost/models/report_export.rb +1 -1
  279. data/lib/postboost/models/report_export_input.rb +1 -1
  280. data/lib/postboost/models/repurpose_content200_response.rb +1 -1
  281. data/lib/postboost/models/repurpose_content202_response.rb +1 -1
  282. data/lib/postboost/models/repurpose_content500_response.rb +1 -1
  283. data/lib/postboost/models/repurpose_input.rb +1 -1
  284. data/lib/postboost/models/repurpose_input_theme.rb +1 -1
  285. data/lib/postboost/models/repurpose_result.rb +1 -1
  286. data/lib/postboost/models/repurpose_result_media.rb +1 -1
  287. data/lib/postboost/models/repurpose_result_source.rb +1 -1
  288. data/lib/postboost/models/repurpose_run.rb +1 -1
  289. data/lib/postboost/models/repurpose_run_accepted.rb +1 -1
  290. data/lib/postboost/models/repurpose_slide.rb +1 -1
  291. data/lib/postboost/models/reseller_client.rb +1 -1
  292. data/lib/postboost/models/reseller_client_input.rb +1 -1
  293. data/lib/postboost/models/reseller_client_usage.rb +1 -1
  294. data/lib/postboost/models/retry_post_account_result.rb +1 -1
  295. data/lib/postboost/models/rss_feed.rb +1 -1
  296. data/lib/postboost/models/rss_feed_input.rb +1 -1
  297. data/lib/postboost/models/rss_feed_update.rb +1 -1
  298. data/lib/postboost/models/run_agent202_response.rb +1 -1
  299. data/lib/postboost/models/schedule_post_request.rb +1 -1
  300. data/lib/postboost/models/schedule_result.rb +1 -1
  301. data/lib/postboost/models/subscription.rb +1 -1
  302. data/lib/postboost/models/subscription_input.rb +1 -1
  303. data/lib/postboost/models/subscription_status.rb +1 -1
  304. data/lib/postboost/models/subscription_update_input.rb +1 -1
  305. data/lib/postboost/models/tag.rb +1 -1
  306. data/lib/postboost/models/tag_input.rb +1 -1
  307. data/lib/postboost/models/template.rb +1 -1
  308. data/lib/postboost/models/template_content_item.rb +1 -1
  309. data/lib/postboost/models/template_input.rb +1 -1
  310. data/lib/postboost/models/template_input_content_inner.rb +1 -1
  311. data/lib/postboost/models/update_media_request.rb +1 -1
  312. data/lib/postboost/models/update_post200_response.rb +1 -1
  313. data/lib/postboost/models/upload_chunk201_response.rb +1 -1
  314. data/lib/postboost/models/user.rb +1 -1
  315. data/lib/postboost/models/user_input.rb +1 -1
  316. data/lib/postboost/models/user_update_input.rb +1 -1
  317. data/lib/postboost/models/webhook_event_name.rb +1 -1
  318. data/lib/postboost/models/webhook_event_payload.rb +1 -1
  319. data/lib/postboost/models/webhook_subscription.rb +1 -1
  320. data/lib/postboost/models/webhook_subscription_input.rb +1 -1
  321. data/lib/postboost/models/workspace.rb +1 -1
  322. data/lib/postboost/models/workspace_agent.rb +1 -1
  323. data/lib/postboost/models/workspace_agent_input.rb +1 -1
  324. data/lib/postboost/models/workspace_agent_settings.rb +1 -1
  325. data/lib/postboost/models/workspace_agent_update.rb +1 -1
  326. data/lib/postboost/models/workspace_input.rb +1 -1
  327. data/lib/postboost/models/workspace_user_input.rb +1 -1
  328. data/lib/postboost/models/x_usage.rb +1 -1
  329. data/lib/postboost/models/x_usage_counter.rb +1 -1
  330. data/lib/postboost/version.rb +2 -2
  331. data/lib/postboost.rb +20 -1
  332. data/postboost.gemspec +1 -1
  333. data/spec/api/account_groups_api_spec.rb +1 -1
  334. data/spec/api/accounts_api_spec.rb +1 -1
  335. data/spec/api/activity_api_spec.rb +1 -1
  336. data/spec/api/agents_api_spec.rb +1 -1
  337. data/spec/api/ai_api_spec.rb +1 -1
  338. data/spec/api/analytics_api_spec.rb +1 -1
  339. data/spec/api/competitors_api_spec.rb +1 -1
  340. data/spec/api/free_tools_api_spec.rb +118 -0
  341. data/spec/api/hashtag_groups_api_spec.rb +1 -1
  342. data/spec/api/inbox_api_spec.rb +1 -1
  343. data/spec/api/media_api_spec.rb +1 -1
  344. data/spec/api/mentions_api_spec.rb +1 -1
  345. data/spec/api/posting_schedule_api_spec.rb +1 -1
  346. data/spec/api/posts_api_spec.rb +1 -1
  347. data/spec/api/receipts_api_spec.rb +1 -1
  348. data/spec/api/subscriptions_api_spec.rb +1 -1
  349. data/spec/api/tags_api_spec.rb +1 -1
  350. data/spec/api/templates_api_spec.rb +1 -1
  351. data/spec/api/users_api_spec.rb +1 -1
  352. data/spec/api/webhooks_api_spec.rb +1 -1
  353. data/spec/api/workspaces_api_spec.rb +1 -1
  354. data/spec/models/account_analytics_initial_sync_spec.rb +1 -1
  355. data/spec/models/account_analytics_spec.rb +1 -1
  356. data/spec/models/account_connection_health_spec.rb +1 -1
  357. data/spec/models/account_errors_inner_one_of_spec.rb +1 -1
  358. data/spec/models/account_errors_inner_spec.rb +1 -1
  359. data/spec/models/account_group_input_spec.rb +1 -1
  360. data/spec/models/account_group_spec.rb +1 -1
  361. data/spec/models/account_health_daily_cap_spec.rb +1 -1
  362. data/spec/models/account_health_spec.rb +1 -1
  363. data/spec/models/account_schedule_spec.rb +1 -1
  364. data/spec/models/account_spec.rb +1 -1
  365. data/spec/models/add_competitor202_response_spec.rb +1 -1
  366. data/spec/models/add_competitor409_response_spec.rb +1 -1
  367. data/spec/models/add_generic_subscription_request_spec.rb +1 -1
  368. data/spec/models/add_post_to_queue_request_spec.rb +1 -1
  369. data/spec/models/agent_page_meta_spec.rb +1 -1
  370. data/spec/models/agent_proposal_decision_spec.rb +1 -1
  371. data/spec/models/agent_proposal_spec.rb +1 -1
  372. data/spec/models/agent_run_spec.rb +1 -1
  373. data/spec/models/ai_credits_spec.rb +1 -1
  374. data/spec/models/ai_usage_spec.rb +1 -1
  375. data/spec/models/ai_usage_text_spec.rb +1 -1
  376. data/spec/models/analytics_period_spec.rb +1 -1
  377. data/spec/models/analytics_summary_data_spec.rb +1 -1
  378. data/spec/models/analytics_summary_spec.rb +1 -1
  379. data/spec/models/api_activity_outcome_spec.rb +1 -1
  380. data/spec/models/api_activity_spec.rb +1 -1
  381. data/spec/models/api_key_ability_spec.rb +1 -1
  382. data/spec/models/api_key_input_spec.rb +1 -1
  383. data/spec/models/api_key_spec.rb +1 -1
  384. data/spec/models/approve_agent_proposal200_response_spec.rb +1 -1
  385. data/spec/models/approve_agent_proposal409_response_spec.rb +1 -1
  386. data/spec/models/approve_inbox_reply_draft403_response_spec.rb +1 -1
  387. data/spec/models/approve_post_request_spec.rb +1 -1
  388. data/spec/models/best_posting_times_spec.rb +1 -1
  389. data/spec/models/best_posting_times_times_inner_spec.rb +1 -1
  390. data/spec/models/blog_to_social200_response_spec.rb +1 -1
  391. data/spec/models/blog_to_social429_response_spec.rb +1 -1
  392. data/spec/models/blog_to_social_caption_spec.rb +1 -1
  393. data/spec/models/blog_to_social_input_spec.rb +1 -1
  394. data/spec/models/blog_to_social_media_spec.rb +1 -1
  395. data/spec/models/blog_to_social_response_spec.rb +1 -1
  396. data/spec/models/brand_voice_input_spec.rb +1 -1
  397. data/spec/models/brand_voice_meta_spec.rb +1 -1
  398. data/spec/models/brand_voice_spec.rb +1 -1
  399. data/spec/models/cancel_subscription422_response_errors_spec.rb +1 -1
  400. data/spec/models/cancel_subscription422_response_spec.rb +1 -1
  401. data/spec/models/cancel_subscription_request_spec.rb +1 -1
  402. data/spec/models/change_subscription_plan_request_spec.rb +1 -1
  403. data/spec/models/channel_account_spec.rb +1 -1
  404. data/spec/models/checkout_subscription200_response_spec.rb +1 -1
  405. data/spec/models/checkout_subscription_request_spec.rb +1 -1
  406. data/spec/models/coded_error_spec.rb +1 -1
  407. data/spec/models/competitor_detail_spec.rb +1 -1
  408. data/spec/models/competitor_input_spec.rb +1 -1
  409. data/spec/models/competitor_media_spec.rb +1 -1
  410. data/spec/models/competitor_snapshot_spec.rb +1 -1
  411. data/spec/models/competitor_spec.rb +1 -1
  412. data/spec/models/complete_chunked_upload_request_spec.rb +1 -1
  413. data/spec/models/connect_channel_input_spec.rb +1 -1
  414. data/spec/models/create_account_group201_response_spec.rb +1 -1
  415. data/spec/models/create_agent201_response_spec.rb +1 -1
  416. data/spec/models/create_api_key201_response_data_spec.rb +1 -1
  417. data/spec/models/create_api_key201_response_spec.rb +1 -1
  418. data/spec/models/create_hashtag_group201_response_spec.rb +1 -1
  419. data/spec/models/create_inbox_reply_draft201_response_spec.rb +1 -1
  420. data/spec/models/create_media_folder_request_spec.rb +1 -1
  421. data/spec/models/create_mention201_response_spec.rb +1 -1
  422. data/spec/models/create_post201_response_spec.rb +1 -1
  423. data/spec/models/create_recycling_rule201_response_spec.rb +1 -1
  424. data/spec/models/create_report_export201_response_spec.rb +1 -1
  425. data/spec/models/create_reseller_client201_response_spec.rb +1 -1
  426. data/spec/models/create_rss_feed201_response_spec.rb +1 -1
  427. data/spec/models/create_template201_response_spec.rb +1 -1
  428. data/spec/models/create_webhook_subscription201_response_data_spec.rb +1 -1
  429. data/spec/models/create_webhook_subscription201_response_spec.rb +1 -1
  430. data/spec/models/delete_agent200_response_spec.rb +1 -1
  431. data/spec/models/delete_media_bulk_request_items_inner_spec.rb +1 -1
  432. data/spec/models/delete_media_bulk_request_spec.rb +1 -1
  433. data/spec/models/delete_media_folder_request_spec.rb +1 -1
  434. data/spec/models/delete_mode_spec.rb +1 -1
  435. data/spec/models/delete_post_request_spec.rb +1 -1
  436. data/spec/models/delete_posts_bulk_request_spec.rb +1 -1
  437. data/spec/models/delete_receipts_bulk_request_spec.rb +1 -1
  438. data/spec/models/delete_result_spec.rb +1 -1
  439. data/spec/models/delete_user400_response_spec.rb +1 -1
  440. data/spec/models/delete_users_bulk_request_spec.rb +1 -1
  441. data/spec/models/delete_workspaces_bulk_request_spec.rb +1 -1
  442. data/spec/models/free_tool_build_utm_url_request_spec.rb +72 -0
  443. data/spec/models/free_tool_build_utm_url_response_spec.rb +42 -0
  444. data/spec/models/free_tool_calculate_engagement_rate_request_spec.rb +82 -0
  445. data/spec/models/free_tool_calculate_engagement_rate_response_spec.rb +54 -0
  446. data/spec/models/free_tool_count_characters_request_spec.rb +46 -0
  447. data/spec/models/free_tool_count_characters_response_networks_inner_spec.rb +66 -0
  448. data/spec/models/free_tool_count_characters_response_spec.rb +42 -0
  449. data/spec/models/free_tool_error_spec.rb +54 -0
  450. data/spec/models/free_tool_format_linked_in_post_request_spec.rb +56 -0
  451. data/spec/models/free_tool_format_linked_in_post_response_spec.rb +60 -0
  452. data/spec/models/free_tool_generate_fancy_text_request_spec.rb +46 -0
  453. data/spec/models/free_tool_generate_fancy_text_response_spec.rb +36 -0
  454. data/spec/models/free_tool_generate_fancy_text_response_styles_inner_spec.rb +48 -0
  455. data/spec/models/free_tool_list_item_spec.rb +76 -0
  456. data/spec/models/free_tool_list_spec.rb +36 -0
  457. data/spec/models/free_tool_split_thread_request_spec.rb +52 -0
  458. data/spec/models/free_tool_split_thread_response_posts_inner_spec.rb +42 -0
  459. data/spec/models/free_tool_split_thread_response_spec.rb +42 -0
  460. data/spec/models/get_account_health200_response_spec.rb +1 -1
  461. data/spec/models/get_brand_voice200_response_spec.rb +1 -1
  462. data/spec/models/get_competitor200_response_spec.rb +1 -1
  463. data/spec/models/get_inbox_conversation200_response_spec.rb +1 -1
  464. data/spec/models/get_posting_schedule200_response_spec.rb +1 -1
  465. data/spec/models/get_remote_upload_status200_response_spec.rb +1 -1
  466. data/spec/models/get_report_branding200_response_spec.rb +1 -1
  467. data/spec/models/get_repurpose_run200_response_spec.rb +1 -1
  468. data/spec/models/guardrail_error_spec.rb +1 -1
  469. data/spec/models/hashtag_group_input_spec.rb +1 -1
  470. data/spec/models/hashtag_group_spec.rb +1 -1
  471. data/spec/models/image_alt_text200_response_spec.rb +1 -1
  472. data/spec/models/image_alt_text_input_spec.rb +1 -1
  473. data/spec/models/image_alt_text_response_spec.rb +1 -1
  474. data/spec/models/image_credit_balance_spec.rb +1 -1
  475. data/spec/models/image_edit_input_spec.rb +1 -1
  476. data/spec/models/image_generate200_response_spec.rb +1 -1
  477. data/spec/models/image_generate429_response_spec.rb +1 -1
  478. data/spec/models/image_generate_input_spec.rb +1 -1
  479. data/spec/models/image_generation_response_spec.rb +1 -1
  480. data/spec/models/image_prompt200_response_spec.rb +1 -1
  481. data/spec/models/image_prompt429_response_spec.rb +1 -1
  482. data/spec/models/image_prompt_input_spec.rb +1 -1
  483. data/spec/models/image_prompt_response_spec.rb +1 -1
  484. data/spec/models/image_variations200_response_spec.rb +1 -1
  485. data/spec/models/image_variations_input_spec.rb +1 -1
  486. data/spec/models/image_variations_response_spec.rb +1 -1
  487. data/spec/models/inbox_author_spec.rb +1 -1
  488. data/spec/models/inbox_conversation_account_spec.rb +1 -1
  489. data/spec/models/inbox_conversation_spec.rb +1 -1
  490. data/spec/models/inbox_conversation_update_spec.rb +1 -1
  491. data/spec/models/inbox_message_author_spec.rb +1 -1
  492. data/spec/models/inbox_message_spec.rb +1 -1
  493. data/spec/models/inbox_reply_draft_approve_spec.rb +1 -1
  494. data/spec/models/inbox_reply_draft_edit_spec.rb +1 -1
  495. data/spec/models/inbox_reply_draft_input_spec.rb +1 -1
  496. data/spec/models/inbox_reply_draft_spec.rb +1 -1
  497. data/spec/models/initiate_chunked_upload201_response_spec.rb +1 -1
  498. data/spec/models/initiate_chunked_upload_request_spec.rb +1 -1
  499. data/spec/models/initiate_remote_upload201_response_one_of_spec.rb +1 -1
  500. data/spec/models/initiate_remote_upload201_response_spec.rb +1 -1
  501. data/spec/models/initiate_remote_upload_request_spec.rb +1 -1
  502. data/spec/models/learn_brand_voice_input_spec.rb +1 -1
  503. data/spec/models/learn_brand_voice_response_meta_spec.rb +1 -1
  504. data/spec/models/learn_brand_voice_response_spec.rb +1 -1
  505. data/spec/models/list_account_groups200_response_spec.rb +1 -1
  506. data/spec/models/list_accounts200_response_spec.rb +1 -1
  507. data/spec/models/list_agent_proposals200_response_spec.rb +1 -1
  508. data/spec/models/list_agent_runs200_response_spec.rb +1 -1
  509. data/spec/models/list_agents200_response_spec.rb +1 -1
  510. data/spec/models/list_api_activity200_response_spec.rb +1 -1
  511. data/spec/models/list_api_keys200_response_spec.rb +1 -1
  512. data/spec/models/list_competitors200_response_spec.rb +1 -1
  513. data/spec/models/list_hashtag_groups200_response_spec.rb +1 -1
  514. data/spec/models/list_inbox_conversations200_response_spec.rb +1 -1
  515. data/spec/models/list_inbox_reply_drafts200_response_spec.rb +1 -1
  516. data/spec/models/list_media200_response_spec.rb +1 -1
  517. data/spec/models/list_media_folders200_response_spec.rb +1 -1
  518. data/spec/models/list_mentions200_response_spec.rb +1 -1
  519. data/spec/models/list_my_workspaces200_response_spec.rb +1 -1
  520. data/spec/models/list_posts200_response_spec.rb +1 -1
  521. data/spec/models/list_receipts200_response_spec.rb +1 -1
  522. data/spec/models/list_recycling_rules200_response_spec.rb +1 -1
  523. data/spec/models/list_recycling_runs200_response_spec.rb +1 -1
  524. data/spec/models/list_report_exports200_response_spec.rb +1 -1
  525. data/spec/models/list_reseller_clients200_response_spec.rb +1 -1
  526. data/spec/models/list_rss_feeds200_response_spec.rb +1 -1
  527. data/spec/models/list_tags200_response_spec.rb +1 -1
  528. data/spec/models/list_templates200_response_spec.rb +1 -1
  529. data/spec/models/list_users200_response_spec.rb +1 -1
  530. data/spec/models/list_webhook_subscriptions200_response_spec.rb +1 -1
  531. data/spec/models/list_workspaces200_response_spec.rb +1 -1
  532. data/spec/models/media_base64_input_spec.rb +1 -1
  533. data/spec/models/media_folder_input_spec.rb +1 -1
  534. data/spec/models/media_folder_ref_spec.rb +1 -1
  535. data/spec/models/media_folder_spec.rb +1 -1
  536. data/spec/models/media_spec.rb +1 -1
  537. data/spec/models/mention_identity_input_spec.rb +1 -1
  538. data/spec/models/mention_identity_spec.rb +1 -1
  539. data/spec/models/mention_input_spec.rb +1 -1
  540. data/spec/models/mention_spec.rb +1 -1
  541. data/spec/models/message_only_spec.rb +1 -1
  542. data/spec/models/pagination_meta_links_spec.rb +1 -1
  543. data/spec/models/pagination_meta_meta_spec.rb +1 -1
  544. data/spec/models/pagination_meta_spec.rb +1 -1
  545. data/spec/models/poll_rss_feed200_response_spec.rb +1 -1
  546. data/spec/models/post_analytics_spec.rb +1 -1
  547. data/spec/models/post_content_spec.rb +1 -1
  548. data/spec/models/post_input_spec.rb +1 -1
  549. data/spec/models/post_options_instagram_spec.rb +1 -1
  550. data/spec/models/post_options_tik_tok_spec.rb +1 -1
  551. data/spec/models/post_options_youtube_spec.rb +1 -1
  552. data/spec/models/post_spec.rb +1 -1
  553. data/spec/models/post_status_spec.rb +1 -1
  554. data/spec/models/post_version_options_spec.rb +1 -1
  555. data/spec/models/post_version_spec.rb +1 -1
  556. data/spec/models/post_warning_spec.rb +1 -1
  557. data/spec/models/post_warnings_spec.rb +1 -1
  558. data/spec/models/posting_schedule_day_spec.rb +1 -1
  559. data/spec/models/posting_schedule_day_times_inner_spec.rb +1 -1
  560. data/spec/models/posting_schedule_input_spec.rb +1 -1
  561. data/spec/models/posting_schedule_spec.rb +1 -1
  562. data/spec/models/posting_time_slot_spec.rb +1 -1
  563. data/spec/models/posting_times_best_inner_spec.rb +1 -1
  564. data/spec/models/posting_times_day_intervals_inner_inner_spec.rb +1 -1
  565. data/spec/models/posting_times_days_inner_spec.rb +1 -1
  566. data/spec/models/posting_times_spec.rb +1 -1
  567. data/spec/models/preflight_result_spec.rb +1 -1
  568. data/spec/models/public_workspace_pivot_spec.rb +1 -1
  569. data/spec/models/public_workspace_spec.rb +1 -1
  570. data/spec/models/publish_progress_spec.rb +1 -1
  571. data/spec/models/queue_slots_spec.rb +1 -1
  572. data/spec/models/receipt_input_spec.rb +1 -1
  573. data/spec/models/receipt_spec.rb +1 -1
  574. data/spec/models/receipt_update_input_spec.rb +1 -1
  575. data/spec/models/recommended_posting_times_spec.rb +1 -1
  576. data/spec/models/reconnect_link_spec.rb +1 -1
  577. data/spec/models/recycling_rule_input_spec.rb +1 -1
  578. data/spec/models/recycling_rule_settings_spec.rb +1 -1
  579. data/spec/models/recycling_rule_spec.rb +1 -1
  580. data/spec/models/recycling_rule_update_spec.rb +1 -1
  581. data/spec/models/recycling_run_spec.rb +1 -1
  582. data/spec/models/remove_generic_subscription422_response_spec.rb +1 -1
  583. data/spec/models/remove_user_from_workspace_request_spec.rb +1 -1
  584. data/spec/models/report_branding_input_spec.rb +1 -1
  585. data/spec/models/report_branding_spec.rb +1 -1
  586. data/spec/models/report_export_input_spec.rb +1 -1
  587. data/spec/models/report_export_spec.rb +1 -1
  588. data/spec/models/repurpose_content200_response_spec.rb +1 -1
  589. data/spec/models/repurpose_content202_response_spec.rb +1 -1
  590. data/spec/models/repurpose_content500_response_spec.rb +1 -1
  591. data/spec/models/repurpose_input_spec.rb +1 -1
  592. data/spec/models/repurpose_input_theme_spec.rb +1 -1
  593. data/spec/models/repurpose_result_media_spec.rb +1 -1
  594. data/spec/models/repurpose_result_source_spec.rb +1 -1
  595. data/spec/models/repurpose_result_spec.rb +1 -1
  596. data/spec/models/repurpose_run_accepted_spec.rb +1 -1
  597. data/spec/models/repurpose_run_spec.rb +1 -1
  598. data/spec/models/repurpose_slide_spec.rb +1 -1
  599. data/spec/models/reseller_client_input_spec.rb +1 -1
  600. data/spec/models/reseller_client_spec.rb +1 -1
  601. data/spec/models/reseller_client_usage_spec.rb +1 -1
  602. data/spec/models/retry_post_account_result_spec.rb +1 -1
  603. data/spec/models/rss_feed_input_spec.rb +1 -1
  604. data/spec/models/rss_feed_spec.rb +1 -1
  605. data/spec/models/rss_feed_update_spec.rb +1 -1
  606. data/spec/models/run_agent202_response_spec.rb +1 -1
  607. data/spec/models/schedule_post_request_spec.rb +1 -1
  608. data/spec/models/schedule_result_spec.rb +1 -1
  609. data/spec/models/subscription_input_spec.rb +1 -1
  610. data/spec/models/subscription_spec.rb +1 -1
  611. data/spec/models/subscription_status_spec.rb +1 -1
  612. data/spec/models/subscription_update_input_spec.rb +1 -1
  613. data/spec/models/tag_input_spec.rb +1 -1
  614. data/spec/models/tag_spec.rb +1 -1
  615. data/spec/models/template_content_item_spec.rb +1 -1
  616. data/spec/models/template_input_content_inner_spec.rb +1 -1
  617. data/spec/models/template_input_spec.rb +1 -1
  618. data/spec/models/template_spec.rb +1 -1
  619. data/spec/models/update_media_request_spec.rb +1 -1
  620. data/spec/models/update_post200_response_spec.rb +1 -1
  621. data/spec/models/upload_chunk201_response_spec.rb +1 -1
  622. data/spec/models/user_input_spec.rb +1 -1
  623. data/spec/models/user_spec.rb +1 -1
  624. data/spec/models/user_update_input_spec.rb +1 -1
  625. data/spec/models/webhook_event_name_spec.rb +1 -1
  626. data/spec/models/webhook_event_payload_spec.rb +1 -1
  627. data/spec/models/webhook_subscription_input_spec.rb +1 -1
  628. data/spec/models/webhook_subscription_spec.rb +1 -1
  629. data/spec/models/workspace_agent_input_spec.rb +1 -1
  630. data/spec/models/workspace_agent_settings_spec.rb +1 -1
  631. data/spec/models/workspace_agent_spec.rb +1 -1
  632. data/spec/models/workspace_agent_update_spec.rb +1 -1
  633. data/spec/models/workspace_input_spec.rb +1 -1
  634. data/spec/models/workspace_spec.rb +1 -1
  635. data/spec/models/workspace_user_input_spec.rb +1 -1
  636. data/spec/models/x_usage_counter_spec.rb +1 -1
  637. data/spec/models/x_usage_spec.rb +1 -1
  638. data/spec/spec_helper.rb +1 -1
  639. metadata +77 -1
@@ -3,7 +3,7 @@
3
3
 
4
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.21.0
6
+ The version of the OpenAPI document: 1.23.0
7
7
  Contact: hi@postboost.co
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.9.0
@@ -3,7 +3,7 @@
3
3
 
4
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.21.0
6
+ The version of the OpenAPI document: 1.23.0
7
7
  Contact: hi@postboost.co
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.9.0
@@ -3,7 +3,7 @@
3
3
 
4
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.21.0
6
+ The version of the OpenAPI document: 1.23.0
7
7
  Contact: hi@postboost.co
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.9.0
@@ -3,7 +3,7 @@
3
3
 
4
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.21.0
6
+ The version of the OpenAPI document: 1.23.0
7
7
  Contact: hi@postboost.co
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.9.0
@@ -3,7 +3,7 @@
3
3
 
4
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.21.0
6
+ The version of the OpenAPI document: 1.23.0
7
7
  Contact: hi@postboost.co
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.9.0
@@ -3,7 +3,7 @@
3
3
 
4
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.21.0
6
+ The version of the OpenAPI document: 1.23.0
7
7
  Contact: hi@postboost.co
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.9.0
@@ -0,0 +1,420 @@
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.23.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 'date'
14
+ require 'time'
15
+
16
+ module PostBoost
17
+ class FreeToolBuildUtmUrlRequest
18
+ # The http(s) page URL.
19
+ attr_accessor :url
20
+
21
+ attr_accessor :utm_source
22
+
23
+ attr_accessor :utm_medium
24
+
25
+ attr_accessor :utm_campaign
26
+
27
+ attr_accessor :utm_term
28
+
29
+ attr_accessor :utm_content
30
+
31
+ attr_accessor :utm_id
32
+
33
+ # Attribute mapping from ruby-style variable name to JSON key.
34
+ def self.attribute_map
35
+ {
36
+ :'url' => :'url',
37
+ :'utm_source' => :'utm_source',
38
+ :'utm_medium' => :'utm_medium',
39
+ :'utm_campaign' => :'utm_campaign',
40
+ :'utm_term' => :'utm_term',
41
+ :'utm_content' => :'utm_content',
42
+ :'utm_id' => :'utm_id'
43
+ }
44
+ end
45
+
46
+ # Returns all the JSON keys this model knows about
47
+ def self.acceptable_attributes
48
+ attribute_map.values
49
+ end
50
+
51
+ # Attribute type mapping.
52
+ def self.openapi_types
53
+ {
54
+ :'url' => :'String',
55
+ :'utm_source' => :'String',
56
+ :'utm_medium' => :'String',
57
+ :'utm_campaign' => :'String',
58
+ :'utm_term' => :'String',
59
+ :'utm_content' => :'String',
60
+ :'utm_id' => :'String'
61
+ }
62
+ end
63
+
64
+ # List of attributes with nullable: true
65
+ def self.openapi_nullable
66
+ Set.new([
67
+ ])
68
+ end
69
+
70
+ # Initializes the object
71
+ # @param [Hash] attributes Model attributes in the form of hash
72
+ def initialize(attributes = {})
73
+ if (!attributes.is_a?(Hash))
74
+ fail ArgumentError, "The input argument (attributes) must be a hash in `PostBoost::FreeToolBuildUtmUrlRequest` initialize method"
75
+ end
76
+
77
+ # check to see if the attribute exists and convert string to symbol for hash key
78
+ attributes = attributes.each_with_object({}) { |(k, v), h|
79
+ if (!self.class.attribute_map.key?(k.to_sym))
80
+ fail ArgumentError, "`#{k}` is not a valid attribute in `PostBoost::FreeToolBuildUtmUrlRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
81
+ end
82
+ h[k.to_sym] = v
83
+ }
84
+
85
+ if attributes.key?(:'url')
86
+ self.url = attributes[:'url']
87
+ else
88
+ self.url = nil
89
+ end
90
+
91
+ if attributes.key?(:'utm_source')
92
+ self.utm_source = attributes[:'utm_source']
93
+ end
94
+
95
+ if attributes.key?(:'utm_medium')
96
+ self.utm_medium = attributes[:'utm_medium']
97
+ end
98
+
99
+ if attributes.key?(:'utm_campaign')
100
+ self.utm_campaign = attributes[:'utm_campaign']
101
+ end
102
+
103
+ if attributes.key?(:'utm_term')
104
+ self.utm_term = attributes[:'utm_term']
105
+ end
106
+
107
+ if attributes.key?(:'utm_content')
108
+ self.utm_content = attributes[:'utm_content']
109
+ end
110
+
111
+ if attributes.key?(:'utm_id')
112
+ self.utm_id = attributes[:'utm_id']
113
+ end
114
+ end
115
+
116
+ # Show invalid properties with the reasons. Usually used together with valid?
117
+ # @return Array for valid properties with the reasons
118
+ def list_invalid_properties
119
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
120
+ invalid_properties = Array.new
121
+ if @url.nil?
122
+ invalid_properties.push('invalid value for "url", url cannot be nil.')
123
+ end
124
+
125
+ if @url.to_s.length > 2048
126
+ invalid_properties.push('invalid value for "url", the character length must be smaller than or equal to 2048.')
127
+ end
128
+
129
+ pattern = Regexp.new(/^\s*https?:\/\/[^\s\/?#]+/)
130
+ if @url !~ pattern
131
+ invalid_properties.push("invalid value for \"url\", must conform to the pattern #{pattern}.")
132
+ end
133
+
134
+ if !@utm_source.nil? && @utm_source.to_s.length > 200
135
+ invalid_properties.push('invalid value for "utm_source", the character length must be smaller than or equal to 200.')
136
+ end
137
+
138
+ if !@utm_medium.nil? && @utm_medium.to_s.length > 200
139
+ invalid_properties.push('invalid value for "utm_medium", the character length must be smaller than or equal to 200.')
140
+ end
141
+
142
+ if !@utm_campaign.nil? && @utm_campaign.to_s.length > 200
143
+ invalid_properties.push('invalid value for "utm_campaign", the character length must be smaller than or equal to 200.')
144
+ end
145
+
146
+ if !@utm_term.nil? && @utm_term.to_s.length > 200
147
+ invalid_properties.push('invalid value for "utm_term", the character length must be smaller than or equal to 200.')
148
+ end
149
+
150
+ if !@utm_content.nil? && @utm_content.to_s.length > 200
151
+ invalid_properties.push('invalid value for "utm_content", the character length must be smaller than or equal to 200.')
152
+ end
153
+
154
+ if !@utm_id.nil? && @utm_id.to_s.length > 200
155
+ invalid_properties.push('invalid value for "utm_id", the character length must be smaller than or equal to 200.')
156
+ end
157
+
158
+ invalid_properties
159
+ end
160
+
161
+ # Check to see if the all the properties in the model are valid
162
+ # @return true if the model is valid
163
+ def valid?
164
+ warn '[DEPRECATED] the `valid?` method is obsolete'
165
+ return false if @url.nil?
166
+ return false if @url.to_s.length > 2048
167
+ return false if @url !~ Regexp.new(/^\s*https?:\/\/[^\s\/?#]+/)
168
+ return false if !@utm_source.nil? && @utm_source.to_s.length > 200
169
+ return false if !@utm_medium.nil? && @utm_medium.to_s.length > 200
170
+ return false if !@utm_campaign.nil? && @utm_campaign.to_s.length > 200
171
+ return false if !@utm_term.nil? && @utm_term.to_s.length > 200
172
+ return false if !@utm_content.nil? && @utm_content.to_s.length > 200
173
+ return false if !@utm_id.nil? && @utm_id.to_s.length > 200
174
+ true
175
+ end
176
+
177
+ # Custom attribute writer method with validation
178
+ # @param [Object] url Value to be assigned
179
+ def url=(url)
180
+ if url.nil?
181
+ fail ArgumentError, 'url cannot be nil'
182
+ end
183
+
184
+ if url.to_s.length > 2048
185
+ fail ArgumentError, 'invalid value for "url", the character length must be smaller than or equal to 2048.'
186
+ end
187
+
188
+ pattern = Regexp.new(/^\s*https?:\/\/[^\s\/?#]+/)
189
+ if url !~ pattern
190
+ fail ArgumentError, "invalid value for \"url\", must conform to the pattern #{pattern}."
191
+ end
192
+
193
+ @url = url
194
+ end
195
+
196
+ # Custom attribute writer method with validation
197
+ # @param [Object] utm_source Value to be assigned
198
+ def utm_source=(utm_source)
199
+ if utm_source.nil?
200
+ fail ArgumentError, 'utm_source cannot be nil'
201
+ end
202
+
203
+ if utm_source.to_s.length > 200
204
+ fail ArgumentError, 'invalid value for "utm_source", the character length must be smaller than or equal to 200.'
205
+ end
206
+
207
+ @utm_source = utm_source
208
+ end
209
+
210
+ # Custom attribute writer method with validation
211
+ # @param [Object] utm_medium Value to be assigned
212
+ def utm_medium=(utm_medium)
213
+ if utm_medium.nil?
214
+ fail ArgumentError, 'utm_medium cannot be nil'
215
+ end
216
+
217
+ if utm_medium.to_s.length > 200
218
+ fail ArgumentError, 'invalid value for "utm_medium", the character length must be smaller than or equal to 200.'
219
+ end
220
+
221
+ @utm_medium = utm_medium
222
+ end
223
+
224
+ # Custom attribute writer method with validation
225
+ # @param [Object] utm_campaign Value to be assigned
226
+ def utm_campaign=(utm_campaign)
227
+ if utm_campaign.nil?
228
+ fail ArgumentError, 'utm_campaign cannot be nil'
229
+ end
230
+
231
+ if utm_campaign.to_s.length > 200
232
+ fail ArgumentError, 'invalid value for "utm_campaign", the character length must be smaller than or equal to 200.'
233
+ end
234
+
235
+ @utm_campaign = utm_campaign
236
+ end
237
+
238
+ # Custom attribute writer method with validation
239
+ # @param [Object] utm_term Value to be assigned
240
+ def utm_term=(utm_term)
241
+ if utm_term.nil?
242
+ fail ArgumentError, 'utm_term cannot be nil'
243
+ end
244
+
245
+ if utm_term.to_s.length > 200
246
+ fail ArgumentError, 'invalid value for "utm_term", the character length must be smaller than or equal to 200.'
247
+ end
248
+
249
+ @utm_term = utm_term
250
+ end
251
+
252
+ # Custom attribute writer method with validation
253
+ # @param [Object] utm_content Value to be assigned
254
+ def utm_content=(utm_content)
255
+ if utm_content.nil?
256
+ fail ArgumentError, 'utm_content cannot be nil'
257
+ end
258
+
259
+ if utm_content.to_s.length > 200
260
+ fail ArgumentError, 'invalid value for "utm_content", the character length must be smaller than or equal to 200.'
261
+ end
262
+
263
+ @utm_content = utm_content
264
+ end
265
+
266
+ # Custom attribute writer method with validation
267
+ # @param [Object] utm_id Value to be assigned
268
+ def utm_id=(utm_id)
269
+ if utm_id.nil?
270
+ fail ArgumentError, 'utm_id cannot be nil'
271
+ end
272
+
273
+ if utm_id.to_s.length > 200
274
+ fail ArgumentError, 'invalid value for "utm_id", the character length must be smaller than or equal to 200.'
275
+ end
276
+
277
+ @utm_id = utm_id
278
+ end
279
+
280
+ # Checks equality by comparing each attribute.
281
+ # @param [Object] Object to be compared
282
+ def ==(o)
283
+ return true if self.equal?(o)
284
+ self.class == o.class &&
285
+ url == o.url &&
286
+ utm_source == o.utm_source &&
287
+ utm_medium == o.utm_medium &&
288
+ utm_campaign == o.utm_campaign &&
289
+ utm_term == o.utm_term &&
290
+ utm_content == o.utm_content &&
291
+ utm_id == o.utm_id
292
+ end
293
+
294
+ # @see the `==` method
295
+ # @param [Object] Object to be compared
296
+ def eql?(o)
297
+ self == o
298
+ end
299
+
300
+ # Calculates hash code according to all attributes.
301
+ # @return [Integer] Hash code
302
+ def hash
303
+ [url, utm_source, utm_medium, utm_campaign, utm_term, utm_content, utm_id].hash
304
+ end
305
+
306
+ # Builds the object from hash
307
+ # @param [Hash] attributes Model attributes in the form of hash
308
+ # @return [Object] Returns the model itself
309
+ def self.build_from_hash(attributes)
310
+ return nil unless attributes.is_a?(Hash)
311
+ attributes = attributes.transform_keys(&:to_sym)
312
+ transformed_hash = {}
313
+ openapi_types.each_pair do |key, type|
314
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
315
+ transformed_hash["#{key}"] = nil
316
+ elsif type =~ /\AArray<(.*)>/i
317
+ # check to ensure the input is an array given that the attribute
318
+ # is documented as an array but the input is not
319
+ if attributes[attribute_map[key]].is_a?(Array)
320
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
321
+ end
322
+ elsif !attributes[attribute_map[key]].nil?
323
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
324
+ end
325
+ end
326
+ new(transformed_hash)
327
+ end
328
+
329
+ # Deserializes the data based on type
330
+ # @param string type Data type
331
+ # @param string value Value to be deserialized
332
+ # @return [Object] Deserialized data
333
+ def self._deserialize(type, value)
334
+ case type.to_sym
335
+ when :Time
336
+ Time.parse(value)
337
+ when :Date
338
+ Date.parse(value)
339
+ when :String
340
+ value.to_s
341
+ when :Integer
342
+ value.to_i
343
+ when :Float
344
+ value.to_f
345
+ when :Boolean
346
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
347
+ true
348
+ else
349
+ false
350
+ end
351
+ when :Object
352
+ # generic object (usually a Hash), return directly
353
+ value
354
+ when /\AArray<(?<inner_type>.+)>\z/
355
+ inner_type = Regexp.last_match[:inner_type]
356
+ value.map { |v| _deserialize(inner_type, v) }
357
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
358
+ k_type = Regexp.last_match[:k_type]
359
+ v_type = Regexp.last_match[:v_type]
360
+ {}.tap do |hash|
361
+ value.each do |k, v|
362
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
363
+ end
364
+ end
365
+ else # model
366
+ # models (e.g. Pet) or oneOf
367
+ klass = PostBoost.const_get(type)
368
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
369
+ end
370
+ end
371
+
372
+ # Returns the string representation of the object
373
+ # @return [String] String presentation of the object
374
+ def to_s
375
+ to_hash.to_s
376
+ end
377
+
378
+ # to_body is an alias to to_hash (backward compatibility)
379
+ # @return [Hash] Returns the object in the form of hash
380
+ def to_body
381
+ to_hash
382
+ end
383
+
384
+ # Returns the object in the form of hash
385
+ # @return [Hash] Returns the object in the form of hash
386
+ def to_hash
387
+ hash = {}
388
+ self.class.attribute_map.each_pair do |attr, param|
389
+ value = self.send(attr)
390
+ if value.nil?
391
+ is_nullable = self.class.openapi_nullable.include?(attr)
392
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
393
+ end
394
+
395
+ hash[param] = _to_hash(value)
396
+ end
397
+ hash
398
+ end
399
+
400
+ # Outputs non-array value in the form of hash
401
+ # For object, use to_hash. Otherwise, just return the value
402
+ # @param [Object] value Any valid value
403
+ # @return [Hash] Returns the value in the form of hash
404
+ def _to_hash(value)
405
+ if value.is_a?(Array)
406
+ value.compact.map { |v| _to_hash(v) }
407
+ elsif value.is_a?(Hash)
408
+ {}.tap do |hash|
409
+ value.each { |k, v| hash[k] = _to_hash(v) }
410
+ end
411
+ elsif value.respond_to? :to_hash
412
+ value.to_hash
413
+ else
414
+ value
415
+ end
416
+ end
417
+
418
+ end
419
+
420
+ end