metronome-sdk 3.5.0 → 3.7.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 (126) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/client.rb +15 -1
  5. data/lib/metronome_sdk/internal/transport/base_client.rb +2 -0
  6. data/lib/metronome_sdk/internal/type/enum.rb +0 -25
  7. data/lib/metronome_sdk/models/commit.rb +27 -1
  8. data/lib/metronome_sdk/models/contract.rb +140 -1
  9. data/lib/metronome_sdk/models/contract_v2.rb +530 -6
  10. data/lib/metronome_sdk/models/contract_without_amendments.rb +142 -1
  11. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +105 -2
  12. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +103 -2
  13. data/lib/metronome_sdk/models/spend_threshold_configuration.rb +33 -1
  14. data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +33 -1
  15. data/lib/metronome_sdk/models/v1/alert_create_params.rb +1 -0
  16. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +29 -177
  17. data/lib/metronome_sdk/models/v1/contract_create_params.rb +147 -180
  18. data/lib/metronome_sdk/models/v1/contract_create_response.rb +1134 -3
  19. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +119 -0
  20. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_response.rb +315 -0
  21. data/lib/metronome_sdk/models/v1/contracts/product_create_params.rb +31 -1
  22. data/lib/metronome_sdk/models/v1/contracts/product_update_params.rb +31 -1
  23. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +1 -0
  24. data/lib/metronome_sdk/models/v1/customers/invoice.rb +8 -1
  25. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +29 -1
  26. data/lib/metronome_sdk/models/v1/package_create_params.rb +115 -18
  27. data/lib/metronome_sdk/models/v1/package_list_response.rb +110 -1
  28. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +114 -1
  29. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +303 -5
  30. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +3862 -3
  31. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +507 -6
  32. data/lib/metronome_sdk/resources/v1/contracts/products.rb +6 -2
  33. data/lib/metronome_sdk/resources/v1/contracts.rb +72 -3
  34. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +5 -1
  35. data/lib/metronome_sdk/resources/v1/packages.rb +6 -7
  36. data/lib/metronome_sdk/resources/v1.rb +0 -4
  37. data/lib/metronome_sdk/resources/v2/contracts.rb +5 -1
  38. data/lib/metronome_sdk/version.rb +1 -1
  39. data/lib/metronome_sdk.rb +2 -8
  40. data/rbi/metronome_sdk/models/commit.rbi +48 -0
  41. data/rbi/metronome_sdk/models/contract.rbi +354 -0
  42. data/rbi/metronome_sdk/models/contract_v2.rbi +1172 -4
  43. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +368 -0
  44. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +289 -6
  45. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +283 -6
  46. data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +78 -3
  47. data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +78 -3
  48. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +5 -0
  49. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +54 -396
  50. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +370 -398
  51. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +2448 -4
  52. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +179 -0
  53. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_response.rbi +714 -0
  54. data/rbi/metronome_sdk/models/v1/contracts/product_create_params.rbi +74 -0
  55. data/rbi/metronome_sdk/models/v1/contracts/product_update_params.rbi +74 -0
  56. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +5 -0
  57. data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +9 -0
  58. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +75 -0
  59. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +310 -56
  60. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +307 -0
  61. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +307 -0
  62. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +734 -11
  63. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +8612 -4
  64. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1355 -219
  65. data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +18 -0
  66. data/rbi/metronome_sdk/resources/v1/contracts.rbi +88 -3
  67. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +7 -0
  68. data/rbi/metronome_sdk/resources/v1/packages.rbi +8 -7
  69. data/rbi/metronome_sdk/resources/v1.rbi +0 -3
  70. data/rbi/metronome_sdk/resources/v2/contracts.rbi +10 -0
  71. data/sig/metronome_sdk/models/commit.rbs +19 -0
  72. data/sig/metronome_sdk/models/contract.rbs +151 -0
  73. data/sig/metronome_sdk/models/contract_v2.rbs +494 -6
  74. data/sig/metronome_sdk/models/contract_without_amendments.rbs +151 -0
  75. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +116 -6
  76. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +116 -6
  77. data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +31 -3
  78. data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +31 -3
  79. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +3 -1
  80. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +19 -137
  81. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +134 -137
  82. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +1045 -4
  83. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +96 -0
  84. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_response.rbs +299 -0
  85. data/sig/metronome_sdk/models/v1/contracts/product_create_params.rbs +20 -0
  86. data/sig/metronome_sdk/models/v1/contracts/product_update_params.rbs +20 -0
  87. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +3 -1
  88. data/sig/metronome_sdk/models/v1/customers/invoice.rbs +7 -0
  89. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +29 -1
  90. data/sig/metronome_sdk/models/v1/package_create_params.rbs +115 -20
  91. data/sig/metronome_sdk/models/v1/package_list_response.rbs +115 -0
  92. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +115 -0
  93. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +283 -9
  94. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +3792 -4
  95. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +461 -15
  96. data/sig/metronome_sdk/resources/v1/contracts/products.rbs +2 -0
  97. data/sig/metronome_sdk/resources/v1/contracts.rbs +16 -0
  98. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +2 -0
  99. data/sig/metronome_sdk/resources/v1/packages.rbs +1 -1
  100. data/sig/metronome_sdk/resources/v1.rbs +0 -2
  101. data/sig/metronome_sdk/resources/v2/contracts.rbs +2 -0
  102. metadata +8 -26
  103. data/lib/metronome_sdk/models/v1/payment.rb +0 -196
  104. data/lib/metronome_sdk/models/v1/payment_attempt_params.rb +0 -28
  105. data/lib/metronome_sdk/models/v1/payment_attempt_response.rb +0 -18
  106. data/lib/metronome_sdk/models/v1/payment_cancel_params.rb +0 -28
  107. data/lib/metronome_sdk/models/v1/payment_cancel_response.rb +0 -18
  108. data/lib/metronome_sdk/models/v1/payment_list_params.rb +0 -53
  109. data/lib/metronome_sdk/models/v1/payment_status.rb +0 -19
  110. data/lib/metronome_sdk/resources/v1/payments.rb +0 -102
  111. data/rbi/metronome_sdk/models/v1/payment.rbi +0 -403
  112. data/rbi/metronome_sdk/models/v1/payment_attempt_params.rbi +0 -48
  113. data/rbi/metronome_sdk/models/v1/payment_attempt_response.rbi +0 -35
  114. data/rbi/metronome_sdk/models/v1/payment_cancel_params.rbi +0 -48
  115. data/rbi/metronome_sdk/models/v1/payment_cancel_response.rbi +0 -35
  116. data/rbi/metronome_sdk/models/v1/payment_list_params.rbi +0 -91
  117. data/rbi/metronome_sdk/models/v1/payment_status.rbi +0 -33
  118. data/rbi/metronome_sdk/resources/v1/payments.rbi +0 -72
  119. data/sig/metronome_sdk/models/v1/payment.rbs +0 -243
  120. data/sig/metronome_sdk/models/v1/payment_attempt_params.rbs +0 -30
  121. data/sig/metronome_sdk/models/v1/payment_attempt_response.rbs +0 -15
  122. data/sig/metronome_sdk/models/v1/payment_cancel_params.rbs +0 -30
  123. data/sig/metronome_sdk/models/v1/payment_cancel_response.rbs +0 -15
  124. data/sig/metronome_sdk/models/v1/payment_list_params.rbs +0 -56
  125. data/sig/metronome_sdk/models/v1/payment_status.rbs +0 -19
  126. data/sig/metronome_sdk/resources/v1/payments.rbs +0 -30
@@ -255,6 +255,27 @@ module MetronomeSDK
255
255
  end
256
256
  attr_writer :add_spend_threshold_configuration
257
257
 
258
+ # Spend trackers to add to this contract. Aliases must be unique within a
259
+ # contract.
260
+ sig do
261
+ returns(
262
+ T.nilable(
263
+ T::Array[MetronomeSDK::V2::ContractEditParams::AddSpendTracker]
264
+ )
265
+ )
266
+ end
267
+ attr_reader :add_spend_trackers
268
+
269
+ sig do
270
+ params(
271
+ add_spend_trackers:
272
+ T::Array[
273
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::OrHash
274
+ ]
275
+ ).void
276
+ end
277
+ attr_writer :add_spend_trackers
278
+
258
279
  # Optional list of
259
280
  # [subscriptions](https://docs.metronome.com/manage-product-access/create-subscription/)
260
281
  # to add to the contract.
@@ -353,6 +374,13 @@ module MetronomeSDK
353
374
  end
354
375
  attr_writer :archive_scheduled_charges
355
376
 
377
+ # Aliases of spend trackers to archive.
378
+ sig { returns(T.nilable(T::Array[String])) }
379
+ attr_reader :archive_spend_trackers
380
+
381
+ sig { params(archive_spend_trackers: T::Array[String]).void }
382
+ attr_writer :archive_spend_trackers
383
+
356
384
  # IDs of overrides to remove
357
385
  sig do
358
386
  returns(
@@ -599,6 +627,10 @@ module MetronomeSDK
599
627
  ],
600
628
  add_spend_threshold_configuration:
601
629
  MetronomeSDK::SpendThresholdConfigurationV2::OrHash,
630
+ add_spend_trackers:
631
+ T::Array[
632
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::OrHash
633
+ ],
602
634
  add_subscriptions:
603
635
  T::Array[
604
636
  MetronomeSDK::V2::ContractEditParams::AddSubscription::OrHash
@@ -616,6 +648,7 @@ module MetronomeSDK
616
648
  T::Array[
617
649
  MetronomeSDK::V2::ContractEditParams::ArchiveScheduledCharge::OrHash
618
650
  ],
651
+ archive_spend_trackers: T::Array[String],
619
652
  remove_overrides:
620
653
  T::Array[
621
654
  MetronomeSDK::V2::ContractEditParams::RemoveOverride::OrHash
@@ -680,6 +713,9 @@ module MetronomeSDK
680
713
  add_revenue_system_configuration_update: nil,
681
714
  add_scheduled_charges: nil,
682
715
  add_spend_threshold_configuration: nil,
716
+ # Spend trackers to add to this contract. Aliases must be unique within a
717
+ # contract.
718
+ add_spend_trackers: nil,
683
719
  # Optional list of
684
720
  # [subscriptions](https://docs.metronome.com/manage-product-access/create-subscription/)
685
721
  # to add to the contract.
@@ -695,6 +731,8 @@ module MetronomeSDK
695
731
  archive_credits: nil,
696
732
  # IDs of scheduled charges to archive
697
733
  archive_scheduled_charges: nil,
734
+ # Aliases of spend trackers to archive.
735
+ archive_spend_trackers: nil,
698
736
  # IDs of overrides to remove
699
737
  remove_overrides: nil,
700
738
  # Optional uniqueness key to prevent duplicate contract edits.
@@ -767,6 +805,8 @@ module MetronomeSDK
767
805
  ],
768
806
  add_spend_threshold_configuration:
769
807
  MetronomeSDK::SpendThresholdConfigurationV2,
808
+ add_spend_trackers:
809
+ T::Array[MetronomeSDK::V2::ContractEditParams::AddSpendTracker],
770
810
  add_subscriptions:
771
811
  T::Array[MetronomeSDK::V2::ContractEditParams::AddSubscription],
772
812
  allow_contract_ending_before_finalized_invoice: T::Boolean,
@@ -778,6 +818,7 @@ module MetronomeSDK
778
818
  T::Array[
779
819
  MetronomeSDK::V2::ContractEditParams::ArchiveScheduledCharge
780
820
  ],
821
+ archive_spend_trackers: T::Array[String],
781
822
  remove_overrides:
782
823
  T::Array[MetronomeSDK::V2::ContractEditParams::RemoveOverride],
783
824
  uniqueness_key: String,
@@ -1348,6 +1389,24 @@ module MetronomeSDK
1348
1389
  end
1349
1390
  attr_writer :specifiers
1350
1391
 
1392
+ # Optional attributes for spend tracker integration. Immutable after creation.
1393
+ sig do
1394
+ returns(
1395
+ T.nilable(
1396
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes
1397
+ )
1398
+ )
1399
+ end
1400
+ attr_reader :spend_tracker_attributes
1401
+
1402
+ sig do
1403
+ params(
1404
+ spend_tracker_attributes:
1405
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes::OrHash
1406
+ ).void
1407
+ end
1408
+ attr_writer :spend_tracker_attributes
1409
+
1351
1410
  # A temporary ID for the commit that can be used to reference the commit for
1352
1411
  # commit specific overrides.
1353
1412
  sig { returns(T.nilable(String)) }
@@ -1381,6 +1440,8 @@ module MetronomeSDK
1381
1440
  MetronomeSDK::V2::ContractEditParams::AddCommit::RateType::OrSymbol,
1382
1441
  rollover_fraction: Float,
1383
1442
  specifiers: T::Array[MetronomeSDK::CommitSpecifierInput::OrHash],
1443
+ spend_tracker_attributes:
1444
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes::OrHash,
1384
1445
  temporary_id: String
1385
1446
  ).returns(T.attached_class)
1386
1447
  end
@@ -1431,6 +1492,8 @@ module MetronomeSDK
1431
1492
  # Instead, to target usage by product or product tag, pass those values in the
1432
1493
  # body of `specifiers`.
1433
1494
  specifiers: nil,
1495
+ # Optional attributes for spend tracker integration. Immutable after creation.
1496
+ spend_tracker_attributes: nil,
1434
1497
  # A temporary ID for the commit that can be used to reference the commit for
1435
1498
  # commit specific overrides.
1436
1499
  temporary_id: nil
@@ -1463,6 +1526,8 @@ module MetronomeSDK
1463
1526
  MetronomeSDK::V2::ContractEditParams::AddCommit::RateType::OrSymbol,
1464
1527
  rollover_fraction: Float,
1465
1528
  specifiers: T::Array[MetronomeSDK::CommitSpecifierInput],
1529
+ spend_tracker_attributes:
1530
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes,
1466
1531
  temporary_id: String
1467
1532
  }
1468
1533
  )
@@ -2406,6 +2471,36 @@ module MetronomeSDK
2406
2471
  def self.values
2407
2472
  end
2408
2473
  end
2474
+
2475
+ class SpendTrackerAttributes < MetronomeSDK::Internal::Type::BaseModel
2476
+ OrHash =
2477
+ T.type_alias do
2478
+ T.any(
2479
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes,
2480
+ MetronomeSDK::Internal::AnyHash
2481
+ )
2482
+ end
2483
+
2484
+ # If true, this commit will be included in spend trackers with discounted set to
2485
+ # DISCOUNTED_ONLY
2486
+ sig { returns(T::Boolean) }
2487
+ attr_accessor :counts_as_discounted
2488
+
2489
+ # Optional attributes for spend tracker integration. Immutable after creation.
2490
+ sig do
2491
+ params(counts_as_discounted: T::Boolean).returns(T.attached_class)
2492
+ end
2493
+ def self.new(
2494
+ # If true, this commit will be included in spend trackers with discounted set to
2495
+ # DISCOUNTED_ONLY
2496
+ counts_as_discounted:
2497
+ )
2498
+ end
2499
+
2500
+ sig { override.returns({ counts_as_discounted: T::Boolean }) }
2501
+ def to_hash
2502
+ end
2503
+ end
2409
2504
  end
2410
2505
 
2411
2506
  class AddCredit < MetronomeSDK::Internal::Type::BaseModel
@@ -6657,6 +6752,290 @@ module MetronomeSDK
6657
6752
  end
6658
6753
  end
6659
6754
 
6755
+ class AddSpendTracker < MetronomeSDK::Internal::Type::BaseModel
6756
+ OrHash =
6757
+ T.type_alias do
6758
+ T.any(
6759
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker,
6760
+ MetronomeSDK::Internal::AnyHash
6761
+ )
6762
+ end
6763
+
6764
+ # Human-readable identifier, unique per contract.
6765
+ sig { returns(String) }
6766
+ attr_accessor :alias_
6767
+
6768
+ sig do
6769
+ returns(
6770
+ T::Array[
6771
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier
6772
+ ]
6773
+ )
6774
+ end
6775
+ attr_accessor :applicable_spend_specifiers
6776
+
6777
+ sig { returns(String) }
6778
+ attr_accessor :credit_type_id
6779
+
6780
+ sig do
6781
+ returns(
6782
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::OrSymbol
6783
+ )
6784
+ end
6785
+ attr_accessor :reset_frequency
6786
+
6787
+ sig do
6788
+ params(
6789
+ alias_: String,
6790
+ applicable_spend_specifiers:
6791
+ T::Array[
6792
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::OrHash
6793
+ ],
6794
+ credit_type_id: String,
6795
+ reset_frequency:
6796
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::OrSymbol
6797
+ ).returns(T.attached_class)
6798
+ end
6799
+ def self.new(
6800
+ # Human-readable identifier, unique per contract.
6801
+ alias_:,
6802
+ applicable_spend_specifiers:,
6803
+ credit_type_id:,
6804
+ reset_frequency:
6805
+ )
6806
+ end
6807
+
6808
+ sig do
6809
+ override.returns(
6810
+ {
6811
+ alias_: String,
6812
+ applicable_spend_specifiers:
6813
+ T::Array[
6814
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier
6815
+ ],
6816
+ credit_type_id: String,
6817
+ reset_frequency:
6818
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::OrSymbol
6819
+ }
6820
+ )
6821
+ end
6822
+ def to_hash
6823
+ end
6824
+
6825
+ class ApplicableSpendSpecifier < MetronomeSDK::Internal::Type::BaseModel
6826
+ OrHash =
6827
+ T.type_alias do
6828
+ T.any(
6829
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier,
6830
+ MetronomeSDK::Internal::AnyHash
6831
+ )
6832
+ end
6833
+
6834
+ sig do
6835
+ returns(
6836
+ T::Array[
6837
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::OrSymbol
6838
+ ]
6839
+ )
6840
+ end
6841
+ attr_accessor :sources
6842
+
6843
+ sig do
6844
+ returns(
6845
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::OrSymbol
6846
+ )
6847
+ end
6848
+ attr_accessor :spend_type
6849
+
6850
+ # Filter by whether the spend was discounted. Defaults to ANY if omitted.
6851
+ sig do
6852
+ returns(
6853
+ T.nilable(
6854
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
6855
+ )
6856
+ )
6857
+ end
6858
+ attr_reader :discounted
6859
+
6860
+ sig do
6861
+ params(
6862
+ discounted:
6863
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
6864
+ ).void
6865
+ end
6866
+ attr_writer :discounted
6867
+
6868
+ sig do
6869
+ params(
6870
+ sources:
6871
+ T::Array[
6872
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::OrSymbol
6873
+ ],
6874
+ spend_type:
6875
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::OrSymbol,
6876
+ discounted:
6877
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
6878
+ ).returns(T.attached_class)
6879
+ end
6880
+ def self.new(
6881
+ sources:,
6882
+ spend_type:,
6883
+ # Filter by whether the spend was discounted. Defaults to ANY if omitted.
6884
+ discounted: nil
6885
+ )
6886
+ end
6887
+
6888
+ sig do
6889
+ override.returns(
6890
+ {
6891
+ sources:
6892
+ T::Array[
6893
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::OrSymbol
6894
+ ],
6895
+ spend_type:
6896
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::OrSymbol,
6897
+ discounted:
6898
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
6899
+ }
6900
+ )
6901
+ end
6902
+ def to_hash
6903
+ end
6904
+
6905
+ module Source
6906
+ extend MetronomeSDK::Internal::Type::Enum
6907
+
6908
+ TaggedSymbol =
6909
+ T.type_alias do
6910
+ T.all(
6911
+ Symbol,
6912
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source
6913
+ )
6914
+ end
6915
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6916
+
6917
+ THRESHOLD_RECHARGE =
6918
+ T.let(
6919
+ :THRESHOLD_RECHARGE,
6920
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
6921
+ )
6922
+ MANUAL =
6923
+ T.let(
6924
+ :MANUAL,
6925
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
6926
+ )
6927
+
6928
+ sig do
6929
+ override.returns(
6930
+ T::Array[
6931
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
6932
+ ]
6933
+ )
6934
+ end
6935
+ def self.values
6936
+ end
6937
+ end
6938
+
6939
+ module SpendType
6940
+ extend MetronomeSDK::Internal::Type::Enum
6941
+
6942
+ TaggedSymbol =
6943
+ T.type_alias do
6944
+ T.all(
6945
+ Symbol,
6946
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType
6947
+ )
6948
+ end
6949
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6950
+
6951
+ COMMIT_PURCHASE =
6952
+ T.let(
6953
+ :COMMIT_PURCHASE,
6954
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::TaggedSymbol
6955
+ )
6956
+
6957
+ sig do
6958
+ override.returns(
6959
+ T::Array[
6960
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::TaggedSymbol
6961
+ ]
6962
+ )
6963
+ end
6964
+ def self.values
6965
+ end
6966
+ end
6967
+
6968
+ # Filter by whether the spend was discounted. Defaults to ANY if omitted.
6969
+ module Discounted
6970
+ extend MetronomeSDK::Internal::Type::Enum
6971
+
6972
+ TaggedSymbol =
6973
+ T.type_alias do
6974
+ T.all(
6975
+ Symbol,
6976
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted
6977
+ )
6978
+ end
6979
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6980
+
6981
+ ANY =
6982
+ T.let(
6983
+ :ANY,
6984
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
6985
+ )
6986
+ DISCOUNTED_ONLY =
6987
+ T.let(
6988
+ :DISCOUNTED_ONLY,
6989
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
6990
+ )
6991
+ UNDISCOUNTED_ONLY =
6992
+ T.let(
6993
+ :UNDISCOUNTED_ONLY,
6994
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
6995
+ )
6996
+
6997
+ sig do
6998
+ override.returns(
6999
+ T::Array[
7000
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
7001
+ ]
7002
+ )
7003
+ end
7004
+ def self.values
7005
+ end
7006
+ end
7007
+ end
7008
+
7009
+ module ResetFrequency
7010
+ extend MetronomeSDK::Internal::Type::Enum
7011
+
7012
+ TaggedSymbol =
7013
+ T.type_alias do
7014
+ T.all(
7015
+ Symbol,
7016
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency
7017
+ )
7018
+ end
7019
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7020
+
7021
+ BILLING_PERIOD =
7022
+ T.let(
7023
+ :BILLING_PERIOD,
7024
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::TaggedSymbol
7025
+ )
7026
+
7027
+ sig do
7028
+ override.returns(
7029
+ T::Array[
7030
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::TaggedSymbol
7031
+ ]
7032
+ )
7033
+ end
7034
+ def self.values
7035
+ end
7036
+ end
7037
+ end
7038
+
6660
7039
  class AddSubscription < MetronomeSDK::Internal::Type::BaseModel
6661
7040
  OrHash =
6662
7041
  T.type_alias do
@@ -8567,6 +8946,17 @@ module MetronomeSDK
8567
8946
  sig { params(threshold_amount: Float).void }
8568
8947
  attr_writer :threshold_amount
8569
8948
 
8949
+ sig do
8950
+ returns(
8951
+ T.nilable(
8952
+ T::Array[
8953
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier
8954
+ ]
8955
+ )
8956
+ )
8957
+ end
8958
+ attr_accessor :threshold_balance_specifiers
8959
+
8570
8960
  sig do
8571
8961
  params(
8572
8962
  commit:
@@ -8579,7 +8969,13 @@ module MetronomeSDK
8579
8969
  is_enabled: T::Boolean,
8580
8970
  payment_gate_config: MetronomeSDK::PaymentGateConfigV2::OrHash,
8581
8971
  recharge_to_amount: Float,
8582
- threshold_amount: Float
8972
+ threshold_amount: Float,
8973
+ threshold_balance_specifiers:
8974
+ T.nilable(
8975
+ T::Array[
8976
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::OrHash
8977
+ ]
8978
+ )
8583
8979
  ).returns(T.attached_class)
8584
8980
  end
8585
8981
  def self.new(
@@ -8597,7 +8993,8 @@ module MetronomeSDK
8597
8993
  recharge_to_amount: nil,
8598
8994
  # Specify the threshold amount for the contract. Each time the contract's balance
8599
8995
  # lowers to this amount, a threshold charge will be initiated.
8600
- threshold_amount: nil
8996
+ threshold_amount: nil,
8997
+ threshold_balance_specifiers: nil
8601
8998
  )
8602
8999
  end
8603
9000
 
@@ -8614,7 +9011,13 @@ module MetronomeSDK
8614
9011
  is_enabled: T::Boolean,
8615
9012
  payment_gate_config: MetronomeSDK::PaymentGateConfigV2,
8616
9013
  recharge_to_amount: Float,
8617
- threshold_amount: Float
9014
+ threshold_amount: Float,
9015
+ threshold_balance_specifiers:
9016
+ T.nilable(
9017
+ T::Array[
9018
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier
9019
+ ]
9020
+ )
8618
9021
  }
8619
9022
  )
8620
9023
  end
@@ -8703,6 +9106,26 @@ module MetronomeSDK
8703
9106
  )
8704
9107
  end
8705
9108
 
9109
+ # Update the discount cap. Set to null to remove an existing cap.
9110
+ sig do
9111
+ returns(
9112
+ T.nilable(
9113
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap
9114
+ )
9115
+ )
9116
+ end
9117
+ attr_reader :cap
9118
+
9119
+ sig do
9120
+ params(
9121
+ cap:
9122
+ T.nilable(
9123
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap::OrHash
9124
+ )
9125
+ ).void
9126
+ end
9127
+ attr_writer :cap
9128
+
8706
9129
  # The fraction of the original amount that the customer pays after applying the
8707
9130
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
8708
9131
  # the customer pays 85% of the original amount (a 15% discount).
@@ -8710,11 +9133,17 @@ module MetronomeSDK
8710
9133
  attr_accessor :payment_fraction
8711
9134
 
8712
9135
  sig do
8713
- params(payment_fraction: T.nilable(Float)).returns(
8714
- T.attached_class
8715
- )
9136
+ params(
9137
+ cap:
9138
+ T.nilable(
9139
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap::OrHash
9140
+ ),
9141
+ payment_fraction: T.nilable(Float)
9142
+ ).returns(T.attached_class)
8716
9143
  end
8717
9144
  def self.new(
9145
+ # Update the discount cap. Set to null to remove an existing cap.
9146
+ cap: nil,
8718
9147
  # The fraction of the original amount that the customer pays after applying the
8719
9148
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
8720
9149
  # the customer pays 85% of the original amount (a 15% discount).
@@ -8722,9 +9151,229 @@ module MetronomeSDK
8722
9151
  )
8723
9152
  end
8724
9153
 
8725
- sig { override.returns({ payment_fraction: T.nilable(Float) }) }
9154
+ sig do
9155
+ override.returns(
9156
+ {
9157
+ cap:
9158
+ T.nilable(
9159
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap
9160
+ ),
9161
+ payment_fraction: T.nilable(Float)
9162
+ }
9163
+ )
9164
+ end
8726
9165
  def to_hash
8727
9166
  end
9167
+
9168
+ class Cap < MetronomeSDK::Internal::Type::BaseModel
9169
+ OrHash =
9170
+ T.type_alias do
9171
+ T.any(
9172
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap,
9173
+ MetronomeSDK::Internal::AnyHash
9174
+ )
9175
+ end
9176
+
9177
+ # Accumulated spend ceiling above which the discount stops applying.
9178
+ sig { returns(Float) }
9179
+ attr_accessor :amount
9180
+
9181
+ # Alias of the spend tracker this cap is measured against.
9182
+ sig { returns(String) }
9183
+ attr_accessor :spend_tracker_alias
9184
+
9185
+ # Update the discount cap. Set to null to remove an existing cap.
9186
+ sig do
9187
+ params(amount: Float, spend_tracker_alias: String).returns(
9188
+ T.attached_class
9189
+ )
9190
+ end
9191
+ def self.new(
9192
+ # Accumulated spend ceiling above which the discount stops applying.
9193
+ amount:,
9194
+ # Alias of the spend tracker this cap is measured against.
9195
+ spend_tracker_alias:
9196
+ )
9197
+ end
9198
+
9199
+ sig do
9200
+ override.returns({ amount: Float, spend_tracker_alias: String })
9201
+ end
9202
+ def to_hash
9203
+ end
9204
+ end
9205
+ end
9206
+
9207
+ class ThresholdBalanceSpecifier < MetronomeSDK::Internal::Type::BaseModel
9208
+ OrHash =
9209
+ T.type_alias do
9210
+ T.any(
9211
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier,
9212
+ MetronomeSDK::Internal::AnyHash
9213
+ )
9214
+ end
9215
+
9216
+ sig do
9217
+ returns(
9218
+ T::Array[
9219
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude
9220
+ ]
9221
+ )
9222
+ end
9223
+ attr_accessor :exclude
9224
+
9225
+ sig do
9226
+ params(
9227
+ exclude:
9228
+ T::Array[
9229
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::OrHash
9230
+ ]
9231
+ ).returns(T.attached_class)
9232
+ end
9233
+ def self.new(exclude:)
9234
+ end
9235
+
9236
+ sig do
9237
+ override.returns(
9238
+ {
9239
+ exclude:
9240
+ T::Array[
9241
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude
9242
+ ]
9243
+ }
9244
+ )
9245
+ end
9246
+ def to_hash
9247
+ end
9248
+
9249
+ class Exclude < MetronomeSDK::Internal::Type::BaseModel
9250
+ OrHash =
9251
+ T.type_alias do
9252
+ T.any(
9253
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude,
9254
+ MetronomeSDK::Internal::AnyHash
9255
+ )
9256
+ end
9257
+
9258
+ sig do
9259
+ returns(
9260
+ T::Array[
9261
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
9262
+ ]
9263
+ )
9264
+ end
9265
+ attr_accessor :custom_field_filters
9266
+
9267
+ sig do
9268
+ params(
9269
+ custom_field_filters:
9270
+ T::Array[
9271
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::OrHash
9272
+ ]
9273
+ ).returns(T.attached_class)
9274
+ end
9275
+ def self.new(custom_field_filters:)
9276
+ end
9277
+
9278
+ sig do
9279
+ override.returns(
9280
+ {
9281
+ custom_field_filters:
9282
+ T::Array[
9283
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
9284
+ ]
9285
+ }
9286
+ )
9287
+ end
9288
+ def to_hash
9289
+ end
9290
+
9291
+ class CustomFieldFilter < MetronomeSDK::Internal::Type::BaseModel
9292
+ OrHash =
9293
+ T.type_alias do
9294
+ T.any(
9295
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter,
9296
+ MetronomeSDK::Internal::AnyHash
9297
+ )
9298
+ end
9299
+
9300
+ sig do
9301
+ returns(
9302
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol
9303
+ )
9304
+ end
9305
+ attr_accessor :entity
9306
+
9307
+ sig { returns(String) }
9308
+ attr_accessor :key
9309
+
9310
+ sig { returns(String) }
9311
+ attr_accessor :value
9312
+
9313
+ sig do
9314
+ params(
9315
+ entity:
9316
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
9317
+ key: String,
9318
+ value: String
9319
+ ).returns(T.attached_class)
9320
+ end
9321
+ def self.new(entity:, key:, value:)
9322
+ end
9323
+
9324
+ sig do
9325
+ override.returns(
9326
+ {
9327
+ entity:
9328
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
9329
+ key: String,
9330
+ value: String
9331
+ }
9332
+ )
9333
+ end
9334
+ def to_hash
9335
+ end
9336
+
9337
+ module Entity
9338
+ extend MetronomeSDK::Internal::Type::Enum
9339
+
9340
+ TaggedSymbol =
9341
+ T.type_alias do
9342
+ T.all(
9343
+ Symbol,
9344
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity
9345
+ )
9346
+ end
9347
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
9348
+
9349
+ COMMIT =
9350
+ T.let(
9351
+ :Commit,
9352
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
9353
+ )
9354
+ CONTRACT_CREDIT =
9355
+ T.let(
9356
+ :ContractCredit,
9357
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
9358
+ )
9359
+ CONTRACT_CREDIT_OR_COMMIT =
9360
+ T.let(
9361
+ :ContractCreditOrCommit,
9362
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
9363
+ )
9364
+
9365
+ sig do
9366
+ override.returns(
9367
+ T::Array[
9368
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
9369
+ ]
9370
+ )
9371
+ end
9372
+ def self.values
9373
+ end
9374
+ end
9375
+ end
9376
+ end
8728
9377
  end
8729
9378
  end
8730
9379
 
@@ -9541,6 +10190,26 @@ module MetronomeSDK
9541
10190
  )
9542
10191
  end
9543
10192
 
10193
+ # Update the discount cap. Set to null to remove an existing cap.
10194
+ sig do
10195
+ returns(
10196
+ T.nilable(
10197
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap
10198
+ )
10199
+ )
10200
+ end
10201
+ attr_reader :cap
10202
+
10203
+ sig do
10204
+ params(
10205
+ cap:
10206
+ T.nilable(
10207
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap::OrHash
10208
+ )
10209
+ ).void
10210
+ end
10211
+ attr_writer :cap
10212
+
9544
10213
  # The fraction of the original amount that the customer pays after applying the
9545
10214
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
9546
10215
  # the customer pays 85% of the original amount (a 15% discount).
@@ -9548,11 +10217,17 @@ module MetronomeSDK
9548
10217
  attr_accessor :payment_fraction
9549
10218
 
9550
10219
  sig do
9551
- params(payment_fraction: T.nilable(Float)).returns(
9552
- T.attached_class
9553
- )
10220
+ params(
10221
+ cap:
10222
+ T.nilable(
10223
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap::OrHash
10224
+ ),
10225
+ payment_fraction: T.nilable(Float)
10226
+ ).returns(T.attached_class)
9554
10227
  end
9555
10228
  def self.new(
10229
+ # Update the discount cap. Set to null to remove an existing cap.
10230
+ cap: nil,
9556
10231
  # The fraction of the original amount that the customer pays after applying the
9557
10232
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
9558
10233
  # the customer pays 85% of the original amount (a 15% discount).
@@ -9560,9 +10235,57 @@ module MetronomeSDK
9560
10235
  )
9561
10236
  end
9562
10237
 
9563
- sig { override.returns({ payment_fraction: T.nilable(Float) }) }
10238
+ sig do
10239
+ override.returns(
10240
+ {
10241
+ cap:
10242
+ T.nilable(
10243
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap
10244
+ ),
10245
+ payment_fraction: T.nilable(Float)
10246
+ }
10247
+ )
10248
+ end
9564
10249
  def to_hash
9565
10250
  end
10251
+
10252
+ class Cap < MetronomeSDK::Internal::Type::BaseModel
10253
+ OrHash =
10254
+ T.type_alias do
10255
+ T.any(
10256
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap,
10257
+ MetronomeSDK::Internal::AnyHash
10258
+ )
10259
+ end
10260
+
10261
+ # Accumulated spend ceiling above which the discount stops applying.
10262
+ sig { returns(Float) }
10263
+ attr_accessor :amount
10264
+
10265
+ # Alias of the spend tracker this cap is measured against.
10266
+ sig { returns(String) }
10267
+ attr_accessor :spend_tracker_alias
10268
+
10269
+ # Update the discount cap. Set to null to remove an existing cap.
10270
+ sig do
10271
+ params(amount: Float, spend_tracker_alias: String).returns(
10272
+ T.attached_class
10273
+ )
10274
+ end
10275
+ def self.new(
10276
+ # Accumulated spend ceiling above which the discount stops applying.
10277
+ amount:,
10278
+ # Alias of the spend tracker this cap is measured against.
10279
+ spend_tracker_alias:
10280
+ )
10281
+ end
10282
+
10283
+ sig do
10284
+ override.returns({ amount: Float, spend_tracker_alias: String })
10285
+ end
10286
+ def to_hash
10287
+ end
10288
+ end
9566
10289
  end
9567
10290
  end
9568
10291