metronome-sdk 3.6.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 (141) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +54 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/transport/base_client.rb +4 -1
  5. data/lib/metronome_sdk/internal/type/enum.rb +0 -25
  6. data/lib/metronome_sdk/models/commit.rb +36 -1
  7. data/lib/metronome_sdk/models/contract.rb +140 -1
  8. data/lib/metronome_sdk/models/contract_v2.rb +457 -8
  9. data/lib/metronome_sdk/models/contract_without_amendments.rb +320 -5
  10. data/lib/metronome_sdk/models/credit.rb +10 -1
  11. data/lib/metronome_sdk/models/override.rb +7 -1
  12. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +113 -2
  13. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +105 -2
  14. data/lib/metronome_sdk/models/spend_threshold_configuration.rb +33 -1
  15. data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +33 -1
  16. data/lib/metronome_sdk/models/subscription.rb +90 -2
  17. data/lib/metronome_sdk/models/v1/alert_create_params.rb +127 -1
  18. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +46 -5
  19. data/lib/metronome_sdk/models/v1/contract_create_params.rb +436 -12
  20. data/lib/metronome_sdk/models/v1/contract_create_response.rb +1308 -3
  21. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rb +88 -0
  22. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rb +62 -0
  23. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +10 -1
  24. data/lib/metronome_sdk/models/v1/customers/alert_retrieve_params.rb +127 -1
  25. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +130 -3
  26. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +10 -1
  27. data/lib/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rb +2 -0
  28. data/lib/metronome_sdk/models/v1/package_create_params.rb +394 -11
  29. data/lib/metronome_sdk/models/v1/package_list_response.rb +374 -8
  30. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +378 -8
  31. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +817 -13
  32. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +4310 -3
  33. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +600 -10
  34. data/lib/metronome_sdk/resources/v1/alerts.rb +3 -1
  35. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/rates.rb +4 -0
  36. data/lib/metronome_sdk/resources/v1/contracts.rb +71 -2
  37. data/lib/metronome_sdk/resources/v1/customers/alerts.rb +4 -2
  38. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +3 -1
  39. data/lib/metronome_sdk/resources/v1/dashboards.rb +7 -2
  40. data/lib/metronome_sdk/resources/v1/packages.rb +6 -5
  41. data/lib/metronome_sdk/resources/v1.rb +0 -4
  42. data/lib/metronome_sdk/resources/v2/contracts.rb +5 -1
  43. data/lib/metronome_sdk/version.rb +1 -1
  44. data/lib/metronome_sdk.rb +2 -8
  45. data/rbi/metronome_sdk/models/commit.rbi +61 -0
  46. data/rbi/metronome_sdk/models/contract.rbi +354 -0
  47. data/rbi/metronome_sdk/models/contract_v2.rbi +1132 -11
  48. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +831 -0
  49. data/rbi/metronome_sdk/models/credit.rbi +13 -0
  50. data/rbi/metronome_sdk/models/override.rbi +9 -0
  51. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +299 -6
  52. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +287 -6
  53. data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +78 -3
  54. data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +78 -3
  55. data/rbi/metronome_sdk/models/subscription.rbi +212 -3
  56. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +373 -0
  57. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +81 -6
  58. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +1095 -17
  59. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +2911 -4
  60. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbi +112 -0
  61. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbi +119 -0
  62. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +13 -0
  63. data/rbi/metronome_sdk/models/v1/customers/alert_retrieve_params.rbi +360 -0
  64. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +379 -2
  65. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +13 -0
  66. data/rbi/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbi +10 -0
  67. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +1049 -42
  68. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +1051 -54
  69. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +1051 -54
  70. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +2130 -114
  71. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +9749 -4
  72. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1567 -82
  73. data/rbi/metronome_sdk/resources/v1/alerts.rbi +8 -0
  74. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbi +4 -0
  75. data/rbi/metronome_sdk/resources/v1/contracts.rbi +77 -0
  76. data/rbi/metronome_sdk/resources/v1/customers/alerts.rbi +8 -1
  77. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +4 -0
  78. data/rbi/metronome_sdk/resources/v1/dashboards.rbi +7 -2
  79. data/rbi/metronome_sdk/resources/v1/packages.rbi +8 -4
  80. data/rbi/metronome_sdk/resources/v1.rbi +0 -3
  81. data/rbi/metronome_sdk/resources/v2/contracts.rbi +10 -0
  82. data/sig/metronome_sdk/models/commit.rbs +26 -0
  83. data/sig/metronome_sdk/models/contract.rbs +151 -0
  84. data/sig/metronome_sdk/models/contract_v2.rbs +448 -5
  85. data/sig/metronome_sdk/models/contract_without_amendments.rbs +320 -2
  86. data/sig/metronome_sdk/models/credit.rbs +7 -0
  87. data/sig/metronome_sdk/models/override.rbs +7 -0
  88. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +116 -6
  89. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +116 -6
  90. data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +31 -3
  91. data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +31 -3
  92. data/sig/metronome_sdk/models/subscription.rbs +88 -3
  93. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +144 -0
  94. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +26 -0
  95. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +412 -5
  96. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +1210 -4
  97. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbs +63 -0
  98. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbs +59 -0
  99. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +7 -0
  100. data/sig/metronome_sdk/models/v1/customers/alert_retrieve_params.rbs +141 -0
  101. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +150 -0
  102. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +8 -1
  103. data/sig/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbs +4 -0
  104. data/sig/metronome_sdk/models/v1/package_create_params.rbs +386 -5
  105. data/sig/metronome_sdk/models/v1/package_list_response.rbs +380 -5
  106. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +378 -5
  107. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +751 -14
  108. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +4215 -4
  109. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +569 -14
  110. data/sig/metronome_sdk/resources/v1/alerts.rbs +1 -0
  111. data/sig/metronome_sdk/resources/v1/contracts.rbs +14 -0
  112. data/sig/metronome_sdk/resources/v1/customers/alerts.rbs +1 -0
  113. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +1 -0
  114. data/sig/metronome_sdk/resources/v1/packages.rbs +1 -0
  115. data/sig/metronome_sdk/resources/v1.rbs +0 -2
  116. data/sig/metronome_sdk/resources/v2/contracts.rbs +2 -0
  117. metadata +8 -26
  118. data/lib/metronome_sdk/models/v1/payment.rb +0 -196
  119. data/lib/metronome_sdk/models/v1/payment_attempt_params.rb +0 -28
  120. data/lib/metronome_sdk/models/v1/payment_attempt_response.rb +0 -18
  121. data/lib/metronome_sdk/models/v1/payment_cancel_params.rb +0 -28
  122. data/lib/metronome_sdk/models/v1/payment_cancel_response.rb +0 -18
  123. data/lib/metronome_sdk/models/v1/payment_list_params.rb +0 -53
  124. data/lib/metronome_sdk/models/v1/payment_status.rb +0 -19
  125. data/lib/metronome_sdk/resources/v1/payments.rb +0 -102
  126. data/rbi/metronome_sdk/models/v1/payment.rbi +0 -403
  127. data/rbi/metronome_sdk/models/v1/payment_attempt_params.rbi +0 -48
  128. data/rbi/metronome_sdk/models/v1/payment_attempt_response.rbi +0 -35
  129. data/rbi/metronome_sdk/models/v1/payment_cancel_params.rbi +0 -48
  130. data/rbi/metronome_sdk/models/v1/payment_cancel_response.rbi +0 -35
  131. data/rbi/metronome_sdk/models/v1/payment_list_params.rbi +0 -91
  132. data/rbi/metronome_sdk/models/v1/payment_status.rbi +0 -33
  133. data/rbi/metronome_sdk/resources/v1/payments.rbi +0 -72
  134. data/sig/metronome_sdk/models/v1/payment.rbs +0 -243
  135. data/sig/metronome_sdk/models/v1/payment_attempt_params.rbs +0 -30
  136. data/sig/metronome_sdk/models/v1/payment_attempt_response.rbs +0 -15
  137. data/sig/metronome_sdk/models/v1/payment_cancel_params.rbs +0 -30
  138. data/sig/metronome_sdk/models/v1/payment_cancel_response.rbs +0 -15
  139. data/sig/metronome_sdk/models/v1/payment_list_params.rbs +0 -56
  140. data/sig/metronome_sdk/models/v1/payment_status.rbs +0 -19
  141. data/sig/metronome_sdk/resources/v1/payments.rbs +0 -30
@@ -255,6 +255,27 @@ module MetronomeSDK
255
255
  end
256
256
  attr_writer :add_spend_threshold_configuration
257
257
 
258
+ # Spend trackers to add to this contract. Aliases must be unique within a
259
+ # contract.
260
+ sig do
261
+ returns(
262
+ T.nilable(
263
+ T::Array[MetronomeSDK::V2::ContractEditParams::AddSpendTracker]
264
+ )
265
+ )
266
+ end
267
+ attr_reader :add_spend_trackers
268
+
269
+ sig do
270
+ params(
271
+ add_spend_trackers:
272
+ T::Array[
273
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::OrHash
274
+ ]
275
+ ).void
276
+ end
277
+ attr_writer :add_spend_trackers
278
+
258
279
  # Optional list of
259
280
  # [subscriptions](https://docs.metronome.com/manage-product-access/create-subscription/)
260
281
  # to add to the contract.
@@ -353,6 +374,13 @@ module MetronomeSDK
353
374
  end
354
375
  attr_writer :archive_scheduled_charges
355
376
 
377
+ # Aliases of spend trackers to archive.
378
+ sig { returns(T.nilable(T::Array[String])) }
379
+ attr_reader :archive_spend_trackers
380
+
381
+ sig { params(archive_spend_trackers: T::Array[String]).void }
382
+ attr_writer :archive_spend_trackers
383
+
356
384
  # IDs of overrides to remove
357
385
  sig do
358
386
  returns(
@@ -599,6 +627,10 @@ module MetronomeSDK
599
627
  ],
600
628
  add_spend_threshold_configuration:
601
629
  MetronomeSDK::SpendThresholdConfigurationV2::OrHash,
630
+ add_spend_trackers:
631
+ T::Array[
632
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::OrHash
633
+ ],
602
634
  add_subscriptions:
603
635
  T::Array[
604
636
  MetronomeSDK::V2::ContractEditParams::AddSubscription::OrHash
@@ -616,6 +648,7 @@ module MetronomeSDK
616
648
  T::Array[
617
649
  MetronomeSDK::V2::ContractEditParams::ArchiveScheduledCharge::OrHash
618
650
  ],
651
+ archive_spend_trackers: T::Array[String],
619
652
  remove_overrides:
620
653
  T::Array[
621
654
  MetronomeSDK::V2::ContractEditParams::RemoveOverride::OrHash
@@ -680,6 +713,9 @@ module MetronomeSDK
680
713
  add_revenue_system_configuration_update: nil,
681
714
  add_scheduled_charges: nil,
682
715
  add_spend_threshold_configuration: nil,
716
+ # Spend trackers to add to this contract. Aliases must be unique within a
717
+ # contract.
718
+ add_spend_trackers: nil,
683
719
  # Optional list of
684
720
  # [subscriptions](https://docs.metronome.com/manage-product-access/create-subscription/)
685
721
  # to add to the contract.
@@ -695,6 +731,8 @@ module MetronomeSDK
695
731
  archive_credits: nil,
696
732
  # IDs of scheduled charges to archive
697
733
  archive_scheduled_charges: nil,
734
+ # Aliases of spend trackers to archive.
735
+ archive_spend_trackers: nil,
698
736
  # IDs of overrides to remove
699
737
  remove_overrides: nil,
700
738
  # Optional uniqueness key to prevent duplicate contract edits.
@@ -767,6 +805,8 @@ module MetronomeSDK
767
805
  ],
768
806
  add_spend_threshold_configuration:
769
807
  MetronomeSDK::SpendThresholdConfigurationV2,
808
+ add_spend_trackers:
809
+ T::Array[MetronomeSDK::V2::ContractEditParams::AddSpendTracker],
770
810
  add_subscriptions:
771
811
  T::Array[MetronomeSDK::V2::ContractEditParams::AddSubscription],
772
812
  allow_contract_ending_before_finalized_invoice: T::Boolean,
@@ -778,6 +818,7 @@ module MetronomeSDK
778
818
  T::Array[
779
819
  MetronomeSDK::V2::ContractEditParams::ArchiveScheduledCharge
780
820
  ],
821
+ archive_spend_trackers: T::Array[String],
781
822
  remove_overrides:
782
823
  T::Array[MetronomeSDK::V2::ContractEditParams::RemoveOverride],
783
824
  uniqueness_key: String,
@@ -1348,6 +1389,24 @@ module MetronomeSDK
1348
1389
  end
1349
1390
  attr_writer :specifiers
1350
1391
 
1392
+ # Optional attributes for spend tracker integration. Immutable after creation.
1393
+ sig do
1394
+ returns(
1395
+ T.nilable(
1396
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes
1397
+ )
1398
+ )
1399
+ end
1400
+ attr_reader :spend_tracker_attributes
1401
+
1402
+ sig do
1403
+ params(
1404
+ spend_tracker_attributes:
1405
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes::OrHash
1406
+ ).void
1407
+ end
1408
+ attr_writer :spend_tracker_attributes
1409
+
1351
1410
  # A temporary ID for the commit that can be used to reference the commit for
1352
1411
  # commit specific overrides.
1353
1412
  sig { returns(T.nilable(String)) }
@@ -1381,6 +1440,8 @@ module MetronomeSDK
1381
1440
  MetronomeSDK::V2::ContractEditParams::AddCommit::RateType::OrSymbol,
1382
1441
  rollover_fraction: Float,
1383
1442
  specifiers: T::Array[MetronomeSDK::CommitSpecifierInput::OrHash],
1443
+ spend_tracker_attributes:
1444
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes::OrHash,
1384
1445
  temporary_id: String
1385
1446
  ).returns(T.attached_class)
1386
1447
  end
@@ -1431,6 +1492,8 @@ module MetronomeSDK
1431
1492
  # Instead, to target usage by product or product tag, pass those values in the
1432
1493
  # body of `specifiers`.
1433
1494
  specifiers: nil,
1495
+ # Optional attributes for spend tracker integration. Immutable after creation.
1496
+ spend_tracker_attributes: nil,
1434
1497
  # A temporary ID for the commit that can be used to reference the commit for
1435
1498
  # commit specific overrides.
1436
1499
  temporary_id: nil
@@ -1463,6 +1526,8 @@ module MetronomeSDK
1463
1526
  MetronomeSDK::V2::ContractEditParams::AddCommit::RateType::OrSymbol,
1464
1527
  rollover_fraction: Float,
1465
1528
  specifiers: T::Array[MetronomeSDK::CommitSpecifierInput],
1529
+ spend_tracker_attributes:
1530
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes,
1466
1531
  temporary_id: String
1467
1532
  }
1468
1533
  )
@@ -2406,6 +2471,36 @@ module MetronomeSDK
2406
2471
  def self.values
2407
2472
  end
2408
2473
  end
2474
+
2475
+ class SpendTrackerAttributes < MetronomeSDK::Internal::Type::BaseModel
2476
+ OrHash =
2477
+ T.type_alias do
2478
+ T.any(
2479
+ MetronomeSDK::V2::ContractEditParams::AddCommit::SpendTrackerAttributes,
2480
+ MetronomeSDK::Internal::AnyHash
2481
+ )
2482
+ end
2483
+
2484
+ # If true, this commit will be included in spend trackers with discounted set to
2485
+ # DISCOUNTED_ONLY
2486
+ sig { returns(T::Boolean) }
2487
+ attr_accessor :counts_as_discounted
2488
+
2489
+ # Optional attributes for spend tracker integration. Immutable after creation.
2490
+ sig do
2491
+ params(counts_as_discounted: T::Boolean).returns(T.attached_class)
2492
+ end
2493
+ def self.new(
2494
+ # If true, this commit will be included in spend trackers with discounted set to
2495
+ # DISCOUNTED_ONLY
2496
+ counts_as_discounted:
2497
+ )
2498
+ end
2499
+
2500
+ sig { override.returns({ counts_as_discounted: T::Boolean }) }
2501
+ def to_hash
2502
+ end
2503
+ end
2409
2504
  end
2410
2505
 
2411
2506
  class AddCredit < MetronomeSDK::Internal::Type::BaseModel
@@ -3506,6 +3601,17 @@ module MetronomeSDK
3506
3601
  )
3507
3602
  end
3508
3603
 
3604
+ # Can only be used for commit specific overrides. Must be used in conjunction with
3605
+ # one of `product_id`, `product_tags`, `pricing_group_values`, or
3606
+ # `presentation_group_values`. Must be used instead of both `commit_ids` and
3607
+ # `recurring_commit_ids` If provided, the override will apply to any specified
3608
+ # commit, credit, recurring commit or recurring credit IDs.
3609
+ sig { returns(T.nilable(T::Array[String])) }
3610
+ attr_reader :any_commit_or_credit_ids
3611
+
3612
+ sig { params(any_commit_or_credit_ids: T::Array[String]).void }
3613
+ attr_writer :any_commit_or_credit_ids
3614
+
3509
3615
  sig do
3510
3616
  returns(
3511
3617
  T.nilable(
@@ -3578,6 +3684,7 @@ module MetronomeSDK
3578
3684
 
3579
3685
  sig do
3580
3686
  params(
3687
+ any_commit_or_credit_ids: T::Array[String],
3581
3688
  billing_frequency:
3582
3689
  MetronomeSDK::V2::ContractEditParams::AddOverride::OverrideSpecifier::BillingFrequency::OrSymbol,
3583
3690
  commit_ids: T::Array[String],
@@ -3589,6 +3696,12 @@ module MetronomeSDK
3589
3696
  ).returns(T.attached_class)
3590
3697
  end
3591
3698
  def self.new(
3699
+ # Can only be used for commit specific overrides. Must be used in conjunction with
3700
+ # one of `product_id`, `product_tags`, `pricing_group_values`, or
3701
+ # `presentation_group_values`. Must be used instead of both `commit_ids` and
3702
+ # `recurring_commit_ids` If provided, the override will apply to any specified
3703
+ # commit, credit, recurring commit or recurring credit IDs.
3704
+ any_commit_or_credit_ids: nil,
3592
3705
  billing_frequency: nil,
3593
3706
  # If provided, the override will only apply to the specified commits. Can only be
3594
3707
  # used for commit specific overrides. If not provided, the override will apply to
@@ -3617,6 +3730,7 @@ module MetronomeSDK
3617
3730
  sig do
3618
3731
  override.returns(
3619
3732
  {
3733
+ any_commit_or_credit_ids: T::Array[String],
3620
3734
  billing_frequency:
3621
3735
  MetronomeSDK::V2::ContractEditParams::AddOverride::OverrideSpecifier::BillingFrequency::OrSymbol,
3622
3736
  commit_ids: T::Array[String],
@@ -4184,6 +4298,24 @@ module MetronomeSDK
4184
4298
  end
4185
4299
  attr_writer :proration
4186
4300
 
4301
+ # Optional rounding configuration for prorated recurring commit amounts.
4302
+ sig do
4303
+ returns(
4304
+ T.nilable(
4305
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding
4306
+ )
4307
+ )
4308
+ end
4309
+ attr_reader :proration_rounding
4310
+
4311
+ sig do
4312
+ params(
4313
+ proration_rounding:
4314
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::OrHash
4315
+ ).void
4316
+ end
4317
+ attr_writer :proration_rounding
4318
+
4187
4319
  # Whether the created commits will use the commit rate or list rate
4188
4320
  sig do
4189
4321
  returns(
@@ -4298,6 +4430,8 @@ module MetronomeSDK
4298
4430
  netsuite_sales_order_id: String,
4299
4431
  proration:
4300
4432
  MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::Proration::OrSymbol,
4433
+ proration_rounding:
4434
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::OrHash,
4301
4435
  rate_type:
4302
4436
  MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::RateType::OrSymbol,
4303
4437
  recurrence_frequency:
@@ -4340,6 +4474,8 @@ module MetronomeSDK
4340
4474
  # Determines whether the first and last commit will be prorated. If not provided,
4341
4475
  # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
4342
4476
  proration: nil,
4477
+ # Optional rounding configuration for prorated recurring commit amounts.
4478
+ proration_rounding: nil,
4343
4479
  # Whether the created commits will use the commit rate or list rate
4344
4480
  rate_type: nil,
4345
4481
  # The frequency at which the recurring commits will be created. If not provided: -
@@ -4389,6 +4525,8 @@ module MetronomeSDK
4389
4525
  netsuite_sales_order_id: String,
4390
4526
  proration:
4391
4527
  MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::Proration::OrSymbol,
4528
+ proration_rounding:
4529
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding,
4392
4530
  rate_type:
4393
4531
  MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::RateType::OrSymbol,
4394
4532
  recurrence_frequency:
@@ -4621,6 +4759,255 @@ module MetronomeSDK
4621
4759
  end
4622
4760
  end
4623
4761
 
4762
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
4763
+ OrHash =
4764
+ T.type_alias do
4765
+ T.any(
4766
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding,
4767
+ MetronomeSDK::Internal::AnyHash
4768
+ )
4769
+ end
4770
+
4771
+ sig do
4772
+ returns(
4773
+ T.nilable(
4774
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access
4775
+ )
4776
+ )
4777
+ end
4778
+ attr_reader :access
4779
+
4780
+ sig do
4781
+ params(
4782
+ access:
4783
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::OrHash
4784
+ ).void
4785
+ end
4786
+ attr_writer :access
4787
+
4788
+ sig do
4789
+ returns(
4790
+ T.nilable(
4791
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice
4792
+ )
4793
+ )
4794
+ end
4795
+ attr_reader :invoice
4796
+
4797
+ sig do
4798
+ params(
4799
+ invoice:
4800
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::OrHash
4801
+ ).void
4802
+ end
4803
+ attr_writer :invoice
4804
+
4805
+ # Optional rounding configuration for prorated recurring commit amounts.
4806
+ sig do
4807
+ params(
4808
+ access:
4809
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::OrHash,
4810
+ invoice:
4811
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::OrHash
4812
+ ).returns(T.attached_class)
4813
+ end
4814
+ def self.new(access: nil, invoice: nil)
4815
+ end
4816
+
4817
+ sig do
4818
+ override.returns(
4819
+ {
4820
+ access:
4821
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access,
4822
+ invoice:
4823
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice
4824
+ }
4825
+ )
4826
+ end
4827
+ def to_hash
4828
+ end
4829
+
4830
+ class Access < MetronomeSDK::Internal::Type::BaseModel
4831
+ OrHash =
4832
+ T.type_alias do
4833
+ T.any(
4834
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access,
4835
+ MetronomeSDK::Internal::AnyHash
4836
+ )
4837
+ end
4838
+
4839
+ # Number of decimal places to round to. Applied directly to the stored monetary
4840
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
4841
+ # nearest 100 in the stored unit).
4842
+ sig { returns(Float) }
4843
+ attr_accessor :decimal_places
4844
+
4845
+ sig do
4846
+ returns(
4847
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::OrSymbol
4848
+ )
4849
+ end
4850
+ attr_accessor :rounding_method
4851
+
4852
+ sig do
4853
+ params(
4854
+ decimal_places: Float,
4855
+ rounding_method:
4856
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::OrSymbol
4857
+ ).returns(T.attached_class)
4858
+ end
4859
+ def self.new(
4860
+ # Number of decimal places to round to. Applied directly to the stored monetary
4861
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
4862
+ # nearest 100 in the stored unit).
4863
+ decimal_places:,
4864
+ rounding_method:
4865
+ )
4866
+ end
4867
+
4868
+ sig do
4869
+ override.returns(
4870
+ {
4871
+ decimal_places: Float,
4872
+ rounding_method:
4873
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::OrSymbol
4874
+ }
4875
+ )
4876
+ end
4877
+ def to_hash
4878
+ end
4879
+
4880
+ module RoundingMethod
4881
+ extend MetronomeSDK::Internal::Type::Enum
4882
+
4883
+ TaggedSymbol =
4884
+ T.type_alias do
4885
+ T.all(
4886
+ Symbol,
4887
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::RoundingMethod
4888
+ )
4889
+ end
4890
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4891
+
4892
+ HALF_UP =
4893
+ T.let(
4894
+ :HALF_UP,
4895
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4896
+ )
4897
+ FLOOR =
4898
+ T.let(
4899
+ :FLOOR,
4900
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4901
+ )
4902
+ CEILING =
4903
+ T.let(
4904
+ :CEILING,
4905
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4906
+ )
4907
+
4908
+ sig do
4909
+ override.returns(
4910
+ T::Array[
4911
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
4912
+ ]
4913
+ )
4914
+ end
4915
+ def self.values
4916
+ end
4917
+ end
4918
+ end
4919
+
4920
+ class Invoice < MetronomeSDK::Internal::Type::BaseModel
4921
+ OrHash =
4922
+ T.type_alias do
4923
+ T.any(
4924
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice,
4925
+ MetronomeSDK::Internal::AnyHash
4926
+ )
4927
+ end
4928
+
4929
+ # Number of decimal places to round to. Applied directly to the stored monetary
4930
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
4931
+ # nearest 100 in the stored unit).
4932
+ sig { returns(Float) }
4933
+ attr_accessor :decimal_places
4934
+
4935
+ sig do
4936
+ returns(
4937
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::OrSymbol
4938
+ )
4939
+ end
4940
+ attr_accessor :rounding_method
4941
+
4942
+ sig do
4943
+ params(
4944
+ decimal_places: Float,
4945
+ rounding_method:
4946
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::OrSymbol
4947
+ ).returns(T.attached_class)
4948
+ end
4949
+ def self.new(
4950
+ # Number of decimal places to round to. Applied directly to the stored monetary
4951
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
4952
+ # nearest 100 in the stored unit).
4953
+ decimal_places:,
4954
+ rounding_method:
4955
+ )
4956
+ end
4957
+
4958
+ sig do
4959
+ override.returns(
4960
+ {
4961
+ decimal_places: Float,
4962
+ rounding_method:
4963
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::OrSymbol
4964
+ }
4965
+ )
4966
+ end
4967
+ def to_hash
4968
+ end
4969
+
4970
+ module RoundingMethod
4971
+ extend MetronomeSDK::Internal::Type::Enum
4972
+
4973
+ TaggedSymbol =
4974
+ T.type_alias do
4975
+ T.all(
4976
+ Symbol,
4977
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod
4978
+ )
4979
+ end
4980
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
4981
+
4982
+ HALF_UP =
4983
+ T.let(
4984
+ :HALF_UP,
4985
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
4986
+ )
4987
+ FLOOR =
4988
+ T.let(
4989
+ :FLOOR,
4990
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
4991
+ )
4992
+ CEILING =
4993
+ T.let(
4994
+ :CEILING,
4995
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
4996
+ )
4997
+
4998
+ sig do
4999
+ override.returns(
5000
+ T::Array[
5001
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
5002
+ ]
5003
+ )
5004
+ end
5005
+ def self.values
5006
+ end
5007
+ end
5008
+ end
5009
+ end
5010
+
4624
5011
  # Whether the created commits will use the commit rate or list rate
4625
5012
  module RateType
4626
5013
  extend MetronomeSDK::Internal::Type::Enum
@@ -4693,6 +5080,11 @@ module MetronomeSDK
4693
5080
  :WEEKLY,
4694
5081
  MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::RecurrenceFrequency::TaggedSymbol
4695
5082
  )
5083
+ DAILY =
5084
+ T.let(
5085
+ :DAILY,
5086
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCommit::RecurrenceFrequency::TaggedSymbol
5087
+ )
4696
5088
 
4697
5089
  sig do
4698
5090
  override.returns(
@@ -4976,6 +5368,24 @@ module MetronomeSDK
4976
5368
  end
4977
5369
  attr_writer :proration
4978
5370
 
5371
+ # Optional rounding configuration for prorated recurring credit amounts.
5372
+ sig do
5373
+ returns(
5374
+ T.nilable(
5375
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding
5376
+ )
5377
+ )
5378
+ end
5379
+ attr_reader :proration_rounding
5380
+
5381
+ sig do
5382
+ params(
5383
+ proration_rounding:
5384
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::OrHash
5385
+ ).void
5386
+ end
5387
+ attr_writer :proration_rounding
5388
+
4979
5389
  # Whether the created commits will use the commit rate or list rate
4980
5390
  sig do
4981
5391
  returns(
@@ -5088,6 +5498,8 @@ module MetronomeSDK
5088
5498
  netsuite_sales_order_id: String,
5089
5499
  proration:
5090
5500
  MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::Proration::OrSymbol,
5501
+ proration_rounding:
5502
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::OrHash,
5091
5503
  rate_type:
5092
5504
  MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::RateType::OrSymbol,
5093
5505
  recurrence_frequency:
@@ -5128,6 +5540,8 @@ module MetronomeSDK
5128
5540
  # Determines whether the first and last commit will be prorated. If not provided,
5129
5541
  # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
5130
5542
  proration: nil,
5543
+ # Optional rounding configuration for prorated recurring credit amounts.
5544
+ proration_rounding: nil,
5131
5545
  # Whether the created commits will use the commit rate or list rate
5132
5546
  rate_type: nil,
5133
5547
  # The frequency at which the recurring commits will be created. If not provided: -
@@ -5175,6 +5589,8 @@ module MetronomeSDK
5175
5589
  netsuite_sales_order_id: String,
5176
5590
  proration:
5177
5591
  MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::Proration::OrSymbol,
5592
+ proration_rounding:
5593
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding,
5178
5594
  rate_type:
5179
5595
  MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::RateType::OrSymbol,
5180
5596
  recurrence_frequency:
@@ -5369,15 +5785,153 @@ module MetronomeSDK
5369
5785
  end
5370
5786
  end
5371
5787
 
5372
- # Whether the created commits will use the commit rate or list rate
5373
- module RateType
5374
- extend MetronomeSDK::Internal::Type::Enum
5375
-
5376
- TaggedSymbol =
5788
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
5789
+ OrHash =
5377
5790
  T.type_alias do
5378
- T.all(
5379
- Symbol,
5380
- MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::RateType
5791
+ T.any(
5792
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding,
5793
+ MetronomeSDK::Internal::AnyHash
5794
+ )
5795
+ end
5796
+
5797
+ sig do
5798
+ returns(
5799
+ T.nilable(
5800
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access
5801
+ )
5802
+ )
5803
+ end
5804
+ attr_reader :access
5805
+
5806
+ sig do
5807
+ params(
5808
+ access:
5809
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::OrHash
5810
+ ).void
5811
+ end
5812
+ attr_writer :access
5813
+
5814
+ # Optional rounding configuration for prorated recurring credit amounts.
5815
+ sig do
5816
+ params(
5817
+ access:
5818
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::OrHash
5819
+ ).returns(T.attached_class)
5820
+ end
5821
+ def self.new(access: nil)
5822
+ end
5823
+
5824
+ sig do
5825
+ override.returns(
5826
+ {
5827
+ access:
5828
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access
5829
+ }
5830
+ )
5831
+ end
5832
+ def to_hash
5833
+ end
5834
+
5835
+ class Access < MetronomeSDK::Internal::Type::BaseModel
5836
+ OrHash =
5837
+ T.type_alias do
5838
+ T.any(
5839
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access,
5840
+ MetronomeSDK::Internal::AnyHash
5841
+ )
5842
+ end
5843
+
5844
+ # Number of decimal places to round to. Applied directly to the stored monetary
5845
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
5846
+ # nearest 100 in the stored unit).
5847
+ sig { returns(Float) }
5848
+ attr_accessor :decimal_places
5849
+
5850
+ sig do
5851
+ returns(
5852
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::OrSymbol
5853
+ )
5854
+ end
5855
+ attr_accessor :rounding_method
5856
+
5857
+ sig do
5858
+ params(
5859
+ decimal_places: Float,
5860
+ rounding_method:
5861
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::OrSymbol
5862
+ ).returns(T.attached_class)
5863
+ end
5864
+ def self.new(
5865
+ # Number of decimal places to round to. Applied directly to the stored monetary
5866
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
5867
+ # nearest 100 in the stored unit).
5868
+ decimal_places:,
5869
+ rounding_method:
5870
+ )
5871
+ end
5872
+
5873
+ sig do
5874
+ override.returns(
5875
+ {
5876
+ decimal_places: Float,
5877
+ rounding_method:
5878
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::OrSymbol
5879
+ }
5880
+ )
5881
+ end
5882
+ def to_hash
5883
+ end
5884
+
5885
+ module RoundingMethod
5886
+ extend MetronomeSDK::Internal::Type::Enum
5887
+
5888
+ TaggedSymbol =
5889
+ T.type_alias do
5890
+ T.all(
5891
+ Symbol,
5892
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::RoundingMethod
5893
+ )
5894
+ end
5895
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
5896
+
5897
+ HALF_UP =
5898
+ T.let(
5899
+ :HALF_UP,
5900
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
5901
+ )
5902
+ FLOOR =
5903
+ T.let(
5904
+ :FLOOR,
5905
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
5906
+ )
5907
+ CEILING =
5908
+ T.let(
5909
+ :CEILING,
5910
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
5911
+ )
5912
+
5913
+ sig do
5914
+ override.returns(
5915
+ T::Array[
5916
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
5917
+ ]
5918
+ )
5919
+ end
5920
+ def self.values
5921
+ end
5922
+ end
5923
+ end
5924
+ end
5925
+
5926
+ # Whether the created commits will use the commit rate or list rate
5927
+ module RateType
5928
+ extend MetronomeSDK::Internal::Type::Enum
5929
+
5930
+ TaggedSymbol =
5931
+ T.type_alias do
5932
+ T.all(
5933
+ Symbol,
5934
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::RateType
5381
5935
  )
5382
5936
  end
5383
5937
  OrSymbol = T.type_alias { T.any(Symbol, String) }
@@ -5441,6 +5995,11 @@ module MetronomeSDK
5441
5995
  :WEEKLY,
5442
5996
  MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
5443
5997
  )
5998
+ DAILY =
5999
+ T.let(
6000
+ :DAILY,
6001
+ MetronomeSDK::V2::ContractEditParams::AddRecurringCredit::RecurrenceFrequency::TaggedSymbol
6002
+ )
5444
6003
 
5445
6004
  sig do
5446
6005
  override.returns(
@@ -6657,112 +7216,413 @@ module MetronomeSDK
6657
7216
  end
6658
7217
  end
6659
7218
 
6660
- class AddSubscription < MetronomeSDK::Internal::Type::BaseModel
7219
+ class AddSpendTracker < MetronomeSDK::Internal::Type::BaseModel
6661
7220
  OrHash =
6662
7221
  T.type_alias do
6663
7222
  T.any(
6664
- MetronomeSDK::V2::ContractEditParams::AddSubscription,
7223
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker,
6665
7224
  MetronomeSDK::Internal::AnyHash
6666
7225
  )
6667
7226
  end
6668
7227
 
7228
+ # Human-readable identifier, unique per contract.
7229
+ sig { returns(String) }
7230
+ attr_accessor :alias_
7231
+
6669
7232
  sig do
6670
7233
  returns(
6671
- MetronomeSDK::V2::ContractEditParams::AddSubscription::CollectionSchedule::OrSymbol
7234
+ T::Array[
7235
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier
7236
+ ]
6672
7237
  )
6673
7238
  end
6674
- attr_accessor :collection_schedule
7239
+ attr_accessor :applicable_spend_specifiers
7240
+
7241
+ sig { returns(String) }
7242
+ attr_accessor :credit_type_id
6675
7243
 
6676
7244
  sig do
6677
7245
  returns(
6678
- MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration
7246
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::OrSymbol
6679
7247
  )
6680
7248
  end
6681
- attr_reader :proration
7249
+ attr_accessor :reset_frequency
6682
7250
 
6683
7251
  sig do
6684
7252
  params(
6685
- proration:
6686
- MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::OrHash
6687
- ).void
7253
+ alias_: String,
7254
+ applicable_spend_specifiers:
7255
+ T::Array[
7256
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::OrHash
7257
+ ],
7258
+ credit_type_id: String,
7259
+ reset_frequency:
7260
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::OrSymbol
7261
+ ).returns(T.attached_class)
7262
+ end
7263
+ def self.new(
7264
+ # Human-readable identifier, unique per contract.
7265
+ alias_:,
7266
+ applicable_spend_specifiers:,
7267
+ credit_type_id:,
7268
+ reset_frequency:
7269
+ )
6688
7270
  end
6689
- attr_writer :proration
6690
7271
 
6691
7272
  sig do
6692
- returns(
6693
- MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate
7273
+ override.returns(
7274
+ {
7275
+ alias_: String,
7276
+ applicable_spend_specifiers:
7277
+ T::Array[
7278
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier
7279
+ ],
7280
+ credit_type_id: String,
7281
+ reset_frequency:
7282
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::OrSymbol
7283
+ }
6694
7284
  )
6695
7285
  end
6696
- attr_reader :subscription_rate
6697
-
6698
- sig do
6699
- params(
6700
- subscription_rate:
6701
- MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate::OrHash
6702
- ).void
7286
+ def to_hash
6703
7287
  end
6704
- attr_writer :subscription_rate
6705
7288
 
6706
- # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
6707
- sig { returns(T.nilable(T::Hash[Symbol, String])) }
6708
- attr_reader :custom_fields
7289
+ class ApplicableSpendSpecifier < MetronomeSDK::Internal::Type::BaseModel
7290
+ OrHash =
7291
+ T.type_alias do
7292
+ T.any(
7293
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier,
7294
+ MetronomeSDK::Internal::AnyHash
7295
+ )
7296
+ end
6709
7297
 
6710
- sig { params(custom_fields: T::Hash[Symbol, String]).void }
6711
- attr_writer :custom_fields
7298
+ sig do
7299
+ returns(
7300
+ T::Array[
7301
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::OrSymbol
7302
+ ]
7303
+ )
7304
+ end
7305
+ attr_accessor :sources
6712
7306
 
6713
- sig { returns(T.nilable(String)) }
6714
- attr_reader :description
7307
+ sig do
7308
+ returns(
7309
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::OrSymbol
7310
+ )
7311
+ end
7312
+ attr_accessor :spend_type
6715
7313
 
6716
- sig { params(description: String).void }
6717
- attr_writer :description
7314
+ # Filter by whether the spend was discounted. Defaults to ANY if omitted.
7315
+ sig do
7316
+ returns(
7317
+ T.nilable(
7318
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
7319
+ )
7320
+ )
7321
+ end
7322
+ attr_reader :discounted
6718
7323
 
6719
- # Exclusive end time for the subscription. If not provided, subscription inherits
6720
- # contract end date.
6721
- sig { returns(T.nilable(Time)) }
6722
- attr_reader :ending_before
7324
+ sig do
7325
+ params(
7326
+ discounted:
7327
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
7328
+ ).void
7329
+ end
7330
+ attr_writer :discounted
6723
7331
 
6724
- sig { params(ending_before: Time).void }
6725
- attr_writer :ending_before
7332
+ sig do
7333
+ params(
7334
+ sources:
7335
+ T::Array[
7336
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::OrSymbol
7337
+ ],
7338
+ spend_type:
7339
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::OrSymbol,
7340
+ discounted:
7341
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
7342
+ ).returns(T.attached_class)
7343
+ end
7344
+ def self.new(
7345
+ sources:,
7346
+ spend_type:,
7347
+ # Filter by whether the spend was discounted. Defaults to ANY if omitted.
7348
+ discounted: nil
7349
+ )
7350
+ end
6726
7351
 
6727
- # The initial quantity for the subscription. It must be non-negative value.
6728
- # Required if quantity_management_mode is QUANTITY_ONLY.
6729
- sig { returns(T.nilable(Float)) }
6730
- attr_reader :initial_quantity
7352
+ sig do
7353
+ override.returns(
7354
+ {
7355
+ sources:
7356
+ T::Array[
7357
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::OrSymbol
7358
+ ],
7359
+ spend_type:
7360
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::OrSymbol,
7361
+ discounted:
7362
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::OrSymbol
7363
+ }
7364
+ )
7365
+ end
7366
+ def to_hash
7367
+ end
6731
7368
 
6732
- sig { params(initial_quantity: Float).void }
6733
- attr_writer :initial_quantity
7369
+ module Source
7370
+ extend MetronomeSDK::Internal::Type::Enum
6734
7371
 
6735
- sig { returns(T.nilable(String)) }
6736
- attr_reader :name
7372
+ TaggedSymbol =
7373
+ T.type_alias do
7374
+ T.all(
7375
+ Symbol,
7376
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source
7377
+ )
7378
+ end
7379
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6737
7380
 
6738
- sig { params(name: String).void }
6739
- attr_writer :name
7381
+ THRESHOLD_RECHARGE =
7382
+ T.let(
7383
+ :THRESHOLD_RECHARGE,
7384
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
7385
+ )
7386
+ MANUAL =
7387
+ T.let(
7388
+ :MANUAL,
7389
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
7390
+ )
6740
7391
 
6741
- # Determines how the subscription's quantity is controlled. Defaults to
6742
- # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
6743
- # directly on the subscription. `initial_quantity` must be provided with this
6744
- # option. Compatible with recurring commits/credits that use POOLED allocation.
6745
- # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
6746
- # user_123) to increment and decrement a subscription quantity, rather than
6747
- # directly providing the quantity. You must use a **SEAT_BASED** subscription to
6748
- # use a linked recurring credit with an allocation per seat. `seat_config` must be
6749
- # provided with this option.
6750
- sig do
6751
- returns(
6752
- T.nilable(
6753
- MetronomeSDK::V2::ContractEditParams::AddSubscription::QuantityManagementMode::OrSymbol
6754
- )
6755
- )
6756
- end
6757
- attr_reader :quantity_management_mode
7392
+ sig do
7393
+ override.returns(
7394
+ T::Array[
7395
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Source::TaggedSymbol
7396
+ ]
7397
+ )
7398
+ end
7399
+ def self.values
7400
+ end
7401
+ end
6758
7402
 
6759
- sig do
6760
- params(
6761
- quantity_management_mode:
6762
- MetronomeSDK::V2::ContractEditParams::AddSubscription::QuantityManagementMode::OrSymbol
6763
- ).void
6764
- end
6765
- attr_writer :quantity_management_mode
7403
+ module SpendType
7404
+ extend MetronomeSDK::Internal::Type::Enum
7405
+
7406
+ TaggedSymbol =
7407
+ T.type_alias do
7408
+ T.all(
7409
+ Symbol,
7410
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType
7411
+ )
7412
+ end
7413
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7414
+
7415
+ COMMIT_PURCHASE =
7416
+ T.let(
7417
+ :COMMIT_PURCHASE,
7418
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::TaggedSymbol
7419
+ )
7420
+
7421
+ sig do
7422
+ override.returns(
7423
+ T::Array[
7424
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::SpendType::TaggedSymbol
7425
+ ]
7426
+ )
7427
+ end
7428
+ def self.values
7429
+ end
7430
+ end
7431
+
7432
+ # Filter by whether the spend was discounted. Defaults to ANY if omitted.
7433
+ module Discounted
7434
+ extend MetronomeSDK::Internal::Type::Enum
7435
+
7436
+ TaggedSymbol =
7437
+ T.type_alias do
7438
+ T.all(
7439
+ Symbol,
7440
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted
7441
+ )
7442
+ end
7443
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7444
+
7445
+ ANY =
7446
+ T.let(
7447
+ :ANY,
7448
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
7449
+ )
7450
+ DISCOUNTED_ONLY =
7451
+ T.let(
7452
+ :DISCOUNTED_ONLY,
7453
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
7454
+ )
7455
+ UNDISCOUNTED_ONLY =
7456
+ T.let(
7457
+ :UNDISCOUNTED_ONLY,
7458
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
7459
+ )
7460
+
7461
+ sig do
7462
+ override.returns(
7463
+ T::Array[
7464
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ApplicableSpendSpecifier::Discounted::TaggedSymbol
7465
+ ]
7466
+ )
7467
+ end
7468
+ def self.values
7469
+ end
7470
+ end
7471
+ end
7472
+
7473
+ module ResetFrequency
7474
+ extend MetronomeSDK::Internal::Type::Enum
7475
+
7476
+ TaggedSymbol =
7477
+ T.type_alias do
7478
+ T.all(
7479
+ Symbol,
7480
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency
7481
+ )
7482
+ end
7483
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7484
+
7485
+ BILLING_PERIOD =
7486
+ T.let(
7487
+ :BILLING_PERIOD,
7488
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::TaggedSymbol
7489
+ )
7490
+
7491
+ sig do
7492
+ override.returns(
7493
+ T::Array[
7494
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::ResetFrequency::TaggedSymbol
7495
+ ]
7496
+ )
7497
+ end
7498
+ def self.values
7499
+ end
7500
+ end
7501
+ end
7502
+
7503
+ class AddSubscription < MetronomeSDK::Internal::Type::BaseModel
7504
+ OrHash =
7505
+ T.type_alias do
7506
+ T.any(
7507
+ MetronomeSDK::V2::ContractEditParams::AddSubscription,
7508
+ MetronomeSDK::Internal::AnyHash
7509
+ )
7510
+ end
7511
+
7512
+ sig do
7513
+ returns(
7514
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::CollectionSchedule::OrSymbol
7515
+ )
7516
+ end
7517
+ attr_accessor :collection_schedule
7518
+
7519
+ sig do
7520
+ returns(
7521
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration
7522
+ )
7523
+ end
7524
+ attr_reader :proration
7525
+
7526
+ sig do
7527
+ params(
7528
+ proration:
7529
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::OrHash
7530
+ ).void
7531
+ end
7532
+ attr_writer :proration
7533
+
7534
+ sig do
7535
+ returns(
7536
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate
7537
+ )
7538
+ end
7539
+ attr_reader :subscription_rate
7540
+
7541
+ sig do
7542
+ params(
7543
+ subscription_rate:
7544
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate::OrHash
7545
+ ).void
7546
+ end
7547
+ attr_writer :subscription_rate
7548
+
7549
+ sig do
7550
+ returns(
7551
+ T.nilable(
7552
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig
7553
+ )
7554
+ )
7555
+ end
7556
+ attr_reader :billing_cycle_config
7557
+
7558
+ sig do
7559
+ params(
7560
+ billing_cycle_config:
7561
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::OrHash
7562
+ ).void
7563
+ end
7564
+ attr_writer :billing_cycle_config
7565
+
7566
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
7567
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
7568
+ attr_reader :custom_fields
7569
+
7570
+ sig { params(custom_fields: T::Hash[Symbol, String]).void }
7571
+ attr_writer :custom_fields
7572
+
7573
+ sig { returns(T.nilable(String)) }
7574
+ attr_reader :description
7575
+
7576
+ sig { params(description: String).void }
7577
+ attr_writer :description
7578
+
7579
+ # Exclusive end time for the subscription. If not provided, subscription inherits
7580
+ # contract end date.
7581
+ sig { returns(T.nilable(Time)) }
7582
+ attr_reader :ending_before
7583
+
7584
+ sig { params(ending_before: Time).void }
7585
+ attr_writer :ending_before
7586
+
7587
+ # The initial quantity for the subscription. It must be non-negative value.
7588
+ # Required if quantity_management_mode is QUANTITY_ONLY.
7589
+ sig { returns(T.nilable(Float)) }
7590
+ attr_reader :initial_quantity
7591
+
7592
+ sig { params(initial_quantity: Float).void }
7593
+ attr_writer :initial_quantity
7594
+
7595
+ sig { returns(T.nilable(String)) }
7596
+ attr_reader :name
7597
+
7598
+ sig { params(name: String).void }
7599
+ attr_writer :name
7600
+
7601
+ # Determines how the subscription's quantity is controlled. Defaults to
7602
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
7603
+ # directly on the subscription. `initial_quantity` must be provided with this
7604
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
7605
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
7606
+ # user_123) to increment and decrement a subscription quantity, rather than
7607
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
7608
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
7609
+ # provided with this option.
7610
+ sig do
7611
+ returns(
7612
+ T.nilable(
7613
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::QuantityManagementMode::OrSymbol
7614
+ )
7615
+ )
7616
+ end
7617
+ attr_reader :quantity_management_mode
7618
+
7619
+ sig do
7620
+ params(
7621
+ quantity_management_mode:
7622
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::QuantityManagementMode::OrSymbol
7623
+ ).void
7624
+ end
7625
+ attr_writer :quantity_management_mode
6766
7626
 
6767
7627
  sig do
6768
7628
  returns(
@@ -6805,6 +7665,8 @@ module MetronomeSDK
6805
7665
  MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::OrHash,
6806
7666
  subscription_rate:
6807
7667
  MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate::OrHash,
7668
+ billing_cycle_config:
7669
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::OrHash,
6808
7670
  custom_fields: T::Hash[Symbol, String],
6809
7671
  description: String,
6810
7672
  ending_before: Time,
@@ -6822,6 +7684,7 @@ module MetronomeSDK
6822
7684
  collection_schedule:,
6823
7685
  proration:,
6824
7686
  subscription_rate:,
7687
+ billing_cycle_config: nil,
6825
7688
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
6826
7689
  custom_fields: nil,
6827
7690
  description: nil,
@@ -6861,6 +7724,8 @@ module MetronomeSDK
6861
7724
  MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration,
6862
7725
  subscription_rate:
6863
7726
  MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate,
7727
+ billing_cycle_config:
7728
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig,
6864
7729
  custom_fields: T::Hash[Symbol, String],
6865
7730
  description: String,
6866
7731
  ending_before: Time,
@@ -6950,11 +7815,30 @@ module MetronomeSDK
6950
7815
  sig { params(is_prorated: T::Boolean).void }
6951
7816
  attr_writer :is_prorated
6952
7817
 
7818
+ sig do
7819
+ returns(
7820
+ T.nilable(
7821
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding
7822
+ )
7823
+ )
7824
+ end
7825
+ attr_reader :rounding
7826
+
7827
+ sig do
7828
+ params(
7829
+ rounding:
7830
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::OrHash
7831
+ ).void
7832
+ end
7833
+ attr_writer :rounding
7834
+
6953
7835
  sig do
6954
7836
  params(
6955
7837
  invoice_behavior:
6956
7838
  MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::InvoiceBehavior::OrSymbol,
6957
- is_prorated: T::Boolean
7839
+ is_prorated: T::Boolean,
7840
+ rounding:
7841
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::OrHash
6958
7842
  ).returns(T.attached_class)
6959
7843
  end
6960
7844
  def self.new(
@@ -6965,7 +7849,8 @@ module MetronomeSDK
6965
7849
  # in-arrears at the end of the period.
6966
7850
  invoice_behavior: nil,
6967
7851
  # Indicates if the partial period will be prorated or charged a full amount.
6968
- is_prorated: nil
7852
+ is_prorated: nil,
7853
+ rounding: nil
6969
7854
  )
6970
7855
  end
6971
7856
 
@@ -6974,7 +7859,9 @@ module MetronomeSDK
6974
7859
  {
6975
7860
  invoice_behavior:
6976
7861
  MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::InvoiceBehavior::OrSymbol,
6977
- is_prorated: T::Boolean
7862
+ is_prorated: T::Boolean,
7863
+ rounding:
7864
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding
6978
7865
  }
6979
7866
  )
6980
7867
  end
@@ -7019,36 +7906,126 @@ module MetronomeSDK
7019
7906
  def self.values
7020
7907
  end
7021
7908
  end
7022
- end
7023
7909
 
7024
- class SubscriptionRate < MetronomeSDK::Internal::Type::BaseModel
7025
- OrHash =
7026
- T.type_alias do
7027
- T.any(
7028
- MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate,
7029
- MetronomeSDK::Internal::AnyHash
7910
+ class Rounding < MetronomeSDK::Internal::Type::BaseModel
7911
+ OrHash =
7912
+ T.type_alias do
7913
+ T.any(
7914
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding,
7915
+ MetronomeSDK::Internal::AnyHash
7916
+ )
7917
+ end
7918
+
7919
+ # Number of decimal places to round to. Applied directly to the stored monetary
7920
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
7921
+ # nearest 100 in the stored unit).
7922
+ sig { returns(Float) }
7923
+ attr_accessor :decimal_places
7924
+
7925
+ sig do
7926
+ returns(
7927
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::RoundingMethod::OrSymbol
7030
7928
  )
7031
7929
  end
7930
+ attr_accessor :rounding_method
7032
7931
 
7033
- # Frequency to bill subscription with. Together with product_id, must match
7034
- # existing rate on the rate card.
7035
- sig do
7036
- returns(
7037
- MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate::BillingFrequency::OrSymbol
7932
+ sig do
7933
+ params(
7934
+ decimal_places: Float,
7935
+ rounding_method:
7936
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::RoundingMethod::OrSymbol
7937
+ ).returns(T.attached_class)
7938
+ end
7939
+ def self.new(
7940
+ # Number of decimal places to round to. Applied directly to the stored monetary
7941
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
7942
+ # nearest 100 in the stored unit).
7943
+ decimal_places:,
7944
+ rounding_method:
7038
7945
  )
7039
- end
7040
- attr_accessor :billing_frequency
7946
+ end
7041
7947
 
7042
- # Must be subscription type product
7043
- sig { returns(String) }
7044
- attr_accessor :product_id
7948
+ sig do
7949
+ override.returns(
7950
+ {
7951
+ decimal_places: Float,
7952
+ rounding_method:
7953
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::RoundingMethod::OrSymbol
7954
+ }
7955
+ )
7956
+ end
7957
+ def to_hash
7958
+ end
7045
7959
 
7046
- sig do
7047
- params(
7048
- billing_frequency:
7049
- MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate::BillingFrequency::OrSymbol,
7050
- product_id: String
7051
- ).returns(T.attached_class)
7960
+ module RoundingMethod
7961
+ extend MetronomeSDK::Internal::Type::Enum
7962
+
7963
+ TaggedSymbol =
7964
+ T.type_alias do
7965
+ T.all(
7966
+ Symbol,
7967
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::RoundingMethod
7968
+ )
7969
+ end
7970
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7971
+
7972
+ HALF_UP =
7973
+ T.let(
7974
+ :HALF_UP,
7975
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
7976
+ )
7977
+ FLOOR =
7978
+ T.let(
7979
+ :FLOOR,
7980
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
7981
+ )
7982
+ CEILING =
7983
+ T.let(
7984
+ :CEILING,
7985
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
7986
+ )
7987
+
7988
+ sig do
7989
+ override.returns(
7990
+ T::Array[
7991
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::Proration::Rounding::RoundingMethod::TaggedSymbol
7992
+ ]
7993
+ )
7994
+ end
7995
+ def self.values
7996
+ end
7997
+ end
7998
+ end
7999
+ end
8000
+
8001
+ class SubscriptionRate < MetronomeSDK::Internal::Type::BaseModel
8002
+ OrHash =
8003
+ T.type_alias do
8004
+ T.any(
8005
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate,
8006
+ MetronomeSDK::Internal::AnyHash
8007
+ )
8008
+ end
8009
+
8010
+ # Frequency to bill subscription with. Together with product_id, must match
8011
+ # existing rate on the rate card.
8012
+ sig do
8013
+ returns(
8014
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate::BillingFrequency::OrSymbol
8015
+ )
8016
+ end
8017
+ attr_accessor :billing_frequency
8018
+
8019
+ # Must be subscription type product
8020
+ sig { returns(String) }
8021
+ attr_accessor :product_id
8022
+
8023
+ sig do
8024
+ params(
8025
+ billing_frequency:
8026
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::SubscriptionRate::BillingFrequency::OrSymbol,
8027
+ product_id: String
8028
+ ).returns(T.attached_class)
7052
8029
  end
7053
8030
  def self.new(
7054
8031
  # Frequency to bill subscription with. Together with product_id, must match
@@ -7118,6 +8095,108 @@ module MetronomeSDK
7118
8095
  end
7119
8096
  end
7120
8097
 
8098
+ class BillingCycleConfig < MetronomeSDK::Internal::Type::BaseModel
8099
+ OrHash =
8100
+ T.type_alias do
8101
+ T.any(
8102
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig,
8103
+ MetronomeSDK::Internal::AnyHash
8104
+ )
8105
+ end
8106
+
8107
+ # The date to anchor the billing cycle to. If omitted, defaults to the contract's
8108
+ # usage invoice billing cycle anchor date.
8109
+ sig { returns(T.nilable(Time)) }
8110
+ attr_reader :anchor_date
8111
+
8112
+ sig { params(anchor_date: Time).void }
8113
+ attr_writer :anchor_date
8114
+
8115
+ # Controls whether this subscription consolidates onto usage invoices or gets its
8116
+ # own scheduled invoice. Defaults to ON_USAGE_INVOICE if omitted.
8117
+ sig do
8118
+ returns(
8119
+ T.nilable(
8120
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::InvoicePlacement::OrSymbol
8121
+ )
8122
+ )
8123
+ end
8124
+ attr_reader :invoice_placement
8125
+
8126
+ sig do
8127
+ params(
8128
+ invoice_placement:
8129
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::InvoicePlacement::OrSymbol
8130
+ ).void
8131
+ end
8132
+ attr_writer :invoice_placement
8133
+
8134
+ sig do
8135
+ params(
8136
+ anchor_date: Time,
8137
+ invoice_placement:
8138
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::InvoicePlacement::OrSymbol
8139
+ ).returns(T.attached_class)
8140
+ end
8141
+ def self.new(
8142
+ # The date to anchor the billing cycle to. If omitted, defaults to the contract's
8143
+ # usage invoice billing cycle anchor date.
8144
+ anchor_date: nil,
8145
+ # Controls whether this subscription consolidates onto usage invoices or gets its
8146
+ # own scheduled invoice. Defaults to ON_USAGE_INVOICE if omitted.
8147
+ invoice_placement: nil
8148
+ )
8149
+ end
8150
+
8151
+ sig do
8152
+ override.returns(
8153
+ {
8154
+ anchor_date: Time,
8155
+ invoice_placement:
8156
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::InvoicePlacement::OrSymbol
8157
+ }
8158
+ )
8159
+ end
8160
+ def to_hash
8161
+ end
8162
+
8163
+ # Controls whether this subscription consolidates onto usage invoices or gets its
8164
+ # own scheduled invoice. Defaults to ON_USAGE_INVOICE if omitted.
8165
+ module InvoicePlacement
8166
+ extend MetronomeSDK::Internal::Type::Enum
8167
+
8168
+ TaggedSymbol =
8169
+ T.type_alias do
8170
+ T.all(
8171
+ Symbol,
8172
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::InvoicePlacement
8173
+ )
8174
+ end
8175
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
8176
+
8177
+ ON_SCHEDULED_INVOICE =
8178
+ T.let(
8179
+ :ON_SCHEDULED_INVOICE,
8180
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
8181
+ )
8182
+ ON_USAGE_INVOICE =
8183
+ T.let(
8184
+ :ON_USAGE_INVOICE,
8185
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
8186
+ )
8187
+
8188
+ sig do
8189
+ override.returns(
8190
+ T::Array[
8191
+ MetronomeSDK::V2::ContractEditParams::AddSubscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
8192
+ ]
8193
+ )
8194
+ end
8195
+ def self.values
8196
+ end
8197
+ end
8198
+ end
8199
+
7121
8200
  # Determines how the subscription's quantity is controlled. Defaults to
7122
8201
  # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
7123
8202
  # directly on the subscription. `initial_quantity` must be provided with this
@@ -8567,6 +9646,19 @@ module MetronomeSDK
8567
9646
  sig { params(threshold_amount: Float).void }
8568
9647
  attr_writer :threshold_amount
8569
9648
 
9649
+ # Determines which balances are excluded from remaining balance calculation for
9650
+ # threshold billing.
9651
+ sig do
9652
+ returns(
9653
+ T.nilable(
9654
+ T::Array[
9655
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier
9656
+ ]
9657
+ )
9658
+ )
9659
+ end
9660
+ attr_accessor :threshold_balance_specifiers
9661
+
8570
9662
  sig do
8571
9663
  params(
8572
9664
  commit:
@@ -8579,7 +9671,13 @@ module MetronomeSDK
8579
9671
  is_enabled: T::Boolean,
8580
9672
  payment_gate_config: MetronomeSDK::PaymentGateConfigV2::OrHash,
8581
9673
  recharge_to_amount: Float,
8582
- threshold_amount: Float
9674
+ threshold_amount: Float,
9675
+ threshold_balance_specifiers:
9676
+ T.nilable(
9677
+ T::Array[
9678
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::OrHash
9679
+ ]
9680
+ )
8583
9681
  ).returns(T.attached_class)
8584
9682
  end
8585
9683
  def self.new(
@@ -8597,7 +9695,10 @@ module MetronomeSDK
8597
9695
  recharge_to_amount: nil,
8598
9696
  # Specify the threshold amount for the contract. Each time the contract's balance
8599
9697
  # lowers to this amount, a threshold charge will be initiated.
8600
- threshold_amount: nil
9698
+ threshold_amount: nil,
9699
+ # Determines which balances are excluded from remaining balance calculation for
9700
+ # threshold billing.
9701
+ threshold_balance_specifiers: nil
8601
9702
  )
8602
9703
  end
8603
9704
 
@@ -8614,7 +9715,13 @@ module MetronomeSDK
8614
9715
  is_enabled: T::Boolean,
8615
9716
  payment_gate_config: MetronomeSDK::PaymentGateConfigV2,
8616
9717
  recharge_to_amount: Float,
8617
- threshold_amount: Float
9718
+ threshold_amount: Float,
9719
+ threshold_balance_specifiers:
9720
+ T.nilable(
9721
+ T::Array[
9722
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier
9723
+ ]
9724
+ )
8618
9725
  }
8619
9726
  )
8620
9727
  end
@@ -8703,6 +9810,26 @@ module MetronomeSDK
8703
9810
  )
8704
9811
  end
8705
9812
 
9813
+ # Update the discount cap. Set to null to remove an existing cap.
9814
+ sig do
9815
+ returns(
9816
+ T.nilable(
9817
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap
9818
+ )
9819
+ )
9820
+ end
9821
+ attr_reader :cap
9822
+
9823
+ sig do
9824
+ params(
9825
+ cap:
9826
+ T.nilable(
9827
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap::OrHash
9828
+ )
9829
+ ).void
9830
+ end
9831
+ attr_writer :cap
9832
+
8706
9833
  # The fraction of the original amount that the customer pays after applying the
8707
9834
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
8708
9835
  # the customer pays 85% of the original amount (a 15% discount).
@@ -8710,11 +9837,17 @@ module MetronomeSDK
8710
9837
  attr_accessor :payment_fraction
8711
9838
 
8712
9839
  sig do
8713
- params(payment_fraction: T.nilable(Float)).returns(
8714
- T.attached_class
8715
- )
9840
+ params(
9841
+ cap:
9842
+ T.nilable(
9843
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap::OrHash
9844
+ ),
9845
+ payment_fraction: T.nilable(Float)
9846
+ ).returns(T.attached_class)
8716
9847
  end
8717
9848
  def self.new(
9849
+ # Update the discount cap. Set to null to remove an existing cap.
9850
+ cap: nil,
8718
9851
  # The fraction of the original amount that the customer pays after applying the
8719
9852
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
8720
9853
  # the customer pays 85% of the original amount (a 15% discount).
@@ -8722,9 +9855,229 @@ module MetronomeSDK
8722
9855
  )
8723
9856
  end
8724
9857
 
8725
- sig { override.returns({ payment_fraction: T.nilable(Float) }) }
9858
+ sig do
9859
+ override.returns(
9860
+ {
9861
+ cap:
9862
+ T.nilable(
9863
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap
9864
+ ),
9865
+ payment_fraction: T.nilable(Float)
9866
+ }
9867
+ )
9868
+ end
8726
9869
  def to_hash
8727
9870
  end
9871
+
9872
+ class Cap < MetronomeSDK::Internal::Type::BaseModel
9873
+ OrHash =
9874
+ T.type_alias do
9875
+ T.any(
9876
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap,
9877
+ MetronomeSDK::Internal::AnyHash
9878
+ )
9879
+ end
9880
+
9881
+ # Accumulated spend ceiling above which the discount stops applying.
9882
+ sig { returns(Float) }
9883
+ attr_accessor :amount
9884
+
9885
+ # Alias of the spend tracker this cap is measured against.
9886
+ sig { returns(String) }
9887
+ attr_accessor :spend_tracker_alias
9888
+
9889
+ # Update the discount cap. Set to null to remove an existing cap.
9890
+ sig do
9891
+ params(amount: Float, spend_tracker_alias: String).returns(
9892
+ T.attached_class
9893
+ )
9894
+ end
9895
+ def self.new(
9896
+ # Accumulated spend ceiling above which the discount stops applying.
9897
+ amount:,
9898
+ # Alias of the spend tracker this cap is measured against.
9899
+ spend_tracker_alias:
9900
+ )
9901
+ end
9902
+
9903
+ sig do
9904
+ override.returns({ amount: Float, spend_tracker_alias: String })
9905
+ end
9906
+ def to_hash
9907
+ end
9908
+ end
9909
+ end
9910
+
9911
+ class ThresholdBalanceSpecifier < MetronomeSDK::Internal::Type::BaseModel
9912
+ OrHash =
9913
+ T.type_alias do
9914
+ T.any(
9915
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier,
9916
+ MetronomeSDK::Internal::AnyHash
9917
+ )
9918
+ end
9919
+
9920
+ sig do
9921
+ returns(
9922
+ T::Array[
9923
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude
9924
+ ]
9925
+ )
9926
+ end
9927
+ attr_accessor :exclude
9928
+
9929
+ sig do
9930
+ params(
9931
+ exclude:
9932
+ T::Array[
9933
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::OrHash
9934
+ ]
9935
+ ).returns(T.attached_class)
9936
+ end
9937
+ def self.new(exclude:)
9938
+ end
9939
+
9940
+ sig do
9941
+ override.returns(
9942
+ {
9943
+ exclude:
9944
+ T::Array[
9945
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude
9946
+ ]
9947
+ }
9948
+ )
9949
+ end
9950
+ def to_hash
9951
+ end
9952
+
9953
+ class Exclude < MetronomeSDK::Internal::Type::BaseModel
9954
+ OrHash =
9955
+ T.type_alias do
9956
+ T.any(
9957
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude,
9958
+ MetronomeSDK::Internal::AnyHash
9959
+ )
9960
+ end
9961
+
9962
+ sig do
9963
+ returns(
9964
+ T::Array[
9965
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
9966
+ ]
9967
+ )
9968
+ end
9969
+ attr_accessor :custom_field_filters
9970
+
9971
+ sig do
9972
+ params(
9973
+ custom_field_filters:
9974
+ T::Array[
9975
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::OrHash
9976
+ ]
9977
+ ).returns(T.attached_class)
9978
+ end
9979
+ def self.new(custom_field_filters:)
9980
+ end
9981
+
9982
+ sig do
9983
+ override.returns(
9984
+ {
9985
+ custom_field_filters:
9986
+ T::Array[
9987
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
9988
+ ]
9989
+ }
9990
+ )
9991
+ end
9992
+ def to_hash
9993
+ end
9994
+
9995
+ class CustomFieldFilter < MetronomeSDK::Internal::Type::BaseModel
9996
+ OrHash =
9997
+ T.type_alias do
9998
+ T.any(
9999
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter,
10000
+ MetronomeSDK::Internal::AnyHash
10001
+ )
10002
+ end
10003
+
10004
+ sig do
10005
+ returns(
10006
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol
10007
+ )
10008
+ end
10009
+ attr_accessor :entity
10010
+
10011
+ sig { returns(String) }
10012
+ attr_accessor :key
10013
+
10014
+ sig { returns(String) }
10015
+ attr_accessor :value
10016
+
10017
+ sig do
10018
+ params(
10019
+ entity:
10020
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
10021
+ key: String,
10022
+ value: String
10023
+ ).returns(T.attached_class)
10024
+ end
10025
+ def self.new(entity:, key:, value:)
10026
+ end
10027
+
10028
+ sig do
10029
+ override.returns(
10030
+ {
10031
+ entity:
10032
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
10033
+ key: String,
10034
+ value: String
10035
+ }
10036
+ )
10037
+ end
10038
+ def to_hash
10039
+ end
10040
+
10041
+ module Entity
10042
+ extend MetronomeSDK::Internal::Type::Enum
10043
+
10044
+ TaggedSymbol =
10045
+ T.type_alias do
10046
+ T.all(
10047
+ Symbol,
10048
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity
10049
+ )
10050
+ end
10051
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
10052
+
10053
+ COMMIT =
10054
+ T.let(
10055
+ :Commit,
10056
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
10057
+ )
10058
+ CONTRACT_CREDIT =
10059
+ T.let(
10060
+ :ContractCredit,
10061
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
10062
+ )
10063
+ CONTRACT_CREDIT_OR_COMMIT =
10064
+ T.let(
10065
+ :ContractCreditOrCommit,
10066
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
10067
+ )
10068
+
10069
+ sig do
10070
+ override.returns(
10071
+ T::Array[
10072
+ MetronomeSDK::V2::ContractEditParams::UpdatePrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
10073
+ ]
10074
+ )
10075
+ end
10076
+ def self.values
10077
+ end
10078
+ end
10079
+ end
10080
+ end
8728
10081
  end
8729
10082
  end
8730
10083
 
@@ -8777,6 +10130,27 @@ module MetronomeSDK
8777
10130
  end
8778
10131
  attr_writer :invoice_amount
8779
10132
 
10133
+ # If provided, updates the rounding config on the recurring commit. Set to null to
10134
+ # clear rounding. Omit to leave unchanged.
10135
+ sig do
10136
+ returns(
10137
+ T.nilable(
10138
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding
10139
+ )
10140
+ )
10141
+ end
10142
+ attr_reader :proration_rounding
10143
+
10144
+ sig do
10145
+ params(
10146
+ proration_rounding:
10147
+ T.nilable(
10148
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::OrHash
10149
+ )
10150
+ ).void
10151
+ end
10152
+ attr_writer :proration_rounding
10153
+
8780
10154
  # If provided, updates the recurring commit to use the specified rate type when
8781
10155
  # generating future commits.
8782
10156
  sig do
@@ -8804,6 +10178,10 @@ module MetronomeSDK
8804
10178
  ending_before: T.nilable(Time),
8805
10179
  invoice_amount:
8806
10180
  MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::InvoiceAmount::OrHash,
10181
+ proration_rounding:
10182
+ T.nilable(
10183
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::OrHash
10184
+ ),
8807
10185
  rate_type:
8808
10186
  MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::RateType::OrSymbol
8809
10187
  ).returns(T.attached_class)
@@ -8813,6 +10191,9 @@ module MetronomeSDK
8813
10191
  access_amount: nil,
8814
10192
  ending_before: nil,
8815
10193
  invoice_amount: nil,
10194
+ # If provided, updates the rounding config on the recurring commit. Set to null to
10195
+ # clear rounding. Omit to leave unchanged.
10196
+ proration_rounding: nil,
8816
10197
  # If provided, updates the recurring commit to use the specified rate type when
8817
10198
  # generating future commits.
8818
10199
  rate_type: nil
@@ -8828,6 +10209,10 @@ module MetronomeSDK
8828
10209
  ending_before: T.nilable(Time),
8829
10210
  invoice_amount:
8830
10211
  MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::InvoiceAmount,
10212
+ proration_rounding:
10213
+ T.nilable(
10214
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding
10215
+ ),
8831
10216
  rate_type:
8832
10217
  MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::RateType::OrSymbol
8833
10218
  }
@@ -8904,6 +10289,268 @@ module MetronomeSDK
8904
10289
  end
8905
10290
  end
8906
10291
 
10292
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
10293
+ OrHash =
10294
+ T.type_alias do
10295
+ T.any(
10296
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding,
10297
+ MetronomeSDK::Internal::AnyHash
10298
+ )
10299
+ end
10300
+
10301
+ sig do
10302
+ returns(
10303
+ T.nilable(
10304
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access
10305
+ )
10306
+ )
10307
+ end
10308
+ attr_reader :access
10309
+
10310
+ sig do
10311
+ params(
10312
+ access:
10313
+ T.nilable(
10314
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::OrHash
10315
+ )
10316
+ ).void
10317
+ end
10318
+ attr_writer :access
10319
+
10320
+ sig do
10321
+ returns(
10322
+ T.nilable(
10323
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice
10324
+ )
10325
+ )
10326
+ end
10327
+ attr_reader :invoice
10328
+
10329
+ sig do
10330
+ params(
10331
+ invoice:
10332
+ T.nilable(
10333
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::OrHash
10334
+ )
10335
+ ).void
10336
+ end
10337
+ attr_writer :invoice
10338
+
10339
+ # If provided, updates the rounding config on the recurring commit. Set to null to
10340
+ # clear rounding. Omit to leave unchanged.
10341
+ sig do
10342
+ params(
10343
+ access:
10344
+ T.nilable(
10345
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::OrHash
10346
+ ),
10347
+ invoice:
10348
+ T.nilable(
10349
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::OrHash
10350
+ )
10351
+ ).returns(T.attached_class)
10352
+ end
10353
+ def self.new(access: nil, invoice: nil)
10354
+ end
10355
+
10356
+ sig do
10357
+ override.returns(
10358
+ {
10359
+ access:
10360
+ T.nilable(
10361
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access
10362
+ ),
10363
+ invoice:
10364
+ T.nilable(
10365
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice
10366
+ )
10367
+ }
10368
+ )
10369
+ end
10370
+ def to_hash
10371
+ end
10372
+
10373
+ class Access < MetronomeSDK::Internal::Type::BaseModel
10374
+ OrHash =
10375
+ T.type_alias do
10376
+ T.any(
10377
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access,
10378
+ MetronomeSDK::Internal::AnyHash
10379
+ )
10380
+ end
10381
+
10382
+ # Number of decimal places to round to. Applied directly to the stored monetary
10383
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
10384
+ # nearest 100 in the stored unit).
10385
+ sig { returns(Float) }
10386
+ attr_accessor :decimal_places
10387
+
10388
+ sig do
10389
+ returns(
10390
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::OrSymbol
10391
+ )
10392
+ end
10393
+ attr_accessor :rounding_method
10394
+
10395
+ sig do
10396
+ params(
10397
+ decimal_places: Float,
10398
+ rounding_method:
10399
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::OrSymbol
10400
+ ).returns(T.attached_class)
10401
+ end
10402
+ def self.new(
10403
+ # Number of decimal places to round to. Applied directly to the stored monetary
10404
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
10405
+ # nearest 100 in the stored unit).
10406
+ decimal_places:,
10407
+ rounding_method:
10408
+ )
10409
+ end
10410
+
10411
+ sig do
10412
+ override.returns(
10413
+ {
10414
+ decimal_places: Float,
10415
+ rounding_method:
10416
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::OrSymbol
10417
+ }
10418
+ )
10419
+ end
10420
+ def to_hash
10421
+ end
10422
+
10423
+ module RoundingMethod
10424
+ extend MetronomeSDK::Internal::Type::Enum
10425
+
10426
+ TaggedSymbol =
10427
+ T.type_alias do
10428
+ T.all(
10429
+ Symbol,
10430
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod
10431
+ )
10432
+ end
10433
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
10434
+
10435
+ HALF_UP =
10436
+ T.let(
10437
+ :HALF_UP,
10438
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
10439
+ )
10440
+ FLOOR =
10441
+ T.let(
10442
+ :FLOOR,
10443
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
10444
+ )
10445
+ CEILING =
10446
+ T.let(
10447
+ :CEILING,
10448
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
10449
+ )
10450
+
10451
+ sig do
10452
+ override.returns(
10453
+ T::Array[
10454
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
10455
+ ]
10456
+ )
10457
+ end
10458
+ def self.values
10459
+ end
10460
+ end
10461
+ end
10462
+
10463
+ class Invoice < MetronomeSDK::Internal::Type::BaseModel
10464
+ OrHash =
10465
+ T.type_alias do
10466
+ T.any(
10467
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice,
10468
+ MetronomeSDK::Internal::AnyHash
10469
+ )
10470
+ end
10471
+
10472
+ # Number of decimal places to round to. Applied directly to the stored monetary
10473
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
10474
+ # nearest 100 in the stored unit).
10475
+ sig { returns(Float) }
10476
+ attr_accessor :decimal_places
10477
+
10478
+ sig do
10479
+ returns(
10480
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::OrSymbol
10481
+ )
10482
+ end
10483
+ attr_accessor :rounding_method
10484
+
10485
+ sig do
10486
+ params(
10487
+ decimal_places: Float,
10488
+ rounding_method:
10489
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::OrSymbol
10490
+ ).returns(T.attached_class)
10491
+ end
10492
+ def self.new(
10493
+ # Number of decimal places to round to. Applied directly to the stored monetary
10494
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
10495
+ # nearest 100 in the stored unit).
10496
+ decimal_places:,
10497
+ rounding_method:
10498
+ )
10499
+ end
10500
+
10501
+ sig do
10502
+ override.returns(
10503
+ {
10504
+ decimal_places: Float,
10505
+ rounding_method:
10506
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::OrSymbol
10507
+ }
10508
+ )
10509
+ end
10510
+ def to_hash
10511
+ end
10512
+
10513
+ module RoundingMethod
10514
+ extend MetronomeSDK::Internal::Type::Enum
10515
+
10516
+ TaggedSymbol =
10517
+ T.type_alias do
10518
+ T.all(
10519
+ Symbol,
10520
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod
10521
+ )
10522
+ end
10523
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
10524
+
10525
+ HALF_UP =
10526
+ T.let(
10527
+ :HALF_UP,
10528
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
10529
+ )
10530
+ FLOOR =
10531
+ T.let(
10532
+ :FLOOR,
10533
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
10534
+ )
10535
+ CEILING =
10536
+ T.let(
10537
+ :CEILING,
10538
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
10539
+ )
10540
+
10541
+ sig do
10542
+ override.returns(
10543
+ T::Array[
10544
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
10545
+ ]
10546
+ )
10547
+ end
10548
+ def self.values
10549
+ end
10550
+ end
10551
+ end
10552
+ end
10553
+
8907
10554
  # If provided, updates the recurring commit to use the specified rate type when
8908
10555
  # generating future commits.
8909
10556
  module RateType
@@ -8973,6 +10620,27 @@ module MetronomeSDK
8973
10620
  sig { returns(T.nilable(Time)) }
8974
10621
  attr_accessor :ending_before
8975
10622
 
10623
+ # If provided, updates the rounding config on the recurring credit. Set to null to
10624
+ # clear rounding. Omit to leave unchanged.
10625
+ sig do
10626
+ returns(
10627
+ T.nilable(
10628
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding
10629
+ )
10630
+ )
10631
+ end
10632
+ attr_reader :proration_rounding
10633
+
10634
+ sig do
10635
+ params(
10636
+ proration_rounding:
10637
+ T.nilable(
10638
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::OrHash
10639
+ )
10640
+ ).void
10641
+ end
10642
+ attr_writer :proration_rounding
10643
+
8976
10644
  # If provided, updates the recurring credit to use the specified rate type when
8977
10645
  # generating future credits.
8978
10646
  sig do
@@ -8998,6 +10666,10 @@ module MetronomeSDK
8998
10666
  access_amount:
8999
10667
  MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::AccessAmount::OrHash,
9000
10668
  ending_before: T.nilable(Time),
10669
+ proration_rounding:
10670
+ T.nilable(
10671
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::OrHash
10672
+ ),
9001
10673
  rate_type:
9002
10674
  MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::RateType::OrSymbol
9003
10675
  ).returns(T.attached_class)
@@ -9006,6 +10678,9 @@ module MetronomeSDK
9006
10678
  recurring_credit_id:,
9007
10679
  access_amount: nil,
9008
10680
  ending_before: nil,
10681
+ # If provided, updates the rounding config on the recurring credit. Set to null to
10682
+ # clear rounding. Omit to leave unchanged.
10683
+ proration_rounding: nil,
9009
10684
  # If provided, updates the recurring credit to use the specified rate type when
9010
10685
  # generating future credits.
9011
10686
  rate_type: nil
@@ -9019,6 +10694,10 @@ module MetronomeSDK
9019
10694
  access_amount:
9020
10695
  MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::AccessAmount,
9021
10696
  ending_before: T.nilable(Time),
10697
+ proration_rounding:
10698
+ T.nilable(
10699
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding
10700
+ ),
9022
10701
  rate_type:
9023
10702
  MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::RateType::OrSymbol
9024
10703
  }
@@ -9061,6 +10740,151 @@ module MetronomeSDK
9061
10740
  end
9062
10741
  end
9063
10742
 
10743
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
10744
+ OrHash =
10745
+ T.type_alias do
10746
+ T.any(
10747
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding,
10748
+ MetronomeSDK::Internal::AnyHash
10749
+ )
10750
+ end
10751
+
10752
+ sig do
10753
+ returns(
10754
+ T.nilable(
10755
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access
10756
+ )
10757
+ )
10758
+ end
10759
+ attr_reader :access
10760
+
10761
+ sig do
10762
+ params(
10763
+ access:
10764
+ T.nilable(
10765
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::OrHash
10766
+ )
10767
+ ).void
10768
+ end
10769
+ attr_writer :access
10770
+
10771
+ # If provided, updates the rounding config on the recurring credit. Set to null to
10772
+ # clear rounding. Omit to leave unchanged.
10773
+ sig do
10774
+ params(
10775
+ access:
10776
+ T.nilable(
10777
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::OrHash
10778
+ )
10779
+ ).returns(T.attached_class)
10780
+ end
10781
+ def self.new(access: nil)
10782
+ end
10783
+
10784
+ sig do
10785
+ override.returns(
10786
+ {
10787
+ access:
10788
+ T.nilable(
10789
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access
10790
+ )
10791
+ }
10792
+ )
10793
+ end
10794
+ def to_hash
10795
+ end
10796
+
10797
+ class Access < MetronomeSDK::Internal::Type::BaseModel
10798
+ OrHash =
10799
+ T.type_alias do
10800
+ T.any(
10801
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access,
10802
+ MetronomeSDK::Internal::AnyHash
10803
+ )
10804
+ end
10805
+
10806
+ # Number of decimal places to round to. Applied directly to the stored monetary
10807
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
10808
+ # nearest 100 in the stored unit).
10809
+ sig { returns(Float) }
10810
+ attr_accessor :decimal_places
10811
+
10812
+ sig do
10813
+ returns(
10814
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::OrSymbol
10815
+ )
10816
+ end
10817
+ attr_accessor :rounding_method
10818
+
10819
+ sig do
10820
+ params(
10821
+ decimal_places: Float,
10822
+ rounding_method:
10823
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::OrSymbol
10824
+ ).returns(T.attached_class)
10825
+ end
10826
+ def self.new(
10827
+ # Number of decimal places to round to. Applied directly to the stored monetary
10828
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
10829
+ # nearest 100 in the stored unit).
10830
+ decimal_places:,
10831
+ rounding_method:
10832
+ )
10833
+ end
10834
+
10835
+ sig do
10836
+ override.returns(
10837
+ {
10838
+ decimal_places: Float,
10839
+ rounding_method:
10840
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::OrSymbol
10841
+ }
10842
+ )
10843
+ end
10844
+ def to_hash
10845
+ end
10846
+
10847
+ module RoundingMethod
10848
+ extend MetronomeSDK::Internal::Type::Enum
10849
+
10850
+ TaggedSymbol =
10851
+ T.type_alias do
10852
+ T.all(
10853
+ Symbol,
10854
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod
10855
+ )
10856
+ end
10857
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
10858
+
10859
+ HALF_UP =
10860
+ T.let(
10861
+ :HALF_UP,
10862
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
10863
+ )
10864
+ FLOOR =
10865
+ T.let(
10866
+ :FLOOR,
10867
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
10868
+ )
10869
+ CEILING =
10870
+ T.let(
10871
+ :CEILING,
10872
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
10873
+ )
10874
+
10875
+ sig do
10876
+ override.returns(
10877
+ T::Array[
10878
+ MetronomeSDK::V2::ContractEditParams::UpdateRecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
10879
+ ]
10880
+ )
10881
+ end
10882
+ def self.values
10883
+ end
10884
+ end
10885
+ end
10886
+ end
10887
+
9064
10888
  # If provided, updates the recurring credit to use the specified rate type when
9065
10889
  # generating future credits.
9066
10890
  module RateType
@@ -9541,6 +11365,26 @@ module MetronomeSDK
9541
11365
  )
9542
11366
  end
9543
11367
 
11368
+ # Update the discount cap. Set to null to remove an existing cap.
11369
+ sig do
11370
+ returns(
11371
+ T.nilable(
11372
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap
11373
+ )
11374
+ )
11375
+ end
11376
+ attr_reader :cap
11377
+
11378
+ sig do
11379
+ params(
11380
+ cap:
11381
+ T.nilable(
11382
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap::OrHash
11383
+ )
11384
+ ).void
11385
+ end
11386
+ attr_writer :cap
11387
+
9544
11388
  # The fraction of the original amount that the customer pays after applying the
9545
11389
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
9546
11390
  # the customer pays 85% of the original amount (a 15% discount).
@@ -9548,11 +11392,17 @@ module MetronomeSDK
9548
11392
  attr_accessor :payment_fraction
9549
11393
 
9550
11394
  sig do
9551
- params(payment_fraction: T.nilable(Float)).returns(
9552
- T.attached_class
9553
- )
11395
+ params(
11396
+ cap:
11397
+ T.nilable(
11398
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap::OrHash
11399
+ ),
11400
+ payment_fraction: T.nilable(Float)
11401
+ ).returns(T.attached_class)
9554
11402
  end
9555
11403
  def self.new(
11404
+ # Update the discount cap. Set to null to remove an existing cap.
11405
+ cap: nil,
9556
11406
  # The fraction of the original amount that the customer pays after applying the
9557
11407
  # discount. Set to null to remove the discount fraction. For example, 0.85 means
9558
11408
  # the customer pays 85% of the original amount (a 15% discount).
@@ -9560,9 +11410,57 @@ module MetronomeSDK
9560
11410
  )
9561
11411
  end
9562
11412
 
9563
- sig { override.returns({ payment_fraction: T.nilable(Float) }) }
11413
+ sig do
11414
+ override.returns(
11415
+ {
11416
+ cap:
11417
+ T.nilable(
11418
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap
11419
+ ),
11420
+ payment_fraction: T.nilable(Float)
11421
+ }
11422
+ )
11423
+ end
9564
11424
  def to_hash
9565
11425
  end
11426
+
11427
+ class Cap < MetronomeSDK::Internal::Type::BaseModel
11428
+ OrHash =
11429
+ T.type_alias do
11430
+ T.any(
11431
+ MetronomeSDK::V2::ContractEditParams::UpdateSpendThresholdConfiguration::DiscountConfiguration::Cap,
11432
+ MetronomeSDK::Internal::AnyHash
11433
+ )
11434
+ end
11435
+
11436
+ # Accumulated spend ceiling above which the discount stops applying.
11437
+ sig { returns(Float) }
11438
+ attr_accessor :amount
11439
+
11440
+ # Alias of the spend tracker this cap is measured against.
11441
+ sig { returns(String) }
11442
+ attr_accessor :spend_tracker_alias
11443
+
11444
+ # Update the discount cap. Set to null to remove an existing cap.
11445
+ sig do
11446
+ params(amount: Float, spend_tracker_alias: String).returns(
11447
+ T.attached_class
11448
+ )
11449
+ end
11450
+ def self.new(
11451
+ # Accumulated spend ceiling above which the discount stops applying.
11452
+ amount:,
11453
+ # Alias of the spend tracker this cap is measured against.
11454
+ spend_tracker_alias:
11455
+ )
11456
+ end
11457
+
11458
+ sig do
11459
+ override.returns({ amount: Float, spend_tracker_alias: String })
11460
+ end
11461
+ def to_hash
11462
+ end
11463
+ end
9566
11464
  end
9567
11465
  end
9568
11466
 
@@ -9581,6 +11479,25 @@ module MetronomeSDK
9581
11479
  sig { returns(T.nilable(Time)) }
9582
11480
  attr_accessor :ending_before
9583
11481
 
11482
+ sig do
11483
+ returns(
11484
+ T.nilable(
11485
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding
11486
+ )
11487
+ )
11488
+ end
11489
+ attr_reader :proration_rounding
11490
+
11491
+ sig do
11492
+ params(
11493
+ proration_rounding:
11494
+ T.nilable(
11495
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::OrHash
11496
+ )
11497
+ ).void
11498
+ end
11499
+ attr_writer :proration_rounding
11500
+
9584
11501
  # Update the subscription's quantity management mode from QUANTITY_ONLY to
9585
11502
  # SEAT_BASED with the provided seat_group_key.
9586
11503
  sig do
@@ -9645,6 +11562,10 @@ module MetronomeSDK
9645
11562
  params(
9646
11563
  subscription_id: String,
9647
11564
  ending_before: T.nilable(Time),
11565
+ proration_rounding:
11566
+ T.nilable(
11567
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::OrHash
11568
+ ),
9648
11569
  quantity_management_mode_update:
9649
11570
  MetronomeSDK::V2::ContractEditParams::UpdateSubscription::QuantityManagementModeUpdate::OrHash,
9650
11571
  quantity_updates:
@@ -9658,6 +11579,7 @@ module MetronomeSDK
9658
11579
  def self.new(
9659
11580
  subscription_id:,
9660
11581
  ending_before: nil,
11582
+ proration_rounding: nil,
9661
11583
  # Update the subscription's quantity management mode from QUANTITY_ONLY to
9662
11584
  # SEAT_BASED with the provided seat_group_key.
9663
11585
  quantity_management_mode_update: nil,
@@ -9674,6 +11596,10 @@ module MetronomeSDK
9674
11596
  {
9675
11597
  subscription_id: String,
9676
11598
  ending_before: T.nilable(Time),
11599
+ proration_rounding:
11600
+ T.nilable(
11601
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding
11602
+ ),
9677
11603
  quantity_management_mode_update:
9678
11604
  MetronomeSDK::V2::ContractEditParams::UpdateSubscription::QuantityManagementModeUpdate,
9679
11605
  quantity_updates:
@@ -9688,6 +11614,96 @@ module MetronomeSDK
9688
11614
  def to_hash
9689
11615
  end
9690
11616
 
11617
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
11618
+ OrHash =
11619
+ T.type_alias do
11620
+ T.any(
11621
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding,
11622
+ MetronomeSDK::Internal::AnyHash
11623
+ )
11624
+ end
11625
+
11626
+ # Number of decimal places to round to. Applied directly to the stored monetary
11627
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
11628
+ # nearest 100 in the stored unit).
11629
+ sig { returns(Float) }
11630
+ attr_accessor :decimal_places
11631
+
11632
+ sig do
11633
+ returns(
11634
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::RoundingMethod::OrSymbol
11635
+ )
11636
+ end
11637
+ attr_accessor :rounding_method
11638
+
11639
+ sig do
11640
+ params(
11641
+ decimal_places: Float,
11642
+ rounding_method:
11643
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::RoundingMethod::OrSymbol
11644
+ ).returns(T.attached_class)
11645
+ end
11646
+ def self.new(
11647
+ # Number of decimal places to round to. Applied directly to the stored monetary
11648
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
11649
+ # nearest 100 in the stored unit).
11650
+ decimal_places:,
11651
+ rounding_method:
11652
+ )
11653
+ end
11654
+
11655
+ sig do
11656
+ override.returns(
11657
+ {
11658
+ decimal_places: Float,
11659
+ rounding_method:
11660
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::RoundingMethod::OrSymbol
11661
+ }
11662
+ )
11663
+ end
11664
+ def to_hash
11665
+ end
11666
+
11667
+ module RoundingMethod
11668
+ extend MetronomeSDK::Internal::Type::Enum
11669
+
11670
+ TaggedSymbol =
11671
+ T.type_alias do
11672
+ T.all(
11673
+ Symbol,
11674
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::RoundingMethod
11675
+ )
11676
+ end
11677
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
11678
+
11679
+ HALF_UP =
11680
+ T.let(
11681
+ :HALF_UP,
11682
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::RoundingMethod::TaggedSymbol
11683
+ )
11684
+ FLOOR =
11685
+ T.let(
11686
+ :FLOOR,
11687
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::RoundingMethod::TaggedSymbol
11688
+ )
11689
+ CEILING =
11690
+ T.let(
11691
+ :CEILING,
11692
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::RoundingMethod::TaggedSymbol
11693
+ )
11694
+
11695
+ sig do
11696
+ override.returns(
11697
+ T::Array[
11698
+ MetronomeSDK::V2::ContractEditParams::UpdateSubscription::ProrationRounding::RoundingMethod::TaggedSymbol
11699
+ ]
11700
+ )
11701
+ end
11702
+ def self.values
11703
+ end
11704
+ end
11705
+ end
11706
+
9691
11707
  class QuantityManagementModeUpdate < MetronomeSDK::Internal::Type::BaseModel
9692
11708
  OrHash =
9693
11709
  T.type_alias do