dodopayments 1.51.0 → 1.52.4
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 +18 -0
- data/README.md +1 -1
- data/lib/dodopayments/client.rb +8 -0
- data/lib/dodopayments/models/add_meter_to_price.rb +58 -0
- data/lib/dodopayments/models/event.rb +71 -0
- data/lib/dodopayments/models/event_input.rb +70 -0
- data/lib/dodopayments/models/invoices/payment_retrieve_refund_params.rb +16 -0
- data/lib/dodopayments/models/meter.rb +88 -0
- data/lib/dodopayments/models/meter_aggregation.rb +40 -0
- data/lib/dodopayments/models/meter_archive_params.rb +14 -0
- data/lib/dodopayments/models/meter_create_params.rb +62 -0
- data/lib/dodopayments/models/meter_filter.rb +482 -0
- data/lib/dodopayments/models/meter_list_params.rb +38 -0
- data/lib/dodopayments/models/{product_delete_params.rb → meter_retrieve_params.rb} +2 -2
- data/lib/dodopayments/models/meter_unarchive_params.rb +14 -0
- data/lib/dodopayments/models/price.rb +122 -7
- data/lib/dodopayments/models/product.rb +2 -2
- data/lib/dodopayments/models/product_archive_params.rb +14 -0
- data/lib/dodopayments/models/product_create_params.rb +2 -2
- data/lib/dodopayments/models/product_list_response.rb +2 -2
- data/lib/dodopayments/models/product_update_params.rb +2 -2
- data/lib/dodopayments/models/subscription_retrieve_usage_history_params.rb +54 -0
- data/lib/dodopayments/models/subscription_retrieve_usage_history_response.rb +101 -0
- data/lib/dodopayments/models/usage_event_ingest_params.rb +22 -0
- data/lib/dodopayments/models/usage_event_ingest_response.rb +16 -0
- data/lib/dodopayments/models/usage_event_list_params.rb +75 -0
- data/lib/dodopayments/models/usage_event_retrieve_params.rb +14 -0
- data/lib/dodopayments/models.rb +32 -2
- data/lib/dodopayments/resources/invoices/payments.rb +18 -0
- data/lib/dodopayments/resources/meters.rb +123 -0
- data/lib/dodopayments/resources/products.rb +5 -5
- data/lib/dodopayments/resources/subscriptions.rb +74 -0
- data/lib/dodopayments/resources/usage_events.rb +193 -0
- data/lib/dodopayments/version.rb +1 -1
- data/lib/dodopayments.rb +21 -1
- data/rbi/dodopayments/client.rbi +6 -0
- data/rbi/dodopayments/models/add_meter_to_price.rbi +75 -0
- data/rbi/dodopayments/models/event.rbi +88 -0
- data/rbi/dodopayments/models/event_input.rbi +102 -0
- data/rbi/dodopayments/models/invoices/payment_retrieve_refund_params.rbi +34 -0
- data/rbi/dodopayments/models/meter.rbi +107 -0
- data/rbi/dodopayments/models/meter_aggregation.rbi +73 -0
- data/rbi/dodopayments/models/meter_archive_params.rbi +32 -0
- data/rbi/dodopayments/models/meter_create_params.rbi +92 -0
- data/rbi/dodopayments/models/meter_filter.rbi +1042 -0
- data/rbi/dodopayments/models/meter_list_params.rbi +68 -0
- data/rbi/dodopayments/models/{product_delete_params.rbi → meter_retrieve_params.rbi} +2 -2
- data/rbi/dodopayments/models/meter_unarchive_params.rbi +32 -0
- data/rbi/dodopayments/models/price.rbi +153 -7
- data/rbi/dodopayments/models/product.rbi +2 -1
- data/rbi/dodopayments/models/product_archive_params.rbi +32 -0
- data/rbi/dodopayments/models/product_create_params.rbi +6 -3
- data/rbi/dodopayments/models/product_list_response.rbi +2 -1
- data/rbi/dodopayments/models/product_update_params.rbi +6 -3
- data/rbi/dodopayments/models/subscription_retrieve_usage_history_params.rbi +78 -0
- data/rbi/dodopayments/models/subscription_retrieve_usage_history_response.rbi +159 -0
- data/rbi/dodopayments/models/usage_event_ingest_params.rbi +46 -0
- data/rbi/dodopayments/models/usage_event_ingest_response.rbi +26 -0
- data/rbi/dodopayments/models/usage_event_list_params.rbi +119 -0
- data/rbi/dodopayments/models/usage_event_retrieve_params.rbi +32 -0
- data/rbi/dodopayments/models.rbi +33 -2
- data/rbi/dodopayments/resources/invoices/payments.rbi +9 -0
- data/rbi/dodopayments/resources/meters.rbi +102 -0
- data/rbi/dodopayments/resources/products.rbi +5 -3
- data/rbi/dodopayments/resources/subscriptions.rbi +74 -0
- data/rbi/dodopayments/resources/usage_events.rbi +175 -0
- data/sig/dodopayments/client.rbs +4 -0
- data/sig/dodopayments/models/add_meter_to_price.rbs +45 -0
- data/sig/dodopayments/models/event.rbs +53 -0
- data/sig/dodopayments/models/event_input.rbs +48 -0
- data/sig/dodopayments/models/invoices/payment_retrieve_refund_params.rbs +17 -0
- data/sig/dodopayments/models/meter.rbs +65 -0
- data/sig/dodopayments/models/meter_aggregation.rbs +36 -0
- data/sig/dodopayments/models/meter_archive_params.rbs +15 -0
- data/sig/dodopayments/models/meter_create_params.rbs +51 -0
- data/sig/dodopayments/models/meter_filter.rbs +417 -0
- data/sig/dodopayments/models/meter_list_params.rbs +38 -0
- data/sig/dodopayments/models/{product_delete_params.rbs → meter_retrieve_params.rbs} +2 -2
- data/sig/dodopayments/models/meter_unarchive_params.rbs +15 -0
- data/sig/dodopayments/models/price.rbs +88 -9
- data/sig/dodopayments/models/product_archive_params.rbs +15 -0
- data/sig/dodopayments/models/subscription_retrieve_usage_history_params.rbs +46 -0
- data/sig/dodopayments/models/subscription_retrieve_usage_history_response.rbs +82 -0
- data/sig/dodopayments/models/usage_event_ingest_params.rbs +24 -0
- data/sig/dodopayments/models/usage_event_ingest_response.rbs +13 -0
- data/sig/dodopayments/models/usage_event_list_params.rbs +70 -0
- data/sig/dodopayments/models/usage_event_retrieve_params.rbs +15 -0
- data/sig/dodopayments/models.rbs +32 -2
- data/sig/dodopayments/resources/invoices/payments.rbs +5 -0
- data/sig/dodopayments/resources/meters.rbs +39 -0
- data/sig/dodopayments/resources/products.rbs +1 -1
- data/sig/dodopayments/resources/subscriptions.rbs +10 -0
- data/sig/dodopayments/resources/usage_events.rbs +28 -0
- metadata +65 -5
@@ -0,0 +1,46 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class UsageEventIngestParams < 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::UsageEventIngestParams,
|
13
|
+
Dodopayments::Internal::AnyHash
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
# List of events to be pushed
|
18
|
+
sig { returns(T::Array[Dodopayments::EventInput]) }
|
19
|
+
attr_accessor :events
|
20
|
+
|
21
|
+
sig do
|
22
|
+
params(
|
23
|
+
events: T::Array[Dodopayments::EventInput::OrHash],
|
24
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
25
|
+
).returns(T.attached_class)
|
26
|
+
end
|
27
|
+
def self.new(
|
28
|
+
# List of events to be pushed
|
29
|
+
events:,
|
30
|
+
request_options: {}
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
sig do
|
35
|
+
override.returns(
|
36
|
+
{
|
37
|
+
events: T::Array[Dodopayments::EventInput],
|
38
|
+
request_options: Dodopayments::RequestOptions
|
39
|
+
}
|
40
|
+
)
|
41
|
+
end
|
42
|
+
def to_hash
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class UsageEventIngestResponse < Dodopayments::Internal::Type::BaseModel
|
6
|
+
OrHash =
|
7
|
+
T.type_alias do
|
8
|
+
T.any(
|
9
|
+
Dodopayments::Models::UsageEventIngestResponse,
|
10
|
+
Dodopayments::Internal::AnyHash
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
sig { returns(Integer) }
|
15
|
+
attr_accessor :ingested_count
|
16
|
+
|
17
|
+
sig { params(ingested_count: Integer).returns(T.attached_class) }
|
18
|
+
def self.new(ingested_count:)
|
19
|
+
end
|
20
|
+
|
21
|
+
sig { override.returns({ ingested_count: Integer }) }
|
22
|
+
def to_hash
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class UsageEventListParams < 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::UsageEventListParams,
|
13
|
+
Dodopayments::Internal::AnyHash
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Filter events by customer ID
|
18
|
+
sig { returns(T.nilable(String)) }
|
19
|
+
attr_reader :customer_id
|
20
|
+
|
21
|
+
sig { params(customer_id: String).void }
|
22
|
+
attr_writer :customer_id
|
23
|
+
|
24
|
+
# Filter events created before this timestamp
|
25
|
+
sig { returns(T.nilable(Time)) }
|
26
|
+
attr_reader :end_
|
27
|
+
|
28
|
+
sig { params(end_: Time).void }
|
29
|
+
attr_writer :end_
|
30
|
+
|
31
|
+
# Filter events by event name. If both event_name and meter_id are provided, they
|
32
|
+
# must match the meter's configured event_name
|
33
|
+
sig { returns(T.nilable(String)) }
|
34
|
+
attr_reader :event_name
|
35
|
+
|
36
|
+
sig { params(event_name: String).void }
|
37
|
+
attr_writer :event_name
|
38
|
+
|
39
|
+
# Filter events by meter ID. When provided, only events that match the meter's
|
40
|
+
# event_name and filter criteria will be returned
|
41
|
+
sig { returns(T.nilable(String)) }
|
42
|
+
attr_reader :meter_id
|
43
|
+
|
44
|
+
sig { params(meter_id: String).void }
|
45
|
+
attr_writer :meter_id
|
46
|
+
|
47
|
+
# Page number (0-based, default: 0)
|
48
|
+
sig { returns(T.nilable(Integer)) }
|
49
|
+
attr_reader :page_number
|
50
|
+
|
51
|
+
sig { params(page_number: Integer).void }
|
52
|
+
attr_writer :page_number
|
53
|
+
|
54
|
+
# Number of events to return per page (default: 10)
|
55
|
+
sig { returns(T.nilable(Integer)) }
|
56
|
+
attr_reader :page_size
|
57
|
+
|
58
|
+
sig { params(page_size: Integer).void }
|
59
|
+
attr_writer :page_size
|
60
|
+
|
61
|
+
# Filter events created after this timestamp
|
62
|
+
sig { returns(T.nilable(Time)) }
|
63
|
+
attr_reader :start
|
64
|
+
|
65
|
+
sig { params(start: Time).void }
|
66
|
+
attr_writer :start
|
67
|
+
|
68
|
+
sig do
|
69
|
+
params(
|
70
|
+
customer_id: String,
|
71
|
+
end_: Time,
|
72
|
+
event_name: String,
|
73
|
+
meter_id: String,
|
74
|
+
page_number: Integer,
|
75
|
+
page_size: Integer,
|
76
|
+
start: Time,
|
77
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
78
|
+
).returns(T.attached_class)
|
79
|
+
end
|
80
|
+
def self.new(
|
81
|
+
# Filter events by customer ID
|
82
|
+
customer_id: nil,
|
83
|
+
# Filter events created before this timestamp
|
84
|
+
end_: nil,
|
85
|
+
# Filter events by event name. If both event_name and meter_id are provided, they
|
86
|
+
# must match the meter's configured event_name
|
87
|
+
event_name: nil,
|
88
|
+
# Filter events by meter ID. When provided, only events that match the meter's
|
89
|
+
# event_name and filter criteria will be returned
|
90
|
+
meter_id: nil,
|
91
|
+
# Page number (0-based, default: 0)
|
92
|
+
page_number: nil,
|
93
|
+
# Number of events to return per page (default: 10)
|
94
|
+
page_size: nil,
|
95
|
+
# Filter events created after this timestamp
|
96
|
+
start: nil,
|
97
|
+
request_options: {}
|
98
|
+
)
|
99
|
+
end
|
100
|
+
|
101
|
+
sig do
|
102
|
+
override.returns(
|
103
|
+
{
|
104
|
+
customer_id: String,
|
105
|
+
end_: Time,
|
106
|
+
event_name: String,
|
107
|
+
meter_id: String,
|
108
|
+
page_number: Integer,
|
109
|
+
page_size: Integer,
|
110
|
+
start: Time,
|
111
|
+
request_options: Dodopayments::RequestOptions
|
112
|
+
}
|
113
|
+
)
|
114
|
+
end
|
115
|
+
def to_hash
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class UsageEventRetrieveParams < 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::UsageEventRetrieveParams,
|
13
|
+
Dodopayments::Internal::AnyHash
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
sig do
|
18
|
+
params(request_options: Dodopayments::RequestOptions::OrHash).returns(
|
19
|
+
T.attached_class
|
20
|
+
)
|
21
|
+
end
|
22
|
+
def self.new(request_options: {})
|
23
|
+
end
|
24
|
+
|
25
|
+
sig do
|
26
|
+
override.returns({ request_options: Dodopayments::RequestOptions })
|
27
|
+
end
|
28
|
+
def to_hash
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/rbi/dodopayments/models.rbi
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# typed: strong
|
2
2
|
|
3
3
|
module Dodopayments
|
4
|
+
AddMeterToPrice = Dodopayments::Models::AddMeterToPrice
|
5
|
+
|
4
6
|
AddonCartResponseItem = Dodopayments::Models::AddonCartResponseItem
|
5
7
|
|
6
8
|
AddonCreateParams = Dodopayments::Models::AddonCreateParams
|
@@ -88,6 +90,10 @@ module Dodopayments
|
|
88
90
|
|
89
91
|
DisputeStatus = Dodopayments::Models::DisputeStatus
|
90
92
|
|
93
|
+
Event = Dodopayments::Models::Event
|
94
|
+
|
95
|
+
EventInput = Dodopayments::Models::EventInput
|
96
|
+
|
91
97
|
GetDispute = Dodopayments::Models::GetDispute
|
92
98
|
|
93
99
|
IntentStatus = Dodopayments::Models::IntentStatus
|
@@ -123,6 +129,22 @@ module Dodopayments
|
|
123
129
|
|
124
130
|
LicenseValidateParams = Dodopayments::Models::LicenseValidateParams
|
125
131
|
|
132
|
+
Meter = Dodopayments::Models::Meter
|
133
|
+
|
134
|
+
MeterAggregation = Dodopayments::Models::MeterAggregation
|
135
|
+
|
136
|
+
MeterArchiveParams = Dodopayments::Models::MeterArchiveParams
|
137
|
+
|
138
|
+
MeterCreateParams = Dodopayments::Models::MeterCreateParams
|
139
|
+
|
140
|
+
MeterFilter = Dodopayments::Models::MeterFilter
|
141
|
+
|
142
|
+
MeterListParams = Dodopayments::Models::MeterListParams
|
143
|
+
|
144
|
+
MeterRetrieveParams = Dodopayments::Models::MeterRetrieveParams
|
145
|
+
|
146
|
+
MeterUnarchiveParams = Dodopayments::Models::MeterUnarchiveParams
|
147
|
+
|
126
148
|
MiscListSupportedCountriesParams =
|
127
149
|
Dodopayments::Models::MiscListSupportedCountriesParams
|
128
150
|
|
@@ -151,9 +173,9 @@ module Dodopayments
|
|
151
173
|
|
152
174
|
Product = Dodopayments::Models::Product
|
153
175
|
|
154
|
-
|
176
|
+
ProductArchiveParams = Dodopayments::Models::ProductArchiveParams
|
155
177
|
|
156
|
-
|
178
|
+
ProductCreateParams = Dodopayments::Models::ProductCreateParams
|
157
179
|
|
158
180
|
ProductListParams = Dodopayments::Models::ProductListParams
|
159
181
|
|
@@ -190,6 +212,9 @@ module Dodopayments
|
|
190
212
|
|
191
213
|
SubscriptionRetrieveParams = Dodopayments::Models::SubscriptionRetrieveParams
|
192
214
|
|
215
|
+
SubscriptionRetrieveUsageHistoryParams =
|
216
|
+
Dodopayments::Models::SubscriptionRetrieveUsageHistoryParams
|
217
|
+
|
193
218
|
SubscriptionStatus = Dodopayments::Models::SubscriptionStatus
|
194
219
|
|
195
220
|
SubscriptionUpdateParams = Dodopayments::Models::SubscriptionUpdateParams
|
@@ -198,6 +223,12 @@ module Dodopayments
|
|
198
223
|
|
199
224
|
TimeInterval = Dodopayments::Models::TimeInterval
|
200
225
|
|
226
|
+
UsageEventIngestParams = Dodopayments::Models::UsageEventIngestParams
|
227
|
+
|
228
|
+
UsageEventListParams = Dodopayments::Models::UsageEventListParams
|
229
|
+
|
230
|
+
UsageEventRetrieveParams = Dodopayments::Models::UsageEventRetrieveParams
|
231
|
+
|
201
232
|
WebhookCreateParams = Dodopayments::Models::WebhookCreateParams
|
202
233
|
|
203
234
|
WebhookDeleteParams = Dodopayments::Models::WebhookDeleteParams
|
@@ -13,6 +13,15 @@ module Dodopayments
|
|
13
13
|
def retrieve(payment_id, request_options: {})
|
14
14
|
end
|
15
15
|
|
16
|
+
sig do
|
17
|
+
params(
|
18
|
+
refund_id: String,
|
19
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
20
|
+
).returns(StringIO)
|
21
|
+
end
|
22
|
+
def retrieve_refund(refund_id, request_options: {})
|
23
|
+
end
|
24
|
+
|
16
25
|
# @api private
|
17
26
|
sig { params(client: Dodopayments::Client).returns(T.attached_class) }
|
18
27
|
def self.new(client:)
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Resources
|
5
|
+
class Meters
|
6
|
+
sig do
|
7
|
+
params(
|
8
|
+
aggregation: Dodopayments::MeterAggregation::OrHash,
|
9
|
+
event_name: String,
|
10
|
+
measurement_unit: String,
|
11
|
+
name: String,
|
12
|
+
description: T.nilable(String),
|
13
|
+
filter: T.nilable(Dodopayments::MeterFilter::OrHash),
|
14
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
15
|
+
).returns(Dodopayments::Meter)
|
16
|
+
end
|
17
|
+
def create(
|
18
|
+
# Aggregation configuration for the meter
|
19
|
+
aggregation:,
|
20
|
+
# Event name to track
|
21
|
+
event_name:,
|
22
|
+
# measurement unit
|
23
|
+
measurement_unit:,
|
24
|
+
# Name of the meter
|
25
|
+
name:,
|
26
|
+
# Optional description of the meter
|
27
|
+
description: nil,
|
28
|
+
# Optional filter to apply to the meter
|
29
|
+
filter: nil,
|
30
|
+
request_options: {}
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
sig do
|
35
|
+
params(
|
36
|
+
id: String,
|
37
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
38
|
+
).returns(Dodopayments::Meter)
|
39
|
+
end
|
40
|
+
def retrieve(
|
41
|
+
# Meter ID
|
42
|
+
id,
|
43
|
+
request_options: {}
|
44
|
+
)
|
45
|
+
end
|
46
|
+
|
47
|
+
sig do
|
48
|
+
params(
|
49
|
+
archived: T::Boolean,
|
50
|
+
page_number: Integer,
|
51
|
+
page_size: Integer,
|
52
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
53
|
+
).returns(
|
54
|
+
Dodopayments::Internal::DefaultPageNumberPagination[
|
55
|
+
Dodopayments::Meter
|
56
|
+
]
|
57
|
+
)
|
58
|
+
end
|
59
|
+
def list(
|
60
|
+
# List archived meters
|
61
|
+
archived: nil,
|
62
|
+
# Page number default is 0
|
63
|
+
page_number: nil,
|
64
|
+
# Page size default is 10 max is 100
|
65
|
+
page_size: nil,
|
66
|
+
request_options: {}
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
sig do
|
71
|
+
params(
|
72
|
+
id: String,
|
73
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
74
|
+
).void
|
75
|
+
end
|
76
|
+
def archive(
|
77
|
+
# Meter ID
|
78
|
+
id,
|
79
|
+
request_options: {}
|
80
|
+
)
|
81
|
+
end
|
82
|
+
|
83
|
+
sig do
|
84
|
+
params(
|
85
|
+
id: String,
|
86
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
87
|
+
).void
|
88
|
+
end
|
89
|
+
def unarchive(
|
90
|
+
# Meter ID
|
91
|
+
id,
|
92
|
+
request_options: {}
|
93
|
+
)
|
94
|
+
end
|
95
|
+
|
96
|
+
# @api private
|
97
|
+
sig { params(client: Dodopayments::Client).returns(T.attached_class) }
|
98
|
+
def self.new(client:)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -11,7 +11,8 @@ module Dodopayments
|
|
11
11
|
price:
|
12
12
|
T.any(
|
13
13
|
Dodopayments::Price::OneTimePrice::OrHash,
|
14
|
-
Dodopayments::Price::RecurringPrice::OrHash
|
14
|
+
Dodopayments::Price::RecurringPrice::OrHash,
|
15
|
+
Dodopayments::Price::UsageBasedPrice::OrHash
|
15
16
|
),
|
16
17
|
tax_category: Dodopayments::TaxCategory::OrSymbol,
|
17
18
|
addons: T.nilable(T::Array[String]),
|
@@ -97,7 +98,8 @@ module Dodopayments
|
|
97
98
|
T.nilable(
|
98
99
|
T.any(
|
99
100
|
Dodopayments::Price::OneTimePrice::OrHash,
|
100
|
-
Dodopayments::Price::RecurringPrice::OrHash
|
101
|
+
Dodopayments::Price::RecurringPrice::OrHash,
|
102
|
+
Dodopayments::Price::UsageBasedPrice::OrHash
|
101
103
|
)
|
102
104
|
),
|
103
105
|
tax_category: T.nilable(Dodopayments::TaxCategory::OrSymbol),
|
@@ -186,7 +188,7 @@ module Dodopayments
|
|
186
188
|
request_options: Dodopayments::RequestOptions::OrHash
|
187
189
|
).void
|
188
190
|
end
|
189
|
-
def
|
191
|
+
def archive(id, request_options: {})
|
190
192
|
end
|
191
193
|
|
192
194
|
sig do
|
@@ -210,6 +210,80 @@ module Dodopayments
|
|
210
210
|
)
|
211
211
|
end
|
212
212
|
|
213
|
+
# Get detailed usage history for a subscription that includes usage-based billing
|
214
|
+
# (metered components). This endpoint provides insights into customer usage
|
215
|
+
# patterns and billing calculations over time.
|
216
|
+
#
|
217
|
+
# ## What You'll Get:
|
218
|
+
#
|
219
|
+
# - **Billing periods**: Each item represents a billing cycle with start and end
|
220
|
+
# dates
|
221
|
+
# - **Meter usage**: Detailed breakdown of usage for each meter configured on the
|
222
|
+
# subscription
|
223
|
+
# - **Usage calculations**: Total units consumed, free threshold units, and
|
224
|
+
# chargeable units
|
225
|
+
# - **Historical tracking**: Complete audit trail of usage-based charges
|
226
|
+
#
|
227
|
+
# ## Use Cases:
|
228
|
+
#
|
229
|
+
# - **Customer support**: Investigate billing questions and usage discrepancies
|
230
|
+
# - **Usage analytics**: Analyze customer consumption patterns over time
|
231
|
+
# - **Billing transparency**: Provide customers with detailed usage breakdowns
|
232
|
+
# - **Revenue optimization**: Identify usage trends to optimize pricing strategies
|
233
|
+
#
|
234
|
+
# ## Filtering Options:
|
235
|
+
#
|
236
|
+
# - **Date range filtering**: Get usage history for specific time periods
|
237
|
+
# - **Meter-specific filtering**: Focus on usage for a particular meter
|
238
|
+
# - **Pagination**: Navigate through large usage histories efficiently
|
239
|
+
#
|
240
|
+
# ## Important Notes:
|
241
|
+
#
|
242
|
+
# - Only returns data for subscriptions with usage-based (metered) components
|
243
|
+
# - Usage history is organized by billing periods (subscription cycles)
|
244
|
+
# - Free threshold units are calculated and displayed separately from chargeable
|
245
|
+
# units
|
246
|
+
# - Historical data is preserved even if meter configurations change
|
247
|
+
#
|
248
|
+
# ## Example Query Patterns:
|
249
|
+
#
|
250
|
+
# - Get last 3 months:
|
251
|
+
# `?start_date=2024-01-01T00:00:00Z&end_date=2024-03-31T23:59:59Z`
|
252
|
+
# - Filter by meter: `?meter_id=mtr_api_requests`
|
253
|
+
# - Paginate results: `?page_size=20&page_number=1`
|
254
|
+
# - Recent usage: `?start_date=2024-03-01T00:00:00Z` (from March 1st to now)
|
255
|
+
sig do
|
256
|
+
params(
|
257
|
+
subscription_id: String,
|
258
|
+
end_date: T.nilable(Time),
|
259
|
+
meter_id: T.nilable(String),
|
260
|
+
page_number: T.nilable(Integer),
|
261
|
+
page_size: T.nilable(Integer),
|
262
|
+
start_date: T.nilable(Time),
|
263
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
264
|
+
).returns(
|
265
|
+
Dodopayments::Internal::DefaultPageNumberPagination[
|
266
|
+
Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse
|
267
|
+
]
|
268
|
+
)
|
269
|
+
end
|
270
|
+
def retrieve_usage_history(
|
271
|
+
# Unique subscription identifier
|
272
|
+
subscription_id,
|
273
|
+
# Filter by end date (inclusive)
|
274
|
+
end_date: nil,
|
275
|
+
# Filter by specific meter ID
|
276
|
+
meter_id: nil,
|
277
|
+
# Page number (default: 0)
|
278
|
+
page_number: nil,
|
279
|
+
# Page size (default: 10, max: 100)
|
280
|
+
page_size: nil,
|
281
|
+
# Filter by start date (inclusive)
|
282
|
+
start_date: nil,
|
283
|
+
request_options: {}
|
284
|
+
)
|
285
|
+
end
|
286
|
+
|
213
287
|
# @api private
|
214
288
|
sig { params(client: Dodopayments::Client).returns(T.attached_class) }
|
215
289
|
def self.new(client:)
|
@@ -0,0 +1,175 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Resources
|
5
|
+
class UsageEvents
|
6
|
+
# Fetch detailed information about a single event using its unique event ID. This
|
7
|
+
# endpoint is useful for:
|
8
|
+
#
|
9
|
+
# - Debugging specific event ingestion issues
|
10
|
+
# - Retrieving event details for customer support
|
11
|
+
# - Validating that events were processed correctly
|
12
|
+
# - Getting the complete metadata for an event
|
13
|
+
#
|
14
|
+
# ## Event ID Format:
|
15
|
+
#
|
16
|
+
# The event ID should be the same value that was provided during event ingestion
|
17
|
+
# via the `/events/ingest` endpoint. Event IDs are case-sensitive and must match
|
18
|
+
# exactly.
|
19
|
+
#
|
20
|
+
# ## Response Details:
|
21
|
+
#
|
22
|
+
# The response includes all event data including:
|
23
|
+
#
|
24
|
+
# - Complete metadata key-value pairs
|
25
|
+
# - Original timestamp (preserved from ingestion)
|
26
|
+
# - Customer and business association
|
27
|
+
# - Event name and processing information
|
28
|
+
#
|
29
|
+
# ## Example Usage:
|
30
|
+
#
|
31
|
+
# ```text
|
32
|
+
# GET /events/api_call_12345
|
33
|
+
# ```
|
34
|
+
sig do
|
35
|
+
params(
|
36
|
+
event_id: String,
|
37
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
38
|
+
).returns(Dodopayments::Event)
|
39
|
+
end
|
40
|
+
def retrieve(
|
41
|
+
# Unique event identifier (case-sensitive, must match the ID used during
|
42
|
+
# ingestion)
|
43
|
+
event_id,
|
44
|
+
request_options: {}
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Fetch events from your account with powerful filtering capabilities. This
|
49
|
+
# endpoint is ideal for:
|
50
|
+
#
|
51
|
+
# - Debugging event ingestion issues
|
52
|
+
# - Analyzing customer usage patterns
|
53
|
+
# - Building custom analytics dashboards
|
54
|
+
# - Auditing billing-related events
|
55
|
+
#
|
56
|
+
# ## Filtering Options:
|
57
|
+
#
|
58
|
+
# - **Customer filtering**: Filter by specific customer ID
|
59
|
+
# - **Event name filtering**: Filter by event type/name
|
60
|
+
# - **Meter-based filtering**: Use a meter ID to apply the meter's event name and
|
61
|
+
# filter criteria automatically
|
62
|
+
# - **Time range filtering**: Filter events within a specific date range
|
63
|
+
# - **Pagination**: Navigate through large result sets
|
64
|
+
#
|
65
|
+
# ## Meter Integration:
|
66
|
+
#
|
67
|
+
# When using `meter_id`, the endpoint automatically applies:
|
68
|
+
#
|
69
|
+
# - The meter's configured `event_name` filter
|
70
|
+
# - The meter's custom filter criteria (if any)
|
71
|
+
# - If you also provide `event_name`, it must match the meter's event name
|
72
|
+
#
|
73
|
+
# ## Example Queries:
|
74
|
+
#
|
75
|
+
# - Get all events for a customer: `?customer_id=cus_abc123`
|
76
|
+
# - Get API request events: `?event_name=api_request`
|
77
|
+
# - Get events from last 24 hours:
|
78
|
+
# `?start=2024-01-14T10:30:00Z&end=2024-01-15T10:30:00Z`
|
79
|
+
# - Get events with meter filtering: `?meter_id=mtr_xyz789`
|
80
|
+
# - Paginate results: `?page_size=50&page_number=2`
|
81
|
+
sig do
|
82
|
+
params(
|
83
|
+
customer_id: String,
|
84
|
+
end_: Time,
|
85
|
+
event_name: String,
|
86
|
+
meter_id: String,
|
87
|
+
page_number: Integer,
|
88
|
+
page_size: Integer,
|
89
|
+
start: Time,
|
90
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
91
|
+
).returns(
|
92
|
+
Dodopayments::Internal::DefaultPageNumberPagination[
|
93
|
+
Dodopayments::Event
|
94
|
+
]
|
95
|
+
)
|
96
|
+
end
|
97
|
+
def list(
|
98
|
+
# Filter events by customer ID
|
99
|
+
customer_id: nil,
|
100
|
+
# Filter events created before this timestamp
|
101
|
+
end_: nil,
|
102
|
+
# Filter events by event name. If both event_name and meter_id are provided, they
|
103
|
+
# must match the meter's configured event_name
|
104
|
+
event_name: nil,
|
105
|
+
# Filter events by meter ID. When provided, only events that match the meter's
|
106
|
+
# event_name and filter criteria will be returned
|
107
|
+
meter_id: nil,
|
108
|
+
# Page number (0-based, default: 0)
|
109
|
+
page_number: nil,
|
110
|
+
# Number of events to return per page (default: 10)
|
111
|
+
page_size: nil,
|
112
|
+
# Filter events created after this timestamp
|
113
|
+
start: nil,
|
114
|
+
request_options: {}
|
115
|
+
)
|
116
|
+
end
|
117
|
+
|
118
|
+
# This endpoint allows you to ingest custom events that can be used for:
|
119
|
+
#
|
120
|
+
# - Usage-based billing and metering
|
121
|
+
# - Analytics and reporting
|
122
|
+
# - Customer behavior tracking
|
123
|
+
#
|
124
|
+
# ## Important Notes:
|
125
|
+
#
|
126
|
+
# - **Duplicate Prevention**:
|
127
|
+
# - Duplicate `event_id` values within the same request are rejected (entire
|
128
|
+
# request fails)
|
129
|
+
# - Subsequent requests with existing `event_id` values are ignored (idempotent
|
130
|
+
# behavior)
|
131
|
+
# - **Rate Limiting**: Maximum 1000 events per request
|
132
|
+
# - **Time Validation**: Events with timestamps older than 1 hour or more than 5
|
133
|
+
# minutes in the future will be rejected
|
134
|
+
# - **Metadata Limits**: Maximum 50 key-value pairs per event, keys max 100 chars,
|
135
|
+
# values max 500 chars
|
136
|
+
#
|
137
|
+
# ## Example Usage:
|
138
|
+
#
|
139
|
+
# ```json
|
140
|
+
# {
|
141
|
+
# "events": [
|
142
|
+
# {
|
143
|
+
# "event_id": "api_call_12345",
|
144
|
+
# "customer_id": "cus_abc123",
|
145
|
+
# "event_name": "api_request",
|
146
|
+
# "timestamp": "2024-01-15T10:30:00Z",
|
147
|
+
# "metadata": {
|
148
|
+
# "endpoint": "/api/v1/users",
|
149
|
+
# "method": "GET",
|
150
|
+
# "tokens_used": "150"
|
151
|
+
# }
|
152
|
+
# }
|
153
|
+
# ]
|
154
|
+
# }
|
155
|
+
# ```
|
156
|
+
sig do
|
157
|
+
params(
|
158
|
+
events: T::Array[Dodopayments::EventInput::OrHash],
|
159
|
+
request_options: Dodopayments::RequestOptions::OrHash
|
160
|
+
).returns(Dodopayments::Models::UsageEventIngestResponse)
|
161
|
+
end
|
162
|
+
def ingest(
|
163
|
+
# List of events to be pushed
|
164
|
+
events:,
|
165
|
+
request_options: {}
|
166
|
+
)
|
167
|
+
end
|
168
|
+
|
169
|
+
# @api private
|
170
|
+
sig { params(client: Dodopayments::Client).returns(T.attached_class) }
|
171
|
+
def self.new(client:)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|