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,48 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Entitlements
6
+ class FileDeleteParams < Dodopayments::Internal::Type::BaseModel
7
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
8
+ include Dodopayments::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Dodopayments::Entitlements::FileDeleteParams,
14
+ Dodopayments::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :id
20
+
21
+ sig { returns(String) }
22
+ attr_accessor :file_id
23
+
24
+ sig do
25
+ params(
26
+ id: String,
27
+ file_id: String,
28
+ request_options: Dodopayments::RequestOptions::OrHash
29
+ ).returns(T.attached_class)
30
+ end
31
+ def self.new(id:, file_id:, request_options: {})
32
+ end
33
+
34
+ sig do
35
+ override.returns(
36
+ {
37
+ id: String,
38
+ file_id: String,
39
+ request_options: Dodopayments::RequestOptions
40
+ }
41
+ )
42
+ end
43
+ def to_hash
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,40 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Entitlements
6
+ class FileUploadParams < Dodopayments::Internal::Type::BaseModel
7
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
8
+ include Dodopayments::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Dodopayments::Entitlements::FileUploadParams,
14
+ Dodopayments::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :id
20
+
21
+ sig do
22
+ params(
23
+ id: String,
24
+ request_options: Dodopayments::RequestOptions::OrHash
25
+ ).returns(T.attached_class)
26
+ end
27
+ def self.new(id:, request_options: {})
28
+ end
29
+
30
+ sig do
31
+ override.returns(
32
+ { id: String, request_options: Dodopayments::RequestOptions }
33
+ )
34
+ end
35
+ def to_hash
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,34 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Entitlements
6
+ class FileUploadResponse < Dodopayments::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ Dodopayments::Models::Entitlements::FileUploadResponse,
11
+ Dodopayments::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # EE-issued digital file id; appended to
16
+ # `entitlements.integration_config.digital_file_ids`.
17
+ sig { returns(String) }
18
+ attr_accessor :file_id
19
+
20
+ sig { params(file_id: String).returns(T.attached_class) }
21
+ def self.new(
22
+ # EE-issued digital file id; appended to
23
+ # `entitlements.integration_config.digital_file_ids`.
24
+ file_id:
25
+ )
26
+ end
27
+
28
+ sig { override.returns({ file_id: String }) }
29
+ def to_hash
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,145 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Entitlements
6
+ class GrantListParams < Dodopayments::Internal::Type::BaseModel
7
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
8
+ include Dodopayments::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Dodopayments::Entitlements::GrantListParams,
14
+ Dodopayments::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :id
20
+
21
+ # Filter by customer ID
22
+ sig { returns(T.nilable(String)) }
23
+ attr_reader :customer_id
24
+
25
+ sig { params(customer_id: String).void }
26
+ attr_writer :customer_id
27
+
28
+ # Page number (default 0)
29
+ sig { returns(T.nilable(Integer)) }
30
+ attr_reader :page_number
31
+
32
+ sig { params(page_number: Integer).void }
33
+ attr_writer :page_number
34
+
35
+ # Page size (default 10, max 100)
36
+ sig { returns(T.nilable(Integer)) }
37
+ attr_reader :page_size
38
+
39
+ sig { params(page_size: Integer).void }
40
+ attr_writer :page_size
41
+
42
+ # Filter by grant status
43
+ sig do
44
+ returns(
45
+ T.nilable(
46
+ Dodopayments::Entitlements::GrantListParams::Status::OrSymbol
47
+ )
48
+ )
49
+ end
50
+ attr_reader :status
51
+
52
+ sig do
53
+ params(
54
+ status:
55
+ Dodopayments::Entitlements::GrantListParams::Status::OrSymbol
56
+ ).void
57
+ end
58
+ attr_writer :status
59
+
60
+ sig do
61
+ params(
62
+ id: String,
63
+ customer_id: String,
64
+ page_number: Integer,
65
+ page_size: Integer,
66
+ status:
67
+ Dodopayments::Entitlements::GrantListParams::Status::OrSymbol,
68
+ request_options: Dodopayments::RequestOptions::OrHash
69
+ ).returns(T.attached_class)
70
+ end
71
+ def self.new(
72
+ id:,
73
+ # Filter by customer ID
74
+ customer_id: nil,
75
+ # Page number (default 0)
76
+ page_number: nil,
77
+ # Page size (default 10, max 100)
78
+ page_size: nil,
79
+ # Filter by grant status
80
+ status: nil,
81
+ request_options: {}
82
+ )
83
+ end
84
+
85
+ sig do
86
+ override.returns(
87
+ {
88
+ id: String,
89
+ customer_id: String,
90
+ page_number: Integer,
91
+ page_size: Integer,
92
+ status:
93
+ Dodopayments::Entitlements::GrantListParams::Status::OrSymbol,
94
+ request_options: Dodopayments::RequestOptions
95
+ }
96
+ )
97
+ end
98
+ def to_hash
99
+ end
100
+
101
+ # Filter by grant status
102
+ module Status
103
+ extend Dodopayments::Internal::Type::Enum
104
+
105
+ TaggedSymbol =
106
+ T.type_alias do
107
+ T.all(Symbol, Dodopayments::Entitlements::GrantListParams::Status)
108
+ end
109
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
110
+
111
+ PENDING =
112
+ T.let(
113
+ :Pending,
114
+ Dodopayments::Entitlements::GrantListParams::Status::TaggedSymbol
115
+ )
116
+ DELIVERED =
117
+ T.let(
118
+ :Delivered,
119
+ Dodopayments::Entitlements::GrantListParams::Status::TaggedSymbol
120
+ )
121
+ FAILED =
122
+ T.let(
123
+ :Failed,
124
+ Dodopayments::Entitlements::GrantListParams::Status::TaggedSymbol
125
+ )
126
+ REVOKED =
127
+ T.let(
128
+ :Revoked,
129
+ Dodopayments::Entitlements::GrantListParams::Status::TaggedSymbol
130
+ )
131
+
132
+ sig do
133
+ override.returns(
134
+ T::Array[
135
+ Dodopayments::Entitlements::GrantListParams::Status::TaggedSymbol
136
+ ]
137
+ )
138
+ end
139
+ def self.values
140
+ end
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,48 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Entitlements
6
+ class GrantRevokeParams < Dodopayments::Internal::Type::BaseModel
7
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
8
+ include Dodopayments::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Dodopayments::Entitlements::GrantRevokeParams,
14
+ Dodopayments::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :id
20
+
21
+ sig { returns(String) }
22
+ attr_accessor :grant_id
23
+
24
+ sig do
25
+ params(
26
+ id: String,
27
+ grant_id: String,
28
+ request_options: Dodopayments::RequestOptions::OrHash
29
+ ).returns(T.attached_class)
30
+ end
31
+ def self.new(id:, grant_id:, request_options: {})
32
+ end
33
+
34
+ sig do
35
+ override.returns(
36
+ {
37
+ id: String,
38
+ grant_id: String,
39
+ request_options: Dodopayments::RequestOptions
40
+ }
41
+ )
42
+ end
43
+ def to_hash
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,62 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Entitlements
6
+ class LicenseKeyGrant < Dodopayments::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ Dodopayments::Entitlements::LicenseKeyGrant,
11
+ Dodopayments::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ sig { returns(Integer) }
16
+ attr_accessor :activations_used
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :key
20
+
21
+ sig { returns(T.nilable(Integer)) }
22
+ attr_accessor :activations_limit
23
+
24
+ sig { returns(T.nilable(Time)) }
25
+ attr_accessor :expires_at
26
+
27
+ # Nested representation of license-key grant fields. Present only when the grant's
28
+ # entitlement has `integration_type = 'license_key'` and a row exists in
29
+ # `license_keys`. The grant's top-level `status` is the source of truth for the
30
+ # grant's lifecycle — no per-license-key status is exposed here.
31
+ sig do
32
+ params(
33
+ activations_used: Integer,
34
+ key: String,
35
+ activations_limit: T.nilable(Integer),
36
+ expires_at: T.nilable(Time)
37
+ ).returns(T.attached_class)
38
+ end
39
+ def self.new(
40
+ activations_used:,
41
+ key:,
42
+ activations_limit: nil,
43
+ expires_at: nil
44
+ )
45
+ end
46
+
47
+ sig do
48
+ override.returns(
49
+ {
50
+ activations_used: Integer,
51
+ key: String,
52
+ activations_limit: T.nilable(Integer),
53
+ expires_at: T.nilable(Time)
54
+ }
55
+ )
56
+ end
57
+ def to_hash
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,296 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ # Platform-specific configuration for an entitlement. Each variant uses unique
6
+ # field names so `#[serde(untagged)]` can disambiguate correctly.
7
+ module IntegrationConfig
8
+ extend Dodopayments::Internal::Type::Union
9
+
10
+ Variants =
11
+ T.type_alias do
12
+ T.any(
13
+ Dodopayments::IntegrationConfig::GitHubConfig,
14
+ Dodopayments::IntegrationConfig::DiscordConfig,
15
+ Dodopayments::IntegrationConfig::TelegramConfig,
16
+ Dodopayments::IntegrationConfig::FigmaConfig,
17
+ Dodopayments::IntegrationConfig::FramerConfig,
18
+ Dodopayments::IntegrationConfig::NotionConfig,
19
+ Dodopayments::IntegrationConfig::DigitalFilesConfig,
20
+ Dodopayments::IntegrationConfig::LicenseKeyConfig
21
+ )
22
+ end
23
+
24
+ class GitHubConfig < Dodopayments::Internal::Type::BaseModel
25
+ OrHash =
26
+ T.type_alias do
27
+ T.any(
28
+ Dodopayments::IntegrationConfig::GitHubConfig,
29
+ Dodopayments::Internal::AnyHash
30
+ )
31
+ end
32
+
33
+ # One of: pull, push, admin, maintain, triage
34
+ sig { returns(String) }
35
+ attr_accessor :permission
36
+
37
+ sig { returns(String) }
38
+ attr_accessor :target_id
39
+
40
+ sig do
41
+ params(permission: String, target_id: String).returns(
42
+ T.attached_class
43
+ )
44
+ end
45
+ def self.new(
46
+ # One of: pull, push, admin, maintain, triage
47
+ permission:,
48
+ target_id:
49
+ )
50
+ end
51
+
52
+ sig { override.returns({ permission: String, target_id: String }) }
53
+ def to_hash
54
+ end
55
+ end
56
+
57
+ class DiscordConfig < Dodopayments::Internal::Type::BaseModel
58
+ OrHash =
59
+ T.type_alias do
60
+ T.any(
61
+ Dodopayments::IntegrationConfig::DiscordConfig,
62
+ Dodopayments::Internal::AnyHash
63
+ )
64
+ end
65
+
66
+ sig { returns(String) }
67
+ attr_accessor :guild_id
68
+
69
+ sig { returns(T.nilable(String)) }
70
+ attr_accessor :role_id
71
+
72
+ sig do
73
+ params(guild_id: String, role_id: T.nilable(String)).returns(
74
+ T.attached_class
75
+ )
76
+ end
77
+ def self.new(guild_id:, role_id: nil)
78
+ end
79
+
80
+ sig do
81
+ override.returns({ guild_id: String, role_id: T.nilable(String) })
82
+ end
83
+ def to_hash
84
+ end
85
+ end
86
+
87
+ class TelegramConfig < Dodopayments::Internal::Type::BaseModel
88
+ OrHash =
89
+ T.type_alias do
90
+ T.any(
91
+ Dodopayments::IntegrationConfig::TelegramConfig,
92
+ Dodopayments::Internal::AnyHash
93
+ )
94
+ end
95
+
96
+ sig { returns(String) }
97
+ attr_accessor :chat_id
98
+
99
+ sig { params(chat_id: String).returns(T.attached_class) }
100
+ def self.new(chat_id:)
101
+ end
102
+
103
+ sig { override.returns({ chat_id: String }) }
104
+ def to_hash
105
+ end
106
+ end
107
+
108
+ class FigmaConfig < Dodopayments::Internal::Type::BaseModel
109
+ OrHash =
110
+ T.type_alias do
111
+ T.any(
112
+ Dodopayments::IntegrationConfig::FigmaConfig,
113
+ Dodopayments::Internal::AnyHash
114
+ )
115
+ end
116
+
117
+ sig { returns(String) }
118
+ attr_accessor :figma_file_id
119
+
120
+ sig { params(figma_file_id: String).returns(T.attached_class) }
121
+ def self.new(figma_file_id:)
122
+ end
123
+
124
+ sig { override.returns({ figma_file_id: String }) }
125
+ def to_hash
126
+ end
127
+ end
128
+
129
+ class FramerConfig < Dodopayments::Internal::Type::BaseModel
130
+ OrHash =
131
+ T.type_alias do
132
+ T.any(
133
+ Dodopayments::IntegrationConfig::FramerConfig,
134
+ Dodopayments::Internal::AnyHash
135
+ )
136
+ end
137
+
138
+ sig { returns(String) }
139
+ attr_accessor :framer_template_id
140
+
141
+ sig { params(framer_template_id: String).returns(T.attached_class) }
142
+ def self.new(framer_template_id:)
143
+ end
144
+
145
+ sig { override.returns({ framer_template_id: String }) }
146
+ def to_hash
147
+ end
148
+ end
149
+
150
+ class NotionConfig < Dodopayments::Internal::Type::BaseModel
151
+ OrHash =
152
+ T.type_alias do
153
+ T.any(
154
+ Dodopayments::IntegrationConfig::NotionConfig,
155
+ Dodopayments::Internal::AnyHash
156
+ )
157
+ end
158
+
159
+ sig { returns(String) }
160
+ attr_accessor :notion_template_id
161
+
162
+ sig { params(notion_template_id: String).returns(T.attached_class) }
163
+ def self.new(notion_template_id:)
164
+ end
165
+
166
+ sig { override.returns({ notion_template_id: String }) }
167
+ def to_hash
168
+ end
169
+ end
170
+
171
+ class DigitalFilesConfig < Dodopayments::Internal::Type::BaseModel
172
+ OrHash =
173
+ T.type_alias do
174
+ T.any(
175
+ Dodopayments::IntegrationConfig::DigitalFilesConfig,
176
+ Dodopayments::Internal::AnyHash
177
+ )
178
+ end
179
+
180
+ sig { returns(T::Array[String]) }
181
+ attr_accessor :digital_file_ids
182
+
183
+ sig { returns(T.nilable(String)) }
184
+ attr_accessor :external_url
185
+
186
+ sig { returns(T.nilable(String)) }
187
+ attr_accessor :instructions
188
+
189
+ # Three-way patchable field (mirrors the credit_entitlements pattern):
190
+ #
191
+ # - omitted → preserve persisted (`None`)
192
+ # - `null` → clear (`Some(None)`)
193
+ # - `[...]` → replace (`Some(Some(...))`)
194
+ #
195
+ # On Create / storage we collapse "clear" and empty-array to `None` so the
196
+ # persisted JSONB never carries a `null` legacy_file_ids key.
197
+ sig { returns(T.nilable(T::Array[String])) }
198
+ attr_accessor :legacy_file_ids
199
+
200
+ sig do
201
+ params(
202
+ digital_file_ids: T::Array[String],
203
+ external_url: T.nilable(String),
204
+ instructions: T.nilable(String),
205
+ legacy_file_ids: T.nilable(T::Array[String])
206
+ ).returns(T.attached_class)
207
+ end
208
+ def self.new(
209
+ digital_file_ids:,
210
+ external_url: nil,
211
+ instructions: nil,
212
+ # Three-way patchable field (mirrors the credit_entitlements pattern):
213
+ #
214
+ # - omitted → preserve persisted (`None`)
215
+ # - `null` → clear (`Some(None)`)
216
+ # - `[...]` → replace (`Some(Some(...))`)
217
+ #
218
+ # On Create / storage we collapse "clear" and empty-array to `None` so the
219
+ # persisted JSONB never carries a `null` legacy_file_ids key.
220
+ legacy_file_ids: nil
221
+ )
222
+ end
223
+
224
+ sig do
225
+ override.returns(
226
+ {
227
+ digital_file_ids: T::Array[String],
228
+ external_url: T.nilable(String),
229
+ instructions: T.nilable(String),
230
+ legacy_file_ids: T.nilable(T::Array[String])
231
+ }
232
+ )
233
+ end
234
+ def to_hash
235
+ end
236
+ end
237
+
238
+ class LicenseKeyConfig < Dodopayments::Internal::Type::BaseModel
239
+ OrHash =
240
+ T.type_alias do
241
+ T.any(
242
+ Dodopayments::IntegrationConfig::LicenseKeyConfig,
243
+ Dodopayments::Internal::AnyHash
244
+ )
245
+ end
246
+
247
+ sig { returns(T.nilable(String)) }
248
+ attr_accessor :activation_message
249
+
250
+ sig { returns(T.nilable(Integer)) }
251
+ attr_accessor :activations_limit
252
+
253
+ sig { returns(T.nilable(Integer)) }
254
+ attr_accessor :duration_count
255
+
256
+ sig { returns(T.nilable(Dodopayments::TimeInterval::OrSymbol)) }
257
+ attr_accessor :duration_interval
258
+
259
+ sig do
260
+ params(
261
+ activation_message: T.nilable(String),
262
+ activations_limit: T.nilable(Integer),
263
+ duration_count: T.nilable(Integer),
264
+ duration_interval: T.nilable(Dodopayments::TimeInterval::OrSymbol)
265
+ ).returns(T.attached_class)
266
+ end
267
+ def self.new(
268
+ activation_message: nil,
269
+ activations_limit: nil,
270
+ duration_count: nil,
271
+ duration_interval: nil
272
+ )
273
+ end
274
+
275
+ sig do
276
+ override.returns(
277
+ {
278
+ activation_message: T.nilable(String),
279
+ activations_limit: T.nilable(Integer),
280
+ duration_count: T.nilable(Integer),
281
+ duration_interval: T.nilable(Dodopayments::TimeInterval::OrSymbol)
282
+ }
283
+ )
284
+ end
285
+ def to_hash
286
+ end
287
+ end
288
+
289
+ sig do
290
+ override.returns(T::Array[Dodopayments::IntegrationConfig::Variants])
291
+ end
292
+ def self.variants
293
+ end
294
+ end
295
+ end
296
+ end