dodopayments 2.29.0 → 2.30.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +1 -1
- data/lib/dodopayments/client.rb +4 -0
- data/lib/dodopayments/models/balance_ledger_entry.rb +3 -0
- data/lib/dodopayments/models/balance_retrieve_ledger_params.rb +3 -0
- data/lib/dodopayments/models/checkout_session_flags.rb +12 -1
- data/lib/dodopayments/models/checkout_session_preview_response.rb +86 -4
- data/lib/dodopayments/models/checkout_session_request.rb +4 -1
- data/lib/dodopayments/models/customers/email_log_item.rb +3 -2
- data/lib/dodopayments/models/customers/email_policies.rb +4 -3
- data/lib/dodopayments/models/discount_create_params.rb +11 -8
- data/lib/dodopayments/models/discount_update_params.rb +6 -5
- data/lib/dodopayments/models/moderation_category.rb +31 -0
- data/lib/dodopayments/models/moderation_category_provenance.rb +150 -0
- data/lib/dodopayments/models/moderation_category_scores.rb +150 -0
- data/lib/dodopayments/models/moderation_decision.rb +18 -0
- data/lib/dodopayments/models/moderation_provenance.rb +18 -0
- data/lib/dodopayments/models/moderation_retrieve_usage_params.rb +14 -0
- data/lib/dodopayments/models/moderation_retrieve_usage_response.rb +61 -0
- data/lib/dodopayments/models/moderation_screen_params.rb +44 -0
- data/lib/dodopayments/models/moderation_screen_response.rb +99 -0
- data/lib/dodopayments/models/payment.rb +25 -3
- data/lib/dodopayments/models/payment_list_response.rb +21 -1
- data/lib/dodopayments/models/payouts/breakup/detail_list_response.rb +5 -4
- data/lib/dodopayments/models/payouts/breakup_retrieve_response.rb +17 -1
- data/lib/dodopayments/models.rb +14 -0
- data/lib/dodopayments/resources/checkout_sessions.rb +2 -2
- data/lib/dodopayments/resources/moderation.rb +81 -0
- data/lib/dodopayments/resources/payouts/breakup/details.rb +4 -4
- data/lib/dodopayments/version.rb +1 -1
- data/lib/dodopayments.rb +10 -0
- data/rbi/dodopayments/client.rbi +3 -0
- data/rbi/dodopayments/models/balance_ledger_entry.rbi +15 -0
- data/rbi/dodopayments/models/balance_retrieve_ledger_params.rbi +15 -0
- data/rbi/dodopayments/models/checkout_session_flags.rbi +17 -0
- data/rbi/dodopayments/models/checkout_session_preview_response.rbi +130 -6
- data/rbi/dodopayments/models/checkout_session_request.rbi +6 -0
- data/rbi/dodopayments/models/customers/email_log_item.rbi +4 -2
- data/rbi/dodopayments/models/customers/email_policies.rbi +6 -4
- data/rbi/dodopayments/models/discount_create_params.rbi +18 -12
- data/rbi/dodopayments/models/discount_update_params.rbi +8 -6
- data/rbi/dodopayments/models/moderation_category.rbi +88 -0
- data/rbi/dodopayments/models/moderation_category_provenance.rbi +184 -0
- data/rbi/dodopayments/models/moderation_category_scores.rbi +171 -0
- data/rbi/dodopayments/models/moderation_decision.rbi +27 -0
- data/rbi/dodopayments/models/moderation_provenance.rbi +28 -0
- data/rbi/dodopayments/models/moderation_retrieve_usage_params.rbi +32 -0
- data/rbi/dodopayments/models/moderation_retrieve_usage_response.rbi +104 -0
- data/rbi/dodopayments/models/moderation_screen_params.rbi +68 -0
- data/rbi/dodopayments/models/moderation_screen_response.rbi +135 -0
- data/rbi/dodopayments/models/payment.rbi +30 -2
- data/rbi/dodopayments/models/payment_list_response.rbi +24 -0
- data/rbi/dodopayments/models/payouts/breakup/detail_list_response.rbi +8 -6
- data/rbi/dodopayments/models/payouts/breakup_retrieve_response.rbi +19 -2
- data/rbi/dodopayments/models.rbi +16 -0
- data/rbi/dodopayments/resources/checkout_sessions.rbi +6 -0
- data/rbi/dodopayments/resources/discounts.rbi +5 -3
- data/rbi/dodopayments/resources/moderation.rbi +64 -0
- data/rbi/dodopayments/resources/payouts/breakup/details.rbi +4 -4
- data/sig/dodopayments/client.rbs +2 -0
- data/sig/dodopayments/models/balance_ledger_entry.rbs +6 -0
- data/sig/dodopayments/models/balance_retrieve_ledger_params.rbs +6 -0
- data/sig/dodopayments/models/checkout_session_flags.rbs +7 -0
- data/sig/dodopayments/models/checkout_session_preview_response.rbs +52 -0
- data/sig/dodopayments/models/moderation_category.rbs +46 -0
- data/sig/dodopayments/models/moderation_category_provenance.rbs +100 -0
- data/sig/dodopayments/models/moderation_category_scores.rbs +100 -0
- data/sig/dodopayments/models/moderation_decision.rbs +15 -0
- data/sig/dodopayments/models/moderation_provenance.rbs +14 -0
- data/sig/dodopayments/models/moderation_retrieve_usage_params.rbs +15 -0
- data/sig/dodopayments/models/moderation_retrieve_usage_response.rbs +42 -0
- data/sig/dodopayments/models/moderation_screen_params.rbs +32 -0
- data/sig/dodopayments/models/moderation_screen_response.rbs +65 -0
- data/sig/dodopayments/models/payment.rbs +10 -0
- data/sig/dodopayments/models/payment_list_response.rbs +10 -0
- data/sig/dodopayments/models.rbs +14 -0
- data/sig/dodopayments/resources/moderation.rbs +18 -0
- metadata +32 -2
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Dodopayments
|
|
4
|
+
module Models
|
|
5
|
+
class ModerationScreenParams < 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::ModerationScreenParams,
|
|
13
|
+
Dodopayments::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The image to screen, as base64, with or without a `data:image/...;base64,`
|
|
18
|
+
# prefix. The formats are JPEG, PNG, WebP, GIF and BMP. The limit is 6991530
|
|
19
|
+
# base64 characters, and the decoded image must be at most 5 MiB.
|
|
20
|
+
sig { returns(T.nilable(String)) }
|
|
21
|
+
attr_accessor :image
|
|
22
|
+
|
|
23
|
+
# Your identifier for this screen, up to 128 characters, with no control
|
|
24
|
+
# characters. The response returns it in `request_id`.
|
|
25
|
+
sig { returns(T.nilable(String)) }
|
|
26
|
+
attr_accessor :request_id
|
|
27
|
+
|
|
28
|
+
# The text to screen, up to 8000 characters.
|
|
29
|
+
sig { returns(T.nilable(String)) }
|
|
30
|
+
attr_accessor :text
|
|
31
|
+
|
|
32
|
+
sig do
|
|
33
|
+
params(
|
|
34
|
+
image: T.nilable(String),
|
|
35
|
+
request_id: T.nilable(String),
|
|
36
|
+
text: T.nilable(String),
|
|
37
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
|
38
|
+
).returns(T.attached_class)
|
|
39
|
+
end
|
|
40
|
+
def self.new(
|
|
41
|
+
# The image to screen, as base64, with or without a `data:image/...;base64,`
|
|
42
|
+
# prefix. The formats are JPEG, PNG, WebP, GIF and BMP. The limit is 6991530
|
|
43
|
+
# base64 characters, and the decoded image must be at most 5 MiB.
|
|
44
|
+
image: nil,
|
|
45
|
+
# Your identifier for this screen, up to 128 characters, with no control
|
|
46
|
+
# characters. The response returns it in `request_id`.
|
|
47
|
+
request_id: nil,
|
|
48
|
+
# The text to screen, up to 8000 characters.
|
|
49
|
+
text: nil,
|
|
50
|
+
request_options: {}
|
|
51
|
+
)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
sig do
|
|
55
|
+
override.returns(
|
|
56
|
+
{
|
|
57
|
+
image: T.nilable(String),
|
|
58
|
+
request_id: T.nilable(String),
|
|
59
|
+
text: T.nilable(String),
|
|
60
|
+
request_options: Dodopayments::RequestOptions
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
end
|
|
64
|
+
def to_hash
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Dodopayments
|
|
4
|
+
module Models
|
|
5
|
+
class ModerationScreenResponse < Dodopayments::Internal::Type::BaseModel
|
|
6
|
+
OrHash =
|
|
7
|
+
T.type_alias do
|
|
8
|
+
T.any(
|
|
9
|
+
Dodopayments::Models::ModerationScreenResponse,
|
|
10
|
+
Dodopayments::Internal::AnyHash
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# The probability, from 0 to 1, that the screen falls in each category.
|
|
15
|
+
sig { returns(Dodopayments::ModerationCategoryScores) }
|
|
16
|
+
attr_reader :categories
|
|
17
|
+
|
|
18
|
+
sig do
|
|
19
|
+
params(categories: Dodopayments::ModerationCategoryScores::OrHash).void
|
|
20
|
+
end
|
|
21
|
+
attr_writer :categories
|
|
22
|
+
|
|
23
|
+
# True when real-person likeness and sexual content together crossed their
|
|
24
|
+
# combined threshold, the pattern of a sexual deepfake.
|
|
25
|
+
sig { returns(T::Boolean) }
|
|
26
|
+
attr_accessor :compound_triggered
|
|
27
|
+
|
|
28
|
+
# The verdict. `allow` means the content passed. `deny` means block the content.
|
|
29
|
+
# `flag` means apply your own judgement. It is not a soft deny.
|
|
30
|
+
sig { returns(Dodopayments::ModerationDecision::TaggedSymbol) }
|
|
31
|
+
attr_accessor :decision
|
|
32
|
+
|
|
33
|
+
# The time the screen took, in milliseconds.
|
|
34
|
+
sig { returns(Integer) }
|
|
35
|
+
attr_accessor :latency_ms
|
|
36
|
+
|
|
37
|
+
# True when the text was also screened in a normalized form, with obfuscation such
|
|
38
|
+
# as invisible or look-alike characters removed.
|
|
39
|
+
sig { returns(T::Boolean) }
|
|
40
|
+
attr_accessor :normalized_applied
|
|
41
|
+
|
|
42
|
+
# Human-readable reasons for the decision. The wording can change, so do not parse
|
|
43
|
+
# it.
|
|
44
|
+
sig { returns(T::Array[String]) }
|
|
45
|
+
attr_accessor :notes
|
|
46
|
+
|
|
47
|
+
# The number of yes/no questions the model answered for this screen.
|
|
48
|
+
sig { returns(Integer) }
|
|
49
|
+
attr_accessor :passes
|
|
50
|
+
|
|
51
|
+
# How each score in `categories` was measured.
|
|
52
|
+
sig { returns(Dodopayments::ModerationCategoryProvenance) }
|
|
53
|
+
attr_reader :provenance
|
|
54
|
+
|
|
55
|
+
sig do
|
|
56
|
+
params(
|
|
57
|
+
provenance: Dodopayments::ModerationCategoryProvenance::OrHash
|
|
58
|
+
).void
|
|
59
|
+
end
|
|
60
|
+
attr_writer :provenance
|
|
61
|
+
|
|
62
|
+
# The `request_id` you sent, or null.
|
|
63
|
+
sig { returns(T.nilable(String)) }
|
|
64
|
+
attr_accessor :request_id
|
|
65
|
+
|
|
66
|
+
# The categories whose score crossed the threshold of the category. It can be
|
|
67
|
+
# empty on a `flag` from the general check. `notes` then gives the reason.
|
|
68
|
+
sig { returns(T::Array[Dodopayments::ModerationCategory::TaggedSymbol]) }
|
|
69
|
+
attr_accessor :triggered
|
|
70
|
+
|
|
71
|
+
# The verdict of one screen.
|
|
72
|
+
sig do
|
|
73
|
+
params(
|
|
74
|
+
categories: Dodopayments::ModerationCategoryScores::OrHash,
|
|
75
|
+
compound_triggered: T::Boolean,
|
|
76
|
+
decision: Dodopayments::ModerationDecision::OrSymbol,
|
|
77
|
+
latency_ms: Integer,
|
|
78
|
+
normalized_applied: T::Boolean,
|
|
79
|
+
notes: T::Array[String],
|
|
80
|
+
passes: Integer,
|
|
81
|
+
provenance: Dodopayments::ModerationCategoryProvenance::OrHash,
|
|
82
|
+
request_id: T.nilable(String),
|
|
83
|
+
triggered: T::Array[Dodopayments::ModerationCategory::OrSymbol]
|
|
84
|
+
).returns(T.attached_class)
|
|
85
|
+
end
|
|
86
|
+
def self.new(
|
|
87
|
+
# The probability, from 0 to 1, that the screen falls in each category.
|
|
88
|
+
categories:,
|
|
89
|
+
# True when real-person likeness and sexual content together crossed their
|
|
90
|
+
# combined threshold, the pattern of a sexual deepfake.
|
|
91
|
+
compound_triggered:,
|
|
92
|
+
# The verdict. `allow` means the content passed. `deny` means block the content.
|
|
93
|
+
# `flag` means apply your own judgement. It is not a soft deny.
|
|
94
|
+
decision:,
|
|
95
|
+
# The time the screen took, in milliseconds.
|
|
96
|
+
latency_ms:,
|
|
97
|
+
# True when the text was also screened in a normalized form, with obfuscation such
|
|
98
|
+
# as invisible or look-alike characters removed.
|
|
99
|
+
normalized_applied:,
|
|
100
|
+
# Human-readable reasons for the decision. The wording can change, so do not parse
|
|
101
|
+
# it.
|
|
102
|
+
notes:,
|
|
103
|
+
# The number of yes/no questions the model answered for this screen.
|
|
104
|
+
passes:,
|
|
105
|
+
# How each score in `categories` was measured.
|
|
106
|
+
provenance:,
|
|
107
|
+
# The `request_id` you sent, or null.
|
|
108
|
+
request_id:,
|
|
109
|
+
# The categories whose score crossed the threshold of the category. It can be
|
|
110
|
+
# empty on a `flag` from the general check. `notes` then gives the reason.
|
|
111
|
+
triggered:
|
|
112
|
+
)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
sig do
|
|
116
|
+
override.returns(
|
|
117
|
+
{
|
|
118
|
+
categories: Dodopayments::ModerationCategoryScores,
|
|
119
|
+
compound_triggered: T::Boolean,
|
|
120
|
+
decision: Dodopayments::ModerationDecision::TaggedSymbol,
|
|
121
|
+
latency_ms: Integer,
|
|
122
|
+
normalized_applied: T::Boolean,
|
|
123
|
+
notes: T::Array[String],
|
|
124
|
+
passes: Integer,
|
|
125
|
+
provenance: Dodopayments::ModerationCategoryProvenance,
|
|
126
|
+
request_id: T.nilable(String),
|
|
127
|
+
triggered: T::Array[Dodopayments::ModerationCategory::TaggedSymbol]
|
|
128
|
+
}
|
|
129
|
+
)
|
|
130
|
+
end
|
|
131
|
+
def to_hash
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
@@ -48,6 +48,12 @@ module Dodopayments
|
|
|
48
48
|
sig { returns(T::Array[Dodopayments::Dispute]) }
|
|
49
49
|
attr_accessor :disputes
|
|
50
50
|
|
|
51
|
+
# True when one payment starts more than one subscription. Read this field to find
|
|
52
|
+
# the payment type. Do not read the length of `subscription_ids`. Do not read
|
|
53
|
+
# `subscription_id` for null.
|
|
54
|
+
sig { returns(T::Boolean) }
|
|
55
|
+
attr_accessor :is_multi_subscription
|
|
56
|
+
|
|
51
57
|
# Whether this payment was created solely to update a subscription's payment
|
|
52
58
|
# method (a zero-/setup-amount charge). `false` for normal charges.
|
|
53
59
|
sig { returns(T::Boolean) }
|
|
@@ -88,6 +94,12 @@ module Dodopayments
|
|
|
88
94
|
sig { returns(Dodopayments::Currency::TaggedSymbol) }
|
|
89
95
|
attr_accessor :settlement_currency
|
|
90
96
|
|
|
97
|
+
# Every subscription that this payment starts or charges, in a stable order. It is
|
|
98
|
+
# empty for a one-time payment. It holds the value of `subscription_id` when the
|
|
99
|
+
# payment names one subscription.
|
|
100
|
+
sig { returns(T::Array[String]) }
|
|
101
|
+
attr_accessor :subscription_ids
|
|
102
|
+
|
|
91
103
|
# Total amount charged to the customer including tax, in the currency's smallest
|
|
92
104
|
# unit (e.g. cents for USD, yen for JPY, fils for KWD — see the currency's decimal
|
|
93
105
|
# places)
|
|
@@ -186,7 +198,9 @@ module Dodopayments
|
|
|
186
198
|
sig { returns(T.nilable(Dodopayments::IntentStatus::TaggedSymbol)) }
|
|
187
199
|
attr_accessor :status
|
|
188
200
|
|
|
189
|
-
# Identifier of the subscription if payment is part of a subscription
|
|
201
|
+
# Identifier of the subscription if payment is part of a subscription. A
|
|
202
|
+
# multi-subscription payment leaves this null, because no single subscription owns
|
|
203
|
+
# the payment. Read `subscription_ids` for those.
|
|
190
204
|
sig { returns(T.nilable(String)) }
|
|
191
205
|
attr_accessor :subscription_id
|
|
192
206
|
|
|
@@ -209,6 +223,7 @@ module Dodopayments
|
|
|
209
223
|
customer: Dodopayments::CustomerLimitedDetails::OrHash,
|
|
210
224
|
digital_products_delivered: T::Boolean,
|
|
211
225
|
disputes: T::Array[Dodopayments::Dispute::OrHash],
|
|
226
|
+
is_multi_subscription: T::Boolean,
|
|
212
227
|
is_update_payment_method: T::Boolean,
|
|
213
228
|
metadata: T::Hash[Symbol, Dodopayments::MetadataItem::Variants],
|
|
214
229
|
payment_id: String,
|
|
@@ -217,6 +232,7 @@ module Dodopayments
|
|
|
217
232
|
retry_attempt: Integer,
|
|
218
233
|
settlement_amount: Integer,
|
|
219
234
|
settlement_currency: Dodopayments::Currency::OrSymbol,
|
|
235
|
+
subscription_ids: T::Array[String],
|
|
220
236
|
total_amount: Integer,
|
|
221
237
|
card_holder_name: T.nilable(String),
|
|
222
238
|
card_issuing_country: T.nilable(Dodopayments::CountryCode::OrSymbol),
|
|
@@ -263,6 +279,10 @@ module Dodopayments
|
|
|
263
279
|
digital_products_delivered:,
|
|
264
280
|
# List of disputes associated with this payment
|
|
265
281
|
disputes:,
|
|
282
|
+
# True when one payment starts more than one subscription. Read this field to find
|
|
283
|
+
# the payment type. Do not read the length of `subscription_ids`. Do not read
|
|
284
|
+
# `subscription_id` for null.
|
|
285
|
+
is_multi_subscription:,
|
|
266
286
|
# Whether this payment was created solely to update a subscription's payment
|
|
267
287
|
# method (a zero-/setup-amount charge). `false` for normal charges.
|
|
268
288
|
is_update_payment_method:,
|
|
@@ -287,6 +307,10 @@ module Dodopayments
|
|
|
287
307
|
# balance. This may differ from the customer's payment currency in adaptive
|
|
288
308
|
# pricing scenarios.
|
|
289
309
|
settlement_currency:,
|
|
310
|
+
# Every subscription that this payment starts or charges, in a stable order. It is
|
|
311
|
+
# empty for a one-time payment. It holds the value of `subscription_id` when the
|
|
312
|
+
# payment names one subscription.
|
|
313
|
+
subscription_ids:,
|
|
290
314
|
# Total amount charged to the customer including tax, in the currency's smallest
|
|
291
315
|
# unit (e.g. cents for USD, yen for JPY, fils for KWD — see the currency's decimal
|
|
292
316
|
# places)
|
|
@@ -339,7 +363,9 @@ module Dodopayments
|
|
|
339
363
|
settlement_tax: nil,
|
|
340
364
|
# Current status of the payment intent
|
|
341
365
|
status: nil,
|
|
342
|
-
# Identifier of the subscription if payment is part of a subscription
|
|
366
|
+
# Identifier of the subscription if payment is part of a subscription. A
|
|
367
|
+
# multi-subscription payment leaves this null, because no single subscription owns
|
|
368
|
+
# the payment. Read `subscription_ids` for those.
|
|
343
369
|
subscription_id: nil,
|
|
344
370
|
# Amount of tax collected in the currency's smallest unit (e.g. cents for USD, yen
|
|
345
371
|
# for JPY, fils for KWD)
|
|
@@ -360,6 +386,7 @@ module Dodopayments
|
|
|
360
386
|
customer: Dodopayments::CustomerLimitedDetails,
|
|
361
387
|
digital_products_delivered: T::Boolean,
|
|
362
388
|
disputes: T::Array[Dodopayments::Dispute],
|
|
389
|
+
is_multi_subscription: T::Boolean,
|
|
363
390
|
is_update_payment_method: T::Boolean,
|
|
364
391
|
metadata: T::Hash[Symbol, Dodopayments::MetadataItem::Variants],
|
|
365
392
|
payment_id: String,
|
|
@@ -369,6 +396,7 @@ module Dodopayments
|
|
|
369
396
|
retry_attempt: Integer,
|
|
370
397
|
settlement_amount: Integer,
|
|
371
398
|
settlement_currency: Dodopayments::Currency::TaggedSymbol,
|
|
399
|
+
subscription_ids: T::Array[String],
|
|
372
400
|
total_amount: Integer,
|
|
373
401
|
card_holder_name: T.nilable(String),
|
|
374
402
|
card_issuing_country:
|
|
@@ -34,6 +34,12 @@ module Dodopayments
|
|
|
34
34
|
sig { returns(T::Boolean) }
|
|
35
35
|
attr_accessor :has_license_key
|
|
36
36
|
|
|
37
|
+
# True when one payment starts more than one subscription. Read this field to find
|
|
38
|
+
# the payment type. Do not read the length of `subscription_ids`. Do not read
|
|
39
|
+
# `subscription_id` for null.
|
|
40
|
+
sig { returns(T::Boolean) }
|
|
41
|
+
attr_accessor :is_multi_subscription
|
|
42
|
+
|
|
37
43
|
# Arbitrary key-value metadata. Values can be string, integer, number, or boolean.
|
|
38
44
|
sig { returns(T::Hash[Symbol, Dodopayments::MetadataItem::Variants]) }
|
|
39
45
|
attr_accessor :metadata
|
|
@@ -50,6 +56,12 @@ module Dodopayments
|
|
|
50
56
|
end
|
|
51
57
|
attr_accessor :payment_provider
|
|
52
58
|
|
|
59
|
+
# Every subscription that this payment starts or charges, in a stable order. It is
|
|
60
|
+
# empty for a one-time payment. It holds the value of `subscription_id` when the
|
|
61
|
+
# payment names one subscription.
|
|
62
|
+
sig { returns(T::Array[String]) }
|
|
63
|
+
attr_accessor :subscription_ids
|
|
64
|
+
|
|
53
65
|
sig { returns(Integer) }
|
|
54
66
|
attr_accessor :total_amount
|
|
55
67
|
|
|
@@ -100,10 +112,12 @@ module Dodopayments
|
|
|
100
112
|
customer: Dodopayments::CustomerLimitedDetails::OrHash,
|
|
101
113
|
digital_products_delivered: T::Boolean,
|
|
102
114
|
has_license_key: T::Boolean,
|
|
115
|
+
is_multi_subscription: T::Boolean,
|
|
103
116
|
metadata: T::Hash[Symbol, Dodopayments::MetadataItem::Variants],
|
|
104
117
|
payment_id: String,
|
|
105
118
|
payment_provider:
|
|
106
119
|
Dodopayments::Models::PaymentListResponse::PaymentProvider::OrSymbol,
|
|
120
|
+
subscription_ids: T::Array[String],
|
|
107
121
|
total_amount: Integer,
|
|
108
122
|
card_last_four: T.nilable(String),
|
|
109
123
|
card_network: T.nilable(String),
|
|
@@ -124,12 +138,20 @@ module Dodopayments
|
|
|
124
138
|
customer:,
|
|
125
139
|
digital_products_delivered:,
|
|
126
140
|
has_license_key:,
|
|
141
|
+
# True when one payment starts more than one subscription. Read this field to find
|
|
142
|
+
# the payment type. Do not read the length of `subscription_ids`. Do not read
|
|
143
|
+
# `subscription_id` for null.
|
|
144
|
+
is_multi_subscription:,
|
|
127
145
|
# Arbitrary key-value metadata. Values can be string, integer, number, or boolean.
|
|
128
146
|
metadata:,
|
|
129
147
|
payment_id:,
|
|
130
148
|
# Which processor handled this payment. `stripe` / `adyen` for BYOP routes (the
|
|
131
149
|
# merchant's own payment connector); `dodo` for everything Dodo processed itself.
|
|
132
150
|
payment_provider:,
|
|
151
|
+
# Every subscription that this payment starts or charges, in a stable order. It is
|
|
152
|
+
# empty for a one-time payment. It holds the value of `subscription_id` when the
|
|
153
|
+
# payment names one subscription.
|
|
154
|
+
subscription_ids:,
|
|
133
155
|
total_amount:,
|
|
134
156
|
# The last four digits of the card
|
|
135
157
|
card_last_four: nil,
|
|
@@ -160,10 +182,12 @@ module Dodopayments
|
|
|
160
182
|
customer: Dodopayments::CustomerLimitedDetails,
|
|
161
183
|
digital_products_delivered: T::Boolean,
|
|
162
184
|
has_license_key: T::Boolean,
|
|
185
|
+
is_multi_subscription: T::Boolean,
|
|
163
186
|
metadata: T::Hash[Symbol, Dodopayments::MetadataItem::Variants],
|
|
164
187
|
payment_id: String,
|
|
165
188
|
payment_provider:
|
|
166
189
|
Dodopayments::Models::PaymentListResponse::PaymentProvider::TaggedSymbol,
|
|
190
|
+
subscription_ids: T::Array[String],
|
|
167
191
|
total_amount: Integer,
|
|
168
192
|
card_last_four: T.nilable(String),
|
|
169
193
|
card_network: T.nilable(String),
|
|
@@ -36,8 +36,9 @@ module Dodopayments
|
|
|
36
36
|
attr_accessor :original_currency
|
|
37
37
|
|
|
38
38
|
# Amount in the payout's currency, in that currency's smallest unit (cents for
|
|
39
|
-
# USD, yen for JPY, fils for KWD).
|
|
40
|
-
#
|
|
39
|
+
# USD, yen for JPY, fils for KWD). The entry is converted at the rate the payout
|
|
40
|
+
# settled at. These amounts sum to the value of the entries, which can be less
|
|
41
|
+
# than the payout: the grouped breakup reports the difference as `unattributed`.
|
|
41
42
|
sig { returns(Integer) }
|
|
42
43
|
attr_accessor :payout_currency_amount
|
|
43
44
|
|
|
@@ -53,8 +54,8 @@ module Dodopayments
|
|
|
53
54
|
sig { returns(T.nilable(String)) }
|
|
54
55
|
attr_accessor :reference_object_id
|
|
55
56
|
|
|
56
|
-
# Individual balance ledger entry for a payout,
|
|
57
|
-
#
|
|
57
|
+
# Individual balance ledger entry for a payout, converted into the payout's
|
|
58
|
+
# currency.
|
|
58
59
|
sig do
|
|
59
60
|
params(
|
|
60
61
|
id: String,
|
|
@@ -82,8 +83,9 @@ module Dodopayments
|
|
|
82
83
|
# Original currency as ISO 4217 code (e.g., "USD", "EUR").
|
|
83
84
|
original_currency:,
|
|
84
85
|
# Amount in the payout's currency, in that currency's smallest unit (cents for
|
|
85
|
-
# USD, yen for JPY, fils for KWD).
|
|
86
|
-
#
|
|
86
|
+
# USD, yen for JPY, fils for KWD). The entry is converted at the rate the payout
|
|
87
|
+
# settled at. These amounts sum to the value of the entries, which can be less
|
|
88
|
+
# than the payout: the grouped breakup reports the difference as `unattributed`.
|
|
87
89
|
payout_currency_amount:,
|
|
88
90
|
# USD equivalent of the original amount (in cents).
|
|
89
91
|
usd_equivalent_amount:,
|
|
@@ -13,7 +13,8 @@ module Dodopayments
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
# The type of balance ledger event (e.g., "payment", "refund", "dispute",
|
|
16
|
-
# "payment_fees")
|
|
16
|
+
# "payment_fees"), or `unattributed` for the payout amount the entries do not
|
|
17
|
+
# account for.
|
|
17
18
|
sig { returns(String) }
|
|
18
19
|
attr_accessor :event_type
|
|
19
20
|
|
|
@@ -23,12 +24,28 @@ module Dodopayments
|
|
|
23
24
|
attr_accessor :total
|
|
24
25
|
|
|
25
26
|
# Payout breakup aggregated by event type, with amounts in the payout's currency.
|
|
27
|
+
#
|
|
28
|
+
# The rows sum to the payout amount. The last row can be `unattributed`, which is
|
|
29
|
+
# not a ledger event type. It holds the payout amount less the entries that fund
|
|
30
|
+
# it, and it takes either sign:
|
|
31
|
+
#
|
|
32
|
+
# - Positive: the entries come to less than the payout, so the payout drew on the
|
|
33
|
+
# balance an earlier cycle left over. A cycle of refunds and disputes produces a
|
|
34
|
+
# large positive value.
|
|
35
|
+
# - Negative: the entries come to more than the payout, and the remainder funds a
|
|
36
|
+
# later payout. This is the common case, for two reasons. The walk that claims
|
|
37
|
+
# the entries stops at the first one that reaches its target, so it passes the
|
|
38
|
+
# target by part of an entry. The target is also the gross debit, which holds
|
|
39
|
+
# the payout fee, and the fee is not a line here.
|
|
40
|
+
#
|
|
41
|
+
# The row is absent when the two are equal.
|
|
26
42
|
sig do
|
|
27
43
|
params(event_type: String, total: Integer).returns(T.attached_class)
|
|
28
44
|
end
|
|
29
45
|
def self.new(
|
|
30
46
|
# The type of balance ledger event (e.g., "payment", "refund", "dispute",
|
|
31
|
-
# "payment_fees")
|
|
47
|
+
# "payment_fees"), or `unattributed` for the payout amount the entries do not
|
|
48
|
+
# account for.
|
|
32
49
|
event_type:,
|
|
33
50
|
# Total amount for this event type in the payout's currency, in that currency's
|
|
34
51
|
# smallest unit (cents for USD, yen for JPY, fils for KWD).
|
data/rbi/dodopayments/models.rbi
CHANGED
|
@@ -357,6 +357,22 @@ module Dodopayments
|
|
|
357
357
|
MiscListSupportedCountriesParams =
|
|
358
358
|
Dodopayments::Models::MiscListSupportedCountriesParams
|
|
359
359
|
|
|
360
|
+
ModerationCategory = Dodopayments::Models::ModerationCategory
|
|
361
|
+
|
|
362
|
+
ModerationCategoryProvenance =
|
|
363
|
+
Dodopayments::Models::ModerationCategoryProvenance
|
|
364
|
+
|
|
365
|
+
ModerationCategoryScores = Dodopayments::Models::ModerationCategoryScores
|
|
366
|
+
|
|
367
|
+
ModerationDecision = Dodopayments::Models::ModerationDecision
|
|
368
|
+
|
|
369
|
+
ModerationProvenance = Dodopayments::Models::ModerationProvenance
|
|
370
|
+
|
|
371
|
+
ModerationRetrieveUsageParams =
|
|
372
|
+
Dodopayments::Models::ModerationRetrieveUsageParams
|
|
373
|
+
|
|
374
|
+
ModerationScreenParams = Dodopayments::Models::ModerationScreenParams
|
|
375
|
+
|
|
360
376
|
NewCustomer = Dodopayments::Models::NewCustomer
|
|
361
377
|
|
|
362
378
|
OnDemandSubscription = Dodopayments::Models::OnDemandSubscription
|
|
@@ -42,6 +42,9 @@ module Dodopayments
|
|
|
42
42
|
).returns(Dodopayments::CheckoutSessionResponse)
|
|
43
43
|
end
|
|
44
44
|
def create(
|
|
45
|
+
# The products of the checkout. A cart holds at most 20 of them, one-time and
|
|
46
|
+
# subscription products together. An empty cart is valid for the
|
|
47
|
+
# product-collection flow, where the customer chooses the product later.
|
|
45
48
|
product_cart:,
|
|
46
49
|
# Customers will never see payment methods that are not in this list. However,
|
|
47
50
|
# adding a method here does not guarantee customers will see it. Availability
|
|
@@ -163,6 +166,9 @@ module Dodopayments
|
|
|
163
166
|
).returns(Dodopayments::Models::CheckoutSessionPreviewResponse)
|
|
164
167
|
end
|
|
165
168
|
def preview(
|
|
169
|
+
# The products of the checkout. A cart holds at most 20 of them, one-time and
|
|
170
|
+
# subscription products together. An empty cart is valid for the
|
|
171
|
+
# product-collection flow, where the customer chooses the product later.
|
|
166
172
|
product_cart:,
|
|
167
173
|
# Customers will never see payment methods that are not in this list. However,
|
|
168
174
|
# adding a method here does not guarantee customers will see it. Availability
|
|
@@ -46,9 +46,11 @@ module Dodopayments
|
|
|
46
46
|
# - If omitted, a random 16-character code is generated.
|
|
47
47
|
code: nil,
|
|
48
48
|
# Per-currency options (flat deduction / percentage cap + minimum subtotal).
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
# `
|
|
49
|
+
# Checkout uses the row for the currency the buyer pays in. For any other currency
|
|
50
|
+
# it converts the default row. Required for `flat` codes (must include a
|
|
51
|
+
# resolvable default); optional per-currency caps for `percentage` codes. Per-row
|
|
52
|
+
# invariants are checked in `normalize_currency_options`, not via
|
|
53
|
+
# `#[validate(nested)]`.
|
|
52
54
|
currency_options: nil,
|
|
53
55
|
# Who may redeem this discount code. Defaults to `any` (unrestricted). `specific`
|
|
54
56
|
# starts with zero attached customers (fails closed) until customers are attached
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Dodopayments
|
|
4
|
+
module Resources
|
|
5
|
+
class Moderation
|
|
6
|
+
# Shows how many billable screens you made and how close you are to your next
|
|
7
|
+
# charge.
|
|
8
|
+
#
|
|
9
|
+
# **Billing.** A billable screen is a live-mode screen that returns a verdict.
|
|
10
|
+
# Dodo Payments charges $0.30 for each full block of 1000 billable screens and
|
|
11
|
+
# debits the fee from your balance. Each full block is charged within one hour.
|
|
12
|
+
# Screens that do not fill a block stay unbilled until they do. Errors and
|
|
13
|
+
# test-mode screens are free and are not counted.
|
|
14
|
+
sig do
|
|
15
|
+
params(request_options: Dodopayments::RequestOptions::OrHash).returns(
|
|
16
|
+
Dodopayments::Models::ModerationRetrieveUsageResponse
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
def retrieve_usage(request_options: {})
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Screens text, an image, or both, and returns a verdict: `allow`, `flag` or
|
|
23
|
+
# `deny`. The API is fail-closed: do not generate when you get no verdict.
|
|
24
|
+
#
|
|
25
|
+
# **Pricing.** Dodo Payments charges $0.30 per 1000 billable screens and debits
|
|
26
|
+
# the fee from your balance. A billable screen is a live-mode screen that returns
|
|
27
|
+
# a verdict. Errors and test-mode screens are free.
|
|
28
|
+
#
|
|
29
|
+
# **429.** Honour `Retry-After` and retry. A 429 is a throughput limit, not a
|
|
30
|
+
# verdict.
|
|
31
|
+
#
|
|
32
|
+
# **Test mode** returns mock verdicts and never calls the model. The default
|
|
33
|
+
# verdict is `allow`. Put one of these strings in `text` to select another
|
|
34
|
+
# outcome: `dodo_mock_flag` (`flag`), `dodo_mock_deny` (`deny`),
|
|
35
|
+
# `dodo_mock_overloaded` (429) or `dodo_mock_not_ready` (503).
|
|
36
|
+
sig do
|
|
37
|
+
params(
|
|
38
|
+
image: T.nilable(String),
|
|
39
|
+
request_id: T.nilable(String),
|
|
40
|
+
text: T.nilable(String),
|
|
41
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
|
42
|
+
).returns(Dodopayments::Models::ModerationScreenResponse)
|
|
43
|
+
end
|
|
44
|
+
def screen(
|
|
45
|
+
# The image to screen, as base64, with or without a `data:image/...;base64,`
|
|
46
|
+
# prefix. The formats are JPEG, PNG, WebP, GIF and BMP. The limit is 6991530
|
|
47
|
+
# base64 characters, and the decoded image must be at most 5 MiB.
|
|
48
|
+
image: nil,
|
|
49
|
+
# Your identifier for this screen, up to 128 characters, with no control
|
|
50
|
+
# characters. The response returns it in `request_id`.
|
|
51
|
+
request_id: nil,
|
|
52
|
+
# The text to screen, up to 8000 characters.
|
|
53
|
+
text: nil,
|
|
54
|
+
request_options: {}
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# @api private
|
|
59
|
+
sig { params(client: Dodopayments::Client).returns(T.attached_class) }
|
|
60
|
+
def self.new(client:)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -5,10 +5,10 @@ module Dodopayments
|
|
|
5
5
|
class Payouts
|
|
6
6
|
class Breakup
|
|
7
7
|
class Details
|
|
8
|
-
# Returns paginated individual balance ledger entries for a payout
|
|
9
|
-
#
|
|
10
|
-
# `page_size` (default 10, max 100) and `page_number` (default 0)
|
|
11
|
-
# parameters.
|
|
8
|
+
# Returns paginated individual balance ledger entries for a payout. Each entry is
|
|
9
|
+
# converted into the payout's currency at the rate the payout settled at. Supports
|
|
10
|
+
# pagination via `page_size` (default 10, max 100) and `page_number` (default 0)
|
|
11
|
+
# query parameters.
|
|
12
12
|
sig do
|
|
13
13
|
params(
|
|
14
14
|
payout_id: String,
|
data/sig/dodopayments/client.rbs
CHANGED
|
@@ -105,6 +105,9 @@ module Dodopayments
|
|
|
105
105
|
| :dispute_fees_reversal
|
|
106
106
|
| :deflection_fees
|
|
107
107
|
| :deflection_fees_reversal
|
|
108
|
+
| :reserve_hold
|
|
109
|
+
| :reserve_release
|
|
110
|
+
| :moderation_fees
|
|
108
111
|
|
|
109
112
|
module EventType
|
|
110
113
|
extend Dodopayments::Internal::Type::Enum
|
|
@@ -137,6 +140,9 @@ module Dodopayments
|
|
|
137
140
|
DISPUTE_FEES_REVERSAL: :dispute_fees_reversal
|
|
138
141
|
DEFLECTION_FEES: :deflection_fees
|
|
139
142
|
DEFLECTION_FEES_REVERSAL: :deflection_fees_reversal
|
|
143
|
+
RESERVE_HOLD: :reserve_hold
|
|
144
|
+
RESERVE_RELEASE: :reserve_release
|
|
145
|
+
MODERATION_FEES: :moderation_fees
|
|
140
146
|
|
|
141
147
|
def self?.values: -> ::Array[Dodopayments::Models::BalanceLedgerEntry::event_type]
|
|
142
148
|
end
|
|
@@ -405,6 +405,9 @@ module Dodopayments
|
|
|
405
405
|
| :dispute_fees_reversal
|
|
406
406
|
| :deflection_fees
|
|
407
407
|
| :deflection_fees_reversal
|
|
408
|
+
| :reserve_hold
|
|
409
|
+
| :reserve_release
|
|
410
|
+
| :moderation_fees
|
|
408
411
|
|
|
409
412
|
module EventType
|
|
410
413
|
extend Dodopayments::Internal::Type::Enum
|
|
@@ -437,6 +440,9 @@ module Dodopayments
|
|
|
437
440
|
DISPUTE_FEES_REVERSAL: :dispute_fees_reversal
|
|
438
441
|
DEFLECTION_FEES: :deflection_fees
|
|
439
442
|
DEFLECTION_FEES_REVERSAL: :deflection_fees_reversal
|
|
443
|
+
RESERVE_HOLD: :reserve_hold
|
|
444
|
+
RESERVE_RELEASE: :reserve_release
|
|
445
|
+
MODERATION_FEES: :moderation_fees
|
|
440
446
|
|
|
441
447
|
def self?.values: -> ::Array[Dodopayments::Models::BalanceRetrieveLedgerParams::event_type]
|
|
442
448
|
end
|