metronome-sdk 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/transport/base_client.rb +4 -1
  5. data/lib/metronome_sdk/models/commit.rb +10 -1
  6. data/lib/metronome_sdk/models/contract_v2.rb +290 -7
  7. data/lib/metronome_sdk/models/contract_without_amendments.rb +178 -4
  8. data/lib/metronome_sdk/models/credit.rb +10 -1
  9. data/lib/metronome_sdk/models/override.rb +7 -1
  10. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +10 -2
  11. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +3 -1
  12. data/lib/metronome_sdk/models/subscription.rb +90 -2
  13. data/lib/metronome_sdk/models/v1/alert_create_params.rb +127 -1
  14. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +17 -4
  15. data/lib/metronome_sdk/models/v1/contract_create_params.rb +290 -10
  16. data/lib/metronome_sdk/models/v1/contract_create_response.rb +178 -4
  17. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rb +88 -0
  18. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rb +62 -0
  19. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +10 -1
  20. data/lib/metronome_sdk/models/v1/customers/alert_retrieve_params.rb +127 -1
  21. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +130 -3
  22. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +10 -1
  23. data/lib/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rb +2 -0
  24. data/lib/metronome_sdk/models/v1/package_create_params.rb +279 -10
  25. data/lib/metronome_sdk/models/v1/package_list_response.rb +264 -7
  26. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +264 -7
  27. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +515 -9
  28. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +456 -8
  29. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +456 -8
  30. data/lib/metronome_sdk/resources/v1/alerts.rb +3 -1
  31. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/rates.rb +4 -0
  32. data/lib/metronome_sdk/resources/v1/contracts.rb +68 -1
  33. data/lib/metronome_sdk/resources/v1/customers/alerts.rb +4 -2
  34. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +3 -1
  35. data/lib/metronome_sdk/resources/v1/dashboards.rb +7 -2
  36. data/lib/metronome_sdk/version.rb +1 -1
  37. data/lib/metronome_sdk.rb +2 -0
  38. data/rbi/metronome_sdk/models/commit.rbi +13 -0
  39. data/rbi/metronome_sdk/models/contract_v2.rbi +715 -3
  40. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +463 -0
  41. data/rbi/metronome_sdk/models/credit.rbi +13 -0
  42. data/rbi/metronome_sdk/models/override.rbi +9 -0
  43. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +11 -1
  44. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +4 -0
  45. data/rbi/metronome_sdk/models/subscription.rbi +212 -3
  46. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +373 -0
  47. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +27 -6
  48. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +719 -9
  49. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +463 -0
  50. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbi +112 -0
  51. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbi +119 -0
  52. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +13 -0
  53. data/rbi/metronome_sdk/models/v1/customers/alert_retrieve_params.rbi +360 -0
  54. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +379 -2
  55. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +13 -0
  56. data/rbi/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbi +10 -0
  57. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +706 -9
  58. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +693 -3
  59. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +693 -3
  60. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +1333 -40
  61. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +1204 -67
  62. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1204 -67
  63. data/rbi/metronome_sdk/resources/v1/alerts.rbi +8 -0
  64. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbi +4 -0
  65. data/rbi/metronome_sdk/resources/v1/contracts.rbi +70 -0
  66. data/rbi/metronome_sdk/resources/v1/customers/alerts.rbi +8 -1
  67. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +4 -0
  68. data/rbi/metronome_sdk/resources/v1/dashboards.rbi +7 -2
  69. data/sig/metronome_sdk/models/commit.rbs +7 -0
  70. data/sig/metronome_sdk/models/contract_v2.rbs +278 -5
  71. data/sig/metronome_sdk/models/contract_without_amendments.rbs +169 -2
  72. data/sig/metronome_sdk/models/credit.rbs +7 -0
  73. data/sig/metronome_sdk/models/override.rbs +7 -0
  74. data/sig/metronome_sdk/models/subscription.rbs +88 -3
  75. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +144 -0
  76. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +7 -0
  77. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +278 -5
  78. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +167 -2
  79. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbs +63 -0
  80. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbs +59 -0
  81. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +7 -0
  82. data/sig/metronome_sdk/models/v1/customers/alert_retrieve_params.rbs +141 -0
  83. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +150 -0
  84. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +8 -1
  85. data/sig/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbs +4 -0
  86. data/sig/metronome_sdk/models/v1/package_create_params.rbs +271 -5
  87. data/sig/metronome_sdk/models/v1/package_list_response.rbs +265 -5
  88. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +263 -5
  89. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +468 -5
  90. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +428 -5
  91. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +427 -5
  92. data/sig/metronome_sdk/resources/v1/alerts.rbs +1 -0
  93. data/sig/metronome_sdk/resources/v1/contracts.rbs +13 -0
  94. data/sig/metronome_sdk/resources/v1/customers/alerts.rbs +1 -0
  95. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +1 -0
  96. metadata +8 -2
@@ -1966,6 +1966,12 @@ module MetronomeSDK
1966
1966
  )
1967
1967
  end
1968
1968
 
1969
+ sig { returns(T.nilable(T::Array[String])) }
1970
+ attr_reader :any_commit_or_credit_ids
1971
+
1972
+ sig { params(any_commit_or_credit_ids: T::Array[String]).void }
1973
+ attr_writer :any_commit_or_credit_ids
1974
+
1969
1975
  sig do
1970
1976
  returns(
1971
1977
  T.nilable(
@@ -2028,6 +2034,7 @@ module MetronomeSDK
2028
2034
 
2029
2035
  sig do
2030
2036
  params(
2037
+ any_commit_or_credit_ids: T::Array[String],
2031
2038
  billing_frequency:
2032
2039
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddOverride::OverrideSpecifier::BillingFrequency::OrSymbol,
2033
2040
  commit_ids: T::Array[String],
@@ -2040,6 +2047,7 @@ module MetronomeSDK
2040
2047
  ).returns(T.attached_class)
2041
2048
  end
2042
2049
  def self.new(
2050
+ any_commit_or_credit_ids: nil,
2043
2051
  billing_frequency: nil,
2044
2052
  commit_ids: nil,
2045
2053
  presentation_group_values: nil,
@@ -2053,6 +2061,7 @@ module MetronomeSDK
2053
2061
  sig do
2054
2062
  override.returns(
2055
2063
  {
2064
+ any_commit_or_credit_ids: T::Array[String],
2056
2065
  billing_frequency:
2057
2066
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddOverride::OverrideSpecifier::BillingFrequency::TaggedSymbol,
2058
2067
  commit_ids: T::Array[String],
@@ -2563,6 +2572,26 @@ module MetronomeSDK
2563
2572
  end
2564
2573
  attr_writer :proration
2565
2574
 
2575
+ # Rounding configuration for prorated recurring commit amounts.
2576
+ sig do
2577
+ returns(
2578
+ T.nilable(
2579
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding
2580
+ )
2581
+ )
2582
+ end
2583
+ attr_reader :proration_rounding
2584
+
2585
+ sig do
2586
+ params(
2587
+ proration_rounding:
2588
+ T.nilable(
2589
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::OrHash
2590
+ )
2591
+ ).void
2592
+ end
2593
+ attr_writer :proration_rounding
2594
+
2566
2595
  # The frequency at which the recurring commits will be created. If not provided: -
2567
2596
  # The commits will be created on the usage invoice frequency. If provided: - The
2568
2597
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -2652,6 +2681,10 @@ module MetronomeSDK
2652
2681
  netsuite_sales_order_id: String,
2653
2682
  proration:
2654
2683
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::Proration::OrSymbol,
2684
+ proration_rounding:
2685
+ T.nilable(
2686
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::OrHash
2687
+ ),
2655
2688
  recurrence_frequency:
2656
2689
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::RecurrenceFrequency::OrSymbol,
2657
2690
  rollover_fraction: Float,
@@ -2693,6 +2726,8 @@ module MetronomeSDK
2693
2726
  # Determines whether the first and last commit will be prorated. If not provided,
2694
2727
  # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
2695
2728
  proration: nil,
2729
+ # Rounding configuration for prorated recurring commit amounts.
2730
+ proration_rounding: nil,
2696
2731
  # The frequency at which the recurring commits will be created. If not provided: -
2697
2732
  # The commits will be created on the usage invoice frequency. If provided: - The
2698
2733
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -2740,6 +2775,10 @@ module MetronomeSDK
2740
2775
  netsuite_sales_order_id: String,
2741
2776
  proration:
2742
2777
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::Proration::TaggedSymbol,
2778
+ proration_rounding:
2779
+ T.nilable(
2780
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding
2781
+ ),
2743
2782
  recurrence_frequency:
2744
2783
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::RecurrenceFrequency::TaggedSymbol,
2745
2784
  rollover_fraction: Float,
@@ -3049,6 +3088,255 @@ module MetronomeSDK
3049
3088
  end
3050
3089
  end
3051
3090
 
3091
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
3092
+ OrHash =
3093
+ T.type_alias do
3094
+ T.any(
3095
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding,
3096
+ MetronomeSDK::Internal::AnyHash
3097
+ )
3098
+ end
3099
+
3100
+ sig do
3101
+ returns(
3102
+ T.nilable(
3103
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access
3104
+ )
3105
+ )
3106
+ end
3107
+ attr_reader :access
3108
+
3109
+ sig do
3110
+ params(
3111
+ access:
3112
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::OrHash
3113
+ ).void
3114
+ end
3115
+ attr_writer :access
3116
+
3117
+ sig do
3118
+ returns(
3119
+ T.nilable(
3120
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice
3121
+ )
3122
+ )
3123
+ end
3124
+ attr_reader :invoice
3125
+
3126
+ sig do
3127
+ params(
3128
+ invoice:
3129
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::OrHash
3130
+ ).void
3131
+ end
3132
+ attr_writer :invoice
3133
+
3134
+ # Rounding configuration for prorated recurring commit amounts.
3135
+ sig do
3136
+ params(
3137
+ access:
3138
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::OrHash,
3139
+ invoice:
3140
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::OrHash
3141
+ ).returns(T.attached_class)
3142
+ end
3143
+ def self.new(access: nil, invoice: nil)
3144
+ end
3145
+
3146
+ sig do
3147
+ override.returns(
3148
+ {
3149
+ access:
3150
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access,
3151
+ invoice:
3152
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice
3153
+ }
3154
+ )
3155
+ end
3156
+ def to_hash
3157
+ end
3158
+
3159
+ class Access < MetronomeSDK::Internal::Type::BaseModel
3160
+ OrHash =
3161
+ T.type_alias do
3162
+ T.any(
3163
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access,
3164
+ MetronomeSDK::Internal::AnyHash
3165
+ )
3166
+ end
3167
+
3168
+ # Number of decimal places to round to. Applied directly to the stored monetary
3169
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
3170
+ # nearest 100 in the stored unit).
3171
+ sig { returns(Float) }
3172
+ attr_accessor :decimal_places
3173
+
3174
+ sig do
3175
+ returns(
3176
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
3177
+ )
3178
+ end
3179
+ attr_accessor :rounding_method
3180
+
3181
+ sig do
3182
+ params(
3183
+ decimal_places: Float,
3184
+ rounding_method:
3185
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::OrSymbol
3186
+ ).returns(T.attached_class)
3187
+ end
3188
+ def self.new(
3189
+ # Number of decimal places to round to. Applied directly to the stored monetary
3190
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
3191
+ # nearest 100 in the stored unit).
3192
+ decimal_places:,
3193
+ rounding_method:
3194
+ )
3195
+ end
3196
+
3197
+ sig do
3198
+ override.returns(
3199
+ {
3200
+ decimal_places: Float,
3201
+ rounding_method:
3202
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
3203
+ }
3204
+ )
3205
+ end
3206
+ def to_hash
3207
+ end
3208
+
3209
+ module RoundingMethod
3210
+ extend MetronomeSDK::Internal::Type::Enum
3211
+
3212
+ TaggedSymbol =
3213
+ T.type_alias do
3214
+ T.all(
3215
+ Symbol,
3216
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::RoundingMethod
3217
+ )
3218
+ end
3219
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
3220
+
3221
+ HALF_UP =
3222
+ T.let(
3223
+ :HALF_UP,
3224
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
3225
+ )
3226
+ FLOOR =
3227
+ T.let(
3228
+ :FLOOR,
3229
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
3230
+ )
3231
+ CEILING =
3232
+ T.let(
3233
+ :CEILING,
3234
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
3235
+ )
3236
+
3237
+ sig do
3238
+ override.returns(
3239
+ T::Array[
3240
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
3241
+ ]
3242
+ )
3243
+ end
3244
+ def self.values
3245
+ end
3246
+ end
3247
+ end
3248
+
3249
+ class Invoice < MetronomeSDK::Internal::Type::BaseModel
3250
+ OrHash =
3251
+ T.type_alias do
3252
+ T.any(
3253
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice,
3254
+ MetronomeSDK::Internal::AnyHash
3255
+ )
3256
+ end
3257
+
3258
+ # Number of decimal places to round to. Applied directly to the stored monetary
3259
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
3260
+ # nearest 100 in the stored unit).
3261
+ sig { returns(Float) }
3262
+ attr_accessor :decimal_places
3263
+
3264
+ sig do
3265
+ returns(
3266
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
3267
+ )
3268
+ end
3269
+ attr_accessor :rounding_method
3270
+
3271
+ sig do
3272
+ params(
3273
+ decimal_places: Float,
3274
+ rounding_method:
3275
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::OrSymbol
3276
+ ).returns(T.attached_class)
3277
+ end
3278
+ def self.new(
3279
+ # Number of decimal places to round to. Applied directly to the stored monetary
3280
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
3281
+ # nearest 100 in the stored unit).
3282
+ decimal_places:,
3283
+ rounding_method:
3284
+ )
3285
+ end
3286
+
3287
+ sig do
3288
+ override.returns(
3289
+ {
3290
+ decimal_places: Float,
3291
+ rounding_method:
3292
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
3293
+ }
3294
+ )
3295
+ end
3296
+ def to_hash
3297
+ end
3298
+
3299
+ module RoundingMethod
3300
+ extend MetronomeSDK::Internal::Type::Enum
3301
+
3302
+ TaggedSymbol =
3303
+ T.type_alias do
3304
+ T.all(
3305
+ Symbol,
3306
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod
3307
+ )
3308
+ end
3309
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
3310
+
3311
+ HALF_UP =
3312
+ T.let(
3313
+ :HALF_UP,
3314
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
3315
+ )
3316
+ FLOOR =
3317
+ T.let(
3318
+ :FLOOR,
3319
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
3320
+ )
3321
+ CEILING =
3322
+ T.let(
3323
+ :CEILING,
3324
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
3325
+ )
3326
+
3327
+ sig do
3328
+ override.returns(
3329
+ T::Array[
3330
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
3331
+ ]
3332
+ )
3333
+ end
3334
+ def self.values
3335
+ end
3336
+ end
3337
+ end
3338
+ end
3339
+
3052
3340
  # The frequency at which the recurring commits will be created. If not provided: -
3053
3341
  # The commits will be created on the usage invoice frequency. If provided: - The
3054
3342
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -3086,6 +3374,11 @@ module MetronomeSDK
3086
3374
  :WEEKLY,
3087
3375
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::RecurrenceFrequency::TaggedSymbol
3088
3376
  )
3377
+ DAILY =
3378
+ T.let(
3379
+ :DAILY,
3380
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCommit::RecurrenceFrequency::TaggedSymbol
3381
+ )
3089
3382
 
3090
3383
  sig do
3091
3384
  override.returns(
@@ -3266,6 +3559,26 @@ module MetronomeSDK
3266
3559
  end
3267
3560
  attr_writer :proration
3268
3561
 
3562
+ # Rounding configuration for prorated recurring credit amounts.
3563
+ sig do
3564
+ returns(
3565
+ T.nilable(
3566
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding
3567
+ )
3568
+ )
3569
+ end
3570
+ attr_reader :proration_rounding
3571
+
3572
+ sig do
3573
+ params(
3574
+ proration_rounding:
3575
+ T.nilable(
3576
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::OrHash
3577
+ )
3578
+ ).void
3579
+ end
3580
+ attr_writer :proration_rounding
3581
+
3269
3582
  # The frequency at which the recurring commits will be created. If not provided: -
3270
3583
  # The commits will be created on the usage invoice frequency. If provided: - The
3271
3584
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -3353,6 +3666,10 @@ module MetronomeSDK
3353
3666
  netsuite_sales_order_id: String,
3354
3667
  proration:
3355
3668
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::Proration::OrSymbol,
3669
+ proration_rounding:
3670
+ T.nilable(
3671
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::OrHash
3672
+ ),
3356
3673
  recurrence_frequency:
3357
3674
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::OrSymbol,
3358
3675
  rollover_fraction: Float,
@@ -3392,6 +3709,8 @@ module MetronomeSDK
3392
3709
  # Determines whether the first and last commit will be prorated. If not provided,
3393
3710
  # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
3394
3711
  proration: nil,
3712
+ # Rounding configuration for prorated recurring credit amounts.
3713
+ proration_rounding: nil,
3395
3714
  # The frequency at which the recurring commits will be created. If not provided: -
3396
3715
  # The commits will be created on the usage invoice frequency. If provided: - The
3397
3716
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -3437,6 +3756,10 @@ module MetronomeSDK
3437
3756
  netsuite_sales_order_id: String,
3438
3757
  proration:
3439
3758
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::Proration::TaggedSymbol,
3759
+ proration_rounding:
3760
+ T.nilable(
3761
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding
3762
+ ),
3440
3763
  recurrence_frequency:
3441
3764
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol,
3442
3765
  rollover_fraction: Float,
@@ -3704,57 +4027,200 @@ module MetronomeSDK
3704
4027
  end
3705
4028
  end
3706
4029
 
3707
- # The frequency at which the recurring commits will be created. If not provided: -
3708
- # The commits will be created on the usage invoice frequency. If provided: - The
3709
- # period defined in the duration will correspond to this frequency. - Commits will
3710
- # be created aligned with the recurring commit's starting_at rather than the usage
3711
- # invoice dates.
3712
- module RecurrenceFrequency
3713
- extend MetronomeSDK::Internal::Type::Enum
3714
-
3715
- TaggedSymbol =
4030
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
4031
+ OrHash =
3716
4032
  T.type_alias do
3717
- T.all(
3718
- Symbol,
3719
- MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency
4033
+ T.any(
4034
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding,
4035
+ MetronomeSDK::Internal::AnyHash
3720
4036
  )
3721
4037
  end
3722
- OrSymbol = T.type_alias { T.any(Symbol, String) }
3723
-
3724
- MONTHLY =
3725
- T.let(
3726
- :MONTHLY,
3727
- MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
3728
- )
3729
- QUARTERLY =
3730
- T.let(
3731
- :QUARTERLY,
3732
- MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
3733
- )
3734
- ANNUAL =
3735
- T.let(
3736
- :ANNUAL,
3737
- MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
3738
- )
3739
- WEEKLY =
3740
- T.let(
3741
- :WEEKLY,
3742
- MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
3743
- )
3744
4038
 
3745
4039
  sig do
3746
- override.returns(
3747
- T::Array[
3748
- MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
3749
- ]
4040
+ returns(
4041
+ T.nilable(
4042
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access
4043
+ )
3750
4044
  )
3751
4045
  end
3752
- def self.values
3753
- end
3754
- end
3755
- end
4046
+ attr_reader :access
3756
4047
 
3757
- class AddResellerRoyalty < MetronomeSDK::Internal::Type::BaseModel
4048
+ sig do
4049
+ params(
4050
+ access:
4051
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::OrHash
4052
+ ).void
4053
+ end
4054
+ attr_writer :access
4055
+
4056
+ # Rounding configuration for prorated recurring credit amounts.
4057
+ sig do
4058
+ params(
4059
+ access:
4060
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::OrHash
4061
+ ).returns(T.attached_class)
4062
+ end
4063
+ def self.new(access: nil)
4064
+ end
4065
+
4066
+ sig do
4067
+ override.returns(
4068
+ {
4069
+ access:
4070
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access
4071
+ }
4072
+ )
4073
+ end
4074
+ def to_hash
4075
+ end
4076
+
4077
+ class Access < MetronomeSDK::Internal::Type::BaseModel
4078
+ OrHash =
4079
+ T.type_alias do
4080
+ T.any(
4081
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access,
4082
+ MetronomeSDK::Internal::AnyHash
4083
+ )
4084
+ end
4085
+
4086
+ # Number of decimal places to round to. Applied directly to the stored monetary
4087
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
4088
+ # nearest 100 in the stored unit).
4089
+ sig { returns(Float) }
4090
+ attr_accessor :decimal_places
4091
+
4092
+ sig do
4093
+ returns(
4094
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4095
+ )
4096
+ end
4097
+ attr_accessor :rounding_method
4098
+
4099
+ sig do
4100
+ params(
4101
+ decimal_places: Float,
4102
+ rounding_method:
4103
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::OrSymbol
4104
+ ).returns(T.attached_class)
4105
+ end
4106
+ def self.new(
4107
+ # Number of decimal places to round to. Applied directly to the stored monetary
4108
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
4109
+ # nearest 100 in the stored unit).
4110
+ decimal_places:,
4111
+ rounding_method:
4112
+ )
4113
+ end
4114
+
4115
+ sig do
4116
+ override.returns(
4117
+ {
4118
+ decimal_places: Float,
4119
+ rounding_method:
4120
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4121
+ }
4122
+ )
4123
+ end
4124
+ def to_hash
4125
+ end
4126
+
4127
+ module RoundingMethod
4128
+ extend MetronomeSDK::Internal::Type::Enum
4129
+
4130
+ TaggedSymbol =
4131
+ T.type_alias do
4132
+ T.all(
4133
+ Symbol,
4134
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::RoundingMethod
4135
+ )
4136
+ end
4137
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4138
+
4139
+ HALF_UP =
4140
+ T.let(
4141
+ :HALF_UP,
4142
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4143
+ )
4144
+ FLOOR =
4145
+ T.let(
4146
+ :FLOOR,
4147
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4148
+ )
4149
+ CEILING =
4150
+ T.let(
4151
+ :CEILING,
4152
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4153
+ )
4154
+
4155
+ sig do
4156
+ override.returns(
4157
+ T::Array[
4158
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4159
+ ]
4160
+ )
4161
+ end
4162
+ def self.values
4163
+ end
4164
+ end
4165
+ end
4166
+ end
4167
+
4168
+ # The frequency at which the recurring commits will be created. If not provided: -
4169
+ # The commits will be created on the usage invoice frequency. If provided: - The
4170
+ # period defined in the duration will correspond to this frequency. - Commits will
4171
+ # be created aligned with the recurring commit's starting_at rather than the usage
4172
+ # invoice dates.
4173
+ module RecurrenceFrequency
4174
+ extend MetronomeSDK::Internal::Type::Enum
4175
+
4176
+ TaggedSymbol =
4177
+ T.type_alias do
4178
+ T.all(
4179
+ Symbol,
4180
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency
4181
+ )
4182
+ end
4183
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4184
+
4185
+ MONTHLY =
4186
+ T.let(
4187
+ :MONTHLY,
4188
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
4189
+ )
4190
+ QUARTERLY =
4191
+ T.let(
4192
+ :QUARTERLY,
4193
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
4194
+ )
4195
+ ANNUAL =
4196
+ T.let(
4197
+ :ANNUAL,
4198
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
4199
+ )
4200
+ WEEKLY =
4201
+ T.let(
4202
+ :WEEKLY,
4203
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
4204
+ )
4205
+ DAILY =
4206
+ T.let(
4207
+ :DAILY,
4208
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
4209
+ )
4210
+
4211
+ sig do
4212
+ override.returns(
4213
+ T::Array[
4214
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
4215
+ ]
4216
+ )
4217
+ end
4218
+ def self.values
4219
+ end
4220
+ end
4221
+ end
4222
+
4223
+ class AddResellerRoyalty < MetronomeSDK::Internal::Type::BaseModel
3758
4224
  OrHash =
3759
4225
  T.type_alias do
3760
4226
  T.any(
@@ -4152,6 +4618,23 @@ module MetronomeSDK
4152
4618
  sig { params(id: String).void }
4153
4619
  attr_writer :id
4154
4620
 
4621
+ sig do
4622
+ returns(
4623
+ T.nilable(
4624
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig
4625
+ )
4626
+ )
4627
+ end
4628
+ attr_reader :billing_cycle_config
4629
+
4630
+ sig do
4631
+ params(
4632
+ billing_cycle_config:
4633
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig::OrHash
4634
+ ).void
4635
+ end
4636
+ attr_writer :billing_cycle_config
4637
+
4155
4638
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
4156
4639
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
4157
4640
  attr_reader :custom_fields
@@ -4218,6 +4701,8 @@ module MetronomeSDK
4218
4701
  subscription_rate:
4219
4702
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::SubscriptionRate::OrHash,
4220
4703
  id: String,
4704
+ billing_cycle_config:
4705
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig::OrHash,
4221
4706
  custom_fields: T::Hash[Symbol, String],
4222
4707
  description: String,
4223
4708
  ending_before: Time,
@@ -4248,6 +4733,7 @@ module MetronomeSDK
4248
4733
  starting_at:,
4249
4734
  subscription_rate:,
4250
4735
  id: nil,
4736
+ billing_cycle_config: nil,
4251
4737
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
4252
4738
  custom_fields: nil,
4253
4739
  description: nil,
@@ -4277,6 +4763,8 @@ module MetronomeSDK
4277
4763
  subscription_rate:
4278
4764
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::SubscriptionRate,
4279
4765
  id: String,
4766
+ billing_cycle_config:
4767
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig,
4280
4768
  custom_fields: T::Hash[Symbol, String],
4281
4769
  description: String,
4282
4770
  ending_before: Time,
@@ -4523,14 +5011,33 @@ module MetronomeSDK
4523
5011
  sig { returns(T::Boolean) }
4524
5012
  attr_accessor :is_prorated
4525
5013
 
5014
+ sig do
5015
+ returns(
5016
+ T.nilable(
5017
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding
5018
+ )
5019
+ )
5020
+ end
5021
+ attr_reader :rounding
5022
+
5023
+ sig do
5024
+ params(
5025
+ rounding:
5026
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::OrHash
5027
+ ).void
5028
+ end
5029
+ attr_writer :rounding
5030
+
4526
5031
  sig do
4527
5032
  params(
4528
5033
  invoice_behavior:
4529
5034
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::InvoiceBehavior::OrSymbol,
4530
- is_prorated: T::Boolean
5035
+ is_prorated: T::Boolean,
5036
+ rounding:
5037
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::OrHash
4531
5038
  ).returns(T.attached_class)
4532
5039
  end
4533
- def self.new(invoice_behavior:, is_prorated:)
5040
+ def self.new(invoice_behavior:, is_prorated:, rounding: nil)
4534
5041
  end
4535
5042
 
4536
5043
  sig do
@@ -4538,7 +5045,9 @@ module MetronomeSDK
4538
5045
  {
4539
5046
  invoice_behavior:
4540
5047
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::InvoiceBehavior::TaggedSymbol,
4541
- is_prorated: T::Boolean
5048
+ is_prorated: T::Boolean,
5049
+ rounding:
5050
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding
4542
5051
  }
4543
5052
  )
4544
5053
  end
@@ -4578,6 +5087,96 @@ module MetronomeSDK
4578
5087
  def self.values
4579
5088
  end
4580
5089
  end
5090
+
5091
+ class Rounding < MetronomeSDK::Internal::Type::BaseModel
5092
+ OrHash =
5093
+ T.type_alias do
5094
+ T.any(
5095
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding,
5096
+ MetronomeSDK::Internal::AnyHash
5097
+ )
5098
+ end
5099
+
5100
+ # Number of decimal places to round to. Applied directly to the stored monetary
5101
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
5102
+ # nearest 100 in the stored unit).
5103
+ sig { returns(Float) }
5104
+ attr_accessor :decimal_places
5105
+
5106
+ sig do
5107
+ returns(
5108
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
5109
+ )
5110
+ end
5111
+ attr_accessor :rounding_method
5112
+
5113
+ sig do
5114
+ params(
5115
+ decimal_places: Float,
5116
+ rounding_method:
5117
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::RoundingMethod::OrSymbol
5118
+ ).returns(T.attached_class)
5119
+ end
5120
+ def self.new(
5121
+ # Number of decimal places to round to. Applied directly to the stored monetary
5122
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
5123
+ # nearest 100 in the stored unit).
5124
+ decimal_places:,
5125
+ rounding_method:
5126
+ )
5127
+ end
5128
+
5129
+ sig do
5130
+ override.returns(
5131
+ {
5132
+ decimal_places: Float,
5133
+ rounding_method:
5134
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
5135
+ }
5136
+ )
5137
+ end
5138
+ def to_hash
5139
+ end
5140
+
5141
+ module RoundingMethod
5142
+ extend MetronomeSDK::Internal::Type::Enum
5143
+
5144
+ TaggedSymbol =
5145
+ T.type_alias do
5146
+ T.all(
5147
+ Symbol,
5148
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::RoundingMethod
5149
+ )
5150
+ end
5151
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
5152
+
5153
+ HALF_UP =
5154
+ T.let(
5155
+ :HALF_UP,
5156
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
5157
+ )
5158
+ FLOOR =
5159
+ T.let(
5160
+ :FLOOR,
5161
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
5162
+ )
5163
+ CEILING =
5164
+ T.let(
5165
+ :CEILING,
5166
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
5167
+ )
5168
+
5169
+ sig do
5170
+ override.returns(
5171
+ T::Array[
5172
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
5173
+ ]
5174
+ )
5175
+ end
5176
+ def self.values
5177
+ end
5178
+ end
5179
+ end
4581
5180
  end
4582
5181
 
4583
5182
  # Determines how the subscription's quantity is controlled. Defaults to
@@ -4789,41 +5388,128 @@ module MetronomeSDK
4789
5388
  end
4790
5389
  end
4791
5390
 
4792
- class SeatConfig < MetronomeSDK::Internal::Type::BaseModel
5391
+ class BillingCycleConfig < MetronomeSDK::Internal::Type::BaseModel
4793
5392
  OrHash =
4794
5393
  T.type_alias do
4795
5394
  T.any(
4796
- MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::SeatConfig,
5395
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig,
4797
5396
  MetronomeSDK::Internal::AnyHash
4798
5397
  )
4799
5398
  end
4800
5399
 
4801
- # The property name, sent on usage events, that identifies the seat ID associated
4802
- # with the usage event. For example, the property name might be seat_id or
4803
- # user_id. The property must be set as a group key on billable metrics and a
4804
- # presentation/pricing group key on contract products. This allows linked
4805
- # recurring credits with an allocation per seat to be consumed by only one seat's
4806
- # usage.
4807
- sig { returns(String) }
4808
- attr_accessor :seat_group_key
5400
+ # The date this subscription's billing cycle is anchored to.
5401
+ sig { returns(Time) }
5402
+ attr_accessor :anchor_date
4809
5403
 
4810
- sig { params(seat_group_key: String).returns(T.attached_class) }
5404
+ # Controls whether this subscription consolidates onto usage invoices or gets its
5405
+ # own scheduled invoice.
5406
+ sig do
5407
+ returns(
5408
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
5409
+ )
5410
+ end
5411
+ attr_accessor :invoice_placement
5412
+
5413
+ sig do
5414
+ params(
5415
+ anchor_date: Time,
5416
+ invoice_placement:
5417
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig::InvoicePlacement::OrSymbol
5418
+ ).returns(T.attached_class)
5419
+ end
4811
5420
  def self.new(
4812
- # The property name, sent on usage events, that identifies the seat ID associated
4813
- # with the usage event. For example, the property name might be seat_id or
4814
- # user_id. The property must be set as a group key on billable metrics and a
4815
- # presentation/pricing group key on contract products. This allows linked
4816
- # recurring credits with an allocation per seat to be consumed by only one seat's
4817
- # usage.
4818
- seat_group_key:
5421
+ # The date this subscription's billing cycle is anchored to.
5422
+ anchor_date:,
5423
+ # Controls whether this subscription consolidates onto usage invoices or gets its
5424
+ # own scheduled invoice.
5425
+ invoice_placement:
4819
5426
  )
4820
5427
  end
4821
5428
 
4822
- sig { override.returns({ seat_group_key: String }) }
5429
+ sig do
5430
+ override.returns(
5431
+ {
5432
+ anchor_date: Time,
5433
+ invoice_placement:
5434
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
5435
+ }
5436
+ )
5437
+ end
4823
5438
  def to_hash
4824
5439
  end
4825
- end
4826
- end
5440
+
5441
+ # Controls whether this subscription consolidates onto usage invoices or gets its
5442
+ # own scheduled invoice.
5443
+ module InvoicePlacement
5444
+ extend MetronomeSDK::Internal::Type::Enum
5445
+
5446
+ TaggedSymbol =
5447
+ T.type_alias do
5448
+ T.all(
5449
+ Symbol,
5450
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig::InvoicePlacement
5451
+ )
5452
+ end
5453
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
5454
+
5455
+ ON_SCHEDULED_INVOICE =
5456
+ T.let(
5457
+ :ON_SCHEDULED_INVOICE,
5458
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
5459
+ )
5460
+ ON_USAGE_INVOICE =
5461
+ T.let(
5462
+ :ON_USAGE_INVOICE,
5463
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
5464
+ )
5465
+
5466
+ sig do
5467
+ override.returns(
5468
+ T::Array[
5469
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
5470
+ ]
5471
+ )
5472
+ end
5473
+ def self.values
5474
+ end
5475
+ end
5476
+ end
5477
+
5478
+ class SeatConfig < MetronomeSDK::Internal::Type::BaseModel
5479
+ OrHash =
5480
+ T.type_alias do
5481
+ T.any(
5482
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::AddSubscription::SeatConfig,
5483
+ MetronomeSDK::Internal::AnyHash
5484
+ )
5485
+ end
5486
+
5487
+ # The property name, sent on usage events, that identifies the seat ID associated
5488
+ # with the usage event. For example, the property name might be seat_id or
5489
+ # user_id. The property must be set as a group key on billable metrics and a
5490
+ # presentation/pricing group key on contract products. This allows linked
5491
+ # recurring credits with an allocation per seat to be consumed by only one seat's
5492
+ # usage.
5493
+ sig { returns(String) }
5494
+ attr_accessor :seat_group_key
5495
+
5496
+ sig { params(seat_group_key: String).returns(T.attached_class) }
5497
+ def self.new(
5498
+ # The property name, sent on usage events, that identifies the seat ID associated
5499
+ # with the usage event. For example, the property name might be seat_id or
5500
+ # user_id. The property must be set as a group key on billable metrics and a
5501
+ # presentation/pricing group key on contract products. This allows linked
5502
+ # recurring credits with an allocation per seat to be consumed by only one seat's
5503
+ # usage.
5504
+ seat_group_key:
5505
+ )
5506
+ end
5507
+
5508
+ sig { override.returns({ seat_group_key: String }) }
5509
+ def to_hash
5510
+ end
5511
+ end
5512
+ end
4827
5513
 
4828
5514
  class AddUsageFilter < MetronomeSDK::Internal::Type::BaseModel
4829
5515
  OrHash =
@@ -6781,6 +7467,8 @@ module MetronomeSDK
6781
7467
  sig { params(threshold_amount: Float).void }
6782
7468
  attr_writer :threshold_amount
6783
7469
 
7470
+ # Determines which balances are excluded from remaining balance calculation for
7471
+ # threshold billing.
6784
7472
  sig do
6785
7473
  returns(
6786
7474
  T.nilable(
@@ -6830,6 +7518,8 @@ module MetronomeSDK
6830
7518
  # Specify the threshold amount for the contract. Each time the contract's balance
6831
7519
  # lowers to this amount, a threshold charge will be initiated.
6832
7520
  threshold_amount: nil,
7521
+ # Determines which balances are excluded from remaining balance calculation for
7522
+ # threshold billing.
6833
7523
  threshold_balance_specifiers: nil
6834
7524
  )
6835
7525
  end
@@ -7269,6 +7959,26 @@ module MetronomeSDK
7269
7959
  end
7270
7960
  attr_writer :invoice_amount
7271
7961
 
7962
+ # Rounding configuration for prorated recurring commit amounts.
7963
+ sig do
7964
+ returns(
7965
+ T.nilable(
7966
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding
7967
+ )
7968
+ )
7969
+ end
7970
+ attr_reader :proration_rounding
7971
+
7972
+ sig do
7973
+ params(
7974
+ proration_rounding:
7975
+ T.nilable(
7976
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::OrHash
7977
+ )
7978
+ ).void
7979
+ end
7980
+ attr_writer :proration_rounding
7981
+
7272
7982
  sig do
7273
7983
  returns(
7274
7984
  T.nilable(
@@ -7294,6 +8004,10 @@ module MetronomeSDK
7294
8004
  ending_before: Time,
7295
8005
  invoice_amount:
7296
8006
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::InvoiceAmount::OrHash,
8007
+ proration_rounding:
8008
+ T.nilable(
8009
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::OrHash
8010
+ ),
7297
8011
  rate_type:
7298
8012
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::RateType::OrSymbol
7299
8013
  ).returns(T.attached_class)
@@ -7303,6 +8017,8 @@ module MetronomeSDK
7303
8017
  access_amount: nil,
7304
8018
  ending_before: nil,
7305
8019
  invoice_amount: nil,
8020
+ # Rounding configuration for prorated recurring commit amounts.
8021
+ proration_rounding: nil,
7306
8022
  rate_type: nil
7307
8023
  )
7308
8024
  end
@@ -7316,6 +8032,10 @@ module MetronomeSDK
7316
8032
  ending_before: Time,
7317
8033
  invoice_amount:
7318
8034
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::InvoiceAmount,
8035
+ proration_rounding:
8036
+ T.nilable(
8037
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding
8038
+ ),
7319
8039
  rate_type:
7320
8040
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::RateType::TaggedSymbol
7321
8041
  }
@@ -7392,6 +8112,255 @@ module MetronomeSDK
7392
8112
  end
7393
8113
  end
7394
8114
 
8115
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
8116
+ OrHash =
8117
+ T.type_alias do
8118
+ T.any(
8119
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding,
8120
+ MetronomeSDK::Internal::AnyHash
8121
+ )
8122
+ end
8123
+
8124
+ sig do
8125
+ returns(
8126
+ T.nilable(
8127
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access
8128
+ )
8129
+ )
8130
+ end
8131
+ attr_reader :access
8132
+
8133
+ sig do
8134
+ params(
8135
+ access:
8136
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::OrHash
8137
+ ).void
8138
+ end
8139
+ attr_writer :access
8140
+
8141
+ sig do
8142
+ returns(
8143
+ T.nilable(
8144
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice
8145
+ )
8146
+ )
8147
+ end
8148
+ attr_reader :invoice
8149
+
8150
+ sig do
8151
+ params(
8152
+ invoice:
8153
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::OrHash
8154
+ ).void
8155
+ end
8156
+ attr_writer :invoice
8157
+
8158
+ # Rounding configuration for prorated recurring commit amounts.
8159
+ sig do
8160
+ params(
8161
+ access:
8162
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::OrHash,
8163
+ invoice:
8164
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::OrHash
8165
+ ).returns(T.attached_class)
8166
+ end
8167
+ def self.new(access: nil, invoice: nil)
8168
+ end
8169
+
8170
+ sig do
8171
+ override.returns(
8172
+ {
8173
+ access:
8174
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access,
8175
+ invoice:
8176
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice
8177
+ }
8178
+ )
8179
+ end
8180
+ def to_hash
8181
+ end
8182
+
8183
+ class Access < MetronomeSDK::Internal::Type::BaseModel
8184
+ OrHash =
8185
+ T.type_alias do
8186
+ T.any(
8187
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access,
8188
+ MetronomeSDK::Internal::AnyHash
8189
+ )
8190
+ end
8191
+
8192
+ # Number of decimal places to round to. Applied directly to the stored monetary
8193
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
8194
+ # nearest 100 in the stored unit).
8195
+ sig { returns(Float) }
8196
+ attr_accessor :decimal_places
8197
+
8198
+ sig do
8199
+ returns(
8200
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8201
+ )
8202
+ end
8203
+ attr_accessor :rounding_method
8204
+
8205
+ sig do
8206
+ params(
8207
+ decimal_places: Float,
8208
+ rounding_method:
8209
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::OrSymbol
8210
+ ).returns(T.attached_class)
8211
+ end
8212
+ def self.new(
8213
+ # Number of decimal places to round to. Applied directly to the stored monetary
8214
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
8215
+ # nearest 100 in the stored unit).
8216
+ decimal_places:,
8217
+ rounding_method:
8218
+ )
8219
+ end
8220
+
8221
+ sig do
8222
+ override.returns(
8223
+ {
8224
+ decimal_places: Float,
8225
+ rounding_method:
8226
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8227
+ }
8228
+ )
8229
+ end
8230
+ def to_hash
8231
+ end
8232
+
8233
+ module RoundingMethod
8234
+ extend MetronomeSDK::Internal::Type::Enum
8235
+
8236
+ TaggedSymbol =
8237
+ T.type_alias do
8238
+ T.all(
8239
+ Symbol,
8240
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod
8241
+ )
8242
+ end
8243
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
8244
+
8245
+ HALF_UP =
8246
+ T.let(
8247
+ :HALF_UP,
8248
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8249
+ )
8250
+ FLOOR =
8251
+ T.let(
8252
+ :FLOOR,
8253
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8254
+ )
8255
+ CEILING =
8256
+ T.let(
8257
+ :CEILING,
8258
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8259
+ )
8260
+
8261
+ sig do
8262
+ override.returns(
8263
+ T::Array[
8264
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8265
+ ]
8266
+ )
8267
+ end
8268
+ def self.values
8269
+ end
8270
+ end
8271
+ end
8272
+
8273
+ class Invoice < MetronomeSDK::Internal::Type::BaseModel
8274
+ OrHash =
8275
+ T.type_alias do
8276
+ T.any(
8277
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice,
8278
+ MetronomeSDK::Internal::AnyHash
8279
+ )
8280
+ end
8281
+
8282
+ # Number of decimal places to round to. Applied directly to the stored monetary
8283
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
8284
+ # nearest 100 in the stored unit).
8285
+ sig { returns(Float) }
8286
+ attr_accessor :decimal_places
8287
+
8288
+ sig do
8289
+ returns(
8290
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
8291
+ )
8292
+ end
8293
+ attr_accessor :rounding_method
8294
+
8295
+ sig do
8296
+ params(
8297
+ decimal_places: Float,
8298
+ rounding_method:
8299
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::OrSymbol
8300
+ ).returns(T.attached_class)
8301
+ end
8302
+ def self.new(
8303
+ # Number of decimal places to round to. Applied directly to the stored monetary
8304
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
8305
+ # nearest 100 in the stored unit).
8306
+ decimal_places:,
8307
+ rounding_method:
8308
+ )
8309
+ end
8310
+
8311
+ sig do
8312
+ override.returns(
8313
+ {
8314
+ decimal_places: Float,
8315
+ rounding_method:
8316
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
8317
+ }
8318
+ )
8319
+ end
8320
+ def to_hash
8321
+ end
8322
+
8323
+ module RoundingMethod
8324
+ extend MetronomeSDK::Internal::Type::Enum
8325
+
8326
+ TaggedSymbol =
8327
+ T.type_alias do
8328
+ T.all(
8329
+ Symbol,
8330
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod
8331
+ )
8332
+ end
8333
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
8334
+
8335
+ HALF_UP =
8336
+ T.let(
8337
+ :HALF_UP,
8338
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
8339
+ )
8340
+ FLOOR =
8341
+ T.let(
8342
+ :FLOOR,
8343
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
8344
+ )
8345
+ CEILING =
8346
+ T.let(
8347
+ :CEILING,
8348
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
8349
+ )
8350
+
8351
+ sig do
8352
+ override.returns(
8353
+ T::Array[
8354
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
8355
+ ]
8356
+ )
8357
+ end
8358
+ def self.values
8359
+ end
8360
+ end
8361
+ end
8362
+ end
8363
+
7395
8364
  module RateType
7396
8365
  extend MetronomeSDK::Internal::Type::Enum
7397
8366
 
@@ -7462,6 +8431,26 @@ module MetronomeSDK
7462
8431
  sig { params(ending_before: Time).void }
7463
8432
  attr_writer :ending_before
7464
8433
 
8434
+ # Rounding configuration for prorated recurring credit amounts.
8435
+ sig do
8436
+ returns(
8437
+ T.nilable(
8438
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding
8439
+ )
8440
+ )
8441
+ end
8442
+ attr_reader :proration_rounding
8443
+
8444
+ sig do
8445
+ params(
8446
+ proration_rounding:
8447
+ T.nilable(
8448
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::OrHash
8449
+ )
8450
+ ).void
8451
+ end
8452
+ attr_writer :proration_rounding
8453
+
7465
8454
  sig do
7466
8455
  returns(
7467
8456
  T.nilable(
@@ -7485,6 +8474,10 @@ module MetronomeSDK
7485
8474
  access_amount:
7486
8475
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::AccessAmount::OrHash,
7487
8476
  ending_before: Time,
8477
+ proration_rounding:
8478
+ T.nilable(
8479
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::OrHash
8480
+ ),
7488
8481
  rate_type:
7489
8482
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::RateType::OrSymbol
7490
8483
  ).returns(T.attached_class)
@@ -7493,6 +8486,8 @@ module MetronomeSDK
7493
8486
  id:,
7494
8487
  access_amount: nil,
7495
8488
  ending_before: nil,
8489
+ # Rounding configuration for prorated recurring credit amounts.
8490
+ proration_rounding: nil,
7496
8491
  rate_type: nil
7497
8492
  )
7498
8493
  end
@@ -7504,6 +8499,10 @@ module MetronomeSDK
7504
8499
  access_amount:
7505
8500
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::AccessAmount,
7506
8501
  ending_before: Time,
8502
+ proration_rounding:
8503
+ T.nilable(
8504
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding
8505
+ ),
7507
8506
  rate_type:
7508
8507
  MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::RateType::TaggedSymbol
7509
8508
  }
@@ -7546,6 +8545,144 @@ module MetronomeSDK
7546
8545
  end
7547
8546
  end
7548
8547
 
8548
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
8549
+ OrHash =
8550
+ T.type_alias do
8551
+ T.any(
8552
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding,
8553
+ MetronomeSDK::Internal::AnyHash
8554
+ )
8555
+ end
8556
+
8557
+ sig do
8558
+ returns(
8559
+ T.nilable(
8560
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access
8561
+ )
8562
+ )
8563
+ end
8564
+ attr_reader :access
8565
+
8566
+ sig do
8567
+ params(
8568
+ access:
8569
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::OrHash
8570
+ ).void
8571
+ end
8572
+ attr_writer :access
8573
+
8574
+ # Rounding configuration for prorated recurring credit amounts.
8575
+ sig do
8576
+ params(
8577
+ access:
8578
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::OrHash
8579
+ ).returns(T.attached_class)
8580
+ end
8581
+ def self.new(access: nil)
8582
+ end
8583
+
8584
+ sig do
8585
+ override.returns(
8586
+ {
8587
+ access:
8588
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access
8589
+ }
8590
+ )
8591
+ end
8592
+ def to_hash
8593
+ end
8594
+
8595
+ class Access < MetronomeSDK::Internal::Type::BaseModel
8596
+ OrHash =
8597
+ T.type_alias do
8598
+ T.any(
8599
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access,
8600
+ MetronomeSDK::Internal::AnyHash
8601
+ )
8602
+ end
8603
+
8604
+ # Number of decimal places to round to. Applied directly to the stored monetary
8605
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
8606
+ # nearest 100 in the stored unit).
8607
+ sig { returns(Float) }
8608
+ attr_accessor :decimal_places
8609
+
8610
+ sig do
8611
+ returns(
8612
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8613
+ )
8614
+ end
8615
+ attr_accessor :rounding_method
8616
+
8617
+ sig do
8618
+ params(
8619
+ decimal_places: Float,
8620
+ rounding_method:
8621
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::OrSymbol
8622
+ ).returns(T.attached_class)
8623
+ end
8624
+ def self.new(
8625
+ # Number of decimal places to round to. Applied directly to the stored monetary
8626
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
8627
+ # nearest 100 in the stored unit).
8628
+ decimal_places:,
8629
+ rounding_method:
8630
+ )
8631
+ end
8632
+
8633
+ sig do
8634
+ override.returns(
8635
+ {
8636
+ decimal_places: Float,
8637
+ rounding_method:
8638
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8639
+ }
8640
+ )
8641
+ end
8642
+ def to_hash
8643
+ end
8644
+
8645
+ module RoundingMethod
8646
+ extend MetronomeSDK::Internal::Type::Enum
8647
+
8648
+ TaggedSymbol =
8649
+ T.type_alias do
8650
+ T.all(
8651
+ Symbol,
8652
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod
8653
+ )
8654
+ end
8655
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
8656
+
8657
+ HALF_UP =
8658
+ T.let(
8659
+ :HALF_UP,
8660
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8661
+ )
8662
+ FLOOR =
8663
+ T.let(
8664
+ :FLOOR,
8665
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8666
+ )
8667
+ CEILING =
8668
+ T.let(
8669
+ :CEILING,
8670
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8671
+ )
8672
+
8673
+ sig do
8674
+ override.returns(
8675
+ T::Array[
8676
+ MetronomeSDK::Models::V2::ContractEditResponse::Data::Edit::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
8677
+ ]
8678
+ )
8679
+ end
8680
+ def self.values
8681
+ end
8682
+ end
8683
+ end
8684
+ end
8685
+
7549
8686
  module RateType
7550
8687
  extend MetronomeSDK::Internal::Type::Enum
7551
8688