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
@@ -251,12 +251,23 @@ module MetronomeSDK
251
251
  attr_writer :add_spend_threshold_configuration
252
252
 
253
253
  # List of subscriptions on the contract.
254
- sig { returns(T.nilable(T::Array[MetronomeSDK::Subscription])) }
254
+ sig do
255
+ returns(
256
+ T.nilable(
257
+ T::Array[
258
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription
259
+ ]
260
+ )
261
+ )
262
+ end
255
263
  attr_reader :add_subscriptions
256
264
 
257
265
  sig do
258
266
  params(
259
- add_subscriptions: T::Array[MetronomeSDK::Subscription::OrHash]
267
+ add_subscriptions:
268
+ T::Array[
269
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::OrHash
270
+ ]
260
271
  ).void
261
272
  end
262
273
  attr_writer :add_subscriptions
@@ -632,7 +643,10 @@ module MetronomeSDK
632
643
  ],
633
644
  add_spend_threshold_configuration:
634
645
  MetronomeSDK::SpendThresholdConfigurationV2::OrHash,
635
- add_subscriptions: T::Array[MetronomeSDK::Subscription::OrHash],
646
+ add_subscriptions:
647
+ T::Array[
648
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::OrHash
649
+ ],
636
650
  add_usage_filters:
637
651
  T::Array[
638
652
  MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddUsageFilter::OrHash
@@ -776,7 +790,10 @@ module MetronomeSDK
776
790
  ],
777
791
  add_spend_threshold_configuration:
778
792
  MetronomeSDK::SpendThresholdConfigurationV2,
779
- add_subscriptions: T::Array[MetronomeSDK::Subscription],
793
+ add_subscriptions:
794
+ T::Array[
795
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription
796
+ ],
780
797
  add_usage_filters:
781
798
  T::Array[
782
799
  MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddUsageFilter
@@ -3956,192 +3973,110 @@ module MetronomeSDK
3956
3973
  end
3957
3974
  end
3958
3975
 
3959
- class AddUsageFilter < MetronomeSDK::Internal::Type::BaseModel
3976
+ class AddSubscription < MetronomeSDK::Internal::Type::BaseModel
3960
3977
  OrHash =
3961
3978
  T.type_alias do
3962
3979
  T.any(
3963
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddUsageFilter,
3980
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription,
3964
3981
  MetronomeSDK::Internal::AnyHash
3965
3982
  )
3966
3983
  end
3967
3984
 
3968
- sig { returns(String) }
3969
- attr_accessor :group_key
3970
-
3971
- sig { returns(T::Array[String]) }
3972
- attr_accessor :group_values
3973
-
3974
- # This will match contract starting_at value if usage filter is active from the
3975
- # beginning of the contract.
3976
- sig { returns(Time) }
3977
- attr_accessor :starting_at
3978
-
3979
- # This will match contract ending_before value if usage filter is active until the
3980
- # end of the contract. It will be undefined if the contract is open-ended.
3981
- sig { returns(T.nilable(Time)) }
3982
- attr_reader :ending_before
3983
-
3984
- sig { params(ending_before: Time).void }
3985
- attr_writer :ending_before
3985
+ # Previous, current, and next billing periods for the subscription.
3986
+ sig do
3987
+ returns(
3988
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods
3989
+ )
3990
+ end
3991
+ attr_reader :billing_periods
3986
3992
 
3987
3993
  sig do
3988
3994
  params(
3989
- group_key: String,
3990
- group_values: T::Array[String],
3991
- starting_at: Time,
3992
- ending_before: Time
3993
- ).returns(T.attached_class)
3994
- end
3995
- def self.new(
3996
- group_key:,
3997
- group_values:,
3998
- # This will match contract starting_at value if usage filter is active from the
3999
- # beginning of the contract.
4000
- starting_at:,
4001
- # This will match contract ending_before value if usage filter is active until the
4002
- # end of the contract. It will be undefined if the contract is open-ended.
4003
- ending_before: nil
4004
- )
3995
+ billing_periods:
3996
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::OrHash
3997
+ ).void
4005
3998
  end
3999
+ attr_writer :billing_periods
4006
4000
 
4007
4001
  sig do
4008
- override.returns(
4009
- {
4010
- group_key: String,
4011
- group_values: T::Array[String],
4012
- starting_at: Time,
4013
- ending_before: Time
4014
- }
4002
+ returns(
4003
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::CollectionSchedule::TaggedSymbol
4015
4004
  )
4016
4005
  end
4017
- def to_hash
4018
- end
4019
- end
4020
-
4021
- class ArchiveCommit < MetronomeSDK::Internal::Type::BaseModel
4022
- OrHash =
4023
- T.type_alias do
4024
- T.any(
4025
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::ArchiveCommit,
4026
- MetronomeSDK::Internal::AnyHash
4027
- )
4028
- end
4029
-
4030
- sig { returns(String) }
4031
- attr_accessor :id
4032
-
4033
- sig { params(id: String).returns(T.attached_class) }
4034
- def self.new(id:)
4035
- end
4036
-
4037
- sig { override.returns({ id: String }) }
4038
- def to_hash
4039
- end
4040
- end
4041
-
4042
- class ArchiveCredit < MetronomeSDK::Internal::Type::BaseModel
4043
- OrHash =
4044
- T.type_alias do
4045
- T.any(
4046
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::ArchiveCredit,
4047
- MetronomeSDK::Internal::AnyHash
4048
- )
4049
- end
4050
-
4051
- sig { returns(String) }
4052
- attr_accessor :id
4053
-
4054
- sig { params(id: String).returns(T.attached_class) }
4055
- def self.new(id:)
4056
- end
4057
-
4058
- sig { override.returns({ id: String }) }
4059
- def to_hash
4060
- end
4061
- end
4062
-
4063
- class ArchiveScheduledCharge < MetronomeSDK::Internal::Type::BaseModel
4064
- OrHash =
4065
- T.type_alias do
4066
- T.any(
4067
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::ArchiveScheduledCharge,
4068
- MetronomeSDK::Internal::AnyHash
4069
- )
4070
- end
4071
-
4072
- sig { returns(String) }
4073
- attr_accessor :id
4006
+ attr_accessor :collection_schedule
4074
4007
 
4075
- sig { params(id: String).returns(T.attached_class) }
4076
- def self.new(id:)
4008
+ sig do
4009
+ returns(
4010
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration
4011
+ )
4077
4012
  end
4013
+ attr_reader :proration
4078
4014
 
4079
- sig { override.returns({ id: String }) }
4080
- def to_hash
4015
+ sig do
4016
+ params(
4017
+ proration:
4018
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration::OrHash
4019
+ ).void
4081
4020
  end
4082
- end
4083
-
4084
- class RemoveOverride < MetronomeSDK::Internal::Type::BaseModel
4085
- OrHash =
4086
- T.type_alias do
4087
- T.any(
4088
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::RemoveOverride,
4089
- MetronomeSDK::Internal::AnyHash
4090
- )
4091
- end
4092
-
4093
- sig { returns(String) }
4094
- attr_accessor :id
4021
+ attr_writer :proration
4095
4022
 
4096
- sig { params(id: String).returns(T.attached_class) }
4097
- def self.new(id:)
4023
+ # Determines how the subscription's quantity is controlled. Defaults to
4024
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
4025
+ # directly on the subscription. `initial_quantity` must be provided with this
4026
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
4027
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
4028
+ # user_123) to increment and decrement a subscription quantity, rather than
4029
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
4030
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
4031
+ # provided with this option.
4032
+ sig do
4033
+ returns(
4034
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantityManagementMode::TaggedSymbol
4035
+ )
4098
4036
  end
4037
+ attr_accessor :quantity_management_mode
4099
4038
 
4100
- sig { override.returns({ id: String }) }
4101
- def to_hash
4039
+ # List of quantity schedule items for the subscription. Only includes the current
4040
+ # quantity and future quantity changes.
4041
+ sig do
4042
+ returns(
4043
+ T::Array[
4044
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantitySchedule
4045
+ ]
4046
+ )
4102
4047
  end
4103
- end
4104
-
4105
- class UpdateCommit < MetronomeSDK::Internal::Type::BaseModel
4106
- OrHash =
4107
- T.type_alias do
4108
- T.any(
4109
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit,
4110
- MetronomeSDK::Internal::AnyHash
4111
- )
4112
- end
4048
+ attr_accessor :quantity_schedule
4113
4049
 
4114
- sig { returns(String) }
4115
- attr_accessor :id
4050
+ sig { returns(Time) }
4051
+ attr_accessor :starting_at
4116
4052
 
4117
4053
  sig do
4118
4054
  returns(
4119
- T.nilable(
4120
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::AccessSchedule
4121
- )
4055
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate
4122
4056
  )
4123
4057
  end
4124
- attr_reader :access_schedule
4058
+ attr_reader :subscription_rate
4125
4059
 
4126
4060
  sig do
4127
4061
  params(
4128
- access_schedule:
4129
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::AccessSchedule::OrHash
4062
+ subscription_rate:
4063
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::OrHash
4130
4064
  ).void
4131
4065
  end
4132
- attr_writer :access_schedule
4066
+ attr_writer :subscription_rate
4133
4067
 
4134
- # Which products the commit applies to. If applicable_product_ids,
4135
- # applicable_product_tags or specifiers are not provided, the commit applies to
4136
- # all products.
4137
- sig { returns(T.nilable(T::Array[String])) }
4138
- attr_accessor :applicable_product_ids
4068
+ sig { returns(T.nilable(String)) }
4069
+ attr_reader :id
4139
4070
 
4140
- # Which tags the commit applies to. If applicable_product_ids,
4141
- # applicable_product_tags or specifiers are not provided, the commit applies to
4142
- # all products.
4143
- sig { returns(T.nilable(T::Array[String])) }
4144
- attr_accessor :applicable_product_tags
4071
+ sig { params(id: String).void }
4072
+ attr_writer :id
4073
+
4074
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
4075
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
4076
+ attr_reader :custom_fields
4077
+
4078
+ sig { params(custom_fields: T::Hash[Symbol, String]).void }
4079
+ attr_writer :custom_fields
4145
4080
 
4146
4081
  sig { returns(T.nilable(String)) }
4147
4082
  attr_reader :description
@@ -4149,36 +4084,17 @@ module MetronomeSDK
4149
4084
  sig { params(description: String).void }
4150
4085
  attr_writer :description
4151
4086
 
4152
- # Optional configuration for commit hierarchy access control
4153
- sig do
4154
- returns(T.nilable(MetronomeSDK::CommitHierarchyConfiguration))
4155
- end
4156
- attr_reader :hierarchy_configuration
4087
+ sig { returns(T.nilable(Time)) }
4088
+ attr_reader :ending_before
4157
4089
 
4158
- sig do
4159
- params(
4160
- hierarchy_configuration:
4161
- MetronomeSDK::CommitHierarchyConfiguration::OrHash
4162
- ).void
4163
- end
4164
- attr_writer :hierarchy_configuration
4090
+ sig { params(ending_before: Time).void }
4091
+ attr_writer :ending_before
4165
4092
 
4166
- sig do
4167
- returns(
4168
- T.nilable(
4169
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::InvoiceSchedule
4170
- )
4171
- )
4172
- end
4173
- attr_reader :invoice_schedule
4093
+ sig { returns(T.nilable(String)) }
4094
+ attr_reader :fiat_credit_type_id
4174
4095
 
4175
- sig do
4176
- params(
4177
- invoice_schedule:
4178
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::InvoiceSchedule::OrHash
4179
- ).void
4180
- end
4181
- attr_writer :invoice_schedule
4096
+ sig { params(fiat_credit_type_id: String).void }
4097
+ attr_writer :fiat_credit_type_id
4182
4098
 
4183
4099
  sig { returns(T.nilable(String)) }
4184
4100
  attr_reader :name
@@ -4186,45 +4102,917 @@ module MetronomeSDK
4186
4102
  sig { params(name: String).void }
4187
4103
  attr_writer :name
4188
4104
 
4189
- sig { returns(T.nilable(String)) }
4190
- attr_accessor :netsuite_sales_order_id
4191
-
4192
- # If multiple commits are applicable, the one with the lower priority will apply
4193
- # first.
4194
- sig { returns(T.nilable(Float)) }
4195
- attr_accessor :priority
4196
-
4197
- sig { returns(T.nilable(String)) }
4198
- attr_reader :product_id
4199
-
4200
- sig { params(product_id: String).void }
4201
- attr_writer :product_id
4202
-
4203
- # If set, the commit's rate type was updated to the specified value.
4204
4105
  sig do
4205
4106
  returns(
4206
4107
  T.nilable(
4207
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::RateType::TaggedSymbol
4108
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SeatConfig
4208
4109
  )
4209
4110
  )
4210
4111
  end
4211
- attr_reader :rate_type
4112
+ attr_reader :seat_config
4212
4113
 
4213
4114
  sig do
4214
4115
  params(
4215
- rate_type:
4216
- MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::RateType::OrSymbol
4116
+ seat_config:
4117
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SeatConfig::OrHash
4217
4118
  ).void
4218
4119
  end
4219
- attr_writer :rate_type
4220
-
4221
- sig { returns(T.nilable(Float)) }
4222
- attr_accessor :rollover_fraction
4120
+ attr_writer :seat_config
4223
4121
 
4224
- # List of filters that determine what kind of customer usage draws down a commit
4225
- # or credit. A customer's usage needs to meet the condition of at least one of the
4226
- # specifiers to contribute to a commit's or credit's drawdown. This field cannot
4227
- # be used together with `applicable_product_ids` or `applicable_product_tags`.
4122
+ sig do
4123
+ params(
4124
+ billing_periods:
4125
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::OrHash,
4126
+ collection_schedule:
4127
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::CollectionSchedule::OrSymbol,
4128
+ proration:
4129
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration::OrHash,
4130
+ quantity_management_mode:
4131
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantityManagementMode::OrSymbol,
4132
+ quantity_schedule:
4133
+ T::Array[
4134
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantitySchedule::OrHash
4135
+ ],
4136
+ starting_at: Time,
4137
+ subscription_rate:
4138
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::OrHash,
4139
+ id: String,
4140
+ custom_fields: T::Hash[Symbol, String],
4141
+ description: String,
4142
+ ending_before: Time,
4143
+ fiat_credit_type_id: String,
4144
+ name: String,
4145
+ seat_config:
4146
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SeatConfig::OrHash
4147
+ ).returns(T.attached_class)
4148
+ end
4149
+ def self.new(
4150
+ # Previous, current, and next billing periods for the subscription.
4151
+ billing_periods:,
4152
+ collection_schedule:,
4153
+ proration:,
4154
+ # Determines how the subscription's quantity is controlled. Defaults to
4155
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
4156
+ # directly on the subscription. `initial_quantity` must be provided with this
4157
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
4158
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
4159
+ # user_123) to increment and decrement a subscription quantity, rather than
4160
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
4161
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
4162
+ # provided with this option.
4163
+ quantity_management_mode:,
4164
+ # List of quantity schedule items for the subscription. Only includes the current
4165
+ # quantity and future quantity changes.
4166
+ quantity_schedule:,
4167
+ starting_at:,
4168
+ subscription_rate:,
4169
+ id: nil,
4170
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
4171
+ custom_fields: nil,
4172
+ description: nil,
4173
+ ending_before: nil,
4174
+ fiat_credit_type_id: nil,
4175
+ name: nil,
4176
+ seat_config: nil
4177
+ )
4178
+ end
4179
+
4180
+ sig do
4181
+ override.returns(
4182
+ {
4183
+ billing_periods:
4184
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods,
4185
+ collection_schedule:
4186
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::CollectionSchedule::TaggedSymbol,
4187
+ proration:
4188
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration,
4189
+ quantity_management_mode:
4190
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantityManagementMode::TaggedSymbol,
4191
+ quantity_schedule:
4192
+ T::Array[
4193
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantitySchedule
4194
+ ],
4195
+ starting_at: Time,
4196
+ subscription_rate:
4197
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate,
4198
+ id: String,
4199
+ custom_fields: T::Hash[Symbol, String],
4200
+ description: String,
4201
+ ending_before: Time,
4202
+ fiat_credit_type_id: String,
4203
+ name: String,
4204
+ seat_config:
4205
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SeatConfig
4206
+ }
4207
+ )
4208
+ end
4209
+ def to_hash
4210
+ end
4211
+
4212
+ class BillingPeriods < MetronomeSDK::Internal::Type::BaseModel
4213
+ OrHash =
4214
+ T.type_alias do
4215
+ T.any(
4216
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods,
4217
+ MetronomeSDK::Internal::AnyHash
4218
+ )
4219
+ end
4220
+
4221
+ sig do
4222
+ returns(
4223
+ T.nilable(
4224
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Current
4225
+ )
4226
+ )
4227
+ end
4228
+ attr_reader :current
4229
+
4230
+ sig do
4231
+ params(
4232
+ current:
4233
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Current::OrHash
4234
+ ).void
4235
+ end
4236
+ attr_writer :current
4237
+
4238
+ sig do
4239
+ returns(
4240
+ T.nilable(
4241
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Next
4242
+ )
4243
+ )
4244
+ end
4245
+ attr_reader :next_
4246
+
4247
+ sig do
4248
+ params(
4249
+ next_:
4250
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Next::OrHash
4251
+ ).void
4252
+ end
4253
+ attr_writer :next_
4254
+
4255
+ sig do
4256
+ returns(
4257
+ T.nilable(
4258
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Previous
4259
+ )
4260
+ )
4261
+ end
4262
+ attr_reader :previous
4263
+
4264
+ sig do
4265
+ params(
4266
+ previous:
4267
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Previous::OrHash
4268
+ ).void
4269
+ end
4270
+ attr_writer :previous
4271
+
4272
+ # Previous, current, and next billing periods for the subscription.
4273
+ sig do
4274
+ params(
4275
+ current:
4276
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Current::OrHash,
4277
+ next_:
4278
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Next::OrHash,
4279
+ previous:
4280
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Previous::OrHash
4281
+ ).returns(T.attached_class)
4282
+ end
4283
+ def self.new(current: nil, next_: nil, previous: nil)
4284
+ end
4285
+
4286
+ sig do
4287
+ override.returns(
4288
+ {
4289
+ current:
4290
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Current,
4291
+ next_:
4292
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Next,
4293
+ previous:
4294
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Previous
4295
+ }
4296
+ )
4297
+ end
4298
+ def to_hash
4299
+ end
4300
+
4301
+ class Current < MetronomeSDK::Internal::Type::BaseModel
4302
+ OrHash =
4303
+ T.type_alias do
4304
+ T.any(
4305
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Current,
4306
+ MetronomeSDK::Internal::AnyHash
4307
+ )
4308
+ end
4309
+
4310
+ sig { returns(Time) }
4311
+ attr_accessor :ending_before
4312
+
4313
+ sig { returns(Time) }
4314
+ attr_accessor :starting_at
4315
+
4316
+ sig do
4317
+ params(ending_before: Time, starting_at: Time).returns(
4318
+ T.attached_class
4319
+ )
4320
+ end
4321
+ def self.new(ending_before:, starting_at:)
4322
+ end
4323
+
4324
+ sig do
4325
+ override.returns({ ending_before: Time, starting_at: Time })
4326
+ end
4327
+ def to_hash
4328
+ end
4329
+ end
4330
+
4331
+ class Next < MetronomeSDK::Internal::Type::BaseModel
4332
+ OrHash =
4333
+ T.type_alias do
4334
+ T.any(
4335
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Next,
4336
+ MetronomeSDK::Internal::AnyHash
4337
+ )
4338
+ end
4339
+
4340
+ sig { returns(Time) }
4341
+ attr_accessor :ending_before
4342
+
4343
+ sig { returns(Time) }
4344
+ attr_accessor :starting_at
4345
+
4346
+ sig do
4347
+ params(ending_before: Time, starting_at: Time).returns(
4348
+ T.attached_class
4349
+ )
4350
+ end
4351
+ def self.new(ending_before:, starting_at:)
4352
+ end
4353
+
4354
+ sig do
4355
+ override.returns({ ending_before: Time, starting_at: Time })
4356
+ end
4357
+ def to_hash
4358
+ end
4359
+ end
4360
+
4361
+ class Previous < MetronomeSDK::Internal::Type::BaseModel
4362
+ OrHash =
4363
+ T.type_alias do
4364
+ T.any(
4365
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::BillingPeriods::Previous,
4366
+ MetronomeSDK::Internal::AnyHash
4367
+ )
4368
+ end
4369
+
4370
+ sig { returns(Time) }
4371
+ attr_accessor :ending_before
4372
+
4373
+ sig { returns(Time) }
4374
+ attr_accessor :starting_at
4375
+
4376
+ sig do
4377
+ params(ending_before: Time, starting_at: Time).returns(
4378
+ T.attached_class
4379
+ )
4380
+ end
4381
+ def self.new(ending_before:, starting_at:)
4382
+ end
4383
+
4384
+ sig do
4385
+ override.returns({ ending_before: Time, starting_at: Time })
4386
+ end
4387
+ def to_hash
4388
+ end
4389
+ end
4390
+ end
4391
+
4392
+ module CollectionSchedule
4393
+ extend MetronomeSDK::Internal::Type::Enum
4394
+
4395
+ TaggedSymbol =
4396
+ T.type_alias do
4397
+ T.all(
4398
+ Symbol,
4399
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::CollectionSchedule
4400
+ )
4401
+ end
4402
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4403
+
4404
+ ADVANCE =
4405
+ T.let(
4406
+ :ADVANCE,
4407
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::CollectionSchedule::TaggedSymbol
4408
+ )
4409
+ ARREARS =
4410
+ T.let(
4411
+ :ARREARS,
4412
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::CollectionSchedule::TaggedSymbol
4413
+ )
4414
+
4415
+ sig do
4416
+ override.returns(
4417
+ T::Array[
4418
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::CollectionSchedule::TaggedSymbol
4419
+ ]
4420
+ )
4421
+ end
4422
+ def self.values
4423
+ end
4424
+ end
4425
+
4426
+ class Proration < MetronomeSDK::Internal::Type::BaseModel
4427
+ OrHash =
4428
+ T.type_alias do
4429
+ T.any(
4430
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration,
4431
+ MetronomeSDK::Internal::AnyHash
4432
+ )
4433
+ end
4434
+
4435
+ sig do
4436
+ returns(
4437
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration::InvoiceBehavior::TaggedSymbol
4438
+ )
4439
+ end
4440
+ attr_accessor :invoice_behavior
4441
+
4442
+ sig { returns(T::Boolean) }
4443
+ attr_accessor :is_prorated
4444
+
4445
+ sig do
4446
+ params(
4447
+ invoice_behavior:
4448
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration::InvoiceBehavior::OrSymbol,
4449
+ is_prorated: T::Boolean
4450
+ ).returns(T.attached_class)
4451
+ end
4452
+ def self.new(invoice_behavior:, is_prorated:)
4453
+ end
4454
+
4455
+ sig do
4456
+ override.returns(
4457
+ {
4458
+ invoice_behavior:
4459
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration::InvoiceBehavior::TaggedSymbol,
4460
+ is_prorated: T::Boolean
4461
+ }
4462
+ )
4463
+ end
4464
+ def to_hash
4465
+ end
4466
+
4467
+ module InvoiceBehavior
4468
+ extend MetronomeSDK::Internal::Type::Enum
4469
+
4470
+ TaggedSymbol =
4471
+ T.type_alias do
4472
+ T.all(
4473
+ Symbol,
4474
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration::InvoiceBehavior
4475
+ )
4476
+ end
4477
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4478
+
4479
+ BILL_IMMEDIATELY =
4480
+ T.let(
4481
+ :BILL_IMMEDIATELY,
4482
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration::InvoiceBehavior::TaggedSymbol
4483
+ )
4484
+ BILL_ON_NEXT_COLLECTION_DATE =
4485
+ T.let(
4486
+ :BILL_ON_NEXT_COLLECTION_DATE,
4487
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration::InvoiceBehavior::TaggedSymbol
4488
+ )
4489
+
4490
+ sig do
4491
+ override.returns(
4492
+ T::Array[
4493
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::Proration::InvoiceBehavior::TaggedSymbol
4494
+ ]
4495
+ )
4496
+ end
4497
+ def self.values
4498
+ end
4499
+ end
4500
+ end
4501
+
4502
+ # Determines how the subscription's quantity is controlled. Defaults to
4503
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
4504
+ # directly on the subscription. `initial_quantity` must be provided with this
4505
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
4506
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
4507
+ # user_123) to increment and decrement a subscription quantity, rather than
4508
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
4509
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
4510
+ # provided with this option.
4511
+ module QuantityManagementMode
4512
+ extend MetronomeSDK::Internal::Type::Enum
4513
+
4514
+ TaggedSymbol =
4515
+ T.type_alias do
4516
+ T.all(
4517
+ Symbol,
4518
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantityManagementMode
4519
+ )
4520
+ end
4521
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4522
+
4523
+ SEAT_BASED =
4524
+ T.let(
4525
+ :SEAT_BASED,
4526
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantityManagementMode::TaggedSymbol
4527
+ )
4528
+ QUANTITY_ONLY =
4529
+ T.let(
4530
+ :QUANTITY_ONLY,
4531
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantityManagementMode::TaggedSymbol
4532
+ )
4533
+
4534
+ sig do
4535
+ override.returns(
4536
+ T::Array[
4537
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantityManagementMode::TaggedSymbol
4538
+ ]
4539
+ )
4540
+ end
4541
+ def self.values
4542
+ end
4543
+ end
4544
+
4545
+ class QuantitySchedule < MetronomeSDK::Internal::Type::BaseModel
4546
+ OrHash =
4547
+ T.type_alias do
4548
+ T.any(
4549
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::QuantitySchedule,
4550
+ MetronomeSDK::Internal::AnyHash
4551
+ )
4552
+ end
4553
+
4554
+ sig { returns(Float) }
4555
+ attr_accessor :quantity
4556
+
4557
+ sig { returns(Time) }
4558
+ attr_accessor :starting_at
4559
+
4560
+ sig { returns(T.nilable(Time)) }
4561
+ attr_reader :ending_before
4562
+
4563
+ sig { params(ending_before: Time).void }
4564
+ attr_writer :ending_before
4565
+
4566
+ sig do
4567
+ params(
4568
+ quantity: Float,
4569
+ starting_at: Time,
4570
+ ending_before: Time
4571
+ ).returns(T.attached_class)
4572
+ end
4573
+ def self.new(quantity:, starting_at:, ending_before: nil)
4574
+ end
4575
+
4576
+ sig do
4577
+ override.returns(
4578
+ { quantity: Float, starting_at: Time, ending_before: Time }
4579
+ )
4580
+ end
4581
+ def to_hash
4582
+ end
4583
+ end
4584
+
4585
+ class SubscriptionRate < MetronomeSDK::Internal::Type::BaseModel
4586
+ OrHash =
4587
+ T.type_alias do
4588
+ T.any(
4589
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate,
4590
+ MetronomeSDK::Internal::AnyHash
4591
+ )
4592
+ end
4593
+
4594
+ sig do
4595
+ returns(
4596
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::BillingFrequency::TaggedSymbol
4597
+ )
4598
+ end
4599
+ attr_accessor :billing_frequency
4600
+
4601
+ sig do
4602
+ returns(
4603
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::Product
4604
+ )
4605
+ end
4606
+ attr_reader :product
4607
+
4608
+ sig do
4609
+ params(
4610
+ product:
4611
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::Product::OrHash
4612
+ ).void
4613
+ end
4614
+ attr_writer :product
4615
+
4616
+ sig do
4617
+ params(
4618
+ billing_frequency:
4619
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::BillingFrequency::OrSymbol,
4620
+ product:
4621
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::Product::OrHash
4622
+ ).returns(T.attached_class)
4623
+ end
4624
+ def self.new(billing_frequency:, product:)
4625
+ end
4626
+
4627
+ sig do
4628
+ override.returns(
4629
+ {
4630
+ billing_frequency:
4631
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::BillingFrequency::TaggedSymbol,
4632
+ product:
4633
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::Product
4634
+ }
4635
+ )
4636
+ end
4637
+ def to_hash
4638
+ end
4639
+
4640
+ module BillingFrequency
4641
+ extend MetronomeSDK::Internal::Type::Enum
4642
+
4643
+ TaggedSymbol =
4644
+ T.type_alias do
4645
+ T.all(
4646
+ Symbol,
4647
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::BillingFrequency
4648
+ )
4649
+ end
4650
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4651
+
4652
+ MONTHLY =
4653
+ T.let(
4654
+ :MONTHLY,
4655
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::BillingFrequency::TaggedSymbol
4656
+ )
4657
+ QUARTERLY =
4658
+ T.let(
4659
+ :QUARTERLY,
4660
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::BillingFrequency::TaggedSymbol
4661
+ )
4662
+ ANNUAL =
4663
+ T.let(
4664
+ :ANNUAL,
4665
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::BillingFrequency::TaggedSymbol
4666
+ )
4667
+ WEEKLY =
4668
+ T.let(
4669
+ :WEEKLY,
4670
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::BillingFrequency::TaggedSymbol
4671
+ )
4672
+
4673
+ sig do
4674
+ override.returns(
4675
+ T::Array[
4676
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::BillingFrequency::TaggedSymbol
4677
+ ]
4678
+ )
4679
+ end
4680
+ def self.values
4681
+ end
4682
+ end
4683
+
4684
+ class Product < MetronomeSDK::Internal::Type::BaseModel
4685
+ OrHash =
4686
+ T.type_alias do
4687
+ T.any(
4688
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SubscriptionRate::Product,
4689
+ MetronomeSDK::Internal::AnyHash
4690
+ )
4691
+ end
4692
+
4693
+ sig { returns(String) }
4694
+ attr_accessor :id
4695
+
4696
+ sig { returns(String) }
4697
+ attr_accessor :name
4698
+
4699
+ sig do
4700
+ params(id: String, name: String).returns(T.attached_class)
4701
+ end
4702
+ def self.new(id:, name:)
4703
+ end
4704
+
4705
+ sig { override.returns({ id: String, name: String }) }
4706
+ def to_hash
4707
+ end
4708
+ end
4709
+ end
4710
+
4711
+ class SeatConfig < MetronomeSDK::Internal::Type::BaseModel
4712
+ OrHash =
4713
+ T.type_alias do
4714
+ T.any(
4715
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddSubscription::SeatConfig,
4716
+ MetronomeSDK::Internal::AnyHash
4717
+ )
4718
+ end
4719
+
4720
+ # The property name, sent on usage events, that identifies the seat ID associated
4721
+ # with the usage event. For example, the property name might be seat_id or
4722
+ # user_id. The property must be set as a group key on billable metrics and a
4723
+ # presentation/pricing group key on contract products. This allows linked
4724
+ # recurring credits with an allocation per seat to be consumed by only one seat's
4725
+ # usage.
4726
+ sig { returns(String) }
4727
+ attr_accessor :seat_group_key
4728
+
4729
+ sig { params(seat_group_key: String).returns(T.attached_class) }
4730
+ def self.new(
4731
+ # The property name, sent on usage events, that identifies the seat ID associated
4732
+ # with the usage event. For example, the property name might be seat_id or
4733
+ # user_id. The property must be set as a group key on billable metrics and a
4734
+ # presentation/pricing group key on contract products. This allows linked
4735
+ # recurring credits with an allocation per seat to be consumed by only one seat's
4736
+ # usage.
4737
+ seat_group_key:
4738
+ )
4739
+ end
4740
+
4741
+ sig { override.returns({ seat_group_key: String }) }
4742
+ def to_hash
4743
+ end
4744
+ end
4745
+ end
4746
+
4747
+ class AddUsageFilter < MetronomeSDK::Internal::Type::BaseModel
4748
+ OrHash =
4749
+ T.type_alias do
4750
+ T.any(
4751
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::AddUsageFilter,
4752
+ MetronomeSDK::Internal::AnyHash
4753
+ )
4754
+ end
4755
+
4756
+ sig { returns(String) }
4757
+ attr_accessor :group_key
4758
+
4759
+ sig { returns(T::Array[String]) }
4760
+ attr_accessor :group_values
4761
+
4762
+ # This will match contract starting_at value if usage filter is active from the
4763
+ # beginning of the contract.
4764
+ sig { returns(Time) }
4765
+ attr_accessor :starting_at
4766
+
4767
+ # This will match contract ending_before value if usage filter is active until the
4768
+ # end of the contract. It will be undefined if the contract is open-ended.
4769
+ sig { returns(T.nilable(Time)) }
4770
+ attr_reader :ending_before
4771
+
4772
+ sig { params(ending_before: Time).void }
4773
+ attr_writer :ending_before
4774
+
4775
+ sig do
4776
+ params(
4777
+ group_key: String,
4778
+ group_values: T::Array[String],
4779
+ starting_at: Time,
4780
+ ending_before: Time
4781
+ ).returns(T.attached_class)
4782
+ end
4783
+ def self.new(
4784
+ group_key:,
4785
+ group_values:,
4786
+ # This will match contract starting_at value if usage filter is active from the
4787
+ # beginning of the contract.
4788
+ starting_at:,
4789
+ # This will match contract ending_before value if usage filter is active until the
4790
+ # end of the contract. It will be undefined if the contract is open-ended.
4791
+ ending_before: nil
4792
+ )
4793
+ end
4794
+
4795
+ sig do
4796
+ override.returns(
4797
+ {
4798
+ group_key: String,
4799
+ group_values: T::Array[String],
4800
+ starting_at: Time,
4801
+ ending_before: Time
4802
+ }
4803
+ )
4804
+ end
4805
+ def to_hash
4806
+ end
4807
+ end
4808
+
4809
+ class ArchiveCommit < MetronomeSDK::Internal::Type::BaseModel
4810
+ OrHash =
4811
+ T.type_alias do
4812
+ T.any(
4813
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::ArchiveCommit,
4814
+ MetronomeSDK::Internal::AnyHash
4815
+ )
4816
+ end
4817
+
4818
+ sig { returns(String) }
4819
+ attr_accessor :id
4820
+
4821
+ sig { params(id: String).returns(T.attached_class) }
4822
+ def self.new(id:)
4823
+ end
4824
+
4825
+ sig { override.returns({ id: String }) }
4826
+ def to_hash
4827
+ end
4828
+ end
4829
+
4830
+ class ArchiveCredit < MetronomeSDK::Internal::Type::BaseModel
4831
+ OrHash =
4832
+ T.type_alias do
4833
+ T.any(
4834
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::ArchiveCredit,
4835
+ MetronomeSDK::Internal::AnyHash
4836
+ )
4837
+ end
4838
+
4839
+ sig { returns(String) }
4840
+ attr_accessor :id
4841
+
4842
+ sig { params(id: String).returns(T.attached_class) }
4843
+ def self.new(id:)
4844
+ end
4845
+
4846
+ sig { override.returns({ id: String }) }
4847
+ def to_hash
4848
+ end
4849
+ end
4850
+
4851
+ class ArchiveScheduledCharge < MetronomeSDK::Internal::Type::BaseModel
4852
+ OrHash =
4853
+ T.type_alias do
4854
+ T.any(
4855
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::ArchiveScheduledCharge,
4856
+ MetronomeSDK::Internal::AnyHash
4857
+ )
4858
+ end
4859
+
4860
+ sig { returns(String) }
4861
+ attr_accessor :id
4862
+
4863
+ sig { params(id: String).returns(T.attached_class) }
4864
+ def self.new(id:)
4865
+ end
4866
+
4867
+ sig { override.returns({ id: String }) }
4868
+ def to_hash
4869
+ end
4870
+ end
4871
+
4872
+ class RemoveOverride < MetronomeSDK::Internal::Type::BaseModel
4873
+ OrHash =
4874
+ T.type_alias do
4875
+ T.any(
4876
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::RemoveOverride,
4877
+ MetronomeSDK::Internal::AnyHash
4878
+ )
4879
+ end
4880
+
4881
+ sig { returns(String) }
4882
+ attr_accessor :id
4883
+
4884
+ sig { params(id: String).returns(T.attached_class) }
4885
+ def self.new(id:)
4886
+ end
4887
+
4888
+ sig { override.returns({ id: String }) }
4889
+ def to_hash
4890
+ end
4891
+ end
4892
+
4893
+ class UpdateCommit < MetronomeSDK::Internal::Type::BaseModel
4894
+ OrHash =
4895
+ T.type_alias do
4896
+ T.any(
4897
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit,
4898
+ MetronomeSDK::Internal::AnyHash
4899
+ )
4900
+ end
4901
+
4902
+ sig { returns(String) }
4903
+ attr_accessor :id
4904
+
4905
+ sig do
4906
+ returns(
4907
+ T.nilable(
4908
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::AccessSchedule
4909
+ )
4910
+ )
4911
+ end
4912
+ attr_reader :access_schedule
4913
+
4914
+ sig do
4915
+ params(
4916
+ access_schedule:
4917
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::AccessSchedule::OrHash
4918
+ ).void
4919
+ end
4920
+ attr_writer :access_schedule
4921
+
4922
+ # Which products the commit applies to. If applicable_product_ids,
4923
+ # applicable_product_tags or specifiers are not provided, the commit applies to
4924
+ # all products.
4925
+ sig { returns(T.nilable(T::Array[String])) }
4926
+ attr_accessor :applicable_product_ids
4927
+
4928
+ # Which tags the commit applies to. If applicable_product_ids,
4929
+ # applicable_product_tags or specifiers are not provided, the commit applies to
4930
+ # all products.
4931
+ sig { returns(T.nilable(T::Array[String])) }
4932
+ attr_accessor :applicable_product_tags
4933
+
4934
+ sig { returns(T.nilable(String)) }
4935
+ attr_reader :description
4936
+
4937
+ sig { params(description: String).void }
4938
+ attr_writer :description
4939
+
4940
+ # Optional configuration for commit hierarchy access control
4941
+ sig do
4942
+ returns(T.nilable(MetronomeSDK::CommitHierarchyConfiguration))
4943
+ end
4944
+ attr_reader :hierarchy_configuration
4945
+
4946
+ sig do
4947
+ params(
4948
+ hierarchy_configuration:
4949
+ MetronomeSDK::CommitHierarchyConfiguration::OrHash
4950
+ ).void
4951
+ end
4952
+ attr_writer :hierarchy_configuration
4953
+
4954
+ sig do
4955
+ returns(
4956
+ T.nilable(
4957
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::InvoiceSchedule
4958
+ )
4959
+ )
4960
+ end
4961
+ attr_reader :invoice_schedule
4962
+
4963
+ sig do
4964
+ params(
4965
+ invoice_schedule:
4966
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::InvoiceSchedule::OrHash
4967
+ ).void
4968
+ end
4969
+ attr_writer :invoice_schedule
4970
+
4971
+ sig { returns(T.nilable(String)) }
4972
+ attr_reader :name
4973
+
4974
+ sig { params(name: String).void }
4975
+ attr_writer :name
4976
+
4977
+ sig { returns(T.nilable(String)) }
4978
+ attr_accessor :netsuite_sales_order_id
4979
+
4980
+ # If multiple commits are applicable, the one with the lower priority will apply
4981
+ # first.
4982
+ sig { returns(T.nilable(Float)) }
4983
+ attr_accessor :priority
4984
+
4985
+ sig { returns(T.nilable(String)) }
4986
+ attr_reader :product_id
4987
+
4988
+ sig { params(product_id: String).void }
4989
+ attr_writer :product_id
4990
+
4991
+ # If set, the commit's rate type was updated to the specified value.
4992
+ sig do
4993
+ returns(
4994
+ T.nilable(
4995
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::RateType::TaggedSymbol
4996
+ )
4997
+ )
4998
+ end
4999
+ attr_reader :rate_type
5000
+
5001
+ sig do
5002
+ params(
5003
+ rate_type:
5004
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateCommit::RateType::OrSymbol
5005
+ ).void
5006
+ end
5007
+ attr_writer :rate_type
5008
+
5009
+ sig { returns(T.nilable(Float)) }
5010
+ attr_accessor :rollover_fraction
5011
+
5012
+ # List of filters that determine what kind of customer usage draws down a commit
5013
+ # or credit. A customer's usage needs to meet the condition of at least one of the
5014
+ # specifiers to contribute to a commit's or credit's drawdown. This field cannot
5015
+ # be used together with `applicable_product_ids` or `applicable_product_tags`.
4228
5016
  # Instead, to target usage by product or product tag, pass those values in the
4229
5017
  # body of `specifiers`.
4230
5018
  sig do
@@ -5912,6 +6700,17 @@ module MetronomeSDK
5912
6700
  sig { params(threshold_amount: Float).void }
5913
6701
  attr_writer :threshold_amount
5914
6702
 
6703
+ sig do
6704
+ returns(
6705
+ T.nilable(
6706
+ T::Array[
6707
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier
6708
+ ]
6709
+ )
6710
+ )
6711
+ end
6712
+ attr_accessor :threshold_balance_specifiers
6713
+
5915
6714
  sig do
5916
6715
  params(
5917
6716
  commit:
@@ -5924,7 +6723,13 @@ module MetronomeSDK
5924
6723
  is_enabled: T::Boolean,
5925
6724
  payment_gate_config: MetronomeSDK::PaymentGateConfigV2::OrHash,
5926
6725
  recharge_to_amount: Float,
5927
- threshold_amount: Float
6726
+ threshold_amount: Float,
6727
+ threshold_balance_specifiers:
6728
+ T.nilable(
6729
+ T::Array[
6730
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::OrHash
6731
+ ]
6732
+ )
5928
6733
  ).returns(T.attached_class)
5929
6734
  end
5930
6735
  def self.new(
@@ -5942,7 +6747,8 @@ module MetronomeSDK
5942
6747
  recharge_to_amount: nil,
5943
6748
  # Specify the threshold amount for the contract. Each time the contract's balance
5944
6749
  # lowers to this amount, a threshold charge will be initiated.
5945
- threshold_amount: nil
6750
+ threshold_amount: nil,
6751
+ threshold_balance_specifiers: nil
5946
6752
  )
5947
6753
  end
5948
6754
 
@@ -5959,7 +6765,13 @@ module MetronomeSDK
5959
6765
  is_enabled: T::Boolean,
5960
6766
  payment_gate_config: MetronomeSDK::PaymentGateConfigV2,
5961
6767
  recharge_to_amount: Float,
5962
- threshold_amount: Float
6768
+ threshold_amount: Float,
6769
+ threshold_balance_specifiers:
6770
+ T.nilable(
6771
+ T::Array[
6772
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier
6773
+ ]
6774
+ )
5963
6775
  }
5964
6776
  )
5965
6777
  end
@@ -6048,6 +6860,26 @@ module MetronomeSDK
6048
6860
  )
6049
6861
  end
6050
6862
 
6863
+ # Update the discount cap. Set to null to remove an existing cap.
6864
+ sig do
6865
+ returns(
6866
+ T.nilable(
6867
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap
6868
+ )
6869
+ )
6870
+ end
6871
+ attr_reader :cap
6872
+
6873
+ sig do
6874
+ params(
6875
+ cap:
6876
+ T.nilable(
6877
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap::OrHash
6878
+ )
6879
+ ).void
6880
+ end
6881
+ attr_writer :cap
6882
+
6051
6883
  # The fraction of the original amount that the customer pays after applying the
6052
6884
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
6053
6885
  # the customer pays 85% of the original amount (a 15% discount).
@@ -6055,11 +6887,17 @@ module MetronomeSDK
6055
6887
  attr_accessor :payment_fraction
6056
6888
 
6057
6889
  sig do
6058
- params(payment_fraction: T.nilable(Float)).returns(
6059
- T.attached_class
6060
- )
6890
+ params(
6891
+ cap:
6892
+ T.nilable(
6893
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap::OrHash
6894
+ ),
6895
+ payment_fraction: T.nilable(Float)
6896
+ ).returns(T.attached_class)
6061
6897
  end
6062
6898
  def self.new(
6899
+ # Update the discount cap. Set to null to remove an existing cap.
6900
+ cap: nil,
6063
6901
  # The fraction of the original amount that the customer pays after applying the
6064
6902
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
6065
6903
  # the customer pays 85% of the original amount (a 15% discount).
@@ -6067,9 +6905,231 @@ module MetronomeSDK
6067
6905
  )
6068
6906
  end
6069
6907
 
6070
- sig { override.returns({ payment_fraction: T.nilable(Float) }) }
6908
+ sig do
6909
+ override.returns(
6910
+ {
6911
+ cap:
6912
+ T.nilable(
6913
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap
6914
+ ),
6915
+ payment_fraction: T.nilable(Float)
6916
+ }
6917
+ )
6918
+ end
6919
+ def to_hash
6920
+ end
6921
+
6922
+ class Cap < MetronomeSDK::Internal::Type::BaseModel
6923
+ OrHash =
6924
+ T.type_alias do
6925
+ T.any(
6926
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap,
6927
+ MetronomeSDK::Internal::AnyHash
6928
+ )
6929
+ end
6930
+
6931
+ # Accumulated spend ceiling above which the discount stops applying.
6932
+ sig { returns(Float) }
6933
+ attr_accessor :amount
6934
+
6935
+ # Alias of the spend tracker this cap is measured against.
6936
+ sig { returns(String) }
6937
+ attr_accessor :spend_tracker_alias
6938
+
6939
+ # Update the discount cap. Set to null to remove an existing cap.
6940
+ sig do
6941
+ params(amount: Float, spend_tracker_alias: String).returns(
6942
+ T.attached_class
6943
+ )
6944
+ end
6945
+ def self.new(
6946
+ # Accumulated spend ceiling above which the discount stops applying.
6947
+ amount:,
6948
+ # Alias of the spend tracker this cap is measured against.
6949
+ spend_tracker_alias:
6950
+ )
6951
+ end
6952
+
6953
+ sig do
6954
+ override.returns(
6955
+ { amount: Float, spend_tracker_alias: String }
6956
+ )
6957
+ end
6958
+ def to_hash
6959
+ end
6960
+ end
6961
+ end
6962
+
6963
+ class ThresholdBalanceSpecifier < MetronomeSDK::Internal::Type::BaseModel
6964
+ OrHash =
6965
+ T.type_alias do
6966
+ T.any(
6967
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier,
6968
+ MetronomeSDK::Internal::AnyHash
6969
+ )
6970
+ end
6971
+
6972
+ sig do
6973
+ returns(
6974
+ T::Array[
6975
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude
6976
+ ]
6977
+ )
6978
+ end
6979
+ attr_accessor :exclude
6980
+
6981
+ sig do
6982
+ params(
6983
+ exclude:
6984
+ T::Array[
6985
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::OrHash
6986
+ ]
6987
+ ).returns(T.attached_class)
6988
+ end
6989
+ def self.new(exclude:)
6990
+ end
6991
+
6992
+ sig do
6993
+ override.returns(
6994
+ {
6995
+ exclude:
6996
+ T::Array[
6997
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude
6998
+ ]
6999
+ }
7000
+ )
7001
+ end
6071
7002
  def to_hash
6072
7003
  end
7004
+
7005
+ class Exclude < MetronomeSDK::Internal::Type::BaseModel
7006
+ OrHash =
7007
+ T.type_alias do
7008
+ T.any(
7009
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude,
7010
+ MetronomeSDK::Internal::AnyHash
7011
+ )
7012
+ end
7013
+
7014
+ sig do
7015
+ returns(
7016
+ T::Array[
7017
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
7018
+ ]
7019
+ )
7020
+ end
7021
+ attr_accessor :custom_field_filters
7022
+
7023
+ sig do
7024
+ params(
7025
+ custom_field_filters:
7026
+ T::Array[
7027
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::OrHash
7028
+ ]
7029
+ ).returns(T.attached_class)
7030
+ end
7031
+ def self.new(custom_field_filters:)
7032
+ end
7033
+
7034
+ sig do
7035
+ override.returns(
7036
+ {
7037
+ custom_field_filters:
7038
+ T::Array[
7039
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
7040
+ ]
7041
+ }
7042
+ )
7043
+ end
7044
+ def to_hash
7045
+ end
7046
+
7047
+ class CustomFieldFilter < MetronomeSDK::Internal::Type::BaseModel
7048
+ OrHash =
7049
+ T.type_alias do
7050
+ T.any(
7051
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter,
7052
+ MetronomeSDK::Internal::AnyHash
7053
+ )
7054
+ end
7055
+
7056
+ sig do
7057
+ returns(
7058
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
7059
+ )
7060
+ end
7061
+ attr_accessor :entity
7062
+
7063
+ sig { returns(String) }
7064
+ attr_accessor :key
7065
+
7066
+ sig { returns(String) }
7067
+ attr_accessor :value
7068
+
7069
+ sig do
7070
+ params(
7071
+ entity:
7072
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
7073
+ key: String,
7074
+ value: String
7075
+ ).returns(T.attached_class)
7076
+ end
7077
+ def self.new(entity:, key:, value:)
7078
+ end
7079
+
7080
+ sig do
7081
+ override.returns(
7082
+ {
7083
+ entity:
7084
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol,
7085
+ key: String,
7086
+ value: String
7087
+ }
7088
+ )
7089
+ end
7090
+ def to_hash
7091
+ end
7092
+
7093
+ module Entity
7094
+ extend MetronomeSDK::Internal::Type::Enum
7095
+
7096
+ TaggedSymbol =
7097
+ T.type_alias do
7098
+ T.all(
7099
+ Symbol,
7100
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity
7101
+ )
7102
+ end
7103
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7104
+
7105
+ COMMIT =
7106
+ T.let(
7107
+ :Commit,
7108
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
7109
+ )
7110
+ CONTRACT_CREDIT =
7111
+ T.let(
7112
+ :ContractCredit,
7113
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
7114
+ )
7115
+ CONTRACT_CREDIT_OR_COMMIT =
7116
+ T.let(
7117
+ :ContractCreditOrCommit,
7118
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
7119
+ )
7120
+
7121
+ sig do
7122
+ override.returns(
7123
+ T::Array[
7124
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
7125
+ ]
7126
+ )
7127
+ end
7128
+ def self.values
7129
+ end
7130
+ end
7131
+ end
7132
+ end
6073
7133
  end
6074
7134
  end
6075
7135
 
@@ -6917,6 +7977,26 @@ module MetronomeSDK
6917
7977
  )
6918
7978
  end
6919
7979
 
7980
+ # Update the discount cap. Set to null to remove an existing cap.
7981
+ sig do
7982
+ returns(
7983
+ T.nilable(
7984
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap
7985
+ )
7986
+ )
7987
+ end
7988
+ attr_reader :cap
7989
+
7990
+ sig do
7991
+ params(
7992
+ cap:
7993
+ T.nilable(
7994
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap::OrHash
7995
+ )
7996
+ ).void
7997
+ end
7998
+ attr_writer :cap
7999
+
6920
8000
  # The fraction of the original amount that the customer pays after applying the
6921
8001
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
6922
8002
  # the customer pays 85% of the original amount (a 15% discount).
@@ -6924,11 +8004,17 @@ module MetronomeSDK
6924
8004
  attr_accessor :payment_fraction
6925
8005
 
6926
8006
  sig do
6927
- params(payment_fraction: T.nilable(Float)).returns(
6928
- T.attached_class
6929
- )
8007
+ params(
8008
+ cap:
8009
+ T.nilable(
8010
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap::OrHash
8011
+ ),
8012
+ payment_fraction: T.nilable(Float)
8013
+ ).returns(T.attached_class)
6930
8014
  end
6931
8015
  def self.new(
8016
+ # Update the discount cap. Set to null to remove an existing cap.
8017
+ cap: nil,
6932
8018
  # The fraction of the original amount that the customer pays after applying the
6933
8019
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
6934
8020
  # the customer pays 85% of the original amount (a 15% discount).
@@ -6936,9 +8022,59 @@ module MetronomeSDK
6936
8022
  )
6937
8023
  end
6938
8024
 
6939
- sig { override.returns({ payment_fraction: T.nilable(Float) }) }
8025
+ sig do
8026
+ override.returns(
8027
+ {
8028
+ cap:
8029
+ T.nilable(
8030
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap
8031
+ ),
8032
+ payment_fraction: T.nilable(Float)
8033
+ }
8034
+ )
8035
+ end
6940
8036
  def to_hash
6941
8037
  end
8038
+
8039
+ class Cap < MetronomeSDK::Internal::Type::BaseModel
8040
+ OrHash =
8041
+ T.type_alias do
8042
+ T.any(
8043
+ MetronomeSDK::Models::V2::ContractGetEditHistoryResponse::Data::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap,
8044
+ MetronomeSDK::Internal::AnyHash
8045
+ )
8046
+ end
8047
+
8048
+ # Accumulated spend ceiling above which the discount stops applying.
8049
+ sig { returns(Float) }
8050
+ attr_accessor :amount
8051
+
8052
+ # Alias of the spend tracker this cap is measured against.
8053
+ sig { returns(String) }
8054
+ attr_accessor :spend_tracker_alias
8055
+
8056
+ # Update the discount cap. Set to null to remove an existing cap.
8057
+ sig do
8058
+ params(amount: Float, spend_tracker_alias: String).returns(
8059
+ T.attached_class
8060
+ )
8061
+ end
8062
+ def self.new(
8063
+ # Accumulated spend ceiling above which the discount stops applying.
8064
+ amount:,
8065
+ # Alias of the spend tracker this cap is measured against.
8066
+ spend_tracker_alias:
8067
+ )
8068
+ end
8069
+
8070
+ sig do
8071
+ override.returns(
8072
+ { amount: Float, spend_tracker_alias: String }
8073
+ )
8074
+ end
8075
+ def to_hash
8076
+ end
8077
+ end
6942
8078
  end
6943
8079
  end
6944
8080