dodopayments 2.8.1 → 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 +9 -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
@@ -11,46 +11,34 @@ module Dodopayments
11
11
  )
12
12
  end
13
13
 
14
- # External URL to digital product
14
+ sig { returns(T::Array[Dodopayments::DigitalProductDeliveryFile]) }
15
+ attr_accessor :files
16
+
15
17
  sig { returns(T.nilable(String)) }
16
18
  attr_accessor :external_url
17
19
 
18
- # Uploaded files ids of digital product
19
- sig do
20
- returns(T.nilable(T::Array[Dodopayments::DigitalProductDeliveryFile]))
21
- end
22
- attr_accessor :files
23
-
24
- # Instructions to download and use the digital product
25
20
  sig { returns(T.nilable(String)) }
26
21
  attr_accessor :instructions
27
22
 
23
+ # Digital-product-delivery payload for a grant. Populated for grants whose
24
+ # entitlement has `integration_type = 'digital_files'`. `files` carries presigned
25
+ # download URLs; the source (EE service or legacy in-process S3 presigning) is
26
+ # opaque to the caller.
28
27
  sig do
29
28
  params(
29
+ files: T::Array[Dodopayments::DigitalProductDeliveryFile::OrHash],
30
30
  external_url: T.nilable(String),
31
- files:
32
- T.nilable(
33
- T::Array[Dodopayments::DigitalProductDeliveryFile::OrHash]
34
- ),
35
31
  instructions: T.nilable(String)
36
32
  ).returns(T.attached_class)
37
33
  end
38
- def self.new(
39
- # External URL to digital product
40
- external_url: nil,
41
- # Uploaded files ids of digital product
42
- files: nil,
43
- # Instructions to download and use the digital product
44
- instructions: nil
45
- )
34
+ def self.new(files:, external_url: nil, instructions: nil)
46
35
  end
47
36
 
48
37
  sig do
49
38
  override.returns(
50
39
  {
40
+ files: T::Array[Dodopayments::DigitalProductDeliveryFile],
51
41
  external_url: T.nilable(String),
52
- files:
53
- T.nilable(T::Array[Dodopayments::DigitalProductDeliveryFile]),
54
42
  instructions: T.nilable(String)
55
43
  }
56
44
  )
@@ -12,24 +12,56 @@ module Dodopayments
12
12
  end
13
13
 
14
14
  sig { returns(String) }
15
- attr_accessor :file_id
15
+ attr_accessor :download_url
16
+
17
+ # Seconds until `download_url` expires.
18
+ sig { returns(Integer) }
19
+ attr_accessor :expires_in
16
20
 
17
21
  sig { returns(String) }
18
- attr_accessor :file_name
22
+ attr_accessor :file_id
19
23
 
20
24
  sig { returns(String) }
21
- attr_accessor :url
25
+ attr_accessor :filename
26
+
27
+ sig { returns(T.nilable(String)) }
28
+ attr_accessor :content_type
29
+
30
+ sig { returns(T.nilable(Integer)) }
31
+ attr_accessor :file_size
22
32
 
23
33
  sig do
24
- params(file_id: String, file_name: String, url: String).returns(
25
- T.attached_class
26
- )
34
+ params(
35
+ download_url: String,
36
+ expires_in: Integer,
37
+ file_id: String,
38
+ filename: String,
39
+ content_type: T.nilable(String),
40
+ file_size: T.nilable(Integer)
41
+ ).returns(T.attached_class)
27
42
  end
28
- def self.new(file_id:, file_name:, url:)
43
+ def self.new(
44
+ download_url:,
45
+ # Seconds until `download_url` expires.
46
+ expires_in:,
47
+ file_id:,
48
+ filename:,
49
+ content_type: nil,
50
+ file_size: nil
51
+ )
29
52
  end
30
53
 
31
54
  sig do
32
- override.returns({ file_id: String, file_name: String, url: String })
55
+ override.returns(
56
+ {
57
+ download_url: String,
58
+ expires_in: Integer,
59
+ file_id: String,
60
+ filename: String,
61
+ content_type: T.nilable(String),
62
+ file_size: T.nilable(Integer)
63
+ }
64
+ )
33
65
  end
34
66
  def to_hash
35
67
  end
@@ -0,0 +1,112 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class Entitlement < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Dodopayments::Entitlement, Dodopayments::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(String) }
12
+ attr_accessor :id
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :business_id
16
+
17
+ sig { returns(Time) }
18
+ attr_accessor :created_at
19
+
20
+ # Public-facing variant of [`IntegrationConfig`]. Mirrors every variant shape on
21
+ # the wire EXCEPT `DigitalFiles`, which is replaced with a hydrated
22
+ # `digital_files` object (resolved download URLs etc.). The persisted JSONB stays
23
+ # ID-only via [`IntegrationConfig`]; this enum is response-only.
24
+ sig { returns(Dodopayments::IntegrationConfigResponse::Variants) }
25
+ attr_accessor :integration_config
26
+
27
+ sig { returns(Dodopayments::EntitlementIntegrationType::TaggedSymbol) }
28
+ attr_accessor :integration_type
29
+
30
+ sig { returns(T::Boolean) }
31
+ attr_accessor :is_active
32
+
33
+ sig { returns(String) }
34
+ attr_accessor :name
35
+
36
+ sig { returns(Time) }
37
+ attr_accessor :updated_at
38
+
39
+ sig { returns(T.nilable(String)) }
40
+ attr_accessor :description
41
+
42
+ sig { returns(T.nilable(T.anything)) }
43
+ attr_reader :metadata
44
+
45
+ sig { params(metadata: T.anything).void }
46
+ attr_writer :metadata
47
+
48
+ sig do
49
+ params(
50
+ id: String,
51
+ business_id: String,
52
+ created_at: Time,
53
+ integration_config:
54
+ T.any(
55
+ Dodopayments::IntegrationConfigResponse::GitHubConfig::OrHash,
56
+ Dodopayments::IntegrationConfigResponse::DiscordConfig::OrHash,
57
+ Dodopayments::IntegrationConfigResponse::TelegramConfig::OrHash,
58
+ Dodopayments::IntegrationConfigResponse::FigmaConfig::OrHash,
59
+ Dodopayments::IntegrationConfigResponse::FramerConfig::OrHash,
60
+ Dodopayments::IntegrationConfigResponse::NotionConfig::OrHash,
61
+ Dodopayments::IntegrationConfigResponse::DigitalFilesConfig::OrHash,
62
+ Dodopayments::IntegrationConfigResponse::LicenseKeyConfig::OrHash
63
+ ),
64
+ integration_type: Dodopayments::EntitlementIntegrationType::OrSymbol,
65
+ is_active: T::Boolean,
66
+ name: String,
67
+ updated_at: Time,
68
+ description: T.nilable(String),
69
+ metadata: T.anything
70
+ ).returns(T.attached_class)
71
+ end
72
+ def self.new(
73
+ id:,
74
+ business_id:,
75
+ created_at:,
76
+ # Public-facing variant of [`IntegrationConfig`]. Mirrors every variant shape on
77
+ # the wire EXCEPT `DigitalFiles`, which is replaced with a hydrated
78
+ # `digital_files` object (resolved download URLs etc.). The persisted JSONB stays
79
+ # ID-only via [`IntegrationConfig`]; this enum is response-only.
80
+ integration_config:,
81
+ integration_type:,
82
+ is_active:,
83
+ name:,
84
+ updated_at:,
85
+ description: nil,
86
+ metadata: nil
87
+ )
88
+ end
89
+
90
+ sig do
91
+ override.returns(
92
+ {
93
+ id: String,
94
+ business_id: String,
95
+ created_at: Time,
96
+ integration_config:
97
+ Dodopayments::IntegrationConfigResponse::Variants,
98
+ integration_type:
99
+ Dodopayments::EntitlementIntegrationType::TaggedSymbol,
100
+ is_active: T::Boolean,
101
+ name: String,
102
+ updated_at: Time,
103
+ description: T.nilable(String),
104
+ metadata: T.anything
105
+ }
106
+ )
107
+ end
108
+ def to_hash
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,112 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class EntitlementCreateParams < Dodopayments::Internal::Type::BaseModel
6
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
7
+ include Dodopayments::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Dodopayments::EntitlementCreateParams,
13
+ Dodopayments::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Platform-specific configuration (validated per integration_type)
18
+ sig do
19
+ returns(
20
+ T.any(
21
+ Dodopayments::IntegrationConfig::GitHubConfig,
22
+ Dodopayments::IntegrationConfig::DiscordConfig,
23
+ Dodopayments::IntegrationConfig::TelegramConfig,
24
+ Dodopayments::IntegrationConfig::FigmaConfig,
25
+ Dodopayments::IntegrationConfig::FramerConfig,
26
+ Dodopayments::IntegrationConfig::NotionConfig,
27
+ Dodopayments::IntegrationConfig::DigitalFilesConfig,
28
+ Dodopayments::IntegrationConfig::LicenseKeyConfig
29
+ )
30
+ )
31
+ end
32
+ attr_accessor :integration_config
33
+
34
+ # Which platform integration this entitlement uses
35
+ sig { returns(Dodopayments::EntitlementIntegrationType::OrSymbol) }
36
+ attr_accessor :integration_type
37
+
38
+ # Display name for this entitlement
39
+ sig { returns(String) }
40
+ attr_accessor :name
41
+
42
+ # Optional description
43
+ sig { returns(T.nilable(String)) }
44
+ attr_accessor :description
45
+
46
+ # Optional user-facing metadata
47
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
48
+ attr_accessor :metadata
49
+
50
+ sig do
51
+ params(
52
+ integration_config:
53
+ T.any(
54
+ Dodopayments::IntegrationConfig::GitHubConfig::OrHash,
55
+ Dodopayments::IntegrationConfig::DiscordConfig::OrHash,
56
+ Dodopayments::IntegrationConfig::TelegramConfig::OrHash,
57
+ Dodopayments::IntegrationConfig::FigmaConfig::OrHash,
58
+ Dodopayments::IntegrationConfig::FramerConfig::OrHash,
59
+ Dodopayments::IntegrationConfig::NotionConfig::OrHash,
60
+ Dodopayments::IntegrationConfig::DigitalFilesConfig::OrHash,
61
+ Dodopayments::IntegrationConfig::LicenseKeyConfig::OrHash
62
+ ),
63
+ integration_type: Dodopayments::EntitlementIntegrationType::OrSymbol,
64
+ name: String,
65
+ description: T.nilable(String),
66
+ metadata: T.nilable(T::Hash[Symbol, String]),
67
+ request_options: Dodopayments::RequestOptions::OrHash
68
+ ).returns(T.attached_class)
69
+ end
70
+ def self.new(
71
+ # Platform-specific configuration (validated per integration_type)
72
+ integration_config:,
73
+ # Which platform integration this entitlement uses
74
+ integration_type:,
75
+ # Display name for this entitlement
76
+ name:,
77
+ # Optional description
78
+ description: nil,
79
+ # Optional user-facing metadata
80
+ metadata: nil,
81
+ request_options: {}
82
+ )
83
+ end
84
+
85
+ sig do
86
+ override.returns(
87
+ {
88
+ integration_config:
89
+ T.any(
90
+ Dodopayments::IntegrationConfig::GitHubConfig,
91
+ Dodopayments::IntegrationConfig::DiscordConfig,
92
+ Dodopayments::IntegrationConfig::TelegramConfig,
93
+ Dodopayments::IntegrationConfig::FigmaConfig,
94
+ Dodopayments::IntegrationConfig::FramerConfig,
95
+ Dodopayments::IntegrationConfig::NotionConfig,
96
+ Dodopayments::IntegrationConfig::DigitalFilesConfig,
97
+ Dodopayments::IntegrationConfig::LicenseKeyConfig
98
+ ),
99
+ integration_type:
100
+ Dodopayments::EntitlementIntegrationType::OrSymbol,
101
+ name: String,
102
+ description: T.nilable(String),
103
+ metadata: T.nilable(T::Hash[Symbol, String]),
104
+ request_options: Dodopayments::RequestOptions
105
+ }
106
+ )
107
+ end
108
+ def to_hash
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,38 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class EntitlementDeleteParams < Dodopayments::Internal::Type::BaseModel
6
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
7
+ include Dodopayments::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Dodopayments::EntitlementDeleteParams,
13
+ Dodopayments::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :id
19
+
20
+ sig do
21
+ params(
22
+ id: String,
23
+ request_options: Dodopayments::RequestOptions::OrHash
24
+ ).returns(T.attached_class)
25
+ end
26
+ def self.new(id:, request_options: {})
27
+ end
28
+
29
+ sig do
30
+ override.returns(
31
+ { id: String, request_options: Dodopayments::RequestOptions }
32
+ )
33
+ end
34
+ def to_hash
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,103 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class EntitlementGrantCreatedWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::EntitlementGrantCreatedWebhookEvent,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The business identifier
15
+ sig { returns(String) }
16
+ attr_accessor :business_id
17
+
18
+ sig { returns(Dodopayments::Entitlements::EntitlementGrant) }
19
+ attr_reader :data
20
+
21
+ sig do
22
+ params(data: Dodopayments::Entitlements::EntitlementGrant::OrHash).void
23
+ end
24
+ attr_writer :data
25
+
26
+ # The timestamp of when the event occurred
27
+ sig { returns(Time) }
28
+ attr_accessor :timestamp
29
+
30
+ # The event type
31
+ sig do
32
+ returns(
33
+ Dodopayments::EntitlementGrantCreatedWebhookEvent::Type::TaggedSymbol
34
+ )
35
+ end
36
+ attr_accessor :type
37
+
38
+ sig do
39
+ params(
40
+ business_id: String,
41
+ data: Dodopayments::Entitlements::EntitlementGrant::OrHash,
42
+ timestamp: Time,
43
+ type:
44
+ Dodopayments::EntitlementGrantCreatedWebhookEvent::Type::OrSymbol
45
+ ).returns(T.attached_class)
46
+ end
47
+ def self.new(
48
+ # The business identifier
49
+ business_id:,
50
+ data:,
51
+ # The timestamp of when the event occurred
52
+ timestamp:,
53
+ # The event type
54
+ type:
55
+ )
56
+ end
57
+
58
+ sig do
59
+ override.returns(
60
+ {
61
+ business_id: String,
62
+ data: Dodopayments::Entitlements::EntitlementGrant,
63
+ timestamp: Time,
64
+ type:
65
+ Dodopayments::EntitlementGrantCreatedWebhookEvent::Type::TaggedSymbol
66
+ }
67
+ )
68
+ end
69
+ def to_hash
70
+ end
71
+
72
+ # The event type
73
+ module Type
74
+ extend Dodopayments::Internal::Type::Enum
75
+
76
+ TaggedSymbol =
77
+ T.type_alias do
78
+ T.all(
79
+ Symbol,
80
+ Dodopayments::EntitlementGrantCreatedWebhookEvent::Type
81
+ )
82
+ end
83
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
84
+
85
+ ENTITLEMENT_GRANT_CREATED =
86
+ T.let(
87
+ :"entitlement_grant.created",
88
+ Dodopayments::EntitlementGrantCreatedWebhookEvent::Type::TaggedSymbol
89
+ )
90
+
91
+ sig do
92
+ override.returns(
93
+ T::Array[
94
+ Dodopayments::EntitlementGrantCreatedWebhookEvent::Type::TaggedSymbol
95
+ ]
96
+ )
97
+ end
98
+ def self.values
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,103 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class EntitlementGrantDeliveredWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::EntitlementGrantDeliveredWebhookEvent,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The business identifier
15
+ sig { returns(String) }
16
+ attr_accessor :business_id
17
+
18
+ sig { returns(Dodopayments::Entitlements::EntitlementGrant) }
19
+ attr_reader :data
20
+
21
+ sig do
22
+ params(data: Dodopayments::Entitlements::EntitlementGrant::OrHash).void
23
+ end
24
+ attr_writer :data
25
+
26
+ # The timestamp of when the event occurred
27
+ sig { returns(Time) }
28
+ attr_accessor :timestamp
29
+
30
+ # The event type
31
+ sig do
32
+ returns(
33
+ Dodopayments::EntitlementGrantDeliveredWebhookEvent::Type::TaggedSymbol
34
+ )
35
+ end
36
+ attr_accessor :type
37
+
38
+ sig do
39
+ params(
40
+ business_id: String,
41
+ data: Dodopayments::Entitlements::EntitlementGrant::OrHash,
42
+ timestamp: Time,
43
+ type:
44
+ Dodopayments::EntitlementGrantDeliveredWebhookEvent::Type::OrSymbol
45
+ ).returns(T.attached_class)
46
+ end
47
+ def self.new(
48
+ # The business identifier
49
+ business_id:,
50
+ data:,
51
+ # The timestamp of when the event occurred
52
+ timestamp:,
53
+ # The event type
54
+ type:
55
+ )
56
+ end
57
+
58
+ sig do
59
+ override.returns(
60
+ {
61
+ business_id: String,
62
+ data: Dodopayments::Entitlements::EntitlementGrant,
63
+ timestamp: Time,
64
+ type:
65
+ Dodopayments::EntitlementGrantDeliveredWebhookEvent::Type::TaggedSymbol
66
+ }
67
+ )
68
+ end
69
+ def to_hash
70
+ end
71
+
72
+ # The event type
73
+ module Type
74
+ extend Dodopayments::Internal::Type::Enum
75
+
76
+ TaggedSymbol =
77
+ T.type_alias do
78
+ T.all(
79
+ Symbol,
80
+ Dodopayments::EntitlementGrantDeliveredWebhookEvent::Type
81
+ )
82
+ end
83
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
84
+
85
+ ENTITLEMENT_GRANT_DELIVERED =
86
+ T.let(
87
+ :"entitlement_grant.delivered",
88
+ Dodopayments::EntitlementGrantDeliveredWebhookEvent::Type::TaggedSymbol
89
+ )
90
+
91
+ sig do
92
+ override.returns(
93
+ T::Array[
94
+ Dodopayments::EntitlementGrantDeliveredWebhookEvent::Type::TaggedSymbol
95
+ ]
96
+ )
97
+ end
98
+ def self.values
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,102 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class EntitlementGrantFailedWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::EntitlementGrantFailedWebhookEvent,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The business identifier
15
+ sig { returns(String) }
16
+ attr_accessor :business_id
17
+
18
+ sig { returns(Dodopayments::Entitlements::EntitlementGrant) }
19
+ attr_reader :data
20
+
21
+ sig do
22
+ params(data: Dodopayments::Entitlements::EntitlementGrant::OrHash).void
23
+ end
24
+ attr_writer :data
25
+
26
+ # The timestamp of when the event occurred
27
+ sig { returns(Time) }
28
+ attr_accessor :timestamp
29
+
30
+ # The event type
31
+ sig do
32
+ returns(
33
+ Dodopayments::EntitlementGrantFailedWebhookEvent::Type::TaggedSymbol
34
+ )
35
+ end
36
+ attr_accessor :type
37
+
38
+ sig do
39
+ params(
40
+ business_id: String,
41
+ data: Dodopayments::Entitlements::EntitlementGrant::OrHash,
42
+ timestamp: Time,
43
+ type: Dodopayments::EntitlementGrantFailedWebhookEvent::Type::OrSymbol
44
+ ).returns(T.attached_class)
45
+ end
46
+ def self.new(
47
+ # The business identifier
48
+ business_id:,
49
+ data:,
50
+ # The timestamp of when the event occurred
51
+ timestamp:,
52
+ # The event type
53
+ type:
54
+ )
55
+ end
56
+
57
+ sig do
58
+ override.returns(
59
+ {
60
+ business_id: String,
61
+ data: Dodopayments::Entitlements::EntitlementGrant,
62
+ timestamp: Time,
63
+ type:
64
+ Dodopayments::EntitlementGrantFailedWebhookEvent::Type::TaggedSymbol
65
+ }
66
+ )
67
+ end
68
+ def to_hash
69
+ end
70
+
71
+ # The event type
72
+ module Type
73
+ extend Dodopayments::Internal::Type::Enum
74
+
75
+ TaggedSymbol =
76
+ T.type_alias do
77
+ T.all(
78
+ Symbol,
79
+ Dodopayments::EntitlementGrantFailedWebhookEvent::Type
80
+ )
81
+ end
82
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
83
+
84
+ ENTITLEMENT_GRANT_FAILED =
85
+ T.let(
86
+ :"entitlement_grant.failed",
87
+ Dodopayments::EntitlementGrantFailedWebhookEvent::Type::TaggedSymbol
88
+ )
89
+
90
+ sig do
91
+ override.returns(
92
+ T::Array[
93
+ Dodopayments::EntitlementGrantFailedWebhookEvent::Type::TaggedSymbol
94
+ ]
95
+ )
96
+ end
97
+ def self.values
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end