peal 0.2.0 → 0.3.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 (528) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +171 -320
  3. data/lib/peal/analytics/client.rb +120 -0
  4. data/lib/peal/analytics/types/post_analytics_request.rb +13 -0
  5. data/lib/peal/analytics/types/summary_analytics_request.rb +17 -0
  6. data/lib/peal/api_keys/client.rb +153 -0
  7. data/lib/peal/api_keys/types/list_api_keys_request.rb +11 -0
  8. data/lib/peal/api_keys/types/new_api_key.rb +17 -0
  9. data/lib/peal/api_keys/types/revoke_api_keys_request.rb +13 -0
  10. data/lib/peal/assistant/client.rb +112 -0
  11. data/lib/peal/assistant/types/status_assistant_request.rb +11 -0
  12. data/lib/peal/assistant/types/suggestion_request.rb +15 -0
  13. data/lib/peal/billing/client.rb +58 -0
  14. data/lib/peal/billing/types/get_billing_request.rb +11 -0
  15. data/lib/peal/channels/client.rb +366 -0
  16. data/lib/peal/channels/types/choose_accounts.rb +17 -0
  17. data/lib/peal/channels/types/connect_callback.rb +21 -0
  18. data/lib/peal/channels/types/connect_channel.rb +17 -0
  19. data/lib/peal/channels/types/disconnect_channels_request.rb +13 -0
  20. data/lib/peal/channels/types/list_channels_request.rb +11 -0
  21. data/lib/peal/channels/types/platforms_channels_request.rb +11 -0
  22. data/lib/peal/channels/types/reconnect_channels_request.rb +13 -0
  23. data/lib/peal/client.rb +93 -0
  24. data/lib/peal/environment.rb +7 -0
  25. data/lib/peal/errors/api_error.rb +8 -0
  26. data/lib/peal/errors/client_error.rb +17 -0
  27. data/lib/peal/errors/connection_error.rb +11 -0
  28. data/lib/peal/errors/redirect_error.rb +8 -0
  29. data/lib/peal/errors/response_error.rb +65 -0
  30. data/lib/peal/errors/server_error.rb +11 -0
  31. data/lib/peal/errors/timeout_error.rb +8 -0
  32. data/lib/peal/internal/errors/constraint_error.rb +10 -0
  33. data/lib/peal/internal/errors/type_error.rb +10 -0
  34. data/lib/peal/internal/http/base_request.rb +83 -0
  35. data/lib/peal/internal/http/raw_client.rb +297 -0
  36. data/lib/peal/internal/iterators/cursor_item_iterator.rb +33 -0
  37. data/lib/peal/internal/iterators/cursor_page_iterator.rb +126 -0
  38. data/lib/peal/internal/iterators/item_iterator.rb +120 -0
  39. data/lib/peal/internal/iterators/offset_item_iterator.rb +35 -0
  40. data/lib/peal/internal/iterators/offset_page_iterator.rb +160 -0
  41. data/lib/peal/internal/json/request.rb +51 -0
  42. data/lib/peal/internal/json/serializable.rb +25 -0
  43. data/lib/peal/internal/multipart/multipart_encoder.rb +141 -0
  44. data/lib/peal/internal/multipart/multipart_form_data.rb +84 -0
  45. data/lib/peal/internal/multipart/multipart_form_data_part.rb +51 -0
  46. data/lib/peal/internal/multipart/multipart_request.rb +42 -0
  47. data/lib/peal/internal/types/array.rb +47 -0
  48. data/lib/peal/internal/types/boolean.rb +34 -0
  49. data/lib/peal/internal/types/enum.rb +56 -0
  50. data/lib/peal/internal/types/hash.rb +36 -0
  51. data/lib/peal/internal/types/model/field.rb +38 -0
  52. data/lib/peal/internal/types/model.rb +258 -0
  53. data/lib/peal/internal/types/type.rb +35 -0
  54. data/lib/peal/internal/types/union.rb +161 -0
  55. data/lib/peal/internal/types/unknown.rb +15 -0
  56. data/lib/peal/internal/types/utils.rb +144 -0
  57. data/lib/peal/invitations/client.rb +160 -0
  58. data/lib/peal/invitations/types/list_invitations_request.rb +11 -0
  59. data/lib/peal/invitations/types/new_invitation.rb +15 -0
  60. data/lib/peal/invitations/types/revoke_invitations_request.rb +13 -0
  61. data/lib/peal/media/client.rb +360 -0
  62. data/lib/peal/media/types/complete_media_request.rb +13 -0
  63. data/lib/peal/media/types/delete_media_request.rb +13 -0
  64. data/lib/peal/media/types/get_media_request.rb +13 -0
  65. data/lib/peal/media/types/list_media_request.rb +15 -0
  66. data/lib/peal/media/types/media_description.rb +15 -0
  67. data/lib/peal/media/types/new_upload.rb +17 -0
  68. data/lib/peal/media/types/usage_media_request.rb +13 -0
  69. data/lib/peal/members/client.rb +58 -0
  70. data/lib/peal/members/types/list_members_request.rb +11 -0
  71. data/lib/peal/notices/client.rb +189 -0
  72. data/lib/peal/notices/types/list_notices_request.rb +13 -0
  73. data/lib/peal/notices/types/mark_notices_read.rb +11 -0
  74. data/lib/peal/notification_preferences/client.rb +100 -0
  75. data/lib/peal/notification_preferences/types/notification_preferences_change.rb +13 -0
  76. data/lib/peal/notification_preferences/types/notification_preferences_change_email.rb +19 -0
  77. data/lib/peal/posts/client.rb +703 -0
  78. data/lib/peal/posts/types/attempts_posts_request.rb +13 -0
  79. data/lib/peal/posts/types/cancel_posts_request.rb +13 -0
  80. data/lib/peal/posts/types/confirm_posts_request.rb +17 -0
  81. data/lib/peal/posts/types/create_posts_request.rb +13 -0
  82. data/lib/peal/posts/types/discard_posts_request.rb +13 -0
  83. data/lib/peal/posts/types/drafts_posts_request.rb +15 -0
  84. data/lib/peal/posts/types/get_posts_request.rb +13 -0
  85. data/lib/peal/posts/types/list_posts_request.rb +15 -0
  86. data/lib/peal/posts/types/repost_posts_request.rb +15 -0
  87. data/lib/peal/posts/types/reschedule_posts_request.rb +15 -0
  88. data/lib/peal/posts/types/schedule_post.rb +19 -0
  89. data/lib/peal/posts/types/unschedule_posts_request.rb +13 -0
  90. data/lib/peal/posts/types/update_posts_request.rb +15 -0
  91. data/lib/peal/session/client.rb +55 -0
  92. data/lib/peal/system/client.rb +82 -0
  93. data/lib/peal/tiktok/client.rb +62 -0
  94. data/lib/peal/tiktok/types/creator_tiktok_request.rb +13 -0
  95. data/lib/peal/types/already_member_encoded.rb +9 -0
  96. data/lib/peal/types/alt_text_too_long_encoded.rb +13 -0
  97. data/lib/peal/types/alt_text_too_long_encoded_tag.rb +13 -0
  98. data/lib/peal/types/analytics_summary.rb +23 -0
  99. data/lib/peal/types/api_key.rb +21 -0
  100. data/lib/peal/types/api_key_not_found_encoded.rb +9 -0
  101. data/lib/peal/types/assistant_action.rb +21 -0
  102. data/lib/peal/types/assistant_action_hashtags.rb +9 -0
  103. data/lib/peal/types/assistant_action_rewrite.rb +11 -0
  104. data/lib/peal/types/assistant_action_shorten.rb +11 -0
  105. data/lib/peal/types/assistant_action_translate.rb +11 -0
  106. data/lib/peal/types/assistant_failed_encoded.rb +13 -0
  107. data/lib/peal/types/assistant_failed_encoded_reason.rb +16 -0
  108. data/lib/peal/types/assistant_failed_encoded_tag.rb +13 -0
  109. data/lib/peal/types/assistant_input_rejected_encoded.rb +15 -0
  110. data/lib/peal/types/assistant_input_rejected_encoded_reason.rb +14 -0
  111. data/lib/peal/types/assistant_input_rejected_encoded_tag.rb +13 -0
  112. data/lib/peal/types/assistant_quota_exceeded_encoded.rb +15 -0
  113. data/lib/peal/types/assistant_quota_exceeded_encoded_tag.rb +13 -0
  114. data/lib/peal/types/assistant_status.rb +19 -0
  115. data/lib/peal/types/assistant_tone.rb +17 -0
  116. data/lib/peal/types/assistant_unavailable_encoded.rb +11 -0
  117. data/lib/peal/types/assistant_unavailable_encoded_tag.rb +13 -0
  118. data/lib/peal/types/attempt_result.rb +24 -0
  119. data/lib/peal/types/authorization.rb +11 -0
  120. data/lib/peal/types/billing.rb +21 -0
  121. data/lib/peal/types/billing_subscription.rb +17 -0
  122. data/lib/peal/types/calendar_day.rb +25 -0
  123. data/lib/peal/types/channel.rb +23 -0
  124. data/lib/peal/types/channel_cannot_post_encoded.rb +13 -0
  125. data/lib/peal/types/channel_cannot_post_encoded_reason.rb +14 -0
  126. data/lib/peal/types/channel_cannot_post_encoded_tag.rb +13 -0
  127. data/lib/peal/types/channel_metrics.rb +23 -0
  128. data/lib/peal/types/channel_not_found_encoded.rb +9 -0
  129. data/lib/peal/types/channel_options.rb +13 -0
  130. data/lib/peal/types/channel_status.rb +19 -0
  131. data/lib/peal/types/channel_status_active.rb +9 -0
  132. data/lib/peal/types/channel_status_disabled.rb +11 -0
  133. data/lib/peal/types/channel_status_refresh_needed.rb +9 -0
  134. data/lib/peal/types/choosable_account.rb +19 -0
  135. data/lib/peal/types/conflict_error_body.rb +17 -0
  136. data/lib/peal/types/connect_failed_encoded.rb +13 -0
  137. data/lib/peal/types/connect_failed_encoded_tag.rb +13 -0
  138. data/lib/peal/types/connect_failure_reason.rb +22 -0
  139. data/lib/peal/types/connect_outcome.rb +17 -0
  140. data/lib/peal/types/connect_outcome_choose.rb +15 -0
  141. data/lib/peal/types/connect_outcome_connected.rb +11 -0
  142. data/lib/peal/types/connectable_platforms.rb +11 -0
  143. data/lib/peal/types/content_violation.rb +65 -0
  144. data/lib/peal/types/content_violation_alt_text_too_long.rb +19 -0
  145. data/lib/peal/types/content_violation_aspect_ratio_unsupported.rb +23 -0
  146. data/lib/peal/types/content_violation_aspect_ratio_unsupported_maximum.rb +15 -0
  147. data/lib/peal/types/content_violation_aspect_ratio_unsupported_minimum.rb +15 -0
  148. data/lib/peal/types/content_violation_empty.rb +13 -0
  149. data/lib/peal/types/content_violation_forbidden_characters.rb +15 -0
  150. data/lib/peal/types/content_violation_media_required.rb +13 -0
  151. data/lib/peal/types/content_violation_media_too_large.rb +19 -0
  152. data/lib/peal/types/content_violation_media_too_small.rb +19 -0
  153. data/lib/peal/types/content_violation_media_type_unsupported.rb +17 -0
  154. data/lib/peal/types/content_violation_mixed_media.rb +13 -0
  155. data/lib/peal/types/content_violation_no_channels.rb +9 -0
  156. data/lib/peal/types/content_violation_option_invalid.rb +15 -0
  157. data/lib/peal/types/content_violation_option_missing.rb +15 -0
  158. data/lib/peal/types/content_violation_option_too_long.rb +19 -0
  159. data/lib/peal/types/content_violation_options_for_other_platform.rb +15 -0
  160. data/lib/peal/types/content_violation_options_without_channel.rb +11 -0
  161. data/lib/peal/types/content_violation_override_without_channel.rb +11 -0
  162. data/lib/peal/types/content_violation_side_out_of_range.rb +23 -0
  163. data/lib/peal/types/content_violation_text_too_long.rb +19 -0
  164. data/lib/peal/types/content_violation_too_many_hashtags.rb +17 -0
  165. data/lib/peal/types/content_violation_too_many_links.rb +17 -0
  166. data/lib/peal/types/content_violation_too_many_media.rb +17 -0
  167. data/lib/peal/types/content_violation_too_many_mentions.rb +17 -0
  168. data/lib/peal/types/content_violation_too_many_pixels.rb +21 -0
  169. data/lib/peal/types/content_violation_too_many_videos.rb +17 -0
  170. data/lib/peal/types/content_violation_video_too_long.rb +19 -0
  171. data/lib/peal/types/content_violation_video_too_short.rb +19 -0
  172. data/lib/peal/types/created_api_key.rb +13 -0
  173. data/lib/peal/types/database_unavailable_encoded.rb +11 -0
  174. data/lib/peal/types/database_unavailable_encoded_tag.rb +13 -0
  175. data/lib/peal/types/draft_page.rb +13 -0
  176. data/lib/peal/types/effect_http_api_error_bad_request_encoded.rb +11 -0
  177. data/lib/peal/types/effect_http_api_error_bad_request_encoded_tag.rb +13 -0
  178. data/lib/peal/types/engagement_day.rb +19 -0
  179. data/lib/peal/types/failure_reason.rb +24 -0
  180. data/lib/peal/types/forbidden_encoded.rb +11 -0
  181. data/lib/peal/types/forbidden_encoded_tag.rb +13 -0
  182. data/lib/peal/types/invalid_date_range_encoded.rb +11 -0
  183. data/lib/peal/types/invalid_date_range_encoded_tag.rb +13 -0
  184. data/lib/peal/types/invalid_time_range_encoded.rb +11 -0
  185. data/lib/peal/types/invalid_time_range_encoded_tag.rb +13 -0
  186. data/lib/peal/types/invalid_time_zone_encoded.rb +13 -0
  187. data/lib/peal/types/invalid_time_zone_encoded_tag.rb +13 -0
  188. data/lib/peal/types/invitation.rb +21 -0
  189. data/lib/peal/types/invitation_not_found_encoded.rb +9 -0
  190. data/lib/peal/types/me.rb +15 -0
  191. data/lib/peal/types/me_user.rb +21 -0
  192. data/lib/peal/types/me_user_locale.rb +14 -0
  193. data/lib/peal/types/media.rb +33 -0
  194. data/lib/peal/types/media_attachment.rb +13 -0
  195. data/lib/peal/types/media_content_type.rb +18 -0
  196. data/lib/peal/types/media_dimensions.rb +13 -0
  197. data/lib/peal/types/media_in_use_encoded.rb +13 -0
  198. data/lib/peal/types/media_in_use_encoded_tag.rb +13 -0
  199. data/lib/peal/types/media_kind.rb +14 -0
  200. data/lib/peal/types/media_not_found_encoded.rb +9 -0
  201. data/lib/peal/types/media_page.rb +13 -0
  202. data/lib/peal/types/media_status.rb +21 -0
  203. data/lib/peal/types/media_status_pending.rb +9 -0
  204. data/lib/peal/types/media_status_ready.rb +9 -0
  205. data/lib/peal/types/media_status_rejected.rb +11 -0
  206. data/lib/peal/types/media_status_uploaded.rb +11 -0
  207. data/lib/peal/types/media_store_unavailable_encoded.rb +11 -0
  208. data/lib/peal/types/media_store_unavailable_encoded_tag.rb +13 -0
  209. data/lib/peal/types/media_too_large_encoded.rb +15 -0
  210. data/lib/peal/types/media_too_large_encoded_kind.rb +14 -0
  211. data/lib/peal/types/media_usage.rb +13 -0
  212. data/lib/peal/types/membership.rb +19 -0
  213. data/lib/peal/types/metric_totals.rb +21 -0
  214. data/lib/peal/types/metrics_snapshot.rb +13 -0
  215. data/lib/peal/types/non_finite_number.rb +14 -0
  216. data/lib/peal/types/not_found_error_body.rb +17 -0
  217. data/lib/peal/types/notice.rb +19 -0
  218. data/lib/peal/types/notice_channel.rb +13 -0
  219. data/lib/peal/types/notice_event.rb +23 -0
  220. data/lib/peal/types/notice_event_channel_reconnect_required.rb +11 -0
  221. data/lib/peal/types/notice_event_channel_reconnect_soon.rb +13 -0
  222. data/lib/peal/types/notice_event_post_failed.rb +15 -0
  223. data/lib/peal/types/notice_event_post_published.rb +15 -0
  224. data/lib/peal/types/notice_event_post_unconfirmed.rb +13 -0
  225. data/lib/peal/types/notice_page.rb +13 -0
  226. data/lib/peal/types/notification_preferences.rb +13 -0
  227. data/lib/peal/types/notification_preferences_email.rb +17 -0
  228. data/lib/peal/types/paid_plan.rb +14 -0
  229. data/lib/peal/types/period_usage.rb +13 -0
  230. data/lib/peal/types/permission.rb +40 -0
  231. data/lib/peal/types/plan.rb +15 -0
  232. data/lib/peal/types/plan_allowances.rb +17 -0
  233. data/lib/peal/types/plan_limit.rb +16 -0
  234. data/lib/peal/types/plan_limit_reached_encoded.rb +15 -0
  235. data/lib/peal/types/plan_limit_reached_encoded_tag.rb +13 -0
  236. data/lib/peal/types/plan_offer.rb +13 -0
  237. data/lib/peal/types/platform.rb +22 -0
  238. data/lib/peal/types/platform_unreachable_encoded.rb +11 -0
  239. data/lib/peal/types/platform_unreachable_encoded_tag.rb +13 -0
  240. data/lib/peal/types/post.rb +23 -0
  241. data/lib/peal/types/post_analytics.rb +13 -0
  242. data/lib/peal/types/post_content.rb +15 -0
  243. data/lib/peal/types/post_content_invalid_encoded.rb +11 -0
  244. data/lib/peal/types/post_draft.rb +15 -0
  245. data/lib/peal/types/post_metrics.rb +19 -0
  246. data/lib/peal/types/post_not_found_encoded.rb +9 -0
  247. data/lib/peal/types/post_outcome.rb +17 -0
  248. data/lib/peal/types/post_schedule.rb +13 -0
  249. data/lib/peal/types/post_status.rb +17 -0
  250. data/lib/peal/types/post_status_conflict_encoded.rb +13 -0
  251. data/lib/peal/types/post_status_conflict_encoded_tag.rb +13 -0
  252. data/lib/peal/types/post_target.rb +29 -0
  253. data/lib/peal/types/post_target_status.rb +18 -0
  254. data/lib/peal/types/prepared_upload.rb +13 -0
  255. data/lib/peal/types/probe_state.rb +18 -0
  256. data/lib/peal/types/publication_attempt.rb +23 -0
  257. data/lib/peal/types/rejection_reason.rb +14 -0
  258. data/lib/peal/types/role.rb +17 -0
  259. data/lib/peal/types/schedule_in_past_encoded.rb +9 -0
  260. data/lib/peal/types/signed_request.rb +15 -0
  261. data/lib/peal/types/signed_request_method.rb +13 -0
  262. data/lib/peal/types/subscription_status.rb +20 -0
  263. data/lib/peal/types/suggestion.rb +17 -0
  264. data/lib/peal/types/suggestion_hashtags.rb +11 -0
  265. data/lib/peal/types/suggestion_text.rb +11 -0
  266. data/lib/peal/types/target_confirmation.rb +17 -0
  267. data/lib/peal/types/target_confirmation_not_published.rb +9 -0
  268. data/lib/peal/types/target_confirmation_published.rb +11 -0
  269. data/lib/peal/types/target_metrics.rb +25 -0
  270. data/lib/peal/types/target_options.rb +19 -0
  271. data/lib/peal/types/target_status_conflict_encoded.rb +11 -0
  272. data/lib/peal/types/text_override.rb +13 -0
  273. data/lib/peal/types/text_unit.rb +18 -0
  274. data/lib/peal/types/tik_tok_account.rb +13 -0
  275. data/lib/peal/types/tik_tok_account_posting.rb +17 -0
  276. data/lib/peal/types/tik_tok_account_posting_blocked.rb +11 -0
  277. data/lib/peal/types/tik_tok_account_posting_ready.rb +11 -0
  278. data/lib/peal/types/tik_tok_block.rb +15 -0
  279. data/lib/peal/types/tik_tok_creator.rb +25 -0
  280. data/lib/peal/types/tik_tok_options.rb +26 -0
  281. data/lib/peal/types/tik_tok_privacy_level.rb +16 -0
  282. data/lib/peal/types/too_many_invitations_encoded.rb +9 -0
  283. data/lib/peal/types/top_post.rb +23 -0
  284. data/lib/peal/types/translation_language.rb +22 -0
  285. data/lib/peal/types/unauthenticated_encoded.rb +11 -0
  286. data/lib/peal/types/unauthenticated_encoded_tag.rb +13 -0
  287. data/lib/peal/types/unconfirmed_reason.rb +16 -0
  288. data/lib/peal/types/unknown_channels_encoded.rb +11 -0
  289. data/lib/peal/types/unknown_media_encoded.rb +11 -0
  290. data/lib/peal/types/unprocessable_entity_error_body.rb +19 -0
  291. data/lib/peal/types/unread_notices.rb +11 -0
  292. data/lib/peal/types/unsupported_media_type_encoded.rb +11 -0
  293. data/lib/peal/types/upload_incomplete_encoded.rb +11 -0
  294. data/lib/peal/types/upload_incomplete_encoded_tag.rb +13 -0
  295. data/lib/peal/types/upload_part.rb +15 -0
  296. data/lib/peal/types/upload_rejected_encoded.rb +13 -0
  297. data/lib/peal/types/upload_rejected_encoded_tag.rb +13 -0
  298. data/lib/peal/types/upload_target.rb +17 -0
  299. data/lib/peal/types/upload_target_multipart.rb +15 -0
  300. data/lib/peal/types/upload_target_single.rb +13 -0
  301. data/lib/peal/types/usage.rb +17 -0
  302. data/lib/peal/types/workspace_member.rb +19 -0
  303. data/lib/peal/types/workspace_not_found_encoded.rb +11 -0
  304. data/lib/peal/types/workspace_not_found_encoded_tag.rb +13 -0
  305. data/lib/peal/types/you_tube_options.rb +24 -0
  306. data/lib/peal/types/you_tube_privacy.rb +15 -0
  307. data/lib/peal/version.rb +2 -12
  308. data/lib/peal.rb +315 -248
  309. metadata +312 -292
  310. data/lib/peal/api/analytics_api.rb +0 -185
  311. data/lib/peal/api/api_keys_api.rb +0 -228
  312. data/lib/peal/api/assistant_api.rb +0 -159
  313. data/lib/peal/api/billing_api.rb +0 -85
  314. data/lib/peal/api/channels_api.rb +0 -526
  315. data/lib/peal/api/invitations_api.rb +0 -228
  316. data/lib/peal/api/media_api.rb +0 -526
  317. data/lib/peal/api/members_api.rb +0 -85
  318. data/lib/peal/api/notices_api.rb +0 -272
  319. data/lib/peal/api/notification_preferences_api.rb +0 -147
  320. data/lib/peal/api/posts_api.rb +0 -993
  321. data/lib/peal/api/session_api.rb +0 -79
  322. data/lib/peal/api/system_api.rb +0 -134
  323. data/lib/peal/api/tiktok_api.rb +0 -91
  324. data/lib/peal/api_client.rb +0 -441
  325. data/lib/peal/api_error.rb +0 -58
  326. data/lib/peal/api_model_base.rb +0 -88
  327. data/lib/peal/configuration.rb +0 -392
  328. data/lib/peal/models/already_member_encoded.rb +0 -201
  329. data/lib/peal/models/alt_text_too_long_encoded.rb +0 -245
  330. data/lib/peal/models/analytics_summary.rb +0 -361
  331. data/lib/peal/models/api_key.rb +0 -281
  332. data/lib/peal/models/api_key_not_found_encoded.rb +0 -201
  333. data/lib/peal/models/api_keys_revoke404_response.rb +0 -103
  334. data/lib/peal/models/assistant_action.rb +0 -105
  335. data/lib/peal/models/assistant_action_any_of.rb +0 -227
  336. data/lib/peal/models/assistant_action_any_of1.rb +0 -227
  337. data/lib/peal/models/assistant_action_any_of2.rb +0 -227
  338. data/lib/peal/models/assistant_action_any_of3.rb +0 -201
  339. data/lib/peal/models/assistant_failed_encoded.rb +0 -229
  340. data/lib/peal/models/assistant_input_rejected_encoded.rb +0 -273
  341. data/lib/peal/models/assistant_quota_exceeded_encoded.rb +0 -271
  342. data/lib/peal/models/assistant_status.rb +0 -335
  343. data/lib/peal/models/assistant_tone.rb +0 -43
  344. data/lib/peal/models/assistant_unavailable_encoded.rb +0 -201
  345. data/lib/peal/models/attempt_result.rb +0 -50
  346. data/lib/peal/models/authorization.rb +0 -177
  347. data/lib/peal/models/billing.rb +0 -303
  348. data/lib/peal/models/billing_subscription.rb +0 -263
  349. data/lib/peal/models/channel.rb +0 -313
  350. data/lib/peal/models/channel_cannot_post_encoded.rb +0 -229
  351. data/lib/peal/models/channel_metrics.rb +0 -425
  352. data/lib/peal/models/channel_not_found_encoded.rb +0 -201
  353. data/lib/peal/models/channel_options.rb +0 -203
  354. data/lib/peal/models/channel_status.rb +0 -104
  355. data/lib/peal/models/channel_status_any_of.rb +0 -201
  356. data/lib/peal/models/channel_status_any_of1.rb +0 -201
  357. data/lib/peal/models/channel_status_any_of2.rb +0 -227
  358. data/lib/peal/models/channels_complete_connect404_response.rb +0 -103
  359. data/lib/peal/models/choosable_account.rb +0 -253
  360. data/lib/peal/models/choose_accounts.rb +0 -241
  361. data/lib/peal/models/connect_callback.rb +0 -279
  362. data/lib/peal/models/connect_channel.rb +0 -207
  363. data/lib/peal/models/connect_failed_encoded.rb +0 -227
  364. data/lib/peal/models/connect_failure_reason.rb +0 -48
  365. data/lib/peal/models/connect_outcome.rb +0 -103
  366. data/lib/peal/models/connect_outcome_any_of.rb +0 -227
  367. data/lib/peal/models/connect_outcome_any_of1.rb +0 -281
  368. data/lib/peal/models/connectable_platforms.rb +0 -179
  369. data/lib/peal/models/content_violation.rb +0 -127
  370. data/lib/peal/models/content_violation_any_of.rb +0 -201
  371. data/lib/peal/models/content_violation_any_of1.rb +0 -227
  372. data/lib/peal/models/content_violation_any_of10.rb +0 -341
  373. data/lib/peal/models/content_violation_any_of11.rb +0 -253
  374. data/lib/peal/models/content_violation_any_of12.rb +0 -341
  375. data/lib/peal/models/content_violation_any_of13.rb +0 -341
  376. data/lib/peal/models/content_violation_any_of14.rb +0 -341
  377. data/lib/peal/models/content_violation_any_of15.rb +0 -341
  378. data/lib/peal/models/content_violation_any_of16.rb +0 -253
  379. data/lib/peal/models/content_violation_any_of17.rb +0 -305
  380. data/lib/peal/models/content_violation_any_of18.rb +0 -367
  381. data/lib/peal/models/content_violation_any_of19.rb +0 -367
  382. data/lib/peal/models/content_violation_any_of2.rb +0 -227
  383. data/lib/peal/models/content_violation_any_of20.rb +0 -367
  384. data/lib/peal/models/content_violation_any_of21.rb +0 -367
  385. data/lib/peal/models/content_violation_any_of22.rb +0 -411
  386. data/lib/peal/models/content_violation_any_of23.rb +0 -455
  387. data/lib/peal/models/content_violation_any_of24.rb +0 -419
  388. data/lib/peal/models/content_violation_any_of24_maximum.rb +0 -103
  389. data/lib/peal/models/content_violation_any_of25.rb +0 -367
  390. data/lib/peal/models/content_violation_any_of3.rb +0 -279
  391. data/lib/peal/models/content_violation_any_of4.rb +0 -279
  392. data/lib/peal/models/content_violation_any_of5.rb +0 -367
  393. data/lib/peal/models/content_violation_any_of6.rb +0 -279
  394. data/lib/peal/models/content_violation_any_of7.rb +0 -253
  395. data/lib/peal/models/content_violation_any_of8.rb +0 -367
  396. data/lib/peal/models/content_violation_any_of9.rb +0 -281
  397. data/lib/peal/models/created_api_key.rb +0 -203
  398. data/lib/peal/models/database_unavailable_encoded.rb +0 -201
  399. data/lib/peal/models/draft_page.rb +0 -191
  400. data/lib/peal/models/effect_http_api_error_bad_request_encoded.rb +0 -201
  401. data/lib/peal/models/engagement_day.rb +0 -364
  402. data/lib/peal/models/failure_reason.rb +0 -50
  403. data/lib/peal/models/forbidden_encoded.rb +0 -201
  404. data/lib/peal/models/invalid_date_range_encoded.rb +0 -201
  405. data/lib/peal/models/invalid_time_range_encoded.rb +0 -201
  406. data/lib/peal/models/invalid_time_zone_encoded.rb +0 -227
  407. data/lib/peal/models/invitation.rb +0 -307
  408. data/lib/peal/models/invitation_not_found_encoded.rb +0 -201
  409. data/lib/peal/models/invitations_create409_response.rb +0 -103
  410. data/lib/peal/models/invitations_revoke404_response.rb +0 -103
  411. data/lib/peal/models/mark_notices_read.rb +0 -197
  412. data/lib/peal/models/me.rb +0 -217
  413. data/lib/peal/models/me_user.rb +0 -317
  414. data/lib/peal/models/media.rb +0 -457
  415. data/lib/peal/models/media_attachment.rb +0 -212
  416. data/lib/peal/models/media_content_type.rb +0 -44
  417. data/lib/peal/models/media_create422_response.rb +0 -104
  418. data/lib/peal/models/media_description.rb +0 -163
  419. data/lib/peal/models/media_dimensions.rb +0 -239
  420. data/lib/peal/models/media_get404_response.rb +0 -103
  421. data/lib/peal/models/media_in_use_encoded.rb +0 -229
  422. data/lib/peal/models/media_kind.rb +0 -40
  423. data/lib/peal/models/media_not_found_encoded.rb +0 -201
  424. data/lib/peal/models/media_page.rb +0 -191
  425. data/lib/peal/models/media_status.rb +0 -105
  426. data/lib/peal/models/media_status_any_of.rb +0 -201
  427. data/lib/peal/models/media_status_any_of1.rb +0 -227
  428. data/lib/peal/models/media_status_any_of2.rb +0 -201
  429. data/lib/peal/models/media_status_any_of3.rb +0 -227
  430. data/lib/peal/models/media_store_unavailable_encoded.rb +0 -201
  431. data/lib/peal/models/media_too_large_encoded.rb +0 -317
  432. data/lib/peal/models/media_usage.rb +0 -207
  433. data/lib/peal/models/membership.rb +0 -283
  434. data/lib/peal/models/metric_totals.rb +0 -399
  435. data/lib/peal/models/metrics_snapshot.rb +0 -203
  436. data/lib/peal/models/new_api_key.rb +0 -269
  437. data/lib/peal/models/new_invitation.rb +0 -245
  438. data/lib/peal/models/new_upload.rb +0 -231
  439. data/lib/peal/models/non_finite_number.rb +0 -41
  440. data/lib/peal/models/notice.rb +0 -267
  441. data/lib/peal/models/notice_channel.rb +0 -225
  442. data/lib/peal/models/notice_event.rb +0 -106
  443. data/lib/peal/models/notice_event_any_of.rb +0 -251
  444. data/lib/peal/models/notice_event_any_of1.rb +0 -265
  445. data/lib/peal/models/notice_event_any_of2.rb +0 -239
  446. data/lib/peal/models/notice_event_any_of3.rb +0 -227
  447. data/lib/peal/models/notice_event_any_of4.rb +0 -253
  448. data/lib/peal/models/notice_page.rb +0 -191
  449. data/lib/peal/models/notification_preferences.rb +0 -203
  450. data/lib/peal/models/notification_preferences_change.rb +0 -169
  451. data/lib/peal/models/notification_preferences_change_email.rb +0 -187
  452. data/lib/peal/models/notification_preferences_email.rb +0 -255
  453. data/lib/peal/models/paid_plan.rb +0 -40
  454. data/lib/peal/models/period_usage.rb +0 -221
  455. data/lib/peal/models/permission.rb +0 -66
  456. data/lib/peal/models/plan.rb +0 -41
  457. data/lib/peal/models/plan_allowances.rb +0 -295
  458. data/lib/peal/models/plan_limit.rb +0 -42
  459. data/lib/peal/models/plan_limit_reached_encoded.rb +0 -271
  460. data/lib/peal/models/plan_offer.rb +0 -225
  461. data/lib/peal/models/platform.rb +0 -48
  462. data/lib/peal/models/platform_unreachable_encoded.rb +0 -201
  463. data/lib/peal/models/post.rb +0 -315
  464. data/lib/peal/models/post_analytics.rb +0 -205
  465. data/lib/peal/models/post_content.rb +0 -251
  466. data/lib/peal/models/post_content_invalid_encoded.rb +0 -229
  467. data/lib/peal/models/post_draft.rb +0 -216
  468. data/lib/peal/models/post_metrics.rb +0 -355
  469. data/lib/peal/models/post_not_found_encoded.rb +0 -201
  470. data/lib/peal/models/post_outcome.rb +0 -43
  471. data/lib/peal/models/post_schedule.rb +0 -203
  472. data/lib/peal/models/post_status.rb +0 -43
  473. data/lib/peal/models/post_status_conflict_encoded.rb +0 -227
  474. data/lib/peal/models/post_target.rb +0 -364
  475. data/lib/peal/models/post_target_status.rb +0 -44
  476. data/lib/peal/models/posts_create422_response.rb +0 -104
  477. data/lib/peal/models/posts_get404_response.rb +0 -103
  478. data/lib/peal/models/posts_repost409_response.rb +0 -103
  479. data/lib/peal/models/posts_schedule422_response.rb +0 -106
  480. data/lib/peal/models/prepared_upload.rb +0 -203
  481. data/lib/peal/models/probe_state.rb +0 -44
  482. data/lib/peal/models/publication_attempt.rb +0 -377
  483. data/lib/peal/models/rejection_reason.rb +0 -40
  484. data/lib/peal/models/role.rb +0 -43
  485. data/lib/peal/models/schedule_in_past_encoded.rb +0 -201
  486. data/lib/peal/models/schedule_post.rb +0 -240
  487. data/lib/peal/models/signed_request.rb +0 -255
  488. data/lib/peal/models/subscription_status.rb +0 -46
  489. data/lib/peal/models/suggestion.rb +0 -103
  490. data/lib/peal/models/suggestion_any_of.rb +0 -227
  491. data/lib/peal/models/suggestion_any_of1.rb +0 -229
  492. data/lib/peal/models/suggestion_request.rb +0 -212
  493. data/lib/peal/models/target_confirmation.rb +0 -103
  494. data/lib/peal/models/target_confirmation_any_of.rb +0 -228
  495. data/lib/peal/models/target_confirmation_any_of1.rb +0 -201
  496. data/lib/peal/models/target_metrics.rb +0 -319
  497. data/lib/peal/models/target_options.rb +0 -104
  498. data/lib/peal/models/target_status_conflict_encoded.rb +0 -227
  499. data/lib/peal/models/text_override.rb +0 -221
  500. data/lib/peal/models/text_unit.rb +0 -44
  501. data/lib/peal/models/tik_tok_account.rb +0 -203
  502. data/lib/peal/models/tik_tok_account_posting.rb +0 -103
  503. data/lib/peal/models/tik_tok_account_posting_any_of.rb +0 -227
  504. data/lib/peal/models/tik_tok_account_posting_any_of1.rb +0 -227
  505. data/lib/peal/models/tik_tok_block.rb +0 -41
  506. data/lib/peal/models/tik_tok_creator.rb +0 -357
  507. data/lib/peal/models/tik_tok_options.rb +0 -274
  508. data/lib/peal/models/tik_tok_privacy_level.rb +0 -42
  509. data/lib/peal/models/too_many_invitations_encoded.rb +0 -201
  510. data/lib/peal/models/top_post.rb +0 -337
  511. data/lib/peal/models/translation_language.rb +0 -48
  512. data/lib/peal/models/unauthenticated_encoded.rb +0 -201
  513. data/lib/peal/models/unconfirmed_reason.rb +0 -42
  514. data/lib/peal/models/unknown_channels_encoded.rb +0 -229
  515. data/lib/peal/models/unknown_media_encoded.rb +0 -229
  516. data/lib/peal/models/unread_notices.rb +0 -195
  517. data/lib/peal/models/unsupported_media_type_encoded.rb +0 -227
  518. data/lib/peal/models/upload_incomplete_encoded.rb +0 -201
  519. data/lib/peal/models/upload_part.rb +0 -265
  520. data/lib/peal/models/upload_rejected_encoded.rb +0 -227
  521. data/lib/peal/models/upload_target.rb +0 -103
  522. data/lib/peal/models/upload_target_any_of.rb +0 -253
  523. data/lib/peal/models/upload_target_any_of1.rb +0 -299
  524. data/lib/peal/models/usage.rb +0 -291
  525. data/lib/peal/models/workspace_member.rb +0 -281
  526. data/lib/peal/models/workspace_not_found_encoded.rb +0 -201
  527. data/lib/peal/models/you_tube_options.rb +0 -324
  528. data/lib/peal/models/you_tube_privacy.rb +0 -41
@@ -0,0 +1,703 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Posts
5
+ class Client
6
+ # @param client [Peal::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # Lists the workspace's drafts, newest first, 20 a page unless `limit` (at most 50) says otherwise. Pass the
14
+ # page's `nextCursor` as `cursor` for the next one. Needs post:read.
15
+ #
16
+ # @param request_options [Hash]
17
+ # @param params [Hash]
18
+ # @option request_options [String] :base_url
19
+ # @option request_options [Hash{String => Object}] :additional_headers
20
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
21
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
22
+ # @option request_options [Integer] :timeout_in_seconds
23
+ # @option params [String] :workspace_id
24
+ # @option params [String, nil] :cursor
25
+ # @option params [String, nil] :limit
26
+ #
27
+ # @example
28
+ # client.posts.drafts(workspace_id: "workspaceId")
29
+ #
30
+ # @return [Peal::Types::DraftPage]
31
+ def drafts(request_options: {}, **params)
32
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
33
+ query_params = {}
34
+ query_params["cursor"] = params[:cursor] if params.key?(:cursor)
35
+ query_params["limit"] = params[:limit] if params.key?(:limit)
36
+
37
+ request = Peal::Internal::JSON::Request.new(
38
+ base_url: request_options[:base_url],
39
+ method: "GET",
40
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/drafts",
41
+ query: query_params,
42
+ request_options: request_options
43
+ )
44
+ begin
45
+ response = @client.send(request)
46
+ rescue Net::HTTPRequestTimeout
47
+ raise Peal::Errors::TimeoutError
48
+ end
49
+ code = response.code.to_i
50
+ if code.between?(200, 299)
51
+ (response.body.to_s.empty? ? nil : Peal::Types::DraftPage.load(response.body))
52
+ else
53
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
54
+ error_types = {
55
+ 401 => Peal::Types::UnauthenticatedEncoded,
56
+ 403 => Peal::Types::ForbiddenEncoded
57
+ }
58
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
59
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
60
+ end
61
+ end
62
+
63
+ # Lists the posts scheduled from `from` (included) to `to` (excluded), at most 62 days apart, by scheduled
64
+ # instant, with their channels and how each went. Drafts have no time and are not listed; cancelled posts are,
65
+ # with the time they had. Needs post:read.
66
+ #
67
+ # @param request_options [Hash]
68
+ # @param params [Hash]
69
+ # @option request_options [String] :base_url
70
+ # @option request_options [Hash{String => Object}] :additional_headers
71
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
72
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
73
+ # @option request_options [Integer] :timeout_in_seconds
74
+ # @option params [String] :workspace_id
75
+ # @option params [String] :from
76
+ # @option params [String] :to
77
+ #
78
+ # @example
79
+ # client.posts.list(
80
+ # workspace_id: "workspaceId",
81
+ # from: "from",
82
+ # to: "to"
83
+ # )
84
+ #
85
+ # @return [Array[Peal::Types::Post]]
86
+ def list(request_options: {}, **params)
87
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
88
+ query_params = {}
89
+ query_params["from"] = params[:from] if params.key?(:from)
90
+ query_params["to"] = params[:to] if params.key?(:to)
91
+
92
+ request = Peal::Internal::JSON::Request.new(
93
+ base_url: request_options[:base_url],
94
+ method: "GET",
95
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts",
96
+ query: query_params,
97
+ request_options: request_options
98
+ )
99
+ begin
100
+ response = @client.send(request)
101
+ rescue Net::HTTPRequestTimeout
102
+ raise Peal::Errors::TimeoutError
103
+ end
104
+ code = response.code.to_i
105
+ if code.between?(200, 299)
106
+ Peal::Internal::Types::Utils.coerce(Internal::Types::Array[Peal::Types::Post], (response.body.to_s.empty? ? nil : JSON.parse(response.body, symbolize_names: true)))
107
+ else
108
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
109
+ error_types = {
110
+ 401 => Peal::Types::UnauthenticatedEncoded,
111
+ 403 => Peal::Types::ForbiddenEncoded
112
+ }
113
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
114
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
115
+ end
116
+ end
117
+
118
+ # Creates a draft for some of the workspace's channels, possibly none yet, with options on those whose platform
119
+ # takes them (`TargetOptions`, of the channel's platform). Its media must be the workspace's, and ready. Its text,
120
+ # media and options are checked against each platform's rules when it is scheduled, not before. Needs post:create,
121
+ # channel:read, and media:read when it shows media.
122
+ #
123
+ # @param request_options [Hash]
124
+ # @param params [Peal::Types::PostDraft]
125
+ # @option request_options [String] :base_url
126
+ # @option request_options [Hash{String => Object}] :additional_headers
127
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
128
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
129
+ # @option request_options [Integer] :timeout_in_seconds
130
+ # @option params [String] :workspace_id
131
+ #
132
+ # @example
133
+ # client.posts.create(
134
+ # workspace_id: "workspaceId",
135
+ # channel_ids: ["channelIds"],
136
+ # content: {
137
+ # media: [{
138
+ # altText: "altText",
139
+ # mediaId: "mediaId"
140
+ # }],
141
+ # overrides: [{
142
+ # channelId: "channelId",
143
+ # text: "text"
144
+ # }],
145
+ # text: "text"
146
+ # }
147
+ # )
148
+ #
149
+ # @return [Peal::Types::Post]
150
+ def create(request_options: {}, **params)
151
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
152
+ path_param_names = %i[workspace_id]
153
+ body_params = params.except(*path_param_names)
154
+
155
+ request = Peal::Internal::JSON::Request.new(
156
+ base_url: request_options[:base_url],
157
+ method: "POST",
158
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts",
159
+ body: Peal::Types::PostDraft.new(body_params).to_h,
160
+ request_options: request_options,
161
+ max_retries: 0
162
+ )
163
+ begin
164
+ response = @client.send(request)
165
+ rescue Net::HTTPRequestTimeout
166
+ raise Peal::Errors::TimeoutError
167
+ end
168
+ code = response.code.to_i
169
+ if code.between?(200, 299)
170
+ (response.body.to_s.empty? ? nil : Peal::Types::Post.load(response.body))
171
+ else
172
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
173
+ error_types = {
174
+ 401 => Peal::Types::UnauthenticatedEncoded,
175
+ 403 => Peal::Types::ForbiddenEncoded
176
+ }
177
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
178
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
179
+ end
180
+ end
181
+
182
+ # Answers with a post of the workspace. Needs post:read.
183
+ #
184
+ # @param request_options [Hash]
185
+ # @param params [Hash]
186
+ # @option request_options [String] :base_url
187
+ # @option request_options [Hash{String => Object}] :additional_headers
188
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
189
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
190
+ # @option request_options [Integer] :timeout_in_seconds
191
+ # @option params [String] :workspace_id
192
+ # @option params [String] :post_id
193
+ #
194
+ # @example
195
+ # client.posts.get(
196
+ # workspace_id: "workspaceId",
197
+ # post_id: "postId"
198
+ # )
199
+ #
200
+ # @return [Peal::Types::Post]
201
+ def get(request_options: {}, **params)
202
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
203
+ request = Peal::Internal::JSON::Request.new(
204
+ base_url: request_options[:base_url],
205
+ method: "GET",
206
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}",
207
+ request_options: request_options
208
+ )
209
+ begin
210
+ response = @client.send(request)
211
+ rescue Net::HTTPRequestTimeout
212
+ raise Peal::Errors::TimeoutError
213
+ end
214
+ code = response.code.to_i
215
+ if code.between?(200, 299)
216
+ (response.body.to_s.empty? ? nil : Peal::Types::Post.load(response.body))
217
+ else
218
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
219
+ error_types = {
220
+ 401 => Peal::Types::UnauthenticatedEncoded,
221
+ 403 => Peal::Types::ForbiddenEncoded
222
+ }
223
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
224
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
225
+ end
226
+ end
227
+
228
+ # Replaces a draft's content, channels and options: options left out are removed. A post that is no longer a draft
229
+ # is a conflict. Needs post:update, channel:read, and media:read when it shows media.
230
+ #
231
+ # @param request_options [Hash]
232
+ # @param params [Peal::Types::PostDraft]
233
+ # @option request_options [String] :base_url
234
+ # @option request_options [Hash{String => Object}] :additional_headers
235
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
236
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
237
+ # @option request_options [Integer] :timeout_in_seconds
238
+ # @option params [String] :workspace_id
239
+ # @option params [String] :post_id
240
+ #
241
+ # @example
242
+ # client.posts.update(
243
+ # workspace_id: "workspaceId",
244
+ # post_id: "postId",
245
+ # channel_ids: ["channelIds"],
246
+ # content: {
247
+ # media: [{
248
+ # altText: "altText",
249
+ # mediaId: "mediaId"
250
+ # }],
251
+ # overrides: [{
252
+ # channelId: "channelId",
253
+ # text: "text"
254
+ # }],
255
+ # text: "text"
256
+ # }
257
+ # )
258
+ #
259
+ # @return [Peal::Types::Post]
260
+ def update(request_options: {}, **params)
261
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
262
+ path_param_names = %i[workspace_id post_id]
263
+ body_params = params.except(*path_param_names)
264
+
265
+ request = Peal::Internal::JSON::Request.new(
266
+ base_url: request_options[:base_url],
267
+ method: "PUT",
268
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}",
269
+ body: Peal::Types::PostDraft.new(body_params).to_h,
270
+ request_options: request_options
271
+ )
272
+ begin
273
+ response = @client.send(request)
274
+ rescue Net::HTTPRequestTimeout
275
+ raise Peal::Errors::TimeoutError
276
+ end
277
+ code = response.code.to_i
278
+ if code.between?(200, 299)
279
+ (response.body.to_s.empty? ? nil : Peal::Types::Post.load(response.body))
280
+ else
281
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
282
+ error_types = {
283
+ 401 => Peal::Types::UnauthenticatedEncoded,
284
+ 403 => Peal::Types::ForbiddenEncoded
285
+ }
286
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
287
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
288
+ end
289
+ end
290
+
291
+ # Deletes a draft. A post scheduled or sent is a conflict: cancel it instead. Needs post:delete, or post:update
292
+ # for the user who created the draft.
293
+ #
294
+ # @param request_options [Hash]
295
+ # @param params [Hash]
296
+ # @option request_options [String] :base_url
297
+ # @option request_options [Hash{String => Object}] :additional_headers
298
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
299
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
300
+ # @option request_options [Integer] :timeout_in_seconds
301
+ # @option params [String] :workspace_id
302
+ # @option params [String] :post_id
303
+ #
304
+ # @example
305
+ # client.posts.discard(
306
+ # workspace_id: "workspaceId",
307
+ # post_id: "postId"
308
+ # )
309
+ #
310
+ # @return [untyped]
311
+ def discard(request_options: {}, **params)
312
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
313
+ request = Peal::Internal::JSON::Request.new(
314
+ base_url: request_options[:base_url],
315
+ method: "DELETE",
316
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}",
317
+ request_options: request_options
318
+ )
319
+ begin
320
+ response = @client.send(request)
321
+ rescue Net::HTTPRequestTimeout
322
+ raise Peal::Errors::TimeoutError
323
+ end
324
+ code = response.code.to_i
325
+ return if code.between?(200, 299)
326
+
327
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
328
+ error_types = {
329
+ 401 => Peal::Types::UnauthenticatedEncoded,
330
+ 403 => Peal::Types::ForbiddenEncoded
331
+ }
332
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
333
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
334
+ end
335
+
336
+ # Lists every attempt Peal made at publishing the post, by channel, round and attempt, with how each ended. An
337
+ # attempt still in progress is not listed yet. Needs post:read.
338
+ #
339
+ # @param request_options [Hash]
340
+ # @param params [Hash]
341
+ # @option request_options [String] :base_url
342
+ # @option request_options [Hash{String => Object}] :additional_headers
343
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
344
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
345
+ # @option request_options [Integer] :timeout_in_seconds
346
+ # @option params [String] :workspace_id
347
+ # @option params [String] :post_id
348
+ #
349
+ # @example
350
+ # client.posts.attempts(
351
+ # workspace_id: "workspaceId",
352
+ # post_id: "postId"
353
+ # )
354
+ #
355
+ # @return [Array[Peal::Types::PublicationAttempt]]
356
+ def attempts(request_options: {}, **params)
357
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
358
+ request = Peal::Internal::JSON::Request.new(
359
+ base_url: request_options[:base_url],
360
+ method: "GET",
361
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}/attempts",
362
+ request_options: request_options
363
+ )
364
+ begin
365
+ response = @client.send(request)
366
+ rescue Net::HTTPRequestTimeout
367
+ raise Peal::Errors::TimeoutError
368
+ end
369
+ code = response.code.to_i
370
+ if code.between?(200, 299)
371
+ Peal::Internal::Types::Utils.coerce(Internal::Types::Array[Peal::Types::PublicationAttempt], (response.body.to_s.empty? ? nil : JSON.parse(response.body, symbolize_names: true)))
372
+ else
373
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
374
+ error_types = {
375
+ 401 => Peal::Types::UnauthenticatedEncoded,
376
+ 403 => Peal::Types::ForbiddenEncoded
377
+ }
378
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
379
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
380
+ end
381
+ end
382
+
383
+ # Schedules a draft on some of the workspace's channels at an instant, kept with the IANA time zone it was chosen
384
+ # in. The content must fit each platform's rules, its media included: file types, sizes, durations, dimensions,
385
+ # alt text, how many videos, and whether images and videos go together. A channel whose platform takes options
386
+ # needs those it requires, as the draft gives them on that channel: a channel the draft was not for has none yet.
387
+ # A time up to a minute ago publishes now. On a server that bills, the posts going out in that month (UTC) must
388
+ # fit the workspace's plan (PlanLimitReached). Needs post:schedule and channel:read, and media:read when it shows
389
+ # media.
390
+ #
391
+ # @param request_options [Hash]
392
+ # @param params [Peal::Posts::Types::SchedulePost]
393
+ # @option request_options [String] :base_url
394
+ # @option request_options [Hash{String => Object}] :additional_headers
395
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
396
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
397
+ # @option request_options [Integer] :timeout_in_seconds
398
+ # @option params [String] :workspace_id
399
+ # @option params [String] :post_id
400
+ #
401
+ # @example
402
+ # client.posts.schedule(
403
+ # workspace_id: "workspaceId",
404
+ # post_id: "postId",
405
+ # at: "at",
406
+ # channel_ids: ["channelIds"],
407
+ # time_zone: "timeZone"
408
+ # )
409
+ #
410
+ # @return [Peal::Types::Post]
411
+ def schedule(request_options: {}, **params)
412
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
413
+ request_data = Peal::Posts::Types::SchedulePost.new(params).to_h
414
+ non_body_param_names = %w[workspaceId postId]
415
+ body = request_data.except(*non_body_param_names)
416
+
417
+ request = Peal::Internal::JSON::Request.new(
418
+ base_url: request_options[:base_url],
419
+ method: "POST",
420
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}/schedule",
421
+ body: body,
422
+ request_options: request_options,
423
+ max_retries: 0
424
+ )
425
+ begin
426
+ response = @client.send(request)
427
+ rescue Net::HTTPRequestTimeout
428
+ raise Peal::Errors::TimeoutError
429
+ end
430
+ code = response.code.to_i
431
+ if code.between?(200, 299)
432
+ (response.body.to_s.empty? ? nil : Peal::Types::Post.load(response.body))
433
+ else
434
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
435
+ error_types = {
436
+ 401 => Peal::Types::UnauthenticatedEncoded,
437
+ 402 => Peal::Types::PlanLimitReachedEncoded,
438
+ 403 => Peal::Types::ForbiddenEncoded
439
+ }
440
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
441
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
442
+ end
443
+ end
444
+
445
+ # Moves a scheduled post to another instant, or schedules a draft on the channels it has. Moved to another month,
446
+ # or scheduled, it must fit that month's posts in the workspace's plan (PlanLimitReached). Needs post:schedule,
447
+ # and channel:read for a draft.
448
+ #
449
+ # @param request_options [Hash]
450
+ # @param params [Peal::Types::PostSchedule]
451
+ # @option request_options [String] :base_url
452
+ # @option request_options [Hash{String => Object}] :additional_headers
453
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
454
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
455
+ # @option request_options [Integer] :timeout_in_seconds
456
+ # @option params [String] :workspace_id
457
+ # @option params [String] :post_id
458
+ #
459
+ # @example
460
+ # client.posts.reschedule(
461
+ # workspace_id: "workspaceId",
462
+ # post_id: "postId",
463
+ # at: "at",
464
+ # time_zone: "timeZone"
465
+ # )
466
+ #
467
+ # @return [Peal::Types::Post]
468
+ def reschedule(request_options: {}, **params)
469
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
470
+ path_param_names = %i[workspace_id post_id]
471
+ body_params = params.except(*path_param_names)
472
+
473
+ request = Peal::Internal::JSON::Request.new(
474
+ base_url: request_options[:base_url],
475
+ method: "POST",
476
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}/reschedule",
477
+ body: Peal::Types::PostSchedule.new(body_params).to_h,
478
+ request_options: request_options,
479
+ max_retries: 0
480
+ )
481
+ begin
482
+ response = @client.send(request)
483
+ rescue Net::HTTPRequestTimeout
484
+ raise Peal::Errors::TimeoutError
485
+ end
486
+ code = response.code.to_i
487
+ if code.between?(200, 299)
488
+ (response.body.to_s.empty? ? nil : Peal::Types::Post.load(response.body))
489
+ else
490
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
491
+ error_types = {
492
+ 401 => Peal::Types::UnauthenticatedEncoded,
493
+ 402 => Peal::Types::PlanLimitReachedEncoded,
494
+ 403 => Peal::Types::ForbiddenEncoded
495
+ }
496
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
497
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
498
+ end
499
+ end
500
+
501
+ # Takes a scheduled post back to draft, so its text and media can change: it goes out at no time until it is
502
+ # scheduled again. A post already publishing is a conflict. Needs post:schedule.
503
+ #
504
+ # @param request_options [Hash]
505
+ # @param params [Hash]
506
+ # @option request_options [String] :base_url
507
+ # @option request_options [Hash{String => Object}] :additional_headers
508
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
509
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
510
+ # @option request_options [Integer] :timeout_in_seconds
511
+ # @option params [String] :workspace_id
512
+ # @option params [String] :post_id
513
+ #
514
+ # @example
515
+ # client.posts.unschedule(
516
+ # workspace_id: "workspaceId",
517
+ # post_id: "postId"
518
+ # )
519
+ #
520
+ # @return [Peal::Types::Post]
521
+ def unschedule(request_options: {}, **params)
522
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
523
+ request = Peal::Internal::JSON::Request.new(
524
+ base_url: request_options[:base_url],
525
+ method: "POST",
526
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}/unschedule",
527
+ request_options: request_options,
528
+ max_retries: 0
529
+ )
530
+ begin
531
+ response = @client.send(request)
532
+ rescue Net::HTTPRequestTimeout
533
+ raise Peal::Errors::TimeoutError
534
+ end
535
+ code = response.code.to_i
536
+ if code.between?(200, 299)
537
+ (response.body.to_s.empty? ? nil : Peal::Types::Post.load(response.body))
538
+ else
539
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
540
+ error_types = {
541
+ 401 => Peal::Types::UnauthenticatedEncoded,
542
+ 403 => Peal::Types::ForbiddenEncoded
543
+ }
544
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
545
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
546
+ end
547
+ end
548
+
549
+ # Sends the post again, now, on one channel where it failed or is unconfirmed: a new round, with its own attempts.
550
+ # Check the platform first when it is unconfirmed, as it may be live already. Needs post:schedule.
551
+ #
552
+ # @param request_options [Hash]
553
+ # @param params [Hash]
554
+ # @option request_options [String] :base_url
555
+ # @option request_options [Hash{String => Object}] :additional_headers
556
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
557
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
558
+ # @option request_options [Integer] :timeout_in_seconds
559
+ # @option params [String] :workspace_id
560
+ # @option params [String] :post_id
561
+ # @option params [String] :target_id
562
+ #
563
+ # @example
564
+ # client.posts.repost(
565
+ # workspace_id: "workspaceId",
566
+ # post_id: "postId",
567
+ # target_id: "targetId"
568
+ # )
569
+ #
570
+ # @return [Peal::Types::Post]
571
+ def repost(request_options: {}, **params)
572
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
573
+ request = Peal::Internal::JSON::Request.new(
574
+ base_url: request_options[:base_url],
575
+ method: "POST",
576
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}/targets/#{URI.encode_uri_component(params[:target_id].to_s)}/repost",
577
+ request_options: request_options,
578
+ max_retries: 0
579
+ )
580
+ begin
581
+ response = @client.send(request)
582
+ rescue Net::HTTPRequestTimeout
583
+ raise Peal::Errors::TimeoutError
584
+ end
585
+ code = response.code.to_i
586
+ if code.between?(200, 299)
587
+ (response.body.to_s.empty? ? nil : Peal::Types::Post.load(response.body))
588
+ else
589
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
590
+ error_types = {
591
+ 401 => Peal::Types::UnauthenticatedEncoded,
592
+ 403 => Peal::Types::ForbiddenEncoded
593
+ }
594
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
595
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
596
+ end
597
+ end
598
+
599
+ # Says what you found on the platform for a post unconfirmed on one channel: `published`, with its address if you
600
+ # have it, or `notPublished`, which fails it there so it can be reposted. Its notifications are marked read. Needs
601
+ # post:schedule.
602
+ #
603
+ # @param request_options [Hash]
604
+ # @param params [Peal::Types::TargetConfirmation]
605
+ # @option request_options [String] :base_url
606
+ # @option request_options [Hash{String => Object}] :additional_headers
607
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
608
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
609
+ # @option request_options [Integer] :timeout_in_seconds
610
+ # @option params [String] :workspace_id
611
+ # @option params [String] :post_id
612
+ # @option params [String] :target_id
613
+ #
614
+ # @example
615
+ # client.posts.confirm(
616
+ # workspace_id: "workspaceId",
617
+ # post_id: "postId",
618
+ # target_id: "targetId"
619
+ # )
620
+ #
621
+ # @return [Peal::Types::Post]
622
+ def confirm(request_options: {}, **params)
623
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
624
+ path_param_names = %i[workspace_id post_id target_id]
625
+ body_params = params.except(*path_param_names)
626
+
627
+ request = Peal::Internal::JSON::Request.new(
628
+ base_url: request_options[:base_url],
629
+ method: "POST",
630
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}/targets/#{URI.encode_uri_component(params[:target_id].to_s)}/confirm",
631
+ body: Peal::Types::TargetConfirmation.new(body_params).to_h,
632
+ request_options: request_options,
633
+ max_retries: 0
634
+ )
635
+ begin
636
+ response = @client.send(request)
637
+ rescue Net::HTTPRequestTimeout
638
+ raise Peal::Errors::TimeoutError
639
+ end
640
+ code = response.code.to_i
641
+ if code.between?(200, 299)
642
+ (response.body.to_s.empty? ? nil : Peal::Types::Post.load(response.body))
643
+ else
644
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
645
+ error_types = {
646
+ 401 => Peal::Types::UnauthenticatedEncoded,
647
+ 403 => Peal::Types::ForbiddenEncoded
648
+ }
649
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
650
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
651
+ end
652
+ end
653
+
654
+ # Cancels a draft or a scheduled post. A post already publishing finishes with what its channels did: those not
655
+ # yet sent are cancelled. Needs post:schedule.
656
+ #
657
+ # @param request_options [Hash]
658
+ # @param params [Hash]
659
+ # @option request_options [String] :base_url
660
+ # @option request_options [Hash{String => Object}] :additional_headers
661
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
662
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
663
+ # @option request_options [Integer] :timeout_in_seconds
664
+ # @option params [String] :workspace_id
665
+ # @option params [String] :post_id
666
+ #
667
+ # @example
668
+ # client.posts.cancel(
669
+ # workspace_id: "workspaceId",
670
+ # post_id: "postId"
671
+ # )
672
+ #
673
+ # @return [Peal::Types::Post]
674
+ def cancel(request_options: {}, **params)
675
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
676
+ request = Peal::Internal::JSON::Request.new(
677
+ base_url: request_options[:base_url],
678
+ method: "POST",
679
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/posts/#{URI.encode_uri_component(params[:post_id].to_s)}/cancel",
680
+ request_options: request_options,
681
+ max_retries: 0
682
+ )
683
+ begin
684
+ response = @client.send(request)
685
+ rescue Net::HTTPRequestTimeout
686
+ raise Peal::Errors::TimeoutError
687
+ end
688
+ code = response.code.to_i
689
+ if code.between?(200, 299)
690
+ (response.body.to_s.empty? ? nil : Peal::Types::Post.load(response.body))
691
+ else
692
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
693
+ error_types = {
694
+ 401 => Peal::Types::UnauthenticatedEncoded,
695
+ 403 => Peal::Types::ForbiddenEncoded
696
+ }
697
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
698
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
699
+ end
700
+ end
701
+ end
702
+ end
703
+ end