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