dodopayments 1.51.1 → 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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/client.rb +8 -0
  5. data/lib/dodopayments/models/add_meter_to_price.rb +58 -0
  6. data/lib/dodopayments/models/event.rb +71 -0
  7. data/lib/dodopayments/models/event_input.rb +70 -0
  8. data/lib/dodopayments/models/invoices/payment_retrieve_refund_params.rb +16 -0
  9. data/lib/dodopayments/models/meter.rb +88 -0
  10. data/lib/dodopayments/models/meter_aggregation.rb +40 -0
  11. data/lib/dodopayments/models/meter_archive_params.rb +14 -0
  12. data/lib/dodopayments/models/meter_create_params.rb +62 -0
  13. data/lib/dodopayments/models/meter_filter.rb +482 -0
  14. data/lib/dodopayments/models/meter_list_params.rb +38 -0
  15. data/lib/dodopayments/models/{product_delete_params.rb → meter_retrieve_params.rb} +2 -2
  16. data/lib/dodopayments/models/meter_unarchive_params.rb +14 -0
  17. data/lib/dodopayments/models/price.rb +122 -7
  18. data/lib/dodopayments/models/product.rb +2 -2
  19. data/lib/dodopayments/models/product_archive_params.rb +14 -0
  20. data/lib/dodopayments/models/product_create_params.rb +2 -2
  21. data/lib/dodopayments/models/product_list_response.rb +2 -2
  22. data/lib/dodopayments/models/product_update_params.rb +2 -2
  23. data/lib/dodopayments/models/subscription_retrieve_usage_history_params.rb +54 -0
  24. data/lib/dodopayments/models/subscription_retrieve_usage_history_response.rb +101 -0
  25. data/lib/dodopayments/models/usage_event_ingest_params.rb +22 -0
  26. data/lib/dodopayments/models/usage_event_ingest_response.rb +16 -0
  27. data/lib/dodopayments/models/usage_event_list_params.rb +75 -0
  28. data/lib/dodopayments/models/usage_event_retrieve_params.rb +14 -0
  29. data/lib/dodopayments/models.rb +32 -2
  30. data/lib/dodopayments/resources/invoices/payments.rb +18 -0
  31. data/lib/dodopayments/resources/meters.rb +123 -0
  32. data/lib/dodopayments/resources/products.rb +5 -5
  33. data/lib/dodopayments/resources/subscriptions.rb +74 -0
  34. data/lib/dodopayments/resources/usage_events.rb +193 -0
  35. data/lib/dodopayments/version.rb +1 -1
  36. data/lib/dodopayments.rb +21 -1
  37. data/rbi/dodopayments/client.rbi +6 -0
  38. data/rbi/dodopayments/models/add_meter_to_price.rbi +75 -0
  39. data/rbi/dodopayments/models/event.rbi +88 -0
  40. data/rbi/dodopayments/models/event_input.rbi +102 -0
  41. data/rbi/dodopayments/models/invoices/payment_retrieve_refund_params.rbi +34 -0
  42. data/rbi/dodopayments/models/meter.rbi +107 -0
  43. data/rbi/dodopayments/models/meter_aggregation.rbi +73 -0
  44. data/rbi/dodopayments/models/meter_archive_params.rbi +32 -0
  45. data/rbi/dodopayments/models/meter_create_params.rbi +92 -0
  46. data/rbi/dodopayments/models/meter_filter.rbi +1042 -0
  47. data/rbi/dodopayments/models/meter_list_params.rbi +68 -0
  48. data/rbi/dodopayments/models/{product_delete_params.rbi → meter_retrieve_params.rbi} +2 -2
  49. data/rbi/dodopayments/models/meter_unarchive_params.rbi +32 -0
  50. data/rbi/dodopayments/models/price.rbi +153 -7
  51. data/rbi/dodopayments/models/product.rbi +2 -1
  52. data/rbi/dodopayments/models/product_archive_params.rbi +32 -0
  53. data/rbi/dodopayments/models/product_create_params.rbi +6 -3
  54. data/rbi/dodopayments/models/product_list_response.rbi +2 -1
  55. data/rbi/dodopayments/models/product_update_params.rbi +6 -3
  56. data/rbi/dodopayments/models/subscription_retrieve_usage_history_params.rbi +78 -0
  57. data/rbi/dodopayments/models/subscription_retrieve_usage_history_response.rbi +159 -0
  58. data/rbi/dodopayments/models/usage_event_ingest_params.rbi +46 -0
  59. data/rbi/dodopayments/models/usage_event_ingest_response.rbi +26 -0
  60. data/rbi/dodopayments/models/usage_event_list_params.rbi +119 -0
  61. data/rbi/dodopayments/models/usage_event_retrieve_params.rbi +32 -0
  62. data/rbi/dodopayments/models.rbi +33 -2
  63. data/rbi/dodopayments/resources/invoices/payments.rbi +9 -0
  64. data/rbi/dodopayments/resources/meters.rbi +102 -0
  65. data/rbi/dodopayments/resources/products.rbi +5 -3
  66. data/rbi/dodopayments/resources/subscriptions.rbi +74 -0
  67. data/rbi/dodopayments/resources/usage_events.rbi +175 -0
  68. data/sig/dodopayments/client.rbs +4 -0
  69. data/sig/dodopayments/models/add_meter_to_price.rbs +45 -0
  70. data/sig/dodopayments/models/event.rbs +53 -0
  71. data/sig/dodopayments/models/event_input.rbs +48 -0
  72. data/sig/dodopayments/models/invoices/payment_retrieve_refund_params.rbs +17 -0
  73. data/sig/dodopayments/models/meter.rbs +65 -0
  74. data/sig/dodopayments/models/meter_aggregation.rbs +36 -0
  75. data/sig/dodopayments/models/meter_archive_params.rbs +15 -0
  76. data/sig/dodopayments/models/meter_create_params.rbs +51 -0
  77. data/sig/dodopayments/models/meter_filter.rbs +417 -0
  78. data/sig/dodopayments/models/meter_list_params.rbs +38 -0
  79. data/sig/dodopayments/models/{product_delete_params.rbs → meter_retrieve_params.rbs} +2 -2
  80. data/sig/dodopayments/models/meter_unarchive_params.rbs +15 -0
  81. data/sig/dodopayments/models/price.rbs +88 -9
  82. data/sig/dodopayments/models/product_archive_params.rbs +15 -0
  83. data/sig/dodopayments/models/subscription_retrieve_usage_history_params.rbs +46 -0
  84. data/sig/dodopayments/models/subscription_retrieve_usage_history_response.rbs +82 -0
  85. data/sig/dodopayments/models/usage_event_ingest_params.rbs +24 -0
  86. data/sig/dodopayments/models/usage_event_ingest_response.rbs +13 -0
  87. data/sig/dodopayments/models/usage_event_list_params.rbs +70 -0
  88. data/sig/dodopayments/models/usage_event_retrieve_params.rbs +15 -0
  89. data/sig/dodopayments/models.rbs +32 -2
  90. data/sig/dodopayments/resources/invoices/payments.rbs +5 -0
  91. data/sig/dodopayments/resources/meters.rbs +39 -0
  92. data/sig/dodopayments/resources/products.rbs +1 -1
  93. data/sig/dodopayments/resources/subscriptions.rbs +10 -0
  94. data/sig/dodopayments/resources/usage_events.rbs +28 -0
  95. metadata +65 -5
@@ -0,0 +1,88 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class Event < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Dodopayments::Event, Dodopayments::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(String) }
12
+ attr_accessor :business_id
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :customer_id
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :event_id
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :event_name
22
+
23
+ sig { returns(Time) }
24
+ attr_accessor :timestamp
25
+
26
+ # Arbitrary key-value metadata. Values can be string, integer, number, or boolean.
27
+ sig do
28
+ returns(
29
+ T.nilable(T::Hash[Symbol, Dodopayments::Event::Metadata::Variants])
30
+ )
31
+ end
32
+ attr_accessor :metadata
33
+
34
+ sig do
35
+ params(
36
+ business_id: String,
37
+ customer_id: String,
38
+ event_id: String,
39
+ event_name: String,
40
+ timestamp: Time,
41
+ metadata:
42
+ T.nilable(T::Hash[Symbol, Dodopayments::Event::Metadata::Variants])
43
+ ).returns(T.attached_class)
44
+ end
45
+ def self.new(
46
+ business_id:,
47
+ customer_id:,
48
+ event_id:,
49
+ event_name:,
50
+ timestamp:,
51
+ # Arbitrary key-value metadata. Values can be string, integer, number, or boolean.
52
+ metadata: nil
53
+ )
54
+ end
55
+
56
+ sig do
57
+ override.returns(
58
+ {
59
+ business_id: String,
60
+ customer_id: String,
61
+ event_id: String,
62
+ event_name: String,
63
+ timestamp: Time,
64
+ metadata:
65
+ T.nilable(
66
+ T::Hash[Symbol, Dodopayments::Event::Metadata::Variants]
67
+ )
68
+ }
69
+ )
70
+ end
71
+ def to_hash
72
+ end
73
+
74
+ # Metadata value can be a string, integer, number, or boolean
75
+ module Metadata
76
+ extend Dodopayments::Internal::Type::Union
77
+
78
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
79
+
80
+ sig do
81
+ override.returns(T::Array[Dodopayments::Event::Metadata::Variants])
82
+ end
83
+ def self.variants
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,102 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class EventInput < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Dodopayments::EventInput, Dodopayments::Internal::AnyHash)
9
+ end
10
+
11
+ # customer_id of the customer whose usage needs to be tracked
12
+ sig { returns(String) }
13
+ attr_accessor :customer_id
14
+
15
+ # Event Id acts as an idempotency key. Any subsequent requests with the same
16
+ # event_id will be ignored
17
+ sig { returns(String) }
18
+ attr_accessor :event_id
19
+
20
+ # Name of the event
21
+ sig { returns(String) }
22
+ attr_accessor :event_name
23
+
24
+ # Custom metadata. Only key value pairs are accepted, objects or arrays submitted
25
+ # will be rejected.
26
+ sig do
27
+ returns(
28
+ T.nilable(
29
+ T::Hash[Symbol, Dodopayments::EventInput::Metadata::Variants]
30
+ )
31
+ )
32
+ end
33
+ attr_accessor :metadata
34
+
35
+ # Custom Timestamp. Defaults to current timestamp in UTC. Timestamps that are
36
+ # older that 1 hour or after 5 mins, from current timestamp, will be rejected.
37
+ sig { returns(T.nilable(Time)) }
38
+ attr_accessor :timestamp
39
+
40
+ sig do
41
+ params(
42
+ customer_id: String,
43
+ event_id: String,
44
+ event_name: String,
45
+ metadata:
46
+ T.nilable(
47
+ T::Hash[Symbol, Dodopayments::EventInput::Metadata::Variants]
48
+ ),
49
+ timestamp: T.nilable(Time)
50
+ ).returns(T.attached_class)
51
+ end
52
+ def self.new(
53
+ # customer_id of the customer whose usage needs to be tracked
54
+ customer_id:,
55
+ # Event Id acts as an idempotency key. Any subsequent requests with the same
56
+ # event_id will be ignored
57
+ event_id:,
58
+ # Name of the event
59
+ event_name:,
60
+ # Custom metadata. Only key value pairs are accepted, objects or arrays submitted
61
+ # will be rejected.
62
+ metadata: nil,
63
+ # Custom Timestamp. Defaults to current timestamp in UTC. Timestamps that are
64
+ # older that 1 hour or after 5 mins, from current timestamp, will be rejected.
65
+ timestamp: nil
66
+ )
67
+ end
68
+
69
+ sig do
70
+ override.returns(
71
+ {
72
+ customer_id: String,
73
+ event_id: String,
74
+ event_name: String,
75
+ metadata:
76
+ T.nilable(
77
+ T::Hash[Symbol, Dodopayments::EventInput::Metadata::Variants]
78
+ ),
79
+ timestamp: T.nilable(Time)
80
+ }
81
+ )
82
+ end
83
+ def to_hash
84
+ end
85
+
86
+ # Metadata value can be a string, integer, number, or boolean
87
+ module Metadata
88
+ extend Dodopayments::Internal::Type::Union
89
+
90
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
91
+
92
+ sig do
93
+ override.returns(
94
+ T::Array[Dodopayments::EventInput::Metadata::Variants]
95
+ )
96
+ end
97
+ def self.variants
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,34 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Invoices
6
+ class PaymentRetrieveRefundParams < Dodopayments::Internal::Type::BaseModel
7
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
8
+ include Dodopayments::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Dodopayments::Invoices::PaymentRetrieveRefundParams,
14
+ Dodopayments::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig do
19
+ params(request_options: Dodopayments::RequestOptions::OrHash).returns(
20
+ T.attached_class
21
+ )
22
+ end
23
+ def self.new(request_options: {})
24
+ end
25
+
26
+ sig do
27
+ override.returns({ request_options: Dodopayments::RequestOptions })
28
+ end
29
+ def to_hash
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,107 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class Meter < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Dodopayments::Meter, Dodopayments::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(String) }
12
+ attr_accessor :id
13
+
14
+ sig { returns(Dodopayments::MeterAggregation) }
15
+ attr_reader :aggregation
16
+
17
+ sig { params(aggregation: Dodopayments::MeterAggregation::OrHash).void }
18
+ attr_writer :aggregation
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :business_id
22
+
23
+ sig { returns(Time) }
24
+ attr_accessor :created_at
25
+
26
+ sig { returns(String) }
27
+ attr_accessor :event_name
28
+
29
+ sig { returns(String) }
30
+ attr_accessor :measurement_unit
31
+
32
+ sig { returns(String) }
33
+ attr_accessor :name
34
+
35
+ sig { returns(Time) }
36
+ attr_accessor :updated_at
37
+
38
+ sig { returns(T.nilable(String)) }
39
+ attr_accessor :description
40
+
41
+ # A filter structure that combines multiple conditions with logical conjunctions
42
+ # (AND/OR).
43
+ #
44
+ # Supports up to 3 levels of nesting to create complex filter expressions. Each
45
+ # filter has a conjunction (and/or) and clauses that can be either direct
46
+ # conditions or nested filters.
47
+ sig { returns(T.nilable(Dodopayments::MeterFilter)) }
48
+ attr_reader :filter
49
+
50
+ sig { params(filter: T.nilable(Dodopayments::MeterFilter::OrHash)).void }
51
+ attr_writer :filter
52
+
53
+ sig do
54
+ params(
55
+ id: String,
56
+ aggregation: Dodopayments::MeterAggregation::OrHash,
57
+ business_id: String,
58
+ created_at: Time,
59
+ event_name: String,
60
+ measurement_unit: String,
61
+ name: String,
62
+ updated_at: Time,
63
+ description: T.nilable(String),
64
+ filter: T.nilable(Dodopayments::MeterFilter::OrHash)
65
+ ).returns(T.attached_class)
66
+ end
67
+ def self.new(
68
+ id:,
69
+ aggregation:,
70
+ business_id:,
71
+ created_at:,
72
+ event_name:,
73
+ measurement_unit:,
74
+ name:,
75
+ updated_at:,
76
+ description: nil,
77
+ # A filter structure that combines multiple conditions with logical conjunctions
78
+ # (AND/OR).
79
+ #
80
+ # Supports up to 3 levels of nesting to create complex filter expressions. Each
81
+ # filter has a conjunction (and/or) and clauses that can be either direct
82
+ # conditions or nested filters.
83
+ filter: nil
84
+ )
85
+ end
86
+
87
+ sig do
88
+ override.returns(
89
+ {
90
+ id: String,
91
+ aggregation: Dodopayments::MeterAggregation,
92
+ business_id: String,
93
+ created_at: Time,
94
+ event_name: String,
95
+ measurement_unit: String,
96
+ name: String,
97
+ updated_at: Time,
98
+ description: T.nilable(String),
99
+ filter: T.nilable(Dodopayments::MeterFilter)
100
+ }
101
+ )
102
+ end
103
+ def to_hash
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,73 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class MeterAggregation < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Dodopayments::MeterAggregation, Dodopayments::Internal::AnyHash)
9
+ end
10
+
11
+ # Aggregation type for the meter
12
+ sig { returns(Dodopayments::MeterAggregation::Type::OrSymbol) }
13
+ attr_accessor :type
14
+
15
+ # Required when type is not COUNT
16
+ sig { returns(T.nilable(String)) }
17
+ attr_accessor :key
18
+
19
+ sig do
20
+ params(
21
+ type: Dodopayments::MeterAggregation::Type::OrSymbol,
22
+ key: T.nilable(String)
23
+ ).returns(T.attached_class)
24
+ end
25
+ def self.new(
26
+ # Aggregation type for the meter
27
+ type:,
28
+ # Required when type is not COUNT
29
+ key: nil
30
+ )
31
+ end
32
+
33
+ sig do
34
+ override.returns(
35
+ {
36
+ type: Dodopayments::MeterAggregation::Type::OrSymbol,
37
+ key: T.nilable(String)
38
+ }
39
+ )
40
+ end
41
+ def to_hash
42
+ end
43
+
44
+ # Aggregation type for the meter
45
+ module Type
46
+ extend Dodopayments::Internal::Type::Enum
47
+
48
+ TaggedSymbol =
49
+ T.type_alias { T.all(Symbol, Dodopayments::MeterAggregation::Type) }
50
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
51
+
52
+ COUNT =
53
+ T.let(:count, Dodopayments::MeterAggregation::Type::TaggedSymbol)
54
+ SUM = T.let(:sum, Dodopayments::MeterAggregation::Type::TaggedSymbol)
55
+ UNIQUE_COUNT =
56
+ T.let(
57
+ :unique_count,
58
+ Dodopayments::MeterAggregation::Type::TaggedSymbol
59
+ )
60
+ MAX = T.let(:max, Dodopayments::MeterAggregation::Type::TaggedSymbol)
61
+ LAST = T.let(:last, Dodopayments::MeterAggregation::Type::TaggedSymbol)
62
+
63
+ sig do
64
+ override.returns(
65
+ T::Array[Dodopayments::MeterAggregation::Type::TaggedSymbol]
66
+ )
67
+ end
68
+ def self.values
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,32 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class MeterArchiveParams < 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::MeterArchiveParams,
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
@@ -0,0 +1,92 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class MeterCreateParams < 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::MeterCreateParams,
13
+ Dodopayments::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Aggregation configuration for the meter
18
+ sig { returns(Dodopayments::MeterAggregation) }
19
+ attr_reader :aggregation
20
+
21
+ sig { params(aggregation: Dodopayments::MeterAggregation::OrHash).void }
22
+ attr_writer :aggregation
23
+
24
+ # Event name to track
25
+ sig { returns(String) }
26
+ attr_accessor :event_name
27
+
28
+ # measurement unit
29
+ sig { returns(String) }
30
+ attr_accessor :measurement_unit
31
+
32
+ # Name of the meter
33
+ sig { returns(String) }
34
+ attr_accessor :name
35
+
36
+ # Optional description of the meter
37
+ sig { returns(T.nilable(String)) }
38
+ attr_accessor :description
39
+
40
+ # Optional filter to apply to the meter
41
+ sig { returns(T.nilable(Dodopayments::MeterFilter)) }
42
+ attr_reader :filter
43
+
44
+ sig { params(filter: T.nilable(Dodopayments::MeterFilter::OrHash)).void }
45
+ attr_writer :filter
46
+
47
+ sig do
48
+ params(
49
+ aggregation: Dodopayments::MeterAggregation::OrHash,
50
+ event_name: String,
51
+ measurement_unit: String,
52
+ name: String,
53
+ description: T.nilable(String),
54
+ filter: T.nilable(Dodopayments::MeterFilter::OrHash),
55
+ request_options: Dodopayments::RequestOptions::OrHash
56
+ ).returns(T.attached_class)
57
+ end
58
+ def self.new(
59
+ # Aggregation configuration for the meter
60
+ aggregation:,
61
+ # Event name to track
62
+ event_name:,
63
+ # measurement unit
64
+ measurement_unit:,
65
+ # Name of the meter
66
+ name:,
67
+ # Optional description of the meter
68
+ description: nil,
69
+ # Optional filter to apply to the meter
70
+ filter: nil,
71
+ request_options: {}
72
+ )
73
+ end
74
+
75
+ sig do
76
+ override.returns(
77
+ {
78
+ aggregation: Dodopayments::MeterAggregation,
79
+ event_name: String,
80
+ measurement_unit: String,
81
+ name: String,
82
+ description: T.nilable(String),
83
+ filter: T.nilable(Dodopayments::MeterFilter),
84
+ request_options: Dodopayments::RequestOptions
85
+ }
86
+ )
87
+ end
88
+ def to_hash
89
+ end
90
+ end
91
+ end
92
+ end