dodopayments 1.18.3 → 1.20.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 (219) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -0
  3. data/README.md +5 -5
  4. data/lib/dodopayments/client.rb +12 -9
  5. data/lib/dodopayments/errors.rb +9 -9
  6. data/lib/dodopayments/file_part.rb +5 -5
  7. data/lib/dodopayments/internal/transport/base_client.rb +1 -1
  8. data/lib/dodopayments/internal/type/boolean.rb +10 -11
  9. data/lib/dodopayments/internal/type/converter.rb +3 -0
  10. data/lib/dodopayments/internal/type/enum.rb +10 -11
  11. data/lib/dodopayments/internal/type/file_input.rb +22 -11
  12. data/lib/dodopayments/internal/type/unknown.rb +10 -11
  13. data/lib/dodopayments/internal/util.rb +3 -3
  14. data/lib/dodopayments/models/addon_cart_response_item.rb +23 -0
  15. data/lib/dodopayments/models/addon_create_params.rb +58 -0
  16. data/lib/dodopayments/models/addon_list_params.rb +30 -0
  17. data/lib/dodopayments/models/addon_response.rb +93 -0
  18. data/lib/dodopayments/models/addon_retrieve_params.rb +14 -0
  19. data/lib/dodopayments/models/addon_update_images_params.rb +14 -0
  20. data/lib/dodopayments/models/addon_update_images_response.rb +22 -0
  21. data/lib/dodopayments/models/addon_update_params.rb +66 -0
  22. data/lib/dodopayments/models/currency.rb +158 -0
  23. data/lib/dodopayments/models/misc_list_supported_countries_response.rb +1 -0
  24. data/lib/dodopayments/models/payment.rb +14 -315
  25. data/lib/dodopayments/models/payment_create_params.rb +3 -158
  26. data/lib/dodopayments/models/payment_list_response.rb +3 -157
  27. data/lib/dodopayments/models/payout_list_response.rb +3 -157
  28. data/lib/dodopayments/models/price.rb +6 -314
  29. data/lib/dodopayments/models/product.rb +3 -19
  30. data/lib/dodopayments/models/product_create_params.rb +3 -17
  31. data/lib/dodopayments/models/product_list_response.rb +6 -176
  32. data/lib/dodopayments/models/product_update_params.rb +3 -17
  33. data/lib/dodopayments/models/refund.rb +3 -157
  34. data/lib/dodopayments/models/subscription.rb +21 -158
  35. data/lib/dodopayments/models/subscription_create_params.rb +30 -159
  36. data/lib/dodopayments/models/subscription_create_response.rb +10 -1
  37. data/lib/dodopayments/models/subscription_list_response.rb +179 -0
  38. data/lib/dodopayments/models/subscription_update_params.rb +19 -1
  39. data/lib/dodopayments/models/tax_category.rb +19 -0
  40. data/lib/dodopayments/request_options.rb +4 -5
  41. data/lib/dodopayments/resources/addons.rb +141 -0
  42. data/lib/dodopayments/resources/payments.rb +1 -1
  43. data/lib/dodopayments/resources/products.rb +2 -2
  44. data/lib/dodopayments/resources/subscriptions.rb +9 -5
  45. data/lib/dodopayments/version.rb +1 -1
  46. data/lib/dodopayments.rb +12 -0
  47. data/rbi/{lib/dodopayments → dodopayments}/client.rbi +7 -5
  48. data/rbi/{lib/dodopayments → dodopayments}/errors.rbi +1 -1
  49. data/rbi/{lib/dodopayments → dodopayments}/internal/transport/base_client.rbi +2 -2
  50. data/rbi/{lib/dodopayments → dodopayments}/internal/type/request_parameters.rbi +1 -1
  51. data/rbi/dodopayments/models/addon_cart_response_item.rbi +20 -0
  52. data/rbi/dodopayments/models/addon_create_params.rbi +69 -0
  53. data/rbi/dodopayments/models/addon_list_params.rbi +45 -0
  54. data/rbi/dodopayments/models/addon_response.rbi +103 -0
  55. data/rbi/dodopayments/models/addon_retrieve_params.rbi +19 -0
  56. data/rbi/dodopayments/models/addon_update_images_params.rbi +19 -0
  57. data/rbi/dodopayments/models/addon_update_images_response.rbi +19 -0
  58. data/rbi/dodopayments/models/addon_update_params.rbi +77 -0
  59. data/rbi/dodopayments/models/currency.rbi +161 -0
  60. data/rbi/dodopayments/models/payment.rbi +227 -0
  61. data/rbi/dodopayments/models/payment_create_params.rbi +189 -0
  62. data/rbi/dodopayments/models/payment_list_response.rbi +88 -0
  63. data/rbi/dodopayments/models/payout_list_response.rbi +155 -0
  64. data/rbi/dodopayments/models/price.rbi +218 -0
  65. data/rbi/{lib/dodopayments → dodopayments}/models/product.rbi +3 -20
  66. data/rbi/{lib/dodopayments → dodopayments}/models/product_create_params.rbi +3 -21
  67. data/rbi/dodopayments/models/product_list_response.rbi +153 -0
  68. data/rbi/{lib/dodopayments → dodopayments}/models/product_update_params.rbi +3 -21
  69. data/rbi/dodopayments/models/refund.rbi +83 -0
  70. data/rbi/dodopayments/models/subscription.rbi +198 -0
  71. data/rbi/dodopayments/models/subscription_create_params.rbi +282 -0
  72. data/rbi/{lib/dodopayments → dodopayments}/models/subscription_create_response.rbi +8 -0
  73. data/rbi/dodopayments/models/subscription_list_response.rbi +190 -0
  74. data/rbi/{lib/dodopayments → dodopayments}/models/subscription_update_params.rbi +37 -1
  75. data/rbi/dodopayments/models/tax_category.rbi +22 -0
  76. data/rbi/{lib/dodopayments → dodopayments}/request_options.rbi +2 -0
  77. data/rbi/dodopayments/resources/addons.rbi +97 -0
  78. data/rbi/{lib/dodopayments → dodopayments}/resources/customers/customer_portal.rbi +1 -1
  79. data/rbi/{lib/dodopayments → dodopayments}/resources/customers.rbi +4 -7
  80. data/rbi/{lib/dodopayments → dodopayments}/resources/discounts.rbi +5 -14
  81. data/rbi/{lib/dodopayments → dodopayments}/resources/disputes.rbi +2 -5
  82. data/rbi/{lib/dodopayments → dodopayments}/resources/invoices/payments.rbi +1 -7
  83. data/rbi/{lib/dodopayments → dodopayments}/resources/license_key_instances.rbi +3 -10
  84. data/rbi/{lib/dodopayments → dodopayments}/resources/license_keys.rbi +3 -9
  85. data/rbi/{lib/dodopayments → dodopayments}/resources/licenses.rbi +3 -7
  86. data/rbi/{lib/dodopayments → dodopayments}/resources/misc.rbi +1 -8
  87. data/rbi/{lib/dodopayments → dodopayments}/resources/payments.rbi +4 -7
  88. data/rbi/{lib/dodopayments → dodopayments}/resources/payouts.rbi +1 -1
  89. data/rbi/{lib/dodopayments → dodopayments}/resources/products/images.rbi +1 -5
  90. data/rbi/{lib/dodopayments → dodopayments}/resources/products.rbi +8 -26
  91. data/rbi/{lib/dodopayments → dodopayments}/resources/refunds.rbi +3 -11
  92. data/rbi/{lib/dodopayments → dodopayments}/resources/subscriptions.rbi +19 -15
  93. data/rbi/{lib/dodopayments → dodopayments}/resources/webhook_events.rbi +2 -5
  94. data/sig/dodopayments/client.rbs +4 -2
  95. data/sig/dodopayments/models/addon_cart_response_item.rbs +15 -0
  96. data/sig/dodopayments/models/addon_create_params.rbs +39 -0
  97. data/sig/dodopayments/models/addon_list_params.rbs +24 -0
  98. data/sig/dodopayments/models/addon_response.rbs +54 -0
  99. data/sig/dodopayments/models/addon_retrieve_params.rbs +15 -0
  100. data/sig/dodopayments/models/addon_update_images_params.rbs +15 -0
  101. data/sig/dodopayments/models/addon_update_images_response.rbs +15 -0
  102. data/sig/dodopayments/models/addon_update_params.rbs +43 -0
  103. data/sig/dodopayments/models/currency.rbs +302 -0
  104. data/sig/dodopayments/models/misc_list_supported_countries_response.rbs +1 -1
  105. data/sig/dodopayments/models/payment.rbs +10 -604
  106. data/sig/dodopayments/models/payment_create_params.rbs +3 -302
  107. data/sig/dodopayments/models/payment_list_response.rbs +3 -302
  108. data/sig/dodopayments/models/payout_list_response.rbs +3 -302
  109. data/sig/dodopayments/models/price.rbs +6 -604
  110. data/sig/dodopayments/models/product.rbs +3 -16
  111. data/sig/dodopayments/models/product_create_params.rbs +3 -16
  112. data/sig/dodopayments/models/product_list_response.rbs +6 -318
  113. data/sig/dodopayments/models/product_update_params.rbs +3 -16
  114. data/sig/dodopayments/models/refund.rbs +3 -302
  115. data/sig/dodopayments/models/subscription.rbs +11 -302
  116. data/sig/dodopayments/models/subscription_create_params.rbs +19 -302
  117. data/sig/dodopayments/models/subscription_create_response.rbs +4 -0
  118. data/sig/dodopayments/models/subscription_list_response.rbs +98 -0
  119. data/sig/dodopayments/models/subscription_update_params.rbs +14 -0
  120. data/sig/dodopayments/models/tax_category.rbs +16 -0
  121. data/sig/dodopayments/resources/addons.rbs +43 -0
  122. data/sig/dodopayments/resources/payments.rbs +1 -1
  123. data/sig/dodopayments/resources/products.rbs +2 -2
  124. data/sig/dodopayments/resources/subscriptions.rbs +4 -2
  125. metadata +160 -124
  126. data/rbi/lib/dodopayments/models/payment.rbi +0 -530
  127. data/rbi/lib/dodopayments/models/payment_create_params.rbi +0 -345
  128. data/rbi/lib/dodopayments/models/payment_list_response.rbi +0 -244
  129. data/rbi/lib/dodopayments/models/payout_list_response.rbi +0 -311
  130. data/rbi/lib/dodopayments/models/price.rbi +0 -530
  131. data/rbi/lib/dodopayments/models/product_list_response.rbi +0 -327
  132. data/rbi/lib/dodopayments/models/refund.rbi +0 -239
  133. data/rbi/lib/dodopayments/models/subscription.rbi +0 -338
  134. data/rbi/lib/dodopayments/models/subscription_create_params.rbi +0 -415
  135. /data/rbi/{lib/dodopayments → dodopayments}/file_part.rbi +0 -0
  136. /data/rbi/{lib/dodopayments → dodopayments}/internal/default_page_number_pagination.rbi +0 -0
  137. /data/rbi/{lib/dodopayments → dodopayments}/internal/transport/pooled_net_requester.rbi +0 -0
  138. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/array_of.rbi +0 -0
  139. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/base_model.rbi +0 -0
  140. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/base_page.rbi +0 -0
  141. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/boolean.rbi +0 -0
  142. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/converter.rbi +0 -0
  143. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/enum.rbi +0 -0
  144. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/file_input.rbi +0 -0
  145. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/hash_of.rbi +0 -0
  146. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/union.rbi +0 -0
  147. /data/rbi/{lib/dodopayments → dodopayments}/internal/type/unknown.rbi +0 -0
  148. /data/rbi/{lib/dodopayments → dodopayments}/internal/util.rbi +0 -0
  149. /data/rbi/{lib/dodopayments → dodopayments}/internal.rbi +0 -0
  150. /data/rbi/{lib/dodopayments → dodopayments}/models/attach_existing_customer.rbi +0 -0
  151. /data/rbi/{lib/dodopayments → dodopayments}/models/billing_address.rbi +0 -0
  152. /data/rbi/{lib/dodopayments → dodopayments}/models/country_code.rbi +0 -0
  153. /data/rbi/{lib/dodopayments → dodopayments}/models/create_new_customer.rbi +0 -0
  154. /data/rbi/{lib/dodopayments → dodopayments}/models/customer.rbi +0 -0
  155. /data/rbi/{lib/dodopayments → dodopayments}/models/customer_create_params.rbi +0 -0
  156. /data/rbi/{lib/dodopayments → dodopayments}/models/customer_limited_details.rbi +0 -0
  157. /data/rbi/{lib/dodopayments → dodopayments}/models/customer_list_params.rbi +0 -0
  158. /data/rbi/{lib/dodopayments → dodopayments}/models/customer_portal_session.rbi +0 -0
  159. /data/rbi/{lib/dodopayments → dodopayments}/models/customer_request.rbi +0 -0
  160. /data/rbi/{lib/dodopayments → dodopayments}/models/customer_retrieve_params.rbi +0 -0
  161. /data/rbi/{lib/dodopayments → dodopayments}/models/customer_update_params.rbi +0 -0
  162. /data/rbi/{lib/dodopayments → dodopayments}/models/customers/customer_portal_create_params.rbi +0 -0
  163. /data/rbi/{lib/dodopayments → dodopayments}/models/discount.rbi +0 -0
  164. /data/rbi/{lib/dodopayments → dodopayments}/models/discount_create_params.rbi +0 -0
  165. /data/rbi/{lib/dodopayments → dodopayments}/models/discount_delete_params.rbi +0 -0
  166. /data/rbi/{lib/dodopayments → dodopayments}/models/discount_list_params.rbi +0 -0
  167. /data/rbi/{lib/dodopayments → dodopayments}/models/discount_retrieve_params.rbi +0 -0
  168. /data/rbi/{lib/dodopayments → dodopayments}/models/discount_type.rbi +0 -0
  169. /data/rbi/{lib/dodopayments → dodopayments}/models/discount_update_params.rbi +0 -0
  170. /data/rbi/{lib/dodopayments → dodopayments}/models/dispute.rbi +0 -0
  171. /data/rbi/{lib/dodopayments → dodopayments}/models/dispute_list_params.rbi +0 -0
  172. /data/rbi/{lib/dodopayments → dodopayments}/models/dispute_retrieve_params.rbi +0 -0
  173. /data/rbi/{lib/dodopayments → dodopayments}/models/dispute_stage.rbi +0 -0
  174. /data/rbi/{lib/dodopayments → dodopayments}/models/dispute_status.rbi +0 -0
  175. /data/rbi/{lib/dodopayments → dodopayments}/models/intent_status.rbi +0 -0
  176. /data/rbi/{lib/dodopayments → dodopayments}/models/invoices/payment_retrieve_params.rbi +0 -0
  177. /data/rbi/{lib/dodopayments → dodopayments}/models/license_activate_params.rbi +0 -0
  178. /data/rbi/{lib/dodopayments → dodopayments}/models/license_deactivate_params.rbi +0 -0
  179. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key.rbi +0 -0
  180. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key_duration.rbi +0 -0
  181. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key_instance.rbi +0 -0
  182. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key_instance_list_params.rbi +0 -0
  183. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key_instance_retrieve_params.rbi +0 -0
  184. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key_instance_update_params.rbi +0 -0
  185. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key_list_params.rbi +0 -0
  186. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key_retrieve_params.rbi +0 -0
  187. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key_status.rbi +0 -0
  188. /data/rbi/{lib/dodopayments → dodopayments}/models/license_key_update_params.rbi +0 -0
  189. /data/rbi/{lib/dodopayments → dodopayments}/models/license_validate_params.rbi +0 -0
  190. /data/rbi/{lib/dodopayments → dodopayments}/models/license_validate_response.rbi +0 -0
  191. /data/rbi/{lib/dodopayments → dodopayments}/models/misc_list_supported_countries_params.rbi +0 -0
  192. /data/rbi/{lib/dodopayments → dodopayments}/models/misc_list_supported_countries_response.rbi +0 -0
  193. /data/rbi/{lib/dodopayments → dodopayments}/models/one_time_product_cart_item.rbi +0 -0
  194. /data/rbi/{lib/dodopayments → dodopayments}/models/payment_create_response.rbi +0 -0
  195. /data/rbi/{lib/dodopayments → dodopayments}/models/payment_list_params.rbi +0 -0
  196. /data/rbi/{lib/dodopayments → dodopayments}/models/payment_retrieve_params.rbi +0 -0
  197. /data/rbi/{lib/dodopayments → dodopayments}/models/payout_list_params.rbi +0 -0
  198. /data/rbi/{lib/dodopayments → dodopayments}/models/product_delete_params.rbi +0 -0
  199. /data/rbi/{lib/dodopayments → dodopayments}/models/product_list_params.rbi +0 -0
  200. /data/rbi/{lib/dodopayments → dodopayments}/models/product_retrieve_params.rbi +0 -0
  201. /data/rbi/{lib/dodopayments → dodopayments}/models/product_unarchive_params.rbi +0 -0
  202. /data/rbi/{lib/dodopayments → dodopayments}/models/products/image_update_params.rbi +0 -0
  203. /data/rbi/{lib/dodopayments → dodopayments}/models/products/image_update_response.rbi +0 -0
  204. /data/rbi/{lib/dodopayments → dodopayments}/models/refund_create_params.rbi +0 -0
  205. /data/rbi/{lib/dodopayments → dodopayments}/models/refund_list_params.rbi +0 -0
  206. /data/rbi/{lib/dodopayments → dodopayments}/models/refund_retrieve_params.rbi +0 -0
  207. /data/rbi/{lib/dodopayments → dodopayments}/models/refund_status.rbi +0 -0
  208. /data/rbi/{lib/dodopayments → dodopayments}/models/subscription_change_plan_params.rbi +0 -0
  209. /data/rbi/{lib/dodopayments → dodopayments}/models/subscription_charge_params.rbi +0 -0
  210. /data/rbi/{lib/dodopayments → dodopayments}/models/subscription_charge_response.rbi +0 -0
  211. /data/rbi/{lib/dodopayments → dodopayments}/models/subscription_list_params.rbi +0 -0
  212. /data/rbi/{lib/dodopayments → dodopayments}/models/subscription_retrieve_params.rbi +0 -0
  213. /data/rbi/{lib/dodopayments → dodopayments}/models/subscription_status.rbi +0 -0
  214. /data/rbi/{lib/dodopayments → dodopayments}/models/time_interval.rbi +0 -0
  215. /data/rbi/{lib/dodopayments → dodopayments}/models/webhook_event.rbi +0 -0
  216. /data/rbi/{lib/dodopayments → dodopayments}/models/webhook_event_list_params.rbi +0 -0
  217. /data/rbi/{lib/dodopayments → dodopayments}/models/webhook_event_retrieve_params.rbi +0 -0
  218. /data/rbi/{lib/dodopayments → dodopayments}/resources/invoices.rbi +0 -0
  219. /data/rbi/{lib/dodopayments → dodopayments}/version.rbi +0 -0
@@ -0,0 +1,198 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class Subscription < Dodopayments::Internal::Type::BaseModel
6
+ # Addons associated with this subscription
7
+ sig { returns(T::Array[Dodopayments::Models::AddonCartResponseItem]) }
8
+ attr_accessor :addons
9
+
10
+ sig { returns(Dodopayments::Models::BillingAddress) }
11
+ attr_reader :billing
12
+
13
+ sig { params(billing: T.any(Dodopayments::Models::BillingAddress, Dodopayments::Internal::AnyHash)).void }
14
+ attr_writer :billing
15
+
16
+ # Timestamp when the subscription was created
17
+ sig { returns(Time) }
18
+ attr_accessor :created_at
19
+
20
+ sig { returns(Dodopayments::Models::Currency::TaggedSymbol) }
21
+ attr_accessor :currency
22
+
23
+ sig { returns(Dodopayments::Models::CustomerLimitedDetails) }
24
+ attr_reader :customer
25
+
26
+ sig do
27
+ params(customer: T.any(Dodopayments::Models::CustomerLimitedDetails, Dodopayments::Internal::AnyHash)).void
28
+ end
29
+ attr_writer :customer
30
+
31
+ sig { returns(T::Hash[Symbol, String]) }
32
+ attr_accessor :metadata
33
+
34
+ # Timestamp of the next scheduled billing. Indicates the end of current billing
35
+ # period
36
+ sig { returns(Time) }
37
+ attr_accessor :next_billing_date
38
+
39
+ # Wether the subscription is on-demand or not
40
+ sig { returns(T::Boolean) }
41
+ attr_accessor :on_demand
42
+
43
+ # Number of payment frequency intervals
44
+ sig { returns(Integer) }
45
+ attr_accessor :payment_frequency_count
46
+
47
+ sig { returns(Dodopayments::Models::TimeInterval::TaggedSymbol) }
48
+ attr_accessor :payment_frequency_interval
49
+
50
+ # Timestamp of the last payment. Indicates the start of current billing period
51
+ sig { returns(Time) }
52
+ attr_accessor :previous_billing_date
53
+
54
+ # Identifier of the product associated with this subscription
55
+ sig { returns(String) }
56
+ attr_accessor :product_id
57
+
58
+ # Number of units/items included in the subscription
59
+ sig { returns(Integer) }
60
+ attr_accessor :quantity
61
+
62
+ # Amount charged before tax for each recurring payment in smallest currency unit
63
+ # (e.g. cents)
64
+ sig { returns(Integer) }
65
+ attr_accessor :recurring_pre_tax_amount
66
+
67
+ sig { returns(Dodopayments::Models::SubscriptionStatus::TaggedSymbol) }
68
+ attr_accessor :status
69
+
70
+ # Unique identifier for the subscription
71
+ sig { returns(String) }
72
+ attr_accessor :subscription_id
73
+
74
+ # Number of subscription period intervals
75
+ sig { returns(Integer) }
76
+ attr_accessor :subscription_period_count
77
+
78
+ sig { returns(Dodopayments::Models::TimeInterval::TaggedSymbol) }
79
+ attr_accessor :subscription_period_interval
80
+
81
+ # Indicates if the recurring_pre_tax_amount is tax inclusive
82
+ sig { returns(T::Boolean) }
83
+ attr_accessor :tax_inclusive
84
+
85
+ # Number of days in the trial period (0 if no trial)
86
+ sig { returns(Integer) }
87
+ attr_accessor :trial_period_days
88
+
89
+ # Cancelled timestamp if the subscription is cancelled
90
+ sig { returns(T.nilable(Time)) }
91
+ attr_accessor :cancelled_at
92
+
93
+ # The discount id if discount is applied
94
+ sig { returns(T.nilable(String)) }
95
+ attr_accessor :discount_id
96
+
97
+ # Response struct representing subscription details
98
+ sig do
99
+ params(
100
+ addons: T::Array[T.any(Dodopayments::Models::AddonCartResponseItem, Dodopayments::Internal::AnyHash)],
101
+ billing: T.any(Dodopayments::Models::BillingAddress, Dodopayments::Internal::AnyHash),
102
+ created_at: Time,
103
+ currency: Dodopayments::Models::Currency::OrSymbol,
104
+ customer: T.any(Dodopayments::Models::CustomerLimitedDetails, Dodopayments::Internal::AnyHash),
105
+ metadata: T::Hash[Symbol, String],
106
+ next_billing_date: Time,
107
+ on_demand: T::Boolean,
108
+ payment_frequency_count: Integer,
109
+ payment_frequency_interval: Dodopayments::Models::TimeInterval::OrSymbol,
110
+ previous_billing_date: Time,
111
+ product_id: String,
112
+ quantity: Integer,
113
+ recurring_pre_tax_amount: Integer,
114
+ status: Dodopayments::Models::SubscriptionStatus::OrSymbol,
115
+ subscription_id: String,
116
+ subscription_period_count: Integer,
117
+ subscription_period_interval: Dodopayments::Models::TimeInterval::OrSymbol,
118
+ tax_inclusive: T::Boolean,
119
+ trial_period_days: Integer,
120
+ cancelled_at: T.nilable(Time),
121
+ discount_id: T.nilable(String)
122
+ )
123
+ .returns(T.attached_class)
124
+ end
125
+ def self.new(
126
+ # Addons associated with this subscription
127
+ addons:,
128
+ billing:,
129
+ # Timestamp when the subscription was created
130
+ created_at:,
131
+ currency:,
132
+ customer:,
133
+ metadata:,
134
+ # Timestamp of the next scheduled billing. Indicates the end of current billing
135
+ # period
136
+ next_billing_date:,
137
+ # Wether the subscription is on-demand or not
138
+ on_demand:,
139
+ # Number of payment frequency intervals
140
+ payment_frequency_count:,
141
+ payment_frequency_interval:,
142
+ # Timestamp of the last payment. Indicates the start of current billing period
143
+ previous_billing_date:,
144
+ # Identifier of the product associated with this subscription
145
+ product_id:,
146
+ # Number of units/items included in the subscription
147
+ quantity:,
148
+ # Amount charged before tax for each recurring payment in smallest currency unit
149
+ # (e.g. cents)
150
+ recurring_pre_tax_amount:,
151
+ status:,
152
+ # Unique identifier for the subscription
153
+ subscription_id:,
154
+ # Number of subscription period intervals
155
+ subscription_period_count:,
156
+ subscription_period_interval:,
157
+ # Indicates if the recurring_pre_tax_amount is tax inclusive
158
+ tax_inclusive:,
159
+ # Number of days in the trial period (0 if no trial)
160
+ trial_period_days:,
161
+ # Cancelled timestamp if the subscription is cancelled
162
+ cancelled_at: nil,
163
+ # The discount id if discount is applied
164
+ discount_id: nil
165
+ ); end
166
+ sig do
167
+ override
168
+ .returns(
169
+ {
170
+ addons: T::Array[Dodopayments::Models::AddonCartResponseItem],
171
+ billing: Dodopayments::Models::BillingAddress,
172
+ created_at: Time,
173
+ currency: Dodopayments::Models::Currency::TaggedSymbol,
174
+ customer: Dodopayments::Models::CustomerLimitedDetails,
175
+ metadata: T::Hash[Symbol, String],
176
+ next_billing_date: Time,
177
+ on_demand: T::Boolean,
178
+ payment_frequency_count: Integer,
179
+ payment_frequency_interval: Dodopayments::Models::TimeInterval::TaggedSymbol,
180
+ previous_billing_date: Time,
181
+ product_id: String,
182
+ quantity: Integer,
183
+ recurring_pre_tax_amount: Integer,
184
+ status: Dodopayments::Models::SubscriptionStatus::TaggedSymbol,
185
+ subscription_id: String,
186
+ subscription_period_count: Integer,
187
+ subscription_period_interval: Dodopayments::Models::TimeInterval::TaggedSymbol,
188
+ tax_inclusive: T::Boolean,
189
+ trial_period_days: Integer,
190
+ cancelled_at: T.nilable(Time),
191
+ discount_id: T.nilable(String)
192
+ }
193
+ )
194
+ end
195
+ def to_hash; end
196
+ end
197
+ end
198
+ end
@@ -0,0 +1,282 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class SubscriptionCreateParams < Dodopayments::Internal::Type::BaseModel
6
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
7
+ include Dodopayments::Internal::Type::RequestParameters
8
+
9
+ sig { returns(Dodopayments::Models::BillingAddress) }
10
+ attr_reader :billing
11
+
12
+ sig { params(billing: T.any(Dodopayments::Models::BillingAddress, Dodopayments::Internal::AnyHash)).void }
13
+ attr_writer :billing
14
+
15
+ sig { returns(T.any(Dodopayments::Models::AttachExistingCustomer, Dodopayments::Models::CreateNewCustomer)) }
16
+ attr_accessor :customer
17
+
18
+ # Unique identifier of the product to subscribe to
19
+ sig { returns(String) }
20
+ attr_accessor :product_id
21
+
22
+ # Number of units to subscribe for. Must be at least 1.
23
+ sig { returns(Integer) }
24
+ attr_accessor :quantity
25
+
26
+ # Attach addons to this subscription
27
+ sig { returns(T.nilable(T::Array[Dodopayments::Models::SubscriptionCreateParams::Addon])) }
28
+ attr_accessor :addons
29
+
30
+ # List of payment methods allowed during checkout.
31
+ #
32
+ # Customers will **never** see payment methods that are **not** in this list.
33
+ # However, adding a method here **does not guarantee** customers will see it.
34
+ # Availability still depends on other factors (e.g., customer location, merchant
35
+ # settings).
36
+ sig do
37
+ returns(
38
+ T.nilable(T::Array[Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::OrSymbol])
39
+ )
40
+ end
41
+ attr_accessor :allowed_payment_method_types
42
+
43
+ sig { returns(T.nilable(Dodopayments::Models::Currency::OrSymbol)) }
44
+ attr_accessor :billing_currency
45
+
46
+ # Discount Code to apply to the subscription
47
+ sig { returns(T.nilable(String)) }
48
+ attr_accessor :discount_code
49
+
50
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
51
+ attr_reader :metadata
52
+
53
+ sig { params(metadata: T::Hash[Symbol, String]).void }
54
+ attr_writer :metadata
55
+
56
+ sig { returns(T.nilable(Dodopayments::Models::SubscriptionCreateParams::OnDemand)) }
57
+ attr_reader :on_demand
58
+
59
+ sig do
60
+ params(
61
+ on_demand: T.nilable(
62
+ T.any(Dodopayments::Models::SubscriptionCreateParams::OnDemand, Dodopayments::Internal::AnyHash)
63
+ )
64
+ )
65
+ .void
66
+ end
67
+ attr_writer :on_demand
68
+
69
+ # If true, generates a payment link. Defaults to false if not specified.
70
+ sig { returns(T.nilable(T::Boolean)) }
71
+ attr_accessor :payment_link
72
+
73
+ # Optional URL to redirect after successful subscription creation
74
+ sig { returns(T.nilable(String)) }
75
+ attr_accessor :return_url
76
+
77
+ # Display saved payment methods of a returning customer False by default
78
+ sig { returns(T.nilable(T::Boolean)) }
79
+ attr_reader :show_saved_payment_methods
80
+
81
+ sig { params(show_saved_payment_methods: T::Boolean).void }
82
+ attr_writer :show_saved_payment_methods
83
+
84
+ # Tax ID in case the payment is B2B. If tax id validation fails the payment
85
+ # creation will fail
86
+ sig { returns(T.nilable(String)) }
87
+ attr_accessor :tax_id
88
+
89
+ # Optional trial period in days If specified, this value overrides the trial
90
+ # period set in the product's price Must be between 0 and 10000 days
91
+ sig { returns(T.nilable(Integer)) }
92
+ attr_accessor :trial_period_days
93
+
94
+ sig do
95
+ params(
96
+ billing: T.any(Dodopayments::Models::BillingAddress, Dodopayments::Internal::AnyHash),
97
+ customer: T.any(
98
+ Dodopayments::Models::AttachExistingCustomer,
99
+ Dodopayments::Internal::AnyHash,
100
+ Dodopayments::Models::CreateNewCustomer
101
+ ),
102
+ product_id: String,
103
+ quantity: Integer,
104
+ addons: T.nilable(
105
+ T::Array[T.any(Dodopayments::Models::SubscriptionCreateParams::Addon, Dodopayments::Internal::AnyHash)]
106
+ ),
107
+ allowed_payment_method_types: T.nilable(T::Array[Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::OrSymbol]),
108
+ billing_currency: T.nilable(Dodopayments::Models::Currency::OrSymbol),
109
+ discount_code: T.nilable(String),
110
+ metadata: T::Hash[Symbol, String],
111
+ on_demand: T.nilable(
112
+ T.any(Dodopayments::Models::SubscriptionCreateParams::OnDemand, Dodopayments::Internal::AnyHash)
113
+ ),
114
+ payment_link: T.nilable(T::Boolean),
115
+ return_url: T.nilable(String),
116
+ show_saved_payment_methods: T::Boolean,
117
+ tax_id: T.nilable(String),
118
+ trial_period_days: T.nilable(Integer),
119
+ request_options: T.any(Dodopayments::RequestOptions, Dodopayments::Internal::AnyHash)
120
+ )
121
+ .returns(T.attached_class)
122
+ end
123
+ def self.new(
124
+ billing:,
125
+ customer:,
126
+ # Unique identifier of the product to subscribe to
127
+ product_id:,
128
+ # Number of units to subscribe for. Must be at least 1.
129
+ quantity:,
130
+ # Attach addons to this subscription
131
+ addons: nil,
132
+ # List of payment methods allowed during checkout.
133
+ #
134
+ # Customers will **never** see payment methods that are **not** in this list.
135
+ # However, adding a method here **does not guarantee** customers will see it.
136
+ # Availability still depends on other factors (e.g., customer location, merchant
137
+ # settings).
138
+ allowed_payment_method_types: nil,
139
+ billing_currency: nil,
140
+ # Discount Code to apply to the subscription
141
+ discount_code: nil,
142
+ metadata: nil,
143
+ on_demand: nil,
144
+ # If true, generates a payment link. Defaults to false if not specified.
145
+ payment_link: nil,
146
+ # Optional URL to redirect after successful subscription creation
147
+ return_url: nil,
148
+ # Display saved payment methods of a returning customer False by default
149
+ show_saved_payment_methods: nil,
150
+ # Tax ID in case the payment is B2B. If tax id validation fails the payment
151
+ # creation will fail
152
+ tax_id: nil,
153
+ # Optional trial period in days If specified, this value overrides the trial
154
+ # period set in the product's price Must be between 0 and 10000 days
155
+ trial_period_days: nil,
156
+ request_options: {}
157
+ ); end
158
+ sig do
159
+ override
160
+ .returns(
161
+ {
162
+ billing: Dodopayments::Models::BillingAddress,
163
+ customer: T.any(Dodopayments::Models::AttachExistingCustomer, Dodopayments::Models::CreateNewCustomer),
164
+ product_id: String,
165
+ quantity: Integer,
166
+ addons: T.nilable(T::Array[Dodopayments::Models::SubscriptionCreateParams::Addon]),
167
+ allowed_payment_method_types: T.nilable(T::Array[Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::OrSymbol]),
168
+ billing_currency: T.nilable(Dodopayments::Models::Currency::OrSymbol),
169
+ discount_code: T.nilable(String),
170
+ metadata: T::Hash[Symbol, String],
171
+ on_demand: T.nilable(Dodopayments::Models::SubscriptionCreateParams::OnDemand),
172
+ payment_link: T.nilable(T::Boolean),
173
+ return_url: T.nilable(String),
174
+ show_saved_payment_methods: T::Boolean,
175
+ tax_id: T.nilable(String),
176
+ trial_period_days: T.nilable(Integer),
177
+ request_options: Dodopayments::RequestOptions
178
+ }
179
+ )
180
+ end
181
+ def to_hash; end
182
+
183
+ class Addon < Dodopayments::Internal::Type::BaseModel
184
+ sig { returns(String) }
185
+ attr_accessor :addon_id
186
+
187
+ sig { returns(Integer) }
188
+ attr_accessor :quantity
189
+
190
+ sig { params(addon_id: String, quantity: Integer).returns(T.attached_class) }
191
+ def self.new(addon_id:, quantity:); end
192
+
193
+ sig { override.returns({addon_id: String, quantity: Integer}) }
194
+ def to_hash; end
195
+ end
196
+
197
+ module AllowedPaymentMethodType
198
+ extend Dodopayments::Internal::Type::Enum
199
+
200
+ TaggedSymbol =
201
+ T.type_alias { T.all(Symbol, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType) }
202
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
203
+
204
+ CREDIT =
205
+ T.let(:credit, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
206
+ DEBIT =
207
+ T.let(:debit, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
208
+ UPI_COLLECT =
209
+ T.let(
210
+ :upi_collect,
211
+ Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol
212
+ )
213
+ UPI_INTENT =
214
+ T.let(:upi_intent, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
215
+ APPLE_PAY =
216
+ T.let(:apple_pay, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
217
+ CASHAPP =
218
+ T.let(:cashapp, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
219
+ GOOGLE_PAY =
220
+ T.let(:google_pay, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
221
+ MULTIBANCO =
222
+ T.let(:multibanco, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
223
+ BANCONTACT_CARD =
224
+ T.let(
225
+ :bancontact_card,
226
+ Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol
227
+ )
228
+ EPS = T.let(:eps, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
229
+ IDEAL =
230
+ T.let(:ideal, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
231
+ PRZELEWY24 =
232
+ T.let(:przelewy24, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
233
+ AFFIRM =
234
+ T.let(:affirm, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
235
+ KLARNA =
236
+ T.let(:klarna, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
237
+ SEPA =
238
+ T.let(:sepa, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
239
+ ACH = T.let(:ach, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
240
+ AMAZON_PAY =
241
+ T.let(:amazon_pay, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
242
+ AFTERPAY_CLEARPAY =
243
+ T.let(
244
+ :afterpay_clearpay,
245
+ Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol
246
+ )
247
+
248
+ sig do
249
+ override
250
+ .returns(T::Array[Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol])
251
+ end
252
+ def self.values; end
253
+ end
254
+
255
+ class OnDemand < Dodopayments::Internal::Type::BaseModel
256
+ # If set as True, does not perform any charge and only authorizes payment method
257
+ # details for future use.
258
+ sig { returns(T::Boolean) }
259
+ attr_accessor :mandate_only
260
+
261
+ # Product price for the initial charge to customer If not specified the stored
262
+ # price of the product will be used Represented in the lowest denomination of the
263
+ # currency (e.g., cents for USD). For example, to charge $1.00, pass `100`.
264
+ sig { returns(T.nilable(Integer)) }
265
+ attr_accessor :product_price
266
+
267
+ sig { params(mandate_only: T::Boolean, product_price: T.nilable(Integer)).returns(T.attached_class) }
268
+ def self.new(
269
+ # If set as True, does not perform any charge and only authorizes payment method
270
+ # details for future use.
271
+ mandate_only:,
272
+ # Product price for the initial charge to customer If not specified the stored
273
+ # price of the product will be used Represented in the lowest denomination of the
274
+ # currency (e.g., cents for USD). For example, to charge $1.00, pass `100`.
275
+ product_price: nil
276
+ ); end
277
+ sig { override.returns({mandate_only: T::Boolean, product_price: T.nilable(Integer)}) }
278
+ def to_hash; end
279
+ end
280
+ end
281
+ end
282
+ end
@@ -3,6 +3,10 @@
3
3
  module Dodopayments
4
4
  module Models
5
5
  class SubscriptionCreateResponse < Dodopayments::Internal::Type::BaseModel
6
+ # Addons associated with this subscription
7
+ sig { returns(T::Array[Dodopayments::Models::AddonCartResponseItem]) }
8
+ attr_accessor :addons
9
+
6
10
  sig { returns(Dodopayments::Models::CustomerLimitedDetails) }
7
11
  attr_reader :customer
8
12
 
@@ -38,6 +42,7 @@ module Dodopayments
38
42
 
39
43
  sig do
40
44
  params(
45
+ addons: T::Array[T.any(Dodopayments::Models::AddonCartResponseItem, Dodopayments::Internal::AnyHash)],
41
46
  customer: T.any(Dodopayments::Models::CustomerLimitedDetails, Dodopayments::Internal::AnyHash),
42
47
  metadata: T::Hash[Symbol, String],
43
48
  recurring_pre_tax_amount: Integer,
@@ -49,6 +54,8 @@ module Dodopayments
49
54
  .returns(T.attached_class)
50
55
  end
51
56
  def self.new(
57
+ # Addons associated with this subscription
58
+ addons:,
52
59
  customer:,
53
60
  metadata:,
54
61
  # Tax will be added to the amount and charged to the customer on each billing
@@ -68,6 +75,7 @@ module Dodopayments
68
75
  override
69
76
  .returns(
70
77
  {
78
+ addons: T::Array[Dodopayments::Models::AddonCartResponseItem],
71
79
  customer: Dodopayments::Models::CustomerLimitedDetails,
72
80
  metadata: T::Hash[Symbol, String],
73
81
  recurring_pre_tax_amount: Integer,