dodopayments 0.0.1.pre.alpha.0 → 1.16.1

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 (381) hide show
  1. checksums.yaml +4 -4
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +132 -0
  4. data/README.md +84 -23
  5. data/SECURITY.md +27 -0
  6. data/lib/dodopayments/client.rb +15 -19
  7. data/lib/dodopayments/errors.rb +168 -159
  8. data/lib/dodopayments/internal/default_page_number_pagination.rb +91 -0
  9. data/lib/dodopayments/internal/transport/base_client.rb +486 -0
  10. data/lib/dodopayments/internal/transport/pooled_net_requester.rb +197 -0
  11. data/lib/dodopayments/internal/type/array_of.rb +143 -0
  12. data/lib/dodopayments/internal/type/base_model.rb +423 -0
  13. data/lib/dodopayments/internal/type/base_page.rb +47 -0
  14. data/lib/dodopayments/internal/type/boolean.rb +60 -0
  15. data/lib/dodopayments/internal/type/converter.rb +271 -0
  16. data/lib/dodopayments/internal/type/enum.rb +129 -0
  17. data/lib/dodopayments/internal/type/hash_of.rb +163 -0
  18. data/lib/dodopayments/internal/type/io_like.rb +77 -0
  19. data/lib/dodopayments/internal/type/request_parameters.rb +49 -0
  20. data/lib/dodopayments/internal/type/union.rb +232 -0
  21. data/lib/dodopayments/internal/type/unknown.rb +64 -0
  22. data/lib/dodopayments/internal/util.rb +782 -0
  23. data/lib/dodopayments/internal.rb +12 -0
  24. data/lib/dodopayments/models/attach_existing_customer.rb +2 -2
  25. data/lib/dodopayments/models/billing_address.rb +2 -2
  26. data/lib/dodopayments/models/country_code.rb +7 -3
  27. data/lib/dodopayments/models/create_new_customer.rb +5 -5
  28. data/lib/dodopayments/models/customer.rb +3 -2
  29. data/lib/dodopayments/models/customer_create_params.rb +5 -4
  30. data/lib/dodopayments/models/customer_limited_details.rb +2 -2
  31. data/lib/dodopayments/models/customer_list_params.rb +5 -4
  32. data/lib/dodopayments/models/customer_portal_session.rb +2 -2
  33. data/lib/dodopayments/models/customer_request.rb +5 -6
  34. data/lib/dodopayments/models/customer_retrieve_params.rb +5 -4
  35. data/lib/dodopayments/models/customer_update_params.rb +5 -4
  36. data/lib/dodopayments/models/customers/customer_portal_create_params.rb +6 -5
  37. data/lib/dodopayments/models/discount.rb +7 -6
  38. data/lib/dodopayments/models/discount_create_params.rb +13 -12
  39. data/lib/dodopayments/models/discount_delete_params.rb +5 -4
  40. data/lib/dodopayments/models/discount_list_params.rb +5 -4
  41. data/lib/dodopayments/models/discount_retrieve_params.rb +5 -4
  42. data/lib/dodopayments/models/discount_type.rb +7 -2
  43. data/lib/dodopayments/models/discount_update_params.rb +11 -10
  44. data/lib/dodopayments/models/dispute.rb +4 -3
  45. data/lib/dodopayments/models/dispute_list_params.rb +5 -4
  46. data/lib/dodopayments/models/dispute_retrieve_params.rb +5 -4
  47. data/lib/dodopayments/models/dispute_stage.rb +7 -2
  48. data/lib/dodopayments/models/dispute_status.rb +7 -2
  49. data/lib/dodopayments/models/intent_status.rb +7 -2
  50. data/lib/dodopayments/models/invoices/payment_retrieve_params.rb +5 -4
  51. data/lib/dodopayments/models/license_activate_params.rb +5 -4
  52. data/lib/dodopayments/models/license_deactivate_params.rb +5 -4
  53. data/lib/dodopayments/models/license_key.rb +4 -3
  54. data/lib/dodopayments/models/license_key_duration.rb +2 -2
  55. data/lib/dodopayments/models/license_key_instance.rb +3 -2
  56. data/lib/dodopayments/models/license_key_instance_list_params.rb +5 -4
  57. data/lib/dodopayments/models/license_key_instance_retrieve_params.rb +5 -4
  58. data/lib/dodopayments/models/license_key_instance_update_params.rb +5 -4
  59. data/lib/dodopayments/models/license_key_list_params.rb +5 -4
  60. data/lib/dodopayments/models/license_key_retrieve_params.rb +5 -4
  61. data/lib/dodopayments/models/license_key_status.rb +7 -2
  62. data/lib/dodopayments/models/license_key_update_params.rb +9 -8
  63. data/lib/dodopayments/models/license_validate_params.rb +5 -4
  64. data/lib/dodopayments/models/license_validate_response.rb +4 -3
  65. data/lib/dodopayments/models/misc_list_supported_countries_params.rb +5 -4
  66. data/lib/dodopayments/models/misc_list_supported_countries_response.rb +2 -1
  67. data/lib/dodopayments/models/one_time_product_cart_item.rb +4 -3
  68. data/lib/dodopayments/models/payment.rb +18 -11
  69. data/lib/dodopayments/models/payment_create_params.rb +232 -9
  70. data/lib/dodopayments/models/payment_create_response.rb +6 -5
  71. data/lib/dodopayments/models/payment_list_params.rb +5 -4
  72. data/lib/dodopayments/models/payment_list_response.rb +12 -5
  73. data/lib/dodopayments/models/payment_retrieve_params.rb +5 -4
  74. data/lib/dodopayments/models/payout_list_params.rb +5 -4
  75. data/lib/dodopayments/models/payout_list_response.rb +21 -6
  76. data/lib/dodopayments/models/price.rb +41 -30
  77. data/lib/dodopayments/models/product.rb +17 -10
  78. data/lib/dodopayments/models/product_create_params.rb +16 -11
  79. data/lib/dodopayments/models/product_delete_params.rb +5 -4
  80. data/lib/dodopayments/models/product_list_params.rb +10 -9
  81. data/lib/dodopayments/models/product_list_response.rb +30 -17
  82. data/lib/dodopayments/models/product_retrieve_params.rb +5 -4
  83. data/lib/dodopayments/models/product_unarchive_params.rb +5 -4
  84. data/lib/dodopayments/models/product_update_params.rb +22 -17
  85. data/lib/dodopayments/models/products/image_update_params.rb +6 -5
  86. data/lib/dodopayments/models/products/image_update_response.rb +3 -2
  87. data/lib/dodopayments/models/refund.rb +11 -4
  88. data/lib/dodopayments/models/refund_create_params.rb +6 -13
  89. data/lib/dodopayments/models/refund_list_params.rb +5 -4
  90. data/lib/dodopayments/models/refund_retrieve_params.rb +5 -4
  91. data/lib/dodopayments/models/refund_status.rb +7 -2
  92. data/lib/dodopayments/models/subscription.rb +21 -7
  93. data/lib/dodopayments/models/subscription_charge_params.rb +27 -0
  94. data/lib/dodopayments/models/subscription_charge_response.rb +20 -0
  95. data/lib/dodopayments/models/subscription_create_params.rb +262 -8
  96. data/lib/dodopayments/models/subscription_create_response.rb +6 -5
  97. data/lib/dodopayments/models/subscription_list_params.rb +5 -4
  98. data/lib/dodopayments/models/subscription_retrieve_params.rb +5 -4
  99. data/lib/dodopayments/models/subscription_status.rb +7 -2
  100. data/lib/dodopayments/models/subscription_update_params.rb +19 -6
  101. data/lib/dodopayments/models/time_interval.rb +7 -2
  102. data/lib/dodopayments/models/webhook_event.rb +3 -2
  103. data/lib/dodopayments/models/webhook_event_list_params.rb +6 -5
  104. data/lib/dodopayments/models/webhook_event_retrieve_params.rb +5 -4
  105. data/lib/dodopayments/request_options.rb +12 -47
  106. data/lib/dodopayments/resources/customers/customer_portal.rb +10 -8
  107. data/lib/dodopayments/resources/customers.rb +30 -29
  108. data/lib/dodopayments/resources/discounts.rb +45 -69
  109. data/lib/dodopayments/resources/disputes.rb +20 -22
  110. data/lib/dodopayments/resources/invoices/payments.rb +8 -5
  111. data/lib/dodopayments/resources/invoices.rb +2 -0
  112. data/lib/dodopayments/resources/license_key_instances.rb +23 -21
  113. data/lib/dodopayments/resources/license_keys.rb +27 -32
  114. data/lib/dodopayments/resources/licenses.rb +20 -18
  115. data/lib/dodopayments/resources/misc.rb +7 -3
  116. data/lib/dodopayments/resources/payments.rb +36 -43
  117. data/lib/dodopayments/resources/payouts.rb +9 -7
  118. data/lib/dodopayments/resources/products/images.rb +9 -7
  119. data/lib/dodopayments/resources/products.rb +59 -87
  120. data/lib/dodopayments/resources/refunds.rb +25 -29
  121. data/lib/dodopayments/resources/subscriptions.rb +68 -54
  122. data/lib/dodopayments/resources/webhook_events.rb +20 -21
  123. data/lib/dodopayments/version.rb +1 -1
  124. data/lib/dodopayments.rb +34 -7
  125. data/manifest.yaml +1 -0
  126. data/rbi/lib/dodopayments/client.rbi +32 -47
  127. data/rbi/lib/dodopayments/errors.rbi +125 -161
  128. data/rbi/lib/dodopayments/internal/default_page_number_pagination.rbi +18 -0
  129. data/rbi/lib/dodopayments/internal/transport/base_client.rbi +199 -0
  130. data/rbi/lib/dodopayments/internal/transport/pooled_net_requester.rbi +60 -0
  131. data/rbi/lib/dodopayments/internal/type/array_of.rbi +85 -0
  132. data/rbi/lib/dodopayments/internal/type/base_model.rbi +214 -0
  133. data/rbi/lib/dodopayments/internal/type/base_page.rbi +36 -0
  134. data/rbi/lib/dodopayments/internal/type/boolean.rbi +48 -0
  135. data/rbi/lib/dodopayments/internal/type/converter.rbi +120 -0
  136. data/rbi/lib/dodopayments/internal/type/enum.rbi +69 -0
  137. data/rbi/lib/dodopayments/internal/type/hash_of.rbi +85 -0
  138. data/rbi/lib/dodopayments/internal/type/io_like.rbi +46 -0
  139. data/rbi/lib/dodopayments/internal/type/request_parameters.rbi +21 -0
  140. data/rbi/lib/dodopayments/internal/type/union.rbi +77 -0
  141. data/rbi/lib/dodopayments/internal/type/unknown.rbi +40 -0
  142. data/rbi/lib/dodopayments/internal/util.rbi +297 -0
  143. data/rbi/lib/dodopayments/internal.rbi +12 -0
  144. data/rbi/lib/dodopayments/models/attach_existing_customer.rbi +4 -11
  145. data/rbi/lib/dodopayments/models/billing_address.rbi +20 -38
  146. data/rbi/lib/dodopayments/models/country_code.rbi +256 -256
  147. data/rbi/lib/dodopayments/models/create_new_customer.rbi +11 -30
  148. data/rbi/lib/dodopayments/models/customer.rbi +9 -41
  149. data/rbi/lib/dodopayments/models/customer_create_params.rbi +9 -26
  150. data/rbi/lib/dodopayments/models/customer_limited_details.rbi +6 -23
  151. data/rbi/lib/dodopayments/models/customer_list_params.rbi +8 -20
  152. data/rbi/lib/dodopayments/models/customer_portal_session.rbi +4 -11
  153. data/rbi/lib/dodopayments/models/customer_request.rbi +4 -7
  154. data/rbi/lib/dodopayments/models/customer_retrieve_params.rbi +6 -8
  155. data/rbi/lib/dodopayments/models/customer_update_params.rbi +8 -20
  156. data/rbi/lib/dodopayments/models/customers/customer_portal_create_params.rbi +7 -14
  157. data/rbi/lib/dodopayments/models/discount.rbi +20 -78
  158. data/rbi/lib/dodopayments/models/discount_create_params.rbi +23 -61
  159. data/rbi/lib/dodopayments/models/discount_delete_params.rbi +6 -8
  160. data/rbi/lib/dodopayments/models/discount_list_params.rbi +8 -20
  161. data/rbi/lib/dodopayments/models/discount_retrieve_params.rbi +6 -8
  162. data/rbi/lib/dodopayments/models/discount_type.rbi +8 -8
  163. data/rbi/lib/dodopayments/models/discount_update_params.rbi +21 -59
  164. data/rbi/lib/dodopayments/models/dispute.rbi +27 -59
  165. data/rbi/lib/dodopayments/models/dispute_list_params.rbi +19 -57
  166. data/rbi/lib/dodopayments/models/dispute_retrieve_params.rbi +6 -8
  167. data/rbi/lib/dodopayments/models/dispute_stage.rbi +10 -10
  168. data/rbi/lib/dodopayments/models/dispute_status.rbi +14 -14
  169. data/rbi/lib/dodopayments/models/intent_status.rbi +22 -18
  170. data/rbi/lib/dodopayments/models/invoices/payment_retrieve_params.rbi +6 -8
  171. data/rbi/lib/dodopayments/models/license_activate_params.rbi +8 -20
  172. data/rbi/lib/dodopayments/models/license_deactivate_params.rbi +8 -20
  173. data/rbi/lib/dodopayments/models/license_key.rbi +19 -82
  174. data/rbi/lib/dodopayments/models/license_key_duration.rbi +8 -20
  175. data/rbi/lib/dodopayments/models/license_key_instance.rbi +8 -35
  176. data/rbi/lib/dodopayments/models/license_key_instance_list_params.rbi +9 -26
  177. data/rbi/lib/dodopayments/models/license_key_instance_retrieve_params.rbi +6 -8
  178. data/rbi/lib/dodopayments/models/license_key_instance_update_params.rbi +7 -17
  179. data/rbi/lib/dodopayments/models/license_key_list_params.rbi +21 -40
  180. data/rbi/lib/dodopayments/models/license_key_retrieve_params.rbi +6 -8
  181. data/rbi/lib/dodopayments/models/license_key_status.rbi +10 -10
  182. data/rbi/lib/dodopayments/models/license_key_update_params.rbi +12 -29
  183. data/rbi/lib/dodopayments/models/license_validate_params.rbi +8 -20
  184. data/rbi/lib/dodopayments/models/license_validate_response.rbi +4 -11
  185. data/rbi/lib/dodopayments/models/misc_list_supported_countries_params.rbi +6 -8
  186. data/rbi/lib/dodopayments/models/misc_list_supported_countries_response.rbi +5 -1
  187. data/rbi/lib/dodopayments/models/one_time_product_cart_item.rbi +8 -24
  188. data/rbi/lib/dodopayments/models/payment.rbi +197 -308
  189. data/rbi/lib/dodopayments/models/payment_create_params.rbi +261 -61
  190. data/rbi/lib/dodopayments/models/payment_create_response.rbi +16 -60
  191. data/rbi/lib/dodopayments/models/payment_list_params.rbi +16 -54
  192. data/rbi/lib/dodopayments/models/payment_list_response.rbi +178 -228
  193. data/rbi/lib/dodopayments/models/payment_retrieve_params.rbi +6 -8
  194. data/rbi/lib/dodopayments/models/payout_list_params.rbi +8 -20
  195. data/rbi/lib/dodopayments/models/payout_list_response.rbi +197 -271
  196. data/rbi/lib/dodopayments/models/price.rbi +368 -464
  197. data/rbi/lib/dodopayments/models/product.rbi +48 -119
  198. data/rbi/lib/dodopayments/models/product_create_params.rbi +46 -86
  199. data/rbi/lib/dodopayments/models/product_delete_params.rbi +6 -8
  200. data/rbi/lib/dodopayments/models/product_list_params.rbi +15 -34
  201. data/rbi/lib/dodopayments/models/product_list_response.rbi +209 -275
  202. data/rbi/lib/dodopayments/models/product_retrieve_params.rbi +6 -8
  203. data/rbi/lib/dodopayments/models/product_unarchive_params.rbi +6 -8
  204. data/rbi/lib/dodopayments/models/product_update_params.rbi +55 -102
  205. data/rbi/lib/dodopayments/models/products/image_update_params.rbi +7 -14
  206. data/rbi/lib/dodopayments/models/products/image_update_response.rbi +5 -17
  207. data/rbi/lib/dodopayments/models/refund.rbi +181 -213
  208. data/rbi/lib/dodopayments/models/refund_create_params.rbi +13 -39
  209. data/rbi/lib/dodopayments/models/refund_list_params.rbi +15 -48
  210. data/rbi/lib/dodopayments/models/refund_retrieve_params.rbi +6 -8
  211. data/rbi/lib/dodopayments/models/refund_status.rbi +11 -11
  212. data/rbi/lib/dodopayments/models/subscription.rbi +202 -283
  213. data/rbi/lib/dodopayments/models/subscription_charge_params.rbi +27 -0
  214. data/rbi/lib/dodopayments/models/subscription_charge_response.rbi +16 -0
  215. data/rbi/lib/dodopayments/models/subscription_create_params.rbi +315 -69
  216. data/rbi/lib/dodopayments/models/subscription_create_response.rbi +15 -51
  217. data/rbi/lib/dodopayments/models/subscription_list_params.rbi +15 -48
  218. data/rbi/lib/dodopayments/models/subscription_retrieve_params.rbi +6 -8
  219. data/rbi/lib/dodopayments/models/subscription_status.rbi +14 -14
  220. data/rbi/lib/dodopayments/models/subscription_update_params.rbi +25 -21
  221. data/rbi/lib/dodopayments/models/time_interval.rbi +11 -11
  222. data/rbi/lib/dodopayments/models/webhook_event.rbi +11 -54
  223. data/rbi/lib/dodopayments/models/webhook_event_list_params.rbi +12 -45
  224. data/rbi/lib/dodopayments/models/webhook_event_retrieve_params.rbi +6 -8
  225. data/rbi/lib/dodopayments/request_options.rbi +18 -81
  226. data/rbi/lib/dodopayments/resources/customers/customer_portal.rbi +5 -7
  227. data/rbi/lib/dodopayments/resources/customers.rbi +12 -20
  228. data/rbi/lib/dodopayments/resources/discounts.rbi +27 -37
  229. data/rbi/lib/dodopayments/resources/disputes.rbi +9 -13
  230. data/rbi/lib/dodopayments/resources/invoices/payments.rbi +4 -5
  231. data/rbi/lib/dodopayments/resources/invoices.rbi +3 -4
  232. data/rbi/lib/dodopayments/resources/license_key_instances.rbi +9 -15
  233. data/rbi/lib/dodopayments/resources/license_keys.rbi +13 -19
  234. data/rbi/lib/dodopayments/resources/licenses.rbi +8 -11
  235. data/rbi/lib/dodopayments/resources/misc.rbi +12 -6
  236. data/rbi/lib/dodopayments/resources/payments.rbi +32 -21
  237. data/rbi/lib/dodopayments/resources/payouts.rbi +5 -7
  238. data/rbi/lib/dodopayments/resources/products/images.rbi +4 -6
  239. data/rbi/lib/dodopayments/resources/products.rbi +43 -44
  240. data/rbi/lib/dodopayments/resources/refunds.rbi +10 -20
  241. data/rbi/lib/dodopayments/resources/subscriptions.rbi +57 -24
  242. data/rbi/lib/dodopayments/resources/webhook_events.rbi +7 -10
  243. data/rbi/lib/dodopayments/version.rbi +1 -1
  244. data/sig/dodopayments/client.rbs +8 -8
  245. data/sig/dodopayments/errors.rbs +98 -96
  246. data/sig/dodopayments/internal/default_page_number_pagination.rbs +11 -0
  247. data/sig/dodopayments/internal/transport/base_client.rbs +110 -0
  248. data/sig/dodopayments/internal/transport/pooled_net_requester.rbs +41 -0
  249. data/sig/dodopayments/internal/type/array_of.rbs +43 -0
  250. data/sig/dodopayments/internal/type/base_model.rbs +92 -0
  251. data/sig/dodopayments/internal/type/base_page.rbs +24 -0
  252. data/sig/dodopayments/internal/type/boolean.rbs +23 -0
  253. data/sig/dodopayments/internal/type/converter.rbs +54 -0
  254. data/sig/dodopayments/internal/type/enum.rbs +29 -0
  255. data/sig/dodopayments/internal/type/hash_of.rbs +43 -0
  256. data/sig/dodopayments/internal/type/io_like.rbs +23 -0
  257. data/sig/dodopayments/internal/type/request_parameters.rbs +15 -0
  258. data/sig/dodopayments/internal/type/union.rbs +47 -0
  259. data/sig/dodopayments/internal/type/unknown.rbs +23 -0
  260. data/sig/dodopayments/internal/util.rbs +156 -0
  261. data/sig/dodopayments/internal.rbs +5 -0
  262. data/sig/dodopayments/models/attach_existing_customer.rbs +2 -7
  263. data/sig/dodopayments/models/billing_address.rbs +8 -12
  264. data/sig/dodopayments/models/country_code.rbs +4 -2
  265. data/sig/dodopayments/models/create_new_customer.rbs +7 -12
  266. data/sig/dodopayments/models/customer.rbs +9 -13
  267. data/sig/dodopayments/models/customer_create_params.rbs +10 -15
  268. data/sig/dodopayments/models/customer_limited_details.rbs +2 -7
  269. data/sig/dodopayments/models/customer_list_params.rbs +9 -14
  270. data/sig/dodopayments/models/customer_portal_session.rbs +2 -7
  271. data/sig/dodopayments/models/customer_request.rbs +4 -2
  272. data/sig/dodopayments/models/customer_retrieve_params.rbs +6 -10
  273. data/sig/dodopayments/models/customer_update_params.rbs +9 -14
  274. data/sig/dodopayments/models/customers/customer_portal_create_params.rbs +8 -13
  275. data/sig/dodopayments/models/discount.rbs +14 -18
  276. data/sig/dodopayments/models/discount_create_params.rbs +14 -19
  277. data/sig/dodopayments/models/discount_delete_params.rbs +6 -10
  278. data/sig/dodopayments/models/discount_list_params.rbs +9 -14
  279. data/sig/dodopayments/models/discount_retrieve_params.rbs +6 -10
  280. data/sig/dodopayments/models/discount_type.rbs +4 -2
  281. data/sig/dodopayments/models/discount_update_params.rbs +14 -19
  282. data/sig/dodopayments/models/dispute.rbs +11 -15
  283. data/sig/dodopayments/models/dispute_list_params.rbs +14 -19
  284. data/sig/dodopayments/models/dispute_retrieve_params.rbs +6 -10
  285. data/sig/dodopayments/models/dispute_stage.rbs +4 -2
  286. data/sig/dodopayments/models/dispute_status.rbs +4 -2
  287. data/sig/dodopayments/models/intent_status.rbs +4 -2
  288. data/sig/dodopayments/models/invoices/payment_retrieve_params.rbs +6 -10
  289. data/sig/dodopayments/models/license_activate_params.rbs +10 -14
  290. data/sig/dodopayments/models/license_deactivate_params.rbs +9 -14
  291. data/sig/dodopayments/models/license_key.rbs +15 -19
  292. data/sig/dodopayments/models/license_key_duration.rbs +5 -7
  293. data/sig/dodopayments/models/license_key_instance.rbs +8 -13
  294. data/sig/dodopayments/models/license_key_instance_list_params.rbs +10 -15
  295. data/sig/dodopayments/models/license_key_instance_retrieve_params.rbs +5 -10
  296. data/sig/dodopayments/models/license_key_instance_update_params.rbs +8 -10
  297. data/sig/dodopayments/models/license_key_list_params.rbs +12 -17
  298. data/sig/dodopayments/models/license_key_retrieve_params.rbs +6 -10
  299. data/sig/dodopayments/models/license_key_status.rbs +4 -2
  300. data/sig/dodopayments/models/license_key_update_params.rbs +10 -15
  301. data/sig/dodopayments/models/license_validate_params.rbs +9 -14
  302. data/sig/dodopayments/models/license_validate_response.rbs +2 -7
  303. data/sig/dodopayments/models/misc_list_supported_countries_params.rbs +5 -10
  304. data/sig/dodopayments/models/one_time_product_cart_item.rbs +6 -7
  305. data/sig/dodopayments/models/payment.rbs +28 -35
  306. data/sig/dodopayments/models/payment_create_params.rbs +373 -20
  307. data/sig/dodopayments/models/payment_create_response.rbs +11 -16
  308. data/sig/dodopayments/models/payment_list_params.rbs +14 -19
  309. data/sig/dodopayments/models/payment_list_response.rbs +17 -20
  310. data/sig/dodopayments/models/payment_retrieve_params.rbs +6 -10
  311. data/sig/dodopayments/models/payout_list_params.rbs +9 -14
  312. data/sig/dodopayments/models/payout_list_response.rbs +30 -28
  313. data/sig/dodopayments/models/price.rbs +37 -41
  314. data/sig/dodopayments/models/product.rbs +22 -24
  315. data/sig/dodopayments/models/product_create_params.rbs +20 -23
  316. data/sig/dodopayments/models/product_delete_params.rbs +6 -10
  317. data/sig/dodopayments/models/product_list_params.rbs +11 -16
  318. data/sig/dodopayments/models/product_list_response.rbs +24 -25
  319. data/sig/dodopayments/models/product_retrieve_params.rbs +6 -10
  320. data/sig/dodopayments/models/product_unarchive_params.rbs +6 -10
  321. data/sig/dodopayments/models/product_update_params.rbs +21 -24
  322. data/sig/dodopayments/models/products/image_update_params.rbs +9 -13
  323. data/sig/dodopayments/models/products/image_update_response.rbs +2 -7
  324. data/sig/dodopayments/models/refund.rbs +15 -15
  325. data/sig/dodopayments/models/refund_create_params.rbs +10 -18
  326. data/sig/dodopayments/models/refund_list_params.rbs +13 -18
  327. data/sig/dodopayments/models/refund_retrieve_params.rbs +6 -10
  328. data/sig/dodopayments/models/refund_status.rbs +4 -2
  329. data/sig/dodopayments/models/subscription.rbs +29 -27
  330. data/sig/dodopayments/models/subscription_charge_params.rbs +21 -0
  331. data/sig/dodopayments/models/subscription_charge_response.rbs +13 -0
  332. data/sig/dodopayments/models/subscription_create_params.rbs +391 -22
  333. data/sig/dodopayments/models/subscription_create_response.rbs +10 -15
  334. data/sig/dodopayments/models/subscription_list_params.rbs +13 -18
  335. data/sig/dodopayments/models/subscription_retrieve_params.rbs +6 -10
  336. data/sig/dodopayments/models/subscription_status.rbs +4 -2
  337. data/sig/dodopayments/models/subscription_update_params.rbs +18 -15
  338. data/sig/dodopayments/models/time_interval.rbs +4 -2
  339. data/sig/dodopayments/models/webhook_event.rbs +11 -15
  340. data/sig/dodopayments/models/webhook_event_list_params.rbs +13 -18
  341. data/sig/dodopayments/models/webhook_event_retrieve_params.rbs +6 -10
  342. data/sig/dodopayments/request_options.rbs +3 -13
  343. data/sig/dodopayments/resources/customers/customer_portal.rbs +5 -11
  344. data/sig/dodopayments/resources/customers.rbs +21 -42
  345. data/sig/dodopayments/resources/discounts.rbs +34 -61
  346. data/sig/dodopayments/resources/disputes.rbs +14 -24
  347. data/sig/dodopayments/resources/invoices/payments.rbs +4 -10
  348. data/sig/dodopayments/resources/license_key_instances.rbs +15 -32
  349. data/sig/dodopayments/resources/license_keys.rbs +19 -36
  350. data/sig/dodopayments/resources/licenses.rbs +15 -30
  351. data/sig/dodopayments/resources/misc.rbs +3 -8
  352. data/sig/dodopayments/resources/payments.rbs +28 -39
  353. data/sig/dodopayments/resources/payouts.rbs +5 -9
  354. data/sig/dodopayments/resources/products/images.rbs +5 -11
  355. data/sig/dodopayments/resources/products.rbs +45 -71
  356. data/sig/dodopayments/resources/refunds.rbs +18 -33
  357. data/sig/dodopayments/resources/subscriptions.rbs +44 -54
  358. data/sig/dodopayments/resources/webhook_events.rbs +13 -24
  359. data/sig/dodopayments/version.rbs +1 -1
  360. metadata +63 -27
  361. data/lib/dodopayments/base_client.rb +0 -453
  362. data/lib/dodopayments/base_model.rb +0 -1217
  363. data/lib/dodopayments/base_page.rb +0 -62
  364. data/lib/dodopayments/default_page_number_pagination.rb +0 -97
  365. data/lib/dodopayments/extern.rb +0 -9
  366. data/lib/dodopayments/pooled_net_requester.rb +0 -164
  367. data/lib/dodopayments/util.rb +0 -717
  368. data/rbi/lib/dodopayments/base_client.rbi +0 -186
  369. data/rbi/lib/dodopayments/base_model.rbi +0 -606
  370. data/rbi/lib/dodopayments/base_page.rbi +0 -40
  371. data/rbi/lib/dodopayments/default_page_number_pagination.rbi +0 -17
  372. data/rbi/lib/dodopayments/extern.rbi +0 -8
  373. data/rbi/lib/dodopayments/pooled_net_requester.rbi +0 -47
  374. data/rbi/lib/dodopayments/util.rbi +0 -270
  375. data/sig/dodopayments/base_client.rbs +0 -103
  376. data/sig/dodopayments/base_model.rbs +0 -246
  377. data/sig/dodopayments/base_page.rbs +0 -20
  378. data/sig/dodopayments/default_page_number_pagination.rbs +0 -7
  379. data/sig/dodopayments/extern.rbs +0 -4
  380. data/sig/dodopayments/pooled_net_requester.rbs +0 -30
  381. data/sig/dodopayments/util.rbs +0 -136
@@ -1,453 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Dodopayments
4
- # @api private
5
- #
6
- # @abstract
7
- class BaseClient
8
- # from whatwg fetch spec
9
- MAX_REDIRECTS = 20
10
-
11
- # rubocop:disable Style/MutableConstant
12
- PLATFORM_HEADERS = {
13
- "x-stainless-arch" => Dodopayments::Util.arch,
14
- "x-stainless-lang" => "ruby",
15
- "x-stainless-os" => Dodopayments::Util.os,
16
- "x-stainless-package-version" => Dodopayments::VERSION,
17
- "x-stainless-runtime" => ::RUBY_ENGINE,
18
- "x-stainless-runtime-version" => ::RUBY_ENGINE_VERSION
19
- }
20
- # rubocop:enable Style/MutableConstant
21
-
22
- class << self
23
- # @api private
24
- #
25
- # @param req [Hash{Symbol=>Object}]
26
- #
27
- # @raise [ArgumentError]
28
- def validate!(req)
29
- keys = [:method, :path, :query, :headers, :body, :unwrap, :page, :stream, :model, :options]
30
- case req
31
- in Hash
32
- req.each_key do |k|
33
- unless keys.include?(k)
34
- raise ArgumentError.new("Request `req` keys must be one of #{keys}, got #{k.inspect}")
35
- end
36
- end
37
- else
38
- raise ArgumentError.new("Request `req` must be a Hash or RequestOptions, got #{req.inspect}")
39
- end
40
- end
41
-
42
- # @api private
43
- #
44
- # @param status [Integer]
45
- # @param headers [Hash{String=>String}, Net::HTTPHeader]
46
- #
47
- # @return [Boolean]
48
- def should_retry?(status, headers:)
49
- coerced = Dodopayments::Util.coerce_boolean(headers["x-should-retry"])
50
- case [coerced, status]
51
- in [true | false, _]
52
- coerced
53
- in [_, 408 | 409 | 429 | (500..)]
54
- # retry on:
55
- # 408: timeouts
56
- # 409: locks
57
- # 429: rate limits
58
- # 500+: unknown errors
59
- true
60
- else
61
- false
62
- end
63
- end
64
-
65
- # @api private
66
- #
67
- # @param request [Hash{Symbol=>Object}] .
68
- #
69
- # @option request [Symbol] :method
70
- #
71
- # @option request [URI::Generic] :url
72
- #
73
- # @option request [Hash{String=>String}] :headers
74
- #
75
- # @option request [Object] :body
76
- #
77
- # @option request [Integer] :max_retries
78
- #
79
- # @option request [Float] :timeout
80
- #
81
- # @param status [Integer]
82
- #
83
- # @param response_headers [Hash{String=>String}, Net::HTTPHeader]
84
- #
85
- # @return [Hash{Symbol=>Object}]
86
- def follow_redirect(request, status:, response_headers:)
87
- method, url, headers = request.fetch_values(:method, :url, :headers)
88
- location =
89
- Kernel.then do
90
- URI.join(url, response_headers["location"])
91
- rescue ArgumentError
92
- message = "Server responded with status #{status} but no valid location header."
93
- raise Dodopayments::APIConnectionError.new(url: url, message: message)
94
- end
95
-
96
- request = {**request, url: location}
97
-
98
- case [url.scheme, location.scheme]
99
- in ["https", "http"]
100
- message = "Tried to redirect to a insecure URL"
101
- raise Dodopayments::APIConnectionError.new(url: url, message: message)
102
- else
103
- nil
104
- end
105
-
106
- # from whatwg fetch spec
107
- case [status, method]
108
- in [301 | 302, :post] | [303, _]
109
- drop = %w[content-encoding content-language content-length content-location content-type]
110
- request = {
111
- **request,
112
- method: method == :head ? :head : :get,
113
- headers: headers.except(*drop),
114
- body: nil
115
- }
116
- else
117
- end
118
-
119
- # from undici
120
- if Dodopayments::Util.uri_origin(url) != Dodopayments::Util.uri_origin(location)
121
- drop = %w[authorization cookie host proxy-authorization]
122
- request = {**request, headers: request.fetch(:headers).except(*drop)}
123
- end
124
-
125
- request
126
- end
127
- end
128
-
129
- # @api private
130
- # @return [Dodopayments::PooledNetRequester]
131
- attr_accessor :requester
132
-
133
- # @api private
134
- #
135
- # @param base_url [String]
136
- # @param timeout [Float]
137
- # @param max_retries [Integer]
138
- # @param initial_retry_delay [Float]
139
- # @param max_retry_delay [Float]
140
- # @param headers [Hash{String=>String, Integer, Array<String, Integer, nil>, nil}]
141
- # @param idempotency_header [String, nil]
142
- def initialize(
143
- base_url:,
144
- timeout: 0.0,
145
- max_retries: 0,
146
- initial_retry_delay: 0.0,
147
- max_retry_delay: 0.0,
148
- headers: {},
149
- idempotency_header: nil
150
- )
151
- @requester = Dodopayments::PooledNetRequester.new
152
- @headers = Dodopayments::Util.normalized_headers(
153
- self.class::PLATFORM_HEADERS,
154
- {
155
- "accept" => "application/json",
156
- "content-type" => "application/json"
157
- },
158
- headers
159
- )
160
- @base_url = Dodopayments::Util.parse_uri(base_url)
161
- @idempotency_header = idempotency_header&.to_s&.downcase
162
- @max_retries = max_retries
163
- @timeout = timeout
164
- @initial_retry_delay = initial_retry_delay
165
- @max_retry_delay = max_retry_delay
166
- end
167
-
168
- # @api private
169
- #
170
- # @return [Hash{String=>String}]
171
- private def auth_headers = {}
172
-
173
- # @api private
174
- #
175
- # @return [String]
176
- private def generate_idempotency_key = "stainless-ruby-retry-#{SecureRandom.uuid}"
177
-
178
- # @api private
179
- #
180
- # @param req [Hash{Symbol=>Object}] .
181
- #
182
- # @option req [Symbol] :method
183
- #
184
- # @option req [String, Array<String>] :path
185
- #
186
- # @option req [Hash{String=>Array<String>, String, nil}, nil] :query
187
- #
188
- # @option req [Hash{String=>String, Integer, Array<String, Integer, nil>, nil}, nil] :headers
189
- #
190
- # @option req [Object, nil] :body
191
- #
192
- # @option req [Symbol, nil] :unwrap
193
- #
194
- # @option req [Class, nil] :page
195
- #
196
- # @option req [Class, nil] :stream
197
- #
198
- # @option req [Dodopayments::Converter, Class, nil] :model
199
- #
200
- # @param opts [Hash{Symbol=>Object}] .
201
- #
202
- # @option opts [String, nil] :idempotency_key
203
- #
204
- # @option opts [Hash{String=>Array<String>, String, nil}, nil] :extra_query
205
- #
206
- # @option opts [Hash{String=>String, nil}, nil] :extra_headers
207
- #
208
- # @option opts [Hash{Symbol=>Object}, nil] :extra_body
209
- #
210
- # @option opts [Integer, nil] :max_retries
211
- #
212
- # @option opts [Float, nil] :timeout
213
- #
214
- # @return [Hash{Symbol=>Object}]
215
- private def build_request(req, opts)
216
- method, uninterpolated_path = req.fetch_values(:method, :path)
217
-
218
- path = Dodopayments::Util.interpolate_path(uninterpolated_path)
219
-
220
- query = Dodopayments::Util.deep_merge(req[:query].to_h, opts[:extra_query].to_h)
221
-
222
- headers = Dodopayments::Util.normalized_headers(
223
- @headers,
224
- auth_headers,
225
- req[:headers].to_h,
226
- opts[:extra_headers].to_h
227
- )
228
-
229
- if @idempotency_header &&
230
- !headers.key?(@idempotency_header) &&
231
- !Net::HTTP::IDEMPOTENT_METHODS_.include?(method.to_s.upcase)
232
- headers[@idempotency_header] = opts.fetch(:idempotency_key) { generate_idempotency_key }
233
- end
234
-
235
- unless headers.key?("x-stainless-retry-count")
236
- headers["x-stainless-retry-count"] = "0"
237
- end
238
-
239
- timeout = opts.fetch(:timeout, @timeout).to_f.clamp((0..))
240
- unless headers.key?("x-stainless-timeout") || timeout.zero?
241
- headers["x-stainless-timeout"] = timeout.to_s
242
- end
243
-
244
- headers.reject! { |_, v| v.to_s.empty? }
245
-
246
- body =
247
- case method
248
- in :get | :head | :options | :trace
249
- nil
250
- else
251
- Dodopayments::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
252
- end
253
-
254
- headers, encoded = Dodopayments::Util.encode_content(headers, body)
255
- {
256
- method: method,
257
- url: Dodopayments::Util.join_parsed_uri(@base_url, {**req, path: path, query: query}),
258
- headers: headers,
259
- body: encoded,
260
- max_retries: opts.fetch(:max_retries, @max_retries),
261
- timeout: timeout
262
- }
263
- end
264
-
265
- # @api private
266
- #
267
- # @param headers [Hash{String=>String}]
268
- # @param retry_count [Integer]
269
- #
270
- # @return [Float]
271
- private def retry_delay(headers, retry_count:)
272
- # Non-standard extension
273
- span = Float(headers["retry-after-ms"], exception: false)&.then { _1 / 1000 }
274
- return span if span
275
-
276
- retry_header = headers["retry-after"]
277
- return span if (span = Float(retry_header, exception: false))
278
-
279
- span = retry_header&.then do
280
- Time.httpdate(_1) - Time.now
281
- rescue ArgumentError
282
- nil
283
- end
284
- return span if span
285
-
286
- scale = retry_count**2
287
- jitter = 1 - (0.25 * rand)
288
- (@initial_retry_delay * scale * jitter).clamp(0, @max_retry_delay)
289
- end
290
-
291
- # @api private
292
- #
293
- # @param request [Hash{Symbol=>Object}] .
294
- #
295
- # @option request [Symbol] :method
296
- #
297
- # @option request [URI::Generic] :url
298
- #
299
- # @option request [Hash{String=>String}] :headers
300
- #
301
- # @option request [Object] :body
302
- #
303
- # @option request [Integer] :max_retries
304
- #
305
- # @option request [Float] :timeout
306
- #
307
- # @param redirect_count [Integer]
308
- #
309
- # @param retry_count [Integer]
310
- #
311
- # @param send_retry_header [Boolean]
312
- #
313
- # @raise [Dodopayments::APIError]
314
- # @return [Array(Integer, Net::HTTPResponse, Enumerable)]
315
- private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
316
- url, headers, max_retries, timeout = request.fetch_values(:url, :headers, :max_retries, :timeout)
317
- input = {**request.except(:timeout), deadline: Dodopayments::Util.monotonic_secs + timeout}
318
-
319
- if send_retry_header
320
- headers["x-stainless-retry-count"] = retry_count.to_s
321
- end
322
-
323
- begin
324
- response, stream = @requester.execute(input)
325
- status = Integer(response.code)
326
- rescue Dodopayments::APIConnectionError => e
327
- status = e
328
- end
329
-
330
- # normally we want to drain the response body and reuse the HTTP session by clearing the socket buffers
331
- # unless we hit a server error
332
- srv_fault = (500...).include?(status)
333
-
334
- case status
335
- in ..299
336
- [status, response, stream]
337
- in 300..399 if redirect_count >= self.class::MAX_REDIRECTS
338
- message = "Failed to complete the request within #{self.class::MAX_REDIRECTS} redirects."
339
-
340
- stream.each { next }
341
- raise Dodopayments::APIConnectionError.new(url: url, message: message)
342
- in 300..399
343
- request = self.class.follow_redirect(request, status: status, response_headers: response)
344
-
345
- stream.each { next }
346
- send_request(
347
- request,
348
- redirect_count: redirect_count + 1,
349
- retry_count: retry_count,
350
- send_retry_header: send_retry_header
351
- )
352
- in Dodopayments::APIConnectionError if retry_count >= max_retries
353
- raise status
354
- in (400..) if retry_count >= max_retries || !self.class.should_retry?(status, headers: response)
355
- decoded = Dodopayments::Util.decode_content(response, stream: stream, suppress_error: true)
356
-
357
- if srv_fault
358
- Dodopayments::Util.close_fused!(stream)
359
- else
360
- stream.each { next }
361
- end
362
-
363
- raise Dodopayments::APIStatusError.for(
364
- url: url,
365
- status: status,
366
- body: decoded,
367
- request: nil,
368
- response: response
369
- )
370
- in (400..) | Dodopayments::APIConnectionError
371
- delay = retry_delay(response, retry_count: retry_count)
372
-
373
- if srv_fault
374
- Dodopayments::Util.close_fused!(stream)
375
- else
376
- stream&.each { next }
377
- end
378
- sleep(delay)
379
-
380
- send_request(
381
- request,
382
- redirect_count: redirect_count,
383
- retry_count: retry_count + 1,
384
- send_retry_header: send_retry_header
385
- )
386
- end
387
- end
388
-
389
- # Execute the request specified by `req`. This is the method that all resource
390
- # methods call into.
391
- #
392
- # @param req [Hash{Symbol=>Object}] .
393
- #
394
- # @option req [Symbol] :method
395
- #
396
- # @option req [String, Array<String>] :path
397
- #
398
- # @option req [Hash{String=>Array<String>, String, nil}, nil] :query
399
- #
400
- # @option req [Hash{String=>String, Integer, Array<String, Integer, nil>, nil}, nil] :headers
401
- #
402
- # @option req [Object, nil] :body
403
- #
404
- # @option req [Symbol, nil] :unwrap
405
- #
406
- # @option req [Class, nil] :page
407
- #
408
- # @option req [Class, nil] :stream
409
- #
410
- # @option req [Dodopayments::Converter, Class, nil] :model
411
- #
412
- # @option req [Dodopayments::RequestOptions, Hash{Symbol=>Object}, nil] :options
413
- #
414
- # @raise [Dodopayments::APIError]
415
- # @return [Object]
416
- def request(req)
417
- self.class.validate!(req)
418
- model = req.fetch(:model) { Dodopayments::Unknown }
419
- opts = req[:options].to_h
420
- Dodopayments::RequestOptions.validate!(opts)
421
- request = build_request(req.except(:options), opts)
422
- url = request.fetch(:url)
423
-
424
- # Don't send the current retry count in the headers if the caller modified the header defaults.
425
- send_retry_header = request.fetch(:headers)["x-stainless-retry-count"] == "0"
426
- status, response, stream = send_request(
427
- request,
428
- redirect_count: 0,
429
- retry_count: 0,
430
- send_retry_header: send_retry_header
431
- )
432
-
433
- decoded = Dodopayments::Util.decode_content(response, stream: stream)
434
- case req
435
- in { stream: Class => st }
436
- st.new(model: model, url: url, status: status, response: response, messages: decoded)
437
- in { page: Class => page }
438
- page.new(client: self, req: req, headers: response, page_data: decoded)
439
- else
440
- unwrapped = Dodopayments::Util.dig(decoded, req[:unwrap])
441
- Dodopayments::Converter.coerce(model, unwrapped)
442
- end
443
- end
444
-
445
- # @return [String]
446
- def inspect
447
- # rubocop:disable Layout/LineLength
448
- base_url = Dodopayments::Util.unparse_uri(@base_url)
449
- "#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
450
- # rubocop:enable Layout/LineLength
451
- end
452
- end
453
- end