dodopayments 2.9.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/internal/transport/base_client.rb +2 -0
  5. data/lib/dodopayments/internal/type/union.rb +21 -7
  6. data/lib/dodopayments/models/abandoned_checkout_detected_webhook_event.rb +4 -16
  7. data/lib/dodopayments/models/abandoned_checkout_recovered_webhook_event.rb +4 -16
  8. data/lib/dodopayments/models/checkout_session_request.rb +15 -2
  9. data/lib/dodopayments/models/credit_added_webhook_event.rb +4 -16
  10. data/lib/dodopayments/models/credit_balance_low_webhook_event.rb +4 -16
  11. data/lib/dodopayments/models/credit_deducted_webhook_event.rb +4 -16
  12. data/lib/dodopayments/models/credit_expired_webhook_event.rb +4 -16
  13. data/lib/dodopayments/models/credit_manual_adjustment_webhook_event.rb +4 -16
  14. data/lib/dodopayments/models/credit_overage_charged_webhook_event.rb +4 -16
  15. data/lib/dodopayments/models/credit_overage_reset_webhook_event.rb +4 -16
  16. data/lib/dodopayments/models/credit_rolled_over_webhook_event.rb +4 -16
  17. data/lib/dodopayments/models/credit_rollover_forfeited_webhook_event.rb +4 -16
  18. data/lib/dodopayments/models/digital_product_delivery.rb +14 -7
  19. data/lib/dodopayments/models/digital_product_delivery_file.rb +12 -5
  20. data/lib/dodopayments/models/dispute_accepted_webhook_event.rb +4 -16
  21. data/lib/dodopayments/models/dispute_cancelled_webhook_event.rb +4 -16
  22. data/lib/dodopayments/models/dispute_challenged_webhook_event.rb +4 -16
  23. data/lib/dodopayments/models/dispute_expired_webhook_event.rb +4 -16
  24. data/lib/dodopayments/models/dispute_lost_webhook_event.rb +4 -16
  25. data/lib/dodopayments/models/dispute_opened_webhook_event.rb +4 -16
  26. data/lib/dodopayments/models/dispute_won_webhook_event.rb +4 -16
  27. data/lib/dodopayments/models/dunning_recovered_webhook_event.rb +4 -16
  28. data/lib/dodopayments/models/dunning_started_webhook_event.rb +4 -16
  29. data/lib/dodopayments/models/entitlement.rb +31 -20
  30. data/lib/dodopayments/models/entitlement_create_params.rb +3 -3
  31. data/lib/dodopayments/models/entitlement_grant_created_webhook_event.rb +10 -17
  32. data/lib/dodopayments/models/entitlement_grant_delivered_webhook_event.rb +10 -17
  33. data/lib/dodopayments/models/entitlement_grant_failed_webhook_event.rb +10 -17
  34. data/lib/dodopayments/models/entitlement_grant_revoked_webhook_event.rb +10 -17
  35. data/lib/dodopayments/models/entitlement_update_params.rb +3 -3
  36. data/lib/dodopayments/models/entitlements/entitlement_grant.rb +50 -32
  37. data/lib/dodopayments/models/entitlements/file_upload_response.rb +3 -3
  38. data/lib/dodopayments/models/entitlements/license_key_grant.rb +14 -9
  39. data/lib/dodopayments/models/integration_config.rb +70 -27
  40. data/lib/dodopayments/models/integration_config_response.rb +88 -48
  41. data/lib/dodopayments/models/license_key_created_webhook_event.rb +4 -16
  42. data/lib/dodopayments/models/payment.rb +153 -3
  43. data/lib/dodopayments/models/payment_cancelled_webhook_event.rb +4 -16
  44. data/lib/dodopayments/models/payment_create_params.rb +15 -3
  45. data/lib/dodopayments/models/payment_create_response.rb +14 -3
  46. data/lib/dodopayments/models/payment_failed_webhook_event.rb +4 -16
  47. data/lib/dodopayments/models/payment_processing_webhook_event.rb +4 -16
  48. data/lib/dodopayments/models/payment_succeeded_webhook_event.rb +4 -16
  49. data/lib/dodopayments/models/payout_list_response.rb +6 -3
  50. data/lib/dodopayments/models/price.rb +20 -48
  51. data/lib/dodopayments/models/product.rb +6 -8
  52. data/lib/dodopayments/models/product_create_params.rb +3 -3
  53. data/lib/dodopayments/models/product_entitlement_summary.rb +5 -5
  54. data/lib/dodopayments/models/product_item_req.rb +42 -1
  55. data/lib/dodopayments/models/product_update_params.rb +3 -3
  56. data/lib/dodopayments/models/refund_failed_webhook_event.rb +4 -16
  57. data/lib/dodopayments/models/refund_succeeded_webhook_event.rb +4 -16
  58. data/lib/dodopayments/models/subscription.rb +153 -5
  59. data/lib/dodopayments/models/subscription_active_webhook_event.rb +4 -16
  60. data/lib/dodopayments/models/subscription_cancelled_webhook_event.rb +4 -16
  61. data/lib/dodopayments/models/subscription_create_params.rb +15 -3
  62. data/lib/dodopayments/models/subscription_create_response.rb +14 -3
  63. data/lib/dodopayments/models/subscription_expired_webhook_event.rb +4 -16
  64. data/lib/dodopayments/models/subscription_failed_webhook_event.rb +4 -16
  65. data/lib/dodopayments/models/subscription_list_response.rb +36 -5
  66. data/lib/dodopayments/models/subscription_on_hold_webhook_event.rb +4 -16
  67. data/lib/dodopayments/models/subscription_plan_changed_webhook_event.rb +4 -16
  68. data/lib/dodopayments/models/subscription_preview_change_plan_response.rb +21 -49
  69. data/lib/dodopayments/models/subscription_renewed_webhook_event.rb +4 -16
  70. data/lib/dodopayments/models/subscription_update_payment_method_params.rb +12 -30
  71. data/lib/dodopayments/models/subscription_updated_webhook_event.rb +4 -16
  72. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +41 -39
  73. data/lib/dodopayments/models/unwrap_webhook_event.rb +41 -39
  74. data/lib/dodopayments/models/update_subscription_plan_req.rb +17 -6
  75. data/lib/dodopayments/models/webhook_event_type.rb +3 -0
  76. data/lib/dodopayments/models/webhook_payload.rb +57 -143
  77. data/lib/dodopayments/resources/checkout_sessions.rb +8 -4
  78. data/lib/dodopayments/resources/entitlements/files.rb +3 -10
  79. data/lib/dodopayments/resources/entitlements/grants.rb +2 -4
  80. data/lib/dodopayments/resources/entitlements.rb +2 -2
  81. data/lib/dodopayments/resources/payments.rb +4 -2
  82. data/lib/dodopayments/resources/subscriptions.rb +12 -6
  83. data/lib/dodopayments/version.rb +1 -1
  84. data/rbi/dodopayments/models/abandoned_checkout_detected_webhook_event.rbi +4 -40
  85. data/rbi/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbi +4 -40
  86. data/rbi/dodopayments/models/checkout_session_request.rbi +14 -0
  87. data/rbi/dodopayments/models/credit_added_webhook_event.rbi +4 -29
  88. data/rbi/dodopayments/models/credit_balance_low_webhook_event.rbi +4 -33
  89. data/rbi/dodopayments/models/credit_deducted_webhook_event.rbi +4 -33
  90. data/rbi/dodopayments/models/credit_expired_webhook_event.rbi +4 -33
  91. data/rbi/dodopayments/models/credit_manual_adjustment_webhook_event.rbi +4 -39
  92. data/rbi/dodopayments/models/credit_overage_charged_webhook_event.rbi +4 -36
  93. data/rbi/dodopayments/models/credit_overage_reset_webhook_event.rbi +4 -36
  94. data/rbi/dodopayments/models/credit_rolled_over_webhook_event.rbi +4 -33
  95. data/rbi/dodopayments/models/credit_rollover_forfeited_webhook_event.rbi +4 -40
  96. data/rbi/dodopayments/models/digital_product_delivery.rbi +15 -5
  97. data/rbi/dodopayments/models/digital_product_delivery_file.rbi +11 -0
  98. data/rbi/dodopayments/models/dispute_accepted_webhook_event.rbi +4 -33
  99. data/rbi/dodopayments/models/dispute_cancelled_webhook_event.rbi +4 -33
  100. data/rbi/dodopayments/models/dispute_challenged_webhook_event.rbi +4 -34
  101. data/rbi/dodopayments/models/dispute_expired_webhook_event.rbi +4 -33
  102. data/rbi/dodopayments/models/dispute_lost_webhook_event.rbi +4 -29
  103. data/rbi/dodopayments/models/dispute_opened_webhook_event.rbi +4 -33
  104. data/rbi/dodopayments/models/dispute_won_webhook_event.rbi +4 -29
  105. data/rbi/dodopayments/models/dunning_recovered_webhook_event.rbi +4 -33
  106. data/rbi/dodopayments/models/dunning_started_webhook_event.rbi +4 -33
  107. data/rbi/dodopayments/models/entitlement.rbi +35 -20
  108. data/rbi/dodopayments/models/entitlement_create_params.rbi +8 -5
  109. data/rbi/dodopayments/models/entitlement_grant_created_webhook_event.rbi +8 -40
  110. data/rbi/dodopayments/models/entitlement_grant_delivered_webhook_event.rbi +8 -40
  111. data/rbi/dodopayments/models/entitlement_grant_failed_webhook_event.rbi +8 -39
  112. data/rbi/dodopayments/models/entitlement_grant_revoked_webhook_event.rbi +8 -40
  113. data/rbi/dodopayments/models/entitlement_update_params.rbi +4 -4
  114. data/rbi/dodopayments/models/entitlements/entitlement_grant.rbi +54 -20
  115. data/rbi/dodopayments/models/entitlements/file_upload_response.rbi +4 -4
  116. data/rbi/dodopayments/models/entitlements/license_key_grant.rbi +10 -4
  117. data/rbi/dodopayments/models/integration_config.rbi +141 -26
  118. data/rbi/dodopayments/models/integration_config_response.rbi +153 -38
  119. data/rbi/dodopayments/models/license_key_created_webhook_event.rbi +4 -34
  120. data/rbi/dodopayments/models/payment.rbi +170 -2
  121. data/rbi/dodopayments/models/payment_cancelled_webhook_event.rbi +4 -33
  122. data/rbi/dodopayments/models/payment_create_params.rbi +14 -2
  123. data/rbi/dodopayments/models/payment_create_response.rbi +12 -2
  124. data/rbi/dodopayments/models/payment_failed_webhook_event.rbi +4 -33
  125. data/rbi/dodopayments/models/payment_processing_webhook_event.rbi +4 -34
  126. data/rbi/dodopayments/models/payment_succeeded_webhook_event.rbi +4 -33
  127. data/rbi/dodopayments/models/price.rbi +18 -90
  128. data/rbi/dodopayments/models/product.rbi +4 -8
  129. data/rbi/dodopayments/models/product_entitlement_summary.rbi +8 -8
  130. data/rbi/dodopayments/models/product_item_req.rbi +74 -3
  131. data/rbi/dodopayments/models/refund_failed_webhook_event.rbi +4 -31
  132. data/rbi/dodopayments/models/refund_succeeded_webhook_event.rbi +4 -33
  133. data/rbi/dodopayments/models/subscription.rbi +173 -4
  134. data/rbi/dodopayments/models/subscription_active_webhook_event.rbi +4 -36
  135. data/rbi/dodopayments/models/subscription_cancelled_webhook_event.rbi +4 -36
  136. data/rbi/dodopayments/models/subscription_create_params.rbi +14 -2
  137. data/rbi/dodopayments/models/subscription_create_response.rbi +12 -2
  138. data/rbi/dodopayments/models/subscription_expired_webhook_event.rbi +4 -36
  139. data/rbi/dodopayments/models/subscription_failed_webhook_event.rbi +4 -36
  140. data/rbi/dodopayments/models/subscription_list_response.rbi +67 -4
  141. data/rbi/dodopayments/models/subscription_on_hold_webhook_event.rbi +4 -36
  142. data/rbi/dodopayments/models/subscription_plan_changed_webhook_event.rbi +4 -40
  143. data/rbi/dodopayments/models/subscription_preview_change_plan_response.rbi +18 -123
  144. data/rbi/dodopayments/models/subscription_renewed_webhook_event.rbi +4 -36
  145. data/rbi/dodopayments/models/subscription_update_payment_method_params.rbi +12 -96
  146. data/rbi/dodopayments/models/subscription_updated_webhook_event.rbi +4 -36
  147. data/rbi/dodopayments/models/update_subscription_plan_req.rbi +18 -8
  148. data/rbi/dodopayments/models/webhook_event_type.rbi +15 -0
  149. data/rbi/dodopayments/models/webhook_payload.rbi +48 -466
  150. data/rbi/dodopayments/resources/checkout_sessions.rbi +12 -0
  151. data/rbi/dodopayments/resources/entitlements/files.rbi +3 -10
  152. data/rbi/dodopayments/resources/entitlements/grants.rbi +2 -4
  153. data/rbi/dodopayments/resources/entitlements.rbi +4 -4
  154. data/rbi/dodopayments/resources/payments.rbi +6 -1
  155. data/rbi/dodopayments/resources/subscriptions.rbi +22 -9
  156. data/sig/dodopayments/models/abandoned_checkout_detected_webhook_event.rbs +4 -14
  157. data/sig/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbs +4 -14
  158. data/sig/dodopayments/models/checkout_session_request.rbs +5 -0
  159. data/sig/dodopayments/models/credit_added_webhook_event.rbs +4 -14
  160. data/sig/dodopayments/models/credit_balance_low_webhook_event.rbs +4 -14
  161. data/sig/dodopayments/models/credit_deducted_webhook_event.rbs +4 -14
  162. data/sig/dodopayments/models/credit_expired_webhook_event.rbs +4 -14
  163. data/sig/dodopayments/models/credit_manual_adjustment_webhook_event.rbs +4 -14
  164. data/sig/dodopayments/models/credit_overage_charged_webhook_event.rbs +4 -14
  165. data/sig/dodopayments/models/credit_overage_reset_webhook_event.rbs +4 -14
  166. data/sig/dodopayments/models/credit_rolled_over_webhook_event.rbs +4 -14
  167. data/sig/dodopayments/models/credit_rollover_forfeited_webhook_event.rbs +4 -14
  168. data/sig/dodopayments/models/dispute_accepted_webhook_event.rbs +4 -14
  169. data/sig/dodopayments/models/dispute_cancelled_webhook_event.rbs +4 -14
  170. data/sig/dodopayments/models/dispute_challenged_webhook_event.rbs +4 -14
  171. data/sig/dodopayments/models/dispute_expired_webhook_event.rbs +4 -14
  172. data/sig/dodopayments/models/dispute_lost_webhook_event.rbs +4 -14
  173. data/sig/dodopayments/models/dispute_opened_webhook_event.rbs +4 -14
  174. data/sig/dodopayments/models/dispute_won_webhook_event.rbs +4 -14
  175. data/sig/dodopayments/models/dunning_recovered_webhook_event.rbs +4 -14
  176. data/sig/dodopayments/models/dunning_started_webhook_event.rbs +4 -14
  177. data/sig/dodopayments/models/entitlement.rbs +8 -10
  178. data/sig/dodopayments/models/entitlement_create_params.rbs +6 -4
  179. data/sig/dodopayments/models/entitlement_grant_created_webhook_event.rbs +4 -14
  180. data/sig/dodopayments/models/entitlement_grant_delivered_webhook_event.rbs +4 -14
  181. data/sig/dodopayments/models/entitlement_grant_failed_webhook_event.rbs +4 -14
  182. data/sig/dodopayments/models/entitlement_grant_revoked_webhook_event.rbs +4 -14
  183. data/sig/dodopayments/models/entitlements/entitlement_grant.rbs +4 -11
  184. data/sig/dodopayments/models/integration_config.rbs +28 -4
  185. data/sig/dodopayments/models/integration_config_response.rbs +28 -9
  186. data/sig/dodopayments/models/license_key_created_webhook_event.rbs +4 -14
  187. data/sig/dodopayments/models/payment.rbs +97 -0
  188. data/sig/dodopayments/models/payment_cancelled_webhook_event.rbs +4 -14
  189. data/sig/dodopayments/models/payment_create_params.rbs +5 -0
  190. data/sig/dodopayments/models/payment_create_response.rbs +5 -0
  191. data/sig/dodopayments/models/payment_failed_webhook_event.rbs +4 -14
  192. data/sig/dodopayments/models/payment_processing_webhook_event.rbs +4 -14
  193. data/sig/dodopayments/models/payment_succeeded_webhook_event.rbs +4 -14
  194. data/sig/dodopayments/models/price.rbs +15 -45
  195. data/sig/dodopayments/models/product_item_req.rbs +27 -3
  196. data/sig/dodopayments/models/refund_failed_webhook_event.rbs +4 -14
  197. data/sig/dodopayments/models/refund_succeeded_webhook_event.rbs +4 -14
  198. data/sig/dodopayments/models/subscription.rbs +97 -0
  199. data/sig/dodopayments/models/subscription_active_webhook_event.rbs +4 -14
  200. data/sig/dodopayments/models/subscription_cancelled_webhook_event.rbs +4 -14
  201. data/sig/dodopayments/models/subscription_create_params.rbs +5 -0
  202. data/sig/dodopayments/models/subscription_create_response.rbs +5 -0
  203. data/sig/dodopayments/models/subscription_expired_webhook_event.rbs +4 -14
  204. data/sig/dodopayments/models/subscription_failed_webhook_event.rbs +4 -14
  205. data/sig/dodopayments/models/subscription_list_response.rbs +24 -0
  206. data/sig/dodopayments/models/subscription_on_hold_webhook_event.rbs +4 -14
  207. data/sig/dodopayments/models/subscription_plan_changed_webhook_event.rbs +4 -14
  208. data/sig/dodopayments/models/subscription_preview_change_plan_response.rbs +15 -45
  209. data/sig/dodopayments/models/subscription_renewed_webhook_event.rbs +4 -14
  210. data/sig/dodopayments/models/subscription_update_payment_method_params.rbs +8 -48
  211. data/sig/dodopayments/models/subscription_updated_webhook_event.rbs +4 -14
  212. data/sig/dodopayments/models/update_subscription_plan_req.rbs +5 -0
  213. data/sig/dodopayments/models/webhook_event_type.rbs +6 -0
  214. data/sig/dodopayments/models/webhook_payload.rbs +50 -213
  215. data/sig/dodopayments/resources/checkout_sessions.rbs +2 -0
  216. data/sig/dodopayments/resources/entitlements.rbs +1 -1
  217. data/sig/dodopayments/resources/payments.rbs +1 -0
  218. data/sig/dodopayments/resources/subscriptions.rbs +3 -0
  219. metadata +2 -2
@@ -2,10 +2,10 @@
2
2
 
3
3
  module Dodopayments
4
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.
5
+ # Integration-specific configuration on an entitlement read response.
6
+ #
7
+ # For `digital_files` entitlements the response includes presigned download URLs
8
+ # for each attached file; other integrations match the shape supplied at creation.
9
9
  module IntegrationConfigResponse
10
10
  extend Dodopayments::Internal::Type::Union
11
11
 
@@ -32,23 +32,94 @@ module Dodopayments
32
32
  )
33
33
  end
34
34
 
35
- sig { returns(String) }
35
+ # Permission to grant on the repository.
36
+ sig do
37
+ returns(
38
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission::TaggedSymbol
39
+ )
40
+ end
36
41
  attr_accessor :permission
37
42
 
43
+ # Repository or organisation slug to grant access to.
38
44
  sig { returns(String) }
39
45
  attr_accessor :target_id
40
46
 
41
47
  sig do
42
- params(permission: String, target_id: String).returns(
43
- T.attached_class
44
- )
48
+ params(
49
+ permission:
50
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission::OrSymbol,
51
+ target_id: String
52
+ ).returns(T.attached_class)
45
53
  end
46
- def self.new(permission:, target_id:)
54
+ def self.new(
55
+ # Permission to grant on the repository.
56
+ permission:,
57
+ # Repository or organisation slug to grant access to.
58
+ target_id:
59
+ )
47
60
  end
48
61
 
49
- sig { override.returns({ permission: String, target_id: String }) }
62
+ sig do
63
+ override.returns(
64
+ {
65
+ permission:
66
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission::TaggedSymbol,
67
+ target_id: String
68
+ }
69
+ )
70
+ end
50
71
  def to_hash
51
72
  end
73
+
74
+ # Permission to grant on the repository.
75
+ module Permission
76
+ extend Dodopayments::Internal::Type::Enum
77
+
78
+ TaggedSymbol =
79
+ T.type_alias do
80
+ T.all(
81
+ Symbol,
82
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission
83
+ )
84
+ end
85
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
86
+
87
+ PULL =
88
+ T.let(
89
+ :pull,
90
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission::TaggedSymbol
91
+ )
92
+ PUSH =
93
+ T.let(
94
+ :push,
95
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission::TaggedSymbol
96
+ )
97
+ ADMIN =
98
+ T.let(
99
+ :admin,
100
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission::TaggedSymbol
101
+ )
102
+ MAINTAIN =
103
+ T.let(
104
+ :maintain,
105
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission::TaggedSymbol
106
+ )
107
+ TRIAGE =
108
+ T.let(
109
+ :triage,
110
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission::TaggedSymbol
111
+ )
112
+
113
+ sig do
114
+ override.returns(
115
+ T::Array[
116
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::Permission::TaggedSymbol
117
+ ]
118
+ )
119
+ end
120
+ def self.values
121
+ end
122
+ end
52
123
  end
53
124
 
54
125
  class DiscordConfig < Dodopayments::Internal::Type::BaseModel
@@ -60,9 +131,11 @@ module Dodopayments
60
131
  )
61
132
  end
62
133
 
134
+ # Discord guild (server) ID.
63
135
  sig { returns(String) }
64
136
  attr_accessor :guild_id
65
137
 
138
+ # Optional Discord role to assign within the guild.
66
139
  sig { returns(T.nilable(String)) }
67
140
  attr_accessor :role_id
68
141
 
@@ -71,7 +144,12 @@ module Dodopayments
71
144
  T.attached_class
72
145
  )
73
146
  end
74
- def self.new(guild_id:, role_id: nil)
147
+ def self.new(
148
+ # Discord guild (server) ID.
149
+ guild_id:,
150
+ # Optional Discord role to assign within the guild.
151
+ role_id: nil
152
+ )
75
153
  end
76
154
 
77
155
  sig do
@@ -90,11 +168,15 @@ module Dodopayments
90
168
  )
91
169
  end
92
170
 
171
+ # Telegram chat ID. For groups this is typically a negative integer.
93
172
  sig { returns(String) }
94
173
  attr_accessor :chat_id
95
174
 
96
175
  sig { params(chat_id: String).returns(T.attached_class) }
97
- def self.new(chat_id:)
176
+ def self.new(
177
+ # Telegram chat ID. For groups this is typically a negative integer.
178
+ chat_id:
179
+ )
98
180
  end
99
181
 
100
182
  sig { override.returns({ chat_id: String }) }
@@ -111,11 +193,15 @@ module Dodopayments
111
193
  )
112
194
  end
113
195
 
196
+ # Figma file identifier to grant access to.
114
197
  sig { returns(String) }
115
198
  attr_accessor :figma_file_id
116
199
 
117
200
  sig { params(figma_file_id: String).returns(T.attached_class) }
118
- def self.new(figma_file_id:)
201
+ def self.new(
202
+ # Figma file identifier to grant access to.
203
+ figma_file_id:
204
+ )
119
205
  end
120
206
 
121
207
  sig { override.returns({ figma_file_id: String }) }
@@ -132,11 +218,15 @@ module Dodopayments
132
218
  )
133
219
  end
134
220
 
221
+ # Framer template identifier to grant access to.
135
222
  sig { returns(String) }
136
223
  attr_accessor :framer_template_id
137
224
 
138
225
  sig { params(framer_template_id: String).returns(T.attached_class) }
139
- def self.new(framer_template_id:)
226
+ def self.new(
227
+ # Framer template identifier to grant access to.
228
+ framer_template_id:
229
+ )
140
230
  end
141
231
 
142
232
  sig { override.returns({ framer_template_id: String }) }
@@ -153,11 +243,15 @@ module Dodopayments
153
243
  )
154
244
  end
155
245
 
246
+ # Notion template identifier to grant access to.
156
247
  sig { returns(String) }
157
248
  attr_accessor :notion_template_id
158
249
 
159
250
  sig { params(notion_template_id: String).returns(T.attached_class) }
160
- def self.new(notion_template_id:)
251
+ def self.new(
252
+ # Notion template identifier to grant access to.
253
+ notion_template_id:
254
+ )
161
255
  end
162
256
 
163
257
  sig { override.returns({ notion_template_id: String }) }
@@ -174,10 +268,8 @@ module Dodopayments
174
268
  )
175
269
  end
176
270
 
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`).
271
+ # Populated digital-files payload with each file's metadata and a short-lived
272
+ # presigned download URL.
181
273
  sig do
182
274
  returns(
183
275
  Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::DigitalFiles
@@ -200,10 +292,8 @@ module Dodopayments
200
292
  ).returns(T.attached_class)
201
293
  end
202
294
  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`).
295
+ # Populated digital-files payload with each file's metadata and a short-lived
296
+ # presigned download URL.
207
297
  digital_files:
208
298
  )
209
299
  end
@@ -228,6 +318,7 @@ module Dodopayments
228
318
  )
229
319
  end
230
320
 
321
+ # One entry per attached file.
231
322
  sig do
232
323
  returns(
233
324
  T::Array[
@@ -237,16 +328,17 @@ module Dodopayments
237
328
  end
238
329
  attr_accessor :files
239
330
 
331
+ # Optional external URL, passed through from the entitlement configuration.
240
332
  sig { returns(T.nilable(String)) }
241
333
  attr_accessor :external_url
242
334
 
335
+ # Optional human-readable delivery instructions, passed through from the
336
+ # entitlement configuration.
243
337
  sig { returns(T.nilable(String)) }
244
338
  attr_accessor :instructions
245
339
 
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`).
340
+ # Populated digital-files payload with each file's metadata and a short-lived
341
+ # presigned download URL.
250
342
  sig do
251
343
  params(
252
344
  files:
@@ -257,7 +349,15 @@ module Dodopayments
257
349
  instructions: T.nilable(String)
258
350
  ).returns(T.attached_class)
259
351
  end
260
- def self.new(files:, external_url: nil, instructions: nil)
352
+ def self.new(
353
+ # One entry per attached file.
354
+ files:,
355
+ # Optional external URL, passed through from the entitlement configuration.
356
+ external_url: nil,
357
+ # Optional human-readable delivery instructions, passed through from the
358
+ # entitlement configuration.
359
+ instructions: nil
360
+ )
261
361
  end
262
362
 
263
363
  sig do
@@ -284,6 +384,7 @@ module Dodopayments
284
384
  )
285
385
  end
286
386
 
387
+ # Short-lived presigned URL for downloading the file.
287
388
  sig { returns(String) }
288
389
  attr_accessor :download_url
289
390
 
@@ -291,44 +392,45 @@ module Dodopayments
291
392
  sig { returns(Integer) }
292
393
  attr_accessor :expires_in
293
394
 
395
+ # Identifier of the attached file.
294
396
  sig { returns(String) }
295
397
  attr_accessor :file_id
296
398
 
399
+ # Original filename of the attached file.
297
400
  sig { returns(String) }
298
401
  attr_accessor :filename
299
402
 
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
-
403
+ # Optional content-type declared at upload.
305
404
  sig { returns(T.nilable(String)) }
306
405
  attr_accessor :content_type
307
406
 
407
+ # Optional size of the file in bytes.
308
408
  sig { returns(T.nilable(Integer)) }
309
409
  attr_accessor :file_size
310
410
 
411
+ # One file in a resolved digital-files payload.
311
412
  sig do
312
413
  params(
313
414
  download_url: String,
314
415
  expires_in: Integer,
315
416
  file_id: String,
316
417
  filename: String,
317
- source: String,
318
418
  content_type: T.nilable(String),
319
419
  file_size: T.nilable(Integer)
320
420
  ).returns(T.attached_class)
321
421
  end
322
422
  def self.new(
423
+ # Short-lived presigned URL for downloading the file.
323
424
  download_url:,
324
425
  # Seconds until `download_url` expires.
325
426
  expires_in:,
427
+ # Identifier of the attached file.
326
428
  file_id:,
429
+ # Original filename of the attached file.
327
430
  filename:,
328
- # `"legacy"` for files in `product_files`, `"ee"` for files managed by the
329
- # Entitlements Engine.
330
- source:,
431
+ # Optional content-type declared at upload.
331
432
  content_type: nil,
433
+ # Optional size of the file in bytes.
332
434
  file_size: nil
333
435
  )
334
436
  end
@@ -340,7 +442,6 @@ module Dodopayments
340
442
  expires_in: Integer,
341
443
  file_id: String,
342
444
  filename: String,
343
- source: String,
344
445
  content_type: T.nilable(String),
345
446
  file_size: T.nilable(Integer)
346
447
  }
@@ -361,15 +462,22 @@ module Dodopayments
361
462
  )
362
463
  end
363
464
 
465
+ # Optional message displayed when a customer activates the license key (≤ 2500
466
+ # characters).
364
467
  sig { returns(T.nilable(String)) }
365
468
  attr_accessor :activation_message
366
469
 
470
+ # Maximum activations allowed per issued license key. Omit for unlimited.
367
471
  sig { returns(T.nilable(Integer)) }
368
472
  attr_accessor :activations_limit
369
473
 
474
+ # Validity duration of issued license keys. Provide both `duration_count` and
475
+ # `duration_interval` together for a fixed duration; omit both for non-expiring
476
+ # keys.
370
477
  sig { returns(T.nilable(Integer)) }
371
478
  attr_accessor :duration_count
372
479
 
480
+ # Unit of `duration_count`.
373
481
  sig { returns(T.nilable(Dodopayments::TimeInterval::TaggedSymbol)) }
374
482
  attr_accessor :duration_interval
375
483
 
@@ -382,9 +490,16 @@ module Dodopayments
382
490
  ).returns(T.attached_class)
383
491
  end
384
492
  def self.new(
493
+ # Optional message displayed when a customer activates the license key (≤ 2500
494
+ # characters).
385
495
  activation_message: nil,
496
+ # Maximum activations allowed per issued license key. Omit for unlimited.
386
497
  activations_limit: nil,
498
+ # Validity duration of issued license keys. Provide both `duration_count` and
499
+ # `duration_interval` together for a fixed duration; omit both for non-expiring
500
+ # keys.
387
501
  duration_count: nil,
502
+ # Unit of `duration_count`.
388
503
  duration_interval: nil
389
504
  )
390
505
  end
@@ -26,9 +26,7 @@ module Dodopayments
26
26
  attr_accessor :timestamp
27
27
 
28
28
  # The event type
29
- sig do
30
- returns(Dodopayments::LicenseKeyCreatedWebhookEvent::Type::TaggedSymbol)
31
- end
29
+ sig { returns(Symbol) }
32
30
  attr_accessor :type
33
31
 
34
32
  sig do
@@ -36,7 +34,7 @@ module Dodopayments
36
34
  business_id: String,
37
35
  data: Dodopayments::LicenseKey::OrHash,
38
36
  timestamp: Time,
39
- type: Dodopayments::LicenseKeyCreatedWebhookEvent::Type::OrSymbol
37
+ type: Symbol
40
38
  ).returns(T.attached_class)
41
39
  end
42
40
  def self.new(
@@ -46,7 +44,7 @@ module Dodopayments
46
44
  # The timestamp of when the event occurred
47
45
  timestamp:,
48
46
  # The event type
49
- type:
47
+ type: :"license_key.created"
50
48
  )
51
49
  end
52
50
 
@@ -56,40 +54,12 @@ module Dodopayments
56
54
  business_id: String,
57
55
  data: Dodopayments::LicenseKey,
58
56
  timestamp: Time,
59
- type:
60
- Dodopayments::LicenseKeyCreatedWebhookEvent::Type::TaggedSymbol
57
+ type: Symbol
61
58
  }
62
59
  )
63
60
  end
64
61
  def to_hash
65
62
  end
66
-
67
- # The event type
68
- module Type
69
- extend Dodopayments::Internal::Type::Enum
70
-
71
- TaggedSymbol =
72
- T.type_alias do
73
- T.all(Symbol, Dodopayments::LicenseKeyCreatedWebhookEvent::Type)
74
- end
75
- OrSymbol = T.type_alias { T.any(Symbol, String) }
76
-
77
- LICENSE_KEY_CREATED =
78
- T.let(
79
- :"license_key.created",
80
- Dodopayments::LicenseKeyCreatedWebhookEvent::Type::TaggedSymbol
81
- )
82
-
83
- sig do
84
- override.returns(
85
- T::Array[
86
- Dodopayments::LicenseKeyCreatedWebhookEvent::Type::TaggedSymbol
87
- ]
88
- )
89
- end
90
- def self.values
91
- end
92
- end
93
63
  end
94
64
  end
95
65
  end
@@ -106,10 +106,14 @@ module Dodopayments
106
106
  sig { returns(T.nilable(T::Array[Dodopayments::CustomFieldResponse])) }
107
107
  attr_accessor :custom_field_responses
108
108
 
109
- # The discount id if discount is applied
109
+ # DEPRECATED: Use discounts instead. Returns the first discount's ID if present.
110
110
  sig { returns(T.nilable(String)) }
111
111
  attr_accessor :discount_id
112
112
 
113
+ # All stacked discounts applied, ordered by position
114
+ sig { returns(T.nilable(T::Array[Dodopayments::Payment::Discount])) }
115
+ attr_accessor :discounts
116
+
113
117
  # An error code if the payment failed
114
118
  sig { returns(T.nilable(String)) }
115
119
  attr_accessor :error_code
@@ -196,6 +200,8 @@ module Dodopayments
196
200
  custom_field_responses:
197
201
  T.nilable(T::Array[Dodopayments::CustomFieldResponse::OrHash]),
198
202
  discount_id: T.nilable(String),
203
+ discounts:
204
+ T.nilable(T::Array[Dodopayments::Payment::Discount::OrHash]),
199
205
  error_code: T.nilable(String),
200
206
  error_message: T.nilable(String),
201
207
  invoice_id: T.nilable(String),
@@ -262,8 +268,10 @@ module Dodopayments
262
268
  checkout_session_id: nil,
263
269
  # Customer's responses to custom fields collected during checkout
264
270
  custom_field_responses: nil,
265
- # The discount id if discount is applied
271
+ # DEPRECATED: Use discounts instead. Returns the first discount's ID if present.
266
272
  discount_id: nil,
273
+ # All stacked discounts applied, ordered by position
274
+ discounts: nil,
267
275
  # An error code if the payment failed
268
276
  error_code: nil,
269
277
  # An error message if the payment failed
@@ -325,6 +333,7 @@ module Dodopayments
325
333
  custom_field_responses:
326
334
  T.nilable(T::Array[Dodopayments::CustomFieldResponse]),
327
335
  discount_id: T.nilable(String),
336
+ discounts: T.nilable(T::Array[Dodopayments::Payment::Discount]),
328
337
  error_code: T.nilable(String),
329
338
  error_message: T.nilable(String),
330
339
  invoice_id: T.nilable(String),
@@ -347,6 +356,165 @@ module Dodopayments
347
356
  def to_hash
348
357
  end
349
358
 
359
+ class Discount < Dodopayments::Internal::Type::BaseModel
360
+ OrHash =
361
+ T.type_alias do
362
+ T.any(
363
+ Dodopayments::Payment::Discount,
364
+ Dodopayments::Internal::AnyHash
365
+ )
366
+ end
367
+
368
+ # The discount amount (basis points for percentage, USD cents for flat)
369
+ sig { returns(Integer) }
370
+ attr_accessor :amount
371
+
372
+ # The business this discount belongs to
373
+ sig { returns(String) }
374
+ attr_accessor :business_id
375
+
376
+ # The discount code
377
+ sig { returns(String) }
378
+ attr_accessor :code
379
+
380
+ # Timestamp when the discount was created
381
+ sig { returns(Time) }
382
+ attr_accessor :created_at
383
+
384
+ # The unique discount ID
385
+ sig { returns(String) }
386
+ attr_accessor :discount_id
387
+
388
+ # Additional metadata
389
+ sig { returns(T::Hash[Symbol, String]) }
390
+ attr_accessor :metadata
391
+
392
+ # Position of this discount in the stack (0-based)
393
+ sig { returns(Integer) }
394
+ attr_accessor :position
395
+
396
+ # Whether this discount should be preserved when a subscription changes plans
397
+ sig { returns(T::Boolean) }
398
+ attr_accessor :preserve_on_plan_change
399
+
400
+ # List of product IDs to which this discount is restricted
401
+ sig { returns(T::Array[String]) }
402
+ attr_accessor :restricted_to
403
+
404
+ # How many times this discount has been used
405
+ sig { returns(Integer) }
406
+ attr_accessor :times_used
407
+
408
+ # The type of discount
409
+ sig { returns(Dodopayments::DiscountType::TaggedSymbol) }
410
+ attr_accessor :type
411
+
412
+ # Remaining billing cycles for this discount on this subscription (None for
413
+ # one-time payments)
414
+ sig { returns(T.nilable(Integer)) }
415
+ attr_accessor :cycles_remaining
416
+
417
+ # Optional date/time after which discount is expired
418
+ sig { returns(T.nilable(Time)) }
419
+ attr_accessor :expires_at
420
+
421
+ # Name for the Discount
422
+ sig { returns(T.nilable(String)) }
423
+ attr_accessor :name
424
+
425
+ # Number of subscription billing cycles this discount is valid for
426
+ sig { returns(T.nilable(Integer)) }
427
+ attr_accessor :subscription_cycles
428
+
429
+ # Usage limit for this discount, if any
430
+ sig { returns(T.nilable(Integer)) }
431
+ attr_accessor :usage_limit
432
+
433
+ # Response struct for a discount with its position in a stack and optional
434
+ # cycle-tracking information (for subscriptions).
435
+ sig do
436
+ params(
437
+ amount: Integer,
438
+ business_id: String,
439
+ code: String,
440
+ created_at: Time,
441
+ discount_id: String,
442
+ metadata: T::Hash[Symbol, String],
443
+ position: Integer,
444
+ preserve_on_plan_change: T::Boolean,
445
+ restricted_to: T::Array[String],
446
+ times_used: Integer,
447
+ type: Dodopayments::DiscountType::OrSymbol,
448
+ cycles_remaining: T.nilable(Integer),
449
+ expires_at: T.nilable(Time),
450
+ name: T.nilable(String),
451
+ subscription_cycles: T.nilable(Integer),
452
+ usage_limit: T.nilable(Integer)
453
+ ).returns(T.attached_class)
454
+ end
455
+ def self.new(
456
+ # The discount amount (basis points for percentage, USD cents for flat)
457
+ amount:,
458
+ # The business this discount belongs to
459
+ business_id:,
460
+ # The discount code
461
+ code:,
462
+ # Timestamp when the discount was created
463
+ created_at:,
464
+ # The unique discount ID
465
+ discount_id:,
466
+ # Additional metadata
467
+ metadata:,
468
+ # Position of this discount in the stack (0-based)
469
+ position:,
470
+ # Whether this discount should be preserved when a subscription changes plans
471
+ preserve_on_plan_change:,
472
+ # List of product IDs to which this discount is restricted
473
+ restricted_to:,
474
+ # How many times this discount has been used
475
+ times_used:,
476
+ # The type of discount
477
+ type:,
478
+ # Remaining billing cycles for this discount on this subscription (None for
479
+ # one-time payments)
480
+ cycles_remaining: nil,
481
+ # Optional date/time after which discount is expired
482
+ expires_at: nil,
483
+ # Name for the Discount
484
+ name: nil,
485
+ # Number of subscription billing cycles this discount is valid for
486
+ subscription_cycles: nil,
487
+ # Usage limit for this discount, if any
488
+ usage_limit: nil
489
+ )
490
+ end
491
+
492
+ sig do
493
+ override.returns(
494
+ {
495
+ amount: Integer,
496
+ business_id: String,
497
+ code: String,
498
+ created_at: Time,
499
+ discount_id: String,
500
+ metadata: T::Hash[Symbol, String],
501
+ position: Integer,
502
+ preserve_on_plan_change: T::Boolean,
503
+ restricted_to: T::Array[String],
504
+ times_used: Integer,
505
+ type: Dodopayments::DiscountType::TaggedSymbol,
506
+ cycles_remaining: T.nilable(Integer),
507
+ expires_at: T.nilable(Time),
508
+ name: T.nilable(String),
509
+ subscription_cycles: T.nilable(Integer),
510
+ usage_limit: T.nilable(Integer)
511
+ }
512
+ )
513
+ end
514
+ def to_hash
515
+ end
516
+ end
517
+
350
518
  class ProductCart < Dodopayments::Internal::Type::BaseModel
351
519
  OrHash =
352
520
  T.type_alias do