knockapi 1.0.0 → 1.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 (549) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -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 +1 -1
  14. data/lib/knockapi/internal/type/base_model.rb +71 -39
  15. data/lib/knockapi/internal/type/converter.rb +18 -0
  16. data/lib/knockapi/internal/type/enum.rb +1 -0
  17. data/lib/knockapi/internal/type/hash_of.rb +1 -1
  18. data/lib/knockapi/internal/type/request_parameters.rb +6 -12
  19. data/lib/knockapi/internal/type/union.rb +4 -3
  20. data/lib/knockapi/internal/util.rb +74 -2
  21. data/lib/knockapi/internal.rb +6 -0
  22. data/lib/knockapi/models/activity.rb +6 -6
  23. data/lib/knockapi/models/audience_add_members_params.rb +10 -8
  24. data/lib/knockapi/models/audience_add_members_response.rb +7 -0
  25. data/lib/knockapi/models/audience_list_members_response.rb +6 -6
  26. data/lib/knockapi/models/audience_member.rb +5 -6
  27. data/lib/knockapi/models/audience_remove_members_params.rb +12 -7
  28. data/lib/knockapi/models/audience_remove_members_response.rb +7 -0
  29. data/lib/knockapi/models/bulk_operation.rb +7 -8
  30. data/lib/knockapi/models/channels/bulk_update_message_status_params.rb +11 -10
  31. data/lib/knockapi/models/condition.rb +4 -4
  32. data/lib/knockapi/models/identify_user_request.rb +16 -17
  33. data/lib/knockapi/models/inline_identify_user_request.rb +64 -7
  34. data/lib/knockapi/models/inline_object_request.rb +8 -6
  35. data/lib/knockapi/models/inline_tenant_request.rb +6 -2
  36. data/lib/knockapi/models/message.rb +19 -23
  37. data/lib/knockapi/models/message_delivery_log.rb +26 -18
  38. data/lib/knockapi/models/message_event.rb +9 -10
  39. data/lib/knockapi/models/message_get_content_response.rb +21 -0
  40. data/lib/knockapi/models/message_list_params.rb +9 -13
  41. data/lib/knockapi/models/messages/batch_archive_response.rb +1 -1
  42. data/lib/knockapi/models/messages/batch_get_content_response.rb +21 -0
  43. data/lib/knockapi/models/messages/batch_mark_as_interacted_response.rb +1 -1
  44. data/lib/knockapi/models/messages/batch_mark_as_read_response.rb +1 -1
  45. data/lib/knockapi/models/messages/batch_mark_as_seen_response.rb +1 -1
  46. data/lib/knockapi/models/messages/batch_mark_as_unread_response.rb +1 -1
  47. data/lib/knockapi/models/messages/batch_mark_as_unseen_response.rb +1 -1
  48. data/lib/knockapi/models/messages/batch_unarchive_response.rb +1 -1
  49. data/lib/knockapi/models/object.rb +9 -1
  50. data/lib/knockapi/models/object_add_subscriptions_params.rb +3 -4
  51. data/lib/knockapi/models/object_add_subscriptions_response.rb +1 -1
  52. data/lib/knockapi/models/object_delete_response.rb +7 -0
  53. data/lib/knockapi/models/object_delete_subscriptions_params.rb +3 -5
  54. data/lib/knockapi/models/object_delete_subscriptions_response.rb +1 -1
  55. data/lib/knockapi/models/object_list_messages_params.rb +11 -12
  56. data/lib/knockapi/models/object_list_params.rb +3 -4
  57. data/lib/knockapi/models/object_list_preferences_response.rb +1 -1
  58. data/lib/knockapi/models/object_list_subscriptions_params.rb +14 -14
  59. data/lib/knockapi/models/object_set_params.rb +15 -13
  60. data/lib/knockapi/models/object_unset_channel_data_response.rb +7 -0
  61. data/lib/knockapi/models/objects/bulk_add_subscriptions_params.rb +9 -9
  62. data/lib/knockapi/models/objects/bulk_set_params.rb +3 -3
  63. data/lib/knockapi/models/providers/ms_team_list_channels_params.rb +4 -7
  64. data/lib/knockapi/models/providers/ms_team_list_teams_params.rb +4 -9
  65. data/lib/knockapi/models/providers/slack_list_channels_params.rb +4 -7
  66. data/lib/knockapi/models/recipient.rb +7 -3
  67. data/lib/knockapi/models/recipient_reference.rb +6 -2
  68. data/lib/knockapi/models/recipient_request.rb +7 -3
  69. data/lib/knockapi/models/recipients/channel_data.rb +26 -14
  70. data/lib/knockapi/models/recipients/channel_data_request.rb +22 -10
  71. data/lib/knockapi/models/recipients/discord_channel_data.rb +25 -10
  72. data/lib/knockapi/models/recipients/inline_channel_data_request.rb +36 -1
  73. data/lib/knockapi/models/recipients/inline_preference_set_request.rb +1 -1
  74. data/lib/knockapi/models/recipients/ms_teams_channel_data.rb +25 -10
  75. data/lib/knockapi/models/recipients/preference_set.rb +52 -28
  76. data/lib/knockapi/models/recipients/preference_set_channel_type_setting.rb +3 -3
  77. data/lib/knockapi/models/recipients/preference_set_channel_types.rb +60 -36
  78. data/lib/knockapi/models/recipients/preference_set_request.rb +52 -28
  79. data/lib/knockapi/models/recipients/slack_channel_data.rb +21 -10
  80. data/lib/knockapi/models/recipients/subscription.rb +6 -6
  81. data/lib/knockapi/models/schedule.rb +11 -12
  82. data/lib/knockapi/models/schedule_create_params.rb +10 -15
  83. data/lib/knockapi/models/schedule_create_response.rb +1 -1
  84. data/lib/knockapi/models/schedule_delete_response.rb +1 -1
  85. data/lib/knockapi/models/schedule_repeat_rule.rb +7 -7
  86. data/lib/knockapi/models/schedule_update_params.rb +9 -10
  87. data/lib/knockapi/models/schedule_update_response.rb +1 -1
  88. data/lib/knockapi/models/schedules/bulk_create_params.rb +16 -18
  89. data/lib/knockapi/models/tenant.rb +13 -16
  90. data/lib/knockapi/models/tenant_delete_response.rb +7 -0
  91. data/lib/knockapi/models/tenant_request.rb +20 -20
  92. data/lib/knockapi/models/tenant_set_params.rb +19 -19
  93. data/lib/knockapi/models/tenants/bulk_set_params.rb +3 -3
  94. data/lib/knockapi/models/user.rb +9 -11
  95. data/lib/knockapi/models/user_delete_response.rb +7 -0
  96. data/lib/knockapi/models/user_list_messages_params.rb +13 -12
  97. data/lib/knockapi/models/user_list_params.rb +3 -4
  98. data/lib/knockapi/models/user_list_preferences_response.rb +1 -1
  99. data/lib/knockapi/models/user_list_subscriptions_params.rb +3 -3
  100. data/lib/knockapi/models/user_unset_channel_data_response.rb +7 -0
  101. data/lib/knockapi/models/users/bulk_identify_params.rb +3 -3
  102. data/lib/knockapi/models/users/bulk_set_preferences_params.rb +3 -3
  103. data/lib/knockapi/models/users/feed_list_items_params.rb +6 -6
  104. data/lib/knockapi/models/users/feed_list_items_response.rb +15 -6
  105. data/lib/knockapi/models/workflow_cancel_params.rb +3 -5
  106. data/lib/knockapi/models/workflow_cancel_response.rb +7 -0
  107. data/lib/knockapi/models/workflow_trigger_params.rb +9 -12
  108. data/lib/knockapi/models/workflow_trigger_response.rb +0 -1
  109. data/lib/knockapi/models.rb +202 -0
  110. data/lib/knockapi/request_options.rb +4 -0
  111. data/lib/knockapi/resources/audiences.rb +4 -4
  112. data/lib/knockapi/resources/bulk_operations.rb +2 -2
  113. data/lib/knockapi/resources/channels/bulk.rb +7 -8
  114. data/lib/knockapi/resources/integrations/census.rb +1 -1
  115. data/lib/knockapi/resources/integrations/hightouch.rb +1 -1
  116. data/lib/knockapi/resources/messages/batch.rb +22 -22
  117. data/lib/knockapi/resources/messages.rb +32 -39
  118. data/lib/knockapi/resources/objects/bulk.rb +11 -11
  119. data/lib/knockapi/resources/objects.rb +52 -62
  120. data/lib/knockapi/resources/providers/ms_teams.rb +6 -6
  121. data/lib/knockapi/resources/providers/slack.rb +4 -4
  122. data/lib/knockapi/resources/schedules/bulk.rb +4 -4
  123. data/lib/knockapi/resources/schedules.rb +18 -23
  124. data/lib/knockapi/resources/tenants/bulk.rb +7 -7
  125. data/lib/knockapi/resources/tenants.rb +11 -11
  126. data/lib/knockapi/resources/users/bulk.rb +11 -11
  127. data/lib/knockapi/resources/users/feeds.rb +3 -3
  128. data/lib/knockapi/resources/users/guides.rb +4 -4
  129. data/lib/knockapi/resources/users.rb +46 -54
  130. data/lib/knockapi/resources/workflows.rb +6 -11
  131. data/lib/knockapi/version.rb +1 -1
  132. data/lib/knockapi.rb +11 -2
  133. data/rbi/knockapi/client.rbi +5 -4
  134. data/rbi/knockapi/errors.rbi +35 -16
  135. data/rbi/knockapi/file_part.rbi +9 -6
  136. data/rbi/knockapi/internal/entries_cursor.rbi +9 -4
  137. data/rbi/knockapi/internal/items_cursor.rbi +9 -4
  138. data/rbi/knockapi/internal/ms_teams_pagination.rbi +2 -1
  139. data/rbi/knockapi/internal/slack_channels_cursor.rbi +2 -1
  140. data/rbi/knockapi/internal/transport/base_client.rbi +158 -78
  141. data/rbi/knockapi/internal/transport/pooled_net_requester.rbi +32 -13
  142. data/rbi/knockapi/internal/type/array_of.rbi +34 -24
  143. data/rbi/knockapi/internal/type/base_model.rbi +151 -73
  144. data/rbi/knockapi/internal/type/base_page.rbi +12 -8
  145. data/rbi/knockapi/internal/type/boolean.rbi +16 -14
  146. data/rbi/knockapi/internal/type/converter.rbi +70 -28
  147. data/rbi/knockapi/internal/type/enum.rbi +28 -15
  148. data/rbi/knockapi/internal/type/file_input.rbi +8 -4
  149. data/rbi/knockapi/internal/type/hash_of.rbi +34 -24
  150. data/rbi/knockapi/internal/type/request_parameters.rbi +12 -4
  151. data/rbi/knockapi/internal/type/union.rbi +55 -19
  152. data/rbi/knockapi/internal/type/unknown.rbi +16 -6
  153. data/rbi/knockapi/internal/util.rbi +239 -87
  154. data/rbi/knockapi/internal.rbi +2 -0
  155. data/rbi/knockapi/models/activity.rbi +28 -22
  156. data/rbi/knockapi/models/audience_add_members_params.rbi +62 -27
  157. data/rbi/knockapi/models/audience_add_members_response.rbi +7 -0
  158. data/rbi/knockapi/models/audience_list_members_params.rbi +16 -5
  159. data/rbi/knockapi/models/audience_list_members_response.rbi +25 -11
  160. data/rbi/knockapi/models/audience_member.rbi +23 -11
  161. data/rbi/knockapi/models/audience_remove_members_params.rbi +65 -28
  162. data/rbi/knockapi/models/audience_remove_members_response.rbi +7 -0
  163. data/rbi/knockapi/models/bulk_operation.rbi +70 -42
  164. data/rbi/knockapi/models/bulk_operation_get_params.rbi +13 -5
  165. data/rbi/knockapi/models/channels/bulk_update_message_status_params.rbi +224 -79
  166. data/rbi/knockapi/models/condition.rbi +78 -31
  167. data/rbi/knockapi/models/identify_user_request.rbi +90 -36
  168. data/rbi/knockapi/models/inline_identify_user_request.rbi +135 -22
  169. data/rbi/knockapi/models/inline_object_request.rbi +76 -22
  170. data/rbi/knockapi/models/inline_tenant_request.rbi +7 -2
  171. data/rbi/knockapi/models/integrations/census_custom_destination_params.rbi +24 -15
  172. data/rbi/knockapi/models/integrations/census_custom_destination_response.rbi +21 -4
  173. data/rbi/knockapi/models/integrations/hightouch_embedded_destination_params.rbi +24 -15
  174. data/rbi/knockapi/models/integrations/hightouch_embedded_destination_response.rbi +21 -4
  175. data/rbi/knockapi/models/message.rbi +156 -72
  176. data/rbi/knockapi/models/message_archive_params.rbi +13 -5
  177. data/rbi/knockapi/models/message_delivery_log.rbi +153 -66
  178. data/rbi/knockapi/models/message_event.rbi +86 -37
  179. data/rbi/knockapi/models/message_get_content_params.rbi +13 -5
  180. data/rbi/knockapi/models/message_get_content_response.rbi +364 -203
  181. data/rbi/knockapi/models/message_get_params.rbi +13 -5
  182. data/rbi/knockapi/models/message_list_activities_params.rbi +24 -15
  183. data/rbi/knockapi/models/message_list_delivery_logs_params.rbi +23 -12
  184. data/rbi/knockapi/models/message_list_events_params.rbi +20 -12
  185. data/rbi/knockapi/models/message_list_params.rbi +147 -58
  186. data/rbi/knockapi/models/message_mark_as_interacted_params.rbi +21 -6
  187. data/rbi/knockapi/models/message_mark_as_read_params.rbi +13 -5
  188. data/rbi/knockapi/models/message_mark_as_seen_params.rbi +13 -5
  189. data/rbi/knockapi/models/message_mark_as_unread_params.rbi +16 -5
  190. data/rbi/knockapi/models/message_mark_as_unseen_params.rbi +16 -5
  191. data/rbi/knockapi/models/message_unarchive_params.rbi +13 -5
  192. data/rbi/knockapi/models/messages/batch_archive_params.rbi +23 -6
  193. data/rbi/knockapi/models/messages/batch_archive_response.rbi +4 -1
  194. data/rbi/knockapi/models/messages/batch_get_content_params.rbi +23 -6
  195. data/rbi/knockapi/models/messages/batch_get_content_response.rbi +367 -206
  196. data/rbi/knockapi/models/messages/batch_mark_as_interacted_params.rbi +22 -13
  197. data/rbi/knockapi/models/messages/batch_mark_as_interacted_response.rbi +4 -1
  198. data/rbi/knockapi/models/messages/batch_mark_as_read_params.rbi +23 -6
  199. data/rbi/knockapi/models/messages/batch_mark_as_read_response.rbi +4 -1
  200. data/rbi/knockapi/models/messages/batch_mark_as_seen_params.rbi +23 -6
  201. data/rbi/knockapi/models/messages/batch_mark_as_seen_response.rbi +4 -1
  202. data/rbi/knockapi/models/messages/batch_mark_as_unread_params.rbi +23 -6
  203. data/rbi/knockapi/models/messages/batch_mark_as_unread_response.rbi +4 -1
  204. data/rbi/knockapi/models/messages/batch_mark_as_unseen_params.rbi +23 -6
  205. data/rbi/knockapi/models/messages/batch_mark_as_unseen_response.rbi +4 -1
  206. data/rbi/knockapi/models/messages/batch_unarchive_params.rbi +23 -6
  207. data/rbi/knockapi/models/messages/batch_unarchive_response.rbi +4 -1
  208. data/rbi/knockapi/models/object.rbi +31 -10
  209. data/rbi/knockapi/models/object_add_subscriptions_params.rbi +44 -22
  210. data/rbi/knockapi/models/object_add_subscriptions_response.rbi +1 -1
  211. data/rbi/knockapi/models/object_delete_params.rbi +13 -5
  212. data/rbi/knockapi/models/object_delete_response.rbi +7 -0
  213. data/rbi/knockapi/models/object_delete_subscriptions_params.rbi +36 -14
  214. data/rbi/knockapi/models/object_delete_subscriptions_response.rbi +1 -1
  215. data/rbi/knockapi/models/object_get_channel_data_params.rbi +16 -5
  216. data/rbi/knockapi/models/object_get_params.rbi +13 -5
  217. data/rbi/knockapi/models/object_get_preferences_params.rbi +16 -5
  218. data/rbi/knockapi/models/object_list_messages_params.rbi +169 -60
  219. data/rbi/knockapi/models/object_list_params.rbi +43 -22
  220. data/rbi/knockapi/models/object_list_preferences_params.rbi +16 -5
  221. data/rbi/knockapi/models/object_list_preferences_response.rbi +1 -1
  222. data/rbi/knockapi/models/object_list_schedules_params.rbi +25 -16
  223. data/rbi/knockapi/models/object_list_subscriptions_params.rbi +150 -46
  224. data/rbi/knockapi/models/object_set_channel_data_params.rbi +16 -5
  225. data/rbi/knockapi/models/object_set_params.rbi +89 -33
  226. data/rbi/knockapi/models/object_set_preferences_params.rbi +16 -5
  227. data/rbi/knockapi/models/object_unset_channel_data_params.rbi +16 -5
  228. data/rbi/knockapi/models/object_unset_channel_data_response.rbi +7 -0
  229. data/rbi/knockapi/models/objects/bulk_add_subscriptions_params.rbi +77 -34
  230. data/rbi/knockapi/models/objects/bulk_delete_params.rbi +23 -6
  231. data/rbi/knockapi/models/objects/bulk_set_params.rbi +20 -11
  232. data/rbi/knockapi/models/page_info.rbi +22 -11
  233. data/rbi/knockapi/models/providers/ms_team_check_auth_params.rbi +23 -6
  234. data/rbi/knockapi/models/providers/ms_team_check_auth_response.rbi +53 -14
  235. data/rbi/knockapi/models/providers/ms_team_list_channels_params.rbi +53 -23
  236. data/rbi/knockapi/models/providers/ms_team_list_channels_response.rbi +57 -30
  237. data/rbi/knockapi/models/providers/ms_team_list_teams_params.rbi +62 -22
  238. data/rbi/knockapi/models/providers/ms_team_list_teams_response.rbi +23 -4
  239. data/rbi/knockapi/models/providers/ms_team_revoke_access_params.rbi +23 -6
  240. data/rbi/knockapi/models/providers/ms_team_revoke_access_response.rbi +14 -3
  241. data/rbi/knockapi/models/providers/slack_check_auth_params.rbi +23 -6
  242. data/rbi/knockapi/models/providers/slack_check_auth_response.rbi +53 -14
  243. data/rbi/knockapi/models/providers/slack_list_channels_params.rbi +58 -30
  244. data/rbi/knockapi/models/providers/slack_list_channels_response.rbi +29 -12
  245. data/rbi/knockapi/models/providers/slack_revoke_access_params.rbi +23 -6
  246. data/rbi/knockapi/models/providers/slack_revoke_access_response.rbi +14 -3
  247. data/rbi/knockapi/models/recipient.rbi +5 -2
  248. data/rbi/knockapi/models/recipient_reference.rbi +22 -5
  249. data/rbi/knockapi/models/recipient_request.rbi +11 -4
  250. data/rbi/knockapi/models/recipients/channel_data.rbi +123 -50
  251. data/rbi/knockapi/models/recipients/channel_data_request.rbi +54 -33
  252. data/rbi/knockapi/models/recipients/discord_channel_data.rbi +100 -53
  253. data/rbi/knockapi/models/recipients/inline_channel_data_request.rbi +29 -1
  254. data/rbi/knockapi/models/recipients/inline_preference_set_request.rbi +3 -1
  255. data/rbi/knockapi/models/recipients/ms_teams_channel_data.rbi +109 -64
  256. data/rbi/knockapi/models/recipients/one_signal_channel_data.rbi +14 -3
  257. data/rbi/knockapi/models/recipients/preference_set.rbi +159 -88
  258. data/rbi/knockapi/models/recipients/preference_set_channel_type_setting.rbi +18 -6
  259. data/rbi/knockapi/models/recipients/preference_set_channel_types.rbi +276 -105
  260. data/rbi/knockapi/models/recipients/preference_set_request.rbi +162 -87
  261. data/rbi/knockapi/models/recipients/push_channel_data.rbi +14 -3
  262. data/rbi/knockapi/models/recipients/slack_channel_data.rbi +107 -49
  263. data/rbi/knockapi/models/recipients/subscription.rbi +29 -20
  264. data/rbi/knockapi/models/schedule.rbi +32 -27
  265. data/rbi/knockapi/models/schedule_create_params.rbi +52 -35
  266. data/rbi/knockapi/models/schedule_create_response.rbi +4 -1
  267. data/rbi/knockapi/models/schedule_delete_params.rbi +20 -6
  268. data/rbi/knockapi/models/schedule_delete_response.rbi +4 -1
  269. data/rbi/knockapi/models/schedule_list_params.rbi +23 -17
  270. data/rbi/knockapi/models/schedule_repeat_rule.rbi +69 -39
  271. data/rbi/knockapi/models/schedule_update_params.rbi +48 -27
  272. data/rbi/knockapi/models/schedule_update_response.rbi +4 -1
  273. data/rbi/knockapi/models/schedules/bulk_create_params.rbi +102 -61
  274. data/rbi/knockapi/models/tenant.rbi +71 -45
  275. data/rbi/knockapi/models/tenant_delete_params.rbi +13 -5
  276. data/rbi/knockapi/models/tenant_delete_response.rbi +7 -0
  277. data/rbi/knockapi/models/tenant_get_params.rbi +13 -5
  278. data/rbi/knockapi/models/tenant_list_params.rbi +22 -16
  279. data/rbi/knockapi/models/tenant_request.rbi +132 -57
  280. data/rbi/knockapi/models/tenant_set_params.rbi +134 -59
  281. data/rbi/knockapi/models/tenants/bulk_delete_params.rbi +23 -6
  282. data/rbi/knockapi/models/tenants/bulk_set_params.rbi +20 -11
  283. data/rbi/knockapi/models/user.rbi +32 -28
  284. data/rbi/knockapi/models/user_delete_params.rbi +13 -5
  285. data/rbi/knockapi/models/user_delete_response.rbi +7 -0
  286. data/rbi/knockapi/models/user_get_channel_data_params.rbi +13 -5
  287. data/rbi/knockapi/models/user_get_params.rbi +13 -5
  288. data/rbi/knockapi/models/user_get_preferences_params.rbi +19 -5
  289. data/rbi/knockapi/models/user_list_messages_params.rbi +168 -59
  290. data/rbi/knockapi/models/user_list_params.rbi +43 -22
  291. data/rbi/knockapi/models/user_list_preferences_params.rbi +16 -5
  292. data/rbi/knockapi/models/user_list_preferences_response.rbi +1 -1
  293. data/rbi/knockapi/models/user_list_schedules_params.rbi +22 -16
  294. data/rbi/knockapi/models/user_list_subscriptions_params.rbi +61 -23
  295. data/rbi/knockapi/models/user_merge_params.rbi +17 -6
  296. data/rbi/knockapi/models/user_set_channel_data_params.rbi +13 -5
  297. data/rbi/knockapi/models/user_set_preferences_params.rbi +13 -5
  298. data/rbi/knockapi/models/user_unset_channel_data_params.rbi +16 -5
  299. data/rbi/knockapi/models/user_unset_channel_data_response.rbi +7 -0
  300. data/rbi/knockapi/models/user_update_params.rbi +13 -5
  301. data/rbi/knockapi/models/users/bulk_delete_params.rbi +23 -6
  302. data/rbi/knockapi/models/users/bulk_identify_params.rbi +23 -11
  303. data/rbi/knockapi/models/users/bulk_set_preferences_params.rbi +26 -18
  304. data/rbi/knockapi/models/users/feed_get_settings_params.rbi +16 -5
  305. data/rbi/knockapi/models/users/feed_get_settings_response.rbi +47 -14
  306. data/rbi/knockapi/models/users/feed_list_items_params.rbi +119 -41
  307. data/rbi/knockapi/models/users/feed_list_items_response.rbi +197 -100
  308. data/rbi/knockapi/models/users/guide_get_channel_params.rbi +15 -5
  309. data/rbi/knockapi/models/users/guide_get_channel_response.rbi +84 -25
  310. data/rbi/knockapi/models/users/guide_mark_message_as_archived_params.rbi +29 -20
  311. data/rbi/knockapi/models/users/guide_mark_message_as_archived_response.rbi +14 -3
  312. data/rbi/knockapi/models/users/guide_mark_message_as_interacted_params.rbi +29 -20
  313. data/rbi/knockapi/models/users/guide_mark_message_as_interacted_response.rbi +14 -3
  314. data/rbi/knockapi/models/users/guide_mark_message_as_seen_params.rbi +29 -20
  315. data/rbi/knockapi/models/users/guide_mark_message_as_seen_response.rbi +14 -3
  316. data/rbi/knockapi/models/workflow_cancel_params.rbi +42 -17
  317. data/rbi/knockapi/models/workflow_cancel_response.rbi +7 -0
  318. data/rbi/knockapi/models/workflow_trigger_params.rbi +65 -37
  319. data/rbi/knockapi/models/workflow_trigger_response.rbi +14 -3
  320. data/rbi/knockapi/models.rbi +179 -0
  321. data/rbi/knockapi/request_options.rbi +18 -7
  322. data/rbi/knockapi/resources/audiences.rbi +22 -14
  323. data/rbi/knockapi/resources/bulk_operations.rbi +11 -3
  324. data/rbi/knockapi/resources/channels/bulk.rbi +15 -9
  325. data/rbi/knockapi/resources/channels.rbi +2 -1
  326. data/rbi/knockapi/resources/integrations/census.rbi +8 -4
  327. data/rbi/knockapi/resources/integrations/hightouch.rbi +8 -4
  328. data/rbi/knockapi/resources/integrations.rbi +2 -1
  329. data/rbi/knockapi/resources/messages/batch.rbi +58 -26
  330. data/rbi/knockapi/resources/messages.rbi +102 -43
  331. data/rbi/knockapi/resources/objects/bulk.rbi +25 -14
  332. data/rbi/knockapi/resources/objects.rbi +177 -107
  333. data/rbi/knockapi/resources/providers/ms_teams.rbi +35 -16
  334. data/rbi/knockapi/resources/providers/slack.rbi +28 -11
  335. data/rbi/knockapi/resources/providers.rbi +2 -1
  336. data/rbi/knockapi/resources/recipients/channel_data.rbi +2 -1
  337. data/rbi/knockapi/resources/recipients/preferences.rbi +2 -1
  338. data/rbi/knockapi/resources/recipients/subscriptions.rbi +2 -1
  339. data/rbi/knockapi/resources/recipients.rbi +2 -1
  340. data/rbi/knockapi/resources/schedules/bulk.rbi +9 -6
  341. data/rbi/knockapi/resources/schedules.rbi +44 -33
  342. data/rbi/knockapi/resources/shared.rbi +2 -1
  343. data/rbi/knockapi/resources/tenants/bulk.rbi +15 -9
  344. data/rbi/knockapi/resources/tenants.rbi +51 -20
  345. data/rbi/knockapi/resources/users/bulk.rbi +21 -14
  346. data/rbi/knockapi/resources/users/feeds.rbi +20 -9
  347. data/rbi/knockapi/resources/users/guides.rbi +23 -16
  348. data/rbi/knockapi/resources/users.rbi +160 -91
  349. data/rbi/knockapi/resources/workflows.rbi +38 -29
  350. data/sig/knockapi/internal/entries_cursor.rbs +0 -2
  351. data/sig/knockapi/internal/items_cursor.rbs +0 -2
  352. data/sig/knockapi/internal/transport/base_client.rbs +16 -1
  353. data/sig/knockapi/internal/transport/pooled_net_requester.rbs +4 -0
  354. data/sig/knockapi/internal/type/base_model.rbs +11 -5
  355. data/sig/knockapi/internal/type/base_page.rbs +1 -1
  356. data/sig/knockapi/internal/type/converter.rbs +2 -0
  357. data/sig/knockapi/internal/type/enum.rbs +1 -0
  358. data/sig/knockapi/internal/type/request_parameters.rbs +3 -1
  359. data/sig/knockapi/internal/type/union.rbs +1 -0
  360. data/sig/knockapi/internal/util.rbs +15 -0
  361. data/sig/knockapi/internal.rbs +2 -0
  362. data/sig/knockapi/models/activity.rbs +0 -2
  363. data/sig/knockapi/models/audience_add_members_params.rbs +6 -12
  364. data/sig/knockapi/models/audience_add_members_response.rbs +5 -0
  365. data/sig/knockapi/models/audience_list_members_params.rbs +0 -2
  366. data/sig/knockapi/models/audience_list_members_response.rbs +6 -8
  367. data/sig/knockapi/models/audience_member.rbs +3 -5
  368. data/sig/knockapi/models/audience_remove_members_params.rbs +6 -14
  369. data/sig/knockapi/models/audience_remove_members_response.rbs +5 -0
  370. data/sig/knockapi/models/bulk_operation.rbs +9 -13
  371. data/sig/knockapi/models/bulk_operation_get_params.rbs +0 -2
  372. data/sig/knockapi/models/channels/bulk_update_message_status_params.rbs +0 -2
  373. data/sig/knockapi/models/condition.rbs +4 -6
  374. data/sig/knockapi/models/identify_user_request.rbs +0 -2
  375. data/sig/knockapi/models/inline_identify_user_request.rbs +26 -4
  376. data/sig/knockapi/models/inline_object_request.rbs +0 -2
  377. data/sig/knockapi/models/inline_tenant_request.rbs +2 -2
  378. data/sig/knockapi/models/integrations/census_custom_destination_params.rbs +0 -2
  379. data/sig/knockapi/models/integrations/census_custom_destination_response.rbs +0 -2
  380. data/sig/knockapi/models/integrations/hightouch_embedded_destination_params.rbs +0 -2
  381. data/sig/knockapi/models/integrations/hightouch_embedded_destination_response.rbs +0 -2
  382. data/sig/knockapi/models/message.rbs +15 -23
  383. data/sig/knockapi/models/message_archive_params.rbs +0 -2
  384. data/sig/knockapi/models/message_delivery_log.rbs +24 -30
  385. data/sig/knockapi/models/message_event.rbs +4 -6
  386. data/sig/knockapi/models/message_get_content_params.rbs +0 -2
  387. data/sig/knockapi/models/message_get_content_response.rbs +2 -24
  388. data/sig/knockapi/models/message_get_params.rbs +0 -2
  389. data/sig/knockapi/models/message_list_activities_params.rbs +0 -2
  390. data/sig/knockapi/models/message_list_delivery_logs_params.rbs +0 -2
  391. data/sig/knockapi/models/message_list_events_params.rbs +0 -2
  392. data/sig/knockapi/models/message_list_params.rbs +17 -21
  393. data/sig/knockapi/models/message_mark_as_interacted_params.rbs +0 -2
  394. data/sig/knockapi/models/message_mark_as_read_params.rbs +0 -2
  395. data/sig/knockapi/models/message_mark_as_seen_params.rbs +0 -2
  396. data/sig/knockapi/models/message_mark_as_unread_params.rbs +0 -2
  397. data/sig/knockapi/models/message_mark_as_unseen_params.rbs +0 -2
  398. data/sig/knockapi/models/message_unarchive_params.rbs +0 -2
  399. data/sig/knockapi/models/messages/batch_archive_params.rbs +0 -2
  400. data/sig/knockapi/models/messages/batch_archive_response.rbs +1 -1
  401. data/sig/knockapi/models/messages/batch_get_content_params.rbs +0 -2
  402. data/sig/knockapi/models/messages/batch_get_content_response.rbs +2 -24
  403. data/sig/knockapi/models/messages/batch_mark_as_interacted_params.rbs +0 -2
  404. data/sig/knockapi/models/messages/batch_mark_as_interacted_response.rbs +1 -2
  405. data/sig/knockapi/models/messages/batch_mark_as_read_params.rbs +0 -2
  406. data/sig/knockapi/models/messages/batch_mark_as_read_response.rbs +1 -1
  407. data/sig/knockapi/models/messages/batch_mark_as_seen_params.rbs +0 -2
  408. data/sig/knockapi/models/messages/batch_mark_as_seen_response.rbs +1 -1
  409. data/sig/knockapi/models/messages/batch_mark_as_unread_params.rbs +0 -2
  410. data/sig/knockapi/models/messages/batch_mark_as_unread_response.rbs +1 -1
  411. data/sig/knockapi/models/messages/batch_mark_as_unseen_params.rbs +0 -2
  412. data/sig/knockapi/models/messages/batch_mark_as_unseen_response.rbs +1 -1
  413. data/sig/knockapi/models/messages/batch_unarchive_params.rbs +0 -2
  414. data/sig/knockapi/models/messages/batch_unarchive_response.rbs +1 -1
  415. data/sig/knockapi/models/object.rbs +8 -4
  416. data/sig/knockapi/models/object_add_subscriptions_params.rbs +0 -2
  417. data/sig/knockapi/models/object_add_subscriptions_response.rbs +1 -1
  418. data/sig/knockapi/models/object_delete_params.rbs +0 -2
  419. data/sig/knockapi/models/object_delete_response.rbs +5 -0
  420. data/sig/knockapi/models/object_delete_subscriptions_params.rbs +0 -2
  421. data/sig/knockapi/models/object_delete_subscriptions_response.rbs +1 -1
  422. data/sig/knockapi/models/object_get_channel_data_params.rbs +0 -2
  423. data/sig/knockapi/models/object_get_params.rbs +0 -2
  424. data/sig/knockapi/models/object_get_preferences_params.rbs +0 -2
  425. data/sig/knockapi/models/object_list_messages_params.rbs +17 -21
  426. data/sig/knockapi/models/object_list_params.rbs +6 -8
  427. data/sig/knockapi/models/object_list_preferences_params.rbs +0 -2
  428. data/sig/knockapi/models/object_list_preferences_response.rbs +1 -1
  429. data/sig/knockapi/models/object_list_schedules_params.rbs +0 -2
  430. data/sig/knockapi/models/object_list_subscriptions_params.rbs +11 -15
  431. data/sig/knockapi/models/object_set_channel_data_params.rbs +0 -2
  432. data/sig/knockapi/models/object_set_params.rbs +0 -2
  433. data/sig/knockapi/models/object_set_preferences_params.rbs +0 -2
  434. data/sig/knockapi/models/object_unset_channel_data_params.rbs +0 -2
  435. data/sig/knockapi/models/object_unset_channel_data_response.rbs +5 -0
  436. data/sig/knockapi/models/objects/bulk_add_subscriptions_params.rbs +3 -7
  437. data/sig/knockapi/models/objects/bulk_delete_params.rbs +0 -2
  438. data/sig/knockapi/models/objects/bulk_set_params.rbs +3 -5
  439. data/sig/knockapi/models/page_info.rbs +0 -2
  440. data/sig/knockapi/models/providers/ms_team_check_auth_params.rbs +0 -2
  441. data/sig/knockapi/models/providers/ms_team_check_auth_response.rbs +0 -4
  442. data/sig/knockapi/models/providers/ms_team_list_channels_params.rbs +5 -9
  443. data/sig/knockapi/models/providers/ms_team_list_channels_response.rbs +0 -4
  444. data/sig/knockapi/models/providers/ms_team_list_teams_params.rbs +5 -9
  445. data/sig/knockapi/models/providers/ms_team_list_teams_response.rbs +0 -2
  446. data/sig/knockapi/models/providers/ms_team_revoke_access_params.rbs +0 -2
  447. data/sig/knockapi/models/providers/ms_team_revoke_access_response.rbs +0 -2
  448. data/sig/knockapi/models/providers/slack_check_auth_params.rbs +0 -2
  449. data/sig/knockapi/models/providers/slack_check_auth_response.rbs +0 -4
  450. data/sig/knockapi/models/providers/slack_list_channels_params.rbs +5 -9
  451. data/sig/knockapi/models/providers/slack_list_channels_response.rbs +0 -2
  452. data/sig/knockapi/models/providers/slack_revoke_access_params.rbs +0 -2
  453. data/sig/knockapi/models/providers/slack_revoke_access_response.rbs +0 -2
  454. data/sig/knockapi/models/recipient.rbs +2 -2
  455. data/sig/knockapi/models/recipient_reference.rbs +2 -4
  456. data/sig/knockapi/models/recipient_request.rbs +3 -3
  457. data/sig/knockapi/models/recipients/channel_data.rbs +15 -17
  458. data/sig/knockapi/models/recipients/channel_data_request.rbs +9 -11
  459. data/sig/knockapi/models/recipients/discord_channel_data.rbs +9 -17
  460. data/sig/knockapi/models/recipients/inline_channel_data_request.rbs +14 -1
  461. data/sig/knockapi/models/recipients/inline_preference_set_request.rbs +1 -1
  462. data/sig/knockapi/models/recipients/ms_teams_channel_data.rbs +9 -17
  463. data/sig/knockapi/models/recipients/one_signal_channel_data.rbs +0 -2
  464. data/sig/knockapi/models/recipients/preference_set.rbs +25 -31
  465. data/sig/knockapi/models/recipients/preference_set_channel_type_setting.rbs +3 -7
  466. data/sig/knockapi/models/recipients/preference_set_channel_types.rbs +42 -48
  467. data/sig/knockapi/models/recipients/preference_set_request.rbs +25 -31
  468. data/sig/knockapi/models/recipients/push_channel_data.rbs +0 -2
  469. data/sig/knockapi/models/recipients/slack_channel_data.rbs +9 -17
  470. data/sig/knockapi/models/recipients/subscription.rbs +3 -5
  471. data/sig/knockapi/models/schedule.rbs +3 -5
  472. data/sig/knockapi/models/schedule_create_params.rbs +3 -5
  473. data/sig/knockapi/models/schedule_create_response.rbs +1 -1
  474. data/sig/knockapi/models/schedule_delete_params.rbs +0 -2
  475. data/sig/knockapi/models/schedule_delete_response.rbs +1 -1
  476. data/sig/knockapi/models/schedule_list_params.rbs +0 -2
  477. data/sig/knockapi/models/schedule_repeat_rule.rbs +8 -10
  478. data/sig/knockapi/models/schedule_update_params.rbs +5 -7
  479. data/sig/knockapi/models/schedule_update_response.rbs +1 -1
  480. data/sig/knockapi/models/schedules/bulk_create_params.rbs +8 -14
  481. data/sig/knockapi/models/tenant.rbs +9 -15
  482. data/sig/knockapi/models/tenant_delete_params.rbs +0 -2
  483. data/sig/knockapi/models/tenant_delete_response.rbs +5 -0
  484. data/sig/knockapi/models/tenant_get_params.rbs +0 -2
  485. data/sig/knockapi/models/tenant_list_params.rbs +0 -2
  486. data/sig/knockapi/models/tenant_request.rbs +13 -19
  487. data/sig/knockapi/models/tenant_set_params.rbs +13 -19
  488. data/sig/knockapi/models/tenants/bulk_delete_params.rbs +0 -2
  489. data/sig/knockapi/models/tenants/bulk_set_params.rbs +0 -2
  490. data/sig/knockapi/models/user.rbs +0 -2
  491. data/sig/knockapi/models/user_delete_params.rbs +0 -2
  492. data/sig/knockapi/models/user_delete_response.rbs +5 -0
  493. data/sig/knockapi/models/user_get_channel_data_params.rbs +0 -2
  494. data/sig/knockapi/models/user_get_params.rbs +0 -2
  495. data/sig/knockapi/models/user_get_preferences_params.rbs +0 -2
  496. data/sig/knockapi/models/user_list_messages_params.rbs +17 -21
  497. data/sig/knockapi/models/user_list_params.rbs +6 -8
  498. data/sig/knockapi/models/user_list_preferences_params.rbs +0 -2
  499. data/sig/knockapi/models/user_list_preferences_response.rbs +1 -1
  500. data/sig/knockapi/models/user_list_schedules_params.rbs +0 -2
  501. data/sig/knockapi/models/user_list_subscriptions_params.rbs +6 -8
  502. data/sig/knockapi/models/user_merge_params.rbs +0 -2
  503. data/sig/knockapi/models/user_set_channel_data_params.rbs +0 -2
  504. data/sig/knockapi/models/user_set_preferences_params.rbs +0 -2
  505. data/sig/knockapi/models/user_unset_channel_data_params.rbs +0 -2
  506. data/sig/knockapi/models/user_unset_channel_data_response.rbs +5 -0
  507. data/sig/knockapi/models/user_update_params.rbs +0 -2
  508. data/sig/knockapi/models/users/bulk_delete_params.rbs +0 -2
  509. data/sig/knockapi/models/users/bulk_identify_params.rbs +3 -5
  510. data/sig/knockapi/models/users/bulk_set_preferences_params.rbs +3 -5
  511. data/sig/knockapi/models/users/feed_get_settings_params.rbs +0 -2
  512. data/sig/knockapi/models/users/feed_get_settings_response.rbs +0 -4
  513. data/sig/knockapi/models/users/feed_list_items_params.rbs +0 -2
  514. data/sig/knockapi/models/users/feed_list_items_response.rbs +4 -14
  515. data/sig/knockapi/models/users/guide_get_channel_params.rbs +0 -2
  516. data/sig/knockapi/models/users/guide_get_channel_response.rbs +0 -6
  517. data/sig/knockapi/models/users/guide_mark_message_as_archived_params.rbs +0 -2
  518. data/sig/knockapi/models/users/guide_mark_message_as_archived_response.rbs +0 -2
  519. data/sig/knockapi/models/users/guide_mark_message_as_interacted_params.rbs +0 -2
  520. data/sig/knockapi/models/users/guide_mark_message_as_interacted_response.rbs +0 -2
  521. data/sig/knockapi/models/users/guide_mark_message_as_seen_params.rbs +0 -2
  522. data/sig/knockapi/models/users/guide_mark_message_as_seen_response.rbs +0 -2
  523. data/sig/knockapi/models/workflow_cancel_params.rbs +0 -2
  524. data/sig/knockapi/models/workflow_cancel_response.rbs +5 -0
  525. data/sig/knockapi/models/workflow_trigger_params.rbs +0 -2
  526. data/sig/knockapi/models/workflow_trigger_response.rbs +0 -2
  527. data/sig/knockapi/models.rbs +173 -0
  528. data/sig/knockapi/request_options.rbs +1 -1
  529. data/sig/knockapi/resources/audiences.rbs +2 -2
  530. data/sig/knockapi/resources/bulk_operations.rbs +1 -1
  531. data/sig/knockapi/resources/channels/bulk.rbs +1 -1
  532. data/sig/knockapi/resources/messages.rbs +15 -17
  533. data/sig/knockapi/resources/objects/bulk.rbs +5 -5
  534. data/sig/knockapi/resources/objects.rbs +19 -19
  535. data/sig/knockapi/resources/providers/ms_teams.rbs +2 -2
  536. data/sig/knockapi/resources/providers/slack.rbs +1 -1
  537. data/sig/knockapi/resources/schedules/bulk.rbs +2 -2
  538. data/sig/knockapi/resources/schedules.rbs +3 -3
  539. data/sig/knockapi/resources/tenants/bulk.rbs +2 -2
  540. data/sig/knockapi/resources/tenants.rbs +4 -4
  541. data/sig/knockapi/resources/users/bulk.rbs +5 -5
  542. data/sig/knockapi/resources/users.rbs +19 -19
  543. metadata +29 -8
  544. data/lib/knockapi/models/messages/activity_list_params.rb +0 -48
  545. data/lib/knockapi/resources/messages/activities.rb +0 -47
  546. data/rbi/knockapi/models/messages/activity_list_params.rbi +0 -75
  547. data/rbi/knockapi/resources/messages/activities.rbi +0 -38
  548. data/sig/knockapi/models/messages/activity_list_params.rbs +0 -45
  549. data/sig/knockapi/resources/messages/activities.rbs +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 903d2d837a18e4bb3ffa9c023971afcd4185354ab2d743af96d63e8601c85617
4
- data.tar.gz: 3557d001b592fd33171c716392a98f76ca8e1d78c9b0297f034fa39489153487
3
+ metadata.gz: c57d893d557fe8c19367b85213334576858a8024857ea969f05f0dd2368d9b8c
4
+ data.tar.gz: 3becb6c5c1d4cd3abd4a48a5abb818b035e1771651afd4172641bf228b336a83
5
5
  SHA512:
6
- metadata.gz: 7868b8ab6b9afa7bb213512d0eb9ee7efef256a6f87dd949712986bb3700028e8a9506253de8b359d1a6054380f803d70db021278e843595cd0a65ae1427d381
7
- data.tar.gz: 9db5d54b2c22dd351cfe895dc0a0dda56511a63915dcf770ea9cb97e013907c5f57c4c5ced290843099590e418c5fef162e0864ef3550fdbd6db15c82b9aa77b
6
+ metadata.gz: 3241238cd0cc508b9c967d0f035b036483d1a1e774d84409adc91632b1629927079074c5692a8ef231dfe0bbdb68e227687da1e7f0d96124545a04f269388c4a
7
+ data.tar.gz: 89c50a639748a21f1733a174bc65017286875121414669dca2074d98d457796e7e96eddd5241a6b43c6efe2e8d31eecb73adfb0251ac836b8f90c0e0bdba038d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.0 (2025-05-15)
4
+
5
+ Full Changelog: [v1.0.0...v1.1.0](https://github.com/knocklabs/knock-ruby/compare/v1.0.0...v1.1.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([02959e8](https://github.com/knocklabs/knock-ruby/commit/02959e82c2148f3a1a3e9e6021d48298644305e9))
10
+ * **api:** api update ([6bc31c4](https://github.com/knocklabs/knock-ruby/commit/6bc31c4a6c0a81e096267f1c5a1cb3a9f8b29dac))
11
+ * **api:** removes duplicate activities section ([e83c36e](https://github.com/knocklabs/knock-ruby/commit/e83c36e5c6e88a457f7306ab7515d03c1ae0a7bc))
12
+ * bump default connection pool size limit to minimum of 99 ([b04fe89](https://github.com/knocklabs/knock-ruby/commit/b04fe8949b02a6f56979748226d24b2a30e2ea62))
13
+ * expose base client options as read only attributes ([4f7b9a2](https://github.com/knocklabs/knock-ruby/commit/4f7b9a248aed50a6b0077a5db4f34b764f86ffd5))
14
+ * expose recursive `#to_h` conversion ([153be54](https://github.com/knocklabs/knock-ruby/commit/153be54a04fd0b2ac0dd27278d96be70cc87b1e1))
15
+ * support sorbet aliases at the runtime ([5e9d146](https://github.com/knocklabs/knock-ruby/commit/5e9d146ae0303f729ebeb949d0d6bb4a9943e4be))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **internal:** ensure formatting always uses c.utf-8 locale ([9f8e834](https://github.com/knocklabs/knock-ruby/commit/9f8e8345f2206a5b060d55838f9e22226fa47589))
21
+ * **internal:** fix formatting script for macos ([11e651e](https://github.com/knocklabs/knock-ruby/commit/11e651eaea730816e2a558cf708382eed559a71c))
22
+ * **internal:** update gemspec name ([2a1af3a](https://github.com/knocklabs/knock-ruby/commit/2a1af3a8e6f8dbea4f448ce3acbdf694f993aea8))
23
+
24
+
25
+ ### Chores
26
+
27
+ * accept all nd-json mimetype variants ([f13a7aa](https://github.com/knocklabs/knock-ruby/commit/f13a7aa66b6ef36d0d044cea3674bfeef1f18ac2))
28
+ * always check if current page is empty in `next_page?` ([b43503c](https://github.com/knocklabs/knock-ruby/commit/b43503c22d1c7ca08adcf1f8a01d3d3c48608962))
29
+ * fix misc linting / minor issues ([4d8eadc](https://github.com/knocklabs/knock-ruby/commit/4d8eadcee14d85c3eb7f95b0417b74d932b344ad))
30
+ * **internal:** codegen related update ([1ab97b3](https://github.com/knocklabs/knock-ruby/commit/1ab97b344adc1bebd79bef05e33bf825500e91e2))
31
+ * **internal:** codegen related update ([1cdabfe](https://github.com/knocklabs/knock-ruby/commit/1cdabfed4481b5bc2f1892647c604f37ec4f201b))
32
+ * re-export top level models under library namespace ([a2bbf55](https://github.com/knocklabs/knock-ruby/commit/a2bbf558687ac11cdb6d72e9d54c47e0a8998e7b))
33
+ * remove Gemfile.lock during bootstrap ([b0ad2cd](https://github.com/knocklabs/knock-ruby/commit/b0ad2cd268ff2f6fe6f96d8cf1baa7296287eec4))
34
+ * reorganize type aliases ([c50a167](https://github.com/knocklabs/knock-ruby/commit/c50a16701c7a044b1b0b5c2b6aefffe2fc1eb102))
35
+ * revert ignoring Gemfile.lock ([c005465](https://github.com/knocklabs/knock-ruby/commit/c0054656e506496ba90c6c3b68c18e2017531fec))
36
+ * validate request option coercion correctness ([611e596](https://github.com/knocklabs/knock-ruby/commit/611e5969960440e4004a73158af6a26da4fb4755))
37
+
38
+
39
+ ### Documentation
40
+
41
+ * illustrate environmental defaults for auth variables ([a6de609](https://github.com/knocklabs/knock-ruby/commit/a6de609be150aa0d64298b0cb8a696c27c3f724c))
42
+ * rewrite much of README.md for readability ([0530377](https://github.com/knocklabs/knock-ruby/commit/0530377bd49cb6e65155c36ed30239fa64b3bc7b))
43
+
3
44
  ## 1.0.0 (2025-05-01)
4
45
 
5
46
  Full Changelog: [v0.6.2...v1.0.0](https://github.com/knocklabs/knock-ruby/compare/v0.6.2...v1.0.0)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Knock Ruby API library
2
2
 
3
- The Knock Ruby library provides convenient access to the Knock REST API from any Ruby 3.2.0+ application.
3
+ The Knock Ruby library provides convenient access to the Knock REST API from any Ruby 3.2.0+ application. It ships with comprehensive types & docstrings in Yard, RBS, and RBI – [see below](https://github.com/knocklabs/knock-ruby#Sorbet) for usage with Sorbet. The standard library's `net/http` is used as the HTTP transport, with connection pooling via the `connection_pool` gem.
4
4
 
5
5
  It is generated with [Stainless](https://www.stainless.com/).
6
6
 
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "knockapi", "~> 1.0.0"
20
+ gem "knockapi", "~> 1.1.0"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -29,7 +29,7 @@ require "bundler/setup"
29
29
  require "knockapi"
30
30
 
31
31
  knock = Knockapi::Client.new(
32
- api_key: "My API Key" # defaults to ENV["KNOCK_API_KEY"]
32
+ api_key: ENV["KNOCK_API_KEY"] # This is the default and can be omitted
33
33
  )
34
34
 
35
35
  response = knock.workflows.trigger("dinosaurs-loose", recipients: ["dnedry"], data: {dinosaur: "triceratops"})
@@ -37,16 +37,6 @@ response = knock.workflows.trigger("dinosaurs-loose", recipients: ["dnedry"], da
37
37
  puts(response.workflow_run_id)
38
38
  ```
39
39
 
40
- ## Sorbet
41
-
42
- This library is written with [Sorbet type definitions](https://sorbet.org/docs/rbi). However, there is no runtime dependency on the `sorbet-runtime`.
43
-
44
- When using sorbet, it is recommended to use model classes as below. This provides stronger type checking and tooling integration.
45
-
46
- ```ruby
47
- knock.workflows.trigger("dinosaurs-loose", recipients: ["dnedry"], data: {dinosaur: "triceratops"})
48
- ```
49
-
50
40
  ### Pagination
51
41
 
52
42
  List methods in the Knock API are paginated.
@@ -66,15 +56,30 @@ page.auto_paging_each do |user|
66
56
  end
67
57
  ```
68
58
 
69
- ### Errors
59
+ Alternatively, you can use the `#next_page?` and `#next_page` methods for more granular control working with pages.
60
+
61
+ ```ruby
62
+ if page.next_page?
63
+ new_page = page.next_page
64
+ puts(new_page.entries[0].id)
65
+ end
66
+ ```
67
+
68
+ ### Handling errors
70
69
 
71
70
  When the library is unable to connect to the API, or if the API returns a non-success status code (i.e., 4xx or 5xx response), a subclass of `Knockapi::Errors::APIError` will be thrown:
72
71
 
73
72
  ```ruby
74
73
  begin
75
74
  user = knock.users.get("dnedry")
76
- rescue Knockapi::Errors::APIError => e
77
- puts(e.status) # 400
75
+ rescue Knockapi::Errors::APIConnectionError => e
76
+ puts("The server could not be reached")
77
+ puts(e.cause) # an underlying Exception, likely raised within `net/http`
78
+ rescue Knockapi::Errors::RateLimitError => e
79
+ puts("A 429 status code was received; we should back off a bit.")
80
+ rescue Knockapi::Errors::APIStatusError => e
81
+ puts("Another non-200-range status code was received")
82
+ puts(e.status)
78
83
  end
79
84
  ```
80
85
 
@@ -114,11 +119,7 @@ knock.users.get("dnedry", request_options: {max_retries: 5})
114
119
 
115
120
  ### Timeouts
116
121
 
117
- By default, requests will time out after 60 seconds.
118
-
119
- Timeouts are applied separately to the initial connection and the overall request time, so in some cases a request could wait 2\*timeout seconds before it fails.
120
-
121
- You can use the `timeout` option to configure or disable this:
122
+ By default, requests will time out after 60 seconds. You can use the timeout option to configure or disable this:
122
123
 
123
124
  ```ruby
124
125
  # Configure the default for all requests:
@@ -130,40 +131,53 @@ knock = Knockapi::Client.new(
130
131
  knock.users.get("dnedry", request_options: {timeout: 5})
131
132
  ```
132
133
 
133
- ## Model DSL
134
+ On timeout, `Knockapi::Errors::APITimeoutError` is raised.
134
135
 
135
- This library uses a simple DSL to represent request parameters and response shapes in `lib/knockapi/models`.
136
+ Note that requests that time out are retried by default.
136
137
 
137
- With the right [editor plugins](https://shopify.github.io/ruby-lsp), you can ctrl-click on elements of the DSL to navigate around and explore the library.
138
+ ## Advanced concepts
138
139
 
139
- In all places where a `BaseModel` type is specified, vanilla Ruby `Hash` can also be used. For example, the following are interchangeable as arguments:
140
+ ### BaseModel
140
141
 
141
- ```ruby
142
- # This has tooling readability, for auto-completion, static analysis, and goto definition with supported language services
143
- params = Knockapi::Models::WorkflowTriggerParams.new(recipients: ["dnedry"], data: {dinosaur: "triceratops"})
144
-
145
- # This also works
146
- params = {
147
- recipients: ["dnedry"],
148
- data: {dinosaur: "triceratops"}
149
- }
150
- ```
142
+ All parameter and response objects inherit from `Knockapi::Internal::Type::BaseModel`, which provides several conveniences, including:
151
143
 
152
- ## Editor support
144
+ 1. All fields, including unknown ones, are accessible with `obj[:prop]` syntax, and can be destructured with `obj => {prop: prop}` or pattern-matching syntax.
153
145
 
154
- A combination of [Shopify LSP](https://shopify.github.io/ruby-lsp) and [Solargraph](https://solargraph.org/) is recommended for non-[Sorbet](https://sorbet.org) users. The former is especially good at go to definition, while the latter has much better auto-completion support.
146
+ 2. Structural equivalence for equality; if two API calls return the same values, comparing the responses with == will return true.
155
147
 
156
- ## Advanced concepts
148
+ 3. Both instances and the classes themselves can be pretty-printed.
149
+
150
+ 4. Helpers such as `#to_h`, `#deep_to_h`, `#to_json`, and `#to_yaml`.
151
+
152
+ ### Making custom or undocumented requests
157
153
 
158
- ### Making custom/undocumented requests
154
+ #### Undocumented properties
155
+
156
+ You can send undocumented parameters to any endpoint, and read undocumented response properties, like so:
157
+
158
+ Note: the `extra_` parameters of the same name overrides the documented parameters.
159
+
160
+ ```ruby
161
+ user =
162
+ knock.users.get(
163
+ "dnedry",
164
+ request_options: {
165
+ extra_query: {my_query_parameter: value},
166
+ extra_body: {my_body_parameter: value},
167
+ extra_headers: {"my-header": value}
168
+ }
169
+ )
170
+
171
+ puts(user[:my_undocumented_property])
172
+ ```
159
173
 
160
174
  #### Undocumented request params
161
175
 
162
- If you want to explicitly send an extra param, you can do so with the `extra_query`, `extra_body`, and `extra_headers` under the `request_options:` parameter when making a requests as seen in examples above.
176
+ If you want to explicitly send an extra param, you can do so with the `extra_query`, `extra_body`, and `extra_headers` under the `request_options:` parameter when making a request as seen in examples above.
163
177
 
164
178
  #### Undocumented endpoints
165
179
 
166
- To make requests to undocumented endpoints, you can make requests using `client.request`. Options on the client will be respected (such as retries) when making this request.
180
+ To make requests to undocumented endpoints while retaining the benefit of auth, retries, and so on, you can make requests using `client.request`, like so:
167
181
 
168
182
  ```ruby
169
183
  response = client.request(
@@ -171,31 +185,69 @@ response = client.request(
171
185
  path: '/undocumented/endpoint',
172
186
  query: {"dog": "woof"},
173
187
  headers: {"useful-header": "interesting-value"},
174
- body: {"he": "llo"},
188
+ body: {"hello": "world"}
175
189
  )
176
190
  ```
177
191
 
178
192
  ### Concurrency & connection pooling
179
193
 
180
- The `Knockapi::Client` instances are thread-safe, and should be re-used across multiple threads. By default, each `Client` have their own HTTP connection pool, with a maximum number of connections equal to thread count.
194
+ The `Knockapi::Client` instances are threadsafe, but only are fork-safe when there are no in-flight HTTP requests.
195
+
196
+ Each instance of `Knockapi::Client` has its own HTTP connection pool with a default size of 99. As such, we recommend instantiating the client once per application in most settings.
181
197
 
182
- When the maximum number of connections has been checked out from the connection pool, the `Client` will wait for an in use connection to become available. The queue time for this mechanism is accounted for by the per-request timeout.
198
+ When all available connections from the pool are checked out, requests wait for a new connection to become available, with queue time counting towards the request timeout.
183
199
 
184
200
  Unless otherwise specified, other classes in the SDK do not have locks protecting their underlying data structure.
185
201
 
186
- Currently, `Knockapi::Client` instances are only fork-safe if there are no in-flight HTTP requests.
202
+ ## Sorbet
203
+
204
+ This library provides comprehensive [RBI](https://sorbet.org/docs/rbi) definitions, and has no dependency on sorbet-runtime.
187
205
 
188
- ### Sorbet
206
+ You can provide typesafe request parameters like so:
189
207
 
190
- #### Argument passing trick
208
+ ```ruby
209
+ knock.workflows.trigger("dinosaurs-loose", recipients: ["dnedry"], data: {dinosaur: "triceratops"})
210
+ ```
191
211
 
192
- It is possible to pass a compatible model / parameter class to a method that expects keyword arguments by using the `**` splat operator.
212
+ Or, equivalently:
193
213
 
194
214
  ```ruby
195
- params = Knockapi::Models::WorkflowTriggerParams.new(recipients: ["dnedry"], data: {dinosaur: "triceratops"})
215
+ # Hashes work, but are not typesafe:
216
+ knock.workflows.trigger("dinosaurs-loose", recipients: ["dnedry"], data: {dinosaur: "triceratops"})
217
+
218
+ # You can also splat a full Params class:
219
+ params = Knockapi::WorkflowTriggerParams.new(recipients: ["dnedry"], data: {dinosaur: "triceratops"})
196
220
  knock.workflows.trigger("dinosaurs-loose", **params)
197
221
  ```
198
222
 
223
+ ### Enums
224
+
225
+ Since this library does not depend on `sorbet-runtime`, it cannot provide [`T::Enum`](https://sorbet.org/docs/tenum) instances. Instead, we provide "tagged symbols" instead, which is always a primitive at runtime:
226
+
227
+ ```ruby
228
+ # :exclude
229
+ puts(Knockapi::Users::FeedListItemsParams::Archived::EXCLUDE)
230
+
231
+ # Revealed type: `T.all(Knockapi::Users::FeedListItemsParams::Archived, Symbol)`
232
+ T.reveal_type(Knockapi::Users::FeedListItemsParams::Archived::EXCLUDE)
233
+ ```
234
+
235
+ Enum parameters have a "relaxed" type, so you can either pass in enum constants or their literal value:
236
+
237
+ ```ruby
238
+ # Using the enum constants preserves the tagged type information:
239
+ knock.users.feeds.list_items(
240
+ archived: Knockapi::Users::FeedListItemsParams::Archived::EXCLUDE,
241
+ # …
242
+ )
243
+
244
+ # Literal values is also permissible:
245
+ knock.users.feeds.list_items(
246
+ archived: :exclude,
247
+ # …
248
+ )
249
+ ```
250
+
199
251
  ## Versioning
200
252
 
201
253
  This package follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions. As the library is in initial development and has a major version of `0`, APIs may change at any time.
@@ -83,10 +83,10 @@ module Knockapi
83
83
  def initialize(
84
84
  api_key: ENV["KNOCK_API_KEY"],
85
85
  base_url: ENV["KNOCK_BASE_URL"],
86
- max_retries: Knockapi::Client::DEFAULT_MAX_RETRIES,
87
- timeout: Knockapi::Client::DEFAULT_TIMEOUT_IN_SECONDS,
88
- initial_retry_delay: Knockapi::Client::DEFAULT_INITIAL_RETRY_DELAY,
89
- max_retry_delay: Knockapi::Client::DEFAULT_MAX_RETRY_DELAY
86
+ max_retries: self.class::DEFAULT_MAX_RETRIES,
87
+ timeout: self.class::DEFAULT_TIMEOUT_IN_SECONDS,
88
+ initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY,
89
+ max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY
90
90
  )
91
91
  base_url ||= "https://api.knock.app"
92
92
 
@@ -99,7 +99,7 @@ module Knockapi
99
99
  # @param response [nil]
100
100
  # @param message [String, nil]
101
101
  #
102
- # @return [Knockapi::Errors::APIStatusError]
102
+ # @return [self]
103
103
  def self.for(url:, status:, body:, request:, response:, message: nil)
104
104
  kwargs = {
105
105
  url: url,
@@ -45,9 +45,9 @@ module Knockapi
45
45
  @filename =
46
46
  case content
47
47
  in Pathname
48
- filename.nil? ? content.basename.to_path : File.basename(filename)
48
+ filename.nil? ? content.basename.to_path : ::File.basename(filename)
49
49
  else
50
- filename.nil? ? nil : File.basename(filename)
50
+ filename.nil? ? nil : ::File.basename(filename)
51
51
  end
52
52
  @content_type = content_type
53
53
  end
@@ -24,7 +24,7 @@ module Knockapi
24
24
 
25
25
  # @return [Boolean]
26
26
  def next_page?
27
- !page_info&.after.nil?
27
+ !entries.to_a.empty? && !page_info&.after.to_s.empty?
28
28
  end
29
29
 
30
30
  # @raise [Knockapi::HTTP::Error]
@@ -66,8 +66,8 @@ module Knockapi
66
66
  super
67
67
 
68
68
  case page_data
69
- in {entries: Array | nil => entries}
70
- @entries = entries&.map { Knockapi::Internal::Type::Converter.coerce(@model, _1) }
69
+ in {entries: Array => entries}
70
+ @entries = entries.map { Knockapi::Internal::Type::Converter.coerce(@model, _1) }
71
71
  else
72
72
  end
73
73
  case page_data
@@ -24,7 +24,7 @@ module Knockapi
24
24
 
25
25
  # @return [Boolean]
26
26
  def next_page?
27
- !page_info&.after.nil?
27
+ !items.to_a.empty? && !page_info&.after.to_s.empty?
28
28
  end
29
29
 
30
30
  # @raise [Knockapi::HTTP::Error]
@@ -66,8 +66,8 @@ module Knockapi
66
66
  super
67
67
 
68
68
  case page_data
69
- in {items: Array | nil => items}
70
- @items = items&.map { Knockapi::Internal::Type::Converter.coerce(@model, _1) }
69
+ in {items: Array => items}
70
+ @items = items.map { Knockapi::Internal::Type::Converter.coerce(@model, _1) }
71
71
  else
72
72
  end
73
73
  case page_data
@@ -24,7 +24,7 @@ module Knockapi
24
24
 
25
25
  # @return [Boolean]
26
26
  def next_page?
27
- !skip_token.nil?
27
+ !ms_teams_teams.to_a.empty? && !skip_token.to_s.empty?
28
28
  end
29
29
 
30
30
  # @raise [Knockapi::HTTP::Error]
@@ -67,8 +67,8 @@ module Knockapi
67
67
 
68
68
  @skip_token = page_data[:skip_token]
69
69
  case page_data
70
- in {ms_teams_teams: Array | nil => ms_teams_teams}
71
- @ms_teams_teams = ms_teams_teams&.map { Knockapi::Internal::Type::Converter.coerce(@model, _1) }
70
+ in {ms_teams_teams: Array => ms_teams_teams}
71
+ @ms_teams_teams = ms_teams_teams.map { Knockapi::Internal::Type::Converter.coerce(@model, _1) }
72
72
  else
73
73
  end
74
74
  end
@@ -24,7 +24,7 @@ module Knockapi
24
24
 
25
25
  # @return [Boolean]
26
26
  def next_page?
27
- !next_cursor.nil?
27
+ !slack_channels.to_a.empty? && !next_cursor.to_s.empty?
28
28
  end
29
29
 
30
30
  # @raise [Knockapi::HTTP::Error]
@@ -67,8 +67,8 @@ module Knockapi
67
67
 
68
68
  @next_cursor = page_data[:next_cursor]
69
69
  case page_data
70
- in {slack_channels: Array | nil => slack_channels}
71
- @slack_channels = slack_channels&.map { Knockapi::Internal::Type::Converter.coerce(@model, _1) }
70
+ in {slack_channels: Array => slack_channels}
71
+ @slack_channels = slack_channels.map { Knockapi::Internal::Type::Converter.coerce(@model, _1) }
72
72
  else
73
73
  end
74
74
  end
@@ -7,6 +7,8 @@ module Knockapi
7
7
  #
8
8
  # @abstract
9
9
  class BaseClient
10
+ extend Knockapi::Internal::Util::SorbetRuntimeSupport
11
+
10
12
  # from whatwg fetch spec
11
13
  MAX_REDIRECTS = 20
12
14
 
@@ -151,6 +153,27 @@ module Knockapi
151
153
  end
152
154
  end
153
155
 
156
+ # @return [URI::Generic]
157
+ attr_reader :base_url
158
+
159
+ # @return [Float]
160
+ attr_reader :timeout
161
+
162
+ # @return [Integer]
163
+ attr_reader :max_retries
164
+
165
+ # @return [Float]
166
+ attr_reader :initial_retry_delay
167
+
168
+ # @return [Float]
169
+ attr_reader :max_retry_delay
170
+
171
+ # @return [Hash{String=>String}]
172
+ attr_reader :headers
173
+
174
+ # @return [String, nil]
175
+ attr_reader :idempotency_header
176
+
154
177
  # @api private
155
178
  # @return [Knockapi::Internal::Transport::PooledNetRequester]
156
179
  attr_reader :requester
@@ -182,10 +205,11 @@ module Knockapi
182
205
  },
183
206
  headers
184
207
  )
185
- @base_url = Knockapi::Internal::Util.parse_uri(base_url)
208
+ @base_url_components = Knockapi::Internal::Util.parse_uri(base_url)
209
+ @base_url = Knockapi::Internal::Util.unparse_uri(@base_url_components)
186
210
  @idempotency_header = idempotency_header&.to_s&.downcase
187
- @max_retries = max_retries
188
211
  @timeout = timeout
212
+ @max_retries = max_retries
189
213
  @initial_retry_delay = initial_retry_delay
190
214
  @max_retry_delay = max_retry_delay
191
215
  end
@@ -276,10 +300,14 @@ module Knockapi
276
300
  Knockapi::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
277
301
  end
278
302
 
303
+ url = Knockapi::Internal::Util.join_parsed_uri(
304
+ @base_url_components,
305
+ {**req, path: path, query: query}
306
+ )
279
307
  headers, encoded = Knockapi::Internal::Util.encode_content(headers, body)
280
308
  {
281
309
  method: method,
282
- url: Knockapi::Internal::Util.join_parsed_uri(@base_url, {**req, path: path, query: query}),
310
+ url: url,
283
311
  headers: headers,
284
312
  body: encoded,
285
313
  max_retries: opts.fetch(:max_retries, @max_retries),
@@ -458,9 +486,9 @@ module Knockapi
458
486
 
459
487
  decoded = Knockapi::Internal::Util.decode_content(response, stream: stream)
460
488
  case req
461
- in { stream: Class => st }
489
+ in {stream: Class => st}
462
490
  st.new(model: model, url: url, status: status, response: response, stream: decoded)
463
- in { page: Class => page }
491
+ in {page: Class => page}
464
492
  page.new(client: self, req: req, headers: response, page_data: decoded)
465
493
  else
466
494
  unwrapped = Knockapi::Internal::Util.dig(decoded, req[:unwrap])
@@ -473,10 +501,54 @@ module Knockapi
473
501
  # @return [String]
474
502
  def inspect
475
503
  # rubocop:disable Layout/LineLength
476
- base_url = Knockapi::Internal::Util.unparse_uri(@base_url)
477
- "#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
504
+ "#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{@base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
478
505
  # rubocop:enable Layout/LineLength
479
506
  end
507
+
508
+ define_sorbet_constant!(:RequestComponents) do
509
+ T.type_alias do
510
+ {
511
+ method: Symbol,
512
+ path: T.any(String, T::Array[String]),
513
+ query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
514
+ headers: T.nilable(
515
+ T::Hash[String,
516
+ T.nilable(
517
+ T.any(
518
+ String,
519
+ Integer,
520
+ T::Array[T.nilable(T.any(String, Integer))]
521
+ )
522
+ )]
523
+ ),
524
+ body: T.nilable(T.anything),
525
+ unwrap: T.nilable(
526
+ T.any(
527
+ Symbol,
528
+ Integer,
529
+ T::Array[T.any(Symbol, Integer)],
530
+ T.proc.params(arg0: T.anything).returns(T.anything)
531
+ )
532
+ ),
533
+ page: T.nilable(T::Class[Knockapi::Internal::Type::BasePage[Knockapi::Internal::Type::BaseModel]]),
534
+ stream: T.nilable(T::Class[T.anything]),
535
+ model: T.nilable(Knockapi::Internal::Type::Converter::Input),
536
+ options: T.nilable(Knockapi::RequestOptions::OrHash)
537
+ }
538
+ end
539
+ end
540
+ define_sorbet_constant!(:RequestInput) do
541
+ T.type_alias do
542
+ {
543
+ method: Symbol,
544
+ url: URI::Generic,
545
+ headers: T::Hash[String, String],
546
+ body: T.anything,
547
+ max_retries: Integer,
548
+ timeout: Float
549
+ }
550
+ end
551
+ end
480
552
  end
481
553
  end
482
554
  end
@@ -5,10 +5,14 @@ module Knockapi
5
5
  module Transport
6
6
  # @api private
7
7
  class PooledNetRequester
8
+ extend Knockapi::Internal::Util::SorbetRuntimeSupport
9
+
8
10
  # from the golang stdlib
9
11
  # https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
10
12
  KEEP_ALIVE_TIMEOUT = 30
11
13
 
14
+ DEFAULT_MAX_CONNECTIONS = [Etc.nprocessors, 99].max
15
+
12
16
  class << self
13
17
  # @api private
14
18
  #
@@ -182,11 +186,23 @@ module Knockapi
182
186
  # @api private
183
187
  #
184
188
  # @param size [Integer]
185
- def initialize(size: Etc.nprocessors)
189
+ def initialize(size: self.class::DEFAULT_MAX_CONNECTIONS)
186
190
  @mutex = Mutex.new
187
191
  @size = size
188
192
  @pools = {}
189
193
  end
194
+
195
+ define_sorbet_constant!(:Request) do
196
+ T.type_alias do
197
+ {
198
+ method: Symbol,
199
+ url: URI::Generic,
200
+ headers: T::Hash[String, String],
201
+ body: T.anything,
202
+ deadline: Float
203
+ }
204
+ end
205
+ end
190
206
  end
191
207
  end
192
208
  end
@@ -29,7 +29,7 @@ module Knockapi
29
29
  #
30
30
  # @option spec [Boolean] :"nil?"
31
31
  #
32
- # @return [Knockapi::Internal::Type::ArrayOf]
32
+ # @return [self]
33
33
  def self.[](...) = new(...)
34
34
 
35
35
  # @api public