dodopayments 1.22.0 → 1.47.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 (449) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +143 -59
  4. data/SECURITY.md +2 -2
  5. data/lib/dodopayments/client.rb +16 -4
  6. data/lib/dodopayments/errors.rb +23 -1
  7. data/lib/dodopayments/file_part.rb +2 -2
  8. data/lib/dodopayments/internal/cursor_page_pagination.rb +90 -0
  9. data/lib/dodopayments/internal/transport/base_client.rb +88 -8
  10. data/lib/dodopayments/internal/transport/pooled_net_requester.rb +17 -1
  11. data/lib/dodopayments/internal/type/array_of.rb +16 -2
  12. data/lib/dodopayments/internal/type/base_model.rb +155 -54
  13. data/lib/dodopayments/internal/type/boolean.rb +15 -1
  14. data/lib/dodopayments/internal/type/converter.rb +86 -33
  15. data/lib/dodopayments/internal/type/enum.rb +30 -6
  16. data/lib/dodopayments/internal/type/file_input.rb +13 -1
  17. data/lib/dodopayments/internal/type/hash_of.rb +16 -2
  18. data/lib/dodopayments/internal/type/request_parameters.rb +4 -4
  19. data/lib/dodopayments/internal/type/union.rb +44 -31
  20. data/lib/dodopayments/internal/type/unknown.rb +15 -1
  21. data/lib/dodopayments/internal/util.rb +119 -11
  22. data/lib/dodopayments/internal.rb +9 -0
  23. data/lib/dodopayments/models/addon_create_params.rb +6 -10
  24. data/lib/dodopayments/models/addon_list_params.rb +4 -4
  25. data/lib/dodopayments/models/addon_response.rb +6 -10
  26. data/lib/dodopayments/models/addon_update_params.rb +6 -10
  27. data/lib/dodopayments/models/attach_addon.rb +21 -0
  28. data/lib/dodopayments/models/billing_address.rb +3 -3
  29. data/lib/dodopayments/models/brand.rb +107 -0
  30. data/lib/dodopayments/models/brand_create_params.rb +44 -0
  31. data/lib/dodopayments/models/{webhook_event_retrieve_params.rb → brand_list_params.rb} +2 -2
  32. data/lib/dodopayments/models/brand_list_response.rb +17 -0
  33. data/lib/dodopayments/models/brand_retrieve_params.rb +14 -0
  34. data/lib/dodopayments/models/brand_update_images_params.rb +14 -0
  35. data/lib/dodopayments/models/brand_update_images_response.rb +25 -0
  36. data/lib/dodopayments/models/brand_update_params.rb +43 -0
  37. data/lib/dodopayments/models/create_new_customer.rb +0 -1
  38. data/lib/dodopayments/models/customer_list_params.rb +13 -5
  39. data/lib/dodopayments/models/customer_request.rb +3 -3
  40. data/lib/dodopayments/models/customers/customer_portal_create_params.rb +2 -2
  41. data/lib/dodopayments/models/discount.rb +15 -4
  42. data/lib/dodopayments/models/discount_create_params.rb +17 -6
  43. data/lib/dodopayments/models/discount_list_params.rb +4 -4
  44. data/lib/dodopayments/models/discount_update_params.rb +16 -5
  45. data/lib/dodopayments/models/dispute.rb +6 -5
  46. data/lib/dodopayments/models/dispute_list_params.rb +44 -16
  47. data/lib/dodopayments/models/dispute_list_response.rb +6 -5
  48. data/lib/dodopayments/models/{dispute_retrieve_response.rb → get_dispute.rb} +11 -9
  49. data/lib/dodopayments/models/license_key.rb +3 -3
  50. data/lib/dodopayments/models/license_key_duration.rb +1 -1
  51. data/lib/dodopayments/models/license_key_list_params.rb +23 -11
  52. data/lib/dodopayments/models/license_key_update_params.rb +3 -3
  53. data/lib/dodopayments/models/misc_list_supported_countries_response.rb +1 -1
  54. data/lib/dodopayments/models/new_customer.rb +27 -0
  55. data/lib/dodopayments/models/one_time_product_cart_item.rb +0 -1
  56. data/lib/dodopayments/models/payment.rb +50 -21
  57. data/lib/dodopayments/models/payment_create_params.rb +22 -41
  58. data/lib/dodopayments/models/payment_create_response.rb +16 -6
  59. data/lib/dodopayments/models/payment_list_params.rb +44 -16
  60. data/lib/dodopayments/models/payment_list_response.rb +16 -4
  61. data/lib/dodopayments/models/payment_method_types.rb +31 -0
  62. data/lib/dodopayments/models/payment_retrieve_line_items_params.rb +14 -0
  63. data/lib/dodopayments/models/payment_retrieve_line_items_response.rb +63 -0
  64. data/lib/dodopayments/models/payout_list_params.rb +4 -4
  65. data/lib/dodopayments/models/payout_list_response.rb +7 -3
  66. data/lib/dodopayments/models/price.rb +57 -30
  67. data/lib/dodopayments/models/product.rb +85 -12
  68. data/lib/dodopayments/models/product_create_params.rb +61 -12
  69. data/lib/dodopayments/models/product_list_params.rb +15 -7
  70. data/lib/dodopayments/models/product_list_response.rb +19 -11
  71. data/lib/dodopayments/models/product_update_files_params.rb +20 -0
  72. data/lib/dodopayments/models/product_update_files_response.rb +22 -0
  73. data/lib/dodopayments/models/product_update_params.rb +70 -13
  74. data/lib/dodopayments/models/products/image_update_params.rb +2 -2
  75. data/lib/dodopayments/models/refund.rb +15 -5
  76. data/lib/dodopayments/models/refund_create_params.rb +38 -1
  77. data/lib/dodopayments/models/refund_list_params.rb +26 -13
  78. data/lib/dodopayments/models/subscription.rb +38 -18
  79. data/lib/dodopayments/models/subscription_change_plan_params.rb +9 -23
  80. data/lib/dodopayments/models/subscription_charge_params.rb +38 -2
  81. data/lib/dodopayments/models/subscription_create_params.rb +53 -66
  82. data/lib/dodopayments/models/subscription_create_response.rb +24 -8
  83. data/lib/dodopayments/models/subscription_list_params.rb +37 -14
  84. data/lib/dodopayments/models/subscription_list_response.rb +37 -16
  85. data/lib/dodopayments/models/subscription_status.rb +0 -1
  86. data/lib/dodopayments/models/subscription_update_params.rb +10 -6
  87. data/lib/dodopayments/models/webhook_create_params.rb +86 -0
  88. data/lib/dodopayments/models/webhook_create_response.rb +88 -0
  89. data/lib/dodopayments/models/webhook_delete_params.rb +14 -0
  90. data/lib/dodopayments/models/webhook_event_type.rb +35 -0
  91. data/lib/dodopayments/models/webhook_list_params.rb +30 -0
  92. data/lib/dodopayments/models/webhook_list_response.rb +88 -0
  93. data/lib/dodopayments/models/webhook_payload.rb +161 -0
  94. data/lib/dodopayments/models/webhook_retrieve_params.rb +14 -0
  95. data/lib/dodopayments/models/webhook_retrieve_response.rb +88 -0
  96. data/lib/dodopayments/models/webhook_update_params.rb +69 -0
  97. data/lib/dodopayments/models/webhook_update_response.rb +88 -0
  98. data/lib/dodopayments/models/webhooks/header_retrieve_params.rb +16 -0
  99. data/lib/dodopayments/models/webhooks/header_retrieve_response.rb +31 -0
  100. data/lib/dodopayments/models/webhooks/header_update_params.rb +24 -0
  101. data/lib/dodopayments/models/your_webhook_url_create_params.rb +32 -0
  102. data/lib/dodopayments/models.rb +77 -3
  103. data/lib/dodopayments/request_options.rb +4 -0
  104. data/lib/dodopayments/resources/addons.rb +13 -21
  105. data/lib/dodopayments/resources/brands.rb +119 -0
  106. data/lib/dodopayments/resources/customers/customer_portal.rb +3 -3
  107. data/lib/dodopayments/resources/customers.rb +12 -10
  108. data/lib/dodopayments/resources/discounts.rb +24 -19
  109. data/lib/dodopayments/resources/disputes.rb +10 -10
  110. data/lib/dodopayments/resources/license_key_instances.rb +5 -5
  111. data/lib/dodopayments/resources/license_keys.rb +13 -13
  112. data/lib/dodopayments/resources/licenses.rb +4 -4
  113. data/lib/dodopayments/resources/misc.rb +1 -1
  114. data/lib/dodopayments/resources/payments.rb +38 -19
  115. data/lib/dodopayments/resources/payouts.rb +3 -3
  116. data/lib/dodopayments/resources/products/images.rb +2 -2
  117. data/lib/dodopayments/resources/products.rb +58 -24
  118. data/lib/dodopayments/resources/refunds.rb +14 -12
  119. data/lib/dodopayments/resources/subscriptions.rb +39 -29
  120. data/lib/dodopayments/resources/webhook_events.rb +0 -52
  121. data/lib/dodopayments/resources/webhooks/headers.rb +59 -0
  122. data/lib/dodopayments/resources/webhooks.rb +157 -0
  123. data/lib/dodopayments/resources/your_webhook_url.rb +56 -0
  124. data/lib/dodopayments/version.rb +1 -1
  125. data/lib/dodopayments.rb +46 -9
  126. data/rbi/dodopayments/client.rbi +19 -6
  127. data/rbi/dodopayments/errors.rbi +51 -16
  128. data/rbi/dodopayments/file_part.rbi +9 -6
  129. data/rbi/dodopayments/internal/cursor_page_pagination.rbi +25 -0
  130. data/rbi/dodopayments/internal/default_page_number_pagination.rbi +2 -1
  131. data/rbi/dodopayments/internal/transport/base_client.rbi +165 -77
  132. data/rbi/dodopayments/internal/transport/pooled_net_requester.rbi +33 -13
  133. data/rbi/dodopayments/internal/type/array_of.rbi +40 -24
  134. data/rbi/dodopayments/internal/type/base_model.rbi +160 -70
  135. data/rbi/dodopayments/internal/type/base_page.rbi +13 -8
  136. data/rbi/dodopayments/internal/type/boolean.rbi +24 -14
  137. data/rbi/dodopayments/internal/type/converter.rbi +135 -33
  138. data/rbi/dodopayments/internal/type/enum.rbi +29 -13
  139. data/rbi/dodopayments/internal/type/file_input.rbi +13 -4
  140. data/rbi/dodopayments/internal/type/hash_of.rbi +40 -24
  141. data/rbi/dodopayments/internal/type/request_parameters.rbi +14 -4
  142. data/rbi/dodopayments/internal/type/union.rbi +71 -23
  143. data/rbi/dodopayments/internal/type/unknown.rbi +24 -6
  144. data/rbi/dodopayments/internal/util.rbi +272 -91
  145. data/rbi/dodopayments/internal.rbi +7 -0
  146. data/rbi/dodopayments/models/addon_cart_response_item.rbi +16 -4
  147. data/rbi/dodopayments/models/addon_create_params.rbi +33 -24
  148. data/rbi/dodopayments/models/addon_list_params.rbi +29 -17
  149. data/rbi/dodopayments/models/addon_response.rbi +33 -27
  150. data/rbi/dodopayments/models/addon_retrieve_params.rbi +18 -5
  151. data/rbi/dodopayments/models/addon_update_images_params.rbi +18 -5
  152. data/rbi/dodopayments/models/addon_update_images_response.rbi +13 -3
  153. data/rbi/dodopayments/models/addon_update_params.rbi +34 -25
  154. data/rbi/dodopayments/models/attach_addon.rbi +28 -0
  155. data/rbi/dodopayments/models/attach_existing_customer.rbi +13 -3
  156. data/rbi/dodopayments/models/billing_address.rbi +24 -12
  157. data/rbi/dodopayments/models/brand.rbi +132 -0
  158. data/rbi/dodopayments/models/brand_create_params.rbi +68 -0
  159. data/rbi/dodopayments/models/brand_list_params.rbi +29 -0
  160. data/rbi/dodopayments/models/brand_list_response.rbi +34 -0
  161. data/rbi/dodopayments/models/brand_retrieve_params.rbi +32 -0
  162. data/rbi/dodopayments/models/brand_update_images_params.rbi +32 -0
  163. data/rbi/dodopayments/models/brand_update_images_response.rbi +36 -0
  164. data/rbi/dodopayments/models/brand_update_params.rbi +64 -0
  165. data/rbi/dodopayments/models/country_code.rbi +255 -252
  166. data/rbi/dodopayments/models/create_new_customer.rbi +27 -11
  167. data/rbi/dodopayments/models/currency.rbi +149 -148
  168. data/rbi/dodopayments/models/customer.rbi +27 -15
  169. data/rbi/dodopayments/models/customer_create_params.rbi +22 -14
  170. data/rbi/dodopayments/models/customer_limited_details.rbi +21 -4
  171. data/rbi/dodopayments/models/customer_list_params.rbi +43 -17
  172. data/rbi/dodopayments/models/customer_portal_session.rbi +13 -3
  173. data/rbi/dodopayments/models/customer_request.rbi +10 -2
  174. data/rbi/dodopayments/models/customer_retrieve_params.rbi +18 -5
  175. data/rbi/dodopayments/models/customer_update_params.rbi +21 -13
  176. data/rbi/dodopayments/models/customers/customer_portal_create_params.rbi +26 -8
  177. data/rbi/dodopayments/models/discount.rbi +42 -22
  178. data/rbi/dodopayments/models/discount_create_params.rbi +43 -20
  179. data/rbi/dodopayments/models/discount_delete_params.rbi +18 -5
  180. data/rbi/dodopayments/models/discount_list_params.rbi +32 -17
  181. data/rbi/dodopayments/models/discount_retrieve_params.rbi +18 -5
  182. data/rbi/dodopayments/models/discount_type.rbi +7 -4
  183. data/rbi/dodopayments/models/discount_update_params.rbi +43 -20
  184. data/rbi/dodopayments/models/dispute.rbi +32 -22
  185. data/rbi/dodopayments/models/dispute_list_params.rbi +178 -33
  186. data/rbi/dodopayments/models/dispute_list_response.rbi +34 -21
  187. data/rbi/dodopayments/models/dispute_retrieve_params.rbi +18 -5
  188. data/rbi/dodopayments/models/dispute_stage.rbi +11 -6
  189. data/rbi/dodopayments/models/dispute_status.rbi +20 -10
  190. data/rbi/dodopayments/models/{dispute_retrieve_response.rbi → get_dispute.rbi} +40 -28
  191. data/rbi/dodopayments/models/intent_status.rbi +32 -14
  192. data/rbi/dodopayments/models/invoices/payment_retrieve_params.rbi +18 -5
  193. data/rbi/dodopayments/models/license_activate_params.rbi +21 -6
  194. data/rbi/dodopayments/models/license_deactivate_params.rbi +21 -13
  195. data/rbi/dodopayments/models/license_key.rbi +31 -23
  196. data/rbi/dodopayments/models/license_key_duration.rbi +24 -5
  197. data/rbi/dodopayments/models/license_key_instance.rbi +19 -4
  198. data/rbi/dodopayments/models/license_key_instance_list_params.rbi +23 -14
  199. data/rbi/dodopayments/models/license_key_instance_retrieve_params.rbi +18 -5
  200. data/rbi/dodopayments/models/license_key_instance_update_params.rbi +19 -6
  201. data/rbi/dodopayments/models/license_key_list_params.rbi +91 -26
  202. data/rbi/dodopayments/models/license_key_retrieve_params.rbi +18 -5
  203. data/rbi/dodopayments/models/license_key_status.rbi +10 -6
  204. data/rbi/dodopayments/models/license_key_update_params.rbi +23 -14
  205. data/rbi/dodopayments/models/license_validate_params.rbi +25 -13
  206. data/rbi/dodopayments/models/license_validate_response.rbi +13 -3
  207. data/rbi/dodopayments/models/misc_list_supported_countries_params.rbi +18 -5
  208. data/rbi/dodopayments/models/misc_list_supported_countries_response.rbi +1 -1
  209. data/rbi/dodopayments/models/new_customer.rbi +39 -0
  210. data/rbi/dodopayments/models/one_time_product_cart_item.rbi +23 -4
  211. data/rbi/dodopayments/models/payment.rbi +125 -62
  212. data/rbi/dodopayments/models/payment_create_params.rbi +67 -87
  213. data/rbi/dodopayments/models/payment_create_response.rbi +45 -22
  214. data/rbi/dodopayments/models/payment_list_params.rbi +149 -32
  215. data/rbi/dodopayments/models/payment_list_response.rbi +47 -26
  216. data/rbi/dodopayments/models/payment_method_types.rbi +52 -0
  217. data/rbi/dodopayments/models/payment_retrieve_line_items_params.rbi +32 -0
  218. data/rbi/dodopayments/models/payment_retrieve_line_items_response.rbi +114 -0
  219. data/rbi/dodopayments/models/payment_retrieve_params.rbi +18 -5
  220. data/rbi/dodopayments/models/payout_list_params.rbi +29 -17
  221. data/rbi/dodopayments/models/payout_list_response.rbi +82 -35
  222. data/rbi/dodopayments/models/price.rbi +142 -55
  223. data/rbi/dodopayments/models/product.rbi +177 -38
  224. data/rbi/dodopayments/models/product_create_params.rbi +151 -36
  225. data/rbi/dodopayments/models/product_delete_params.rbi +18 -5
  226. data/rbi/dodopayments/models/product_list_params.rbi +50 -21
  227. data/rbi/dodopayments/models/product_list_response.rbi +57 -42
  228. data/rbi/dodopayments/models/product_retrieve_params.rbi +18 -5
  229. data/rbi/dodopayments/models/product_unarchive_params.rbi +18 -5
  230. data/rbi/dodopayments/models/product_update_files_params.rbi +38 -0
  231. data/rbi/dodopayments/models/product_update_files_response.rbi +29 -0
  232. data/rbi/dodopayments/models/product_update_params.rbi +160 -37
  233. data/rbi/dodopayments/models/products/image_update_params.rbi +20 -8
  234. data/rbi/dodopayments/models/products/image_update_response.rbi +18 -4
  235. data/rbi/dodopayments/models/refund.rbi +39 -21
  236. data/rbi/dodopayments/models/refund_create_params.rbi +87 -11
  237. data/rbi/dodopayments/models/refund_list_params.rbi +86 -29
  238. data/rbi/dodopayments/models/refund_retrieve_params.rbi +18 -5
  239. data/rbi/dodopayments/models/refund_status.rbi +10 -7
  240. data/rbi/dodopayments/models/subscription.rbi +83 -47
  241. data/rbi/dodopayments/models/subscription_change_plan_params.rbi +61 -40
  242. data/rbi/dodopayments/models/subscription_charge_params.rbi +65 -6
  243. data/rbi/dodopayments/models/subscription_charge_response.rbi +13 -3
  244. data/rbi/dodopayments/models/subscription_create_params.rbi +136 -128
  245. data/rbi/dodopayments/models/subscription_create_response.rbi +51 -22
  246. data/rbi/dodopayments/models/subscription_list_params.rbi +125 -29
  247. data/rbi/dodopayments/models/subscription_list_response.rbi +85 -44
  248. data/rbi/dodopayments/models/subscription_retrieve_params.rbi +18 -5
  249. data/rbi/dodopayments/models/subscription_status.rbi +16 -10
  250. data/rbi/dodopayments/models/subscription_update_params.rbi +63 -33
  251. data/rbi/dodopayments/models/tax_category.rbi +11 -7
  252. data/rbi/dodopayments/models/time_interval.rbi +10 -7
  253. data/rbi/dodopayments/models/webhook_create_params.rbi +115 -0
  254. data/rbi/dodopayments/models/webhook_create_response.rbi +112 -0
  255. data/rbi/dodopayments/models/webhook_delete_params.rbi +32 -0
  256. data/rbi/dodopayments/models/webhook_event_type.rbi +102 -0
  257. data/rbi/dodopayments/models/webhook_list_params.rbi +54 -0
  258. data/rbi/dodopayments/models/webhook_list_response.rbi +112 -0
  259. data/rbi/dodopayments/models/webhook_payload.rbi +440 -0
  260. data/rbi/dodopayments/models/webhook_retrieve_params.rbi +32 -0
  261. data/rbi/dodopayments/models/webhook_retrieve_response.rbi +112 -0
  262. data/rbi/dodopayments/models/webhook_update_params.rbi +94 -0
  263. data/rbi/dodopayments/models/webhook_update_response.rbi +112 -0
  264. data/rbi/dodopayments/models/webhooks/header_retrieve_params.rbi +34 -0
  265. data/rbi/dodopayments/models/webhooks/header_retrieve_response.rbi +50 -0
  266. data/rbi/dodopayments/models/webhooks/header_update_params.rbi +48 -0
  267. data/rbi/dodopayments/models/your_webhook_url_create_params.rbi +56 -0
  268. data/rbi/dodopayments/models.rbi +50 -8
  269. data/rbi/dodopayments/request_options.rbi +18 -7
  270. data/rbi/dodopayments/resources/addons.rbi +44 -27
  271. data/rbi/dodopayments/resources/brands.rbi +89 -0
  272. data/rbi/dodopayments/resources/customers/customer_portal.rbi +8 -6
  273. data/rbi/dodopayments/resources/customers.rbi +31 -17
  274. data/rbi/dodopayments/resources/discounts.rbi +54 -22
  275. data/rbi/dodopayments/resources/disputes.rbi +26 -14
  276. data/rbi/dodopayments/resources/invoices/payments.rbi +10 -3
  277. data/rbi/dodopayments/resources/invoices.rbi +2 -1
  278. data/rbi/dodopayments/resources/license_key_instances.rbi +25 -10
  279. data/rbi/dodopayments/resources/license_keys.rbi +29 -15
  280. data/rbi/dodopayments/resources/licenses.rbi +25 -12
  281. data/rbi/dodopayments/resources/misc.rbi +7 -4
  282. data/rbi/dodopayments/resources/payments.rbi +61 -27
  283. data/rbi/dodopayments/resources/payouts.rbi +12 -6
  284. data/rbi/dodopayments/resources/products/images.rbi +10 -4
  285. data/rbi/dodopayments/resources/products.rbi +118 -41
  286. data/rbi/dodopayments/resources/refunds.rbi +35 -15
  287. data/rbi/dodopayments/resources/subscriptions.rbi +95 -53
  288. data/rbi/dodopayments/resources/webhook_events.rbi +2 -34
  289. data/rbi/dodopayments/resources/webhooks/headers.rbi +40 -0
  290. data/rbi/dodopayments/resources/webhooks.rbi +127 -0
  291. data/rbi/dodopayments/resources/your_webhook_url.rbi +51 -0
  292. data/sig/dodopayments/client.rbs +6 -0
  293. data/sig/dodopayments/errors.rbs +9 -0
  294. data/sig/dodopayments/internal/cursor_page_pagination.rbs +15 -0
  295. data/sig/dodopayments/internal/transport/base_client.rbs +17 -2
  296. data/sig/dodopayments/internal/transport/pooled_net_requester.rbs +4 -0
  297. data/sig/dodopayments/internal/type/array_of.rbs +3 -0
  298. data/sig/dodopayments/internal/type/base_model.rbs +13 -5
  299. data/sig/dodopayments/internal/type/base_page.rbs +1 -1
  300. data/sig/dodopayments/internal/type/boolean.rbs +3 -0
  301. data/sig/dodopayments/internal/type/converter.rbs +26 -1
  302. data/sig/dodopayments/internal/type/enum.rbs +3 -0
  303. data/sig/dodopayments/internal/type/file_input.rbs +2 -0
  304. data/sig/dodopayments/internal/type/hash_of.rbs +3 -0
  305. data/sig/dodopayments/internal/type/request_parameters.rbs +5 -1
  306. data/sig/dodopayments/internal/type/union.rbs +5 -2
  307. data/sig/dodopayments/internal/type/unknown.rbs +3 -0
  308. data/sig/dodopayments/internal/util.rbs +25 -0
  309. data/sig/dodopayments/internal.rbs +4 -0
  310. data/sig/dodopayments/models/addon_cart_response_item.rbs +1 -1
  311. data/sig/dodopayments/models/addon_create_params.rbs +8 -1
  312. data/sig/dodopayments/models/addon_list_params.rbs +14 -6
  313. data/sig/dodopayments/models/addon_response.rbs +12 -1
  314. data/sig/dodopayments/models/addon_retrieve_params.rbs +1 -1
  315. data/sig/dodopayments/models/addon_update_images_params.rbs +1 -1
  316. data/sig/dodopayments/models/addon_update_images_response.rbs +1 -1
  317. data/sig/dodopayments/models/addon_update_params.rbs +9 -1
  318. data/sig/dodopayments/models/attach_addon.rbs +15 -0
  319. data/sig/dodopayments/models/attach_existing_customer.rbs +1 -1
  320. data/sig/dodopayments/models/billing_address.rbs +7 -1
  321. data/sig/dodopayments/models/brand.rbs +88 -0
  322. data/sig/dodopayments/models/brand_create_params.rbs +46 -0
  323. data/sig/dodopayments/models/{webhook_event_retrieve_params.rbs → brand_list_params.rbs} +3 -3
  324. data/sig/dodopayments/models/brand_list_response.rbs +13 -0
  325. data/sig/dodopayments/models/brand_retrieve_params.rbs +15 -0
  326. data/sig/dodopayments/models/brand_update_images_params.rbs +15 -0
  327. data/sig/dodopayments/models/brand_update_images_response.rbs +15 -0
  328. data/sig/dodopayments/models/brand_update_params.rbs +41 -0
  329. data/sig/dodopayments/models/create_new_customer.rbs +6 -1
  330. data/sig/dodopayments/models/customer.rbs +8 -1
  331. data/sig/dodopayments/models/customer_create_params.rbs +6 -1
  332. data/sig/dodopayments/models/customer_limited_details.rbs +1 -1
  333. data/sig/dodopayments/models/customer_list_params.rbs +20 -6
  334. data/sig/dodopayments/models/customer_portal_session.rbs +1 -1
  335. data/sig/dodopayments/models/customer_request.rbs +2 -3
  336. data/sig/dodopayments/models/customer_retrieve_params.rbs +1 -1
  337. data/sig/dodopayments/models/customer_update_params.rbs +5 -1
  338. data/sig/dodopayments/models/customers/customer_portal_create_params.rbs +9 -4
  339. data/sig/dodopayments/models/discount.rbs +18 -1
  340. data/sig/dodopayments/models/discount_create_params.rbs +15 -1
  341. data/sig/dodopayments/models/discount_delete_params.rbs +1 -1
  342. data/sig/dodopayments/models/discount_list_params.rbs +14 -6
  343. data/sig/dodopayments/models/discount_retrieve_params.rbs +1 -1
  344. data/sig/dodopayments/models/discount_update_params.rbs +15 -1
  345. data/sig/dodopayments/models/dispute.rbs +11 -1
  346. data/sig/dodopayments/models/dispute_list_params.rbs +84 -22
  347. data/sig/dodopayments/models/dispute_list_response.rbs +10 -1
  348. data/sig/dodopayments/models/dispute_retrieve_params.rbs +1 -1
  349. data/sig/dodopayments/models/{dispute_retrieve_response.rbs → get_dispute.rbs} +18 -6
  350. data/sig/dodopayments/models/invoices/payment_retrieve_params.rbs +1 -1
  351. data/sig/dodopayments/models/license_activate_params.rbs +5 -1
  352. data/sig/dodopayments/models/license_deactivate_params.rbs +5 -1
  353. data/sig/dodopayments/models/license_key.rbs +14 -1
  354. data/sig/dodopayments/models/license_key_duration.rbs +4 -1
  355. data/sig/dodopayments/models/license_key_instance.rbs +7 -1
  356. data/sig/dodopayments/models/license_key_instance_list_params.rbs +6 -1
  357. data/sig/dodopayments/models/license_key_instance_retrieve_params.rbs +1 -1
  358. data/sig/dodopayments/models/license_key_instance_update_params.rbs +4 -1
  359. data/sig/dodopayments/models/license_key_list_params.rbs +47 -16
  360. data/sig/dodopayments/models/license_key_retrieve_params.rbs +1 -1
  361. data/sig/dodopayments/models/license_key_update_params.rbs +6 -1
  362. data/sig/dodopayments/models/license_validate_params.rbs +5 -1
  363. data/sig/dodopayments/models/license_validate_response.rbs +1 -1
  364. data/sig/dodopayments/models/misc_list_supported_countries_params.rbs +1 -1
  365. data/sig/dodopayments/models/new_customer.rbs +21 -0
  366. data/sig/dodopayments/models/one_time_product_cart_item.rbs +5 -1
  367. data/sig/dodopayments/models/payment.rbs +60 -17
  368. data/sig/dodopayments/models/payment_create_params.rbs +23 -55
  369. data/sig/dodopayments/models/payment_create_response.rbs +21 -7
  370. data/sig/dodopayments/models/payment_list_params.rbs +85 -22
  371. data/sig/dodopayments/models/payment_list_response.rbs +25 -4
  372. data/sig/dodopayments/models/payment_method_types.rbs +48 -0
  373. data/sig/dodopayments/models/payment_retrieve_line_items_params.rbs +15 -0
  374. data/sig/dodopayments/models/payment_retrieve_line_items_response.rbs +67 -0
  375. data/sig/dodopayments/models/payment_retrieve_params.rbs +1 -1
  376. data/sig/dodopayments/models/payout_list_params.rbs +14 -6
  377. data/sig/dodopayments/models/payout_list_response.rbs +17 -1
  378. data/sig/dodopayments/models/price.rbs +53 -13
  379. data/sig/dodopayments/models/product.rbs +80 -4
  380. data/sig/dodopayments/models/product_create_params.rbs +45 -4
  381. data/sig/dodopayments/models/product_delete_params.rbs +1 -1
  382. data/sig/dodopayments/models/product_list_params.rbs +29 -10
  383. data/sig/dodopayments/models/product_list_response.rbs +20 -1
  384. data/sig/dodopayments/models/product_retrieve_params.rbs +1 -1
  385. data/sig/dodopayments/models/product_unarchive_params.rbs +1 -1
  386. data/sig/dodopayments/models/product_update_files_params.rbs +23 -0
  387. data/sig/dodopayments/models/product_update_files_response.rbs +15 -0
  388. data/sig/dodopayments/models/product_update_params.rbs +58 -4
  389. data/sig/dodopayments/models/products/image_update_params.rbs +9 -4
  390. data/sig/dodopayments/models/products/image_update_response.rbs +1 -1
  391. data/sig/dodopayments/models/refund.rbs +15 -1
  392. data/sig/dodopayments/models/refund_create_params.rbs +38 -2
  393. data/sig/dodopayments/models/refund_list_params.rbs +54 -19
  394. data/sig/dodopayments/models/refund_retrieve_params.rbs +1 -1
  395. data/sig/dodopayments/models/subscription.rbs +43 -10
  396. data/sig/dodopayments/models/subscription_change_plan_params.rbs +14 -17
  397. data/sig/dodopayments/models/subscription_charge_params.rbs +27 -2
  398. data/sig/dodopayments/models/subscription_charge_response.rbs +1 -1
  399. data/sig/dodopayments/models/subscription_create_params.rbs +58 -73
  400. data/sig/dodopayments/models/subscription_create_response.rbs +26 -7
  401. data/sig/dodopayments/models/subscription_list_params.rbs +64 -19
  402. data/sig/dodopayments/models/subscription_list_response.rbs +39 -7
  403. data/sig/dodopayments/models/subscription_retrieve_params.rbs +1 -1
  404. data/sig/dodopayments/models/subscription_status.rbs +1 -2
  405. data/sig/dodopayments/models/subscription_update_params.rbs +20 -8
  406. data/sig/dodopayments/models/webhook_create_params.rbs +65 -0
  407. data/sig/dodopayments/models/webhook_create_response.rbs +60 -0
  408. data/sig/dodopayments/models/webhook_delete_params.rbs +15 -0
  409. data/sig/dodopayments/models/webhook_event_type.rbs +54 -0
  410. data/sig/dodopayments/models/webhook_list_params.rbs +28 -0
  411. data/sig/dodopayments/models/webhook_list_response.rbs +60 -0
  412. data/sig/dodopayments/models/webhook_payload.rbs +203 -0
  413. data/sig/dodopayments/models/webhook_retrieve_params.rbs +15 -0
  414. data/sig/dodopayments/models/webhook_retrieve_response.rbs +60 -0
  415. data/sig/dodopayments/models/webhook_update_params.rbs +51 -0
  416. data/sig/dodopayments/models/webhook_update_response.rbs +60 -0
  417. data/sig/dodopayments/models/webhooks/header_retrieve_params.rbs +17 -0
  418. data/sig/dodopayments/models/webhooks/header_retrieve_response.rbs +24 -0
  419. data/sig/dodopayments/models/webhooks/header_update_params.rbs +26 -0
  420. data/sig/dodopayments/models/your_webhook_url_create_params.rbs +42 -0
  421. data/sig/dodopayments/models.rbs +39 -3
  422. data/sig/dodopayments/request_options.rbs +1 -1
  423. data/sig/dodopayments/resources/addons.rbs +6 -6
  424. data/sig/dodopayments/resources/brands.rbs +39 -0
  425. data/sig/dodopayments/resources/customers/customer_portal.rbs +2 -2
  426. data/sig/dodopayments/resources/customers.rbs +7 -6
  427. data/sig/dodopayments/resources/discounts.rbs +8 -6
  428. data/sig/dodopayments/resources/disputes.rbs +8 -8
  429. data/sig/dodopayments/resources/license_key_instances.rbs +3 -3
  430. data/sig/dodopayments/resources/license_keys.rbs +8 -8
  431. data/sig/dodopayments/resources/licenses.rbs +1 -1
  432. data/sig/dodopayments/resources/payments.rbs +17 -11
  433. data/sig/dodopayments/resources/payouts.rbs +2 -2
  434. data/sig/dodopayments/resources/products/images.rbs +1 -1
  435. data/sig/dodopayments/resources/products.rbs +20 -7
  436. data/sig/dodopayments/resources/refunds.rbs +10 -9
  437. data/sig/dodopayments/resources/subscriptions.rbs +21 -15
  438. data/sig/dodopayments/resources/webhook_events.rbs +0 -15
  439. data/sig/dodopayments/resources/webhooks/headers.rbs +20 -0
  440. data/sig/dodopayments/resources/webhooks.rbs +48 -0
  441. data/sig/dodopayments/resources/your_webhook_url.rbs +18 -0
  442. metadata +110 -14
  443. data/lib/dodopayments/models/webhook_event.rb +0 -58
  444. data/lib/dodopayments/models/webhook_event_list_params.rb +0 -66
  445. data/rbi/dodopayments/models/webhook_event.rbi +0 -71
  446. data/rbi/dodopayments/models/webhook_event_list_params.rbi +0 -77
  447. data/rbi/dodopayments/models/webhook_event_retrieve_params.rbi +0 -19
  448. data/sig/dodopayments/models/webhook_event.rbs +0 -46
  449. data/sig/dodopayments/models/webhook_event_list_params.rbs +0 -43
@@ -5,6 +5,8 @@ module Dodopayments
5
5
  module Type
6
6
  # @api private
7
7
  module Converter
8
+ extend Dodopayments::Internal::Util::SorbetRuntimeSupport
9
+
8
10
  # rubocop:disable Lint/UnusedMethodArgument
9
11
 
10
12
  # @api private
@@ -13,10 +15,14 @@ module Dodopayments
13
15
  #
14
16
  # @param state [Hash{Symbol=>Object}] .
15
17
  #
16
- # @option state [Boolean, :strong] :strictness
18
+ # @option state [Boolean] :translate_names
19
+ #
20
+ # @option state [Boolean] :strictness
17
21
  #
18
22
  # @option state [Hash{Symbol=>Object}] :exactness
19
23
  #
24
+ # @option state [Class<StandardError>] :error
25
+ #
20
26
  # @option state [Integer] :branched
21
27
  #
22
28
  # @return [Object]
@@ -92,6 +98,48 @@ module Dodopayments
92
98
  end
93
99
  end
94
100
 
101
+ # @api private
102
+ #
103
+ # @param type_info [Hash{Symbol=>Object}, Proc, Dodopayments::Internal::Type::Converter, Class] .
104
+ #
105
+ # @option type_info [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
106
+ #
107
+ # @option type_info [Proc] :enum
108
+ #
109
+ # @option type_info [Proc] :union
110
+ #
111
+ # @option type_info [Boolean] :"nil?"
112
+ #
113
+ # @param spec [Hash{Symbol=>Object}, Proc, Dodopayments::Internal::Type::Converter, Class] .
114
+ #
115
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
116
+ #
117
+ # @option spec [Proc] :enum
118
+ #
119
+ # @option spec [Proc] :union
120
+ #
121
+ # @option spec [Boolean] :"nil?"
122
+ #
123
+ # @return [Hash{Symbol=>Object}]
124
+ def meta_info(type_info, spec)
125
+ [spec, type_info].grep(Hash).first.to_h.except(:const, :enum, :union, :nil?)
126
+ end
127
+
128
+ # @api private
129
+ #
130
+ # @param translate_names [Boolean]
131
+ #
132
+ # @return [Hash{Symbol=>Object}]
133
+ def new_coerce_state(translate_names: true)
134
+ {
135
+ translate_names: translate_names,
136
+ strictness: true,
137
+ exactness: {yes: 0, no: 0, maybe: 0},
138
+ error: nil,
139
+ branched: 0
140
+ }
141
+ end
142
+
95
143
  # @api private
96
144
  #
97
145
  # Based on `target`, transform `value` into `target`, to the extent possible:
@@ -108,14 +156,11 @@ module Dodopayments
108
156
  #
109
157
  # @param value [Object]
110
158
  #
111
- # @param state [Hash{Symbol=>Object}] The `strictness` is one of `true`, `false`, or `:strong`. This informs the
112
- # coercion strategy when we have to decide between multiple possible conversion
113
- # targets:
159
+ # @param state [Hash{Symbol=>Object}] The `strictness` is one of `true`, `false`. This informs the coercion strategy
160
+ # when we have to decide between multiple possible conversion targets:
114
161
  #
115
162
  # - `true`: the conversion must be exact, with minimum coercion.
116
163
  # - `false`: the conversion can be approximate, with some coercion.
117
- # - `:strong`: the conversion must be exact, with no coercion, and raise an error
118
- # if not possible.
119
164
  #
120
165
  # The `exactness` is `Hash` with keys being one of `yes`, `no`, or `maybe`. For
121
166
  # any given conversion attempt, the exactness will be updated based on how closely
@@ -128,21 +173,20 @@ module Dodopayments
128
173
  #
129
174
  # See implementation below for more details.
130
175
  #
131
- # @option state [Boolean, :strong] :strictness
176
+ # @option state [Boolean] :translate_names
177
+ #
178
+ # @option state [Boolean] :strictness
132
179
  #
133
180
  # @option state [Hash{Symbol=>Object}] :exactness
134
181
  #
182
+ # @option state [Class<StandardError>] :error
183
+ #
135
184
  # @option state [Integer] :branched
136
185
  #
137
186
  # @return [Object]
138
- def coerce(
139
- target,
140
- value,
141
- state: {strictness: true, exactness: {yes: 0, no: 0, maybe: 0}, branched: 0}
142
- )
143
- # rubocop:disable Lint/SuppressedException
187
+ def coerce(target, value, state: Dodopayments::Internal::Type::Converter.new_coerce_state)
144
188
  # rubocop:disable Metrics/BlockNesting
145
- strictness, exactness = state.fetch_values(:strictness, :exactness)
189
+ exactness = state.fetch(:exactness)
146
190
 
147
191
  case target
148
192
  in Dodopayments::Internal::Type::Converter
@@ -158,29 +202,26 @@ module Dodopayments
158
202
  exactness[value.nil? ? :yes : :maybe] += 1
159
203
  return nil
160
204
  in -> { _1 <= Integer }
161
- if value.is_a?(Integer)
205
+ case value
206
+ in Integer
162
207
  exactness[:yes] += 1
163
208
  return value
164
- elsif strictness == :strong && Integer(value, exception: false) != value
165
- message = "no implicit conversion of #{value.class} into #{target.inspect}"
166
- raise value.is_a?(Numeric) ? ArgumentError.new(message) : TypeError.new(message)
167
209
  else
168
210
  Kernel.then do
169
211
  return Integer(value).tap { exactness[:maybe] += 1 }
170
- rescue ArgumentError, TypeError
212
+ rescue ArgumentError, TypeError => e
213
+ state[:error] = e
171
214
  end
172
215
  end
173
216
  in -> { _1 <= Float }
174
217
  if value.is_a?(Numeric)
175
218
  exactness[:yes] += 1
176
219
  return Float(value)
177
- elsif strictness == :strong
178
- message = "no implicit conversion of #{value.class} into #{target.inspect}"
179
- raise TypeError.new(message)
180
220
  else
181
221
  Kernel.then do
182
222
  return Float(value).tap { exactness[:maybe] += 1 }
183
- rescue ArgumentError, TypeError
223
+ rescue ArgumentError, TypeError => e
224
+ state[:error] = e
184
225
  end
185
226
  end
186
227
  in -> { _1 <= String }
@@ -192,16 +233,13 @@ module Dodopayments
192
233
  exactness[:yes] += 1
193
234
  return value.string
194
235
  else
195
- if strictness == :strong
196
- message = "no implicit conversion of #{value.class} into #{target.inspect}"
197
- raise TypeError.new(message)
198
- end
236
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{String}")
199
237
  end
200
238
  in -> { _1 <= Date || _1 <= Time }
201
239
  Kernel.then do
202
240
  return target.parse(value).tap { exactness[:yes] += 1 }
203
241
  rescue ArgumentError, TypeError => e
204
- raise e if strictness == :strong
242
+ state[:error] = e
205
243
  end
206
244
  in -> { _1 <= StringIO } if value.is_a?(String)
207
245
  exactness[:yes] += 1
@@ -219,10 +257,8 @@ module Dodopayments
219
257
  return value
220
258
  end
221
259
  else
222
- if strictness == :strong
223
- message = "cannot convert non-matching #{value.class} into #{target.inspect}"
224
- raise ArgumentError.new(message)
225
- end
260
+ message = "cannot convert non-matching #{value.class} into #{target.inspect}"
261
+ state[:error] = ArgumentError.new(message)
226
262
  end
227
263
  else
228
264
  end
@@ -230,7 +266,6 @@ module Dodopayments
230
266
  exactness[:no] += 1
231
267
  value
232
268
  # rubocop:enable Metrics/BlockNesting
233
- # rubocop:enable Lint/SuppressedException
234
269
  end
235
270
 
236
271
  # @api private
@@ -268,6 +303,24 @@ module Dodopayments
268
303
  end
269
304
  end
270
305
  end
306
+
307
+ define_sorbet_constant!(:Input) do
308
+ T.type_alias { T.any(Dodopayments::Internal::Type::Converter, T::Class[T.anything]) }
309
+ end
310
+ define_sorbet_constant!(:CoerceState) do
311
+ T.type_alias do
312
+ {
313
+ translate_names: T::Boolean,
314
+ strictness: T::Boolean,
315
+ exactness: {yes: Integer, no: Integer, maybe: Integer},
316
+ error: T::Class[StandardError],
317
+ branched: Integer
318
+ }
319
+ end
320
+ end
321
+ define_sorbet_constant!(:DumpState) do
322
+ T.type_alias { {can_retry: T::Boolean} }
323
+ end
271
324
  end
272
325
  end
273
326
  end
@@ -17,13 +17,13 @@ module Dodopayments
17
17
  # values safely.
18
18
  #
19
19
  # @example
20
- # # `intent_status` is a `Dodopayments::Models::IntentStatus`
20
+ # # `intent_status` is a `Dodopayments::IntentStatus`
21
21
  # case intent_status
22
- # when Dodopayments::Models::IntentStatus::SUCCEEDED
22
+ # when Dodopayments::IntentStatus::SUCCEEDED
23
23
  # # ...
24
- # when Dodopayments::Models::IntentStatus::FAILED
24
+ # when Dodopayments::IntentStatus::FAILED
25
25
  # # ...
26
- # when Dodopayments::Models::IntentStatus::CANCELLED
26
+ # when Dodopayments::IntentStatus::CANCELLED
27
27
  # # ...
28
28
  # else
29
29
  # puts(intent_status)
@@ -42,6 +42,7 @@ module Dodopayments
42
42
  # end
43
43
  module Enum
44
44
  include Dodopayments::Internal::Type::Converter
45
+ include Dodopayments::Internal::Util::SorbetRuntimeSupport
45
46
 
46
47
  # All of the valid Symbol values for this enum.
47
48
  #
@@ -80,10 +81,14 @@ module Dodopayments
80
81
  #
81
82
  # @param state [Hash{Symbol=>Object}] .
82
83
  #
83
- # @option state [Boolean, :strong] :strictness
84
+ # @option state [Boolean] :translate_names
85
+ #
86
+ # @option state [Boolean] :strictness
84
87
  #
85
88
  # @option state [Hash{Symbol=>Object}] :exactness
86
89
  #
90
+ # @option state [Class<StandardError>] :error
91
+ #
87
92
  # @option state [Integer] :branched
88
93
  #
89
94
  # @return [Symbol, Object]
@@ -94,8 +99,12 @@ module Dodopayments
94
99
  if values.include?(val)
95
100
  exactness[:yes] += 1
96
101
  val
102
+ elsif values.first&.class == val.class
103
+ exactness[:maybe] += 1
104
+ value
97
105
  else
98
- exactness[values.first&.class == val.class ? :maybe : :no] += 1
106
+ exactness[:no] += 1
107
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{self}")
99
108
  value
100
109
  end
101
110
  end
@@ -111,6 +120,21 @@ module Dodopayments
111
120
  #
112
121
  # @return [Symbol, Object]
113
122
 
123
+ # @api private
124
+ #
125
+ # @return [Object]
126
+ def to_sorbet_type
127
+ types = values.map { Dodopayments::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(_1) }.uniq
128
+ case types
129
+ in []
130
+ T.noreturn
131
+ in [type]
132
+ type
133
+ else
134
+ T.any(*types)
135
+ end
136
+ end
137
+
114
138
  # @api private
115
139
  #
116
140
  # @param depth [Integer]
@@ -45,10 +45,14 @@ module Dodopayments
45
45
  #
46
46
  # @param state [Hash{Symbol=>Object}] .
47
47
  #
48
- # @option state [Boolean, :strong] :strictness
48
+ # @option state [Boolean] :translate_names
49
+ #
50
+ # @option state [Boolean] :strictness
49
51
  #
50
52
  # @option state [Hash{Symbol=>Object}] :exactness
51
53
  #
54
+ # @option state [Class<StandardError>] :error
55
+ #
52
56
  # @option state [Integer] :branched
53
57
  #
54
58
  # @return [StringIO, Object]
@@ -62,6 +66,7 @@ module Dodopayments
62
66
  exactness[:yes] += 1
63
67
  value
64
68
  else
69
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{StringIO}")
65
70
  exactness[:no] += 1
66
71
  value
67
72
  end
@@ -89,6 +94,13 @@ module Dodopayments
89
94
 
90
95
  value
91
96
  end
97
+
98
+ # @api private
99
+ #
100
+ # @return [Object]
101
+ def to_sorbet_type
102
+ T.any(Pathname, StringIO, IO, String, Dodopayments::FilePart)
103
+ end
92
104
  end
93
105
  end
94
106
  end
@@ -12,6 +12,7 @@ module Dodopayments
12
12
  # Hash of items of a given type.
13
13
  class HashOf
14
14
  include Dodopayments::Internal::Type::Converter
15
+ include Dodopayments::Internal::Util::SorbetRuntimeSupport
15
16
 
16
17
  private_class_method :new
17
18
 
@@ -29,7 +30,7 @@ module Dodopayments
29
30
  #
30
31
  # @option spec [Boolean] :"nil?"
31
32
  #
32
- # @return [Dodopayments::Internal::Type::HashOf]
33
+ # @return [self]
33
34
  def self.[](...) = new(...)
34
35
 
35
36
  # @api public
@@ -76,10 +77,14 @@ module Dodopayments
76
77
  #
77
78
  # @param state [Hash{Symbol=>Object}] .
78
79
  #
79
- # @option state [Boolean, :strong] :strictness
80
+ # @option state [Boolean] :translate_names
81
+ #
82
+ # @option state [Boolean] :strictness
80
83
  #
81
84
  # @option state [Hash{Symbol=>Object}] :exactness
82
85
  #
86
+ # @option state [Class<StandardError>] :error
87
+ #
83
88
  # @option state [Integer] :branched
84
89
  #
85
90
  # @return [Hash{Symbol=>Object}, Object]
@@ -88,6 +93,7 @@ module Dodopayments
88
93
 
89
94
  unless value.is_a?(Hash)
90
95
  exactness[:no] += 1
96
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{Hash}")
91
97
  return value
92
98
  end
93
99
 
@@ -130,6 +136,13 @@ module Dodopayments
130
136
  end
131
137
  end
132
138
 
139
+ # @api private
140
+ #
141
+ # @return [Object]
142
+ def to_sorbet_type
143
+ T::Hash[Dodopayments::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(item_type)]
144
+ end
145
+
133
146
  # @api private
134
147
  #
135
148
  # @return [generic<Elem>]
@@ -155,6 +168,7 @@ module Dodopayments
155
168
  # @option spec [Boolean] :"nil?"
156
169
  def initialize(type_info, spec = {})
157
170
  @item_type_fn = Dodopayments::Internal::Type::Converter.type_info(type_info || spec)
171
+ @meta = Dodopayments::Internal::Type::Converter.meta_info(type_info, spec)
158
172
  @nilable = spec.fetch(:nil?, false)
159
173
  end
160
174
 
@@ -5,10 +5,10 @@ module Dodopayments
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 [Dodopayments::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 [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
12
12
 
13
13
  # @param mod [Module]
14
14
  def self.included(mod)
@@ -6,46 +6,37 @@ module Dodopayments
6
6
  # @api private
7
7
  #
8
8
  # @example
9
- # # `price` is a `Dodopayments::Models::Price`
10
- # case price
11
- # when Dodopayments::Models::Price::OneTimePrice
12
- # puts(price.currency)
13
- # when Dodopayments::Models::Price::RecurringPrice
14
- # puts(price.discount)
9
+ # # `customer_request` is a `Dodopayments::CustomerRequest`
10
+ # case customer_request
11
+ # when Dodopayments::AttachExistingCustomer
12
+ # puts(customer_request.customer_id)
13
+ # when Dodopayments::NewCustomer
14
+ # puts(customer_request.email)
15
15
  # else
16
- # puts(price)
17
- # end
18
- #
19
- # @example
20
- # case price
21
- # in {type: :one_time_price, currency: currency, discount: discount, price: price}
22
- # puts(currency)
23
- # in {type: :recurring_price, currency: currency, discount: discount, payment_frequency_count: payment_frequency_count}
24
- # puts(discount)
25
- # else
26
- # puts(price)
16
+ # puts(customer_request)
27
17
  # end
28
18
  module Union
29
19
  include Dodopayments::Internal::Type::Converter
20
+ include Dodopayments::Internal::Util::SorbetRuntimeSupport
30
21
 
31
22
  # @api private
32
23
  #
33
24
  # All of the specified variant info for this union.
34
25
  #
35
- # @return [Array<Array(Symbol, Proc)>]
26
+ # @return [Array<Array(Symbol, Proc, Hash{Symbol=>Object})>]
36
27
  private def known_variants = (@known_variants ||= [])
37
28
 
38
29
  # @api private
39
30
  #
40
- # @return [Array<Array(Symbol, Object)>]
31
+ # @return [Array<Array(Symbol, Object, Hash{Symbol=>Object})>]
41
32
  protected def derefed_variants
42
- known_variants.map { |key, variant_fn| [key, variant_fn.call] }
33
+ known_variants.map { |key, variant_fn, meta| [key, variant_fn.call, meta] }
43
34
  end
44
35
 
45
36
  # All of the specified variants for this union.
46
37
  #
47
38
  # @return [Array<Object>]
48
- def variants = derefed_variants.map(&:last)
39
+ def variants = derefed_variants.map { _2 }
49
40
 
50
41
  # @api private
51
42
  #
@@ -71,12 +62,13 @@ module Dodopayments
71
62
  #
72
63
  # @option spec [Boolean] :"nil?"
73
64
  private def variant(key, spec = nil)
65
+ meta = Dodopayments::Internal::Type::Converter.meta_info(nil, spec)
74
66
  variant_info =
75
67
  case key
76
68
  in Symbol
77
- [key, Dodopayments::Internal::Type::Converter.type_info(spec)]
69
+ [key, Dodopayments::Internal::Type::Converter.type_info(spec), meta]
78
70
  in Proc | Dodopayments::Internal::Type::Converter | Class | Hash
79
- [nil, Dodopayments::Internal::Type::Converter.type_info(key)]
71
+ [nil, Dodopayments::Internal::Type::Converter.type_info(key), meta]
80
72
  end
81
73
 
82
74
  known_variants << variant_info
@@ -99,7 +91,8 @@ module Dodopayments
99
91
  return nil if key == Dodopayments::Internal::OMIT
100
92
 
101
93
  key = key.to_sym if key.is_a?(String)
102
- known_variants.find { |k,| k == key }&.last&.call
94
+ _, found = known_variants.find { |k,| k == key }
95
+ found&.call
103
96
  else
104
97
  nil
105
98
  end
@@ -135,14 +128,23 @@ module Dodopayments
135
128
 
136
129
  # @api private
137
130
  #
131
+ # Tries to efficiently coerce the given value to one of the known variants.
132
+ #
133
+ # If the value cannot match any of the known variants, the coercion is considered
134
+ # non-viable and returns the original value.
135
+ #
138
136
  # @param value [Object]
139
137
  #
140
138
  # @param state [Hash{Symbol=>Object}] .
141
139
  #
142
- # @option state [Boolean, :strong] :strictness
140
+ # @option state [Boolean] :translate_names
141
+ #
142
+ # @option state [Boolean] :strictness
143
143
  #
144
144
  # @option state [Hash{Symbol=>Object}] :exactness
145
145
  #
146
+ # @option state [Class<StandardError>] :error
147
+ #
146
148
  # @option state [Integer] :branched
147
149
  #
148
150
  # @return [Object]
@@ -153,7 +155,6 @@ module Dodopayments
153
155
 
154
156
  strictness = state.fetch(:strictness)
155
157
  exactness = state.fetch(:exactness)
156
- state[:strictness] = strictness == :strong ? true : strictness
157
158
 
158
159
  alternatives = []
159
160
  known_variants.each do |_, variant_fn|
@@ -172,13 +173,10 @@ module Dodopayments
172
173
  end
173
174
  end
174
175
 
175
- case alternatives.sort_by(&:first)
176
+ case alternatives.sort_by!(&:first)
176
177
  in []
177
178
  exactness[:no] += 1
178
- if strictness == :strong
179
- message = "no possible conversion of #{value.class} into a variant of #{target.inspect}"
180
- raise ArgumentError.new(message)
181
- end
179
+ state[:error] = ArgumentError.new("no matching variant for #{value.inspect}")
182
180
  value
183
181
  in [[_, exact, coerced], *]
184
182
  exact.each { exactness[_1] += _2 }
@@ -217,6 +215,21 @@ module Dodopayments
217
215
  super
218
216
  end
219
217
 
218
+ # @api private
219
+ #
220
+ # @return [Object]
221
+ def to_sorbet_type
222
+ types = variants.map { Dodopayments::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(_1) }.uniq
223
+ case types
224
+ in []
225
+ T.noreturn
226
+ in [type]
227
+ type
228
+ else
229
+ T.any(*types)
230
+ end
231
+ end
232
+
220
233
  # rubocop:enable Style/CaseEquality
221
234
  # rubocop:enable Style/HashEachMethods
222
235
 
@@ -10,6 +10,7 @@ module Dodopayments
10
10
  # When we don't know what to expect for the value.
11
11
  class Unknown
12
12
  extend Dodopayments::Internal::Type::Converter
13
+ extend Dodopayments::Internal::Util::SorbetRuntimeSupport
13
14
 
14
15
  # rubocop:disable Lint/UnusedMethodArgument
15
16
 
@@ -32,14 +33,20 @@ module Dodopayments
32
33
  class << self
33
34
  # @api private
34
35
  #
36
+ # No coercion needed for Unknown type.
37
+ #
35
38
  # @param value [Object]
36
39
  #
37
40
  # @param state [Hash{Symbol=>Object}] .
38
41
  #
39
- # @option state [Boolean, :strong] :strictness
42
+ # @option state [Boolean] :translate_names
43
+ #
44
+ # @option state [Boolean] :strictness
40
45
  #
41
46
  # @option state [Hash{Symbol=>Object}] :exactness
42
47
  #
48
+ # @option state [Class<StandardError>] :error
49
+ #
43
50
  # @option state [Integer] :branched
44
51
  #
45
52
  # @return [Object]
@@ -58,6 +65,13 @@ module Dodopayments
58
65
  # @option state [Boolean] :can_retry
59
66
  #
60
67
  # @return [Object]
68
+
69
+ # @api private
70
+ #
71
+ # @return [Object]
72
+ def to_sorbet_type
73
+ T.anything
74
+ end
61
75
  end
62
76
 
63
77
  # rubocop:enable Lint/UnusedMethodArgument