dodopayments 2.8.1 → 2.9.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 (195) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/client.rb +4 -0
  5. data/lib/dodopayments/models/attach_product_entitlement.rb +22 -0
  6. data/lib/dodopayments/models/cancellation_feedback.rb +21 -0
  7. data/lib/dodopayments/models/checkout_session_flags.rb +12 -1
  8. data/lib/dodopayments/models/checkout_session_request.rb +14 -1
  9. data/lib/dodopayments/models/credit_entitlements/credit_ledger_entry.rb +1 -0
  10. data/lib/dodopayments/models/credit_overage_reset_webhook_event.rb +52 -0
  11. data/lib/dodopayments/models/customer_list_entitlements_params.rb +20 -0
  12. data/lib/dodopayments/models/customer_list_entitlements_response.rb +105 -0
  13. data/lib/dodopayments/models/digital_product_delivery.rb +19 -14
  14. data/lib/dodopayments/models/digital_product_delivery_file.rb +40 -9
  15. data/lib/dodopayments/models/entitlement.rb +97 -0
  16. data/lib/dodopayments/models/entitlement_create_params.rb +54 -0
  17. data/lib/dodopayments/models/entitlement_delete_params.rb +20 -0
  18. data/lib/dodopayments/models/entitlement_grant_created_webhook_event.rb +56 -0
  19. data/lib/dodopayments/models/entitlement_grant_delivered_webhook_event.rb +56 -0
  20. data/lib/dodopayments/models/entitlement_grant_failed_webhook_event.rb +56 -0
  21. data/lib/dodopayments/models/entitlement_grant_revoked_webhook_event.rb +56 -0
  22. data/lib/dodopayments/models/entitlement_integration_type.rb +21 -0
  23. data/lib/dodopayments/models/entitlement_list_params.rb +55 -0
  24. data/lib/dodopayments/models/entitlement_retrieve_params.rb +20 -0
  25. data/lib/dodopayments/models/entitlement_update_params.rb +54 -0
  26. data/lib/dodopayments/models/entitlements/entitlement_grant.rb +190 -0
  27. data/lib/dodopayments/models/entitlements/file_delete_params.rb +28 -0
  28. data/lib/dodopayments/models/entitlements/file_upload_params.rb +22 -0
  29. data/lib/dodopayments/models/entitlements/file_upload_response.rb +23 -0
  30. data/lib/dodopayments/models/entitlements/grant_list_params.rb +68 -0
  31. data/lib/dodopayments/models/entitlements/grant_revoke_params.rb +28 -0
  32. data/lib/dodopayments/models/entitlements/license_key_grant.rb +45 -0
  33. data/lib/dodopayments/models/integration_config.rb +217 -0
  34. data/lib/dodopayments/models/integration_config_response.rb +278 -0
  35. data/lib/dodopayments/models/license_key_instance_list_params.rb +9 -1
  36. data/lib/dodopayments/models/one_time_product_cart_item.rb +15 -1
  37. data/lib/dodopayments/models/payment.rb +19 -3
  38. data/lib/dodopayments/models/payment_create_params.rb +23 -35
  39. data/lib/dodopayments/models/payment_create_response.rb +3 -33
  40. data/lib/dodopayments/models/product.rb +10 -217
  41. data/lib/dodopayments/models/product_create_params.rb +25 -6
  42. data/lib/dodopayments/models/product_entitlement_summary.rb +57 -0
  43. data/lib/dodopayments/models/product_list_response.rb +3 -218
  44. data/lib/dodopayments/models/product_update_params.rb +21 -7
  45. data/lib/dodopayments/models/scheduled_plan_change.rb +99 -0
  46. data/lib/dodopayments/models/subscription.rb +20 -102
  47. data/lib/dodopayments/models/subscription_create_params.rb +27 -37
  48. data/lib/dodopayments/models/subscription_create_response.rb +19 -3
  49. data/lib/dodopayments/models/subscription_list_response.rb +3 -103
  50. data/lib/dodopayments/models/subscription_update_params.rb +23 -1
  51. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +11 -1
  52. data/lib/dodopayments/models/unwrap_webhook_event.rb +11 -1
  53. data/lib/dodopayments/models/update_subscription_plan_req.rb +10 -1
  54. data/lib/dodopayments/models/webhook_event_type.rb +1 -0
  55. data/lib/dodopayments/models/webhook_payload.rb +6 -153
  56. data/lib/dodopayments/models.rb +40 -0
  57. data/lib/dodopayments/resources/checkout_sessions.rb +6 -2
  58. data/lib/dodopayments/resources/customers.rb +20 -0
  59. data/lib/dodopayments/resources/entitlements/files.rb +63 -0
  60. data/lib/dodopayments/resources/entitlements/grants.rb +76 -0
  61. data/lib/dodopayments/resources/entitlements.rb +153 -0
  62. data/lib/dodopayments/resources/license_key_instances.rb +3 -1
  63. data/lib/dodopayments/resources/payments.rb +6 -2
  64. data/lib/dodopayments/resources/products.rb +4 -4
  65. data/lib/dodopayments/resources/subscriptions.rb +20 -5
  66. data/lib/dodopayments/resources/webhooks.rb +2 -2
  67. data/lib/dodopayments/version.rb +1 -1
  68. data/lib/dodopayments.rb +30 -0
  69. data/rbi/dodopayments/client.rbi +3 -0
  70. data/rbi/dodopayments/models/attach_product_entitlement.rbi +35 -0
  71. data/rbi/dodopayments/models/cancellation_feedback.rbi +45 -0
  72. data/rbi/dodopayments/models/checkout_session_flags.rbi +20 -3
  73. data/rbi/dodopayments/models/checkout_session_request.rbi +18 -0
  74. data/rbi/dodopayments/models/credit_entitlements/credit_ledger_entry.rbi +5 -0
  75. data/rbi/dodopayments/models/credit_overage_reset_webhook_event.rbi +103 -0
  76. data/rbi/dodopayments/models/customer_list_entitlements_params.rbi +38 -0
  77. data/rbi/dodopayments/models/customer_list_entitlements_response.rbi +189 -0
  78. data/rbi/dodopayments/models/digital_product_delivery.rbi +16 -18
  79. data/rbi/dodopayments/models/digital_product_delivery_file.rbi +51 -8
  80. data/rbi/dodopayments/models/entitlement.rbi +127 -0
  81. data/rbi/dodopayments/models/entitlement_create_params.rbi +115 -0
  82. data/rbi/dodopayments/models/entitlement_delete_params.rbi +38 -0
  83. data/rbi/dodopayments/models/entitlement_grant_created_webhook_event.rbi +107 -0
  84. data/rbi/dodopayments/models/entitlement_grant_delivered_webhook_event.rbi +107 -0
  85. data/rbi/dodopayments/models/entitlement_grant_failed_webhook_event.rbi +106 -0
  86. data/rbi/dodopayments/models/entitlement_grant_revoked_webhook_event.rbi +107 -0
  87. data/rbi/dodopayments/models/entitlement_integration_type.rbi +44 -0
  88. data/rbi/dodopayments/models/entitlement_list_params.rbi +146 -0
  89. data/rbi/dodopayments/models/entitlement_retrieve_params.rbi +38 -0
  90. data/rbi/dodopayments/models/entitlement_update_params.rbi +111 -0
  91. data/rbi/dodopayments/models/entitlements/entitlement_grant.rbi +269 -0
  92. data/rbi/dodopayments/models/entitlements/file_delete_params.rbi +48 -0
  93. data/rbi/dodopayments/models/entitlements/file_upload_params.rbi +40 -0
  94. data/rbi/dodopayments/models/entitlements/file_upload_response.rbi +34 -0
  95. data/rbi/dodopayments/models/entitlements/grant_list_params.rbi +145 -0
  96. data/rbi/dodopayments/models/entitlements/grant_revoke_params.rbi +48 -0
  97. data/rbi/dodopayments/models/entitlements/license_key_grant.rbi +68 -0
  98. data/rbi/dodopayments/models/integration_config.rbi +411 -0
  99. data/rbi/dodopayments/models/integration_config_response.rbi +531 -0
  100. data/rbi/dodopayments/models/license_key_instance_list_params.rbi +8 -0
  101. data/rbi/dodopayments/models/one_time_product_cart_item.rbi +24 -3
  102. data/rbi/dodopayments/models/payment.rbi +31 -3
  103. data/rbi/dodopayments/models/payment_create_params.rbi +28 -56
  104. data/rbi/dodopayments/models/payment_create_response.rbi +3 -68
  105. data/rbi/dodopayments/models/product.rbi +8 -420
  106. data/rbi/dodopayments/models/product_create_params.rbi +43 -7
  107. data/rbi/dodopayments/models/product_entitlement_summary.rbi +88 -0
  108. data/rbi/dodopayments/models/product_list_response.rbi +3 -430
  109. data/rbi/dodopayments/models/product_update_params.rbi +35 -9
  110. data/rbi/dodopayments/models/scheduled_plan_change.rbi +141 -0
  111. data/rbi/dodopayments/models/subscription.rbi +24 -149
  112. data/rbi/dodopayments/models/subscription_create_params.rbi +36 -68
  113. data/rbi/dodopayments/models/subscription_create_response.rbi +47 -3
  114. data/rbi/dodopayments/models/subscription_list_response.rbi +4 -167
  115. data/rbi/dodopayments/models/subscription_update_params.rbi +27 -0
  116. data/rbi/dodopayments/models/unsafe_unwrap_webhook_event.rbi +5 -0
  117. data/rbi/dodopayments/models/unwrap_webhook_event.rbi +5 -0
  118. data/rbi/dodopayments/models/update_subscription_plan_req.rbi +10 -0
  119. data/rbi/dodopayments/models/webhook_event_type.rbi +5 -0
  120. data/rbi/dodopayments/models/webhook_payload.rbi +6 -197
  121. data/rbi/dodopayments/models.rbi +46 -0
  122. data/rbi/dodopayments/resources/checkout_sessions.rbi +16 -0
  123. data/rbi/dodopayments/resources/customers.rbi +14 -0
  124. data/rbi/dodopayments/resources/entitlements/files.rbi +45 -0
  125. data/rbi/dodopayments/resources/entitlements/grants.rbi +63 -0
  126. data/rbi/dodopayments/resources/entitlements.rbi +143 -0
  127. data/rbi/dodopayments/resources/license_key_instances.rbi +3 -0
  128. data/rbi/dodopayments/resources/payments.rbi +10 -2
  129. data/rbi/dodopayments/resources/products.rbi +34 -7
  130. data/rbi/dodopayments/resources/subscriptions.rbi +31 -5
  131. data/rbi/dodopayments/resources/webhooks.rbi +10 -0
  132. data/sig/dodopayments/client.rbs +2 -0
  133. data/sig/dodopayments/models/attach_product_entitlement.rbs +13 -0
  134. data/sig/dodopayments/models/cancellation_feedback.rbs +28 -0
  135. data/sig/dodopayments/models/checkout_session_flags.rbs +10 -3
  136. data/sig/dodopayments/models/checkout_session_request.rbs +5 -0
  137. data/sig/dodopayments/models/credit_entitlements/credit_ledger_entry.rbs +2 -0
  138. data/sig/dodopayments/models/credit_overage_reset_webhook_event.rbs +45 -0
  139. data/sig/dodopayments/models/customer_list_entitlements_params.rbs +23 -0
  140. data/sig/dodopayments/models/customer_list_entitlements_response.rbs +95 -0
  141. data/sig/dodopayments/models/digital_product_delivery.rbs +5 -5
  142. data/sig/dodopayments/models/digital_product_delivery_file.rbs +32 -5
  143. data/sig/dodopayments/models/entitlement.rbs +65 -0
  144. data/sig/dodopayments/models/entitlement_create_params.rbs +48 -0
  145. data/sig/dodopayments/models/entitlement_delete_params.rbs +23 -0
  146. data/sig/dodopayments/models/entitlement_grant_created_webhook_event.rbs +45 -0
  147. data/sig/dodopayments/models/entitlement_grant_delivered_webhook_event.rbs +45 -0
  148. data/sig/dodopayments/models/entitlement_grant_failed_webhook_event.rbs +45 -0
  149. data/sig/dodopayments/models/entitlement_grant_revoked_webhook_event.rbs +45 -0
  150. data/sig/dodopayments/models/entitlement_integration_type.rbs +28 -0
  151. data/sig/dodopayments/models/entitlement_list_params.rbs +69 -0
  152. data/sig/dodopayments/models/entitlement_retrieve_params.rbs +23 -0
  153. data/sig/dodopayments/models/entitlement_update_params.rbs +46 -0
  154. data/sig/dodopayments/models/entitlements/entitlement_grant.rbs +127 -0
  155. data/sig/dodopayments/models/entitlements/file_delete_params.rbs +30 -0
  156. data/sig/dodopayments/models/entitlements/file_upload_params.rbs +25 -0
  157. data/sig/dodopayments/models/entitlements/file_upload_response.rbs +15 -0
  158. data/sig/dodopayments/models/entitlements/grant_list_params.rbs +71 -0
  159. data/sig/dodopayments/models/entitlements/grant_revoke_params.rbs +30 -0
  160. data/sig/dodopayments/models/entitlements/license_key_grant.rbs +37 -0
  161. data/sig/dodopayments/models/integration_config.rbs +171 -0
  162. data/sig/dodopayments/models/integration_config_response.rbs +225 -0
  163. data/sig/dodopayments/models/license_key_instance_list_params.rbs +10 -1
  164. data/sig/dodopayments/models/one_time_product_cart_item.rbs +14 -3
  165. data/sig/dodopayments/models/payment.rbs +16 -4
  166. data/sig/dodopayments/models/payment_create_params.rbs +16 -27
  167. data/sig/dodopayments/models/payment_create_response.rbs +4 -27
  168. data/sig/dodopayments/models/product.rbs +4 -205
  169. data/sig/dodopayments/models/product_create_params.rbs +4 -4
  170. data/sig/dodopayments/models/product_entitlement_summary.rbs +40 -0
  171. data/sig/dodopayments/models/product_list_response.rbs +4 -205
  172. data/sig/dodopayments/models/product_update_params.rbs +4 -4
  173. data/sig/dodopayments/models/scheduled_plan_change.rbs +73 -0
  174. data/sig/dodopayments/models/subscription.rbs +14 -74
  175. data/sig/dodopayments/models/subscription_create_params.rbs +16 -27
  176. data/sig/dodopayments/models/subscription_create_response.rbs +16 -4
  177. data/sig/dodopayments/models/subscription_list_response.rbs +4 -74
  178. data/sig/dodopayments/models/subscription_update_params.rbs +12 -0
  179. data/sig/dodopayments/models/unsafe_unwrap_webhook_event.rbs +5 -0
  180. data/sig/dodopayments/models/unwrap_webhook_event.rbs +5 -0
  181. data/sig/dodopayments/models/update_subscription_plan_req.rbs +5 -0
  182. data/sig/dodopayments/models/webhook_event_type.rbs +2 -0
  183. data/sig/dodopayments/models/webhook_payload.rbs +8 -134
  184. data/sig/dodopayments/models.rbs +40 -0
  185. data/sig/dodopayments/resources/checkout_sessions.rbs +2 -0
  186. data/sig/dodopayments/resources/customers.rbs +5 -0
  187. data/sig/dodopayments/resources/entitlements/files.rbs +20 -0
  188. data/sig/dodopayments/resources/entitlements/grants.rbs +24 -0
  189. data/sig/dodopayments/resources/entitlements.rbs +46 -0
  190. data/sig/dodopayments/resources/license_key_instances.rbs +1 -0
  191. data/sig/dodopayments/resources/payments.rbs +3 -1
  192. data/sig/dodopayments/resources/products.rbs +2 -2
  193. data/sig/dodopayments/resources/subscriptions.rbs +7 -1
  194. data/sig/dodopayments/resources/webhooks.rbs +10 -0
  195. metadata +92 -2
@@ -30,9 +30,14 @@ module Dodopayments
30
30
  attr_accessor :customer
31
31
 
32
32
  # List of products in the cart. Must contain at least 1 and at most 100 items.
33
- sig { returns(T::Array[Dodopayments::PaymentCreateParams::ProductCart]) }
33
+ sig { returns(T::Array[Dodopayments::OneTimeProductCartItem]) }
34
34
  attr_accessor :product_cart
35
35
 
36
+ # Whether adaptive currency fees should be included in the price (true) or added
37
+ # on top (false). If not specified, defaults to the business-level setting.
38
+ sig { returns(T.nilable(T::Boolean)) }
39
+ attr_accessor :adaptive_currency_fees_inclusive
40
+
36
41
  # List of payment methods allowed during checkout.
37
42
  #
38
43
  # Customers will **never** see payment methods that are **not** in this list.
@@ -83,6 +88,15 @@ module Dodopayments
83
88
  sig { params(redirect_immediately: T::Boolean).void }
84
89
  attr_writer :redirect_immediately
85
90
 
91
+ # If true, the customer's phone number is required to create this payment.
92
+ # Typically set alongside `payment_link=true` so merchants can enforce phone
93
+ # collection on the hosted payment page. Defaults to false.
94
+ sig { returns(T.nilable(T::Boolean)) }
95
+ attr_reader :require_phone_number
96
+
97
+ sig { params(require_phone_number: T::Boolean).void }
98
+ attr_writer :require_phone_number
99
+
86
100
  # Optional URL to redirect the customer after payment. Must be a valid URL if
87
101
  # provided.
88
102
  sig { returns(T.nilable(String)) }
@@ -112,8 +126,8 @@ module Dodopayments
112
126
  Dodopayments::AttachExistingCustomer::OrHash,
113
127
  Dodopayments::NewCustomer::OrHash
114
128
  ),
115
- product_cart:
116
- T::Array[Dodopayments::PaymentCreateParams::ProductCart::OrHash],
129
+ product_cart: T::Array[Dodopayments::OneTimeProductCartItem::OrHash],
130
+ adaptive_currency_fees_inclusive: T.nilable(T::Boolean),
117
131
  allowed_payment_method_types:
118
132
  T.nilable(T::Array[Dodopayments::PaymentMethodTypes::OrSymbol]),
119
133
  billing_currency: T.nilable(Dodopayments::Currency::OrSymbol),
@@ -123,6 +137,7 @@ module Dodopayments
123
137
  payment_link: T.nilable(T::Boolean),
124
138
  payment_method_id: T.nilable(String),
125
139
  redirect_immediately: T::Boolean,
140
+ require_phone_number: T::Boolean,
126
141
  return_url: T.nilable(String),
127
142
  short_link: T.nilable(T::Boolean),
128
143
  show_saved_payment_methods: T::Boolean,
@@ -137,6 +152,9 @@ module Dodopayments
137
152
  customer:,
138
153
  # List of products in the cart. Must contain at least 1 and at most 100 items.
139
154
  product_cart:,
155
+ # Whether adaptive currency fees should be included in the price (true) or added
156
+ # on top (false). If not specified, defaults to the business-level setting.
157
+ adaptive_currency_fees_inclusive: nil,
140
158
  # List of payment methods allowed during checkout.
141
159
  #
142
160
  # Customers will **never** see payment methods that are **not** in this list.
@@ -163,6 +181,10 @@ module Dodopayments
163
181
  # If true, redirects the customer immediately after payment completion False by
164
182
  # default
165
183
  redirect_immediately: nil,
184
+ # If true, the customer's phone number is required to create this payment.
185
+ # Typically set alongside `payment_link=true` so merchants can enforce phone
186
+ # collection on the hosted payment page. Defaults to false.
187
+ require_phone_number: nil,
166
188
  # Optional URL to redirect the customer after payment. Must be a valid URL if
167
189
  # provided.
168
190
  return_url: nil,
@@ -186,8 +208,8 @@ module Dodopayments
186
208
  Dodopayments::AttachExistingCustomer,
187
209
  Dodopayments::NewCustomer
188
210
  ),
189
- product_cart:
190
- T::Array[Dodopayments::PaymentCreateParams::ProductCart],
211
+ product_cart: T::Array[Dodopayments::OneTimeProductCartItem],
212
+ adaptive_currency_fees_inclusive: T.nilable(T::Boolean),
191
213
  allowed_payment_method_types:
192
214
  T.nilable(T::Array[Dodopayments::PaymentMethodTypes::OrSymbol]),
193
215
  billing_currency: T.nilable(Dodopayments::Currency::OrSymbol),
@@ -197,6 +219,7 @@ module Dodopayments
197
219
  payment_link: T.nilable(T::Boolean),
198
220
  payment_method_id: T.nilable(String),
199
221
  redirect_immediately: T::Boolean,
222
+ require_phone_number: T::Boolean,
200
223
  return_url: T.nilable(String),
201
224
  short_link: T.nilable(T::Boolean),
202
225
  show_saved_payment_methods: T::Boolean,
@@ -207,57 +230,6 @@ module Dodopayments
207
230
  end
208
231
  def to_hash
209
232
  end
210
-
211
- class ProductCart < Dodopayments::Internal::Type::BaseModel
212
- OrHash =
213
- T.type_alias do
214
- T.any(
215
- Dodopayments::PaymentCreateParams::ProductCart,
216
- Dodopayments::Internal::AnyHash
217
- )
218
- end
219
-
220
- sig { returns(String) }
221
- attr_accessor :product_id
222
-
223
- sig { returns(Integer) }
224
- attr_accessor :quantity
225
-
226
- # Amount the customer pays if pay_what_you_want is enabled. If disabled then
227
- # amount will be ignored Represented in the lowest denomination of the currency
228
- # (e.g., cents for USD). For example, to charge $1.00, pass `100`.
229
- sig { returns(T.nilable(Integer)) }
230
- attr_accessor :amount
231
-
232
- sig do
233
- params(
234
- product_id: String,
235
- quantity: Integer,
236
- amount: T.nilable(Integer)
237
- ).returns(T.attached_class)
238
- end
239
- def self.new(
240
- product_id:,
241
- quantity:,
242
- # Amount the customer pays if pay_what_you_want is enabled. If disabled then
243
- # amount will be ignored Represented in the lowest denomination of the currency
244
- # (e.g., cents for USD). For example, to charge $1.00, pass `100`.
245
- amount: nil
246
- )
247
- end
248
-
249
- sig do
250
- override.returns(
251
- {
252
- product_id: String,
253
- quantity: Integer,
254
- amount: T.nilable(Integer)
255
- }
256
- )
257
- end
258
- def to_hash
259
- end
260
- end
261
233
  end
262
234
  end
263
235
  end
@@ -50,13 +50,7 @@ module Dodopayments
50
50
  attr_accessor :payment_link
51
51
 
52
52
  # Optional list of products included in the payment
53
- sig do
54
- returns(
55
- T.nilable(
56
- T::Array[Dodopayments::Models::PaymentCreateResponse::ProductCart]
57
- )
58
- )
59
- end
53
+ sig { returns(T.nilable(T::Array[Dodopayments::OneTimeProductCartItem])) }
60
54
  attr_accessor :product_cart
61
55
 
62
56
  sig do
@@ -70,11 +64,7 @@ module Dodopayments
70
64
  expires_on: T.nilable(Time),
71
65
  payment_link: T.nilable(String),
72
66
  product_cart:
73
- T.nilable(
74
- T::Array[
75
- Dodopayments::Models::PaymentCreateResponse::ProductCart::OrHash
76
- ]
77
- )
67
+ T.nilable(T::Array[Dodopayments::OneTimeProductCartItem::OrHash])
78
68
  ).returns(T.attached_class)
79
69
  end
80
70
  def self.new(
@@ -112,67 +102,12 @@ module Dodopayments
112
102
  expires_on: T.nilable(Time),
113
103
  payment_link: T.nilable(String),
114
104
  product_cart:
115
- T.nilable(
116
- T::Array[
117
- Dodopayments::Models::PaymentCreateResponse::ProductCart
118
- ]
119
- )
105
+ T.nilable(T::Array[Dodopayments::OneTimeProductCartItem])
120
106
  }
121
107
  )
122
108
  end
123
109
  def to_hash
124
110
  end
125
-
126
- class ProductCart < Dodopayments::Internal::Type::BaseModel
127
- OrHash =
128
- T.type_alias do
129
- T.any(
130
- Dodopayments::Models::PaymentCreateResponse::ProductCart,
131
- Dodopayments::Internal::AnyHash
132
- )
133
- end
134
-
135
- sig { returns(String) }
136
- attr_accessor :product_id
137
-
138
- sig { returns(Integer) }
139
- attr_accessor :quantity
140
-
141
- # Amount the customer pays if pay_what_you_want is enabled. If disabled then
142
- # amount will be ignored Represented in the lowest denomination of the currency
143
- # (e.g., cents for USD). For example, to charge $1.00, pass `100`.
144
- sig { returns(T.nilable(Integer)) }
145
- attr_accessor :amount
146
-
147
- sig do
148
- params(
149
- product_id: String,
150
- quantity: Integer,
151
- amount: T.nilable(Integer)
152
- ).returns(T.attached_class)
153
- end
154
- def self.new(
155
- product_id:,
156
- quantity:,
157
- # Amount the customer pays if pay_what_you_want is enabled. If disabled then
158
- # amount will be ignored Represented in the lowest denomination of the currency
159
- # (e.g., cents for USD). For example, to charge $1.00, pass `100`.
160
- amount: nil
161
- )
162
- end
163
-
164
- sig do
165
- override.returns(
166
- {
167
- product_id: String,
168
- quantity: Integer,
169
- amount: T.nilable(Integer)
170
- }
171
- )
172
- end
173
- def to_hash
174
- end
175
- end
176
111
  end
177
112
  end
178
113
  end
@@ -24,7 +24,7 @@ module Dodopayments
24
24
  attr_accessor :credit_entitlements
25
25
 
26
26
  # Attached entitlements (integration-based access grants)
27
- sig { returns(T::Array[Dodopayments::Product::Entitlement]) }
27
+ sig { returns(T::Array[Dodopayments::ProductEntitlementSummary]) }
28
28
  attr_accessor :entitlements
29
29
 
30
30
  # Indicates if the product is recurring (e.g., subscriptions).
@@ -63,6 +63,8 @@ module Dodopayments
63
63
  sig { returns(T.nilable(String)) }
64
64
  attr_accessor :description
65
65
 
66
+ # Digital-product-delivery payload, present on grants for `digital_files`
67
+ # entitlements. Each file carries a short-lived presigned download URL.
66
68
  sig { returns(T.nilable(Dodopayments::DigitalProductDelivery)) }
67
69
  attr_reader :digital_product_delivery
68
70
 
@@ -113,7 +115,8 @@ module Dodopayments
113
115
  created_at: Time,
114
116
  credit_entitlements:
115
117
  T::Array[Dodopayments::CreditEntitlementMappingResponse::OrHash],
116
- entitlements: T::Array[Dodopayments::Product::Entitlement::OrHash],
118
+ entitlements:
119
+ T::Array[Dodopayments::ProductEntitlementSummary::OrHash],
117
120
  is_recurring: T::Boolean,
118
121
  license_key_enabled: T::Boolean,
119
122
  metadata: T::Hash[Symbol, String],
@@ -167,6 +170,8 @@ module Dodopayments
167
170
  addons: nil,
168
171
  # Description of the product, optional.
169
172
  description: nil,
173
+ # Digital-product-delivery payload, present on grants for `digital_files`
174
+ # entitlements. Each file carries a short-lived presigned download URL.
170
175
  digital_product_delivery: nil,
171
176
  # URL of the product image, optional.
172
177
  image: nil,
@@ -191,7 +196,7 @@ module Dodopayments
191
196
  created_at: Time,
192
197
  credit_entitlements:
193
198
  T::Array[Dodopayments::CreditEntitlementMappingResponse],
194
- entitlements: T::Array[Dodopayments::Product::Entitlement],
199
+ entitlements: T::Array[Dodopayments::ProductEntitlementSummary],
195
200
  is_recurring: T::Boolean,
196
201
  license_key_enabled: T::Boolean,
197
202
  metadata: T::Hash[Symbol, String],
@@ -214,423 +219,6 @@ module Dodopayments
214
219
  end
215
220
  def to_hash
216
221
  end
217
-
218
- class Entitlement < Dodopayments::Internal::Type::BaseModel
219
- OrHash =
220
- T.type_alias do
221
- T.any(
222
- Dodopayments::Product::Entitlement,
223
- Dodopayments::Internal::AnyHash
224
- )
225
- end
226
-
227
- sig { returns(String) }
228
- attr_accessor :id
229
-
230
- # Platform-specific configuration for an entitlement. Each variant uses unique
231
- # field names so `#[serde(untagged)]` can disambiguate correctly.
232
- sig do
233
- returns(
234
- Dodopayments::Product::Entitlement::IntegrationConfig::Variants
235
- )
236
- end
237
- attr_accessor :integration_config
238
-
239
- sig do
240
- returns(
241
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
242
- )
243
- end
244
- attr_accessor :integration_type
245
-
246
- sig { returns(String) }
247
- attr_accessor :name
248
-
249
- sig { returns(T.nilable(String)) }
250
- attr_accessor :description
251
-
252
- # Summary of an entitlement attached to a product
253
- sig do
254
- params(
255
- id: String,
256
- integration_config:
257
- T.any(
258
- Dodopayments::Product::Entitlement::IntegrationConfig::GitHubConfig::OrHash,
259
- Dodopayments::Product::Entitlement::IntegrationConfig::DiscordConfig::OrHash,
260
- Dodopayments::Product::Entitlement::IntegrationConfig::TelegramConfig::OrHash,
261
- Dodopayments::Product::Entitlement::IntegrationConfig::FigmaConfig::OrHash,
262
- Dodopayments::Product::Entitlement::IntegrationConfig::FramerConfig::OrHash,
263
- Dodopayments::Product::Entitlement::IntegrationConfig::NotionConfig::OrHash,
264
- Dodopayments::Product::Entitlement::IntegrationConfig::DigitalFilesConfig::OrHash,
265
- Dodopayments::Product::Entitlement::IntegrationConfig::LicenseKeyConfig::OrHash
266
- ),
267
- integration_type:
268
- Dodopayments::Product::Entitlement::IntegrationType::OrSymbol,
269
- name: String,
270
- description: T.nilable(String)
271
- ).returns(T.attached_class)
272
- end
273
- def self.new(
274
- id:,
275
- # Platform-specific configuration for an entitlement. Each variant uses unique
276
- # field names so `#[serde(untagged)]` can disambiguate correctly.
277
- integration_config:,
278
- integration_type:,
279
- name:,
280
- description: nil
281
- )
282
- end
283
-
284
- sig do
285
- override.returns(
286
- {
287
- id: String,
288
- integration_config:
289
- Dodopayments::Product::Entitlement::IntegrationConfig::Variants,
290
- integration_type:
291
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol,
292
- name: String,
293
- description: T.nilable(String)
294
- }
295
- )
296
- end
297
- def to_hash
298
- end
299
-
300
- # Platform-specific configuration for an entitlement. Each variant uses unique
301
- # field names so `#[serde(untagged)]` can disambiguate correctly.
302
- module IntegrationConfig
303
- extend Dodopayments::Internal::Type::Union
304
-
305
- Variants =
306
- T.type_alias do
307
- T.any(
308
- Dodopayments::Product::Entitlement::IntegrationConfig::GitHubConfig,
309
- Dodopayments::Product::Entitlement::IntegrationConfig::DiscordConfig,
310
- Dodopayments::Product::Entitlement::IntegrationConfig::TelegramConfig,
311
- Dodopayments::Product::Entitlement::IntegrationConfig::FigmaConfig,
312
- Dodopayments::Product::Entitlement::IntegrationConfig::FramerConfig,
313
- Dodopayments::Product::Entitlement::IntegrationConfig::NotionConfig,
314
- Dodopayments::Product::Entitlement::IntegrationConfig::DigitalFilesConfig,
315
- Dodopayments::Product::Entitlement::IntegrationConfig::LicenseKeyConfig
316
- )
317
- end
318
-
319
- class GitHubConfig < Dodopayments::Internal::Type::BaseModel
320
- OrHash =
321
- T.type_alias do
322
- T.any(
323
- Dodopayments::Product::Entitlement::IntegrationConfig::GitHubConfig,
324
- Dodopayments::Internal::AnyHash
325
- )
326
- end
327
-
328
- # One of: pull, push, admin, maintain, triage
329
- sig { returns(String) }
330
- attr_accessor :permission
331
-
332
- sig { returns(String) }
333
- attr_accessor :target_id
334
-
335
- sig do
336
- params(permission: String, target_id: String).returns(
337
- T.attached_class
338
- )
339
- end
340
- def self.new(
341
- # One of: pull, push, admin, maintain, triage
342
- permission:,
343
- target_id:
344
- )
345
- end
346
-
347
- sig { override.returns({ permission: String, target_id: String }) }
348
- def to_hash
349
- end
350
- end
351
-
352
- class DiscordConfig < Dodopayments::Internal::Type::BaseModel
353
- OrHash =
354
- T.type_alias do
355
- T.any(
356
- Dodopayments::Product::Entitlement::IntegrationConfig::DiscordConfig,
357
- Dodopayments::Internal::AnyHash
358
- )
359
- end
360
-
361
- sig { returns(String) }
362
- attr_accessor :guild_id
363
-
364
- sig { returns(T.nilable(String)) }
365
- attr_accessor :role_id
366
-
367
- sig do
368
- params(guild_id: String, role_id: T.nilable(String)).returns(
369
- T.attached_class
370
- )
371
- end
372
- def self.new(guild_id:, role_id: nil)
373
- end
374
-
375
- sig do
376
- override.returns({ guild_id: String, role_id: T.nilable(String) })
377
- end
378
- def to_hash
379
- end
380
- end
381
-
382
- class TelegramConfig < Dodopayments::Internal::Type::BaseModel
383
- OrHash =
384
- T.type_alias do
385
- T.any(
386
- Dodopayments::Product::Entitlement::IntegrationConfig::TelegramConfig,
387
- Dodopayments::Internal::AnyHash
388
- )
389
- end
390
-
391
- sig { returns(String) }
392
- attr_accessor :chat_id
393
-
394
- sig { params(chat_id: String).returns(T.attached_class) }
395
- def self.new(chat_id:)
396
- end
397
-
398
- sig { override.returns({ chat_id: String }) }
399
- def to_hash
400
- end
401
- end
402
-
403
- class FigmaConfig < Dodopayments::Internal::Type::BaseModel
404
- OrHash =
405
- T.type_alias do
406
- T.any(
407
- Dodopayments::Product::Entitlement::IntegrationConfig::FigmaConfig,
408
- Dodopayments::Internal::AnyHash
409
- )
410
- end
411
-
412
- sig { returns(String) }
413
- attr_accessor :figma_file_id
414
-
415
- sig { params(figma_file_id: String).returns(T.attached_class) }
416
- def self.new(figma_file_id:)
417
- end
418
-
419
- sig { override.returns({ figma_file_id: String }) }
420
- def to_hash
421
- end
422
- end
423
-
424
- class FramerConfig < Dodopayments::Internal::Type::BaseModel
425
- OrHash =
426
- T.type_alias do
427
- T.any(
428
- Dodopayments::Product::Entitlement::IntegrationConfig::FramerConfig,
429
- Dodopayments::Internal::AnyHash
430
- )
431
- end
432
-
433
- sig { returns(String) }
434
- attr_accessor :framer_template_id
435
-
436
- sig { params(framer_template_id: String).returns(T.attached_class) }
437
- def self.new(framer_template_id:)
438
- end
439
-
440
- sig { override.returns({ framer_template_id: String }) }
441
- def to_hash
442
- end
443
- end
444
-
445
- class NotionConfig < Dodopayments::Internal::Type::BaseModel
446
- OrHash =
447
- T.type_alias do
448
- T.any(
449
- Dodopayments::Product::Entitlement::IntegrationConfig::NotionConfig,
450
- Dodopayments::Internal::AnyHash
451
- )
452
- end
453
-
454
- sig { returns(String) }
455
- attr_accessor :notion_template_id
456
-
457
- sig { params(notion_template_id: String).returns(T.attached_class) }
458
- def self.new(notion_template_id:)
459
- end
460
-
461
- sig { override.returns({ notion_template_id: String }) }
462
- def to_hash
463
- end
464
- end
465
-
466
- class DigitalFilesConfig < Dodopayments::Internal::Type::BaseModel
467
- OrHash =
468
- T.type_alias do
469
- T.any(
470
- Dodopayments::Product::Entitlement::IntegrationConfig::DigitalFilesConfig,
471
- Dodopayments::Internal::AnyHash
472
- )
473
- end
474
-
475
- sig { returns(T::Array[String]) }
476
- attr_accessor :digital_file_ids
477
-
478
- sig { returns(T.nilable(String)) }
479
- attr_accessor :external_url
480
-
481
- sig { returns(T.nilable(String)) }
482
- attr_accessor :instructions
483
-
484
- sig do
485
- params(
486
- digital_file_ids: T::Array[String],
487
- external_url: T.nilable(String),
488
- instructions: T.nilable(String)
489
- ).returns(T.attached_class)
490
- end
491
- def self.new(
492
- digital_file_ids:,
493
- external_url: nil,
494
- instructions: nil
495
- )
496
- end
497
-
498
- sig do
499
- override.returns(
500
- {
501
- digital_file_ids: T::Array[String],
502
- external_url: T.nilable(String),
503
- instructions: T.nilable(String)
504
- }
505
- )
506
- end
507
- def to_hash
508
- end
509
- end
510
-
511
- class LicenseKeyConfig < Dodopayments::Internal::Type::BaseModel
512
- OrHash =
513
- T.type_alias do
514
- T.any(
515
- Dodopayments::Product::Entitlement::IntegrationConfig::LicenseKeyConfig,
516
- Dodopayments::Internal::AnyHash
517
- )
518
- end
519
-
520
- sig { returns(T.nilable(String)) }
521
- attr_accessor :activation_message
522
-
523
- sig { returns(T.nilable(Integer)) }
524
- attr_accessor :activations_limit
525
-
526
- sig { returns(T.nilable(Integer)) }
527
- attr_accessor :duration_count
528
-
529
- sig { returns(T.nilable(String)) }
530
- attr_accessor :duration_interval
531
-
532
- sig do
533
- params(
534
- activation_message: T.nilable(String),
535
- activations_limit: T.nilable(Integer),
536
- duration_count: T.nilable(Integer),
537
- duration_interval: T.nilable(String)
538
- ).returns(T.attached_class)
539
- end
540
- def self.new(
541
- activation_message: nil,
542
- activations_limit: nil,
543
- duration_count: nil,
544
- duration_interval: nil
545
- )
546
- end
547
-
548
- sig do
549
- override.returns(
550
- {
551
- activation_message: T.nilable(String),
552
- activations_limit: T.nilable(Integer),
553
- duration_count: T.nilable(Integer),
554
- duration_interval: T.nilable(String)
555
- }
556
- )
557
- end
558
- def to_hash
559
- end
560
- end
561
-
562
- sig do
563
- override.returns(
564
- T::Array[
565
- Dodopayments::Product::Entitlement::IntegrationConfig::Variants
566
- ]
567
- )
568
- end
569
- def self.variants
570
- end
571
- end
572
-
573
- module IntegrationType
574
- extend Dodopayments::Internal::Type::Enum
575
-
576
- TaggedSymbol =
577
- T.type_alias do
578
- T.all(Symbol, Dodopayments::Product::Entitlement::IntegrationType)
579
- end
580
- OrSymbol = T.type_alias { T.any(Symbol, String) }
581
-
582
- DISCORD =
583
- T.let(
584
- :discord,
585
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
586
- )
587
- TELEGRAM =
588
- T.let(
589
- :telegram,
590
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
591
- )
592
- GITHUB =
593
- T.let(
594
- :github,
595
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
596
- )
597
- FIGMA =
598
- T.let(
599
- :figma,
600
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
601
- )
602
- FRAMER =
603
- T.let(
604
- :framer,
605
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
606
- )
607
- NOTION =
608
- T.let(
609
- :notion,
610
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
611
- )
612
- DIGITAL_FILES =
613
- T.let(
614
- :digital_files,
615
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
616
- )
617
- LICENSE_KEY =
618
- T.let(
619
- :license_key,
620
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
621
- )
622
-
623
- sig do
624
- override.returns(
625
- T::Array[
626
- Dodopayments::Product::Entitlement::IntegrationType::TaggedSymbol
627
- ]
628
- )
629
- end
630
- def self.values
631
- end
632
- end
633
- end
634
222
  end
635
223
  end
636
224
  end