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
@@ -286,12 +286,31 @@ module MetronomeSDK
286
286
  end
287
287
  attr_writer :spend_threshold_configuration
288
288
 
289
+ # Spend trackers attached to this contract.
290
+ sig do
291
+ returns(T.nilable(T::Array[MetronomeSDK::ContractV2::SpendTracker]))
292
+ end
293
+ attr_reader :spend_trackers
294
+
295
+ sig do
296
+ params(
297
+ spend_trackers:
298
+ T::Array[MetronomeSDK::ContractV2::SpendTracker::OrHash]
299
+ ).void
300
+ end
301
+ attr_writer :spend_trackers
302
+
289
303
  # List of subscriptions on the contract.
290
- sig { returns(T.nilable(T::Array[MetronomeSDK::Subscription])) }
304
+ sig do
305
+ returns(T.nilable(T::Array[MetronomeSDK::ContractV2::Subscription]))
306
+ end
291
307
  attr_reader :subscriptions
292
308
 
293
309
  sig do
294
- params(subscriptions: T::Array[MetronomeSDK::Subscription::OrHash]).void
310
+ params(
311
+ subscriptions:
312
+ T::Array[MetronomeSDK::ContractV2::Subscription::OrHash]
313
+ ).void
295
314
  end
296
315
  attr_writer :subscriptions
297
316
 
@@ -356,7 +375,10 @@ module MetronomeSDK
356
375
  MetronomeSDK::ContractV2::ScheduledChargesOnUsageInvoices::OrSymbol,
357
376
  spend_threshold_configuration:
358
377
  MetronomeSDK::SpendThresholdConfigurationV2::OrHash,
359
- subscriptions: T::Array[MetronomeSDK::Subscription::OrHash],
378
+ spend_trackers:
379
+ T::Array[MetronomeSDK::ContractV2::SpendTracker::OrHash],
380
+ subscriptions:
381
+ T::Array[MetronomeSDK::ContractV2::Subscription::OrHash],
360
382
  total_contract_value: Float,
361
383
  uniqueness_key: String
362
384
  ).returns(T.attached_class)
@@ -416,6 +438,8 @@ module MetronomeSDK
416
438
  # on a separate invoice from usage charges.
417
439
  scheduled_charges_on_usage_invoices: nil,
418
440
  spend_threshold_configuration: nil,
441
+ # Spend trackers attached to this contract.
442
+ spend_trackers: nil,
419
443
  # List of subscriptions on the contract.
420
444
  subscriptions: nil,
421
445
  total_contract_value: nil,
@@ -470,7 +494,8 @@ module MetronomeSDK
470
494
  MetronomeSDK::ContractV2::ScheduledChargesOnUsageInvoices::TaggedSymbol,
471
495
  spend_threshold_configuration:
472
496
  MetronomeSDK::SpendThresholdConfigurationV2,
473
- subscriptions: T::Array[MetronomeSDK::Subscription],
497
+ spend_trackers: T::Array[MetronomeSDK::ContractV2::SpendTracker],
498
+ subscriptions: T::Array[MetronomeSDK::ContractV2::Subscription],
474
499
  total_contract_value: Float,
475
500
  uniqueness_key: String
476
501
  }
@@ -737,6 +762,22 @@ module MetronomeSDK
737
762
  end
738
763
  attr_writer :specifiers
739
764
 
765
+ # Optional attributes controlling how this commit interacts with spend trackers.
766
+ sig do
767
+ returns(
768
+ T.nilable(MetronomeSDK::ContractV2::Commit::SpendTrackerAttributes)
769
+ )
770
+ end
771
+ attr_reader :spend_tracker_attributes
772
+
773
+ sig do
774
+ params(
775
+ spend_tracker_attributes:
776
+ MetronomeSDK::ContractV2::Commit::SpendTrackerAttributes::OrHash
777
+ ).void
778
+ end
779
+ attr_writer :spend_tracker_attributes
780
+
740
781
  # Attach a subscription to the recurring commit/credit.
741
782
  sig do
742
783
  returns(T.nilable(MetronomeSDK::RecurringCommitSubscriptionConfig))
@@ -800,6 +841,8 @@ module MetronomeSDK
800
841
  rollover_fraction: Float,
801
842
  salesforce_opportunity_id: String,
802
843
  specifiers: T::Array[MetronomeSDK::CommitSpecifier::OrHash],
844
+ spend_tracker_attributes:
845
+ MetronomeSDK::ContractV2::Commit::SpendTrackerAttributes::OrHash,
803
846
  subscription_config:
804
847
  MetronomeSDK::RecurringCommitSubscriptionConfig::OrHash
805
848
  ).returns(T.attached_class)
@@ -860,6 +903,8 @@ module MetronomeSDK
860
903
  # or credit. A customer's usage needs to meet the condition of at least one of the
861
904
  # specifiers to contribute to a commit's or credit's drawdown.
862
905
  specifiers: nil,
906
+ # Optional attributes controlling how this commit interacts with spend trackers.
907
+ spend_tracker_attributes: nil,
863
908
  # Attach a subscription to the recurring commit/credit.
864
909
  subscription_config: nil
865
910
  )
@@ -899,6 +944,8 @@ module MetronomeSDK
899
944
  rollover_fraction: Float,
900
945
  salesforce_opportunity_id: String,
901
946
  specifiers: T::Array[MetronomeSDK::CommitSpecifier],
947
+ spend_tracker_attributes:
948
+ MetronomeSDK::ContractV2::Commit::SpendTrackerAttributes,
902
949
  subscription_config:
903
950
  MetronomeSDK::RecurringCommitSubscriptionConfig
904
951
  }
@@ -2331,6 +2378,36 @@ module MetronomeSDK
2331
2378
  def to_hash
2332
2379
  end
2333
2380
  end
2381
+
2382
+ class SpendTrackerAttributes < MetronomeSDK::Internal::Type::BaseModel
2383
+ OrHash =
2384
+ T.type_alias do
2385
+ T.any(
2386
+ MetronomeSDK::ContractV2::Commit::SpendTrackerAttributes,
2387
+ MetronomeSDK::Internal::AnyHash
2388
+ )
2389
+ end
2390
+
2391
+ # If true, this commit is included in spend trackers with discounted set to
2392
+ # DISCOUNTED_ONLY
2393
+ sig { returns(T::Boolean) }
2394
+ attr_accessor :counts_as_discounted
2395
+
2396
+ # Optional attributes controlling how this commit interacts with spend trackers.
2397
+ sig do
2398
+ params(counts_as_discounted: T::Boolean).returns(T.attached_class)
2399
+ end
2400
+ def self.new(
2401
+ # If true, this commit is included in spend trackers with discounted set to
2402
+ # DISCOUNTED_ONLY
2403
+ counts_as_discounted:
2404
+ )
2405
+ end
2406
+
2407
+ sig { override.returns({ counts_as_discounted: T::Boolean }) }
2408
+ def to_hash
2409
+ end
2410
+ end
2334
2411
  end
2335
2412
 
2336
2413
  class Override < MetronomeSDK::Internal::Type::BaseModel
@@ -3211,6 +3288,12 @@ module MetronomeSDK
3211
3288
  sig { params(applicable_product_tags: T::Array[String]).void }
3212
3289
  attr_writer :applicable_product_tags
3213
3290
 
3291
+ sig { returns(T.nilable(Time)) }
3292
+ attr_reader :archived_at
3293
+
3294
+ sig { params(archived_at: Time).void }
3295
+ attr_writer :archived_at
3296
+
3214
3297
  # The current balance of the credit or commit. This balance reflects the amount of
3215
3298
  # credit or commit that the customer has access to use at this moment - thus,
3216
3299
  # expired and upcoming credit or commit segments contribute 0 to the balance. The
@@ -3384,6 +3467,7 @@ module MetronomeSDK
3384
3467
  applicable_contract_ids: T::Array[String],
3385
3468
  applicable_product_ids: T::Array[String],
3386
3469
  applicable_product_tags: T::Array[String],
3470
+ archived_at: Time,
3387
3471
  balance: Float,
3388
3472
  contract: MetronomeSDK::ContractV2::Credit::Contract::OrHash,
3389
3473
  created_at: Time,
@@ -3425,6 +3509,7 @@ module MetronomeSDK
3425
3509
  applicable_contract_ids: nil,
3426
3510
  applicable_product_ids: nil,
3427
3511
  applicable_product_tags: nil,
3512
+ archived_at: nil,
3428
3513
  # The current balance of the credit or commit. This balance reflects the amount of
3429
3514
  # credit or commit that the customer has access to use at this moment - thus,
3430
3515
  # expired and upcoming credit or commit segments contribute 0 to the balance. The
@@ -3478,6 +3563,7 @@ module MetronomeSDK
3478
3563
  applicable_contract_ids: T::Array[String],
3479
3564
  applicable_product_ids: T::Array[String],
3480
3565
  applicable_product_tags: T::Array[String],
3566
+ archived_at: Time,
3481
3567
  balance: Float,
3482
3568
  contract: MetronomeSDK::ContractV2::Credit::Contract,
3483
3569
  created_at: Time,
@@ -6664,6 +6750,1088 @@ module MetronomeSDK
6664
6750
  def self.values
6665
6751
  end
6666
6752
  end
6753
+
6754
+ class SpendTracker < MetronomeSDK::Internal::Type::BaseModel
6755
+ OrHash =
6756
+ T.type_alias do
6757
+ T.any(
6758
+ MetronomeSDK::ContractV2::SpendTracker,
6759
+ MetronomeSDK::Internal::AnyHash
6760
+ )
6761
+ end
6762
+
6763
+ # Human-readable identifier, unique per contract.
6764
+ sig { returns(String) }
6765
+ attr_accessor :alias_
6766
+
6767
+ sig do
6768
+ returns(
6769
+ T::Array[
6770
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier
6771
+ ]
6772
+ )
6773
+ end
6774
+ attr_accessor :applicable_spend_specifiers
6775
+
6776
+ sig { returns(String) }
6777
+ attr_accessor :credit_type_id
6778
+
6779
+ sig do
6780
+ returns(
6781
+ MetronomeSDK::ContractV2::SpendTracker::ResetFrequency::TaggedSymbol
6782
+ )
6783
+ end
6784
+ attr_accessor :reset_frequency
6785
+
6786
+ sig do
6787
+ returns(
6788
+ T.nilable(MetronomeSDK::ContractV2::SpendTracker::AccumulatedSpend)
6789
+ )
6790
+ end
6791
+ attr_reader :accumulated_spend
6792
+
6793
+ sig do
6794
+ params(
6795
+ accumulated_spend:
6796
+ MetronomeSDK::ContractV2::SpendTracker::AccumulatedSpend::OrHash
6797
+ ).void
6798
+ end
6799
+ attr_writer :accumulated_spend
6800
+
6801
+ sig do
6802
+ params(
6803
+ alias_: String,
6804
+ applicable_spend_specifiers:
6805
+ T::Array[
6806
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::OrHash
6807
+ ],
6808
+ credit_type_id: String,
6809
+ reset_frequency:
6810
+ MetronomeSDK::ContractV2::SpendTracker::ResetFrequency::OrSymbol,
6811
+ accumulated_spend:
6812
+ MetronomeSDK::ContractV2::SpendTracker::AccumulatedSpend::OrHash
6813
+ ).returns(T.attached_class)
6814
+ end
6815
+ def self.new(
6816
+ # Human-readable identifier, unique per contract.
6817
+ alias_:,
6818
+ applicable_spend_specifiers:,
6819
+ credit_type_id:,
6820
+ reset_frequency:,
6821
+ accumulated_spend: nil
6822
+ )
6823
+ end
6824
+
6825
+ sig do
6826
+ override.returns(
6827
+ {
6828
+ alias_: String,
6829
+ applicable_spend_specifiers:
6830
+ T::Array[
6831
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier
6832
+ ],
6833
+ credit_type_id: String,
6834
+ reset_frequency:
6835
+ MetronomeSDK::ContractV2::SpendTracker::ResetFrequency::TaggedSymbol,
6836
+ accumulated_spend:
6837
+ MetronomeSDK::ContractV2::SpendTracker::AccumulatedSpend
6838
+ }
6839
+ )
6840
+ end
6841
+ def to_hash
6842
+ end
6843
+
6844
+ class ApplicableSpendSpecifier < MetronomeSDK::Internal::Type::BaseModel
6845
+ OrHash =
6846
+ T.type_alias do
6847
+ T.any(
6848
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier,
6849
+ MetronomeSDK::Internal::AnyHash
6850
+ )
6851
+ end
6852
+
6853
+ sig do
6854
+ returns(
6855
+ T::Array[
6856
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
6857
+ ]
6858
+ )
6859
+ end
6860
+ attr_accessor :sources
6861
+
6862
+ sig do
6863
+ returns(
6864
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType::TaggedSymbol
6865
+ )
6866
+ end
6867
+ attr_accessor :spend_type
6868
+
6869
+ sig do
6870
+ returns(
6871
+ T.nilable(
6872
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
6873
+ )
6874
+ )
6875
+ end
6876
+ attr_reader :discounted
6877
+
6878
+ sig do
6879
+ params(
6880
+ discounted:
6881
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
6882
+ ).void
6883
+ end
6884
+ attr_writer :discounted
6885
+
6886
+ sig do
6887
+ params(
6888
+ sources:
6889
+ T::Array[
6890
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source::OrSymbol
6891
+ ],
6892
+ spend_type:
6893
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType::OrSymbol,
6894
+ discounted:
6895
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
6896
+ ).returns(T.attached_class)
6897
+ end
6898
+ def self.new(sources:, spend_type:, discounted: nil)
6899
+ end
6900
+
6901
+ sig do
6902
+ override.returns(
6903
+ {
6904
+ sources:
6905
+ T::Array[
6906
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
6907
+ ],
6908
+ spend_type:
6909
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType::TaggedSymbol,
6910
+ discounted:
6911
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
6912
+ }
6913
+ )
6914
+ end
6915
+ def to_hash
6916
+ end
6917
+
6918
+ module Source
6919
+ extend MetronomeSDK::Internal::Type::Enum
6920
+
6921
+ TaggedSymbol =
6922
+ T.type_alias do
6923
+ T.all(
6924
+ Symbol,
6925
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source
6926
+ )
6927
+ end
6928
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6929
+
6930
+ THRESHOLD_RECHARGE =
6931
+ T.let(
6932
+ :THRESHOLD_RECHARGE,
6933
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
6934
+ )
6935
+ MANUAL =
6936
+ T.let(
6937
+ :MANUAL,
6938
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
6939
+ )
6940
+
6941
+ sig do
6942
+ override.returns(
6943
+ T::Array[
6944
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
6945
+ ]
6946
+ )
6947
+ end
6948
+ def self.values
6949
+ end
6950
+ end
6951
+
6952
+ module SpendType
6953
+ extend MetronomeSDK::Internal::Type::Enum
6954
+
6955
+ TaggedSymbol =
6956
+ T.type_alias do
6957
+ T.all(
6958
+ Symbol,
6959
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType
6960
+ )
6961
+ end
6962
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6963
+
6964
+ COMMIT_PURCHASE =
6965
+ T.let(
6966
+ :COMMIT_PURCHASE,
6967
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType::TaggedSymbol
6968
+ )
6969
+
6970
+ sig do
6971
+ override.returns(
6972
+ T::Array[
6973
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType::TaggedSymbol
6974
+ ]
6975
+ )
6976
+ end
6977
+ def self.values
6978
+ end
6979
+ end
6980
+
6981
+ module Discounted
6982
+ extend MetronomeSDK::Internal::Type::Enum
6983
+
6984
+ TaggedSymbol =
6985
+ T.type_alias do
6986
+ T.all(
6987
+ Symbol,
6988
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted
6989
+ )
6990
+ end
6991
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6992
+
6993
+ ANY =
6994
+ T.let(
6995
+ :ANY,
6996
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
6997
+ )
6998
+ DISCOUNTED_ONLY =
6999
+ T.let(
7000
+ :DISCOUNTED_ONLY,
7001
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
7002
+ )
7003
+ UNDISCOUNTED_ONLY =
7004
+ T.let(
7005
+ :UNDISCOUNTED_ONLY,
7006
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
7007
+ )
7008
+
7009
+ sig do
7010
+ override.returns(
7011
+ T::Array[
7012
+ MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
7013
+ ]
7014
+ )
7015
+ end
7016
+ def self.values
7017
+ end
7018
+ end
7019
+ end
7020
+
7021
+ module ResetFrequency
7022
+ extend MetronomeSDK::Internal::Type::Enum
7023
+
7024
+ TaggedSymbol =
7025
+ T.type_alias do
7026
+ T.all(
7027
+ Symbol,
7028
+ MetronomeSDK::ContractV2::SpendTracker::ResetFrequency
7029
+ )
7030
+ end
7031
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7032
+
7033
+ BILLING_PERIOD =
7034
+ T.let(
7035
+ :BILLING_PERIOD,
7036
+ MetronomeSDK::ContractV2::SpendTracker::ResetFrequency::TaggedSymbol
7037
+ )
7038
+
7039
+ sig do
7040
+ override.returns(
7041
+ T::Array[
7042
+ MetronomeSDK::ContractV2::SpendTracker::ResetFrequency::TaggedSymbol
7043
+ ]
7044
+ )
7045
+ end
7046
+ def self.values
7047
+ end
7048
+ end
7049
+
7050
+ class AccumulatedSpend < MetronomeSDK::Internal::Type::BaseModel
7051
+ OrHash =
7052
+ T.type_alias do
7053
+ T.any(
7054
+ MetronomeSDK::ContractV2::SpendTracker::AccumulatedSpend,
7055
+ MetronomeSDK::Internal::AnyHash
7056
+ )
7057
+ end
7058
+
7059
+ sig { returns(Float) }
7060
+ attr_accessor :amount
7061
+
7062
+ sig { returns(Time) }
7063
+ attr_accessor :period_ending_before
7064
+
7065
+ sig { returns(Time) }
7066
+ attr_accessor :period_starting_at
7067
+
7068
+ sig do
7069
+ params(
7070
+ amount: Float,
7071
+ period_ending_before: Time,
7072
+ period_starting_at: Time
7073
+ ).returns(T.attached_class)
7074
+ end
7075
+ def self.new(amount:, period_ending_before:, period_starting_at:)
7076
+ end
7077
+
7078
+ sig do
7079
+ override.returns(
7080
+ {
7081
+ amount: Float,
7082
+ period_ending_before: Time,
7083
+ period_starting_at: Time
7084
+ }
7085
+ )
7086
+ end
7087
+ def to_hash
7088
+ end
7089
+ end
7090
+ end
7091
+
7092
+ class Subscription < MetronomeSDK::Internal::Type::BaseModel
7093
+ OrHash =
7094
+ T.type_alias do
7095
+ T.any(
7096
+ MetronomeSDK::ContractV2::Subscription,
7097
+ MetronomeSDK::Internal::AnyHash
7098
+ )
7099
+ end
7100
+
7101
+ # Previous, current, and next billing periods for the subscription.
7102
+ sig { returns(MetronomeSDK::ContractV2::Subscription::BillingPeriods) }
7103
+ attr_reader :billing_periods
7104
+
7105
+ sig do
7106
+ params(
7107
+ billing_periods:
7108
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::OrHash
7109
+ ).void
7110
+ end
7111
+ attr_writer :billing_periods
7112
+
7113
+ sig do
7114
+ returns(
7115
+ MetronomeSDK::ContractV2::Subscription::CollectionSchedule::TaggedSymbol
7116
+ )
7117
+ end
7118
+ attr_accessor :collection_schedule
7119
+
7120
+ sig { returns(MetronomeSDK::ContractV2::Subscription::Proration) }
7121
+ attr_reader :proration
7122
+
7123
+ sig do
7124
+ params(
7125
+ proration: MetronomeSDK::ContractV2::Subscription::Proration::OrHash
7126
+ ).void
7127
+ end
7128
+ attr_writer :proration
7129
+
7130
+ # Determines how the subscription's quantity is controlled. Defaults to
7131
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
7132
+ # directly on the subscription. `initial_quantity` must be provided with this
7133
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
7134
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
7135
+ # user_123) to increment and decrement a subscription quantity, rather than
7136
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
7137
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
7138
+ # provided with this option.
7139
+ sig do
7140
+ returns(
7141
+ MetronomeSDK::ContractV2::Subscription::QuantityManagementMode::TaggedSymbol
7142
+ )
7143
+ end
7144
+ attr_accessor :quantity_management_mode
7145
+
7146
+ # List of quantity schedule items for the subscription. Only includes the current
7147
+ # quantity and future quantity changes.
7148
+ sig do
7149
+ returns(
7150
+ T::Array[MetronomeSDK::ContractV2::Subscription::QuantitySchedule]
7151
+ )
7152
+ end
7153
+ attr_accessor :quantity_schedule
7154
+
7155
+ sig { returns(Time) }
7156
+ attr_accessor :starting_at
7157
+
7158
+ sig do
7159
+ returns(MetronomeSDK::ContractV2::Subscription::SubscriptionRate)
7160
+ end
7161
+ attr_reader :subscription_rate
7162
+
7163
+ sig do
7164
+ params(
7165
+ subscription_rate:
7166
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::OrHash
7167
+ ).void
7168
+ end
7169
+ attr_writer :subscription_rate
7170
+
7171
+ sig { returns(T.nilable(String)) }
7172
+ attr_reader :id
7173
+
7174
+ sig { params(id: String).void }
7175
+ attr_writer :id
7176
+
7177
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
7178
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
7179
+ attr_reader :custom_fields
7180
+
7181
+ sig { params(custom_fields: T::Hash[Symbol, String]).void }
7182
+ attr_writer :custom_fields
7183
+
7184
+ sig { returns(T.nilable(String)) }
7185
+ attr_reader :description
7186
+
7187
+ sig { params(description: String).void }
7188
+ attr_writer :description
7189
+
7190
+ sig { returns(T.nilable(Time)) }
7191
+ attr_reader :ending_before
7192
+
7193
+ sig { params(ending_before: Time).void }
7194
+ attr_writer :ending_before
7195
+
7196
+ sig { returns(T.nilable(String)) }
7197
+ attr_reader :fiat_credit_type_id
7198
+
7199
+ sig { params(fiat_credit_type_id: String).void }
7200
+ attr_writer :fiat_credit_type_id
7201
+
7202
+ sig { returns(T.nilable(String)) }
7203
+ attr_reader :name
7204
+
7205
+ sig { params(name: String).void }
7206
+ attr_writer :name
7207
+
7208
+ sig do
7209
+ returns(T.nilable(MetronomeSDK::ContractV2::Subscription::SeatConfig))
7210
+ end
7211
+ attr_reader :seat_config
7212
+
7213
+ sig do
7214
+ params(
7215
+ seat_config:
7216
+ MetronomeSDK::ContractV2::Subscription::SeatConfig::OrHash
7217
+ ).void
7218
+ end
7219
+ attr_writer :seat_config
7220
+
7221
+ sig do
7222
+ params(
7223
+ billing_periods:
7224
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::OrHash,
7225
+ collection_schedule:
7226
+ MetronomeSDK::ContractV2::Subscription::CollectionSchedule::OrSymbol,
7227
+ proration:
7228
+ MetronomeSDK::ContractV2::Subscription::Proration::OrHash,
7229
+ quantity_management_mode:
7230
+ MetronomeSDK::ContractV2::Subscription::QuantityManagementMode::OrSymbol,
7231
+ quantity_schedule:
7232
+ T::Array[
7233
+ MetronomeSDK::ContractV2::Subscription::QuantitySchedule::OrHash
7234
+ ],
7235
+ starting_at: Time,
7236
+ subscription_rate:
7237
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::OrHash,
7238
+ id: String,
7239
+ custom_fields: T::Hash[Symbol, String],
7240
+ description: String,
7241
+ ending_before: Time,
7242
+ fiat_credit_type_id: String,
7243
+ name: String,
7244
+ seat_config:
7245
+ MetronomeSDK::ContractV2::Subscription::SeatConfig::OrHash
7246
+ ).returns(T.attached_class)
7247
+ end
7248
+ def self.new(
7249
+ # Previous, current, and next billing periods for the subscription.
7250
+ billing_periods:,
7251
+ collection_schedule:,
7252
+ proration:,
7253
+ # Determines how the subscription's quantity is controlled. Defaults to
7254
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
7255
+ # directly on the subscription. `initial_quantity` must be provided with this
7256
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
7257
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
7258
+ # user_123) to increment and decrement a subscription quantity, rather than
7259
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
7260
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
7261
+ # provided with this option.
7262
+ quantity_management_mode:,
7263
+ # List of quantity schedule items for the subscription. Only includes the current
7264
+ # quantity and future quantity changes.
7265
+ quantity_schedule:,
7266
+ starting_at:,
7267
+ subscription_rate:,
7268
+ id: nil,
7269
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
7270
+ custom_fields: nil,
7271
+ description: nil,
7272
+ ending_before: nil,
7273
+ fiat_credit_type_id: nil,
7274
+ name: nil,
7275
+ seat_config: nil
7276
+ )
7277
+ end
7278
+
7279
+ sig do
7280
+ override.returns(
7281
+ {
7282
+ billing_periods:
7283
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods,
7284
+ collection_schedule:
7285
+ MetronomeSDK::ContractV2::Subscription::CollectionSchedule::TaggedSymbol,
7286
+ proration: MetronomeSDK::ContractV2::Subscription::Proration,
7287
+ quantity_management_mode:
7288
+ MetronomeSDK::ContractV2::Subscription::QuantityManagementMode::TaggedSymbol,
7289
+ quantity_schedule:
7290
+ T::Array[
7291
+ MetronomeSDK::ContractV2::Subscription::QuantitySchedule
7292
+ ],
7293
+ starting_at: Time,
7294
+ subscription_rate:
7295
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate,
7296
+ id: String,
7297
+ custom_fields: T::Hash[Symbol, String],
7298
+ description: String,
7299
+ ending_before: Time,
7300
+ fiat_credit_type_id: String,
7301
+ name: String,
7302
+ seat_config: MetronomeSDK::ContractV2::Subscription::SeatConfig
7303
+ }
7304
+ )
7305
+ end
7306
+ def to_hash
7307
+ end
7308
+
7309
+ class BillingPeriods < MetronomeSDK::Internal::Type::BaseModel
7310
+ OrHash =
7311
+ T.type_alias do
7312
+ T.any(
7313
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods,
7314
+ MetronomeSDK::Internal::AnyHash
7315
+ )
7316
+ end
7317
+
7318
+ sig do
7319
+ returns(
7320
+ T.nilable(
7321
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Current
7322
+ )
7323
+ )
7324
+ end
7325
+ attr_reader :current
7326
+
7327
+ sig do
7328
+ params(
7329
+ current:
7330
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Current::OrHash
7331
+ ).void
7332
+ end
7333
+ attr_writer :current
7334
+
7335
+ sig do
7336
+ returns(
7337
+ T.nilable(
7338
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Next
7339
+ )
7340
+ )
7341
+ end
7342
+ attr_reader :next_
7343
+
7344
+ sig do
7345
+ params(
7346
+ next_:
7347
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Next::OrHash
7348
+ ).void
7349
+ end
7350
+ attr_writer :next_
7351
+
7352
+ sig do
7353
+ returns(
7354
+ T.nilable(
7355
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Previous
7356
+ )
7357
+ )
7358
+ end
7359
+ attr_reader :previous
7360
+
7361
+ sig do
7362
+ params(
7363
+ previous:
7364
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Previous::OrHash
7365
+ ).void
7366
+ end
7367
+ attr_writer :previous
7368
+
7369
+ # Previous, current, and next billing periods for the subscription.
7370
+ sig do
7371
+ params(
7372
+ current:
7373
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Current::OrHash,
7374
+ next_:
7375
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Next::OrHash,
7376
+ previous:
7377
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Previous::OrHash
7378
+ ).returns(T.attached_class)
7379
+ end
7380
+ def self.new(current: nil, next_: nil, previous: nil)
7381
+ end
7382
+
7383
+ sig do
7384
+ override.returns(
7385
+ {
7386
+ current:
7387
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Current,
7388
+ next_:
7389
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Next,
7390
+ previous:
7391
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Previous
7392
+ }
7393
+ )
7394
+ end
7395
+ def to_hash
7396
+ end
7397
+
7398
+ class Current < MetronomeSDK::Internal::Type::BaseModel
7399
+ OrHash =
7400
+ T.type_alias do
7401
+ T.any(
7402
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Current,
7403
+ MetronomeSDK::Internal::AnyHash
7404
+ )
7405
+ end
7406
+
7407
+ sig { returns(Time) }
7408
+ attr_accessor :ending_before
7409
+
7410
+ sig { returns(Time) }
7411
+ attr_accessor :starting_at
7412
+
7413
+ sig do
7414
+ params(ending_before: Time, starting_at: Time).returns(
7415
+ T.attached_class
7416
+ )
7417
+ end
7418
+ def self.new(ending_before:, starting_at:)
7419
+ end
7420
+
7421
+ sig { override.returns({ ending_before: Time, starting_at: Time }) }
7422
+ def to_hash
7423
+ end
7424
+ end
7425
+
7426
+ class Next < MetronomeSDK::Internal::Type::BaseModel
7427
+ OrHash =
7428
+ T.type_alias do
7429
+ T.any(
7430
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Next,
7431
+ MetronomeSDK::Internal::AnyHash
7432
+ )
7433
+ end
7434
+
7435
+ sig { returns(Time) }
7436
+ attr_accessor :ending_before
7437
+
7438
+ sig { returns(Time) }
7439
+ attr_accessor :starting_at
7440
+
7441
+ sig do
7442
+ params(ending_before: Time, starting_at: Time).returns(
7443
+ T.attached_class
7444
+ )
7445
+ end
7446
+ def self.new(ending_before:, starting_at:)
7447
+ end
7448
+
7449
+ sig { override.returns({ ending_before: Time, starting_at: Time }) }
7450
+ def to_hash
7451
+ end
7452
+ end
7453
+
7454
+ class Previous < MetronomeSDK::Internal::Type::BaseModel
7455
+ OrHash =
7456
+ T.type_alias do
7457
+ T.any(
7458
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Previous,
7459
+ MetronomeSDK::Internal::AnyHash
7460
+ )
7461
+ end
7462
+
7463
+ sig { returns(Time) }
7464
+ attr_accessor :ending_before
7465
+
7466
+ sig { returns(Time) }
7467
+ attr_accessor :starting_at
7468
+
7469
+ sig do
7470
+ params(ending_before: Time, starting_at: Time).returns(
7471
+ T.attached_class
7472
+ )
7473
+ end
7474
+ def self.new(ending_before:, starting_at:)
7475
+ end
7476
+
7477
+ sig { override.returns({ ending_before: Time, starting_at: Time }) }
7478
+ def to_hash
7479
+ end
7480
+ end
7481
+ end
7482
+
7483
+ module CollectionSchedule
7484
+ extend MetronomeSDK::Internal::Type::Enum
7485
+
7486
+ TaggedSymbol =
7487
+ T.type_alias do
7488
+ T.all(
7489
+ Symbol,
7490
+ MetronomeSDK::ContractV2::Subscription::CollectionSchedule
7491
+ )
7492
+ end
7493
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7494
+
7495
+ ADVANCE =
7496
+ T.let(
7497
+ :ADVANCE,
7498
+ MetronomeSDK::ContractV2::Subscription::CollectionSchedule::TaggedSymbol
7499
+ )
7500
+ ARREARS =
7501
+ T.let(
7502
+ :ARREARS,
7503
+ MetronomeSDK::ContractV2::Subscription::CollectionSchedule::TaggedSymbol
7504
+ )
7505
+
7506
+ sig do
7507
+ override.returns(
7508
+ T::Array[
7509
+ MetronomeSDK::ContractV2::Subscription::CollectionSchedule::TaggedSymbol
7510
+ ]
7511
+ )
7512
+ end
7513
+ def self.values
7514
+ end
7515
+ end
7516
+
7517
+ class Proration < MetronomeSDK::Internal::Type::BaseModel
7518
+ OrHash =
7519
+ T.type_alias do
7520
+ T.any(
7521
+ MetronomeSDK::ContractV2::Subscription::Proration,
7522
+ MetronomeSDK::Internal::AnyHash
7523
+ )
7524
+ end
7525
+
7526
+ sig do
7527
+ returns(
7528
+ MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior::TaggedSymbol
7529
+ )
7530
+ end
7531
+ attr_accessor :invoice_behavior
7532
+
7533
+ sig { returns(T::Boolean) }
7534
+ attr_accessor :is_prorated
7535
+
7536
+ sig do
7537
+ params(
7538
+ invoice_behavior:
7539
+ MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior::OrSymbol,
7540
+ is_prorated: T::Boolean
7541
+ ).returns(T.attached_class)
7542
+ end
7543
+ def self.new(invoice_behavior:, is_prorated:)
7544
+ end
7545
+
7546
+ sig do
7547
+ override.returns(
7548
+ {
7549
+ invoice_behavior:
7550
+ MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior::TaggedSymbol,
7551
+ is_prorated: T::Boolean
7552
+ }
7553
+ )
7554
+ end
7555
+ def to_hash
7556
+ end
7557
+
7558
+ module InvoiceBehavior
7559
+ extend MetronomeSDK::Internal::Type::Enum
7560
+
7561
+ TaggedSymbol =
7562
+ T.type_alias do
7563
+ T.all(
7564
+ Symbol,
7565
+ MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior
7566
+ )
7567
+ end
7568
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7569
+
7570
+ BILL_IMMEDIATELY =
7571
+ T.let(
7572
+ :BILL_IMMEDIATELY,
7573
+ MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior::TaggedSymbol
7574
+ )
7575
+ BILL_ON_NEXT_COLLECTION_DATE =
7576
+ T.let(
7577
+ :BILL_ON_NEXT_COLLECTION_DATE,
7578
+ MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior::TaggedSymbol
7579
+ )
7580
+
7581
+ sig do
7582
+ override.returns(
7583
+ T::Array[
7584
+ MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior::TaggedSymbol
7585
+ ]
7586
+ )
7587
+ end
7588
+ def self.values
7589
+ end
7590
+ end
7591
+ end
7592
+
7593
+ # Determines how the subscription's quantity is controlled. Defaults to
7594
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
7595
+ # directly on the subscription. `initial_quantity` must be provided with this
7596
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
7597
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
7598
+ # user_123) to increment and decrement a subscription quantity, rather than
7599
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
7600
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
7601
+ # provided with this option.
7602
+ module QuantityManagementMode
7603
+ extend MetronomeSDK::Internal::Type::Enum
7604
+
7605
+ TaggedSymbol =
7606
+ T.type_alias do
7607
+ T.all(
7608
+ Symbol,
7609
+ MetronomeSDK::ContractV2::Subscription::QuantityManagementMode
7610
+ )
7611
+ end
7612
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7613
+
7614
+ SEAT_BASED =
7615
+ T.let(
7616
+ :SEAT_BASED,
7617
+ MetronomeSDK::ContractV2::Subscription::QuantityManagementMode::TaggedSymbol
7618
+ )
7619
+ QUANTITY_ONLY =
7620
+ T.let(
7621
+ :QUANTITY_ONLY,
7622
+ MetronomeSDK::ContractV2::Subscription::QuantityManagementMode::TaggedSymbol
7623
+ )
7624
+
7625
+ sig do
7626
+ override.returns(
7627
+ T::Array[
7628
+ MetronomeSDK::ContractV2::Subscription::QuantityManagementMode::TaggedSymbol
7629
+ ]
7630
+ )
7631
+ end
7632
+ def self.values
7633
+ end
7634
+ end
7635
+
7636
+ class QuantitySchedule < MetronomeSDK::Internal::Type::BaseModel
7637
+ OrHash =
7638
+ T.type_alias do
7639
+ T.any(
7640
+ MetronomeSDK::ContractV2::Subscription::QuantitySchedule,
7641
+ MetronomeSDK::Internal::AnyHash
7642
+ )
7643
+ end
7644
+
7645
+ sig { returns(Float) }
7646
+ attr_accessor :quantity
7647
+
7648
+ sig { returns(Time) }
7649
+ attr_accessor :starting_at
7650
+
7651
+ sig { returns(T.nilable(Time)) }
7652
+ attr_reader :ending_before
7653
+
7654
+ sig { params(ending_before: Time).void }
7655
+ attr_writer :ending_before
7656
+
7657
+ sig do
7658
+ params(
7659
+ quantity: Float,
7660
+ starting_at: Time,
7661
+ ending_before: Time
7662
+ ).returns(T.attached_class)
7663
+ end
7664
+ def self.new(quantity:, starting_at:, ending_before: nil)
7665
+ end
7666
+
7667
+ sig do
7668
+ override.returns(
7669
+ { quantity: Float, starting_at: Time, ending_before: Time }
7670
+ )
7671
+ end
7672
+ def to_hash
7673
+ end
7674
+ end
7675
+
7676
+ class SubscriptionRate < MetronomeSDK::Internal::Type::BaseModel
7677
+ OrHash =
7678
+ T.type_alias do
7679
+ T.any(
7680
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate,
7681
+ MetronomeSDK::Internal::AnyHash
7682
+ )
7683
+ end
7684
+
7685
+ sig do
7686
+ returns(
7687
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency::TaggedSymbol
7688
+ )
7689
+ end
7690
+ attr_accessor :billing_frequency
7691
+
7692
+ sig do
7693
+ returns(
7694
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::Product
7695
+ )
7696
+ end
7697
+ attr_reader :product
7698
+
7699
+ sig do
7700
+ params(
7701
+ product:
7702
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::Product::OrHash
7703
+ ).void
7704
+ end
7705
+ attr_writer :product
7706
+
7707
+ sig do
7708
+ params(
7709
+ billing_frequency:
7710
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency::OrSymbol,
7711
+ product:
7712
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::Product::OrHash
7713
+ ).returns(T.attached_class)
7714
+ end
7715
+ def self.new(billing_frequency:, product:)
7716
+ end
7717
+
7718
+ sig do
7719
+ override.returns(
7720
+ {
7721
+ billing_frequency:
7722
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency::TaggedSymbol,
7723
+ product:
7724
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::Product
7725
+ }
7726
+ )
7727
+ end
7728
+ def to_hash
7729
+ end
7730
+
7731
+ module BillingFrequency
7732
+ extend MetronomeSDK::Internal::Type::Enum
7733
+
7734
+ TaggedSymbol =
7735
+ T.type_alias do
7736
+ T.all(
7737
+ Symbol,
7738
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency
7739
+ )
7740
+ end
7741
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7742
+
7743
+ MONTHLY =
7744
+ T.let(
7745
+ :MONTHLY,
7746
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency::TaggedSymbol
7747
+ )
7748
+ QUARTERLY =
7749
+ T.let(
7750
+ :QUARTERLY,
7751
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency::TaggedSymbol
7752
+ )
7753
+ ANNUAL =
7754
+ T.let(
7755
+ :ANNUAL,
7756
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency::TaggedSymbol
7757
+ )
7758
+ WEEKLY =
7759
+ T.let(
7760
+ :WEEKLY,
7761
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency::TaggedSymbol
7762
+ )
7763
+
7764
+ sig do
7765
+ override.returns(
7766
+ T::Array[
7767
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency::TaggedSymbol
7768
+ ]
7769
+ )
7770
+ end
7771
+ def self.values
7772
+ end
7773
+ end
7774
+
7775
+ class Product < MetronomeSDK::Internal::Type::BaseModel
7776
+ OrHash =
7777
+ T.type_alias do
7778
+ T.any(
7779
+ MetronomeSDK::ContractV2::Subscription::SubscriptionRate::Product,
7780
+ MetronomeSDK::Internal::AnyHash
7781
+ )
7782
+ end
7783
+
7784
+ sig { returns(String) }
7785
+ attr_accessor :id
7786
+
7787
+ sig { returns(String) }
7788
+ attr_accessor :name
7789
+
7790
+ sig { params(id: String, name: String).returns(T.attached_class) }
7791
+ def self.new(id:, name:)
7792
+ end
7793
+
7794
+ sig { override.returns({ id: String, name: String }) }
7795
+ def to_hash
7796
+ end
7797
+ end
7798
+ end
7799
+
7800
+ class SeatConfig < MetronomeSDK::Internal::Type::BaseModel
7801
+ OrHash =
7802
+ T.type_alias do
7803
+ T.any(
7804
+ MetronomeSDK::ContractV2::Subscription::SeatConfig,
7805
+ MetronomeSDK::Internal::AnyHash
7806
+ )
7807
+ end
7808
+
7809
+ # The property name, sent on usage events, that identifies the seat ID associated
7810
+ # with the usage event. For example, the property name might be seat_id or
7811
+ # user_id. The property must be set as a group key on billable metrics and a
7812
+ # presentation/pricing group key on contract products. This allows linked
7813
+ # recurring credits with an allocation per seat to be consumed by only one seat's
7814
+ # usage.
7815
+ sig { returns(String) }
7816
+ attr_accessor :seat_group_key
7817
+
7818
+ sig { params(seat_group_key: String).returns(T.attached_class) }
7819
+ def self.new(
7820
+ # The property name, sent on usage events, that identifies the seat ID associated
7821
+ # with the usage event. For example, the property name might be seat_id or
7822
+ # user_id. The property must be set as a group key on billable metrics and a
7823
+ # presentation/pricing group key on contract products. This allows linked
7824
+ # recurring credits with an allocation per seat to be consumed by only one seat's
7825
+ # usage.
7826
+ seat_group_key:
7827
+ )
7828
+ end
7829
+
7830
+ sig { override.returns({ seat_group_key: String }) }
7831
+ def to_hash
7832
+ end
7833
+ end
7834
+ end
6667
7835
  end
6668
7836
  end
6669
7837
  end