metronome-sdk 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/transport/base_client.rb +4 -1
  5. data/lib/metronome_sdk/models/commit.rb +10 -1
  6. data/lib/metronome_sdk/models/contract_v2.rb +290 -7
  7. data/lib/metronome_sdk/models/contract_without_amendments.rb +178 -4
  8. data/lib/metronome_sdk/models/credit.rb +10 -1
  9. data/lib/metronome_sdk/models/override.rb +7 -1
  10. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +10 -2
  11. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +3 -1
  12. data/lib/metronome_sdk/models/subscription.rb +90 -2
  13. data/lib/metronome_sdk/models/v1/alert_create_params.rb +127 -1
  14. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +17 -4
  15. data/lib/metronome_sdk/models/v1/contract_create_params.rb +290 -10
  16. data/lib/metronome_sdk/models/v1/contract_create_response.rb +178 -4
  17. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rb +88 -0
  18. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rb +62 -0
  19. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +10 -1
  20. data/lib/metronome_sdk/models/v1/customers/alert_retrieve_params.rb +127 -1
  21. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +130 -3
  22. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +10 -1
  23. data/lib/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rb +2 -0
  24. data/lib/metronome_sdk/models/v1/package_create_params.rb +279 -10
  25. data/lib/metronome_sdk/models/v1/package_list_response.rb +264 -7
  26. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +264 -7
  27. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +515 -9
  28. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +456 -8
  29. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +456 -8
  30. data/lib/metronome_sdk/resources/v1/alerts.rb +3 -1
  31. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/rates.rb +4 -0
  32. data/lib/metronome_sdk/resources/v1/contracts.rb +68 -1
  33. data/lib/metronome_sdk/resources/v1/customers/alerts.rb +4 -2
  34. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +3 -1
  35. data/lib/metronome_sdk/resources/v1/dashboards.rb +7 -2
  36. data/lib/metronome_sdk/version.rb +1 -1
  37. data/lib/metronome_sdk.rb +2 -0
  38. data/rbi/metronome_sdk/models/commit.rbi +13 -0
  39. data/rbi/metronome_sdk/models/contract_v2.rbi +715 -3
  40. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +463 -0
  41. data/rbi/metronome_sdk/models/credit.rbi +13 -0
  42. data/rbi/metronome_sdk/models/override.rbi +9 -0
  43. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +11 -1
  44. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +4 -0
  45. data/rbi/metronome_sdk/models/subscription.rbi +212 -3
  46. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +373 -0
  47. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +27 -6
  48. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +719 -9
  49. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +463 -0
  50. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbi +112 -0
  51. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbi +119 -0
  52. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +13 -0
  53. data/rbi/metronome_sdk/models/v1/customers/alert_retrieve_params.rbi +360 -0
  54. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +379 -2
  55. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +13 -0
  56. data/rbi/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbi +10 -0
  57. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +706 -9
  58. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +693 -3
  59. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +693 -3
  60. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +1333 -40
  61. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +1204 -67
  62. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1204 -67
  63. data/rbi/metronome_sdk/resources/v1/alerts.rbi +8 -0
  64. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbi +4 -0
  65. data/rbi/metronome_sdk/resources/v1/contracts.rbi +70 -0
  66. data/rbi/metronome_sdk/resources/v1/customers/alerts.rbi +8 -1
  67. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +4 -0
  68. data/rbi/metronome_sdk/resources/v1/dashboards.rbi +7 -2
  69. data/sig/metronome_sdk/models/commit.rbs +7 -0
  70. data/sig/metronome_sdk/models/contract_v2.rbs +278 -5
  71. data/sig/metronome_sdk/models/contract_without_amendments.rbs +169 -2
  72. data/sig/metronome_sdk/models/credit.rbs +7 -0
  73. data/sig/metronome_sdk/models/override.rbs +7 -0
  74. data/sig/metronome_sdk/models/subscription.rbs +88 -3
  75. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +144 -0
  76. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +7 -0
  77. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +278 -5
  78. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +167 -2
  79. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbs +63 -0
  80. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbs +59 -0
  81. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +7 -0
  82. data/sig/metronome_sdk/models/v1/customers/alert_retrieve_params.rbs +141 -0
  83. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +150 -0
  84. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +8 -1
  85. data/sig/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbs +4 -0
  86. data/sig/metronome_sdk/models/v1/package_create_params.rbs +271 -5
  87. data/sig/metronome_sdk/models/v1/package_list_response.rbs +265 -5
  88. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +263 -5
  89. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +468 -5
  90. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +428 -5
  91. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +427 -5
  92. data/sig/metronome_sdk/resources/v1/alerts.rbs +1 -0
  93. data/sig/metronome_sdk/resources/v1/contracts.rbs +13 -0
  94. data/sig/metronome_sdk/resources/v1/customers/alerts.rbs +1 -0
  95. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +1 -0
  96. metadata +8 -2
@@ -73,6 +73,17 @@ module MetronomeSDK
73
73
  sig { params(id: String).void }
74
74
  attr_writer :id
75
75
 
76
+ sig { returns(T.nilable(MetronomeSDK::Subscription::BillingCycleConfig)) }
77
+ attr_reader :billing_cycle_config
78
+
79
+ sig do
80
+ params(
81
+ billing_cycle_config:
82
+ MetronomeSDK::Subscription::BillingCycleConfig::OrHash
83
+ ).void
84
+ end
85
+ attr_writer :billing_cycle_config
86
+
76
87
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
77
88
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
78
89
  attr_reader :custom_fields
@@ -126,6 +137,8 @@ module MetronomeSDK
126
137
  subscription_rate:
127
138
  MetronomeSDK::Subscription::SubscriptionRate::OrHash,
128
139
  id: String,
140
+ billing_cycle_config:
141
+ MetronomeSDK::Subscription::BillingCycleConfig::OrHash,
129
142
  custom_fields: T::Hash[Symbol, String],
130
143
  description: String,
131
144
  ending_before: Time,
@@ -155,6 +168,7 @@ module MetronomeSDK
155
168
  starting_at:,
156
169
  subscription_rate:,
157
170
  id: nil,
171
+ billing_cycle_config: nil,
158
172
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
159
173
  custom_fields: nil,
160
174
  description: nil,
@@ -179,6 +193,8 @@ module MetronomeSDK
179
193
  starting_at: Time,
180
194
  subscription_rate: MetronomeSDK::Subscription::SubscriptionRate,
181
195
  id: String,
196
+ billing_cycle_config:
197
+ MetronomeSDK::Subscription::BillingCycleConfig,
182
198
  custom_fields: T::Hash[Symbol, String],
183
199
  description: String,
184
200
  ending_before: Time,
@@ -401,14 +417,27 @@ module MetronomeSDK
401
417
  sig { returns(T::Boolean) }
402
418
  attr_accessor :is_prorated
403
419
 
420
+ sig do
421
+ returns(T.nilable(MetronomeSDK::Subscription::Proration::Rounding))
422
+ end
423
+ attr_reader :rounding
424
+
425
+ sig do
426
+ params(
427
+ rounding: MetronomeSDK::Subscription::Proration::Rounding::OrHash
428
+ ).void
429
+ end
430
+ attr_writer :rounding
431
+
404
432
  sig do
405
433
  params(
406
434
  invoice_behavior:
407
435
  MetronomeSDK::Subscription::Proration::InvoiceBehavior::OrSymbol,
408
- is_prorated: T::Boolean
436
+ is_prorated: T::Boolean,
437
+ rounding: MetronomeSDK::Subscription::Proration::Rounding::OrHash
409
438
  ).returns(T.attached_class)
410
439
  end
411
- def self.new(invoice_behavior:, is_prorated:)
440
+ def self.new(invoice_behavior:, is_prorated:, rounding: nil)
412
441
  end
413
442
 
414
443
  sig do
@@ -416,7 +445,8 @@ module MetronomeSDK
416
445
  {
417
446
  invoice_behavior:
418
447
  MetronomeSDK::Subscription::Proration::InvoiceBehavior::TaggedSymbol,
419
- is_prorated: T::Boolean
448
+ is_prorated: T::Boolean,
449
+ rounding: MetronomeSDK::Subscription::Proration::Rounding
420
450
  }
421
451
  )
422
452
  end
@@ -456,6 +486,98 @@ module MetronomeSDK
456
486
  def self.values
457
487
  end
458
488
  end
489
+
490
+ class Rounding < MetronomeSDK::Internal::Type::BaseModel
491
+ OrHash =
492
+ T.type_alias do
493
+ T.any(
494
+ MetronomeSDK::Subscription::Proration::Rounding,
495
+ MetronomeSDK::Internal::AnyHash
496
+ )
497
+ end
498
+
499
+ # Number of decimal places to round to. Applied directly to the stored monetary
500
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
501
+ # nearest 100 in the stored unit. For USD, this means rounding to the nearest
502
+ # dollar).
503
+ sig { returns(Float) }
504
+ attr_accessor :decimal_places
505
+
506
+ sig do
507
+ returns(
508
+ MetronomeSDK::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
509
+ )
510
+ end
511
+ attr_accessor :rounding_method
512
+
513
+ sig do
514
+ params(
515
+ decimal_places: Float,
516
+ rounding_method:
517
+ MetronomeSDK::Subscription::Proration::Rounding::RoundingMethod::OrSymbol
518
+ ).returns(T.attached_class)
519
+ end
520
+ def self.new(
521
+ # Number of decimal places to round to. Applied directly to the stored monetary
522
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
523
+ # nearest 100 in the stored unit. For USD, this means rounding to the nearest
524
+ # dollar).
525
+ decimal_places:,
526
+ rounding_method:
527
+ )
528
+ end
529
+
530
+ sig do
531
+ override.returns(
532
+ {
533
+ decimal_places: Float,
534
+ rounding_method:
535
+ MetronomeSDK::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
536
+ }
537
+ )
538
+ end
539
+ def to_hash
540
+ end
541
+
542
+ module RoundingMethod
543
+ extend MetronomeSDK::Internal::Type::Enum
544
+
545
+ TaggedSymbol =
546
+ T.type_alias do
547
+ T.all(
548
+ Symbol,
549
+ MetronomeSDK::Subscription::Proration::Rounding::RoundingMethod
550
+ )
551
+ end
552
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
553
+
554
+ HALF_UP =
555
+ T.let(
556
+ :HALF_UP,
557
+ MetronomeSDK::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
558
+ )
559
+ FLOOR =
560
+ T.let(
561
+ :FLOOR,
562
+ MetronomeSDK::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
563
+ )
564
+ CEILING =
565
+ T.let(
566
+ :CEILING,
567
+ MetronomeSDK::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
568
+ )
569
+
570
+ sig do
571
+ override.returns(
572
+ T::Array[
573
+ MetronomeSDK::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
574
+ ]
575
+ )
576
+ end
577
+ def self.values
578
+ end
579
+ end
580
+ end
459
581
  end
460
582
 
461
583
  # Determines how the subscription's quantity is controlled. Defaults to
@@ -657,6 +779,93 @@ module MetronomeSDK
657
779
  end
658
780
  end
659
781
 
782
+ class BillingCycleConfig < MetronomeSDK::Internal::Type::BaseModel
783
+ OrHash =
784
+ T.type_alias do
785
+ T.any(
786
+ MetronomeSDK::Subscription::BillingCycleConfig,
787
+ MetronomeSDK::Internal::AnyHash
788
+ )
789
+ end
790
+
791
+ # The date this subscription's billing cycle is anchored to.
792
+ sig { returns(Time) }
793
+ attr_accessor :anchor_date
794
+
795
+ # Controls whether this subscription consolidates onto usage invoices or gets its
796
+ # own scheduled invoice.
797
+ sig do
798
+ returns(
799
+ MetronomeSDK::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
800
+ )
801
+ end
802
+ attr_accessor :invoice_placement
803
+
804
+ sig do
805
+ params(
806
+ anchor_date: Time,
807
+ invoice_placement:
808
+ MetronomeSDK::Subscription::BillingCycleConfig::InvoicePlacement::OrSymbol
809
+ ).returns(T.attached_class)
810
+ end
811
+ def self.new(
812
+ # The date this subscription's billing cycle is anchored to.
813
+ anchor_date:,
814
+ # Controls whether this subscription consolidates onto usage invoices or gets its
815
+ # own scheduled invoice.
816
+ invoice_placement:
817
+ )
818
+ end
819
+
820
+ sig do
821
+ override.returns(
822
+ {
823
+ anchor_date: Time,
824
+ invoice_placement:
825
+ MetronomeSDK::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
826
+ }
827
+ )
828
+ end
829
+ def to_hash
830
+ end
831
+
832
+ # Controls whether this subscription consolidates onto usage invoices or gets its
833
+ # own scheduled invoice.
834
+ module InvoicePlacement
835
+ extend MetronomeSDK::Internal::Type::Enum
836
+
837
+ TaggedSymbol =
838
+ T.type_alias do
839
+ T.all(
840
+ Symbol,
841
+ MetronomeSDK::Subscription::BillingCycleConfig::InvoicePlacement
842
+ )
843
+ end
844
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
845
+
846
+ ON_SCHEDULED_INVOICE =
847
+ T.let(
848
+ :ON_SCHEDULED_INVOICE,
849
+ MetronomeSDK::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
850
+ )
851
+ ON_USAGE_INVOICE =
852
+ T.let(
853
+ :ON_USAGE_INVOICE,
854
+ MetronomeSDK::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
855
+ )
856
+
857
+ sig do
858
+ override.returns(
859
+ T::Array[
860
+ MetronomeSDK::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
861
+ ]
862
+ )
863
+ end
864
+ def self.values
865
+ end
866
+ end
867
+ end
868
+
660
869
  class SeatConfig < MetronomeSDK::Internal::Type::BaseModel
661
870
  OrHash =
662
871
  T.type_alias do
@@ -31,6 +31,28 @@ module MetronomeSDK
31
31
  sig { returns(Float) }
32
32
  attr_accessor :threshold
33
33
 
34
+ # Can be used with only `low_remaining_contract_credit_and_commit_balance_reached`
35
+ # notifications. Defines the balances that are considered when evaluating the
36
+ # alert.
37
+ sig do
38
+ returns(
39
+ T.nilable(
40
+ T::Array[MetronomeSDK::V1::AlertCreateParams::AlertSpecifier]
41
+ )
42
+ )
43
+ end
44
+ attr_reader :alert_specifiers
45
+
46
+ sig do
47
+ params(
48
+ alert_specifiers:
49
+ T::Array[
50
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::OrHash
51
+ ]
52
+ ).void
53
+ end
54
+ attr_writer :alert_specifiers
55
+
34
56
  # For threshold notifications of type `usage_threshold_reached`, specifies which
35
57
  # billable metric to track the usage for.
36
58
  sig { returns(T.nilable(String)) }
@@ -158,6 +180,10 @@ module MetronomeSDK
158
180
  MetronomeSDK::V1::AlertCreateParams::AlertType::OrSymbol,
159
181
  name: String,
160
182
  threshold: Float,
183
+ alert_specifiers:
184
+ T::Array[
185
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::OrHash
186
+ ],
161
187
  billable_metric_id: String,
162
188
  credit_grant_type_filters: T::Array[String],
163
189
  credit_type_id: String,
@@ -186,6 +212,10 @@ module MetronomeSDK
186
212
  # type, this number may represent a financial amount, the days remaining, or a
187
213
  # percentage reached.
188
214
  threshold:,
215
+ # Can be used with only `low_remaining_contract_credit_and_commit_balance_reached`
216
+ # notifications. Defines the balances that are considered when evaluating the
217
+ # alert.
218
+ alert_specifiers: nil,
189
219
  # For threshold notifications of type `usage_threshold_reached`, specifies which
190
220
  # billable metric to track the usage for.
191
221
  billable_metric_id: nil,
@@ -235,6 +265,8 @@ module MetronomeSDK
235
265
  MetronomeSDK::V1::AlertCreateParams::AlertType::OrSymbol,
236
266
  name: String,
237
267
  threshold: Float,
268
+ alert_specifiers:
269
+ T::Array[MetronomeSDK::V1::AlertCreateParams::AlertSpecifier],
238
270
  billable_metric_id: String,
239
271
  credit_grant_type_filters: T::Array[String],
240
272
  credit_type_id: String,
@@ -354,6 +386,347 @@ module MetronomeSDK
354
386
  end
355
387
  end
356
388
 
389
+ class AlertSpecifier < MetronomeSDK::Internal::Type::BaseModel
390
+ OrHash =
391
+ T.type_alias do
392
+ T.any(
393
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier,
394
+ MetronomeSDK::Internal::AnyHash
395
+ )
396
+ end
397
+
398
+ # A list of custom field filters for notification types that support advanced
399
+ # filtering
400
+ sig do
401
+ returns(
402
+ T.nilable(
403
+ T::Array[
404
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter
405
+ ]
406
+ )
407
+ )
408
+ end
409
+ attr_reader :custom_field_filters
410
+
411
+ sig do
412
+ params(
413
+ custom_field_filters:
414
+ T::Array[
415
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::OrHash
416
+ ]
417
+ ).void
418
+ end
419
+ attr_writer :custom_field_filters
420
+
421
+ # If provided, the specifier will not apply to balances that matches the inclusion
422
+ # criteria and any of the excluding values.
423
+ sig do
424
+ returns(
425
+ T.nilable(
426
+ T::Array[
427
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude
428
+ ]
429
+ )
430
+ )
431
+ end
432
+ attr_reader :exclude
433
+
434
+ sig do
435
+ params(
436
+ exclude:
437
+ T::Array[
438
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::OrHash
439
+ ]
440
+ ).void
441
+ end
442
+ attr_writer :exclude
443
+
444
+ sig do
445
+ params(
446
+ custom_field_filters:
447
+ T::Array[
448
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::OrHash
449
+ ],
450
+ exclude:
451
+ T::Array[
452
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::OrHash
453
+ ]
454
+ ).returns(T.attached_class)
455
+ end
456
+ def self.new(
457
+ # A list of custom field filters for notification types that support advanced
458
+ # filtering
459
+ custom_field_filters: nil,
460
+ # If provided, the specifier will not apply to balances that matches the inclusion
461
+ # criteria and any of the excluding values.
462
+ exclude: nil
463
+ )
464
+ end
465
+
466
+ sig do
467
+ override.returns(
468
+ {
469
+ custom_field_filters:
470
+ T::Array[
471
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter
472
+ ],
473
+ exclude:
474
+ T::Array[
475
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude
476
+ ]
477
+ }
478
+ )
479
+ end
480
+ def to_hash
481
+ end
482
+
483
+ class CustomFieldFilter < MetronomeSDK::Internal::Type::BaseModel
484
+ OrHash =
485
+ T.type_alias do
486
+ T.any(
487
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter,
488
+ MetronomeSDK::Internal::AnyHash
489
+ )
490
+ end
491
+
492
+ sig do
493
+ returns(
494
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::Entity::OrSymbol
495
+ )
496
+ end
497
+ attr_accessor :entity
498
+
499
+ sig { returns(String) }
500
+ attr_accessor :key
501
+
502
+ sig { returns(T.nilable(String)) }
503
+ attr_reader :value
504
+
505
+ sig { params(value: String).void }
506
+ attr_writer :value
507
+
508
+ sig do
509
+ params(
510
+ entity:
511
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::Entity::OrSymbol,
512
+ key: String,
513
+ value: String
514
+ ).returns(T.attached_class)
515
+ end
516
+ def self.new(entity:, key:, value: nil)
517
+ end
518
+
519
+ sig do
520
+ override.returns(
521
+ {
522
+ entity:
523
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::Entity::OrSymbol,
524
+ key: String,
525
+ value: String
526
+ }
527
+ )
528
+ end
529
+ def to_hash
530
+ end
531
+
532
+ module Entity
533
+ extend MetronomeSDK::Internal::Type::Enum
534
+
535
+ TaggedSymbol =
536
+ T.type_alias do
537
+ T.all(
538
+ Symbol,
539
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::Entity
540
+ )
541
+ end
542
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
543
+
544
+ CONTRACT =
545
+ T.let(
546
+ :Contract,
547
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::Entity::TaggedSymbol
548
+ )
549
+ COMMIT =
550
+ T.let(
551
+ :Commit,
552
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::Entity::TaggedSymbol
553
+ )
554
+ CONTRACT_CREDIT =
555
+ T.let(
556
+ :ContractCredit,
557
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::Entity::TaggedSymbol
558
+ )
559
+ CONTRACT_CREDIT_OR_COMMIT =
560
+ T.let(
561
+ :ContractCreditOrCommit,
562
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::Entity::TaggedSymbol
563
+ )
564
+
565
+ sig do
566
+ override.returns(
567
+ T::Array[
568
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::CustomFieldFilter::Entity::TaggedSymbol
569
+ ]
570
+ )
571
+ end
572
+ def self.values
573
+ end
574
+ end
575
+ end
576
+
577
+ class Exclude < MetronomeSDK::Internal::Type::BaseModel
578
+ OrHash =
579
+ T.type_alias do
580
+ T.any(
581
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude,
582
+ MetronomeSDK::Internal::AnyHash
583
+ )
584
+ end
585
+
586
+ # A list of custom field filters for notification types that support advanced
587
+ # filtering
588
+ sig do
589
+ returns(
590
+ T.nilable(
591
+ T::Array[
592
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter
593
+ ]
594
+ )
595
+ )
596
+ end
597
+ attr_reader :custom_field_filters
598
+
599
+ sig do
600
+ params(
601
+ custom_field_filters:
602
+ T::Array[
603
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::OrHash
604
+ ]
605
+ ).void
606
+ end
607
+ attr_writer :custom_field_filters
608
+
609
+ sig do
610
+ params(
611
+ custom_field_filters:
612
+ T::Array[
613
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::OrHash
614
+ ]
615
+ ).returns(T.attached_class)
616
+ end
617
+ def self.new(
618
+ # A list of custom field filters for notification types that support advanced
619
+ # filtering
620
+ custom_field_filters: nil
621
+ )
622
+ end
623
+
624
+ sig do
625
+ override.returns(
626
+ {
627
+ custom_field_filters:
628
+ T::Array[
629
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter
630
+ ]
631
+ }
632
+ )
633
+ end
634
+ def to_hash
635
+ end
636
+
637
+ class CustomFieldFilter < MetronomeSDK::Internal::Type::BaseModel
638
+ OrHash =
639
+ T.type_alias do
640
+ T.any(
641
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter,
642
+ MetronomeSDK::Internal::AnyHash
643
+ )
644
+ end
645
+
646
+ sig do
647
+ returns(
648
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol
649
+ )
650
+ end
651
+ attr_accessor :entity
652
+
653
+ sig { returns(String) }
654
+ attr_accessor :key
655
+
656
+ sig { returns(String) }
657
+ attr_accessor :value
658
+
659
+ sig do
660
+ params(
661
+ entity:
662
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
663
+ key: String,
664
+ value: String
665
+ ).returns(T.attached_class)
666
+ end
667
+ def self.new(entity:, key:, value:)
668
+ end
669
+
670
+ sig do
671
+ override.returns(
672
+ {
673
+ entity:
674
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
675
+ key: String,
676
+ value: String
677
+ }
678
+ )
679
+ end
680
+ def to_hash
681
+ end
682
+
683
+ module Entity
684
+ extend MetronomeSDK::Internal::Type::Enum
685
+
686
+ TaggedSymbol =
687
+ T.type_alias do
688
+ T.all(
689
+ Symbol,
690
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::Entity
691
+ )
692
+ end
693
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
694
+
695
+ CONTRACT =
696
+ T.let(
697
+ :Contract,
698
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
699
+ )
700
+ COMMIT =
701
+ T.let(
702
+ :Commit,
703
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
704
+ )
705
+ CONTRACT_CREDIT =
706
+ T.let(
707
+ :ContractCredit,
708
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
709
+ )
710
+ CONTRACT_CREDIT_OR_COMMIT =
711
+ T.let(
712
+ :ContractCreditOrCommit,
713
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
714
+ )
715
+
716
+ sig do
717
+ override.returns(
718
+ T::Array[
719
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
720
+ ]
721
+ )
722
+ end
723
+ def self.values
724
+ end
725
+ end
726
+ end
727
+ end
728
+ end
729
+
357
730
  class CustomFieldFilter < MetronomeSDK::Internal::Type::BaseModel
358
731
  OrHash =
359
732
  T.type_alias do