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
@@ -0,0 +1,416 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ # Public-facing variant of [`IntegrationConfig`]. Mirrors every variant shape on
6
+ # the wire EXCEPT `DigitalFiles`, which is replaced with a hydrated
7
+ # `digital_files` object (resolved download URLs etc.). The persisted JSONB stays
8
+ # ID-only via [`IntegrationConfig`]; this enum is response-only.
9
+ module IntegrationConfigResponse
10
+ extend Dodopayments::Internal::Type::Union
11
+
12
+ Variants =
13
+ T.type_alias do
14
+ T.any(
15
+ Dodopayments::IntegrationConfigResponse::GitHubConfig,
16
+ Dodopayments::IntegrationConfigResponse::DiscordConfig,
17
+ Dodopayments::IntegrationConfigResponse::TelegramConfig,
18
+ Dodopayments::IntegrationConfigResponse::FigmaConfig,
19
+ Dodopayments::IntegrationConfigResponse::FramerConfig,
20
+ Dodopayments::IntegrationConfigResponse::NotionConfig,
21
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig,
22
+ Dodopayments::IntegrationConfigResponse::LicenseKeyConfig
23
+ )
24
+ end
25
+
26
+ class GitHubConfig < Dodopayments::Internal::Type::BaseModel
27
+ OrHash =
28
+ T.type_alias do
29
+ T.any(
30
+ Dodopayments::IntegrationConfigResponse::GitHubConfig,
31
+ Dodopayments::Internal::AnyHash
32
+ )
33
+ end
34
+
35
+ sig { returns(String) }
36
+ attr_accessor :permission
37
+
38
+ sig { returns(String) }
39
+ attr_accessor :target_id
40
+
41
+ sig do
42
+ params(permission: String, target_id: String).returns(
43
+ T.attached_class
44
+ )
45
+ end
46
+ def self.new(permission:, target_id:)
47
+ end
48
+
49
+ sig { override.returns({ permission: String, target_id: String }) }
50
+ def to_hash
51
+ end
52
+ end
53
+
54
+ class DiscordConfig < Dodopayments::Internal::Type::BaseModel
55
+ OrHash =
56
+ T.type_alias do
57
+ T.any(
58
+ Dodopayments::IntegrationConfigResponse::DiscordConfig,
59
+ Dodopayments::Internal::AnyHash
60
+ )
61
+ end
62
+
63
+ sig { returns(String) }
64
+ attr_accessor :guild_id
65
+
66
+ sig { returns(T.nilable(String)) }
67
+ attr_accessor :role_id
68
+
69
+ sig do
70
+ params(guild_id: String, role_id: T.nilable(String)).returns(
71
+ T.attached_class
72
+ )
73
+ end
74
+ def self.new(guild_id:, role_id: nil)
75
+ end
76
+
77
+ sig do
78
+ override.returns({ guild_id: String, role_id: T.nilable(String) })
79
+ end
80
+ def to_hash
81
+ end
82
+ end
83
+
84
+ class TelegramConfig < Dodopayments::Internal::Type::BaseModel
85
+ OrHash =
86
+ T.type_alias do
87
+ T.any(
88
+ Dodopayments::IntegrationConfigResponse::TelegramConfig,
89
+ Dodopayments::Internal::AnyHash
90
+ )
91
+ end
92
+
93
+ sig { returns(String) }
94
+ attr_accessor :chat_id
95
+
96
+ sig { params(chat_id: String).returns(T.attached_class) }
97
+ def self.new(chat_id:)
98
+ end
99
+
100
+ sig { override.returns({ chat_id: String }) }
101
+ def to_hash
102
+ end
103
+ end
104
+
105
+ class FigmaConfig < Dodopayments::Internal::Type::BaseModel
106
+ OrHash =
107
+ T.type_alias do
108
+ T.any(
109
+ Dodopayments::IntegrationConfigResponse::FigmaConfig,
110
+ Dodopayments::Internal::AnyHash
111
+ )
112
+ end
113
+
114
+ sig { returns(String) }
115
+ attr_accessor :figma_file_id
116
+
117
+ sig { params(figma_file_id: String).returns(T.attached_class) }
118
+ def self.new(figma_file_id:)
119
+ end
120
+
121
+ sig { override.returns({ figma_file_id: String }) }
122
+ def to_hash
123
+ end
124
+ end
125
+
126
+ class FramerConfig < Dodopayments::Internal::Type::BaseModel
127
+ OrHash =
128
+ T.type_alias do
129
+ T.any(
130
+ Dodopayments::IntegrationConfigResponse::FramerConfig,
131
+ Dodopayments::Internal::AnyHash
132
+ )
133
+ end
134
+
135
+ sig { returns(String) }
136
+ attr_accessor :framer_template_id
137
+
138
+ sig { params(framer_template_id: String).returns(T.attached_class) }
139
+ def self.new(framer_template_id:)
140
+ end
141
+
142
+ sig { override.returns({ framer_template_id: String }) }
143
+ def to_hash
144
+ end
145
+ end
146
+
147
+ class NotionConfig < Dodopayments::Internal::Type::BaseModel
148
+ OrHash =
149
+ T.type_alias do
150
+ T.any(
151
+ Dodopayments::IntegrationConfigResponse::NotionConfig,
152
+ Dodopayments::Internal::AnyHash
153
+ )
154
+ end
155
+
156
+ sig { returns(String) }
157
+ attr_accessor :notion_template_id
158
+
159
+ sig { params(notion_template_id: String).returns(T.attached_class) }
160
+ def self.new(notion_template_id:)
161
+ end
162
+
163
+ sig { override.returns({ notion_template_id: String }) }
164
+ def to_hash
165
+ end
166
+ end
167
+
168
+ class DigitalFilesConfig < Dodopayments::Internal::Type::BaseModel
169
+ OrHash =
170
+ T.type_alias do
171
+ T.any(
172
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig,
173
+ Dodopayments::Internal::AnyHash
174
+ )
175
+ end
176
+
177
+ # Populated digital-files payload for entitlement read surfaces. Mirrors
178
+ # `DigitalProductDelivery` but is sourced from an entitlement's
179
+ # `integration_config` (not a grant) and tags each file with its origin (`legacy`
180
+ # vs `ee`).
181
+ sig do
182
+ returns(
183
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles
184
+ )
185
+ end
186
+ attr_reader :digital_files
187
+
188
+ sig do
189
+ params(
190
+ digital_files:
191
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles::OrHash
192
+ ).void
193
+ end
194
+ attr_writer :digital_files
195
+
196
+ sig do
197
+ params(
198
+ digital_files:
199
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles::OrHash
200
+ ).returns(T.attached_class)
201
+ end
202
+ def self.new(
203
+ # Populated digital-files payload for entitlement read surfaces. Mirrors
204
+ # `DigitalProductDelivery` but is sourced from an entitlement's
205
+ # `integration_config` (not a grant) and tags each file with its origin (`legacy`
206
+ # vs `ee`).
207
+ digital_files:
208
+ )
209
+ end
210
+
211
+ sig do
212
+ override.returns(
213
+ {
214
+ digital_files:
215
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles
216
+ }
217
+ )
218
+ end
219
+ def to_hash
220
+ end
221
+
222
+ class DigitalFiles < Dodopayments::Internal::Type::BaseModel
223
+ OrHash =
224
+ T.type_alias do
225
+ T.any(
226
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles,
227
+ Dodopayments::Internal::AnyHash
228
+ )
229
+ end
230
+
231
+ sig do
232
+ returns(
233
+ T::Array[
234
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles::File
235
+ ]
236
+ )
237
+ end
238
+ attr_accessor :files
239
+
240
+ sig { returns(T.nilable(String)) }
241
+ attr_accessor :external_url
242
+
243
+ sig { returns(T.nilable(String)) }
244
+ attr_accessor :instructions
245
+
246
+ # Populated digital-files payload for entitlement read surfaces. Mirrors
247
+ # `DigitalProductDelivery` but is sourced from an entitlement's
248
+ # `integration_config` (not a grant) and tags each file with its origin (`legacy`
249
+ # vs `ee`).
250
+ sig do
251
+ params(
252
+ files:
253
+ T::Array[
254
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles::File::OrHash
255
+ ],
256
+ external_url: T.nilable(String),
257
+ instructions: T.nilable(String)
258
+ ).returns(T.attached_class)
259
+ end
260
+ def self.new(files:, external_url: nil, instructions: nil)
261
+ end
262
+
263
+ sig do
264
+ override.returns(
265
+ {
266
+ files:
267
+ T::Array[
268
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles::File
269
+ ],
270
+ external_url: T.nilable(String),
271
+ instructions: T.nilable(String)
272
+ }
273
+ )
274
+ end
275
+ def to_hash
276
+ end
277
+
278
+ class File < Dodopayments::Internal::Type::BaseModel
279
+ OrHash =
280
+ T.type_alias do
281
+ T.any(
282
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles::File,
283
+ Dodopayments::Internal::AnyHash
284
+ )
285
+ end
286
+
287
+ sig { returns(String) }
288
+ attr_accessor :download_url
289
+
290
+ # Seconds until `download_url` expires.
291
+ sig { returns(Integer) }
292
+ attr_accessor :expires_in
293
+
294
+ sig { returns(String) }
295
+ attr_accessor :file_id
296
+
297
+ sig { returns(String) }
298
+ attr_accessor :filename
299
+
300
+ # `"legacy"` for files in `product_files`, `"ee"` for files managed by the
301
+ # Entitlements Engine.
302
+ sig { returns(String) }
303
+ attr_accessor :source
304
+
305
+ sig { returns(T.nilable(String)) }
306
+ attr_accessor :content_type
307
+
308
+ sig { returns(T.nilable(Integer)) }
309
+ attr_accessor :file_size
310
+
311
+ sig do
312
+ params(
313
+ download_url: String,
314
+ expires_in: Integer,
315
+ file_id: String,
316
+ filename: String,
317
+ source: String,
318
+ content_type: T.nilable(String),
319
+ file_size: T.nilable(Integer)
320
+ ).returns(T.attached_class)
321
+ end
322
+ def self.new(
323
+ download_url:,
324
+ # Seconds until `download_url` expires.
325
+ expires_in:,
326
+ file_id:,
327
+ filename:,
328
+ # `"legacy"` for files in `product_files`, `"ee"` for files managed by the
329
+ # Entitlements Engine.
330
+ source:,
331
+ content_type: nil,
332
+ file_size: nil
333
+ )
334
+ end
335
+
336
+ sig do
337
+ override.returns(
338
+ {
339
+ download_url: String,
340
+ expires_in: Integer,
341
+ file_id: String,
342
+ filename: String,
343
+ source: String,
344
+ content_type: T.nilable(String),
345
+ file_size: T.nilable(Integer)
346
+ }
347
+ )
348
+ end
349
+ def to_hash
350
+ end
351
+ end
352
+ end
353
+ end
354
+
355
+ class LicenseKeyConfig < Dodopayments::Internal::Type::BaseModel
356
+ OrHash =
357
+ T.type_alias do
358
+ T.any(
359
+ Dodopayments::IntegrationConfigResponse::LicenseKeyConfig,
360
+ Dodopayments::Internal::AnyHash
361
+ )
362
+ end
363
+
364
+ sig { returns(T.nilable(String)) }
365
+ attr_accessor :activation_message
366
+
367
+ sig { returns(T.nilable(Integer)) }
368
+ attr_accessor :activations_limit
369
+
370
+ sig { returns(T.nilable(Integer)) }
371
+ attr_accessor :duration_count
372
+
373
+ sig { returns(T.nilable(Dodopayments::TimeInterval::TaggedSymbol)) }
374
+ attr_accessor :duration_interval
375
+
376
+ sig do
377
+ params(
378
+ activation_message: T.nilable(String),
379
+ activations_limit: T.nilable(Integer),
380
+ duration_count: T.nilable(Integer),
381
+ duration_interval: T.nilable(Dodopayments::TimeInterval::OrSymbol)
382
+ ).returns(T.attached_class)
383
+ end
384
+ def self.new(
385
+ activation_message: nil,
386
+ activations_limit: nil,
387
+ duration_count: nil,
388
+ duration_interval: nil
389
+ )
390
+ end
391
+
392
+ sig do
393
+ override.returns(
394
+ {
395
+ activation_message: T.nilable(String),
396
+ activations_limit: T.nilable(Integer),
397
+ duration_count: T.nilable(Integer),
398
+ duration_interval:
399
+ T.nilable(Dodopayments::TimeInterval::TaggedSymbol)
400
+ }
401
+ )
402
+ end
403
+ def to_hash
404
+ end
405
+ end
406
+
407
+ sig do
408
+ override.returns(
409
+ T::Array[Dodopayments::IntegrationConfigResponse::Variants]
410
+ )
411
+ end
412
+ def self.variants
413
+ end
414
+ end
415
+ end
416
+ end
@@ -14,6 +14,10 @@ module Dodopayments
14
14
  )
15
15
  end
16
16
 
17
+ # Filter instances by entitlement grant ID
18
+ sig { returns(T.nilable(String)) }
19
+ attr_accessor :grant_id
20
+
17
21
  # Filter by license key ID
18
22
  sig { returns(T.nilable(String)) }
19
23
  attr_accessor :license_key_id
@@ -28,6 +32,7 @@ module Dodopayments
28
32
 
29
33
  sig do
30
34
  params(
35
+ grant_id: T.nilable(String),
31
36
  license_key_id: T.nilable(String),
32
37
  page_number: T.nilable(Integer),
33
38
  page_size: T.nilable(Integer),
@@ -35,6 +40,8 @@ module Dodopayments
35
40
  ).returns(T.attached_class)
36
41
  end
37
42
  def self.new(
43
+ # Filter instances by entitlement grant ID
44
+ grant_id: nil,
38
45
  # Filter by license key ID
39
46
  license_key_id: nil,
40
47
  # Page number default is 0
@@ -48,6 +55,7 @@ module Dodopayments
48
55
  sig do
49
56
  override.returns(
50
57
  {
58
+ grant_id: T.nilable(String),
51
59
  license_key_id: T.nilable(String),
52
60
  page_number: T.nilable(Integer),
53
61
  page_size: T.nilable(Integer),
@@ -17,13 +17,34 @@ module Dodopayments
17
17
  sig { returns(Integer) }
18
18
  attr_accessor :quantity
19
19
 
20
+ # Amount the customer pays if pay_what_you_want is enabled. If disabled then
21
+ # amount will be ignored Represented in the lowest denomination of the currency
22
+ # (e.g., cents for USD). For example, to charge $1.00, pass `100`.
23
+ sig { returns(T.nilable(Integer)) }
24
+ attr_accessor :amount
25
+
20
26
  sig do
21
- params(product_id: String, quantity: Integer).returns(T.attached_class)
27
+ params(
28
+ product_id: String,
29
+ quantity: Integer,
30
+ amount: T.nilable(Integer)
31
+ ).returns(T.attached_class)
22
32
  end
23
- def self.new(product_id:, quantity:)
33
+ def self.new(
34
+ product_id:,
35
+ quantity:,
36
+ # Amount the customer pays if pay_what_you_want is enabled. If disabled then
37
+ # amount will be ignored Represented in the lowest denomination of the currency
38
+ # (e.g., cents for USD). For example, to charge $1.00, pass `100`.
39
+ amount: nil
40
+ )
24
41
  end
25
42
 
26
- sig { override.returns({ product_id: String, quantity: Integer }) }
43
+ sig do
44
+ override.returns(
45
+ { product_id: String, quantity: Integer, amount: T.nilable(Integer) }
46
+ )
47
+ end
27
48
  def to_hash
28
49
  end
29
50
  end
@@ -139,7 +139,7 @@ module Dodopayments
139
139
  attr_accessor :payment_method_type
140
140
 
141
141
  # List of products purchased in a one-time payment
142
- sig { returns(T.nilable(T::Array[Dodopayments::OneTimeProductCartItem])) }
142
+ sig { returns(T.nilable(T::Array[Dodopayments::Payment::ProductCart])) }
143
143
  attr_accessor :product_cart
144
144
 
145
145
  # Summary of the refund status for this payment. None if no succeeded refunds
@@ -204,7 +204,7 @@ module Dodopayments
204
204
  payment_method: T.nilable(String),
205
205
  payment_method_type: T.nilable(String),
206
206
  product_cart:
207
- T.nilable(T::Array[Dodopayments::OneTimeProductCartItem::OrHash]),
207
+ T.nilable(T::Array[Dodopayments::Payment::ProductCart::OrHash]),
208
208
  refund_status: T.nilable(Dodopayments::PaymentRefundStatus::OrSymbol),
209
209
  settlement_tax: T.nilable(Integer),
210
210
  status: T.nilable(Dodopayments::IntentStatus::OrSymbol),
@@ -333,7 +333,7 @@ module Dodopayments
333
333
  payment_method: T.nilable(String),
334
334
  payment_method_type: T.nilable(String),
335
335
  product_cart:
336
- T.nilable(T::Array[Dodopayments::OneTimeProductCartItem]),
336
+ T.nilable(T::Array[Dodopayments::Payment::ProductCart]),
337
337
  refund_status:
338
338
  T.nilable(Dodopayments::PaymentRefundStatus::TaggedSymbol),
339
339
  settlement_tax: T.nilable(Integer),
@@ -346,6 +346,34 @@ module Dodopayments
346
346
  end
347
347
  def to_hash
348
348
  end
349
+
350
+ class ProductCart < Dodopayments::Internal::Type::BaseModel
351
+ OrHash =
352
+ T.type_alias do
353
+ T.any(
354
+ Dodopayments::Payment::ProductCart,
355
+ Dodopayments::Internal::AnyHash
356
+ )
357
+ end
358
+
359
+ sig { returns(String) }
360
+ attr_accessor :product_id
361
+
362
+ sig { returns(Integer) }
363
+ attr_accessor :quantity
364
+
365
+ sig do
366
+ params(product_id: String, quantity: Integer).returns(
367
+ T.attached_class
368
+ )
369
+ end
370
+ def self.new(product_id:, quantity:)
371
+ end
372
+
373
+ sig { override.returns({ product_id: String, quantity: Integer }) }
374
+ def to_hash
375
+ end
376
+ end
349
377
  end
350
378
  end
351
379
  end
@@ -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