dodopayments 2.6.0 → 2.7.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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/internal/util.rb +3 -1
  5. data/lib/dodopayments/models/license_key.rb +33 -10
  6. data/lib/dodopayments/models/license_key_create_params.rb +54 -0
  7. data/lib/dodopayments/models/license_key_list_params.rb +20 -1
  8. data/lib/dodopayments/models/product.rb +228 -1
  9. data/lib/dodopayments/models/product_create_params.rb +15 -1
  10. data/lib/dodopayments/models/product_list_response.rb +225 -1
  11. data/lib/dodopayments/models/product_update_params.rb +16 -1
  12. data/lib/dodopayments/models/webhook_event_type.rb +4 -0
  13. data/lib/dodopayments/models/webhook_payload.rb +176 -3
  14. data/lib/dodopayments/models.rb +2 -0
  15. data/lib/dodopayments/resources/license_keys.rb +37 -1
  16. data/lib/dodopayments/resources/products.rb +6 -2
  17. data/lib/dodopayments/version.rb +1 -1
  18. data/lib/dodopayments.rb +1 -0
  19. data/rbi/dodopayments/models/license_key.rbi +39 -8
  20. data/rbi/dodopayments/models/license_key_create_params.rbi +78 -0
  21. data/rbi/dodopayments/models/license_key_list_params.rbi +44 -0
  22. data/rbi/dodopayments/models/product.rbi +425 -0
  23. data/rbi/dodopayments/models/product_create_params.rbi +8 -0
  24. data/rbi/dodopayments/models/product_list_response.rbi +436 -0
  25. data/rbi/dodopayments/models/product_update_params.rbi +10 -0
  26. data/rbi/dodopayments/models/webhook_event_type.rbi +20 -0
  27. data/rbi/dodopayments/models/webhook_payload.rbi +267 -4
  28. data/rbi/dodopayments/models.rbi +2 -0
  29. data/rbi/dodopayments/resources/license_keys.rbi +28 -0
  30. data/rbi/dodopayments/resources/products.rbi +7 -0
  31. data/sig/dodopayments/models/license_key.rbs +21 -5
  32. data/sig/dodopayments/models/license_key_create_params.rbs +46 -0
  33. data/sig/dodopayments/models/license_key_list_params.rbs +20 -0
  34. data/sig/dodopayments/models/product.rbs +206 -0
  35. data/sig/dodopayments/models/product_create_params.rbs +5 -0
  36. data/sig/dodopayments/models/product_list_response.rbs +206 -0
  37. data/sig/dodopayments/models/product_update_params.rbs +5 -0
  38. data/sig/dodopayments/models/webhook_event_type.rbs +8 -0
  39. data/sig/dodopayments/models/webhook_payload.rbs +158 -0
  40. data/sig/dodopayments/models.rbs +2 -0
  41. data/sig/dodopayments/resources/license_keys.rbs +10 -0
  42. data/sig/dodopayments/resources/products.rbs +2 -0
  43. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d32cb5b0b3bc5c595dc555bf1c7d347501bb80217035f32f108f2726b5b67aa9
4
- data.tar.gz: 7d6a36da0c5d1d13efcf9fb8b923890c1b5c7cf99c912d3b97d0fceb70c355ad
3
+ metadata.gz: ad6fd99bd99f0b47dd01ced82f3e6b5ee34fb1bd74c23eca5f723ed3abeeabce
4
+ data.tar.gz: 45c8c7bdae64cb27ce240c3577e8b39a9f721070dc9e1495b6eec4294c802cf2
5
5
  SHA512:
6
- metadata.gz: 42ed38d3f7a3aa883ef873b5646407b85adc97c08b56d0216e1f04f0a04d6ea20b5b8fc3fbf2290e14fa30027f939f923fa3abfe22d80244f5f3ec59a1d66222
7
- data.tar.gz: 6f53f029c8506e8fdeda4989daa2bff8e8c646b16d7ea1568813d779c3eac36ddbf0727fe60233916cdb41a9058da97c065c867707ae5124c28680b43c121671
6
+ metadata.gz: 621b34cd3f74fd0a3d7727a88a65aa1d9804e99cf7f82fd6e8be9c40255b8401b5dbbb16d23b2979daebca253069c278727f7a24684c57e2b1d2dae72738486e
7
+ data.tar.gz: fd4644f5b51f70f66cb5be50fc5e337d825bec5a85318a20f97550cc9503c45db65318cebe2b45a5022b8bba546f890b98db88309b1fd5ee285fa32de95b47ef
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.7.0 (2026-04-14)
4
+
5
+ Full Changelog: [v2.6.0...v2.7.0](https://github.com/dodopayments/dodopayments-ruby/compare/v2.6.0...v2.7.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** update openapi spec to v1.95.3 ([f06c818](https://github.com/dodopayments/dodopayments-ruby/commit/f06c818716c04073a76fea8624f781a69ef1a7d2))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * multipart encoding for file arrays ([dadec9c](https://github.com/dodopayments/dodopayments-ruby/commit/dadec9cee7f50218fb778deea6e3371d8331d4bb))
15
+
3
16
  ## 2.6.0 (2026-04-08)
4
17
 
5
18
  Full Changelog: [v2.5.0...v2.6.0](https://github.com/dodopayments/dodopayments-ruby/compare/v2.5.0...v2.6.0)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "dodopayments", "~> 2.6.0"
29
+ gem "dodopayments", "~> 2.7.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -610,6 +610,7 @@ module Dodopayments
610
610
  #
611
611
  # @return [Array(String, Enumerable<String>)]
612
612
  private def encode_multipart_streaming(body)
613
+ # rubocop:disable Style/CaseEquality
613
614
  # RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
614
615
  boundary = SecureRandom.urlsafe_base64(46)
615
616
 
@@ -619,7 +620,7 @@ module Dodopayments
619
620
  in Hash
620
621
  body.each do |key, val|
621
622
  case val
622
- in Array if val.all? { primitive?(_1) }
623
+ in Array if val.all? { primitive?(_1) || Dodopayments::Internal::Type::FileInput === _1 }
623
624
  val.each do |v|
624
625
  write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
625
626
  end
@@ -635,6 +636,7 @@ module Dodopayments
635
636
 
636
637
  fused_io = fused_enum(strio) { closing.each(&:call) }
637
638
  [boundary, fused_io]
639
+ # rubocop:enable Style/CaseEquality
638
640
  end
639
641
 
640
642
  # @api private
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Dodopayments
4
4
  module Models
5
- # @see Dodopayments::Resources::LicenseKeys#retrieve
5
+ # @see Dodopayments::Resources::LicenseKeys#create
6
6
  class LicenseKey < Dodopayments::Internal::Type::BaseModel
7
7
  # @!attribute id
8
8
  # The unique identifier of the license key.
@@ -40,18 +40,19 @@ module Dodopayments
40
40
  # @return [String]
41
41
  required :key, String
42
42
 
43
- # @!attribute payment_id
44
- # The unique identifier of the payment associated with the license key.
45
- #
46
- # @return [String]
47
- required :payment_id, String
48
-
49
43
  # @!attribute product_id
50
44
  # The unique identifier of the product associated with the license key.
51
45
  #
52
46
  # @return [String]
53
47
  required :product_id, String
54
48
 
49
+ # @!attribute source
50
+ # The source of the license key - 'auto' for keys generated by
51
+ # payment/subscription flows, 'import' for merchant-imported keys.
52
+ #
53
+ # @return [Symbol, Dodopayments::Models::LicenseKey::Source]
54
+ required :source, enum: -> { Dodopayments::LicenseKey::Source }
55
+
55
56
  # @!attribute status
56
57
  # The current status of the license key (e.g., active, inactive, expired).
57
58
  #
@@ -70,6 +71,12 @@ module Dodopayments
70
71
  # @return [Time, nil]
71
72
  optional :expires_at, Time, nil?: true
72
73
 
74
+ # @!attribute payment_id
75
+ # The unique identifier of the payment associated with the license key, if any.
76
+ #
77
+ # @return [String, nil]
78
+ optional :payment_id, String, nil?: true
79
+
73
80
  # @!attribute subscription_id
74
81
  # The unique identifier of the subscription associated with the license key, if
75
82
  # any.
@@ -77,7 +84,7 @@ module Dodopayments
77
84
  # @return [String, nil]
78
85
  optional :subscription_id, String, nil?: true
79
86
 
80
- # @!method initialize(id:, business_id:, created_at:, customer_id:, instances_count:, key:, payment_id:, product_id:, status:, activations_limit: nil, expires_at: nil, subscription_id: nil)
87
+ # @!method initialize(id:, business_id:, created_at:, customer_id:, instances_count:, key:, product_id:, source:, status:, activations_limit: nil, expires_at: nil, payment_id: nil, subscription_id: nil)
81
88
  # Some parameter documentations has been truncated, see
82
89
  # {Dodopayments::Models::LicenseKey} for more details.
83
90
  #
@@ -93,17 +100,33 @@ module Dodopayments
93
100
  #
94
101
  # @param key [String] The license key string.
95
102
  #
96
- # @param payment_id [String] The unique identifier of the payment associated with the license key.
97
- #
98
103
  # @param product_id [String] The unique identifier of the product associated with the license key.
99
104
  #
105
+ # @param source [Symbol, Dodopayments::Models::LicenseKey::Source] The source of the license key - 'auto' for keys generated by payment/subscriptio
106
+ #
100
107
  # @param status [Symbol, Dodopayments::Models::LicenseKeyStatus] The current status of the license key (e.g., active, inactive, expired).
101
108
  #
102
109
  # @param activations_limit [Integer, nil] The maximum number of activations allowed for this license key.
103
110
  #
104
111
  # @param expires_at [Time, nil] The timestamp indicating when the license key expires, in UTC.
105
112
  #
113
+ # @param payment_id [String, nil] The unique identifier of the payment associated with the license key, if any.
114
+ #
106
115
  # @param subscription_id [String, nil] The unique identifier of the subscription associated with the license key, if an
116
+
117
+ # The source of the license key - 'auto' for keys generated by
118
+ # payment/subscription flows, 'import' for merchant-imported keys.
119
+ #
120
+ # @see Dodopayments::Models::LicenseKey#source
121
+ module Source
122
+ extend Dodopayments::Internal::Type::Enum
123
+
124
+ AUTO = :auto
125
+ IMPORT = :import
126
+
127
+ # @!method self.values
128
+ # @return [Array<Symbol>]
129
+ end
107
130
  end
108
131
  end
109
132
  end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Models
5
+ # @see Dodopayments::Resources::LicenseKeys#create
6
+ class LicenseKeyCreateParams < Dodopayments::Internal::Type::BaseModel
7
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
8
+ include Dodopayments::Internal::Type::RequestParameters
9
+
10
+ # @!attribute customer_id
11
+ # The customer this license key belongs to.
12
+ #
13
+ # @return [String]
14
+ required :customer_id, String
15
+
16
+ # @!attribute key
17
+ # The license key string to import.
18
+ #
19
+ # @return [String]
20
+ required :key, String
21
+
22
+ # @!attribute product_id
23
+ # The product this license key is for.
24
+ #
25
+ # @return [String]
26
+ required :product_id, String
27
+
28
+ # @!attribute activations_limit
29
+ # Maximum number of activations allowed. Null means unlimited.
30
+ #
31
+ # @return [Integer, nil]
32
+ optional :activations_limit, Integer, nil?: true
33
+
34
+ # @!attribute expires_at
35
+ # Expiration timestamp. Null means the key never expires.
36
+ #
37
+ # @return [Time, nil]
38
+ optional :expires_at, Time, nil?: true
39
+
40
+ # @!method initialize(customer_id:, key:, product_id:, activations_limit: nil, expires_at: nil, request_options: {})
41
+ # @param customer_id [String] The customer this license key belongs to.
42
+ #
43
+ # @param key [String] The license key string to import.
44
+ #
45
+ # @param product_id [String] The product this license key is for.
46
+ #
47
+ # @param activations_limit [Integer, nil] Maximum number of activations allowed. Null means unlimited.
48
+ #
49
+ # @param expires_at [Time, nil] Expiration timestamp. Null means the key never expires.
50
+ #
51
+ # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
52
+ end
53
+ end
54
+ end
@@ -43,13 +43,19 @@ module Dodopayments
43
43
  # @return [String, nil]
44
44
  optional :product_id, String
45
45
 
46
+ # @!attribute source
47
+ # Filter by license key source
48
+ #
49
+ # @return [Symbol, Dodopayments::Models::LicenseKeyListParams::Source, nil]
50
+ optional :source, enum: -> { Dodopayments::LicenseKeyListParams::Source }
51
+
46
52
  # @!attribute status
47
53
  # Filter by license key status
48
54
  #
49
55
  # @return [Symbol, Dodopayments::Models::LicenseKeyListParams::Status, nil]
50
56
  optional :status, enum: -> { Dodopayments::LicenseKeyListParams::Status }
51
57
 
52
- # @!method initialize(created_at_gte: nil, created_at_lte: nil, customer_id: nil, page_number: nil, page_size: nil, product_id: nil, status: nil, request_options: {})
58
+ # @!method initialize(created_at_gte: nil, created_at_lte: nil, customer_id: nil, page_number: nil, page_size: nil, product_id: nil, source: nil, status: nil, request_options: {})
53
59
  # @param created_at_gte [Time] Filter license keys created on or after this timestamp
54
60
  #
55
61
  # @param created_at_lte [Time] Filter license keys created on or before this timestamp
@@ -62,10 +68,23 @@ module Dodopayments
62
68
  #
63
69
  # @param product_id [String] Filter by product ID
64
70
  #
71
+ # @param source [Symbol, Dodopayments::Models::LicenseKeyListParams::Source] Filter by license key source
72
+ #
65
73
  # @param status [Symbol, Dodopayments::Models::LicenseKeyListParams::Status] Filter by license key status
66
74
  #
67
75
  # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
68
76
 
77
+ # Filter by license key source
78
+ module Source
79
+ extend Dodopayments::Internal::Type::Enum
80
+
81
+ AUTO = :auto
82
+ IMPORT = :import
83
+
84
+ # @!method self.values
85
+ # @return [Array<Symbol>]
86
+ end
87
+
69
88
  # Filter by license key status
70
89
  module Status
71
90
  extend Dodopayments::Internal::Type::Enum
@@ -28,6 +28,12 @@ module Dodopayments
28
28
  required :credit_entitlements,
29
29
  -> { Dodopayments::Internal::Type::ArrayOf[Dodopayments::CreditEntitlementMappingResponse] }
30
30
 
31
+ # @!attribute entitlements
32
+ # Attached entitlements (integration-based access grants)
33
+ #
34
+ # @return [Array<Dodopayments::Models::Product::Entitlement>]
35
+ required :entitlements, -> { Dodopayments::Internal::Type::ArrayOf[Dodopayments::Product::Entitlement] }
36
+
31
37
  # @!attribute is_recurring
32
38
  # Indicates if the product is recurring (e.g., subscriptions).
33
39
  #
@@ -35,6 +41,8 @@ module Dodopayments
35
41
  required :is_recurring, Dodopayments::Internal::Type::Boolean
36
42
 
37
43
  # @!attribute license_key_enabled
44
+ # @deprecated
45
+ #
38
46
  # Indicates whether the product requires a license key.
39
47
  #
40
48
  # @return [Boolean]
@@ -94,12 +102,16 @@ module Dodopayments
94
102
  optional :image, String, nil?: true
95
103
 
96
104
  # @!attribute license_key_activation_message
105
+ # @deprecated
106
+ #
97
107
  # Message sent upon license key activation, if applicable.
98
108
  #
99
109
  # @return [String, nil]
100
110
  optional :license_key_activation_message, String, nil?: true
101
111
 
102
112
  # @!attribute license_key_activations_limit
113
+ # @deprecated
114
+ #
103
115
  # Limit on the number of activations for the license key, if enabled.
104
116
  #
105
117
  # @return [Integer, nil]
@@ -123,7 +135,7 @@ module Dodopayments
123
135
  # @return [String, nil]
124
136
  optional :product_collection_id, String, nil?: true
125
137
 
126
- # @!method initialize(brand_id:, business_id:, created_at:, credit_entitlements:, is_recurring:, license_key_enabled:, metadata:, price:, product_id:, tax_category:, updated_at:, addons: nil, description: nil, digital_product_delivery: nil, image: nil, license_key_activation_message: nil, license_key_activations_limit: nil, license_key_duration: nil, name: nil, product_collection_id: nil)
138
+ # @!method initialize(brand_id:, business_id:, created_at:, credit_entitlements:, entitlements:, is_recurring:, license_key_enabled:, metadata:, price:, product_id:, tax_category:, updated_at:, addons: nil, description: nil, digital_product_delivery: nil, image: nil, license_key_activation_message: nil, license_key_activations_limit: nil, license_key_duration: nil, name: nil, product_collection_id: nil)
127
139
  # @param brand_id [String]
128
140
  #
129
141
  # @param business_id [String] Unique identifier for the business to which the product belongs.
@@ -132,6 +144,8 @@ module Dodopayments
132
144
  #
133
145
  # @param credit_entitlements [Array<Dodopayments::Models::CreditEntitlementMappingResponse>] Attached credit entitlements with settings
134
146
  #
147
+ # @param entitlements [Array<Dodopayments::Models::Product::Entitlement>] Attached entitlements (integration-based access grants)
148
+ #
135
149
  # @param is_recurring [Boolean] Indicates if the product is recurring (e.g., subscriptions).
136
150
  #
137
151
  # @param license_key_enabled [Boolean] Indicates whether the product requires a license key.
@@ -163,6 +177,219 @@ module Dodopayments
163
177
  # @param name [String, nil] Name of the product, optional.
164
178
  #
165
179
  # @param product_collection_id [String, nil] The product collection ID this product belongs to, if any
180
+
181
+ class Entitlement < Dodopayments::Internal::Type::BaseModel
182
+ # @!attribute id
183
+ #
184
+ # @return [String]
185
+ required :id, String
186
+
187
+ # @!attribute integration_config
188
+ # Platform-specific configuration for an entitlement. Each variant uses unique
189
+ # field names so `#[serde(untagged)]` can disambiguate correctly.
190
+ #
191
+ # @return [Dodopayments::Models::Product::Entitlement::IntegrationConfig::GitHubConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::DiscordConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::TelegramConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::FigmaConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::FramerConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::NotionConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::DigitalFilesConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::LicenseKeyConfig]
192
+ required :integration_config, union: -> { Dodopayments::Product::Entitlement::IntegrationConfig }
193
+
194
+ # @!attribute integration_type
195
+ #
196
+ # @return [Symbol, Dodopayments::Models::Product::Entitlement::IntegrationType]
197
+ required :integration_type, enum: -> { Dodopayments::Product::Entitlement::IntegrationType }
198
+
199
+ # @!attribute name
200
+ #
201
+ # @return [String]
202
+ required :name, String
203
+
204
+ # @!attribute description
205
+ #
206
+ # @return [String, nil]
207
+ optional :description, String, nil?: true
208
+
209
+ # @!method initialize(id:, integration_config:, integration_type:, name:, description: nil)
210
+ # Some parameter documentations has been truncated, see
211
+ # {Dodopayments::Models::Product::Entitlement} for more details.
212
+ #
213
+ # Summary of an entitlement attached to a product
214
+ #
215
+ # @param id [String]
216
+ #
217
+ # @param integration_config [Dodopayments::Models::Product::Entitlement::IntegrationConfig::GitHubConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::DiscordConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::TelegramConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::FigmaConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::FramerConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::NotionConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::DigitalFilesConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::LicenseKeyConfig] Platform-specific configuration for an entitlement.
218
+ #
219
+ # @param integration_type [Symbol, Dodopayments::Models::Product::Entitlement::IntegrationType]
220
+ #
221
+ # @param name [String]
222
+ #
223
+ # @param description [String, nil]
224
+
225
+ # Platform-specific configuration for an entitlement. Each variant uses unique
226
+ # field names so `#[serde(untagged)]` can disambiguate correctly.
227
+ #
228
+ # @see Dodopayments::Models::Product::Entitlement#integration_config
229
+ module IntegrationConfig
230
+ extend Dodopayments::Internal::Type::Union
231
+
232
+ variant -> { Dodopayments::Product::Entitlement::IntegrationConfig::GitHubConfig }
233
+
234
+ variant -> { Dodopayments::Product::Entitlement::IntegrationConfig::DiscordConfig }
235
+
236
+ variant -> { Dodopayments::Product::Entitlement::IntegrationConfig::TelegramConfig }
237
+
238
+ variant -> { Dodopayments::Product::Entitlement::IntegrationConfig::FigmaConfig }
239
+
240
+ variant -> { Dodopayments::Product::Entitlement::IntegrationConfig::FramerConfig }
241
+
242
+ variant -> { Dodopayments::Product::Entitlement::IntegrationConfig::NotionConfig }
243
+
244
+ variant -> { Dodopayments::Product::Entitlement::IntegrationConfig::DigitalFilesConfig }
245
+
246
+ variant -> { Dodopayments::Product::Entitlement::IntegrationConfig::LicenseKeyConfig }
247
+
248
+ class GitHubConfig < Dodopayments::Internal::Type::BaseModel
249
+ # @!attribute permission
250
+ # One of: pull, push, admin, maintain, triage
251
+ #
252
+ # @return [String]
253
+ required :permission, String
254
+
255
+ # @!attribute target_id
256
+ #
257
+ # @return [String]
258
+ required :target_id, String
259
+
260
+ # @!method initialize(permission:, target_id:)
261
+ # @param permission [String] One of: pull, push, admin, maintain, triage
262
+ #
263
+ # @param target_id [String]
264
+ end
265
+
266
+ class DiscordConfig < Dodopayments::Internal::Type::BaseModel
267
+ # @!attribute guild_id
268
+ #
269
+ # @return [String]
270
+ required :guild_id, String
271
+
272
+ # @!attribute role_id
273
+ #
274
+ # @return [String, nil]
275
+ optional :role_id, String, nil?: true
276
+
277
+ # @!method initialize(guild_id:, role_id: nil)
278
+ # @param guild_id [String]
279
+ # @param role_id [String, nil]
280
+ end
281
+
282
+ class TelegramConfig < Dodopayments::Internal::Type::BaseModel
283
+ # @!attribute chat_id
284
+ #
285
+ # @return [String]
286
+ required :chat_id, String
287
+
288
+ # @!method initialize(chat_id:)
289
+ # @param chat_id [String]
290
+ end
291
+
292
+ class FigmaConfig < Dodopayments::Internal::Type::BaseModel
293
+ # @!attribute figma_file_id
294
+ #
295
+ # @return [String]
296
+ required :figma_file_id, String
297
+
298
+ # @!method initialize(figma_file_id:)
299
+ # @param figma_file_id [String]
300
+ end
301
+
302
+ class FramerConfig < Dodopayments::Internal::Type::BaseModel
303
+ # @!attribute framer_template_id
304
+ #
305
+ # @return [String]
306
+ required :framer_template_id, String
307
+
308
+ # @!method initialize(framer_template_id:)
309
+ # @param framer_template_id [String]
310
+ end
311
+
312
+ class NotionConfig < Dodopayments::Internal::Type::BaseModel
313
+ # @!attribute notion_template_id
314
+ #
315
+ # @return [String]
316
+ required :notion_template_id, String
317
+
318
+ # @!method initialize(notion_template_id:)
319
+ # @param notion_template_id [String]
320
+ end
321
+
322
+ class DigitalFilesConfig < Dodopayments::Internal::Type::BaseModel
323
+ # @!attribute digital_file_ids
324
+ #
325
+ # @return [Array<String>]
326
+ required :digital_file_ids, Dodopayments::Internal::Type::ArrayOf[String]
327
+
328
+ # @!attribute external_url
329
+ #
330
+ # @return [String, nil]
331
+ optional :external_url, String, nil?: true
332
+
333
+ # @!attribute instructions
334
+ #
335
+ # @return [String, nil]
336
+ optional :instructions, String, nil?: true
337
+
338
+ # @!method initialize(digital_file_ids:, external_url: nil, instructions: nil)
339
+ # @param digital_file_ids [Array<String>]
340
+ # @param external_url [String, nil]
341
+ # @param instructions [String, nil]
342
+ end
343
+
344
+ class LicenseKeyConfig < Dodopayments::Internal::Type::BaseModel
345
+ # @!attribute activation_message
346
+ #
347
+ # @return [String, nil]
348
+ optional :activation_message, String, nil?: true
349
+
350
+ # @!attribute activations_limit
351
+ #
352
+ # @return [Integer, nil]
353
+ optional :activations_limit, Integer, nil?: true
354
+
355
+ # @!attribute duration_count
356
+ #
357
+ # @return [Integer, nil]
358
+ optional :duration_count, Integer, nil?: true
359
+
360
+ # @!attribute duration_interval
361
+ #
362
+ # @return [String, nil]
363
+ optional :duration_interval, String, nil?: true
364
+
365
+ # @!method initialize(activation_message: nil, activations_limit: nil, duration_count: nil, duration_interval: nil)
366
+ # @param activation_message [String, nil]
367
+ # @param activations_limit [Integer, nil]
368
+ # @param duration_count [Integer, nil]
369
+ # @param duration_interval [String, nil]
370
+ end
371
+
372
+ # @!method self.variants
373
+ # @return [Array(Dodopayments::Models::Product::Entitlement::IntegrationConfig::GitHubConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::DiscordConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::TelegramConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::FigmaConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::FramerConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::NotionConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::DigitalFilesConfig, Dodopayments::Models::Product::Entitlement::IntegrationConfig::LicenseKeyConfig)]
374
+ end
375
+
376
+ # @see Dodopayments::Models::Product::Entitlement#integration_type
377
+ module IntegrationType
378
+ extend Dodopayments::Internal::Type::Enum
379
+
380
+ DISCORD = :discord
381
+ TELEGRAM = :telegram
382
+ GITHUB = :github
383
+ FIGMA = :figma
384
+ FRAMER = :framer
385
+ NOTION = :notion
386
+ DIGITAL_FILES = :digital_files
387
+ LICENSE_KEY = :license_key
388
+
389
+ # @!method self.values
390
+ # @return [Array<Symbol>]
391
+ end
392
+ end
166
393
  end
167
394
  end
168
395
  end
@@ -59,13 +59,23 @@ module Dodopayments
59
59
  -> { Dodopayments::ProductCreateParams::DigitalProductDelivery },
60
60
  nil?: true
61
61
 
62
+ # @!attribute entitlement_ids
63
+ # Optional entitlement IDs to attach to this product (max 20)
64
+ #
65
+ # @return [Array<String>, nil]
66
+ optional :entitlement_ids, Dodopayments::Internal::Type::ArrayOf[String], nil?: true
67
+
62
68
  # @!attribute license_key_activation_message
69
+ # @deprecated
70
+ #
63
71
  # Optional message displayed during license key activation
64
72
  #
65
73
  # @return [String, nil]
66
74
  optional :license_key_activation_message, String, nil?: true
67
75
 
68
76
  # @!attribute license_key_activations_limit
77
+ # @deprecated
78
+ #
69
79
  # The number of times the license key can be activated. Must be 0 or greater
70
80
  #
71
81
  # @return [Integer, nil]
@@ -80,6 +90,8 @@ module Dodopayments
80
90
  optional :license_key_duration, -> { Dodopayments::LicenseKeyDuration }, nil?: true
81
91
 
82
92
  # @!attribute license_key_enabled
93
+ # @deprecated
94
+ #
83
95
  # When true, generates and sends a license key to your customer. Defaults to false
84
96
  #
85
97
  # @return [Boolean, nil]
@@ -91,7 +103,7 @@ module Dodopayments
91
103
  # @return [Hash{Symbol=>String}, nil]
92
104
  optional :metadata, Dodopayments::Internal::Type::HashOf[String]
93
105
 
94
- # @!method initialize(name:, price:, tax_category:, addons: nil, brand_id: nil, credit_entitlements: nil, description: nil, digital_product_delivery: nil, license_key_activation_message: nil, license_key_activations_limit: nil, license_key_duration: nil, license_key_enabled: nil, metadata: nil, request_options: {})
106
+ # @!method initialize(name:, price:, tax_category:, addons: nil, brand_id: nil, credit_entitlements: nil, description: nil, digital_product_delivery: nil, entitlement_ids: nil, license_key_activation_message: nil, license_key_activations_limit: nil, license_key_duration: nil, license_key_enabled: nil, metadata: nil, request_options: {})
95
107
  # Some parameter documentations has been truncated, see
96
108
  # {Dodopayments::Models::ProductCreateParams} for more details.
97
109
  #
@@ -111,6 +123,8 @@ module Dodopayments
111
123
  #
112
124
  # @param digital_product_delivery [Dodopayments::Models::ProductCreateParams::DigitalProductDelivery, nil] Choose how you would like you digital product delivered
113
125
  #
126
+ # @param entitlement_ids [Array<String>, nil] Optional entitlement IDs to attach to this product (max 20)
127
+ #
114
128
  # @param license_key_activation_message [String, nil] Optional message displayed during license key activation
115
129
  #
116
130
  # @param license_key_activations_limit [Integer, nil] The number of times the license key can be activated.