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,366 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Channels
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 channels connected to the workspace, oldest first. Their tokens are never shown. Needs channel:read.
14
+ #
15
+ # @param request_options [Hash]
16
+ # @param params [Hash]
17
+ # @option request_options [String] :base_url
18
+ # @option request_options [Hash{String => Object}] :additional_headers
19
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
20
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
21
+ # @option request_options [Integer] :timeout_in_seconds
22
+ # @option params [String] :workspace_id
23
+ #
24
+ # @example
25
+ # client.channels.list(workspace_id: "workspaceId")
26
+ #
27
+ # @return [Array[Peal::Types::Channel]]
28
+ def list(request_options: {}, **params)
29
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
30
+ request = Peal::Internal::JSON::Request.new(
31
+ base_url: request_options[:base_url],
32
+ method: "GET",
33
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/channels",
34
+ request_options: request_options
35
+ )
36
+ begin
37
+ response = @client.send(request)
38
+ rescue Net::HTTPRequestTimeout
39
+ raise Peal::Errors::TimeoutError
40
+ end
41
+ code = response.code.to_i
42
+ if code.between?(200, 299)
43
+ Peal::Internal::Types::Utils.coerce(Internal::Types::Array[Peal::Types::Channel], (response.body.to_s.empty? ? nil : JSON.parse(response.body, symbolize_names: true)))
44
+ else
45
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
46
+ error_types = {
47
+ 401 => Peal::Types::UnauthenticatedEncoded,
48
+ 403 => Peal::Types::ForbiddenEncoded
49
+ }
50
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
51
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
52
+ end
53
+ end
54
+
55
+ # Lists the platforms this server can connect accounts of, in Peal's order. A platform that needs a setting the
56
+ # server lacks, such as an app registered on LinkedIn, X or Meta or a Google OAuth client, is left out. Needs
57
+ # channel:connect.
58
+ #
59
+ # @param request_options [Hash]
60
+ # @param params [Hash]
61
+ # @option request_options [String] :base_url
62
+ # @option request_options [Hash{String => Object}] :additional_headers
63
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
64
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
65
+ # @option request_options [Integer] :timeout_in_seconds
66
+ # @option params [String] :workspace_id
67
+ #
68
+ # @example
69
+ # client.channels.platforms(workspace_id: "workspaceId")
70
+ #
71
+ # @return [Peal::Types::ConnectablePlatforms]
72
+ def platforms(request_options: {}, **params)
73
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
74
+ request = Peal::Internal::JSON::Request.new(
75
+ base_url: request_options[:base_url],
76
+ method: "GET",
77
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/channels/platforms",
78
+ request_options: request_options
79
+ )
80
+ begin
81
+ response = @client.send(request)
82
+ rescue Net::HTTPRequestTimeout
83
+ raise Peal::Errors::TimeoutError
84
+ end
85
+ code = response.code.to_i
86
+ if code.between?(200, 299)
87
+ (response.body.to_s.empty? ? nil : Peal::Types::ConnectablePlatforms.load(response.body))
88
+ else
89
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
90
+ error_types = {
91
+ 401 => Peal::Types::UnauthenticatedEncoded,
92
+ 403 => Peal::Types::ForbiddenEncoded
93
+ }
94
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
95
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
96
+ end
97
+ end
98
+
99
+ # Starts connecting an account of the platform: answers with the platform's sign-in page, where the browser goes
100
+ # next. The connection is tied to the caller and the workspace, and must be completed within 15 minutes. On a
101
+ # server that bills, a workspace whose plan allows no more channels gets PlanLimitReached. Needs channel:connect.
102
+ #
103
+ # @param request_options [Hash]
104
+ # @param params [Peal::Channels::Types::ConnectChannel]
105
+ # @option request_options [String] :base_url
106
+ # @option request_options [Hash{String => Object}] :additional_headers
107
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
108
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
109
+ # @option request_options [Integer] :timeout_in_seconds
110
+ # @option params [String] :workspace_id
111
+ # @option params [Peal::Types::Platform] :platform
112
+ #
113
+ # @example
114
+ # client.channels.connect(
115
+ # workspace_id: "workspaceId",
116
+ # platform: "x"
117
+ # )
118
+ #
119
+ # @return [Peal::Types::Authorization]
120
+ def connect(request_options: {}, **params)
121
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
122
+ request_data = Peal::Channels::Types::ConnectChannel.new(params).to_h
123
+ non_body_param_names = %w[workspaceId platform]
124
+ body = request_data.except(*non_body_param_names)
125
+
126
+ request = Peal::Internal::JSON::Request.new(
127
+ base_url: request_options[:base_url],
128
+ method: "POST",
129
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/channels/connect/#{URI.encode_uri_component(params[:platform].to_s)}",
130
+ body: body,
131
+ request_options: request_options,
132
+ max_retries: 0
133
+ )
134
+ begin
135
+ response = @client.send(request)
136
+ rescue Net::HTTPRequestTimeout
137
+ raise Peal::Errors::TimeoutError
138
+ end
139
+ code = response.code.to_i
140
+ if code.between?(200, 299)
141
+ (response.body.to_s.empty? ? nil : Peal::Types::Authorization.load(response.body))
142
+ else
143
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
144
+ error_types = {
145
+ 401 => Peal::Types::UnauthenticatedEncoded,
146
+ 402 => Peal::Types::PlanLimitReachedEncoded,
147
+ 403 => Peal::Types::ForbiddenEncoded
148
+ }
149
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
150
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
151
+ end
152
+ end
153
+
154
+ # Completes a connection with what the platform sent back: the account becomes a channel of the workspace, or the
155
+ # channel it reconnects takes its new tokens. When the sign-in reached several accounts, as the Pages a Facebook
156
+ # user manages, the answer lists them instead, to choose with chooseAccounts. Only the member who started the
157
+ # connection can complete it, once. A new account needs room in the workspace's plan (PlanLimitReached). Needs
158
+ # channel:connect.
159
+ #
160
+ # @param request_options [Hash]
161
+ # @param params [Peal::Channels::Types::ConnectCallback]
162
+ # @option request_options [String] :base_url
163
+ # @option request_options [Hash{String => Object}] :additional_headers
164
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
165
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
166
+ # @option request_options [Integer] :timeout_in_seconds
167
+ # @option params [String] :workspace_id
168
+ # @option params [Peal::Types::Platform] :platform
169
+ #
170
+ # @example
171
+ # client.channels.complete_connect(
172
+ # workspace_id: "workspaceId",
173
+ # platform: "x",
174
+ # state: "state"
175
+ # )
176
+ #
177
+ # @return [Peal::Types::ConnectOutcome]
178
+ def complete_connect(request_options: {}, **params)
179
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
180
+ request_data = Peal::Channels::Types::ConnectCallback.new(params).to_h
181
+ non_body_param_names = %w[workspaceId platform]
182
+ body = request_data.except(*non_body_param_names)
183
+
184
+ request = Peal::Internal::JSON::Request.new(
185
+ base_url: request_options[:base_url],
186
+ method: "POST",
187
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/channels/connect/#{URI.encode_uri_component(params[:platform].to_s)}/callback",
188
+ body: body,
189
+ request_options: request_options,
190
+ max_retries: 0
191
+ )
192
+ begin
193
+ response = @client.send(request)
194
+ rescue Net::HTTPRequestTimeout
195
+ raise Peal::Errors::TimeoutError
196
+ end
197
+ code = response.code.to_i
198
+ if code.between?(200, 299)
199
+ (response.body.to_s.empty? ? nil : Peal::Types::ConnectOutcome.load(response.body))
200
+ else
201
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
202
+ error_types = {
203
+ 401 => Peal::Types::UnauthenticatedEncoded,
204
+ 402 => Peal::Types::PlanLimitReachedEncoded,
205
+ 403 => Peal::Types::ForbiddenEncoded
206
+ }
207
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
208
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
209
+ end
210
+ end
211
+
212
+ # Connects the accounts the member chose among those a completed sign-in listed: each becomes a channel of the
213
+ # workspace, or reconnects the one it has. The new accounts chosen need room in the workspace's plan, all of them:
214
+ # otherwise none is connected (PlanLimitReached), and the choice can be made again with fewer. Only the member who
215
+ # completed the sign-in can choose, within 15 minutes, and once an account is connected: a choice that failed
216
+ # before connecting any can be made again. Needs channel:connect.
217
+ #
218
+ # @param request_options [Hash]
219
+ # @param params [Peal::Channels::Types::ChooseAccounts]
220
+ # @option request_options [String] :base_url
221
+ # @option request_options [Hash{String => Object}] :additional_headers
222
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
223
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
224
+ # @option request_options [Integer] :timeout_in_seconds
225
+ # @option params [String] :workspace_id
226
+ # @option params [Peal::Types::Platform] :platform
227
+ #
228
+ # @example
229
+ # client.channels.choose_accounts(
230
+ # workspace_id: "workspaceId",
231
+ # platform: "x",
232
+ # account_ids: ["accountIds"],
233
+ # selection: "selection"
234
+ # )
235
+ #
236
+ # @return [Array[Peal::Types::Channel]]
237
+ def choose_accounts(request_options: {}, **params)
238
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
239
+ request_data = Peal::Channels::Types::ChooseAccounts.new(params).to_h
240
+ non_body_param_names = %w[workspaceId platform]
241
+ body = request_data.except(*non_body_param_names)
242
+
243
+ request = Peal::Internal::JSON::Request.new(
244
+ base_url: request_options[:base_url],
245
+ method: "POST",
246
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/channels/connect/#{URI.encode_uri_component(params[:platform].to_s)}/accounts",
247
+ body: body,
248
+ request_options: request_options,
249
+ max_retries: 0
250
+ )
251
+ begin
252
+ response = @client.send(request)
253
+ rescue Net::HTTPRequestTimeout
254
+ raise Peal::Errors::TimeoutError
255
+ end
256
+ code = response.code.to_i
257
+ if code.between?(200, 299)
258
+ Peal::Internal::Types::Utils.coerce(Internal::Types::Array[Peal::Types::Channel], (response.body.to_s.empty? ? nil : JSON.parse(response.body, symbolize_names: true)))
259
+ else
260
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
261
+ error_types = {
262
+ 401 => Peal::Types::UnauthenticatedEncoded,
263
+ 402 => Peal::Types::PlanLimitReachedEncoded,
264
+ 403 => Peal::Types::ForbiddenEncoded
265
+ }
266
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
267
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
268
+ end
269
+ end
270
+
271
+ # Starts reconnecting a channel whose token stopped working or is about to: answers with the platform's sign-in
272
+ # page. Completing it must sign in to the same account. A channel the workspace has takes no room in its plan, so
273
+ # no plan limit refuses it. Needs channel:connect.
274
+ #
275
+ # @param request_options [Hash]
276
+ # @param params [Hash]
277
+ # @option request_options [String] :base_url
278
+ # @option request_options [Hash{String => Object}] :additional_headers
279
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
280
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
281
+ # @option request_options [Integer] :timeout_in_seconds
282
+ # @option params [String] :workspace_id
283
+ # @option params [String] :channel_id
284
+ #
285
+ # @example
286
+ # client.channels.reconnect(
287
+ # workspace_id: "workspaceId",
288
+ # channel_id: "channelId"
289
+ # )
290
+ #
291
+ # @return [Peal::Types::Authorization]
292
+ def reconnect(request_options: {}, **params)
293
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
294
+ request = Peal::Internal::JSON::Request.new(
295
+ base_url: request_options[:base_url],
296
+ method: "POST",
297
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/channels/#{URI.encode_uri_component(params[:channel_id].to_s)}/reconnect",
298
+ request_options: request_options,
299
+ max_retries: 0
300
+ )
301
+ begin
302
+ response = @client.send(request)
303
+ rescue Net::HTTPRequestTimeout
304
+ raise Peal::Errors::TimeoutError
305
+ end
306
+ code = response.code.to_i
307
+ if code.between?(200, 299)
308
+ (response.body.to_s.empty? ? nil : Peal::Types::Authorization.load(response.body))
309
+ else
310
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
311
+ error_types = {
312
+ 401 => Peal::Types::UnauthenticatedEncoded,
313
+ 403 => Peal::Types::ForbiddenEncoded
314
+ }
315
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
316
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
317
+ end
318
+ end
319
+
320
+ # Disconnects a channel from the workspace: the channel and the tokens Peal holds for it are deleted, and nothing
321
+ # more is posted on it. Needs channel:disconnect.
322
+ #
323
+ # @param request_options [Hash]
324
+ # @param params [Hash]
325
+ # @option request_options [String] :base_url
326
+ # @option request_options [Hash{String => Object}] :additional_headers
327
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
328
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
329
+ # @option request_options [Integer] :timeout_in_seconds
330
+ # @option params [String] :workspace_id
331
+ # @option params [String] :channel_id
332
+ #
333
+ # @example
334
+ # client.channels.disconnect(
335
+ # workspace_id: "workspaceId",
336
+ # channel_id: "channelId"
337
+ # )
338
+ #
339
+ # @return [untyped]
340
+ def disconnect(request_options: {}, **params)
341
+ params = Peal::Internal::Types::Utils.normalize_keys(params)
342
+ request = Peal::Internal::JSON::Request.new(
343
+ base_url: request_options[:base_url],
344
+ method: "DELETE",
345
+ path: "api/workspaces/#{URI.encode_uri_component(params[:workspace_id].to_s)}/channels/#{URI.encode_uri_component(params[:channel_id].to_s)}",
346
+ request_options: request_options
347
+ )
348
+ begin
349
+ response = @client.send(request)
350
+ rescue Net::HTTPRequestTimeout
351
+ raise Peal::Errors::TimeoutError
352
+ end
353
+ code = response.code.to_i
354
+ return if code.between?(200, 299)
355
+
356
+ error_class = Peal::Errors::ResponseError.subclass_for_code(code)
357
+ error_types = {
358
+ 401 => Peal::Types::UnauthenticatedEncoded,
359
+ 403 => Peal::Types::ForbiddenEncoded
360
+ }
361
+ error_body = Peal::Errors::ResponseError.load_error_body(code, response.body, error_types)
362
+ raise error_class.new(response.body, code: code, body: error_body, headers: response.to_hash)
363
+ end
364
+ end
365
+ end
366
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Channels
5
+ module Types
6
+ class ChooseAccounts < Internal::Types::Model
7
+ field :workspace_id, -> { String }, optional: false, nullable: false, api_name: "workspaceId"
8
+
9
+ field :platform, -> { Peal::Types::Platform }, optional: false, nullable: false
10
+
11
+ field :account_ids, -> { Internal::Types::Array[String] }, optional: false, nullable: false, api_name: "accountIds"
12
+
13
+ field :selection, -> { String }, optional: false, nullable: false
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Channels
5
+ module Types
6
+ class ConnectCallback < Internal::Types::Model
7
+ field :workspace_id, -> { String }, optional: false, nullable: false, api_name: "workspaceId"
8
+
9
+ field :platform, -> { Peal::Types::Platform }, optional: false, nullable: false
10
+
11
+ field :code, -> { String }, optional: true, nullable: false
12
+
13
+ field :error, -> { String }, optional: true, nullable: false
14
+
15
+ field :iss, -> { String }, optional: true, nullable: false
16
+
17
+ field :state, -> { String }, optional: false, nullable: false
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Channels
5
+ module Types
6
+ class ConnectChannel < Internal::Types::Model
7
+ field :workspace_id, -> { String }, optional: false, nullable: false, api_name: "workspaceId"
8
+
9
+ field :platform, -> { Peal::Types::Platform }, optional: false, nullable: false
10
+
11
+ field :handle, -> { String }, optional: true, nullable: false
12
+
13
+ field :instance, -> { String }, optional: true, nullable: false
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Channels
5
+ module Types
6
+ class DisconnectChannelsRequest < Internal::Types::Model
7
+ field :workspace_id, -> { String }, optional: false, nullable: false, api_name: "workspaceId"
8
+
9
+ field :channel_id, -> { String }, optional: false, nullable: false, api_name: "channelId"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Channels
5
+ module Types
6
+ class ListChannelsRequest < Internal::Types::Model
7
+ field :workspace_id, -> { String }, optional: false, nullable: false, api_name: "workspaceId"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Channels
5
+ module Types
6
+ class PlatformsChannelsRequest < Internal::Types::Model
7
+ field :workspace_id, -> { String }, optional: false, nullable: false, api_name: "workspaceId"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Channels
5
+ module Types
6
+ class ReconnectChannelsRequest < Internal::Types::Model
7
+ field :workspace_id, -> { String }, optional: false, nullable: false, api_name: "workspaceId"
8
+
9
+ field :channel_id, -> { String }, optional: false, nullable: false, api_name: "channelId"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ class Client
5
+ # @param token [String]
6
+ # @param base_url [String, nil]
7
+ # @param max_retries [Integer]
8
+ # @param timeout [Numeric]
9
+ #
10
+ # @return [void]
11
+ def initialize(token:, base_url: nil, max_retries: 2, timeout: 60)
12
+ @raw_client = Peal::Internal::Http::RawClient.new(
13
+ base_url: base_url || Peal::Environment::DEFAULT,
14
+ headers: {
15
+ "X-Fern-Language" => "Ruby",
16
+ Authorization: "Bearer #{token}"
17
+ },
18
+ max_retries: max_retries,
19
+ timeout: timeout
20
+ )
21
+ end
22
+
23
+ # @return [Peal::System::Client]
24
+ def system
25
+ @system ||= Peal::System::Client.new(client: @raw_client)
26
+ end
27
+
28
+ # @return [Peal::Session::Client]
29
+ def session
30
+ @session ||= Peal::Session::Client.new(client: @raw_client)
31
+ end
32
+
33
+ # @return [Peal::APIKeys::Client]
34
+ def api_keys
35
+ @api_keys ||= Peal::APIKeys::Client.new(client: @raw_client)
36
+ end
37
+
38
+ # @return [Peal::Channels::Client]
39
+ def channels
40
+ @channels ||= Peal::Channels::Client.new(client: @raw_client)
41
+ end
42
+
43
+ # @return [Peal::Posts::Client]
44
+ def posts
45
+ @posts ||= Peal::Posts::Client.new(client: @raw_client)
46
+ end
47
+
48
+ # @return [Peal::Media::Client]
49
+ def media
50
+ @media ||= Peal::Media::Client.new(client: @raw_client)
51
+ end
52
+
53
+ # @return [Peal::Notices::Client]
54
+ def notices
55
+ @notices ||= Peal::Notices::Client.new(client: @raw_client)
56
+ end
57
+
58
+ # @return [Peal::NotificationPreferences::Client]
59
+ def notification_preferences
60
+ @notification_preferences ||= Peal::NotificationPreferences::Client.new(client: @raw_client)
61
+ end
62
+
63
+ # @return [Peal::Assistant::Client]
64
+ def assistant
65
+ @assistant ||= Peal::Assistant::Client.new(client: @raw_client)
66
+ end
67
+
68
+ # @return [Peal::Members::Client]
69
+ def members
70
+ @members ||= Peal::Members::Client.new(client: @raw_client)
71
+ end
72
+
73
+ # @return [Peal::Invitations::Client]
74
+ def invitations
75
+ @invitations ||= Peal::Invitations::Client.new(client: @raw_client)
76
+ end
77
+
78
+ # @return [Peal::Billing::Client]
79
+ def billing
80
+ @billing ||= Peal::Billing::Client.new(client: @raw_client)
81
+ end
82
+
83
+ # @return [Peal::Analytics::Client]
84
+ def analytics
85
+ @analytics ||= Peal::Analytics::Client.new(client: @raw_client)
86
+ end
87
+
88
+ # @return [Peal::Tiktok::Client]
89
+ def tiktok
90
+ @tiktok ||= Peal::Tiktok::Client.new(client: @raw_client)
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ class Environment
5
+ DEFAULT = "https://app.peal.social"
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Errors
5
+ class ApiError < StandardError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Errors
5
+ class ClientError < ResponseError
6
+ end
7
+
8
+ class UnauthorizedError < ClientError
9
+ end
10
+
11
+ class ForbiddenError < ClientError
12
+ end
13
+
14
+ class NotFoundError < ClientError
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Errors
5
+ # Raised when the request fails before a response is received: the connection is refused,
6
+ # reset or closed early, the host name cannot be resolved, or the TLS handshake fails.
7
+ # The original exception is available as `cause`.
8
+ class ConnectionError < ApiError
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peal
4
+ module Errors
5
+ class RedirectError < ResponseError
6
+ end
7
+ end
8
+ end