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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -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,1042 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class MeterFilter < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Dodopayments::MeterFilter, Dodopayments::Internal::AnyHash)
9
+ end
10
+
11
+ # Filter clauses - can be direct conditions or nested filters (up to 3 levels
12
+ # deep)
13
+ sig { returns(Dodopayments::MeterFilter::Clauses::Variants) }
14
+ attr_accessor :clauses
15
+
16
+ # Logical conjunction to apply between clauses (and/or)
17
+ sig { returns(Dodopayments::MeterFilter::Conjunction::OrSymbol) }
18
+ attr_accessor :conjunction
19
+
20
+ # A filter structure that combines multiple conditions with logical conjunctions
21
+ # (AND/OR).
22
+ #
23
+ # Supports up to 3 levels of nesting to create complex filter expressions. Each
24
+ # filter has a conjunction (and/or) and clauses that can be either direct
25
+ # conditions or nested filters.
26
+ sig do
27
+ params(
28
+ clauses: Dodopayments::MeterFilter::Clauses::Variants,
29
+ conjunction: Dodopayments::MeterFilter::Conjunction::OrSymbol
30
+ ).returns(T.attached_class)
31
+ end
32
+ def self.new(
33
+ # Filter clauses - can be direct conditions or nested filters (up to 3 levels
34
+ # deep)
35
+ clauses:,
36
+ # Logical conjunction to apply between clauses (and/or)
37
+ conjunction:
38
+ )
39
+ end
40
+
41
+ sig do
42
+ override.returns(
43
+ {
44
+ clauses: Dodopayments::MeterFilter::Clauses::Variants,
45
+ conjunction: Dodopayments::MeterFilter::Conjunction::OrSymbol
46
+ }
47
+ )
48
+ end
49
+ def to_hash
50
+ end
51
+
52
+ # Filter clauses - can be direct conditions or nested filters (up to 3 levels
53
+ # deep)
54
+ module Clauses
55
+ extend Dodopayments::Internal::Type::Union
56
+
57
+ Variants =
58
+ T.type_alias do
59
+ T.any(
60
+ T::Array[
61
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition
62
+ ],
63
+ T::Array[Dodopayments::MeterFilter::Clauses::NestedMeterFilter]
64
+ )
65
+ end
66
+
67
+ class DirectFilterCondition < Dodopayments::Internal::Type::BaseModel
68
+ OrHash =
69
+ T.type_alias do
70
+ T.any(
71
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition,
72
+ Dodopayments::Internal::AnyHash
73
+ )
74
+ end
75
+
76
+ # Filter key to apply
77
+ sig { returns(String) }
78
+ attr_accessor :key
79
+
80
+ sig do
81
+ returns(
82
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::OrSymbol
83
+ )
84
+ end
85
+ attr_accessor :operator
86
+
87
+ # Filter value - can be string, number, or boolean
88
+ sig do
89
+ returns(
90
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Value::Variants
91
+ )
92
+ end
93
+ attr_accessor :value
94
+
95
+ # Filter condition with key, operator, and value
96
+ sig do
97
+ params(
98
+ key: String,
99
+ operator:
100
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::OrSymbol,
101
+ value:
102
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Value::Variants
103
+ ).returns(T.attached_class)
104
+ end
105
+ def self.new(
106
+ # Filter key to apply
107
+ key:,
108
+ operator:,
109
+ # Filter value - can be string, number, or boolean
110
+ value:
111
+ )
112
+ end
113
+
114
+ sig do
115
+ override.returns(
116
+ {
117
+ key: String,
118
+ operator:
119
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::OrSymbol,
120
+ value:
121
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Value::Variants
122
+ }
123
+ )
124
+ end
125
+ def to_hash
126
+ end
127
+
128
+ module Operator
129
+ extend Dodopayments::Internal::Type::Enum
130
+
131
+ TaggedSymbol =
132
+ T.type_alias do
133
+ T.all(
134
+ Symbol,
135
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator
136
+ )
137
+ end
138
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
139
+
140
+ EQUALS =
141
+ T.let(
142
+ :equals,
143
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::TaggedSymbol
144
+ )
145
+ NOT_EQUALS =
146
+ T.let(
147
+ :not_equals,
148
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::TaggedSymbol
149
+ )
150
+ GREATER_THAN =
151
+ T.let(
152
+ :greater_than,
153
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::TaggedSymbol
154
+ )
155
+ GREATER_THAN_OR_EQUALS =
156
+ T.let(
157
+ :greater_than_or_equals,
158
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::TaggedSymbol
159
+ )
160
+ LESS_THAN =
161
+ T.let(
162
+ :less_than,
163
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::TaggedSymbol
164
+ )
165
+ LESS_THAN_OR_EQUALS =
166
+ T.let(
167
+ :less_than_or_equals,
168
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::TaggedSymbol
169
+ )
170
+ CONTAINS =
171
+ T.let(
172
+ :contains,
173
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::TaggedSymbol
174
+ )
175
+ DOES_NOT_CONTAIN =
176
+ T.let(
177
+ :does_not_contain,
178
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::TaggedSymbol
179
+ )
180
+
181
+ sig do
182
+ override.returns(
183
+ T::Array[
184
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Operator::TaggedSymbol
185
+ ]
186
+ )
187
+ end
188
+ def self.values
189
+ end
190
+ end
191
+
192
+ # Filter value - can be string, number, or boolean
193
+ module Value
194
+ extend Dodopayments::Internal::Type::Union
195
+
196
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
197
+
198
+ sig do
199
+ override.returns(
200
+ T::Array[
201
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition::Value::Variants
202
+ ]
203
+ )
204
+ end
205
+ def self.variants
206
+ end
207
+ end
208
+ end
209
+
210
+ class NestedMeterFilter < Dodopayments::Internal::Type::BaseModel
211
+ OrHash =
212
+ T.type_alias do
213
+ T.any(
214
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter,
215
+ Dodopayments::Internal::AnyHash
216
+ )
217
+ end
218
+
219
+ # Level 1: Can be conditions or nested filters (2 more levels allowed)
220
+ sig do
221
+ returns(
222
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Variants
223
+ )
224
+ end
225
+ attr_accessor :clauses
226
+
227
+ sig do
228
+ returns(
229
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Conjunction::OrSymbol
230
+ )
231
+ end
232
+ attr_accessor :conjunction
233
+
234
+ # Level 1 nested filter - can contain Level 2 filters
235
+ sig do
236
+ params(
237
+ clauses:
238
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Variants,
239
+ conjunction:
240
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Conjunction::OrSymbol
241
+ ).returns(T.attached_class)
242
+ end
243
+ def self.new(
244
+ # Level 1: Can be conditions or nested filters (2 more levels allowed)
245
+ clauses:,
246
+ conjunction:
247
+ )
248
+ end
249
+
250
+ sig do
251
+ override.returns(
252
+ {
253
+ clauses:
254
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Variants,
255
+ conjunction:
256
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Conjunction::OrSymbol
257
+ }
258
+ )
259
+ end
260
+ def to_hash
261
+ end
262
+
263
+ # Level 1: Can be conditions or nested filters (2 more levels allowed)
264
+ module Clauses
265
+ extend Dodopayments::Internal::Type::Union
266
+
267
+ Variants =
268
+ T.type_alias do
269
+ T.any(
270
+ T::Array[
271
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition
272
+ ],
273
+ T::Array[
274
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter
275
+ ]
276
+ )
277
+ end
278
+
279
+ class Level1FilterCondition < Dodopayments::Internal::Type::BaseModel
280
+ OrHash =
281
+ T.type_alias do
282
+ T.any(
283
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition,
284
+ Dodopayments::Internal::AnyHash
285
+ )
286
+ end
287
+
288
+ # Filter key to apply
289
+ sig { returns(String) }
290
+ attr_accessor :key
291
+
292
+ sig do
293
+ returns(
294
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::OrSymbol
295
+ )
296
+ end
297
+ attr_accessor :operator
298
+
299
+ # Filter value - can be string, number, or boolean
300
+ sig do
301
+ returns(
302
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Value::Variants
303
+ )
304
+ end
305
+ attr_accessor :value
306
+
307
+ # Filter condition with key, operator, and value
308
+ sig do
309
+ params(
310
+ key: String,
311
+ operator:
312
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::OrSymbol,
313
+ value:
314
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Value::Variants
315
+ ).returns(T.attached_class)
316
+ end
317
+ def self.new(
318
+ # Filter key to apply
319
+ key:,
320
+ operator:,
321
+ # Filter value - can be string, number, or boolean
322
+ value:
323
+ )
324
+ end
325
+
326
+ sig do
327
+ override.returns(
328
+ {
329
+ key: String,
330
+ operator:
331
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::OrSymbol,
332
+ value:
333
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Value::Variants
334
+ }
335
+ )
336
+ end
337
+ def to_hash
338
+ end
339
+
340
+ module Operator
341
+ extend Dodopayments::Internal::Type::Enum
342
+
343
+ TaggedSymbol =
344
+ T.type_alias do
345
+ T.all(
346
+ Symbol,
347
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator
348
+ )
349
+ end
350
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
351
+
352
+ EQUALS =
353
+ T.let(
354
+ :equals,
355
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::TaggedSymbol
356
+ )
357
+ NOT_EQUALS =
358
+ T.let(
359
+ :not_equals,
360
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::TaggedSymbol
361
+ )
362
+ GREATER_THAN =
363
+ T.let(
364
+ :greater_than,
365
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::TaggedSymbol
366
+ )
367
+ GREATER_THAN_OR_EQUALS =
368
+ T.let(
369
+ :greater_than_or_equals,
370
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::TaggedSymbol
371
+ )
372
+ LESS_THAN =
373
+ T.let(
374
+ :less_than,
375
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::TaggedSymbol
376
+ )
377
+ LESS_THAN_OR_EQUALS =
378
+ T.let(
379
+ :less_than_or_equals,
380
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::TaggedSymbol
381
+ )
382
+ CONTAINS =
383
+ T.let(
384
+ :contains,
385
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::TaggedSymbol
386
+ )
387
+ DOES_NOT_CONTAIN =
388
+ T.let(
389
+ :does_not_contain,
390
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::TaggedSymbol
391
+ )
392
+
393
+ sig do
394
+ override.returns(
395
+ T::Array[
396
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Operator::TaggedSymbol
397
+ ]
398
+ )
399
+ end
400
+ def self.values
401
+ end
402
+ end
403
+
404
+ # Filter value - can be string, number, or boolean
405
+ module Value
406
+ extend Dodopayments::Internal::Type::Union
407
+
408
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
409
+
410
+ sig do
411
+ override.returns(
412
+ T::Array[
413
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition::Value::Variants
414
+ ]
415
+ )
416
+ end
417
+ def self.variants
418
+ end
419
+ end
420
+ end
421
+
422
+ class Level1NestedFilter < Dodopayments::Internal::Type::BaseModel
423
+ OrHash =
424
+ T.type_alias do
425
+ T.any(
426
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter,
427
+ Dodopayments::Internal::AnyHash
428
+ )
429
+ end
430
+
431
+ # Level 2: Can be conditions or nested filters (1 more level allowed)
432
+ sig do
433
+ returns(
434
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Variants
435
+ )
436
+ end
437
+ attr_accessor :clauses
438
+
439
+ sig do
440
+ returns(
441
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Conjunction::OrSymbol
442
+ )
443
+ end
444
+ attr_accessor :conjunction
445
+
446
+ # Level 2 nested filter
447
+ sig do
448
+ params(
449
+ clauses:
450
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Variants,
451
+ conjunction:
452
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Conjunction::OrSymbol
453
+ ).returns(T.attached_class)
454
+ end
455
+ def self.new(
456
+ # Level 2: Can be conditions or nested filters (1 more level allowed)
457
+ clauses:,
458
+ conjunction:
459
+ )
460
+ end
461
+
462
+ sig do
463
+ override.returns(
464
+ {
465
+ clauses:
466
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Variants,
467
+ conjunction:
468
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Conjunction::OrSymbol
469
+ }
470
+ )
471
+ end
472
+ def to_hash
473
+ end
474
+
475
+ # Level 2: Can be conditions or nested filters (1 more level allowed)
476
+ module Clauses
477
+ extend Dodopayments::Internal::Type::Union
478
+
479
+ Variants =
480
+ T.type_alias do
481
+ T.any(
482
+ T::Array[
483
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition
484
+ ],
485
+ T::Array[
486
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter
487
+ ]
488
+ )
489
+ end
490
+
491
+ class Level2FilterCondition < Dodopayments::Internal::Type::BaseModel
492
+ OrHash =
493
+ T.type_alias do
494
+ T.any(
495
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition,
496
+ Dodopayments::Internal::AnyHash
497
+ )
498
+ end
499
+
500
+ # Filter key to apply
501
+ sig { returns(String) }
502
+ attr_accessor :key
503
+
504
+ sig do
505
+ returns(
506
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::OrSymbol
507
+ )
508
+ end
509
+ attr_accessor :operator
510
+
511
+ # Filter value - can be string, number, or boolean
512
+ sig do
513
+ returns(
514
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Value::Variants
515
+ )
516
+ end
517
+ attr_accessor :value
518
+
519
+ # Filter condition with key, operator, and value
520
+ sig do
521
+ params(
522
+ key: String,
523
+ operator:
524
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::OrSymbol,
525
+ value:
526
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Value::Variants
527
+ ).returns(T.attached_class)
528
+ end
529
+ def self.new(
530
+ # Filter key to apply
531
+ key:,
532
+ operator:,
533
+ # Filter value - can be string, number, or boolean
534
+ value:
535
+ )
536
+ end
537
+
538
+ sig do
539
+ override.returns(
540
+ {
541
+ key: String,
542
+ operator:
543
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::OrSymbol,
544
+ value:
545
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Value::Variants
546
+ }
547
+ )
548
+ end
549
+ def to_hash
550
+ end
551
+
552
+ module Operator
553
+ extend Dodopayments::Internal::Type::Enum
554
+
555
+ TaggedSymbol =
556
+ T.type_alias do
557
+ T.all(
558
+ Symbol,
559
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator
560
+ )
561
+ end
562
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
563
+
564
+ EQUALS =
565
+ T.let(
566
+ :equals,
567
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::TaggedSymbol
568
+ )
569
+ NOT_EQUALS =
570
+ T.let(
571
+ :not_equals,
572
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::TaggedSymbol
573
+ )
574
+ GREATER_THAN =
575
+ T.let(
576
+ :greater_than,
577
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::TaggedSymbol
578
+ )
579
+ GREATER_THAN_OR_EQUALS =
580
+ T.let(
581
+ :greater_than_or_equals,
582
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::TaggedSymbol
583
+ )
584
+ LESS_THAN =
585
+ T.let(
586
+ :less_than,
587
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::TaggedSymbol
588
+ )
589
+ LESS_THAN_OR_EQUALS =
590
+ T.let(
591
+ :less_than_or_equals,
592
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::TaggedSymbol
593
+ )
594
+ CONTAINS =
595
+ T.let(
596
+ :contains,
597
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::TaggedSymbol
598
+ )
599
+ DOES_NOT_CONTAIN =
600
+ T.let(
601
+ :does_not_contain,
602
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::TaggedSymbol
603
+ )
604
+
605
+ sig do
606
+ override.returns(
607
+ T::Array[
608
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Operator::TaggedSymbol
609
+ ]
610
+ )
611
+ end
612
+ def self.values
613
+ end
614
+ end
615
+
616
+ # Filter value - can be string, number, or boolean
617
+ module Value
618
+ extend Dodopayments::Internal::Type::Union
619
+
620
+ Variants = T.type_alias { T.any(String, Float, T::Boolean) }
621
+
622
+ sig do
623
+ override.returns(
624
+ T::Array[
625
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition::Value::Variants
626
+ ]
627
+ )
628
+ end
629
+ def self.variants
630
+ end
631
+ end
632
+ end
633
+
634
+ class Level2NestedFilter < Dodopayments::Internal::Type::BaseModel
635
+ OrHash =
636
+ T.type_alias do
637
+ T.any(
638
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter,
639
+ Dodopayments::Internal::AnyHash
640
+ )
641
+ end
642
+
643
+ # Level 3: Filter conditions only (max depth reached)
644
+ sig do
645
+ returns(
646
+ T::Array[
647
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause
648
+ ]
649
+ )
650
+ end
651
+ attr_accessor :clauses
652
+
653
+ sig do
654
+ returns(
655
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Conjunction::OrSymbol
656
+ )
657
+ end
658
+ attr_accessor :conjunction
659
+
660
+ # Level 3 nested filter (final nesting level)
661
+ sig do
662
+ params(
663
+ clauses:
664
+ T::Array[
665
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::OrHash
666
+ ],
667
+ conjunction:
668
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Conjunction::OrSymbol
669
+ ).returns(T.attached_class)
670
+ end
671
+ def self.new(
672
+ # Level 3: Filter conditions only (max depth reached)
673
+ clauses:,
674
+ conjunction:
675
+ )
676
+ end
677
+
678
+ sig do
679
+ override.returns(
680
+ {
681
+ clauses:
682
+ T::Array[
683
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause
684
+ ],
685
+ conjunction:
686
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Conjunction::OrSymbol
687
+ }
688
+ )
689
+ end
690
+ def to_hash
691
+ end
692
+
693
+ class Clause < Dodopayments::Internal::Type::BaseModel
694
+ OrHash =
695
+ T.type_alias do
696
+ T.any(
697
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause,
698
+ Dodopayments::Internal::AnyHash
699
+ )
700
+ end
701
+
702
+ # Filter key to apply
703
+ sig { returns(String) }
704
+ attr_accessor :key
705
+
706
+ sig do
707
+ returns(
708
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::OrSymbol
709
+ )
710
+ end
711
+ attr_accessor :operator
712
+
713
+ # Filter value - can be string, number, or boolean
714
+ sig do
715
+ returns(
716
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Value::Variants
717
+ )
718
+ end
719
+ attr_accessor :value
720
+
721
+ # Filter condition with key, operator, and value
722
+ sig do
723
+ params(
724
+ key: String,
725
+ operator:
726
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::OrSymbol,
727
+ value:
728
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Value::Variants
729
+ ).returns(T.attached_class)
730
+ end
731
+ def self.new(
732
+ # Filter key to apply
733
+ key:,
734
+ operator:,
735
+ # Filter value - can be string, number, or boolean
736
+ value:
737
+ )
738
+ end
739
+
740
+ sig do
741
+ override.returns(
742
+ {
743
+ key: String,
744
+ operator:
745
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::OrSymbol,
746
+ value:
747
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Value::Variants
748
+ }
749
+ )
750
+ end
751
+ def to_hash
752
+ end
753
+
754
+ module Operator
755
+ extend Dodopayments::Internal::Type::Enum
756
+
757
+ TaggedSymbol =
758
+ T.type_alias do
759
+ T.all(
760
+ Symbol,
761
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator
762
+ )
763
+ end
764
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
765
+
766
+ EQUALS =
767
+ T.let(
768
+ :equals,
769
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::TaggedSymbol
770
+ )
771
+ NOT_EQUALS =
772
+ T.let(
773
+ :not_equals,
774
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::TaggedSymbol
775
+ )
776
+ GREATER_THAN =
777
+ T.let(
778
+ :greater_than,
779
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::TaggedSymbol
780
+ )
781
+ GREATER_THAN_OR_EQUALS =
782
+ T.let(
783
+ :greater_than_or_equals,
784
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::TaggedSymbol
785
+ )
786
+ LESS_THAN =
787
+ T.let(
788
+ :less_than,
789
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::TaggedSymbol
790
+ )
791
+ LESS_THAN_OR_EQUALS =
792
+ T.let(
793
+ :less_than_or_equals,
794
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::TaggedSymbol
795
+ )
796
+ CONTAINS =
797
+ T.let(
798
+ :contains,
799
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::TaggedSymbol
800
+ )
801
+ DOES_NOT_CONTAIN =
802
+ T.let(
803
+ :does_not_contain,
804
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::TaggedSymbol
805
+ )
806
+
807
+ sig do
808
+ override.returns(
809
+ T::Array[
810
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Operator::TaggedSymbol
811
+ ]
812
+ )
813
+ end
814
+ def self.values
815
+ end
816
+ end
817
+
818
+ # Filter value - can be string, number, or boolean
819
+ module Value
820
+ extend Dodopayments::Internal::Type::Union
821
+
822
+ Variants =
823
+ T.type_alias { T.any(String, Float, T::Boolean) }
824
+
825
+ sig do
826
+ override.returns(
827
+ T::Array[
828
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Clause::Value::Variants
829
+ ]
830
+ )
831
+ end
832
+ def self.variants
833
+ end
834
+ end
835
+ end
836
+
837
+ module Conjunction
838
+ extend Dodopayments::Internal::Type::Enum
839
+
840
+ TaggedSymbol =
841
+ T.type_alias do
842
+ T.all(
843
+ Symbol,
844
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Conjunction
845
+ )
846
+ end
847
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
848
+
849
+ AND =
850
+ T.let(
851
+ :and,
852
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Conjunction::TaggedSymbol
853
+ )
854
+ OR =
855
+ T.let(
856
+ :or,
857
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Conjunction::TaggedSymbol
858
+ )
859
+
860
+ sig do
861
+ override.returns(
862
+ T::Array[
863
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter::Conjunction::TaggedSymbol
864
+ ]
865
+ )
866
+ end
867
+ def self.values
868
+ end
869
+ end
870
+ end
871
+
872
+ sig do
873
+ override.returns(
874
+ T::Array[
875
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Variants
876
+ ]
877
+ )
878
+ end
879
+ def self.variants
880
+ end
881
+
882
+ Level2FilterConditionArray =
883
+ T.let(
884
+ Dodopayments::Internal::Type::ArrayOf[
885
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2FilterCondition
886
+ ],
887
+ Dodopayments::Internal::Type::Converter
888
+ )
889
+
890
+ Level2NestedFilterArray =
891
+ T.let(
892
+ Dodopayments::Internal::Type::ArrayOf[
893
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Clauses::Level2NestedFilter
894
+ ],
895
+ Dodopayments::Internal::Type::Converter
896
+ )
897
+ end
898
+
899
+ module Conjunction
900
+ extend Dodopayments::Internal::Type::Enum
901
+
902
+ TaggedSymbol =
903
+ T.type_alias do
904
+ T.all(
905
+ Symbol,
906
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Conjunction
907
+ )
908
+ end
909
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
910
+
911
+ AND =
912
+ T.let(
913
+ :and,
914
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Conjunction::TaggedSymbol
915
+ )
916
+ OR =
917
+ T.let(
918
+ :or,
919
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Conjunction::TaggedSymbol
920
+ )
921
+
922
+ sig do
923
+ override.returns(
924
+ T::Array[
925
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter::Conjunction::TaggedSymbol
926
+ ]
927
+ )
928
+ end
929
+ def self.values
930
+ end
931
+ end
932
+ end
933
+
934
+ sig do
935
+ override.returns(
936
+ T::Array[
937
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Variants
938
+ ]
939
+ )
940
+ end
941
+ def self.variants
942
+ end
943
+
944
+ Level1FilterConditionArray =
945
+ T.let(
946
+ Dodopayments::Internal::Type::ArrayOf[
947
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1FilterCondition
948
+ ],
949
+ Dodopayments::Internal::Type::Converter
950
+ )
951
+
952
+ Level1NestedFilterArray =
953
+ T.let(
954
+ Dodopayments::Internal::Type::ArrayOf[
955
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Clauses::Level1NestedFilter
956
+ ],
957
+ Dodopayments::Internal::Type::Converter
958
+ )
959
+ end
960
+
961
+ module Conjunction
962
+ extend Dodopayments::Internal::Type::Enum
963
+
964
+ TaggedSymbol =
965
+ T.type_alias do
966
+ T.all(
967
+ Symbol,
968
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Conjunction
969
+ )
970
+ end
971
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
972
+
973
+ AND =
974
+ T.let(
975
+ :and,
976
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Conjunction::TaggedSymbol
977
+ )
978
+ OR =
979
+ T.let(
980
+ :or,
981
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Conjunction::TaggedSymbol
982
+ )
983
+
984
+ sig do
985
+ override.returns(
986
+ T::Array[
987
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter::Conjunction::TaggedSymbol
988
+ ]
989
+ )
990
+ end
991
+ def self.values
992
+ end
993
+ end
994
+ end
995
+
996
+ sig do
997
+ override.returns(
998
+ T::Array[Dodopayments::MeterFilter::Clauses::Variants]
999
+ )
1000
+ end
1001
+ def self.variants
1002
+ end
1003
+
1004
+ DirectFilterConditionArray =
1005
+ T.let(
1006
+ Dodopayments::Internal::Type::ArrayOf[
1007
+ Dodopayments::MeterFilter::Clauses::DirectFilterCondition
1008
+ ],
1009
+ Dodopayments::Internal::Type::Converter
1010
+ )
1011
+
1012
+ NestedMeterFilterArray =
1013
+ T.let(
1014
+ Dodopayments::Internal::Type::ArrayOf[
1015
+ Dodopayments::MeterFilter::Clauses::NestedMeterFilter
1016
+ ],
1017
+ Dodopayments::Internal::Type::Converter
1018
+ )
1019
+ end
1020
+
1021
+ # Logical conjunction to apply between clauses (and/or)
1022
+ module Conjunction
1023
+ extend Dodopayments::Internal::Type::Enum
1024
+
1025
+ TaggedSymbol =
1026
+ T.type_alias { T.all(Symbol, Dodopayments::MeterFilter::Conjunction) }
1027
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1028
+
1029
+ AND = T.let(:and, Dodopayments::MeterFilter::Conjunction::TaggedSymbol)
1030
+ OR = T.let(:or, Dodopayments::MeterFilter::Conjunction::TaggedSymbol)
1031
+
1032
+ sig do
1033
+ override.returns(
1034
+ T::Array[Dodopayments::MeterFilter::Conjunction::TaggedSymbol]
1035
+ )
1036
+ end
1037
+ def self.values
1038
+ end
1039
+ end
1040
+ end
1041
+ end
1042
+ end