dodopayments 1.51.1 → 1.52.5
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 +39 -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/payment.rb +10 -1
- 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.rb +57 -1
- 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 +68 -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/payment.rbi +10 -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.rbi +78 -0
- 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 +35 -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/payment.rbs +5 -0
- data/sig/dodopayments/models/price.rbs +88 -9
- data/sig/dodopayments/models/product_archive_params.rbs +15 -0
- data/sig/dodopayments/models/subscription.rbs +52 -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,159 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class SubscriptionRetrieveUsageHistoryResponse < Dodopayments::Internal::Type::BaseModel
|
6
|
+
OrHash =
|
7
|
+
T.type_alias do
|
8
|
+
T.any(
|
9
|
+
Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse,
|
10
|
+
Dodopayments::Internal::AnyHash
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
# End date of the billing period
|
15
|
+
sig { returns(Time) }
|
16
|
+
attr_accessor :end_date
|
17
|
+
|
18
|
+
# List of meters and their usage for this billing period
|
19
|
+
sig do
|
20
|
+
returns(
|
21
|
+
T::Array[
|
22
|
+
Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse::Meter
|
23
|
+
]
|
24
|
+
)
|
25
|
+
end
|
26
|
+
attr_accessor :meters
|
27
|
+
|
28
|
+
# Start date of the billing period
|
29
|
+
sig { returns(Time) }
|
30
|
+
attr_accessor :start_date
|
31
|
+
|
32
|
+
sig do
|
33
|
+
params(
|
34
|
+
end_date: Time,
|
35
|
+
meters:
|
36
|
+
T::Array[
|
37
|
+
Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse::Meter::OrHash
|
38
|
+
],
|
39
|
+
start_date: Time
|
40
|
+
).returns(T.attached_class)
|
41
|
+
end
|
42
|
+
def self.new(
|
43
|
+
# End date of the billing period
|
44
|
+
end_date:,
|
45
|
+
# List of meters and their usage for this billing period
|
46
|
+
meters:,
|
47
|
+
# Start date of the billing period
|
48
|
+
start_date:
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
sig do
|
53
|
+
override.returns(
|
54
|
+
{
|
55
|
+
end_date: Time,
|
56
|
+
meters:
|
57
|
+
T::Array[
|
58
|
+
Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse::Meter
|
59
|
+
],
|
60
|
+
start_date: Time
|
61
|
+
}
|
62
|
+
)
|
63
|
+
end
|
64
|
+
def to_hash
|
65
|
+
end
|
66
|
+
|
67
|
+
class Meter < Dodopayments::Internal::Type::BaseModel
|
68
|
+
OrHash =
|
69
|
+
T.type_alias do
|
70
|
+
T.any(
|
71
|
+
Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse::Meter,
|
72
|
+
Dodopayments::Internal::AnyHash
|
73
|
+
)
|
74
|
+
end
|
75
|
+
|
76
|
+
# Meter identifier
|
77
|
+
sig { returns(String) }
|
78
|
+
attr_accessor :id
|
79
|
+
|
80
|
+
# Chargeable units (after free threshold) as string for precision
|
81
|
+
sig { returns(String) }
|
82
|
+
attr_accessor :chargeable_units
|
83
|
+
|
84
|
+
# Total units consumed as string for precision
|
85
|
+
sig { returns(String) }
|
86
|
+
attr_accessor :consumed_units
|
87
|
+
|
88
|
+
# Currency for the price per unit
|
89
|
+
sig { returns(Dodopayments::Currency::TaggedSymbol) }
|
90
|
+
attr_accessor :currency
|
91
|
+
|
92
|
+
# Free threshold units for this meter
|
93
|
+
sig { returns(Integer) }
|
94
|
+
attr_accessor :free_threshold
|
95
|
+
|
96
|
+
# Meter name
|
97
|
+
sig { returns(String) }
|
98
|
+
attr_accessor :name
|
99
|
+
|
100
|
+
# Price per unit in string format for precision
|
101
|
+
sig { returns(String) }
|
102
|
+
attr_accessor :price_per_unit
|
103
|
+
|
104
|
+
# Total price charged for this meter in smallest currency unit (cents)
|
105
|
+
sig { returns(Integer) }
|
106
|
+
attr_accessor :total_price
|
107
|
+
|
108
|
+
sig do
|
109
|
+
params(
|
110
|
+
id: String,
|
111
|
+
chargeable_units: String,
|
112
|
+
consumed_units: String,
|
113
|
+
currency: Dodopayments::Currency::OrSymbol,
|
114
|
+
free_threshold: Integer,
|
115
|
+
name: String,
|
116
|
+
price_per_unit: String,
|
117
|
+
total_price: Integer
|
118
|
+
).returns(T.attached_class)
|
119
|
+
end
|
120
|
+
def self.new(
|
121
|
+
# Meter identifier
|
122
|
+
id:,
|
123
|
+
# Chargeable units (after free threshold) as string for precision
|
124
|
+
chargeable_units:,
|
125
|
+
# Total units consumed as string for precision
|
126
|
+
consumed_units:,
|
127
|
+
# Currency for the price per unit
|
128
|
+
currency:,
|
129
|
+
# Free threshold units for this meter
|
130
|
+
free_threshold:,
|
131
|
+
# Meter name
|
132
|
+
name:,
|
133
|
+
# Price per unit in string format for precision
|
134
|
+
price_per_unit:,
|
135
|
+
# Total price charged for this meter in smallest currency unit (cents)
|
136
|
+
total_price:
|
137
|
+
)
|
138
|
+
end
|
139
|
+
|
140
|
+
sig do
|
141
|
+
override.returns(
|
142
|
+
{
|
143
|
+
id: String,
|
144
|
+
chargeable_units: String,
|
145
|
+
consumed_units: String,
|
146
|
+
currency: Dodopayments::Currency::TaggedSymbol,
|
147
|
+
free_threshold: Integer,
|
148
|
+
name: String,
|
149
|
+
price_per_unit: String,
|
150
|
+
total_price: Integer
|
151
|
+
}
|
152
|
+
)
|
153
|
+
end
|
154
|
+
def to_hash
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
@@ -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:)
|