peal 0.1.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 (443) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +136 -0
  4. data/LICENSE +202 -0
  5. data/README.md +353 -0
  6. data/Rakefile +10 -0
  7. data/docs/AlreadyMemberEncoded.md +18 -0
  8. data/docs/AltTextTooLongEncoded.md +20 -0
  9. data/docs/AnalyticsApi.md +155 -0
  10. data/docs/AnalyticsSummary.md +30 -0
  11. data/docs/ApiKey.md +28 -0
  12. data/docs/ApiKeyNotFoundEncoded.md +18 -0
  13. data/docs/ApiKeysApi.md +220 -0
  14. data/docs/ApiKeysRevoke404Response.md +18 -0
  15. data/docs/AssistantAction.md +24 -0
  16. data/docs/AssistantActionAnyOf.md +20 -0
  17. data/docs/AssistantActionAnyOf1.md +20 -0
  18. data/docs/AssistantActionAnyOf2.md +20 -0
  19. data/docs/AssistantActionAnyOf3.md +18 -0
  20. data/docs/AssistantApi.md +149 -0
  21. data/docs/AssistantFailedEncoded.md +20 -0
  22. data/docs/AssistantInputRejectedEncoded.md +22 -0
  23. data/docs/AssistantQuotaExceededEncoded.md +22 -0
  24. data/docs/AssistantStatus.md +26 -0
  25. data/docs/AssistantTone.md +15 -0
  26. data/docs/AssistantUnavailableEncoded.md +18 -0
  27. data/docs/AttemptResult.md +15 -0
  28. data/docs/Authorization.md +18 -0
  29. data/docs/Billing.md +28 -0
  30. data/docs/BillingApi.md +77 -0
  31. data/docs/BillingSubscription.md +24 -0
  32. data/docs/Channel.md +30 -0
  33. data/docs/ChannelCannotPostEncoded.md +20 -0
  34. data/docs/ChannelMetrics.md +30 -0
  35. data/docs/ChannelNotFoundEncoded.md +18 -0
  36. data/docs/ChannelOptions.md +20 -0
  37. data/docs/ChannelStatus.md +20 -0
  38. data/docs/ChannelStatusAnyOf.md +18 -0
  39. data/docs/ChannelStatusAnyOf1.md +18 -0
  40. data/docs/ChannelStatusAnyOf2.md +20 -0
  41. data/docs/ChannelsApi.md +512 -0
  42. data/docs/ChannelsCompleteConnect404Response.md +18 -0
  43. data/docs/ChoosableAccount.md +26 -0
  44. data/docs/ChooseAccounts.md +20 -0
  45. data/docs/ConnectCallback.md +24 -0
  46. data/docs/ConnectChannel.md +20 -0
  47. data/docs/ConnectFailedEncoded.md +20 -0
  48. data/docs/ConnectFailureReason.md +15 -0
  49. data/docs/ConnectOutcome.md +26 -0
  50. data/docs/ConnectOutcomeAnyOf.md +20 -0
  51. data/docs/ConnectOutcomeAnyOf1.md +24 -0
  52. data/docs/ConnectablePlatforms.md +18 -0
  53. data/docs/ContentViolation.md +54 -0
  54. data/docs/ContentViolationAnyOf.md +18 -0
  55. data/docs/ContentViolationAnyOf1.md +20 -0
  56. data/docs/ContentViolationAnyOf10.md +26 -0
  57. data/docs/ContentViolationAnyOf11.md +22 -0
  58. data/docs/ContentViolationAnyOf12.md +26 -0
  59. data/docs/ContentViolationAnyOf13.md +26 -0
  60. data/docs/ContentViolationAnyOf14.md +26 -0
  61. data/docs/ContentViolationAnyOf15.md +26 -0
  62. data/docs/ContentViolationAnyOf16.md +22 -0
  63. data/docs/ContentViolationAnyOf17.md +26 -0
  64. data/docs/ContentViolationAnyOf18.md +28 -0
  65. data/docs/ContentViolationAnyOf19.md +28 -0
  66. data/docs/ContentViolationAnyOf2.md +20 -0
  67. data/docs/ContentViolationAnyOf20.md +28 -0
  68. data/docs/ContentViolationAnyOf21.md +28 -0
  69. data/docs/ContentViolationAnyOf22.md +30 -0
  70. data/docs/ContentViolationAnyOf23.md +32 -0
  71. data/docs/ContentViolationAnyOf24.md +32 -0
  72. data/docs/ContentViolationAnyOf24Maximum.md +15 -0
  73. data/docs/ContentViolationAnyOf25.md +28 -0
  74. data/docs/ContentViolationAnyOf3.md +24 -0
  75. data/docs/ContentViolationAnyOf4.md +24 -0
  76. data/docs/ContentViolationAnyOf5.md +28 -0
  77. data/docs/ContentViolationAnyOf6.md +24 -0
  78. data/docs/ContentViolationAnyOf7.md +22 -0
  79. data/docs/ContentViolationAnyOf8.md +28 -0
  80. data/docs/ContentViolationAnyOf9.md +24 -0
  81. data/docs/CreatedApiKey.md +20 -0
  82. data/docs/DatabaseUnavailableEncoded.md +18 -0
  83. data/docs/DraftPage.md +20 -0
  84. data/docs/EffectHttpApiErrorBadRequestEncoded.md +18 -0
  85. data/docs/EngagementDay.md +26 -0
  86. data/docs/FailureReason.md +15 -0
  87. data/docs/ForbiddenEncoded.md +18 -0
  88. data/docs/InvalidDateRangeEncoded.md +18 -0
  89. data/docs/InvalidTimeRangeEncoded.md +18 -0
  90. data/docs/InvalidTimeZoneEncoded.md +20 -0
  91. data/docs/Invitation.md +28 -0
  92. data/docs/InvitationNotFoundEncoded.md +18 -0
  93. data/docs/InvitationsApi.md +220 -0
  94. data/docs/InvitationsCreate409Response.md +18 -0
  95. data/docs/InvitationsRevoke404Response.md +18 -0
  96. data/docs/MarkNoticesRead.md +18 -0
  97. data/docs/Me.md +22 -0
  98. data/docs/MeUser.md +28 -0
  99. data/docs/Media.md +40 -0
  100. data/docs/MediaApi.md +516 -0
  101. data/docs/MediaAttachment.md +20 -0
  102. data/docs/MediaContentType.md +15 -0
  103. data/docs/MediaCreate422Response.md +28 -0
  104. data/docs/MediaDescription.md +18 -0
  105. data/docs/MediaDimensions.md +20 -0
  106. data/docs/MediaGet404Response.md +18 -0
  107. data/docs/MediaInUseEncoded.md +20 -0
  108. data/docs/MediaKind.md +15 -0
  109. data/docs/MediaNotFoundEncoded.md +18 -0
  110. data/docs/MediaPage.md +20 -0
  111. data/docs/MediaStatus.md +22 -0
  112. data/docs/MediaStatusAnyOf.md +18 -0
  113. data/docs/MediaStatusAnyOf1.md +20 -0
  114. data/docs/MediaStatusAnyOf2.md +18 -0
  115. data/docs/MediaStatusAnyOf3.md +20 -0
  116. data/docs/MediaStoreUnavailableEncoded.md +18 -0
  117. data/docs/MediaTooLargeEncoded.md +24 -0
  118. data/docs/MediaUsage.md +20 -0
  119. data/docs/MembersApi.md +77 -0
  120. data/docs/Membership.md +26 -0
  121. data/docs/MetricTotals.md +28 -0
  122. data/docs/MetricsSnapshot.md +20 -0
  123. data/docs/NewApiKey.md +22 -0
  124. data/docs/NewInvitation.md +20 -0
  125. data/docs/NewUpload.md +22 -0
  126. data/docs/NonFiniteNumber.md +15 -0
  127. data/docs/Notice.md +26 -0
  128. data/docs/NoticeChannel.md +20 -0
  129. data/docs/NoticeEvent.md +28 -0
  130. data/docs/NoticeEventAnyOf.md +24 -0
  131. data/docs/NoticeEventAnyOf1.md +24 -0
  132. data/docs/NoticeEventAnyOf2.md +22 -0
  133. data/docs/NoticeEventAnyOf3.md +20 -0
  134. data/docs/NoticeEventAnyOf4.md +22 -0
  135. data/docs/NoticePage.md +20 -0
  136. data/docs/NoticesApi.md +285 -0
  137. data/docs/NotificationPreferences.md +20 -0
  138. data/docs/NotificationPreferencesApi.md +144 -0
  139. data/docs/NotificationPreferencesChange.md +20 -0
  140. data/docs/NotificationPreferencesChangeEmail.md +24 -0
  141. data/docs/NotificationPreferencesEmail.md +24 -0
  142. data/docs/PaidPlan.md +15 -0
  143. data/docs/PeriodUsage.md +20 -0
  144. data/docs/Plan.md +15 -0
  145. data/docs/PlanAllowances.md +24 -0
  146. data/docs/PlanLimit.md +15 -0
  147. data/docs/PlanLimitReachedEncoded.md +22 -0
  148. data/docs/PlanOffer.md +20 -0
  149. data/docs/Platform.md +15 -0
  150. data/docs/PlatformUnreachableEncoded.md +18 -0
  151. data/docs/Post.md +30 -0
  152. data/docs/PostAnalytics.md +20 -0
  153. data/docs/PostContent.md +22 -0
  154. data/docs/PostContentInvalidEncoded.md +20 -0
  155. data/docs/PostDraft.md +22 -0
  156. data/docs/PostMetrics.md +26 -0
  157. data/docs/PostNotFoundEncoded.md +18 -0
  158. data/docs/PostOutcome.md +15 -0
  159. data/docs/PostSchedule.md +20 -0
  160. data/docs/PostStatus.md +15 -0
  161. data/docs/PostStatusConflictEncoded.md +20 -0
  162. data/docs/PostTarget.md +36 -0
  163. data/docs/PostTargetStatus.md +15 -0
  164. data/docs/PostsApi.md +960 -0
  165. data/docs/PostsCreate422Response.md +24 -0
  166. data/docs/PostsGet404Response.md +18 -0
  167. data/docs/PostsRepost409Response.md +20 -0
  168. data/docs/PostsSchedule422Response.md +26 -0
  169. data/docs/PreparedUpload.md +20 -0
  170. data/docs/ProbeState.md +15 -0
  171. data/docs/PublicationAttempt.md +30 -0
  172. data/docs/RejectionReason.md +15 -0
  173. data/docs/Role.md +15 -0
  174. data/docs/ScheduleInPastEncoded.md +18 -0
  175. data/docs/SchedulePost.md +22 -0
  176. data/docs/SessionApi.md +74 -0
  177. data/docs/SignedRequest.md +22 -0
  178. data/docs/SubscriptionStatus.md +15 -0
  179. data/docs/Suggestion.md +22 -0
  180. data/docs/SuggestionAnyOf.md +20 -0
  181. data/docs/SuggestionAnyOf1.md +20 -0
  182. data/docs/SuggestionRequest.md +20 -0
  183. data/docs/SystemApi.md +129 -0
  184. data/docs/TargetConfirmation.md +20 -0
  185. data/docs/TargetConfirmationAnyOf.md +20 -0
  186. data/docs/TargetConfirmationAnyOf1.md +18 -0
  187. data/docs/TargetMetrics.md +32 -0
  188. data/docs/TargetOptions.md +48 -0
  189. data/docs/TargetStatusConflictEncoded.md +20 -0
  190. data/docs/TextOverride.md +20 -0
  191. data/docs/TextUnit.md +15 -0
  192. data/docs/TikTokAccount.md +20 -0
  193. data/docs/TikTokAccountPosting.md +22 -0
  194. data/docs/TikTokAccountPostingAnyOf.md +20 -0
  195. data/docs/TikTokAccountPostingAnyOf1.md +20 -0
  196. data/docs/TikTokBlock.md +15 -0
  197. data/docs/TikTokCreator.md +32 -0
  198. data/docs/TikTokOptions.md +34 -0
  199. data/docs/TikTokPrivacyLevel.md +15 -0
  200. data/docs/TiktokApi.md +79 -0
  201. data/docs/TooManyInvitationsEncoded.md +18 -0
  202. data/docs/TopPost.md +30 -0
  203. data/docs/TranslationLanguage.md +15 -0
  204. data/docs/UnauthenticatedEncoded.md +18 -0
  205. data/docs/UnconfirmedReason.md +15 -0
  206. data/docs/UnknownChannelsEncoded.md +20 -0
  207. data/docs/UnknownMediaEncoded.md +20 -0
  208. data/docs/UnreadNotices.md +18 -0
  209. data/docs/UnsupportedMediaTypeEncoded.md +20 -0
  210. data/docs/UploadIncompleteEncoded.md +18 -0
  211. data/docs/UploadPart.md +22 -0
  212. data/docs/UploadRejectedEncoded.md +20 -0
  213. data/docs/UploadTarget.md +26 -0
  214. data/docs/UploadTargetAnyOf.md +22 -0
  215. data/docs/UploadTargetAnyOf1.md +24 -0
  216. data/docs/Usage.md +24 -0
  217. data/docs/WorkspaceMember.md +26 -0
  218. data/docs/WorkspaceNotFoundEncoded.md +18 -0
  219. data/docs/YouTubeOptions.md +32 -0
  220. data/docs/YouTubePrivacy.md +15 -0
  221. data/lib/peal/api/analytics_api.rb +185 -0
  222. data/lib/peal/api/api_keys_api.rb +228 -0
  223. data/lib/peal/api/assistant_api.rb +159 -0
  224. data/lib/peal/api/billing_api.rb +85 -0
  225. data/lib/peal/api/channels_api.rb +526 -0
  226. data/lib/peal/api/invitations_api.rb +228 -0
  227. data/lib/peal/api/media_api.rb +526 -0
  228. data/lib/peal/api/members_api.rb +85 -0
  229. data/lib/peal/api/notices_api.rb +272 -0
  230. data/lib/peal/api/notification_preferences_api.rb +147 -0
  231. data/lib/peal/api/posts_api.rb +993 -0
  232. data/lib/peal/api/session_api.rb +79 -0
  233. data/lib/peal/api/system_api.rb +134 -0
  234. data/lib/peal/api/tiktok_api.rb +91 -0
  235. data/lib/peal/api_client.rb +441 -0
  236. data/lib/peal/api_error.rb +58 -0
  237. data/lib/peal/api_model_base.rb +88 -0
  238. data/lib/peal/configuration.rb +392 -0
  239. data/lib/peal/models/already_member_encoded.rb +201 -0
  240. data/lib/peal/models/alt_text_too_long_encoded.rb +245 -0
  241. data/lib/peal/models/analytics_summary.rb +361 -0
  242. data/lib/peal/models/api_key.rb +293 -0
  243. data/lib/peal/models/api_key_not_found_encoded.rb +201 -0
  244. data/lib/peal/models/api_keys_revoke404_response.rb +103 -0
  245. data/lib/peal/models/assistant_action.rb +105 -0
  246. data/lib/peal/models/assistant_action_any_of.rb +227 -0
  247. data/lib/peal/models/assistant_action_any_of1.rb +227 -0
  248. data/lib/peal/models/assistant_action_any_of2.rb +227 -0
  249. data/lib/peal/models/assistant_action_any_of3.rb +201 -0
  250. data/lib/peal/models/assistant_failed_encoded.rb +229 -0
  251. data/lib/peal/models/assistant_input_rejected_encoded.rb +273 -0
  252. data/lib/peal/models/assistant_quota_exceeded_encoded.rb +271 -0
  253. data/lib/peal/models/assistant_status.rb +335 -0
  254. data/lib/peal/models/assistant_tone.rb +43 -0
  255. data/lib/peal/models/assistant_unavailable_encoded.rb +201 -0
  256. data/lib/peal/models/attempt_result.rb +50 -0
  257. data/lib/peal/models/authorization.rb +177 -0
  258. data/lib/peal/models/billing.rb +303 -0
  259. data/lib/peal/models/billing_subscription.rb +263 -0
  260. data/lib/peal/models/channel.rb +313 -0
  261. data/lib/peal/models/channel_cannot_post_encoded.rb +229 -0
  262. data/lib/peal/models/channel_metrics.rb +425 -0
  263. data/lib/peal/models/channel_not_found_encoded.rb +201 -0
  264. data/lib/peal/models/channel_options.rb +203 -0
  265. data/lib/peal/models/channel_status.rb +104 -0
  266. data/lib/peal/models/channel_status_any_of.rb +201 -0
  267. data/lib/peal/models/channel_status_any_of1.rb +201 -0
  268. data/lib/peal/models/channel_status_any_of2.rb +227 -0
  269. data/lib/peal/models/channels_complete_connect404_response.rb +103 -0
  270. data/lib/peal/models/choosable_account.rb +253 -0
  271. data/lib/peal/models/choose_accounts.rb +241 -0
  272. data/lib/peal/models/connect_callback.rb +279 -0
  273. data/lib/peal/models/connect_channel.rb +207 -0
  274. data/lib/peal/models/connect_failed_encoded.rb +227 -0
  275. data/lib/peal/models/connect_failure_reason.rb +48 -0
  276. data/lib/peal/models/connect_outcome.rb +103 -0
  277. data/lib/peal/models/connect_outcome_any_of.rb +227 -0
  278. data/lib/peal/models/connect_outcome_any_of1.rb +281 -0
  279. data/lib/peal/models/connectable_platforms.rb +179 -0
  280. data/lib/peal/models/content_violation.rb +127 -0
  281. data/lib/peal/models/content_violation_any_of.rb +201 -0
  282. data/lib/peal/models/content_violation_any_of1.rb +227 -0
  283. data/lib/peal/models/content_violation_any_of10.rb +341 -0
  284. data/lib/peal/models/content_violation_any_of11.rb +253 -0
  285. data/lib/peal/models/content_violation_any_of12.rb +341 -0
  286. data/lib/peal/models/content_violation_any_of13.rb +341 -0
  287. data/lib/peal/models/content_violation_any_of14.rb +341 -0
  288. data/lib/peal/models/content_violation_any_of15.rb +341 -0
  289. data/lib/peal/models/content_violation_any_of16.rb +253 -0
  290. data/lib/peal/models/content_violation_any_of17.rb +305 -0
  291. data/lib/peal/models/content_violation_any_of18.rb +367 -0
  292. data/lib/peal/models/content_violation_any_of19.rb +367 -0
  293. data/lib/peal/models/content_violation_any_of2.rb +227 -0
  294. data/lib/peal/models/content_violation_any_of20.rb +367 -0
  295. data/lib/peal/models/content_violation_any_of21.rb +367 -0
  296. data/lib/peal/models/content_violation_any_of22.rb +411 -0
  297. data/lib/peal/models/content_violation_any_of23.rb +455 -0
  298. data/lib/peal/models/content_violation_any_of24.rb +419 -0
  299. data/lib/peal/models/content_violation_any_of24_maximum.rb +103 -0
  300. data/lib/peal/models/content_violation_any_of25.rb +367 -0
  301. data/lib/peal/models/content_violation_any_of3.rb +279 -0
  302. data/lib/peal/models/content_violation_any_of4.rb +279 -0
  303. data/lib/peal/models/content_violation_any_of5.rb +367 -0
  304. data/lib/peal/models/content_violation_any_of6.rb +279 -0
  305. data/lib/peal/models/content_violation_any_of7.rb +253 -0
  306. data/lib/peal/models/content_violation_any_of8.rb +367 -0
  307. data/lib/peal/models/content_violation_any_of9.rb +281 -0
  308. data/lib/peal/models/created_api_key.rb +203 -0
  309. data/lib/peal/models/database_unavailable_encoded.rb +201 -0
  310. data/lib/peal/models/draft_page.rb +191 -0
  311. data/lib/peal/models/effect_http_api_error_bad_request_encoded.rb +201 -0
  312. data/lib/peal/models/engagement_day.rb +364 -0
  313. data/lib/peal/models/failure_reason.rb +50 -0
  314. data/lib/peal/models/forbidden_encoded.rb +201 -0
  315. data/lib/peal/models/invalid_date_range_encoded.rb +201 -0
  316. data/lib/peal/models/invalid_time_range_encoded.rb +201 -0
  317. data/lib/peal/models/invalid_time_zone_encoded.rb +227 -0
  318. data/lib/peal/models/invitation.rb +307 -0
  319. data/lib/peal/models/invitation_not_found_encoded.rb +201 -0
  320. data/lib/peal/models/invitations_create409_response.rb +103 -0
  321. data/lib/peal/models/invitations_revoke404_response.rb +103 -0
  322. data/lib/peal/models/mark_notices_read.rb +197 -0
  323. data/lib/peal/models/me.rb +217 -0
  324. data/lib/peal/models/me_user.rb +317 -0
  325. data/lib/peal/models/media.rb +457 -0
  326. data/lib/peal/models/media_attachment.rb +212 -0
  327. data/lib/peal/models/media_content_type.rb +44 -0
  328. data/lib/peal/models/media_create422_response.rb +104 -0
  329. data/lib/peal/models/media_description.rb +163 -0
  330. data/lib/peal/models/media_dimensions.rb +239 -0
  331. data/lib/peal/models/media_get404_response.rb +103 -0
  332. data/lib/peal/models/media_in_use_encoded.rb +229 -0
  333. data/lib/peal/models/media_kind.rb +40 -0
  334. data/lib/peal/models/media_not_found_encoded.rb +201 -0
  335. data/lib/peal/models/media_page.rb +191 -0
  336. data/lib/peal/models/media_status.rb +105 -0
  337. data/lib/peal/models/media_status_any_of.rb +201 -0
  338. data/lib/peal/models/media_status_any_of1.rb +227 -0
  339. data/lib/peal/models/media_status_any_of2.rb +201 -0
  340. data/lib/peal/models/media_status_any_of3.rb +227 -0
  341. data/lib/peal/models/media_store_unavailable_encoded.rb +201 -0
  342. data/lib/peal/models/media_too_large_encoded.rb +317 -0
  343. data/lib/peal/models/media_usage.rb +207 -0
  344. data/lib/peal/models/membership.rb +295 -0
  345. data/lib/peal/models/metric_totals.rb +399 -0
  346. data/lib/peal/models/metrics_snapshot.rb +203 -0
  347. data/lib/peal/models/new_api_key.rb +277 -0
  348. data/lib/peal/models/new_invitation.rb +245 -0
  349. data/lib/peal/models/new_upload.rb +231 -0
  350. data/lib/peal/models/non_finite_number.rb +41 -0
  351. data/lib/peal/models/notice.rb +267 -0
  352. data/lib/peal/models/notice_channel.rb +225 -0
  353. data/lib/peal/models/notice_event.rb +106 -0
  354. data/lib/peal/models/notice_event_any_of.rb +251 -0
  355. data/lib/peal/models/notice_event_any_of1.rb +265 -0
  356. data/lib/peal/models/notice_event_any_of2.rb +239 -0
  357. data/lib/peal/models/notice_event_any_of3.rb +227 -0
  358. data/lib/peal/models/notice_event_any_of4.rb +253 -0
  359. data/lib/peal/models/notice_page.rb +191 -0
  360. data/lib/peal/models/notification_preferences.rb +203 -0
  361. data/lib/peal/models/notification_preferences_change.rb +169 -0
  362. data/lib/peal/models/notification_preferences_change_email.rb +187 -0
  363. data/lib/peal/models/notification_preferences_email.rb +255 -0
  364. data/lib/peal/models/paid_plan.rb +40 -0
  365. data/lib/peal/models/period_usage.rb +221 -0
  366. data/lib/peal/models/plan.rb +41 -0
  367. data/lib/peal/models/plan_allowances.rb +295 -0
  368. data/lib/peal/models/plan_limit.rb +42 -0
  369. data/lib/peal/models/plan_limit_reached_encoded.rb +271 -0
  370. data/lib/peal/models/plan_offer.rb +225 -0
  371. data/lib/peal/models/platform.rb +48 -0
  372. data/lib/peal/models/platform_unreachable_encoded.rb +201 -0
  373. data/lib/peal/models/post.rb +315 -0
  374. data/lib/peal/models/post_analytics.rb +205 -0
  375. data/lib/peal/models/post_content.rb +251 -0
  376. data/lib/peal/models/post_content_invalid_encoded.rb +229 -0
  377. data/lib/peal/models/post_draft.rb +216 -0
  378. data/lib/peal/models/post_metrics.rb +355 -0
  379. data/lib/peal/models/post_not_found_encoded.rb +201 -0
  380. data/lib/peal/models/post_outcome.rb +43 -0
  381. data/lib/peal/models/post_schedule.rb +203 -0
  382. data/lib/peal/models/post_status.rb +43 -0
  383. data/lib/peal/models/post_status_conflict_encoded.rb +227 -0
  384. data/lib/peal/models/post_target.rb +364 -0
  385. data/lib/peal/models/post_target_status.rb +44 -0
  386. data/lib/peal/models/posts_create422_response.rb +104 -0
  387. data/lib/peal/models/posts_get404_response.rb +103 -0
  388. data/lib/peal/models/posts_repost409_response.rb +103 -0
  389. data/lib/peal/models/posts_schedule422_response.rb +106 -0
  390. data/lib/peal/models/prepared_upload.rb +203 -0
  391. data/lib/peal/models/probe_state.rb +44 -0
  392. data/lib/peal/models/publication_attempt.rb +377 -0
  393. data/lib/peal/models/rejection_reason.rb +40 -0
  394. data/lib/peal/models/role.rb +43 -0
  395. data/lib/peal/models/schedule_in_past_encoded.rb +201 -0
  396. data/lib/peal/models/schedule_post.rb +240 -0
  397. data/lib/peal/models/signed_request.rb +255 -0
  398. data/lib/peal/models/subscription_status.rb +46 -0
  399. data/lib/peal/models/suggestion.rb +103 -0
  400. data/lib/peal/models/suggestion_any_of.rb +227 -0
  401. data/lib/peal/models/suggestion_any_of1.rb +229 -0
  402. data/lib/peal/models/suggestion_request.rb +212 -0
  403. data/lib/peal/models/target_confirmation.rb +103 -0
  404. data/lib/peal/models/target_confirmation_any_of.rb +228 -0
  405. data/lib/peal/models/target_confirmation_any_of1.rb +201 -0
  406. data/lib/peal/models/target_metrics.rb +319 -0
  407. data/lib/peal/models/target_options.rb +104 -0
  408. data/lib/peal/models/target_status_conflict_encoded.rb +227 -0
  409. data/lib/peal/models/text_override.rb +221 -0
  410. data/lib/peal/models/text_unit.rb +44 -0
  411. data/lib/peal/models/tik_tok_account.rb +203 -0
  412. data/lib/peal/models/tik_tok_account_posting.rb +103 -0
  413. data/lib/peal/models/tik_tok_account_posting_any_of.rb +227 -0
  414. data/lib/peal/models/tik_tok_account_posting_any_of1.rb +227 -0
  415. data/lib/peal/models/tik_tok_block.rb +41 -0
  416. data/lib/peal/models/tik_tok_creator.rb +357 -0
  417. data/lib/peal/models/tik_tok_options.rb +274 -0
  418. data/lib/peal/models/tik_tok_privacy_level.rb +42 -0
  419. data/lib/peal/models/too_many_invitations_encoded.rb +201 -0
  420. data/lib/peal/models/top_post.rb +337 -0
  421. data/lib/peal/models/translation_language.rb +48 -0
  422. data/lib/peal/models/unauthenticated_encoded.rb +201 -0
  423. data/lib/peal/models/unconfirmed_reason.rb +42 -0
  424. data/lib/peal/models/unknown_channels_encoded.rb +229 -0
  425. data/lib/peal/models/unknown_media_encoded.rb +229 -0
  426. data/lib/peal/models/unread_notices.rb +195 -0
  427. data/lib/peal/models/unsupported_media_type_encoded.rb +227 -0
  428. data/lib/peal/models/upload_incomplete_encoded.rb +201 -0
  429. data/lib/peal/models/upload_part.rb +265 -0
  430. data/lib/peal/models/upload_rejected_encoded.rb +227 -0
  431. data/lib/peal/models/upload_target.rb +103 -0
  432. data/lib/peal/models/upload_target_any_of.rb +253 -0
  433. data/lib/peal/models/upload_target_any_of1.rb +299 -0
  434. data/lib/peal/models/usage.rb +291 -0
  435. data/lib/peal/models/workspace_member.rb +281 -0
  436. data/lib/peal/models/workspace_not_found_encoded.rb +201 -0
  437. data/lib/peal/models/you_tube_options.rb +324 -0
  438. data/lib/peal/models/you_tube_privacy.rb +41 -0
  439. data/lib/peal/version.rb +15 -0
  440. data/lib/peal.rb +254 -0
  441. data/peal.gemspec +41 -0
  442. data/project.json +17 -0
  443. metadata +549 -0
@@ -0,0 +1,104 @@
1
+ =begin
2
+ #Peal API
3
+
4
+ #Schedule posts across social platforms, follow how they did, and manage a Peal workspace's channels, media and members.
5
+
6
+ The version of the OpenAPI document: 0.0.1
7
+ Contact: hello@peal.social
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.27.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Peal
17
+ module MediaCreate422Response
18
+ class << self
19
+ # List of class defined in anyOf (OpenAPI v3)
20
+ def openapi_any_of
21
+ [
22
+ :'AltTextTooLongEncoded',
23
+ :'MediaTooLargeEncoded',
24
+ :'UnsupportedMediaTypeEncoded'
25
+ ]
26
+ end
27
+
28
+ # Builds the object
29
+ # @param [Mixed] Data to be matched against the list of anyOf items
30
+ # @return [Object] Returns the model or the data itself
31
+ def build(data)
32
+ # Go through the list of anyOf items and attempt to identify the appropriate one.
33
+ # Note:
34
+ # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 })
35
+ # due to the way the deserialization is made in the base_object template (it just casts without verifying).
36
+ # - TODO: scalar values are de facto behaving as if they were nullable.
37
+ # - TODO: logging when debugging is set.
38
+ openapi_any_of.each do |klass|
39
+ begin
40
+ next if klass == :AnyType # "nullable: true"
41
+ return find_and_cast_into_type(klass, data)
42
+ rescue # rescue all errors so we keep iterating even if the current item lookup raises
43
+ end
44
+ end
45
+
46
+ openapi_any_of.include?(:AnyType) ? data : nil
47
+ end
48
+
49
+ private
50
+
51
+ SchemaMismatchError = Class.new(StandardError)
52
+
53
+ # Note: 'File' is missing here because in the regular case we get the data _after_ a call to JSON.parse.
54
+ def find_and_cast_into_type(klass, data)
55
+ return if data.nil?
56
+
57
+ case klass.to_s
58
+ when 'Boolean'
59
+ return data if data.instance_of?(TrueClass) || data.instance_of?(FalseClass)
60
+ when 'Float'
61
+ return data if data.instance_of?(Float)
62
+ when 'Integer'
63
+ return data if data.instance_of?(Integer)
64
+ when 'Time'
65
+ return Time.parse(data)
66
+ when 'Date'
67
+ return Date.iso8601(data)
68
+ when 'String'
69
+ return data if data.instance_of?(String)
70
+ when 'Object' # "type: object"
71
+ return data if data.instance_of?(Hash)
72
+ when /\AArray<(?<sub_type>.+)>\z/ # "type: array"
73
+ if data.instance_of?(Array)
74
+ sub_type = Regexp.last_match[:sub_type]
75
+ return data.map { |item| find_and_cast_into_type(sub_type, item) }
76
+ end
77
+ when /\AHash<String, (?<sub_type>.+)>\z/ # "type: object" with "additionalProperties: { ... }"
78
+ if data.instance_of?(Hash) && data.keys.all? { |k| k.instance_of?(Symbol) || k.instance_of?(String) }
79
+ sub_type = Regexp.last_match[:sub_type]
80
+ return data.each_with_object({}) { |(k, v), hsh| hsh[k] = find_and_cast_into_type(sub_type, v) }
81
+ end
82
+ else # model
83
+ const = Peal.const_get(klass)
84
+ if const
85
+ if const.respond_to?(:openapi_any_of) # nested anyOf model
86
+ model = const.build(data)
87
+ return model if model
88
+ else
89
+ # raise if data contains keys that are not known to the model
90
+ raise if const.respond_to?(:acceptable_attributes) && !(data.keys - const.acceptable_attributes).empty?
91
+ model = const.build_from_hash(data)
92
+ return model if model
93
+ end
94
+ end
95
+ end
96
+
97
+ raise # if no match by now, raise
98
+ rescue
99
+ raise SchemaMismatchError, "#{data} doesn't match the #{klass} type"
100
+ end
101
+ end
102
+ end
103
+
104
+ end
@@ -0,0 +1,163 @@
1
+ =begin
2
+ #Peal API
3
+
4
+ #Schedule posts across social platforms, follow how they did, and manage a Peal workspace's channels, media and members.
5
+
6
+ The version of the OpenAPI document: 0.0.1
7
+ Contact: hello@peal.social
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.27.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Peal
17
+ class MediaDescription < ApiModelBase
18
+ attr_accessor :alt_text
19
+
20
+ # Attribute mapping from ruby-style variable name to JSON key.
21
+ def self.attribute_map
22
+ {
23
+ :'alt_text' => :'altText'
24
+ }
25
+ end
26
+
27
+ # Returns attribute mapping this model knows about
28
+ def self.acceptable_attribute_map
29
+ attribute_map
30
+ end
31
+
32
+ # Returns all the JSON keys this model knows about
33
+ def self.acceptable_attributes
34
+ acceptable_attribute_map.values
35
+ end
36
+
37
+ # Attribute type mapping.
38
+ def self.openapi_types
39
+ {
40
+ :'alt_text' => :'String'
41
+ }
42
+ end
43
+
44
+ # List of attributes with nullable: true
45
+ def self.openapi_nullable
46
+ Set.new([
47
+ :'alt_text'
48
+ ])
49
+ end
50
+
51
+ # Returns attribute type mapping
52
+ def self.acceptable_openapi_types
53
+ openapi_types
54
+ end
55
+
56
+ # Returns the nullable attributes
57
+ def self.acceptable_openapi_nullable
58
+ openapi_nullable
59
+ end
60
+
61
+ # Initializes the object
62
+ # @param [Hash] attributes Model attributes in the form of hash
63
+ def initialize(attributes = {})
64
+ if (!attributes.is_a?(Hash))
65
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Peal::MediaDescription` initialize method"
66
+ end
67
+
68
+ # check to see if the attribute exists and convert string to symbol for hash key
69
+ acceptable_attribute_map = self.class.acceptable_attribute_map
70
+ attributes = attributes.each_with_object({}) { |(k, v), h|
71
+ if (!acceptable_attribute_map.key?(k.to_sym))
72
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Peal::MediaDescription`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
73
+ end
74
+ h[k.to_sym] = v
75
+ }
76
+
77
+ if attributes.key?(:'alt_text')
78
+ self.alt_text = attributes[:'alt_text']
79
+ else
80
+ self.alt_text = nil
81
+ end
82
+ end
83
+
84
+ # Show invalid properties with the reasons. Usually used together with valid?
85
+ # @return Array for valid properties with the reasons
86
+ def list_invalid_properties
87
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
88
+ invalid_properties = Array.new
89
+ invalid_properties
90
+ end
91
+
92
+ # Check to see if the all the properties in the model are valid
93
+ # @return true if the model is valid
94
+ def valid?
95
+ warn '[DEPRECATED] the `valid?` method is obsolete'
96
+ true
97
+ end
98
+
99
+ # Checks equality by comparing each attribute.
100
+ # @param [Object] Object to be compared
101
+ def ==(o)
102
+ return true if self.equal?(o)
103
+ self.class == o.class &&
104
+ alt_text == o.alt_text
105
+ end
106
+
107
+ # @see the `==` method
108
+ # @param [Object] Object to be compared
109
+ def eql?(o)
110
+ self == o
111
+ end
112
+
113
+ # Calculates hash code according to all attributes.
114
+ # @return [Integer] Hash code
115
+ def hash
116
+ [alt_text].hash
117
+ end
118
+
119
+ # Builds the object from hash
120
+ # @param [Hash] attributes Model attributes in the form of hash
121
+ # @return [Object] Returns the model itself
122
+ def self.build_from_hash(attributes)
123
+ return nil unless attributes.is_a?(Hash)
124
+ attributes = attributes.transform_keys(&:to_sym)
125
+ # include attributes inherited from allOf parents (the nearest declaration wins)
126
+ map = acceptable_attribute_map
127
+ transformed_hash = {}
128
+ acceptable_openapi_types.each_pair do |key, type|
129
+ if attributes.key?(map[key]) && attributes[map[key]].nil?
130
+ transformed_hash["#{key}"] = nil
131
+ elsif type =~ /\AArray<(.*)>/i
132
+ # check to ensure the input is an array given that the attribute
133
+ # is documented as an array but the input is not
134
+ if attributes[map[key]].is_a?(Array)
135
+ transformed_hash["#{key}"] = attributes[map[key]].map { |v| _deserialize($1, v) }
136
+ end
137
+ elsif !attributes[map[key]].nil?
138
+ transformed_hash["#{key}"] = _deserialize(type, attributes[map[key]])
139
+ end
140
+ end
141
+ new(transformed_hash)
142
+ end
143
+
144
+ # Returns the object in the form of hash
145
+ # @return [Hash] Returns the object in the form of hash
146
+ def to_hash
147
+ hash = {}
148
+ # include attributes inherited from allOf parents (the nearest declaration wins)
149
+ self.class.acceptable_attribute_map.each_pair do |attr, param|
150
+ value = self.send(attr)
151
+ if value.nil?
152
+ is_nullable = self.class.acceptable_openapi_nullable.include?(attr)
153
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
154
+ end
155
+
156
+ hash[param] = _to_hash(value)
157
+ end
158
+ hash
159
+ end
160
+
161
+ end
162
+
163
+ end
@@ -0,0 +1,239 @@
1
+ =begin
2
+ #Peal API
3
+
4
+ #Schedule posts across social platforms, follow how they did, and manage a Peal workspace's channels, media and members.
5
+
6
+ The version of the OpenAPI document: 0.0.1
7
+ Contact: hello@peal.social
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.27.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Peal
17
+ class MediaDimensions < ApiModelBase
18
+ attr_accessor :height
19
+
20
+ attr_accessor :width
21
+
22
+ # Attribute mapping from ruby-style variable name to JSON key.
23
+ def self.attribute_map
24
+ {
25
+ :'height' => :'height',
26
+ :'width' => :'width'
27
+ }
28
+ end
29
+
30
+ # Returns attribute mapping this model knows about
31
+ def self.acceptable_attribute_map
32
+ attribute_map
33
+ end
34
+
35
+ # Returns all the JSON keys this model knows about
36
+ def self.acceptable_attributes
37
+ acceptable_attribute_map.values
38
+ end
39
+
40
+ # Attribute type mapping.
41
+ def self.openapi_types
42
+ {
43
+ :'height' => :'Integer',
44
+ :'width' => :'Integer'
45
+ }
46
+ end
47
+
48
+ # List of attributes with nullable: true
49
+ def self.openapi_nullable
50
+ Set.new([
51
+ ])
52
+ end
53
+
54
+ # Returns attribute type mapping
55
+ def self.acceptable_openapi_types
56
+ openapi_types
57
+ end
58
+
59
+ # Returns the nullable attributes
60
+ def self.acceptable_openapi_nullable
61
+ openapi_nullable
62
+ end
63
+
64
+ # Initializes the object
65
+ # @param [Hash] attributes Model attributes in the form of hash
66
+ def initialize(attributes = {})
67
+ if (!attributes.is_a?(Hash))
68
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Peal::MediaDimensions` initialize method"
69
+ end
70
+
71
+ # check to see if the attribute exists and convert string to symbol for hash key
72
+ acceptable_attribute_map = self.class.acceptable_attribute_map
73
+ attributes = attributes.each_with_object({}) { |(k, v), h|
74
+ if (!acceptable_attribute_map.key?(k.to_sym))
75
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Peal::MediaDimensions`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
76
+ end
77
+ h[k.to_sym] = v
78
+ }
79
+
80
+ if attributes.key?(:'height')
81
+ self.height = attributes[:'height']
82
+ else
83
+ self.height = nil
84
+ end
85
+
86
+ if attributes.key?(:'width')
87
+ self.width = attributes[:'width']
88
+ else
89
+ self.width = nil
90
+ end
91
+ end
92
+
93
+ # Show invalid properties with the reasons. Usually used together with valid?
94
+ # @return Array for valid properties with the reasons
95
+ def list_invalid_properties
96
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
97
+ invalid_properties = Array.new
98
+ if @height.nil?
99
+ invalid_properties.push('invalid value for "height", height cannot be nil.')
100
+ end
101
+
102
+ if @height > 9007199254740991
103
+ invalid_properties.push('invalid value for "height", must be smaller than or equal to 9007199254740991.')
104
+ end
105
+
106
+ if @height <= 0
107
+ invalid_properties.push('invalid value for "height", must be greater than 0.')
108
+ end
109
+
110
+ if @width.nil?
111
+ invalid_properties.push('invalid value for "width", width cannot be nil.')
112
+ end
113
+
114
+ if @width > 9007199254740991
115
+ invalid_properties.push('invalid value for "width", must be smaller than or equal to 9007199254740991.')
116
+ end
117
+
118
+ if @width <= 0
119
+ invalid_properties.push('invalid value for "width", must be greater than 0.')
120
+ end
121
+
122
+ invalid_properties
123
+ end
124
+
125
+ # Check to see if the all the properties in the model are valid
126
+ # @return true if the model is valid
127
+ def valid?
128
+ warn '[DEPRECATED] the `valid?` method is obsolete'
129
+ return false if @height.nil?
130
+ return false if @height > 9007199254740991
131
+ return false if @height <= 0
132
+ return false if @width.nil?
133
+ return false if @width > 9007199254740991
134
+ return false if @width <= 0
135
+ true
136
+ end
137
+
138
+ # Custom attribute writer method with validation
139
+ # @param [Object] height Value to be assigned
140
+ def height=(height)
141
+ if height.nil?
142
+ fail ArgumentError, 'height cannot be nil'
143
+ end
144
+
145
+ if height > 9007199254740991
146
+ fail ArgumentError, 'invalid value for "height", must be smaller than or equal to 9007199254740991.'
147
+ end
148
+
149
+ if height <= 0
150
+ fail ArgumentError, 'invalid value for "height", must be greater than 0.'
151
+ end
152
+
153
+ @height = height
154
+ end
155
+
156
+ # Custom attribute writer method with validation
157
+ # @param [Object] width Value to be assigned
158
+ def width=(width)
159
+ if width.nil?
160
+ fail ArgumentError, 'width cannot be nil'
161
+ end
162
+
163
+ if width > 9007199254740991
164
+ fail ArgumentError, 'invalid value for "width", must be smaller than or equal to 9007199254740991.'
165
+ end
166
+
167
+ if width <= 0
168
+ fail ArgumentError, 'invalid value for "width", must be greater than 0.'
169
+ end
170
+
171
+ @width = width
172
+ end
173
+
174
+ # Checks equality by comparing each attribute.
175
+ # @param [Object] Object to be compared
176
+ def ==(o)
177
+ return true if self.equal?(o)
178
+ self.class == o.class &&
179
+ height == o.height &&
180
+ width == o.width
181
+ end
182
+
183
+ # @see the `==` method
184
+ # @param [Object] Object to be compared
185
+ def eql?(o)
186
+ self == o
187
+ end
188
+
189
+ # Calculates hash code according to all attributes.
190
+ # @return [Integer] Hash code
191
+ def hash
192
+ [height, width].hash
193
+ end
194
+
195
+ # Builds the object from hash
196
+ # @param [Hash] attributes Model attributes in the form of hash
197
+ # @return [Object] Returns the model itself
198
+ def self.build_from_hash(attributes)
199
+ return nil unless attributes.is_a?(Hash)
200
+ attributes = attributes.transform_keys(&:to_sym)
201
+ # include attributes inherited from allOf parents (the nearest declaration wins)
202
+ map = acceptable_attribute_map
203
+ transformed_hash = {}
204
+ acceptable_openapi_types.each_pair do |key, type|
205
+ if attributes.key?(map[key]) && attributes[map[key]].nil?
206
+ transformed_hash["#{key}"] = nil
207
+ elsif type =~ /\AArray<(.*)>/i
208
+ # check to ensure the input is an array given that the attribute
209
+ # is documented as an array but the input is not
210
+ if attributes[map[key]].is_a?(Array)
211
+ transformed_hash["#{key}"] = attributes[map[key]].map { |v| _deserialize($1, v) }
212
+ end
213
+ elsif !attributes[map[key]].nil?
214
+ transformed_hash["#{key}"] = _deserialize(type, attributes[map[key]])
215
+ end
216
+ end
217
+ new(transformed_hash)
218
+ end
219
+
220
+ # Returns the object in the form of hash
221
+ # @return [Hash] Returns the object in the form of hash
222
+ def to_hash
223
+ hash = {}
224
+ # include attributes inherited from allOf parents (the nearest declaration wins)
225
+ self.class.acceptable_attribute_map.each_pair do |attr, param|
226
+ value = self.send(attr)
227
+ if value.nil?
228
+ is_nullable = self.class.acceptable_openapi_nullable.include?(attr)
229
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
230
+ end
231
+
232
+ hash[param] = _to_hash(value)
233
+ end
234
+ hash
235
+ end
236
+
237
+ end
238
+
239
+ end
@@ -0,0 +1,103 @@
1
+ =begin
2
+ #Peal API
3
+
4
+ #Schedule posts across social platforms, follow how they did, and manage a Peal workspace's channels, media and members.
5
+
6
+ The version of the OpenAPI document: 0.0.1
7
+ Contact: hello@peal.social
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.27.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Peal
17
+ module MediaGet404Response
18
+ class << self
19
+ # List of class defined in anyOf (OpenAPI v3)
20
+ def openapi_any_of
21
+ [
22
+ :'MediaNotFoundEncoded',
23
+ :'WorkspaceNotFoundEncoded'
24
+ ]
25
+ end
26
+
27
+ # Builds the object
28
+ # @param [Mixed] Data to be matched against the list of anyOf items
29
+ # @return [Object] Returns the model or the data itself
30
+ def build(data)
31
+ # Go through the list of anyOf items and attempt to identify the appropriate one.
32
+ # Note:
33
+ # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 })
34
+ # due to the way the deserialization is made in the base_object template (it just casts without verifying).
35
+ # - TODO: scalar values are de facto behaving as if they were nullable.
36
+ # - TODO: logging when debugging is set.
37
+ openapi_any_of.each do |klass|
38
+ begin
39
+ next if klass == :AnyType # "nullable: true"
40
+ return find_and_cast_into_type(klass, data)
41
+ rescue # rescue all errors so we keep iterating even if the current item lookup raises
42
+ end
43
+ end
44
+
45
+ openapi_any_of.include?(:AnyType) ? data : nil
46
+ end
47
+
48
+ private
49
+
50
+ SchemaMismatchError = Class.new(StandardError)
51
+
52
+ # Note: 'File' is missing here because in the regular case we get the data _after_ a call to JSON.parse.
53
+ def find_and_cast_into_type(klass, data)
54
+ return if data.nil?
55
+
56
+ case klass.to_s
57
+ when 'Boolean'
58
+ return data if data.instance_of?(TrueClass) || data.instance_of?(FalseClass)
59
+ when 'Float'
60
+ return data if data.instance_of?(Float)
61
+ when 'Integer'
62
+ return data if data.instance_of?(Integer)
63
+ when 'Time'
64
+ return Time.parse(data)
65
+ when 'Date'
66
+ return Date.iso8601(data)
67
+ when 'String'
68
+ return data if data.instance_of?(String)
69
+ when 'Object' # "type: object"
70
+ return data if data.instance_of?(Hash)
71
+ when /\AArray<(?<sub_type>.+)>\z/ # "type: array"
72
+ if data.instance_of?(Array)
73
+ sub_type = Regexp.last_match[:sub_type]
74
+ return data.map { |item| find_and_cast_into_type(sub_type, item) }
75
+ end
76
+ when /\AHash<String, (?<sub_type>.+)>\z/ # "type: object" with "additionalProperties: { ... }"
77
+ if data.instance_of?(Hash) && data.keys.all? { |k| k.instance_of?(Symbol) || k.instance_of?(String) }
78
+ sub_type = Regexp.last_match[:sub_type]
79
+ return data.each_with_object({}) { |(k, v), hsh| hsh[k] = find_and_cast_into_type(sub_type, v) }
80
+ end
81
+ else # model
82
+ const = Peal.const_get(klass)
83
+ if const
84
+ if const.respond_to?(:openapi_any_of) # nested anyOf model
85
+ model = const.build(data)
86
+ return model if model
87
+ else
88
+ # raise if data contains keys that are not known to the model
89
+ raise if const.respond_to?(:acceptable_attributes) && !(data.keys - const.acceptable_attributes).empty?
90
+ model = const.build_from_hash(data)
91
+ return model if model
92
+ end
93
+ end
94
+ end
95
+
96
+ raise # if no match by now, raise
97
+ rescue
98
+ raise SchemaMismatchError, "#{data} doesn't match the #{klass} type"
99
+ end
100
+ end
101
+ end
102
+
103
+ end