knockapi 1.0.0 → 1.2.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 (555) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -0
  3. data/README.md +101 -49
  4. data/lib/knockapi/client.rb +4 -4
  5. data/lib/knockapi/errors.rb +1 -1
  6. data/lib/knockapi/file_part.rb +2 -2
  7. data/lib/knockapi/internal/entries_cursor.rb +3 -3
  8. data/lib/knockapi/internal/items_cursor.rb +3 -3
  9. data/lib/knockapi/internal/ms_teams_pagination.rb +3 -3
  10. data/lib/knockapi/internal/slack_channels_cursor.rb +3 -3
  11. data/lib/knockapi/internal/transport/base_client.rb +79 -7
  12. data/lib/knockapi/internal/transport/pooled_net_requester.rb +17 -1
  13. data/lib/knockapi/internal/type/array_of.rb +9 -1
  14. data/lib/knockapi/internal/type/base_model.rb +78 -39
  15. data/lib/knockapi/internal/type/boolean.rb +8 -0
  16. data/lib/knockapi/internal/type/converter.rb +18 -0
  17. data/lib/knockapi/internal/type/enum.rb +13 -0
  18. data/lib/knockapi/internal/type/file_input.rb +7 -0
  19. data/lib/knockapi/internal/type/hash_of.rb +9 -1
  20. data/lib/knockapi/internal/type/request_parameters.rb +6 -12
  21. data/lib/knockapi/internal/type/union.rb +16 -3
  22. data/lib/knockapi/internal/type/unknown.rb +8 -0
  23. data/lib/knockapi/internal/util.rb +119 -2
  24. data/lib/knockapi/internal.rb +9 -0
  25. data/lib/knockapi/models/activity.rb +6 -6
  26. data/lib/knockapi/models/audience_add_members_params.rb +10 -8
  27. data/lib/knockapi/models/audience_add_members_response.rb +7 -0
  28. data/lib/knockapi/models/audience_list_members_response.rb +6 -6
  29. data/lib/knockapi/models/audience_member.rb +5 -6
  30. data/lib/knockapi/models/audience_remove_members_params.rb +12 -7
  31. data/lib/knockapi/models/audience_remove_members_response.rb +7 -0
  32. data/lib/knockapi/models/bulk_operation.rb +7 -8
  33. data/lib/knockapi/models/channels/bulk_update_message_status_params.rb +11 -10
  34. data/lib/knockapi/models/condition.rb +4 -4
  35. data/lib/knockapi/models/identify_user_request.rb +16 -17
  36. data/lib/knockapi/models/inline_identify_user_request.rb +64 -7
  37. data/lib/knockapi/models/inline_object_request.rb +8 -6
  38. data/lib/knockapi/models/inline_tenant_request.rb +2 -2
  39. data/lib/knockapi/models/message.rb +19 -23
  40. data/lib/knockapi/models/message_delivery_log.rb +18 -18
  41. data/lib/knockapi/models/message_event.rb +9 -10
  42. data/lib/knockapi/models/message_list_params.rb +14 -15
  43. data/lib/knockapi/models/messages/batch_archive_response.rb +1 -1
  44. data/lib/knockapi/models/messages/batch_mark_as_interacted_response.rb +1 -1
  45. data/lib/knockapi/models/messages/batch_mark_as_read_response.rb +1 -1
  46. data/lib/knockapi/models/messages/batch_mark_as_seen_response.rb +1 -1
  47. data/lib/knockapi/models/messages/batch_mark_as_unread_response.rb +1 -1
  48. data/lib/knockapi/models/messages/batch_mark_as_unseen_response.rb +1 -1
  49. data/lib/knockapi/models/messages/batch_unarchive_response.rb +1 -1
  50. data/lib/knockapi/models/object.rb +9 -1
  51. data/lib/knockapi/models/object_add_subscriptions_params.rb +3 -4
  52. data/lib/knockapi/models/object_add_subscriptions_response.rb +1 -1
  53. data/lib/knockapi/models/object_delete_response.rb +7 -0
  54. data/lib/knockapi/models/object_delete_subscriptions_params.rb +3 -5
  55. data/lib/knockapi/models/object_delete_subscriptions_response.rb +1 -1
  56. data/lib/knockapi/models/object_list_messages_params.rb +16 -14
  57. data/lib/knockapi/models/object_list_params.rb +3 -4
  58. data/lib/knockapi/models/object_list_preferences_response.rb +1 -1
  59. data/lib/knockapi/models/object_list_subscriptions_params.rb +14 -14
  60. data/lib/knockapi/models/object_set_params.rb +15 -13
  61. data/lib/knockapi/models/object_unset_channel_data_response.rb +7 -0
  62. data/lib/knockapi/models/objects/bulk_add_subscriptions_params.rb +9 -9
  63. data/lib/knockapi/models/objects/bulk_set_params.rb +3 -3
  64. data/lib/knockapi/models/providers/ms_team_list_channels_params.rb +4 -7
  65. data/lib/knockapi/models/providers/ms_team_list_teams_params.rb +4 -9
  66. data/lib/knockapi/models/providers/slack_list_channels_params.rb +4 -7
  67. data/lib/knockapi/models/recipient.rb +3 -3
  68. data/lib/knockapi/models/recipient_reference.rb +2 -2
  69. data/lib/knockapi/models/recipient_request.rb +3 -3
  70. data/lib/knockapi/models/recipients/channel_data.rb +14 -14
  71. data/lib/knockapi/models/recipients/channel_data_request.rb +10 -10
  72. data/lib/knockapi/models/recipients/discord_channel_data.rb +16 -10
  73. data/lib/knockapi/models/recipients/inline_channel_data_request.rb +24 -1
  74. data/lib/knockapi/models/recipients/inline_preference_set_request.rb +1 -1
  75. data/lib/knockapi/models/recipients/ms_teams_channel_data.rb +16 -10
  76. data/lib/knockapi/models/recipients/preference_set.rb +34 -28
  77. data/lib/knockapi/models/recipients/preference_set_channel_type_setting.rb +3 -3
  78. data/lib/knockapi/models/recipients/preference_set_channel_types.rb +36 -36
  79. data/lib/knockapi/models/recipients/preference_set_request.rb +34 -28
  80. data/lib/knockapi/models/recipients/slack_channel_data.rb +12 -10
  81. data/lib/knockapi/models/recipients/subscription.rb +6 -6
  82. data/lib/knockapi/models/schedule.rb +11 -12
  83. data/lib/knockapi/models/schedule_create_params.rb +10 -15
  84. data/lib/knockapi/models/schedule_create_response.rb +1 -1
  85. data/lib/knockapi/models/schedule_delete_response.rb +1 -1
  86. data/lib/knockapi/models/schedule_repeat_rule.rb +7 -7
  87. data/lib/knockapi/models/schedule_update_params.rb +9 -10
  88. data/lib/knockapi/models/schedule_update_response.rb +1 -1
  89. data/lib/knockapi/models/schedules/bulk_create_params.rb +16 -18
  90. data/lib/knockapi/models/tenant.rb +13 -16
  91. data/lib/knockapi/models/tenant_delete_response.rb +7 -0
  92. data/lib/knockapi/models/tenant_request.rb +20 -20
  93. data/lib/knockapi/models/tenant_set_params.rb +19 -19
  94. data/lib/knockapi/models/tenants/bulk_set_params.rb +3 -3
  95. data/lib/knockapi/models/user.rb +9 -11
  96. data/lib/knockapi/models/user_delete_response.rb +7 -0
  97. data/lib/knockapi/models/user_list_messages_params.rb +18 -14
  98. data/lib/knockapi/models/user_list_params.rb +3 -4
  99. data/lib/knockapi/models/user_list_preferences_response.rb +1 -1
  100. data/lib/knockapi/models/user_list_subscriptions_params.rb +3 -3
  101. data/lib/knockapi/models/user_unset_channel_data_response.rb +7 -0
  102. data/lib/knockapi/models/users/bulk_identify_params.rb +3 -3
  103. data/lib/knockapi/models/users/bulk_set_preferences_params.rb +3 -3
  104. data/lib/knockapi/models/users/feed_list_items_params.rb +6 -6
  105. data/lib/knockapi/models/users/feed_list_items_response.rb +6 -6
  106. data/lib/knockapi/models/workflow_cancel_params.rb +3 -5
  107. data/lib/knockapi/models/workflow_cancel_response.rb +7 -0
  108. data/lib/knockapi/models/workflow_trigger_params.rb +9 -12
  109. data/lib/knockapi/models/workflow_trigger_response.rb +0 -1
  110. data/lib/knockapi/models.rb +213 -0
  111. data/lib/knockapi/request_options.rb +4 -0
  112. data/lib/knockapi/resources/audiences.rb +4 -4
  113. data/lib/knockapi/resources/bulk_operations.rb +2 -2
  114. data/lib/knockapi/resources/channels/bulk.rb +7 -8
  115. data/lib/knockapi/resources/integrations/census.rb +1 -1
  116. data/lib/knockapi/resources/integrations/hightouch.rb +1 -1
  117. data/lib/knockapi/resources/messages/batch.rb +22 -22
  118. data/lib/knockapi/resources/messages.rb +32 -39
  119. data/lib/knockapi/resources/objects/bulk.rb +11 -11
  120. data/lib/knockapi/resources/objects.rb +52 -62
  121. data/lib/knockapi/resources/providers/ms_teams.rb +6 -6
  122. data/lib/knockapi/resources/providers/slack.rb +4 -4
  123. data/lib/knockapi/resources/schedules/bulk.rb +4 -4
  124. data/lib/knockapi/resources/schedules.rb +18 -23
  125. data/lib/knockapi/resources/tenants/bulk.rb +7 -7
  126. data/lib/knockapi/resources/tenants.rb +11 -11
  127. data/lib/knockapi/resources/users/bulk.rb +11 -11
  128. data/lib/knockapi/resources/users/feeds.rb +3 -3
  129. data/lib/knockapi/resources/users/guides.rb +4 -4
  130. data/lib/knockapi/resources/users.rb +46 -54
  131. data/lib/knockapi/resources/workflows.rb +6 -11
  132. data/lib/knockapi/version.rb +1 -1
  133. data/lib/knockapi.rb +11 -2
  134. data/rbi/knockapi/client.rbi +5 -4
  135. data/rbi/knockapi/errors.rbi +35 -16
  136. data/rbi/knockapi/file_part.rbi +9 -6
  137. data/rbi/knockapi/internal/entries_cursor.rbi +9 -4
  138. data/rbi/knockapi/internal/items_cursor.rbi +9 -4
  139. data/rbi/knockapi/internal/ms_teams_pagination.rbi +2 -1
  140. data/rbi/knockapi/internal/slack_channels_cursor.rbi +2 -1
  141. data/rbi/knockapi/internal/transport/base_client.rbi +158 -78
  142. data/rbi/knockapi/internal/transport/pooled_net_requester.rbi +32 -13
  143. data/rbi/knockapi/internal/type/array_of.rbi +40 -24
  144. data/rbi/knockapi/internal/type/base_model.rbi +156 -73
  145. data/rbi/knockapi/internal/type/base_page.rbi +12 -8
  146. data/rbi/knockapi/internal/type/boolean.rbi +22 -14
  147. data/rbi/knockapi/internal/type/converter.rbi +70 -28
  148. data/rbi/knockapi/internal/type/enum.rbi +33 -15
  149. data/rbi/knockapi/internal/type/file_input.rbi +13 -4
  150. data/rbi/knockapi/internal/type/hash_of.rbi +40 -24
  151. data/rbi/knockapi/internal/type/request_parameters.rbi +12 -4
  152. data/rbi/knockapi/internal/type/union.rbi +60 -19
  153. data/rbi/knockapi/internal/type/unknown.rbi +22 -6
  154. data/rbi/knockapi/internal/util.rbi +273 -87
  155. data/rbi/knockapi/internal.rbi +5 -0
  156. data/rbi/knockapi/models/activity.rbi +28 -22
  157. data/rbi/knockapi/models/audience_add_members_params.rbi +62 -27
  158. data/rbi/knockapi/models/audience_add_members_response.rbi +7 -0
  159. data/rbi/knockapi/models/audience_list_members_params.rbi +16 -5
  160. data/rbi/knockapi/models/audience_list_members_response.rbi +25 -11
  161. data/rbi/knockapi/models/audience_member.rbi +23 -11
  162. data/rbi/knockapi/models/audience_remove_members_params.rbi +65 -28
  163. data/rbi/knockapi/models/audience_remove_members_response.rbi +7 -0
  164. data/rbi/knockapi/models/bulk_operation.rbi +70 -42
  165. data/rbi/knockapi/models/bulk_operation_get_params.rbi +13 -5
  166. data/rbi/knockapi/models/channels/bulk_update_message_status_params.rbi +224 -79
  167. data/rbi/knockapi/models/condition.rbi +78 -31
  168. data/rbi/knockapi/models/identify_user_request.rbi +90 -36
  169. data/rbi/knockapi/models/inline_identify_user_request.rbi +135 -22
  170. data/rbi/knockapi/models/inline_object_request.rbi +76 -22
  171. data/rbi/knockapi/models/inline_tenant_request.rbi +7 -2
  172. data/rbi/knockapi/models/integrations/census_custom_destination_params.rbi +24 -15
  173. data/rbi/knockapi/models/integrations/census_custom_destination_response.rbi +21 -4
  174. data/rbi/knockapi/models/integrations/hightouch_embedded_destination_params.rbi +24 -15
  175. data/rbi/knockapi/models/integrations/hightouch_embedded_destination_response.rbi +21 -4
  176. data/rbi/knockapi/models/message.rbi +140 -72
  177. data/rbi/knockapi/models/message_archive_params.rbi +13 -5
  178. data/rbi/knockapi/models/message_delivery_log.rbi +175 -72
  179. data/rbi/knockapi/models/message_event.rbi +83 -37
  180. data/rbi/knockapi/models/message_get_content_params.rbi +13 -5
  181. data/rbi/knockapi/models/message_get_content_response.rbi +366 -226
  182. data/rbi/knockapi/models/message_get_params.rbi +13 -5
  183. data/rbi/knockapi/models/message_list_activities_params.rbi +24 -15
  184. data/rbi/knockapi/models/message_list_delivery_logs_params.rbi +23 -12
  185. data/rbi/knockapi/models/message_list_events_params.rbi +20 -12
  186. data/rbi/knockapi/models/message_list_params.rbi +162 -58
  187. data/rbi/knockapi/models/message_mark_as_interacted_params.rbi +21 -6
  188. data/rbi/knockapi/models/message_mark_as_read_params.rbi +13 -5
  189. data/rbi/knockapi/models/message_mark_as_seen_params.rbi +13 -5
  190. data/rbi/knockapi/models/message_mark_as_unread_params.rbi +16 -5
  191. data/rbi/knockapi/models/message_mark_as_unseen_params.rbi +16 -5
  192. data/rbi/knockapi/models/message_unarchive_params.rbi +13 -5
  193. data/rbi/knockapi/models/messages/batch_archive_params.rbi +23 -6
  194. data/rbi/knockapi/models/messages/batch_archive_response.rbi +4 -1
  195. data/rbi/knockapi/models/messages/batch_get_content_params.rbi +23 -6
  196. data/rbi/knockapi/models/messages/batch_get_content_response.rbi +370 -227
  197. data/rbi/knockapi/models/messages/batch_mark_as_interacted_params.rbi +22 -13
  198. data/rbi/knockapi/models/messages/batch_mark_as_interacted_response.rbi +4 -1
  199. data/rbi/knockapi/models/messages/batch_mark_as_read_params.rbi +23 -6
  200. data/rbi/knockapi/models/messages/batch_mark_as_read_response.rbi +4 -1
  201. data/rbi/knockapi/models/messages/batch_mark_as_seen_params.rbi +23 -6
  202. data/rbi/knockapi/models/messages/batch_mark_as_seen_response.rbi +4 -1
  203. data/rbi/knockapi/models/messages/batch_mark_as_unread_params.rbi +23 -6
  204. data/rbi/knockapi/models/messages/batch_mark_as_unread_response.rbi +4 -1
  205. data/rbi/knockapi/models/messages/batch_mark_as_unseen_params.rbi +23 -6
  206. data/rbi/knockapi/models/messages/batch_mark_as_unseen_response.rbi +4 -1
  207. data/rbi/knockapi/models/messages/batch_unarchive_params.rbi +23 -6
  208. data/rbi/knockapi/models/messages/batch_unarchive_response.rbi +4 -1
  209. data/rbi/knockapi/models/object.rbi +31 -10
  210. data/rbi/knockapi/models/object_add_subscriptions_params.rbi +44 -22
  211. data/rbi/knockapi/models/object_add_subscriptions_response.rbi +1 -1
  212. data/rbi/knockapi/models/object_delete_params.rbi +13 -5
  213. data/rbi/knockapi/models/object_delete_response.rbi +7 -0
  214. data/rbi/knockapi/models/object_delete_subscriptions_params.rbi +36 -14
  215. data/rbi/knockapi/models/object_delete_subscriptions_response.rbi +1 -1
  216. data/rbi/knockapi/models/object_get_channel_data_params.rbi +16 -5
  217. data/rbi/knockapi/models/object_get_params.rbi +13 -5
  218. data/rbi/knockapi/models/object_get_preferences_params.rbi +16 -5
  219. data/rbi/knockapi/models/object_list_messages_params.rbi +185 -61
  220. data/rbi/knockapi/models/object_list_params.rbi +43 -22
  221. data/rbi/knockapi/models/object_list_preferences_params.rbi +16 -5
  222. data/rbi/knockapi/models/object_list_preferences_response.rbi +1 -1
  223. data/rbi/knockapi/models/object_list_schedules_params.rbi +25 -16
  224. data/rbi/knockapi/models/object_list_subscriptions_params.rbi +150 -46
  225. data/rbi/knockapi/models/object_set_channel_data_params.rbi +16 -5
  226. data/rbi/knockapi/models/object_set_params.rbi +89 -33
  227. data/rbi/knockapi/models/object_set_preferences_params.rbi +16 -5
  228. data/rbi/knockapi/models/object_unset_channel_data_params.rbi +16 -5
  229. data/rbi/knockapi/models/object_unset_channel_data_response.rbi +7 -0
  230. data/rbi/knockapi/models/objects/bulk_add_subscriptions_params.rbi +77 -34
  231. data/rbi/knockapi/models/objects/bulk_delete_params.rbi +23 -6
  232. data/rbi/knockapi/models/objects/bulk_set_params.rbi +20 -11
  233. data/rbi/knockapi/models/page_info.rbi +22 -11
  234. data/rbi/knockapi/models/providers/ms_team_check_auth_params.rbi +23 -6
  235. data/rbi/knockapi/models/providers/ms_team_check_auth_response.rbi +53 -14
  236. data/rbi/knockapi/models/providers/ms_team_list_channels_params.rbi +53 -23
  237. data/rbi/knockapi/models/providers/ms_team_list_channels_response.rbi +57 -30
  238. data/rbi/knockapi/models/providers/ms_team_list_teams_params.rbi +62 -22
  239. data/rbi/knockapi/models/providers/ms_team_list_teams_response.rbi +23 -4
  240. data/rbi/knockapi/models/providers/ms_team_revoke_access_params.rbi +23 -6
  241. data/rbi/knockapi/models/providers/ms_team_revoke_access_response.rbi +14 -3
  242. data/rbi/knockapi/models/providers/slack_check_auth_params.rbi +23 -6
  243. data/rbi/knockapi/models/providers/slack_check_auth_response.rbi +53 -14
  244. data/rbi/knockapi/models/providers/slack_list_channels_params.rbi +58 -30
  245. data/rbi/knockapi/models/providers/slack_list_channels_response.rbi +29 -12
  246. data/rbi/knockapi/models/providers/slack_revoke_access_params.rbi +23 -6
  247. data/rbi/knockapi/models/providers/slack_revoke_access_response.rbi +14 -3
  248. data/rbi/knockapi/models/recipient.rbi +5 -2
  249. data/rbi/knockapi/models/recipient_reference.rbi +22 -5
  250. data/rbi/knockapi/models/recipient_request.rbi +11 -4
  251. data/rbi/knockapi/models/recipients/channel_data.rbi +113 -55
  252. data/rbi/knockapi/models/recipients/channel_data_request.rbi +54 -33
  253. data/rbi/knockapi/models/recipients/discord_channel_data.rbi +100 -53
  254. data/rbi/knockapi/models/recipients/inline_channel_data_request.rbi +29 -1
  255. data/rbi/knockapi/models/recipients/inline_preference_set_request.rbi +3 -1
  256. data/rbi/knockapi/models/recipients/ms_teams_channel_data.rbi +109 -64
  257. data/rbi/knockapi/models/recipients/one_signal_channel_data.rbi +14 -3
  258. data/rbi/knockapi/models/recipients/preference_set.rbi +159 -100
  259. data/rbi/knockapi/models/recipients/preference_set_channel_type_setting.rbi +18 -6
  260. data/rbi/knockapi/models/recipients/preference_set_channel_types.rbi +276 -105
  261. data/rbi/knockapi/models/recipients/preference_set_request.rbi +162 -87
  262. data/rbi/knockapi/models/recipients/push_channel_data.rbi +14 -3
  263. data/rbi/knockapi/models/recipients/slack_channel_data.rbi +107 -49
  264. data/rbi/knockapi/models/recipients/subscription.rbi +29 -20
  265. data/rbi/knockapi/models/schedule.rbi +32 -27
  266. data/rbi/knockapi/models/schedule_create_params.rbi +52 -35
  267. data/rbi/knockapi/models/schedule_create_response.rbi +4 -1
  268. data/rbi/knockapi/models/schedule_delete_params.rbi +20 -6
  269. data/rbi/knockapi/models/schedule_delete_response.rbi +4 -1
  270. data/rbi/knockapi/models/schedule_list_params.rbi +23 -17
  271. data/rbi/knockapi/models/schedule_repeat_rule.rbi +69 -39
  272. data/rbi/knockapi/models/schedule_update_params.rbi +48 -27
  273. data/rbi/knockapi/models/schedule_update_response.rbi +4 -1
  274. data/rbi/knockapi/models/schedules/bulk_create_params.rbi +102 -61
  275. data/rbi/knockapi/models/tenant.rbi +71 -45
  276. data/rbi/knockapi/models/tenant_delete_params.rbi +13 -5
  277. data/rbi/knockapi/models/tenant_delete_response.rbi +7 -0
  278. data/rbi/knockapi/models/tenant_get_params.rbi +13 -5
  279. data/rbi/knockapi/models/tenant_list_params.rbi +22 -16
  280. data/rbi/knockapi/models/tenant_request.rbi +132 -57
  281. data/rbi/knockapi/models/tenant_set_params.rbi +134 -59
  282. data/rbi/knockapi/models/tenants/bulk_delete_params.rbi +23 -6
  283. data/rbi/knockapi/models/tenants/bulk_set_params.rbi +20 -11
  284. data/rbi/knockapi/models/user.rbi +32 -28
  285. data/rbi/knockapi/models/user_delete_params.rbi +13 -5
  286. data/rbi/knockapi/models/user_delete_response.rbi +7 -0
  287. data/rbi/knockapi/models/user_get_channel_data_params.rbi +13 -5
  288. data/rbi/knockapi/models/user_get_params.rbi +13 -5
  289. data/rbi/knockapi/models/user_get_preferences_params.rbi +19 -5
  290. data/rbi/knockapi/models/user_list_messages_params.rbi +183 -59
  291. data/rbi/knockapi/models/user_list_params.rbi +43 -22
  292. data/rbi/knockapi/models/user_list_preferences_params.rbi +16 -5
  293. data/rbi/knockapi/models/user_list_preferences_response.rbi +1 -1
  294. data/rbi/knockapi/models/user_list_schedules_params.rbi +22 -16
  295. data/rbi/knockapi/models/user_list_subscriptions_params.rbi +61 -23
  296. data/rbi/knockapi/models/user_merge_params.rbi +17 -6
  297. data/rbi/knockapi/models/user_set_channel_data_params.rbi +13 -5
  298. data/rbi/knockapi/models/user_set_preferences_params.rbi +13 -5
  299. data/rbi/knockapi/models/user_unset_channel_data_params.rbi +16 -5
  300. data/rbi/knockapi/models/user_unset_channel_data_response.rbi +7 -0
  301. data/rbi/knockapi/models/user_update_params.rbi +13 -5
  302. data/rbi/knockapi/models/users/bulk_delete_params.rbi +23 -6
  303. data/rbi/knockapi/models/users/bulk_identify_params.rbi +23 -11
  304. data/rbi/knockapi/models/users/bulk_set_preferences_params.rbi +26 -18
  305. data/rbi/knockapi/models/users/feed_get_settings_params.rbi +16 -5
  306. data/rbi/knockapi/models/users/feed_get_settings_response.rbi +47 -14
  307. data/rbi/knockapi/models/users/feed_list_items_params.rbi +119 -41
  308. data/rbi/knockapi/models/users/feed_list_items_response.rbi +199 -108
  309. data/rbi/knockapi/models/users/guide_get_channel_params.rbi +15 -5
  310. data/rbi/knockapi/models/users/guide_get_channel_response.rbi +84 -25
  311. data/rbi/knockapi/models/users/guide_mark_message_as_archived_params.rbi +29 -20
  312. data/rbi/knockapi/models/users/guide_mark_message_as_archived_response.rbi +14 -3
  313. data/rbi/knockapi/models/users/guide_mark_message_as_interacted_params.rbi +29 -20
  314. data/rbi/knockapi/models/users/guide_mark_message_as_interacted_response.rbi +14 -3
  315. data/rbi/knockapi/models/users/guide_mark_message_as_seen_params.rbi +29 -20
  316. data/rbi/knockapi/models/users/guide_mark_message_as_seen_response.rbi +14 -3
  317. data/rbi/knockapi/models/workflow_cancel_params.rbi +42 -17
  318. data/rbi/knockapi/models/workflow_cancel_response.rbi +7 -0
  319. data/rbi/knockapi/models/workflow_trigger_params.rbi +65 -37
  320. data/rbi/knockapi/models/workflow_trigger_response.rbi +14 -3
  321. data/rbi/knockapi/models.rbi +179 -0
  322. data/rbi/knockapi/request_options.rbi +18 -7
  323. data/rbi/knockapi/resources/audiences.rbi +22 -14
  324. data/rbi/knockapi/resources/bulk_operations.rbi +11 -3
  325. data/rbi/knockapi/resources/channels/bulk.rbi +15 -9
  326. data/rbi/knockapi/resources/channels.rbi +2 -1
  327. data/rbi/knockapi/resources/integrations/census.rbi +8 -4
  328. data/rbi/knockapi/resources/integrations/hightouch.rbi +8 -4
  329. data/rbi/knockapi/resources/integrations.rbi +2 -1
  330. data/rbi/knockapi/resources/messages/batch.rbi +58 -26
  331. data/rbi/knockapi/resources/messages.rbi +102 -43
  332. data/rbi/knockapi/resources/objects/bulk.rbi +25 -14
  333. data/rbi/knockapi/resources/objects.rbi +177 -107
  334. data/rbi/knockapi/resources/providers/ms_teams.rbi +35 -16
  335. data/rbi/knockapi/resources/providers/slack.rbi +28 -11
  336. data/rbi/knockapi/resources/providers.rbi +2 -1
  337. data/rbi/knockapi/resources/recipients/channel_data.rbi +2 -1
  338. data/rbi/knockapi/resources/recipients/preferences.rbi +2 -1
  339. data/rbi/knockapi/resources/recipients/subscriptions.rbi +2 -1
  340. data/rbi/knockapi/resources/recipients.rbi +2 -1
  341. data/rbi/knockapi/resources/schedules/bulk.rbi +9 -6
  342. data/rbi/knockapi/resources/schedules.rbi +44 -33
  343. data/rbi/knockapi/resources/shared.rbi +2 -1
  344. data/rbi/knockapi/resources/tenants/bulk.rbi +15 -9
  345. data/rbi/knockapi/resources/tenants.rbi +51 -20
  346. data/rbi/knockapi/resources/users/bulk.rbi +21 -14
  347. data/rbi/knockapi/resources/users/feeds.rbi +20 -9
  348. data/rbi/knockapi/resources/users/guides.rbi +23 -16
  349. data/rbi/knockapi/resources/users.rbi +160 -91
  350. data/rbi/knockapi/resources/workflows.rbi +38 -29
  351. data/sig/knockapi/internal/entries_cursor.rbs +0 -2
  352. data/sig/knockapi/internal/items_cursor.rbs +0 -2
  353. data/sig/knockapi/internal/transport/base_client.rbs +16 -1
  354. data/sig/knockapi/internal/transport/pooled_net_requester.rbs +4 -0
  355. data/sig/knockapi/internal/type/array_of.rbs +3 -0
  356. data/sig/knockapi/internal/type/base_model.rbs +13 -5
  357. data/sig/knockapi/internal/type/base_page.rbs +1 -1
  358. data/sig/knockapi/internal/type/boolean.rbs +3 -0
  359. data/sig/knockapi/internal/type/converter.rbs +2 -0
  360. data/sig/knockapi/internal/type/enum.rbs +3 -0
  361. data/sig/knockapi/internal/type/file_input.rbs +2 -0
  362. data/sig/knockapi/internal/type/hash_of.rbs +3 -0
  363. data/sig/knockapi/internal/type/request_parameters.rbs +3 -1
  364. data/sig/knockapi/internal/type/union.rbs +3 -0
  365. data/sig/knockapi/internal/type/unknown.rbs +3 -0
  366. data/sig/knockapi/internal/util.rbs +27 -0
  367. data/sig/knockapi/internal.rbs +4 -0
  368. data/sig/knockapi/models/activity.rbs +0 -2
  369. data/sig/knockapi/models/audience_add_members_params.rbs +6 -12
  370. data/sig/knockapi/models/audience_add_members_response.rbs +5 -0
  371. data/sig/knockapi/models/audience_list_members_params.rbs +0 -2
  372. data/sig/knockapi/models/audience_list_members_response.rbs +6 -8
  373. data/sig/knockapi/models/audience_member.rbs +3 -5
  374. data/sig/knockapi/models/audience_remove_members_params.rbs +6 -14
  375. data/sig/knockapi/models/audience_remove_members_response.rbs +5 -0
  376. data/sig/knockapi/models/bulk_operation.rbs +9 -13
  377. data/sig/knockapi/models/bulk_operation_get_params.rbs +0 -2
  378. data/sig/knockapi/models/channels/bulk_update_message_status_params.rbs +0 -2
  379. data/sig/knockapi/models/condition.rbs +4 -6
  380. data/sig/knockapi/models/identify_user_request.rbs +0 -2
  381. data/sig/knockapi/models/inline_identify_user_request.rbs +26 -4
  382. data/sig/knockapi/models/inline_object_request.rbs +0 -2
  383. data/sig/knockapi/models/inline_tenant_request.rbs +2 -2
  384. data/sig/knockapi/models/integrations/census_custom_destination_params.rbs +0 -2
  385. data/sig/knockapi/models/integrations/census_custom_destination_response.rbs +0 -2
  386. data/sig/knockapi/models/integrations/hightouch_embedded_destination_params.rbs +0 -2
  387. data/sig/knockapi/models/integrations/hightouch_embedded_destination_response.rbs +0 -2
  388. data/sig/knockapi/models/message.rbs +15 -23
  389. data/sig/knockapi/models/message_archive_params.rbs +0 -2
  390. data/sig/knockapi/models/message_delivery_log.rbs +24 -30
  391. data/sig/knockapi/models/message_event.rbs +4 -6
  392. data/sig/knockapi/models/message_get_content_params.rbs +0 -2
  393. data/sig/knockapi/models/message_get_content_response.rbs +2 -24
  394. data/sig/knockapi/models/message_get_params.rbs +0 -2
  395. data/sig/knockapi/models/message_list_activities_params.rbs +0 -2
  396. data/sig/knockapi/models/message_list_delivery_logs_params.rbs +0 -2
  397. data/sig/knockapi/models/message_list_events_params.rbs +0 -2
  398. data/sig/knockapi/models/message_list_params.rbs +30 -24
  399. data/sig/knockapi/models/message_mark_as_interacted_params.rbs +0 -2
  400. data/sig/knockapi/models/message_mark_as_read_params.rbs +0 -2
  401. data/sig/knockapi/models/message_mark_as_seen_params.rbs +0 -2
  402. data/sig/knockapi/models/message_mark_as_unread_params.rbs +0 -2
  403. data/sig/knockapi/models/message_mark_as_unseen_params.rbs +0 -2
  404. data/sig/knockapi/models/message_unarchive_params.rbs +0 -2
  405. data/sig/knockapi/models/messages/batch_archive_params.rbs +0 -2
  406. data/sig/knockapi/models/messages/batch_archive_response.rbs +1 -1
  407. data/sig/knockapi/models/messages/batch_get_content_params.rbs +0 -2
  408. data/sig/knockapi/models/messages/batch_get_content_response.rbs +2 -24
  409. data/sig/knockapi/models/messages/batch_mark_as_interacted_params.rbs +0 -2
  410. data/sig/knockapi/models/messages/batch_mark_as_interacted_response.rbs +1 -2
  411. data/sig/knockapi/models/messages/batch_mark_as_read_params.rbs +0 -2
  412. data/sig/knockapi/models/messages/batch_mark_as_read_response.rbs +1 -1
  413. data/sig/knockapi/models/messages/batch_mark_as_seen_params.rbs +0 -2
  414. data/sig/knockapi/models/messages/batch_mark_as_seen_response.rbs +1 -1
  415. data/sig/knockapi/models/messages/batch_mark_as_unread_params.rbs +0 -2
  416. data/sig/knockapi/models/messages/batch_mark_as_unread_response.rbs +1 -1
  417. data/sig/knockapi/models/messages/batch_mark_as_unseen_params.rbs +0 -2
  418. data/sig/knockapi/models/messages/batch_mark_as_unseen_response.rbs +1 -1
  419. data/sig/knockapi/models/messages/batch_unarchive_params.rbs +0 -2
  420. data/sig/knockapi/models/messages/batch_unarchive_response.rbs +1 -1
  421. data/sig/knockapi/models/object.rbs +8 -4
  422. data/sig/knockapi/models/object_add_subscriptions_params.rbs +0 -2
  423. data/sig/knockapi/models/object_add_subscriptions_response.rbs +1 -1
  424. data/sig/knockapi/models/object_delete_params.rbs +0 -2
  425. data/sig/knockapi/models/object_delete_response.rbs +5 -0
  426. data/sig/knockapi/models/object_delete_subscriptions_params.rbs +0 -2
  427. data/sig/knockapi/models/object_delete_subscriptions_response.rbs +1 -1
  428. data/sig/knockapi/models/object_get_channel_data_params.rbs +0 -2
  429. data/sig/knockapi/models/object_get_params.rbs +0 -2
  430. data/sig/knockapi/models/object_get_preferences_params.rbs +0 -2
  431. data/sig/knockapi/models/object_list_messages_params.rbs +30 -24
  432. data/sig/knockapi/models/object_list_params.rbs +6 -8
  433. data/sig/knockapi/models/object_list_preferences_params.rbs +0 -2
  434. data/sig/knockapi/models/object_list_preferences_response.rbs +1 -1
  435. data/sig/knockapi/models/object_list_schedules_params.rbs +0 -2
  436. data/sig/knockapi/models/object_list_subscriptions_params.rbs +11 -15
  437. data/sig/knockapi/models/object_set_channel_data_params.rbs +0 -2
  438. data/sig/knockapi/models/object_set_params.rbs +0 -2
  439. data/sig/knockapi/models/object_set_preferences_params.rbs +0 -2
  440. data/sig/knockapi/models/object_unset_channel_data_params.rbs +0 -2
  441. data/sig/knockapi/models/object_unset_channel_data_response.rbs +5 -0
  442. data/sig/knockapi/models/objects/bulk_add_subscriptions_params.rbs +3 -7
  443. data/sig/knockapi/models/objects/bulk_delete_params.rbs +0 -2
  444. data/sig/knockapi/models/objects/bulk_set_params.rbs +3 -5
  445. data/sig/knockapi/models/page_info.rbs +0 -2
  446. data/sig/knockapi/models/providers/ms_team_check_auth_params.rbs +0 -2
  447. data/sig/knockapi/models/providers/ms_team_check_auth_response.rbs +0 -4
  448. data/sig/knockapi/models/providers/ms_team_list_channels_params.rbs +5 -9
  449. data/sig/knockapi/models/providers/ms_team_list_channels_response.rbs +0 -4
  450. data/sig/knockapi/models/providers/ms_team_list_teams_params.rbs +5 -9
  451. data/sig/knockapi/models/providers/ms_team_list_teams_response.rbs +0 -2
  452. data/sig/knockapi/models/providers/ms_team_revoke_access_params.rbs +0 -2
  453. data/sig/knockapi/models/providers/ms_team_revoke_access_response.rbs +0 -2
  454. data/sig/knockapi/models/providers/slack_check_auth_params.rbs +0 -2
  455. data/sig/knockapi/models/providers/slack_check_auth_response.rbs +0 -4
  456. data/sig/knockapi/models/providers/slack_list_channels_params.rbs +5 -9
  457. data/sig/knockapi/models/providers/slack_list_channels_response.rbs +0 -2
  458. data/sig/knockapi/models/providers/slack_revoke_access_params.rbs +0 -2
  459. data/sig/knockapi/models/providers/slack_revoke_access_response.rbs +0 -2
  460. data/sig/knockapi/models/recipient.rbs +2 -2
  461. data/sig/knockapi/models/recipient_reference.rbs +2 -4
  462. data/sig/knockapi/models/recipient_request.rbs +3 -3
  463. data/sig/knockapi/models/recipients/channel_data.rbs +15 -17
  464. data/sig/knockapi/models/recipients/channel_data_request.rbs +9 -11
  465. data/sig/knockapi/models/recipients/discord_channel_data.rbs +9 -17
  466. data/sig/knockapi/models/recipients/inline_channel_data_request.rbs +14 -1
  467. data/sig/knockapi/models/recipients/inline_preference_set_request.rbs +1 -1
  468. data/sig/knockapi/models/recipients/ms_teams_channel_data.rbs +9 -17
  469. data/sig/knockapi/models/recipients/one_signal_channel_data.rbs +0 -2
  470. data/sig/knockapi/models/recipients/preference_set.rbs +25 -31
  471. data/sig/knockapi/models/recipients/preference_set_channel_type_setting.rbs +3 -7
  472. data/sig/knockapi/models/recipients/preference_set_channel_types.rbs +42 -48
  473. data/sig/knockapi/models/recipients/preference_set_request.rbs +25 -31
  474. data/sig/knockapi/models/recipients/push_channel_data.rbs +0 -2
  475. data/sig/knockapi/models/recipients/slack_channel_data.rbs +9 -17
  476. data/sig/knockapi/models/recipients/subscription.rbs +3 -5
  477. data/sig/knockapi/models/schedule.rbs +3 -5
  478. data/sig/knockapi/models/schedule_create_params.rbs +3 -5
  479. data/sig/knockapi/models/schedule_create_response.rbs +1 -1
  480. data/sig/knockapi/models/schedule_delete_params.rbs +0 -2
  481. data/sig/knockapi/models/schedule_delete_response.rbs +1 -1
  482. data/sig/knockapi/models/schedule_list_params.rbs +0 -2
  483. data/sig/knockapi/models/schedule_repeat_rule.rbs +8 -10
  484. data/sig/knockapi/models/schedule_update_params.rbs +5 -7
  485. data/sig/knockapi/models/schedule_update_response.rbs +1 -1
  486. data/sig/knockapi/models/schedules/bulk_create_params.rbs +8 -14
  487. data/sig/knockapi/models/tenant.rbs +9 -15
  488. data/sig/knockapi/models/tenant_delete_params.rbs +0 -2
  489. data/sig/knockapi/models/tenant_delete_response.rbs +5 -0
  490. data/sig/knockapi/models/tenant_get_params.rbs +0 -2
  491. data/sig/knockapi/models/tenant_list_params.rbs +0 -2
  492. data/sig/knockapi/models/tenant_request.rbs +13 -19
  493. data/sig/knockapi/models/tenant_set_params.rbs +13 -19
  494. data/sig/knockapi/models/tenants/bulk_delete_params.rbs +0 -2
  495. data/sig/knockapi/models/tenants/bulk_set_params.rbs +0 -2
  496. data/sig/knockapi/models/user.rbs +0 -2
  497. data/sig/knockapi/models/user_delete_params.rbs +0 -2
  498. data/sig/knockapi/models/user_delete_response.rbs +5 -0
  499. data/sig/knockapi/models/user_get_channel_data_params.rbs +0 -2
  500. data/sig/knockapi/models/user_get_params.rbs +0 -2
  501. data/sig/knockapi/models/user_get_preferences_params.rbs +0 -2
  502. data/sig/knockapi/models/user_list_messages_params.rbs +30 -24
  503. data/sig/knockapi/models/user_list_params.rbs +6 -8
  504. data/sig/knockapi/models/user_list_preferences_params.rbs +0 -2
  505. data/sig/knockapi/models/user_list_preferences_response.rbs +1 -1
  506. data/sig/knockapi/models/user_list_schedules_params.rbs +0 -2
  507. data/sig/knockapi/models/user_list_subscriptions_params.rbs +6 -8
  508. data/sig/knockapi/models/user_merge_params.rbs +0 -2
  509. data/sig/knockapi/models/user_set_channel_data_params.rbs +0 -2
  510. data/sig/knockapi/models/user_set_preferences_params.rbs +0 -2
  511. data/sig/knockapi/models/user_unset_channel_data_params.rbs +0 -2
  512. data/sig/knockapi/models/user_unset_channel_data_response.rbs +5 -0
  513. data/sig/knockapi/models/user_update_params.rbs +0 -2
  514. data/sig/knockapi/models/users/bulk_delete_params.rbs +0 -2
  515. data/sig/knockapi/models/users/bulk_identify_params.rbs +3 -5
  516. data/sig/knockapi/models/users/bulk_set_preferences_params.rbs +3 -5
  517. data/sig/knockapi/models/users/feed_get_settings_params.rbs +0 -2
  518. data/sig/knockapi/models/users/feed_get_settings_response.rbs +0 -4
  519. data/sig/knockapi/models/users/feed_list_items_params.rbs +0 -2
  520. data/sig/knockapi/models/users/feed_list_items_response.rbs +4 -14
  521. data/sig/knockapi/models/users/guide_get_channel_params.rbs +0 -2
  522. data/sig/knockapi/models/users/guide_get_channel_response.rbs +0 -6
  523. data/sig/knockapi/models/users/guide_mark_message_as_archived_params.rbs +0 -2
  524. data/sig/knockapi/models/users/guide_mark_message_as_archived_response.rbs +0 -2
  525. data/sig/knockapi/models/users/guide_mark_message_as_interacted_params.rbs +0 -2
  526. data/sig/knockapi/models/users/guide_mark_message_as_interacted_response.rbs +0 -2
  527. data/sig/knockapi/models/users/guide_mark_message_as_seen_params.rbs +0 -2
  528. data/sig/knockapi/models/users/guide_mark_message_as_seen_response.rbs +0 -2
  529. data/sig/knockapi/models/workflow_cancel_params.rbs +0 -2
  530. data/sig/knockapi/models/workflow_cancel_response.rbs +5 -0
  531. data/sig/knockapi/models/workflow_trigger_params.rbs +0 -2
  532. data/sig/knockapi/models/workflow_trigger_response.rbs +0 -2
  533. data/sig/knockapi/models.rbs +173 -0
  534. data/sig/knockapi/request_options.rbs +1 -1
  535. data/sig/knockapi/resources/audiences.rbs +2 -2
  536. data/sig/knockapi/resources/bulk_operations.rbs +1 -1
  537. data/sig/knockapi/resources/channels/bulk.rbs +1 -1
  538. data/sig/knockapi/resources/messages.rbs +15 -17
  539. data/sig/knockapi/resources/objects/bulk.rbs +5 -5
  540. data/sig/knockapi/resources/objects.rbs +19 -19
  541. data/sig/knockapi/resources/providers/ms_teams.rbs +2 -2
  542. data/sig/knockapi/resources/providers/slack.rbs +1 -1
  543. data/sig/knockapi/resources/schedules/bulk.rbs +2 -2
  544. data/sig/knockapi/resources/schedules.rbs +3 -3
  545. data/sig/knockapi/resources/tenants/bulk.rbs +2 -2
  546. data/sig/knockapi/resources/tenants.rbs +4 -4
  547. data/sig/knockapi/resources/users/bulk.rbs +5 -5
  548. data/sig/knockapi/resources/users.rbs +19 -19
  549. metadata +29 -8
  550. data/lib/knockapi/models/messages/activity_list_params.rb +0 -48
  551. data/lib/knockapi/resources/messages/activities.rb +0 -47
  552. data/rbi/knockapi/models/messages/activity_list_params.rbi +0 -75
  553. data/rbi/knockapi/resources/messages/activities.rbi +0 -38
  554. data/sig/knockapi/models/messages/activity_list_params.rbs +0 -45
  555. data/sig/knockapi/resources/messages/activities.rbs +0 -18
@@ -6,6 +6,7 @@ module Knockapi
6
6
  # @abstract
7
7
  class BaseModel
8
8
  extend Knockapi::Internal::Type::Converter
9
+ extend Knockapi::Internal::Util::SorbetRuntimeSupport
9
10
 
10
11
  class << self
11
12
  # @api private
@@ -13,11 +14,17 @@ module Knockapi
13
14
  # Assumes superclass fields are totally defined before fields are accessed /
14
15
  # defined on subclasses.
15
16
  #
16
- # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
17
- def known_fields
18
- @known_fields ||= (self < Knockapi::Internal::Type::BaseModel ? superclass.known_fields.dup : {})
17
+ # @param child [Class<Knockapi::Internal::Type::BaseModel>]
18
+ def inherited(child)
19
+ super
20
+ child.known_fields.replace(known_fields.dup)
19
21
  end
20
22
 
23
+ # @api private
24
+ #
25
+ # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
26
+ def known_fields = @known_fields ||= {}
27
+
21
28
  # @api private
22
29
  #
23
30
  # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
@@ -206,7 +213,7 @@ module Knockapi
206
213
  #
207
214
  # @option state [Integer] :branched
208
215
  #
209
- # @return [Knockapi::Internal::Type::BaseModel, Object]
216
+ # @return [self, Object]
210
217
  def coerce(value, state:)
211
218
  exactness = state.fetch(:exactness)
212
219
 
@@ -265,7 +272,7 @@ module Knockapi
265
272
 
266
273
  # @api private
267
274
  #
268
- # @param value [Knockapi::Internal::Type::BaseModel, Object]
275
+ # @param value [self, Object]
269
276
  #
270
277
  # @param state [Hash{Symbol=>Object}] .
271
278
  #
@@ -304,6 +311,46 @@ module Knockapi
304
311
 
305
312
  acc
306
313
  end
314
+
315
+ # @api private
316
+ #
317
+ # @return [Object]
318
+ def to_sorbet_type
319
+ self
320
+ end
321
+ end
322
+
323
+ class << self
324
+ # @api private
325
+ #
326
+ # @param model [Knockapi::Internal::Type::BaseModel]
327
+ # @param convert [Boolean]
328
+ #
329
+ # @return [Hash{Symbol=>Object}]
330
+ def recursively_to_h(model, convert:)
331
+ rec = ->(x) do
332
+ case x
333
+ in Knockapi::Internal::Type::BaseModel
334
+ if convert
335
+ fields = x.class.known_fields
336
+ x.to_h.to_h do |key, val|
337
+ [key, rec.call(fields.key?(key) ? x.public_send(key) : val)]
338
+ rescue Knockapi::Errors::ConversionError
339
+ [key, rec.call(val)]
340
+ end
341
+ else
342
+ rec.call(x.to_h)
343
+ end
344
+ in Hash
345
+ x.transform_values(&rec)
346
+ in Array
347
+ x.map(&rec)
348
+ else
349
+ x
350
+ end
351
+ end
352
+ rec.call(model)
353
+ end
307
354
  end
308
355
 
309
356
  # @api public
@@ -342,9 +389,25 @@ module Knockapi
342
389
 
343
390
  alias_method :to_hash, :to_h
344
391
 
392
+ # @api public
393
+ #
394
+ # In addition to the behaviour of `#to_h`, this method will recursively call
395
+ # `#to_h` on nested models.
396
+ #
397
+ # @return [Hash{Symbol=>Object}]
398
+ def deep_to_h = self.class.recursively_to_h(@data, convert: false)
399
+
345
400
  # @param keys [Array<Symbol>, nil]
346
401
  #
347
402
  # @return [Hash{Symbol=>Object}]
403
+ #
404
+ # @example
405
+ # # `condition` is a `Knockapi::Condition`
406
+ # condition => {
407
+ # argument: argument,
408
+ # operator: operator,
409
+ # variable: variable
410
+ # }
348
411
  def deconstruct_keys(keys)
349
412
  (keys || self.class.known_fields.keys)
350
413
  .filter_map do |k|
@@ -357,29 +420,6 @@ module Knockapi
357
420
  .to_h
358
421
  end
359
422
 
360
- class << self
361
- # @api private
362
- #
363
- # @param model [Knockapi::Internal::Type::BaseModel]
364
- #
365
- # @return [Hash{Symbol=>Object}]
366
- def walk(model)
367
- walk = ->(x) do
368
- case x
369
- in Knockapi::Internal::Type::BaseModel
370
- walk.call(x.to_h)
371
- in Hash
372
- x.transform_values(&walk)
373
- in Array
374
- x.map(&walk)
375
- else
376
- x
377
- end
378
- end
379
- walk.call(model)
380
- end
381
- end
382
-
383
423
  # @api public
384
424
  #
385
425
  # @param a [Object]
@@ -397,15 +437,7 @@ module Knockapi
397
437
  # Create a new instance of a model.
398
438
  #
399
439
  # @param data [Hash{Symbol=>Object}, self]
400
- def initialize(data = {})
401
- case Knockapi::Internal::Util.coerce_hash(data)
402
- in Hash => coerced
403
- @data = coerced
404
- else
405
- message = "Expected a #{Hash} or #{Knockapi::Internal::Type::BaseModel}, got #{data.inspect}"
406
- raise ArgumentError.new(message)
407
- end
408
- end
440
+ def initialize(data = {}) = (@data = Knockapi::Internal::Util.coerce_hash!(data).to_h)
409
441
 
410
442
  class << self
411
443
  # @api private
@@ -433,12 +465,19 @@ module Knockapi
433
465
  # @api public
434
466
  #
435
467
  # @return [String]
436
- def to_s = self.class.walk(@data).to_s
468
+ def to_s = deep_to_h.to_s
437
469
 
438
470
  # @api private
439
471
  #
440
472
  # @return [String]
441
- def inspect = "#<#{self.class}:0x#{object_id.to_s(16)} #{self}>"
473
+ def inspect
474
+ converted = self.class.recursively_to_h(self, convert: true)
475
+ "#<#{self.class}:0x#{object_id.to_s(16)} #{converted}>"
476
+ end
477
+
478
+ define_sorbet_constant!(:KnownField) do
479
+ T.type_alias { {mode: T.nilable(Symbol), required: T::Boolean, nilable: T::Boolean} }
480
+ end
442
481
  end
443
482
  end
444
483
  end
@@ -10,6 +10,7 @@ module Knockapi
10
10
  # Ruby has no Boolean class; this is something for models to refer to.
11
11
  class Boolean
12
12
  extend Knockapi::Internal::Type::Converter
13
+ extend Knockapi::Internal::Util::SorbetRuntimeSupport
13
14
 
14
15
  private_class_method :new
15
16
 
@@ -56,6 +57,13 @@ module Knockapi
56
57
  # @option state [Boolean] :can_retry
57
58
  #
58
59
  # @return [Boolean, Object]
60
+
61
+ # @api private
62
+ #
63
+ # @return [Object]
64
+ def to_sorbet_type
65
+ T::Boolean
66
+ end
59
67
  end
60
68
  end
61
69
  end
@@ -5,6 +5,8 @@ module Knockapi
5
5
  module Type
6
6
  # @api private
7
7
  module Converter
8
+ extend Knockapi::Internal::Util::SorbetRuntimeSupport
9
+
8
10
  # rubocop:disable Lint/UnusedMethodArgument
9
11
 
10
12
  # @api private
@@ -268,6 +270,22 @@ module Knockapi
268
270
  end
269
271
  end
270
272
  end
273
+
274
+ define_sorbet_constant!(:Input) do
275
+ T.type_alias { T.any(Knockapi::Internal::Type::Converter, T::Class[T.anything]) }
276
+ end
277
+ define_sorbet_constant!(:CoerceState) do
278
+ T.type_alias do
279
+ {
280
+ strictness: T.any(T::Boolean, Symbol),
281
+ exactness: {yes: Integer, no: Integer, maybe: Integer},
282
+ branched: Integer
283
+ }
284
+ end
285
+ end
286
+ define_sorbet_constant!(:DumpState) do
287
+ T.type_alias { {can_retry: T::Boolean} }
288
+ end
271
289
  end
272
290
  end
273
291
  end
@@ -17,6 +17,7 @@ module Knockapi
17
17
  # values safely.
18
18
  module Enum
19
19
  include Knockapi::Internal::Type::Converter
20
+ include Knockapi::Internal::Util::SorbetRuntimeSupport
20
21
 
21
22
  # All of the valid Symbol values for this enum.
22
23
  #
@@ -86,6 +87,18 @@ module Knockapi
86
87
  #
87
88
  # @return [Symbol, Object]
88
89
 
90
+ # @api private
91
+ #
92
+ # @return [Object]
93
+ def to_sorbet_type
94
+ case values
95
+ in []
96
+ T.noreturn
97
+ in [value, *_]
98
+ T.all(Knockapi::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(value), self)
99
+ end
100
+ end
101
+
89
102
  # @api private
90
103
  #
91
104
  # @param depth [Integer]
@@ -89,6 +89,13 @@ module Knockapi
89
89
 
90
90
  value
91
91
  end
92
+
93
+ # @api private
94
+ #
95
+ # @return [Object]
96
+ def to_sorbet_type
97
+ T.any(Pathname, StringIO, IO, String, Knockapi::FilePart)
98
+ end
92
99
  end
93
100
  end
94
101
  end
@@ -12,6 +12,7 @@ module Knockapi
12
12
  # Hash of items of a given type.
13
13
  class HashOf
14
14
  include Knockapi::Internal::Type::Converter
15
+ include Knockapi::Internal::Util::SorbetRuntimeSupport
15
16
 
16
17
  private_class_method :new
17
18
 
@@ -29,7 +30,7 @@ module Knockapi
29
30
  #
30
31
  # @option spec [Boolean] :"nil?"
31
32
  #
32
- # @return [Knockapi::Internal::Type::HashOf]
33
+ # @return [self]
33
34
  def self.[](...) = new(...)
34
35
 
35
36
  # @api public
@@ -130,6 +131,13 @@ module Knockapi
130
131
  end
131
132
  end
132
133
 
134
+ # @api private
135
+ #
136
+ # @return [Object]
137
+ def to_sorbet_type
138
+ T::Hash[Knockapi::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(item_type)]
139
+ end
140
+
133
141
  # @api private
134
142
  #
135
143
  # @return [generic<Elem>]
@@ -5,10 +5,10 @@ module Knockapi
5
5
  module Type
6
6
  # @api private
7
7
  module RequestParameters
8
- # @!parse
9
- # # Options to specify HTTP behaviour for this request.
10
- # # @return [Knockapi::RequestOptions, Hash{Symbol=>Object}]
11
- # attr_accessor :request_options
8
+ # @!attribute request_options
9
+ # Options to specify HTTP behaviour for this request.
10
+ #
11
+ # @return [Knockapi::RequestOptions, Hash{Symbol=>Object}]
12
12
 
13
13
  # @param mod [Module]
14
14
  def self.included(mod)
@@ -28,14 +28,8 @@ module Knockapi
28
28
  state = {can_retry: true}
29
29
  case (dumped = dump(params, state: state))
30
30
  in Hash
31
- options = Knockapi::Internal::Util.coerce_hash(dumped[:request_options])
32
- request_options =
33
- case [options, state.fetch(:can_retry)]
34
- in [Hash | nil, false]
35
- {**options.to_h, max_retries: 0}
36
- else
37
- options
38
- end
31
+ options = Knockapi::Internal::Util.coerce_hash!(dumped[:request_options]).to_h
32
+ request_options = state.fetch(:can_retry) ? options : {**options, max_retries: 0}
39
33
  [dumped.except(:request_options), request_options]
40
34
  else
41
35
  [dumped, nil]
@@ -6,17 +6,18 @@ module Knockapi
6
6
  # @api private
7
7
  #
8
8
  # @example
9
- # # `recipient` is a `Knockapi::Models::Recipient`
9
+ # # `recipient` is a `Knockapi::Recipient`
10
10
  # case recipient
11
- # when Knockapi::Models::User
11
+ # when Knockapi::User
12
12
  # puts(recipient.id)
13
- # when Knockapi::Models::Object
13
+ # when Knockapi::Object
14
14
  # puts(recipient._typename)
15
15
  # else
16
16
  # puts(recipient)
17
17
  # end
18
18
  module Union
19
19
  include Knockapi::Internal::Type::Converter
20
+ include Knockapi::Internal::Util::SorbetRuntimeSupport
20
21
 
21
22
  # @api private
22
23
  #
@@ -201,6 +202,18 @@ module Knockapi
201
202
  super
202
203
  end
203
204
 
205
+ # @api private
206
+ #
207
+ # @return [Object]
208
+ def to_sorbet_type
209
+ case (v = variants)
210
+ in []
211
+ T.noreturn
212
+ else
213
+ T.any(*v.map { Knockapi::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(_1) })
214
+ end
215
+ end
216
+
204
217
  # rubocop:enable Style/CaseEquality
205
218
  # rubocop:enable Style/HashEachMethods
206
219
 
@@ -10,6 +10,7 @@ module Knockapi
10
10
  # When we don't know what to expect for the value.
11
11
  class Unknown
12
12
  extend Knockapi::Internal::Type::Converter
13
+ extend Knockapi::Internal::Util::SorbetRuntimeSupport
13
14
 
14
15
  # rubocop:disable Lint/UnusedMethodArgument
15
16
 
@@ -58,6 +59,13 @@ module Knockapi
58
59
  # @option state [Boolean] :can_retry
59
60
  #
60
61
  # @return [Object]
62
+
63
+ # @api private
64
+ #
65
+ # @return [Object]
66
+ def to_sorbet_type
67
+ T.anything
68
+ end
61
69
  end
62
70
 
63
71
  # rubocop:enable Lint/UnusedMethodArgument
@@ -9,6 +9,23 @@ module Knockapi
9
9
  # @return [Float]
10
10
  def self.monotonic_secs = Process.clock_gettime(Process::CLOCK_MONOTONIC)
11
11
 
12
+ # @api private
13
+ #
14
+ # @param ns [Module, Class]
15
+ #
16
+ # @return [Enumerable<Module, Class>]
17
+ def self.walk_namespaces(ns)
18
+ ns.constants(false).lazy.flat_map do
19
+ case (c = ns.const_get(_1, false))
20
+ in Module | Class
21
+ walk_namespaces(c)
22
+ else
23
+ []
24
+ end
25
+ end
26
+ .chain([ns])
27
+ end
28
+
12
29
  class << self
13
30
  # @api private
14
31
  #
@@ -128,6 +145,22 @@ module Knockapi
128
145
  input.respond_to?(:to_h) ? input.to_h : input
129
146
  end
130
147
  end
148
+
149
+ # @api private
150
+ #
151
+ # @param input [Object]
152
+ #
153
+ # @raise [ArgumentError]
154
+ # @return [Hash{Object=>Object}, nil]
155
+ def coerce_hash!(input)
156
+ case coerce_hash(input)
157
+ in Hash | nil => coerced
158
+ coerced
159
+ else
160
+ message = "Expected a #{Hash} or #{Knockapi::Internal::Type::BaseModel}, got #{data.inspect}"
161
+ raise ArgumentError.new(message)
162
+ end
163
+ end
131
164
  end
132
165
 
133
166
  class << self
@@ -454,7 +487,7 @@ module Knockapi
454
487
  # @type [Regexp]
455
488
  JSON_CONTENT = %r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}
456
489
  # @type [Regexp]
457
- JSONL_CONTENT = %r{^application/(?:x-)?jsonl}
490
+ JSONL_CONTENT = %r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}
458
491
 
459
492
  class << self
460
493
  # @api private
@@ -519,7 +552,7 @@ module Knockapi
519
552
  filename = ERB::Util.url_encode(val.filename)
520
553
  y << "; filename=\"#{filename}\""
521
554
  in Pathname | IO
522
- filename = ERB::Util.url_encode(File.basename(val.to_path))
555
+ filename = ERB::Util.url_encode(::File.basename(val.to_path))
523
556
  y << "; filename=\"#{filename}\""
524
557
  else
525
558
  end
@@ -785,6 +818,90 @@ module Knockapi
785
818
  end
786
819
  end
787
820
  end
821
+
822
+ # @api private
823
+ module SorbetRuntimeSupport
824
+ class MissingSorbetRuntimeError < ::RuntimeError
825
+ end
826
+
827
+ # @api private
828
+ #
829
+ # @return [Hash{Symbol=>Object}]
830
+ private def sorbet_runtime_constants = @sorbet_runtime_constants ||= {}
831
+
832
+ # @api private
833
+ #
834
+ # @param name [Symbol]
835
+ def const_missing(name)
836
+ super unless sorbet_runtime_constants.key?(name)
837
+
838
+ unless Object.const_defined?(:T)
839
+ message = "Trying to access a Sorbet constant #{name.inspect} without `sorbet-runtime`."
840
+ raise MissingSorbetRuntimeError.new(message)
841
+ end
842
+
843
+ sorbet_runtime_constants.fetch(name).call
844
+ end
845
+
846
+ # @api private
847
+ #
848
+ # @param name [Symbol]
849
+ #
850
+ # @return [Boolean]
851
+ def sorbet_constant_defined?(name) = sorbet_runtime_constants.key?(name)
852
+
853
+ # @api private
854
+ #
855
+ # @param name [Symbol]
856
+ # @param blk [Proc]
857
+ def define_sorbet_constant!(name, &blk) = sorbet_runtime_constants.store(name, blk)
858
+
859
+ # @api private
860
+ #
861
+ # @return [Object]
862
+ def to_sorbet_type = raise NotImplementedError
863
+
864
+ class << self
865
+ # @api private
866
+ #
867
+ # @param type [Knockapi::Internal::Util::SorbetRuntimeSupport, Object]
868
+ #
869
+ # @return [Object]
870
+ def to_sorbet_type(type)
871
+ case type
872
+ in Knockapi::Internal::Util::SorbetRuntimeSupport
873
+ type.to_sorbet_type
874
+ else
875
+ type
876
+ end
877
+ end
878
+ end
879
+ end
880
+
881
+ extend Knockapi::Internal::Util::SorbetRuntimeSupport
882
+
883
+ define_sorbet_constant!(:ParsedUri) do
884
+ T.type_alias do
885
+ {
886
+ scheme: T.nilable(String),
887
+ host: T.nilable(String),
888
+ port: T.nilable(Integer),
889
+ path: T.nilable(String),
890
+ query: T::Hash[String, T::Array[String]]
891
+ }
892
+ end
893
+ end
894
+
895
+ define_sorbet_constant!(:ServerSentEvent) do
896
+ T.type_alias do
897
+ {
898
+ event: T.nilable(String),
899
+ data: T.nilable(String),
900
+ id: T.nilable(String),
901
+ retry: T.nilable(Integer)
902
+ }
903
+ end
904
+ end
788
905
  end
789
906
  end
790
907
  end
@@ -2,10 +2,19 @@
2
2
 
3
3
  module Knockapi
4
4
  module Internal
5
+ extend Knockapi::Internal::Util::SorbetRuntimeSupport
6
+
5
7
  OMIT =
6
8
  Object.new.tap do
7
9
  _1.define_singleton_method(:inspect) { "#<#{Knockapi::Internal}::OMIT>" }
8
10
  end
9
11
  .freeze
12
+
13
+ define_sorbet_constant!(:AnyHash) do
14
+ T.type_alias { T::Hash[Symbol, T.anything] }
15
+ end
16
+ define_sorbet_constant!(:FileInput) do
17
+ T.type_alias { T.any(Pathname, StringIO, IO, String, Knockapi::FilePart) }
18
+ end
10
19
  end
11
20
  end
@@ -19,8 +19,8 @@ module Knockapi
19
19
  # @!attribute actor
20
20
  # A recipient of a notification, which is either a user or an object.
21
21
  #
22
- # @return [Knockapi::Models::User, Knockapi::Models::Object, nil]
23
- optional :actor, union: -> { Knockapi::Models::Recipient }, nil?: true
22
+ # @return [Knockapi::User, Knockapi::Object, nil]
23
+ optional :actor, union: -> { Knockapi::Recipient }, nil?: true
24
24
 
25
25
  # @!attribute data
26
26
  # The workflow trigger `data` payload associated with the activity.
@@ -37,8 +37,8 @@ module Knockapi
37
37
  # @!attribute recipient
38
38
  # A recipient of a notification, which is either a user or an object.
39
39
  #
40
- # @return [Knockapi::Models::User, Knockapi::Models::Object, nil]
41
- optional :recipient, union: -> { Knockapi::Models::Recipient }
40
+ # @return [Knockapi::User, Knockapi::Object, nil]
41
+ optional :recipient, union: -> { Knockapi::Recipient }
42
42
 
43
43
  # @!attribute updated_at
44
44
  # Timestamp when the activity was last updated.
@@ -56,13 +56,13 @@ module Knockapi
56
56
  #
57
57
  # @param _typename [String] The typename of the schema.
58
58
  #
59
- # @param actor [Knockapi::Models::User, Knockapi::Models::Object, nil] A recipient of a notification, which is either a user or an object.
59
+ # @param actor [Knockapi::User, Knockapi::Object, nil] A recipient of a notification, which is either a user or an object.
60
60
  #
61
61
  # @param data [Hash{Symbol=>Object}, nil] The workflow trigger `data` payload associated with the activity.
62
62
  #
63
63
  # @param inserted_at [Time] Timestamp when the activity was created.
64
64
  #
65
- # @param recipient [Knockapi::Models::User, Knockapi::Models::Object] A recipient of a notification, which is either a user or an object.
65
+ # @param recipient [Knockapi::User, Knockapi::Object] A recipient of a notification, which is either a user or an object.
66
66
  #
67
67
  # @param updated_at [Time] Timestamp when the activity was last updated.
68
68
  end
@@ -10,20 +10,20 @@ module Knockapi
10
10
  # @!attribute members
11
11
  # A list of audience members to add.
12
12
  #
13
- # @return [Array<Knockapi::Models::AudienceAddMembersParams::Member>]
14
- required :members,
15
- -> { Knockapi::Internal::Type::ArrayOf[Knockapi::Models::AudienceAddMembersParams::Member] }
13
+ # @return [Array<Knockapi::AudienceAddMembersParams::Member>]
14
+ required :members, -> { Knockapi::Internal::Type::ArrayOf[Knockapi::AudienceAddMembersParams::Member] }
16
15
 
17
16
  # @!method initialize(members:, request_options: {})
18
- # @param members [Array<Knockapi::Models::AudienceAddMembersParams::Member>] A list of audience members to add.
17
+ # @param members [Array<Knockapi::AudienceAddMembersParams::Member>] A list of audience members to add.
19
18
  #
20
19
  # @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}]
21
20
 
22
21
  class Member < Knockapi::Internal::Type::BaseModel
23
22
  # @!attribute user
23
+ # An object containing the user's ID.
24
24
  #
25
- # @return [Knockapi::Models::AudienceAddMembersParams::Member::User]
26
- required :user, -> { Knockapi::Models::AudienceAddMembersParams::Member::User }
25
+ # @return [Knockapi::AudienceAddMembersParams::Member::User]
26
+ required :user, -> { Knockapi::AudienceAddMembersParams::Member::User }
27
27
 
28
28
  # @!attribute tenant
29
29
  # The unique identifier for the tenant.
@@ -34,11 +34,11 @@ module Knockapi
34
34
  # @!method initialize(user:, tenant: nil)
35
35
  # An audience member.
36
36
  #
37
- # @param user [Knockapi::Models::AudienceAddMembersParams::Member::User]
37
+ # @param user [Knockapi::AudienceAddMembersParams::Member::User] An object containing the user's ID.
38
38
  #
39
39
  # @param tenant [String, nil] The unique identifier for the tenant.
40
40
 
41
- # @see Knockapi::Models::AudienceAddMembersParams::Member#user
41
+ # @see Knockapi::AudienceAddMembersParams::Member#user
42
42
  class User < Knockapi::Internal::Type::BaseModel
43
43
  # @!attribute id
44
44
  # The ID for the user that you set when identifying them in Knock.
@@ -47,6 +47,8 @@ module Knockapi
47
47
  optional :id, String
48
48
 
49
49
  # @!method initialize(id: nil)
50
+ # An object containing the user's ID.
51
+ #
50
52
  # @param id [String] The ID for the user that you set when identifying them in Knock.
51
53
  end
52
54
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Knockapi
4
+ module Models
5
+ AudienceAddMembersResponse = String
6
+ end
7
+ end