dodopayments 2.8.0 → 2.9.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 (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 +13 -15
  14. data/lib/dodopayments/models/digital_product_delivery_file.rb +32 -8
  15. data/lib/dodopayments/models/entitlement.rb +86 -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 +51 -0
  19. data/lib/dodopayments/models/entitlement_grant_delivered_webhook_event.rb +51 -0
  20. data/lib/dodopayments/models/entitlement_grant_failed_webhook_event.rb +51 -0
  21. data/lib/dodopayments/models/entitlement_grant_revoked_webhook_event.rb +51 -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 +172 -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 +40 -0
  33. data/lib/dodopayments/models/integration_config.rb +174 -0
  34. data/lib/dodopayments/models/integration_config_response.rb +238 -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 +12 -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 +2 -154
  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 +70 -0
  60. data/lib/dodopayments/resources/entitlements/grants.rb +78 -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 +10 -22
  79. data/rbi/dodopayments/models/digital_product_delivery_file.rbi +40 -8
  80. data/rbi/dodopayments/models/entitlement.rbi +112 -0
  81. data/rbi/dodopayments/models/entitlement_create_params.rbi +112 -0
  82. data/rbi/dodopayments/models/entitlement_delete_params.rbi +38 -0
  83. data/rbi/dodopayments/models/entitlement_grant_created_webhook_event.rbi +103 -0
  84. data/rbi/dodopayments/models/entitlement_grant_delivered_webhook_event.rbi +103 -0
  85. data/rbi/dodopayments/models/entitlement_grant_failed_webhook_event.rbi +102 -0
  86. data/rbi/dodopayments/models/entitlement_grant_revoked_webhook_event.rbi +103 -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 +235 -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 +62 -0
  98. data/rbi/dodopayments/models/integration_config.rbi +296 -0
  99. data/rbi/dodopayments/models/integration_config_response.rbi +416 -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 +12 -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 +4 -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 +52 -0
  125. data/rbi/dodopayments/resources/entitlements/grants.rbi +65 -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 +67 -0
  144. data/sig/dodopayments/models/entitlement_create_params.rbs +46 -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 +134 -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 +147 -0
  162. data/sig/dodopayments/models/integration_config_response.rbs +206 -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
@@ -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,10 @@ module Dodopayments
63
63
  sig { returns(T.nilable(String)) }
64
64
  attr_accessor :description
65
65
 
66
+ # Digital-product-delivery payload for a grant. Populated for grants whose
67
+ # entitlement has `integration_type = 'digital_files'`. `files` carries presigned
68
+ # download URLs; the source (EE service or legacy in-process S3 presigning) is
69
+ # opaque to the caller.
66
70
  sig { returns(T.nilable(Dodopayments::DigitalProductDelivery)) }
67
71
  attr_reader :digital_product_delivery
68
72
 
@@ -113,7 +117,8 @@ module Dodopayments
113
117
  created_at: Time,
114
118
  credit_entitlements:
115
119
  T::Array[Dodopayments::CreditEntitlementMappingResponse::OrHash],
116
- entitlements: T::Array[Dodopayments::Product::Entitlement::OrHash],
120
+ entitlements:
121
+ T::Array[Dodopayments::ProductEntitlementSummary::OrHash],
117
122
  is_recurring: T::Boolean,
118
123
  license_key_enabled: T::Boolean,
119
124
  metadata: T::Hash[Symbol, String],
@@ -167,6 +172,10 @@ module Dodopayments
167
172
  addons: nil,
168
173
  # Description of the product, optional.
169
174
  description: nil,
175
+ # Digital-product-delivery payload for a grant. Populated for grants whose
176
+ # entitlement has `integration_type = 'digital_files'`. `files` carries presigned
177
+ # download URLs; the source (EE service or legacy in-process S3 presigning) is
178
+ # opaque to the caller.
170
179
  digital_product_delivery: nil,
171
180
  # URL of the product image, optional.
172
181
  image: nil,
@@ -191,7 +200,7 @@ module Dodopayments
191
200
  created_at: Time,
192
201
  credit_entitlements:
193
202
  T::Array[Dodopayments::CreditEntitlementMappingResponse],
194
- entitlements: T::Array[Dodopayments::Product::Entitlement],
203
+ entitlements: T::Array[Dodopayments::ProductEntitlementSummary],
195
204
  is_recurring: T::Boolean,
196
205
  license_key_enabled: T::Boolean,
197
206
  metadata: T::Hash[Symbol, String],
@@ -214,423 +223,6 @@ module Dodopayments
214
223
  end
215
224
  def to_hash
216
225
  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
226
  end
635
227
  end
636
228
  end
@@ -53,6 +53,8 @@ module Dodopayments
53
53
  attr_accessor :description
54
54
 
55
55
  # Choose how you would like you digital product delivered
56
+ #
57
+ # deprecated: use entitlements instead
56
58
  sig do
57
59
  returns(
58
60
  T.nilable(Dodopayments::ProductCreateParams::DigitalProductDelivery)
@@ -70,21 +72,32 @@ module Dodopayments
70
72
  end
71
73
  attr_writer :digital_product_delivery
72
74
 
73
- # Optional entitlement IDs to attach to this product (max 20)
74
- sig { returns(T.nilable(T::Array[String])) }
75
- attr_accessor :entitlement_ids
75
+ # Optional entitlements to attach to this product (max 20)
76
+ sig do
77
+ returns(T.nilable(T::Array[Dodopayments::AttachProductEntitlement]))
78
+ end
79
+ attr_accessor :entitlements
76
80
 
77
81
  # Optional message displayed during license key activation
82
+ #
83
+ # deprecated: use entitlements instead. Ignored when a `license_key` entitlement
84
+ # is attached via the `entitlements` field.
78
85
  sig { returns(T.nilable(String)) }
79
86
  attr_accessor :license_key_activation_message
80
87
 
81
88
  # The number of times the license key can be activated. Must be 0 or greater
89
+ #
90
+ # deprecated: use entitlements instead. Ignored when a `license_key` entitlement
91
+ # is attached via the `entitlements` field.
82
92
  sig { returns(T.nilable(Integer)) }
83
93
  attr_accessor :license_key_activations_limit
84
94
 
85
95
  # Duration configuration for the license key. Set to null if you don't want the
86
96
  # license key to expire. For subscriptions, the lifetime of the license key is
87
97
  # tied to the subscription period
98
+ #
99
+ # deprecated: use entitlements instead. Ignored when a `license_key` entitlement
100
+ # is attached via the `entitlements` field.
88
101
  sig { returns(T.nilable(Dodopayments::LicenseKeyDuration)) }
89
102
  attr_reader :license_key_duration
90
103
 
@@ -97,6 +110,10 @@ module Dodopayments
97
110
  attr_writer :license_key_duration
98
111
 
99
112
  # When true, generates and sends a license key to your customer. Defaults to false
113
+ #
114
+ # deprecated: use entitlements instead. If a `license_key` entitlement is also
115
+ # attached via the `entitlements` field, the `license_key_*` config fields below
116
+ # are ignored — the attached entitlement's config is the source of truth.
100
117
  sig { returns(T.nilable(T::Boolean)) }
101
118
  attr_accessor :license_key_enabled
102
119
 
@@ -126,7 +143,8 @@ module Dodopayments
126
143
  T.nilable(
127
144
  Dodopayments::ProductCreateParams::DigitalProductDelivery::OrHash
128
145
  ),
129
- entitlement_ids: T.nilable(T::Array[String]),
146
+ entitlements:
147
+ T.nilable(T::Array[Dodopayments::AttachProductEntitlement::OrHash]),
130
148
  license_key_activation_message: T.nilable(String),
131
149
  license_key_activations_limit: T.nilable(Integer),
132
150
  license_key_duration:
@@ -152,18 +170,33 @@ module Dodopayments
152
170
  # Optional description of the product
153
171
  description: nil,
154
172
  # Choose how you would like you digital product delivered
173
+ #
174
+ # deprecated: use entitlements instead
155
175
  digital_product_delivery: nil,
156
- # Optional entitlement IDs to attach to this product (max 20)
157
- entitlement_ids: nil,
176
+ # Optional entitlements to attach to this product (max 20)
177
+ entitlements: nil,
158
178
  # Optional message displayed during license key activation
179
+ #
180
+ # deprecated: use entitlements instead. Ignored when a `license_key` entitlement
181
+ # is attached via the `entitlements` field.
159
182
  license_key_activation_message: nil,
160
183
  # The number of times the license key can be activated. Must be 0 or greater
184
+ #
185
+ # deprecated: use entitlements instead. Ignored when a `license_key` entitlement
186
+ # is attached via the `entitlements` field.
161
187
  license_key_activations_limit: nil,
162
188
  # Duration configuration for the license key. Set to null if you don't want the
163
189
  # license key to expire. For subscriptions, the lifetime of the license key is
164
190
  # tied to the subscription period
191
+ #
192
+ # deprecated: use entitlements instead. Ignored when a `license_key` entitlement
193
+ # is attached via the `entitlements` field.
165
194
  license_key_duration: nil,
166
195
  # When true, generates and sends a license key to your customer. Defaults to false
196
+ #
197
+ # deprecated: use entitlements instead. If a `license_key` entitlement is also
198
+ # attached via the `entitlements` field, the `license_key_*` config fields below
199
+ # are ignored — the attached entitlement's config is the source of truth.
167
200
  license_key_enabled: nil,
168
201
  # Additional metadata for the product
169
202
  metadata: nil,
@@ -191,7 +224,8 @@ module Dodopayments
191
224
  T.nilable(
192
225
  Dodopayments::ProductCreateParams::DigitalProductDelivery
193
226
  ),
194
- entitlement_ids: T.nilable(T::Array[String]),
227
+ entitlements:
228
+ T.nilable(T::Array[Dodopayments::AttachProductEntitlement]),
195
229
  license_key_activation_message: T.nilable(String),
196
230
  license_key_activations_limit: T.nilable(Integer),
197
231
  license_key_duration: T.nilable(Dodopayments::LicenseKeyDuration),
@@ -222,6 +256,8 @@ module Dodopayments
222
256
  attr_accessor :instructions
223
257
 
224
258
  # Choose how you would like you digital product delivered
259
+ #
260
+ # deprecated: use entitlements instead
225
261
  sig do
226
262
  params(
227
263
  external_url: T.nilable(String),