metronome-sdk 3.7.0 → 3.9.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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/transport/base_client.rb +4 -1
  5. data/lib/metronome_sdk/models/commit.rb +10 -1
  6. data/lib/metronome_sdk/models/contract.rb +46 -16
  7. data/lib/metronome_sdk/models/contract_v2.rb +645 -16
  8. data/lib/metronome_sdk/models/contract_without_amendments.rb +178 -4
  9. data/lib/metronome_sdk/models/credit.rb +10 -1
  10. data/lib/metronome_sdk/models/override.rb +7 -1
  11. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +10 -2
  12. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +3 -1
  13. data/lib/metronome_sdk/models/subscription.rb +90 -2
  14. data/lib/metronome_sdk/models/v1/alert_create_params.rb +127 -1
  15. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +17 -4
  16. data/lib/metronome_sdk/models/v1/contract_create_params.rb +290 -10
  17. data/lib/metronome_sdk/models/v1/contract_create_response.rb +243 -17
  18. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rb +88 -0
  19. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rb +62 -0
  20. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +10 -1
  21. data/lib/metronome_sdk/models/v1/customers/alert_retrieve_params.rb +127 -1
  22. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +130 -3
  23. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +10 -1
  24. data/lib/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rb +2 -0
  25. data/lib/metronome_sdk/models/v1/package_create_params.rb +279 -10
  26. data/lib/metronome_sdk/models/v1/package_list_response.rb +264 -7
  27. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +264 -7
  28. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +517 -9
  29. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +456 -8
  30. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +456 -8
  31. data/lib/metronome_sdk/resources/v1/alerts.rb +3 -1
  32. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/rates.rb +4 -0
  33. data/lib/metronome_sdk/resources/v1/contracts.rb +68 -1
  34. data/lib/metronome_sdk/resources/v1/customers/alerts.rb +4 -2
  35. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +3 -1
  36. data/lib/metronome_sdk/resources/v1/dashboards.rb +7 -2
  37. data/lib/metronome_sdk/version.rb +1 -1
  38. data/lib/metronome_sdk.rb +2 -0
  39. data/rbi/metronome_sdk/models/commit.rbi +13 -0
  40. data/rbi/metronome_sdk/models/contract.rbi +47 -22
  41. data/rbi/metronome_sdk/models/contract_v2.rbi +1472 -96
  42. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +463 -0
  43. data/rbi/metronome_sdk/models/credit.rbi +13 -0
  44. data/rbi/metronome_sdk/models/override.rbi +9 -0
  45. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +11 -1
  46. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +4 -0
  47. data/rbi/metronome_sdk/models/subscription.rbi +212 -3
  48. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +373 -0
  49. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +27 -6
  50. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +719 -9
  51. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +523 -32
  52. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbi +112 -0
  53. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbi +119 -0
  54. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +13 -0
  55. data/rbi/metronome_sdk/models/v1/customers/alert_retrieve_params.rbi +360 -0
  56. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +379 -2
  57. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +13 -0
  58. data/rbi/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbi +10 -0
  59. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +706 -9
  60. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +693 -3
  61. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +693 -3
  62. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +1372 -69
  63. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +1204 -67
  64. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1204 -67
  65. data/rbi/metronome_sdk/resources/v1/alerts.rbi +8 -0
  66. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbi +4 -0
  67. data/rbi/metronome_sdk/resources/v1/contracts.rbi +70 -0
  68. data/rbi/metronome_sdk/resources/v1/customers/alerts.rbi +8 -1
  69. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +4 -0
  70. data/rbi/metronome_sdk/resources/v1/dashboards.rbi +7 -2
  71. data/sig/metronome_sdk/models/commit.rbs +7 -0
  72. data/sig/metronome_sdk/models/contract.rbs +22 -11
  73. data/sig/metronome_sdk/models/contract_v2.rbs +559 -8
  74. data/sig/metronome_sdk/models/contract_without_amendments.rbs +169 -2
  75. data/sig/metronome_sdk/models/credit.rbs +7 -0
  76. data/sig/metronome_sdk/models/override.rbs +7 -0
  77. data/sig/metronome_sdk/models/subscription.rbs +88 -3
  78. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +144 -0
  79. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +7 -0
  80. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +278 -5
  81. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +197 -17
  82. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbs +63 -0
  83. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbs +59 -0
  84. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +7 -0
  85. data/sig/metronome_sdk/models/v1/customers/alert_retrieve_params.rbs +141 -0
  86. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +150 -0
  87. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +8 -1
  88. data/sig/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbs +4 -0
  89. data/sig/metronome_sdk/models/v1/package_create_params.rbs +271 -5
  90. data/sig/metronome_sdk/models/v1/package_list_response.rbs +265 -5
  91. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +263 -5
  92. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +472 -7
  93. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +428 -5
  94. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +427 -5
  95. data/sig/metronome_sdk/resources/v1/alerts.rbs +1 -0
  96. data/sig/metronome_sdk/resources/v1/contracts.rbs +13 -0
  97. data/sig/metronome_sdk/resources/v1/customers/alerts.rbs +1 -0
  98. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +1 -0
  99. metadata +8 -2
@@ -55,6 +55,29 @@ module MetronomeSDK
55
55
  sig { params(archived_at: Time).void }
56
56
  attr_writer :archived_at
57
57
 
58
+ # The schedule of billing provider configuration changes on the contract, ordered
59
+ # by effective_at ascending.
60
+ sig do
61
+ returns(
62
+ T.nilable(
63
+ T::Array[
64
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule
65
+ ]
66
+ )
67
+ )
68
+ end
69
+ attr_reader :billing_provider_configuration_schedule
70
+
71
+ sig do
72
+ params(
73
+ billing_provider_configuration_schedule:
74
+ T::Array[
75
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::OrHash
76
+ ]
77
+ ).void
78
+ end
79
+ attr_writer :billing_provider_configuration_schedule
80
+
58
81
  sig { returns(T.nilable(T::Array[MetronomeSDK::ContractV2::Credit])) }
59
82
  attr_reader :credits
60
83
 
@@ -70,7 +93,6 @@ module MetronomeSDK
70
93
  sig { params(custom_fields: T::Hash[Symbol, String]).void }
71
94
  attr_writer :custom_fields
72
95
 
73
- # This field's availability is dependent on your client's configuration.
74
96
  sig do
75
97
  returns(
76
98
  T.nilable(
@@ -246,6 +268,29 @@ module MetronomeSDK
246
268
  end
247
269
  attr_writer :reseller_royalties
248
270
 
271
+ # The schedule of revenue system configuration changes on the contract, ordered by
272
+ # effective_at ascending.
273
+ sig do
274
+ returns(
275
+ T.nilable(
276
+ T::Array[
277
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule
278
+ ]
279
+ )
280
+ )
281
+ end
282
+ attr_reader :revenue_system_configuration_schedule
283
+
284
+ sig do
285
+ params(
286
+ revenue_system_configuration_schedule:
287
+ T::Array[
288
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::OrHash
289
+ ]
290
+ ).void
291
+ end
292
+ attr_writer :revenue_system_configuration_schedule
293
+
249
294
  # This field's availability is dependent on your client's configuration.
250
295
  sig { returns(T.nilable(String)) }
251
296
  attr_reader :salesforce_opportunity_id
@@ -342,6 +387,10 @@ module MetronomeSDK
342
387
  usage_statement_schedule:
343
388
  MetronomeSDK::ContractV2::UsageStatementSchedule::OrHash,
344
389
  archived_at: Time,
390
+ billing_provider_configuration_schedule:
391
+ T::Array[
392
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::OrHash
393
+ ],
345
394
  credits: T::Array[MetronomeSDK::ContractV2::Credit::OrHash],
346
395
  custom_fields: T::Hash[Symbol, String],
347
396
  customer_billing_provider_configuration:
@@ -370,6 +419,10 @@ module MetronomeSDK
370
419
  T::Array[MetronomeSDK::ContractV2::RecurringCredit::OrHash],
371
420
  reseller_royalties:
372
421
  T::Array[MetronomeSDK::ContractV2::ResellerRoyalty::OrHash],
422
+ revenue_system_configuration_schedule:
423
+ T::Array[
424
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::OrHash
425
+ ],
373
426
  salesforce_opportunity_id: String,
374
427
  scheduled_charges_on_usage_invoices:
375
428
  MetronomeSDK::ContractV2::ScheduledChargesOnUsageInvoices::OrSymbol,
@@ -396,10 +449,12 @@ module MetronomeSDK
396
449
  usage_filter:,
397
450
  usage_statement_schedule:,
398
451
  archived_at: nil,
452
+ # The schedule of billing provider configuration changes on the contract, ordered
453
+ # by effective_at ascending.
454
+ billing_provider_configuration_schedule: nil,
399
455
  credits: nil,
400
456
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
401
457
  custom_fields: nil,
402
- # This field's availability is dependent on your client's configuration.
403
458
  customer_billing_provider_configuration: nil,
404
459
  # This field's availability is dependent on your client's configuration.
405
460
  discounts: nil,
@@ -429,6 +484,9 @@ module MetronomeSDK
429
484
  recurring_credits: nil,
430
485
  # This field's availability is dependent on your client's configuration.
431
486
  reseller_royalties: nil,
487
+ # The schedule of revenue system configuration changes on the contract, ordered by
488
+ # effective_at ascending.
489
+ revenue_system_configuration_schedule: nil,
432
490
  # This field's availability is dependent on your client's configuration.
433
491
  salesforce_opportunity_id: nil,
434
492
  # Determines which scheduled and commit charges to consolidate onto the Contract's
@@ -464,6 +522,10 @@ module MetronomeSDK
464
522
  usage_statement_schedule:
465
523
  MetronomeSDK::ContractV2::UsageStatementSchedule,
466
524
  archived_at: Time,
525
+ billing_provider_configuration_schedule:
526
+ T::Array[
527
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule
528
+ ],
467
529
  credits: T::Array[MetronomeSDK::ContractV2::Credit],
468
530
  custom_fields: T::Hash[Symbol, String],
469
531
  customer_billing_provider_configuration:
@@ -489,6 +551,10 @@ module MetronomeSDK
489
551
  T::Array[MetronomeSDK::ContractV2::RecurringCredit],
490
552
  reseller_royalties:
491
553
  T::Array[MetronomeSDK::ContractV2::ResellerRoyalty],
554
+ revenue_system_configuration_schedule:
555
+ T::Array[
556
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule
557
+ ],
492
558
  salesforce_opportunity_id: String,
493
559
  scheduled_charges_on_usage_invoices:
494
560
  MetronomeSDK::ContractV2::ScheduledChargesOnUsageInvoices::TaggedSymbol,
@@ -595,6 +661,14 @@ module MetronomeSDK
595
661
  end
596
662
  attr_writer :contract
597
663
 
664
+ # The actor who created this commit. Omitted for system-generated commits such as
665
+ # recurring commits, rollover commits, and threshold commits.
666
+ sig { returns(T.nilable(String)) }
667
+ attr_reader :created_by
668
+
669
+ sig { params(created_by: String).void }
670
+ attr_writer :created_by
671
+
598
672
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
599
673
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
600
674
  attr_reader :custom_fields
@@ -805,6 +879,7 @@ module MetronomeSDK
805
879
  archived_at: Time,
806
880
  balance: Float,
807
881
  contract: MetronomeSDK::ContractV2::Commit::Contract::OrHash,
882
+ created_by: String,
808
883
  custom_fields: T::Hash[Symbol, String],
809
884
  description: String,
810
885
  hierarchy_configuration:
@@ -874,6 +949,9 @@ module MetronomeSDK
874
949
  # included in the balance, including future-dated manual ledger entries.
875
950
  balance: nil,
876
951
  contract: nil,
952
+ # The actor who created this commit. Omitted for system-generated commits such as
953
+ # recurring commits, rollover commits, and threshold commits.
954
+ created_by: nil,
877
955
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
878
956
  custom_fields: nil,
879
957
  description: nil,
@@ -924,6 +1002,7 @@ module MetronomeSDK
924
1002
  archived_at: Time,
925
1003
  balance: Float,
926
1004
  contract: MetronomeSDK::ContractV2::Commit::Contract,
1005
+ created_by: String,
927
1006
  custom_fields: T::Hash[Symbol, String],
928
1007
  description: String,
929
1008
  hierarchy_configuration:
@@ -2618,6 +2697,12 @@ module MetronomeSDK
2618
2697
  )
2619
2698
  end
2620
2699
 
2700
+ sig { returns(T.nilable(T::Array[String])) }
2701
+ attr_reader :any_commit_or_credit_ids
2702
+
2703
+ sig { params(any_commit_or_credit_ids: T::Array[String]).void }
2704
+ attr_writer :any_commit_or_credit_ids
2705
+
2621
2706
  sig do
2622
2707
  returns(
2623
2708
  T.nilable(
@@ -2677,6 +2762,7 @@ module MetronomeSDK
2677
2762
 
2678
2763
  sig do
2679
2764
  params(
2765
+ any_commit_or_credit_ids: T::Array[String],
2680
2766
  billing_frequency:
2681
2767
  MetronomeSDK::ContractV2::Override::OverrideSpecifier::BillingFrequency::OrSymbol,
2682
2768
  commit_ids: T::Array[String],
@@ -2688,6 +2774,7 @@ module MetronomeSDK
2688
2774
  ).returns(T.attached_class)
2689
2775
  end
2690
2776
  def self.new(
2777
+ any_commit_or_credit_ids: nil,
2691
2778
  billing_frequency: nil,
2692
2779
  commit_ids: nil,
2693
2780
  presentation_group_values: nil,
@@ -2701,6 +2788,7 @@ module MetronomeSDK
2701
2788
  sig do
2702
2789
  override.returns(
2703
2790
  {
2791
+ any_commit_or_credit_ids: T::Array[String],
2704
2792
  billing_frequency:
2705
2793
  MetronomeSDK::ContractV2::Override::OverrideSpecifier::BillingFrequency::TaggedSymbol,
2706
2794
  commit_ids: T::Array[String],
@@ -3236,6 +3324,294 @@ module MetronomeSDK
3236
3324
  end
3237
3325
  end
3238
3326
 
3327
+ class BillingProviderConfigurationSchedule < MetronomeSDK::Internal::Type::BaseModel
3328
+ OrHash =
3329
+ T.type_alias do
3330
+ T.any(
3331
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule,
3332
+ MetronomeSDK::Internal::AnyHash
3333
+ )
3334
+ end
3335
+
3336
+ sig do
3337
+ returns(
3338
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration
3339
+ )
3340
+ end
3341
+ attr_reader :billing_provider_configuration
3342
+
3343
+ sig do
3344
+ params(
3345
+ billing_provider_configuration:
3346
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::OrHash
3347
+ ).void
3348
+ end
3349
+ attr_writer :billing_provider_configuration
3350
+
3351
+ # The date this billing provider configuration became or becomes active.
3352
+ sig { returns(Time) }
3353
+ attr_accessor :effective_at
3354
+
3355
+ # The date this billing provider configuration is superseded by the next entry.
3356
+ # Null for the last entry in the schedule.
3357
+ sig { returns(T.nilable(Time)) }
3358
+ attr_reader :effective_until
3359
+
3360
+ sig { params(effective_until: Time).void }
3361
+ attr_writer :effective_until
3362
+
3363
+ sig do
3364
+ params(
3365
+ billing_provider_configuration:
3366
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::OrHash,
3367
+ effective_at: Time,
3368
+ effective_until: Time
3369
+ ).returns(T.attached_class)
3370
+ end
3371
+ def self.new(
3372
+ billing_provider_configuration:,
3373
+ # The date this billing provider configuration became or becomes active.
3374
+ effective_at:,
3375
+ # The date this billing provider configuration is superseded by the next entry.
3376
+ # Null for the last entry in the schedule.
3377
+ effective_until: nil
3378
+ )
3379
+ end
3380
+
3381
+ sig do
3382
+ override.returns(
3383
+ {
3384
+ billing_provider_configuration:
3385
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration,
3386
+ effective_at: Time,
3387
+ effective_until: Time
3388
+ }
3389
+ )
3390
+ end
3391
+ def to_hash
3392
+ end
3393
+
3394
+ class BillingProviderConfiguration < MetronomeSDK::Internal::Type::BaseModel
3395
+ OrHash =
3396
+ T.type_alias do
3397
+ T.any(
3398
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration,
3399
+ MetronomeSDK::Internal::AnyHash
3400
+ )
3401
+ end
3402
+
3403
+ # ID of this configuration; can be provided as the
3404
+ # billing_provider_configuration_id when creating a contract.
3405
+ sig { returns(String) }
3406
+ attr_accessor :id
3407
+
3408
+ sig { returns(T.nilable(Time)) }
3409
+ attr_accessor :archived_at
3410
+
3411
+ # The billing provider set for this configuration.
3412
+ sig do
3413
+ returns(
3414
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3415
+ )
3416
+ end
3417
+ attr_accessor :billing_provider
3418
+
3419
+ # Configuration for the billing provider. The structure of this object is specific
3420
+ # to the billing provider.
3421
+ sig { returns(T::Hash[Symbol, T.anything]) }
3422
+ attr_accessor :configuration
3423
+
3424
+ sig { returns(String) }
3425
+ attr_accessor :customer_id
3426
+
3427
+ # The method to use for delivering invoices to this customer.
3428
+ sig do
3429
+ returns(
3430
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::DeliveryMethod::TaggedSymbol
3431
+ )
3432
+ end
3433
+ attr_accessor :delivery_method
3434
+
3435
+ # Configuration for the delivery method. The structure of this object is specific
3436
+ # to the delivery method.
3437
+ sig { returns(T::Hash[Symbol, T.anything]) }
3438
+ attr_accessor :delivery_method_configuration
3439
+
3440
+ # ID of the delivery method to use for this customer.
3441
+ sig { returns(String) }
3442
+ attr_accessor :delivery_method_id
3443
+
3444
+ sig do
3445
+ params(
3446
+ id: String,
3447
+ archived_at: T.nilable(Time),
3448
+ billing_provider:
3449
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::OrSymbol,
3450
+ configuration: T::Hash[Symbol, T.anything],
3451
+ customer_id: String,
3452
+ delivery_method:
3453
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::DeliveryMethod::OrSymbol,
3454
+ delivery_method_configuration: T::Hash[Symbol, T.anything],
3455
+ delivery_method_id: String
3456
+ ).returns(T.attached_class)
3457
+ end
3458
+ def self.new(
3459
+ # ID of this configuration; can be provided as the
3460
+ # billing_provider_configuration_id when creating a contract.
3461
+ id:,
3462
+ archived_at:,
3463
+ # The billing provider set for this configuration.
3464
+ billing_provider:,
3465
+ # Configuration for the billing provider. The structure of this object is specific
3466
+ # to the billing provider.
3467
+ configuration:,
3468
+ customer_id:,
3469
+ # The method to use for delivering invoices to this customer.
3470
+ delivery_method:,
3471
+ # Configuration for the delivery method. The structure of this object is specific
3472
+ # to the delivery method.
3473
+ delivery_method_configuration:,
3474
+ # ID of the delivery method to use for this customer.
3475
+ delivery_method_id:
3476
+ )
3477
+ end
3478
+
3479
+ sig do
3480
+ override.returns(
3481
+ {
3482
+ id: String,
3483
+ archived_at: T.nilable(Time),
3484
+ billing_provider:
3485
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol,
3486
+ configuration: T::Hash[Symbol, T.anything],
3487
+ customer_id: String,
3488
+ delivery_method:
3489
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::DeliveryMethod::TaggedSymbol,
3490
+ delivery_method_configuration: T::Hash[Symbol, T.anything],
3491
+ delivery_method_id: String
3492
+ }
3493
+ )
3494
+ end
3495
+ def to_hash
3496
+ end
3497
+
3498
+ # The billing provider set for this configuration.
3499
+ module BillingProvider
3500
+ extend MetronomeSDK::Internal::Type::Enum
3501
+
3502
+ TaggedSymbol =
3503
+ T.type_alias do
3504
+ T.all(
3505
+ Symbol,
3506
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider
3507
+ )
3508
+ end
3509
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
3510
+
3511
+ AWS_MARKETPLACE =
3512
+ T.let(
3513
+ :aws_marketplace,
3514
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3515
+ )
3516
+ STRIPE =
3517
+ T.let(
3518
+ :stripe,
3519
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3520
+ )
3521
+ NETSUITE =
3522
+ T.let(
3523
+ :netsuite,
3524
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3525
+ )
3526
+ CUSTOM =
3527
+ T.let(
3528
+ :custom,
3529
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3530
+ )
3531
+ AZURE_MARKETPLACE =
3532
+ T.let(
3533
+ :azure_marketplace,
3534
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3535
+ )
3536
+ QUICKBOOKS_ONLINE =
3537
+ T.let(
3538
+ :quickbooks_online,
3539
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3540
+ )
3541
+ WORKDAY =
3542
+ T.let(
3543
+ :workday,
3544
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3545
+ )
3546
+ GCP_MARKETPLACE =
3547
+ T.let(
3548
+ :gcp_marketplace,
3549
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3550
+ )
3551
+ METRONOME =
3552
+ T.let(
3553
+ :metronome,
3554
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3555
+ )
3556
+
3557
+ sig do
3558
+ override.returns(
3559
+ T::Array[
3560
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::BillingProvider::TaggedSymbol
3561
+ ]
3562
+ )
3563
+ end
3564
+ def self.values
3565
+ end
3566
+ end
3567
+
3568
+ # The method to use for delivering invoices to this customer.
3569
+ module DeliveryMethod
3570
+ extend MetronomeSDK::Internal::Type::Enum
3571
+
3572
+ TaggedSymbol =
3573
+ T.type_alias do
3574
+ T.all(
3575
+ Symbol,
3576
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::DeliveryMethod
3577
+ )
3578
+ end
3579
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
3580
+
3581
+ DIRECT_TO_BILLING_PROVIDER =
3582
+ T.let(
3583
+ :direct_to_billing_provider,
3584
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::DeliveryMethod::TaggedSymbol
3585
+ )
3586
+ AWS_SQS =
3587
+ T.let(
3588
+ :aws_sqs,
3589
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::DeliveryMethod::TaggedSymbol
3590
+ )
3591
+ TACKLE =
3592
+ T.let(
3593
+ :tackle,
3594
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::DeliveryMethod::TaggedSymbol
3595
+ )
3596
+ AWS_SNS =
3597
+ T.let(
3598
+ :aws_sns,
3599
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::DeliveryMethod::TaggedSymbol
3600
+ )
3601
+
3602
+ sig do
3603
+ override.returns(
3604
+ T::Array[
3605
+ MetronomeSDK::ContractV2::BillingProviderConfigurationSchedule::BillingProviderConfiguration::DeliveryMethod::TaggedSymbol
3606
+ ]
3607
+ )
3608
+ end
3609
+ def self.values
3610
+ end
3611
+ end
3612
+ end
3613
+ end
3614
+
3239
3615
  class Credit < MetronomeSDK::Internal::Type::BaseModel
3240
3616
  OrHash =
3241
3617
  T.type_alias do
@@ -3328,6 +3704,14 @@ module MetronomeSDK
3328
3704
  sig { params(created_at: Time).void }
3329
3705
  attr_writer :created_at
3330
3706
 
3707
+ # The actor who created this credit. Omitted for system-generated credits such as
3708
+ # recurring credits.
3709
+ sig { returns(T.nilable(String)) }
3710
+ attr_reader :created_by
3711
+
3712
+ sig { params(created_by: String).void }
3713
+ attr_writer :created_by
3714
+
3331
3715
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
3332
3716
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
3333
3717
  attr_reader :custom_fields
@@ -3471,6 +3855,7 @@ module MetronomeSDK
3471
3855
  balance: Float,
3472
3856
  contract: MetronomeSDK::ContractV2::Credit::Contract::OrHash,
3473
3857
  created_at: Time,
3858
+ created_by: String,
3474
3859
  custom_fields: T::Hash[Symbol, String],
3475
3860
  description: String,
3476
3861
  hierarchy_configuration:
@@ -3525,6 +3910,9 @@ module MetronomeSDK
3525
3910
  # - Recurring credits: latter of credit service period date and parent credit
3526
3911
  # start date
3527
3912
  created_at: nil,
3913
+ # The actor who created this credit. Omitted for system-generated credits such as
3914
+ # recurring credits.
3915
+ created_by: nil,
3528
3916
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
3529
3917
  custom_fields: nil,
3530
3918
  description: nil,
@@ -3567,6 +3955,7 @@ module MetronomeSDK
3567
3955
  balance: Float,
3568
3956
  contract: MetronomeSDK::ContractV2::Credit::Contract,
3569
3957
  created_at: Time,
3958
+ created_by: String,
3570
3959
  custom_fields: T::Hash[Symbol, String],
3571
3960
  description: String,
3572
3961
  hierarchy_configuration:
@@ -4438,10 +4827,15 @@ module MetronomeSDK
4438
4827
  )
4439
4828
  end
4440
4829
 
4441
- # ID of Customer's billing provider configuration.
4830
+ # ID of this configuration; can be provided as the
4831
+ # billing_provider_configuration_id when creating a contract.
4442
4832
  sig { returns(String) }
4443
4833
  attr_accessor :id
4444
4834
 
4835
+ sig { returns(T.nilable(Time)) }
4836
+ attr_accessor :archived_at
4837
+
4838
+ # The billing provider set for this configuration.
4445
4839
  sig do
4446
4840
  returns(
4447
4841
  MetronomeSDK::ContractV2::CustomerBillingProviderConfiguration::BillingProvider::TaggedSymbol
@@ -4449,6 +4843,15 @@ module MetronomeSDK
4449
4843
  end
4450
4844
  attr_accessor :billing_provider
4451
4845
 
4846
+ # Configuration for the billing provider. The structure of this object is specific
4847
+ # to the billing provider.
4848
+ sig { returns(T::Hash[Symbol, T.anything]) }
4849
+ attr_accessor :configuration
4850
+
4851
+ sig { returns(String) }
4852
+ attr_accessor :customer_id
4853
+
4854
+ # The method to use for delivering invoices to this customer.
4452
4855
  sig do
4453
4856
  returns(
4454
4857
  MetronomeSDK::ContractV2::CustomerBillingProviderConfiguration::DeliveryMethod::TaggedSymbol
@@ -4456,21 +4859,47 @@ module MetronomeSDK
4456
4859
  end
4457
4860
  attr_accessor :delivery_method
4458
4861
 
4459
- # This field's availability is dependent on your client's configuration.
4862
+ # Configuration for the delivery method. The structure of this object is specific
4863
+ # to the delivery method.
4864
+ sig { returns(T::Hash[Symbol, T.anything]) }
4865
+ attr_accessor :delivery_method_configuration
4866
+
4867
+ # ID of the delivery method to use for this customer.
4868
+ sig { returns(String) }
4869
+ attr_accessor :delivery_method_id
4870
+
4460
4871
  sig do
4461
4872
  params(
4462
4873
  id: String,
4874
+ archived_at: T.nilable(Time),
4463
4875
  billing_provider:
4464
4876
  MetronomeSDK::ContractV2::CustomerBillingProviderConfiguration::BillingProvider::OrSymbol,
4877
+ configuration: T::Hash[Symbol, T.anything],
4878
+ customer_id: String,
4465
4879
  delivery_method:
4466
- MetronomeSDK::ContractV2::CustomerBillingProviderConfiguration::DeliveryMethod::OrSymbol
4880
+ MetronomeSDK::ContractV2::CustomerBillingProviderConfiguration::DeliveryMethod::OrSymbol,
4881
+ delivery_method_configuration: T::Hash[Symbol, T.anything],
4882
+ delivery_method_id: String
4467
4883
  ).returns(T.attached_class)
4468
4884
  end
4469
4885
  def self.new(
4470
- # ID of Customer's billing provider configuration.
4886
+ # ID of this configuration; can be provided as the
4887
+ # billing_provider_configuration_id when creating a contract.
4471
4888
  id:,
4889
+ archived_at:,
4890
+ # The billing provider set for this configuration.
4472
4891
  billing_provider:,
4473
- delivery_method:
4892
+ # Configuration for the billing provider. The structure of this object is specific
4893
+ # to the billing provider.
4894
+ configuration:,
4895
+ customer_id:,
4896
+ # The method to use for delivering invoices to this customer.
4897
+ delivery_method:,
4898
+ # Configuration for the delivery method. The structure of this object is specific
4899
+ # to the delivery method.
4900
+ delivery_method_configuration:,
4901
+ # ID of the delivery method to use for this customer.
4902
+ delivery_method_id:
4474
4903
  )
4475
4904
  end
4476
4905
 
@@ -4478,16 +4907,22 @@ module MetronomeSDK
4478
4907
  override.returns(
4479
4908
  {
4480
4909
  id: String,
4910
+ archived_at: T.nilable(Time),
4481
4911
  billing_provider:
4482
4912
  MetronomeSDK::ContractV2::CustomerBillingProviderConfiguration::BillingProvider::TaggedSymbol,
4913
+ configuration: T::Hash[Symbol, T.anything],
4914
+ customer_id: String,
4483
4915
  delivery_method:
4484
- MetronomeSDK::ContractV2::CustomerBillingProviderConfiguration::DeliveryMethod::TaggedSymbol
4916
+ MetronomeSDK::ContractV2::CustomerBillingProviderConfiguration::DeliveryMethod::TaggedSymbol,
4917
+ delivery_method_configuration: T::Hash[Symbol, T.anything],
4918
+ delivery_method_id: String
4485
4919
  }
4486
4920
  )
4487
4921
  end
4488
4922
  def to_hash
4489
4923
  end
4490
4924
 
4925
+ # The billing provider set for this configuration.
4491
4926
  module BillingProvider
4492
4927
  extend MetronomeSDK::Internal::Type::Enum
4493
4928
 
@@ -4557,6 +4992,7 @@ module MetronomeSDK
4557
4992
  end
4558
4993
  end
4559
4994
 
4995
+ # The method to use for delivering invoices to this customer.
4560
4996
  module DeliveryMethod
4561
4997
  extend MetronomeSDK::Internal::Type::Enum
4562
4998
 
@@ -5303,6 +5739,26 @@ module MetronomeSDK
5303
5739
  end
5304
5740
  attr_writer :proration
5305
5741
 
5742
+ # Rounding configuration for prorated recurring commit amounts.
5743
+ sig do
5744
+ returns(
5745
+ T.nilable(
5746
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding
5747
+ )
5748
+ )
5749
+ end
5750
+ attr_reader :proration_rounding
5751
+
5752
+ sig do
5753
+ params(
5754
+ proration_rounding:
5755
+ T.nilable(
5756
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::OrHash
5757
+ )
5758
+ ).void
5759
+ end
5760
+ attr_writer :proration_rounding
5761
+
5306
5762
  # The frequency at which the recurring commits will be created. If not provided: -
5307
5763
  # The commits will be created on the usage invoice frequency. If provided: - The
5308
5764
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -5387,6 +5843,10 @@ module MetronomeSDK
5387
5843
  netsuite_sales_order_id: String,
5388
5844
  proration:
5389
5845
  MetronomeSDK::ContractV2::RecurringCommit::Proration::OrSymbol,
5846
+ proration_rounding:
5847
+ T.nilable(
5848
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::OrHash
5849
+ ),
5390
5850
  recurrence_frequency:
5391
5851
  MetronomeSDK::ContractV2::RecurringCommit::RecurrenceFrequency::OrSymbol,
5392
5852
  rollover_fraction: Float,
@@ -5428,6 +5888,8 @@ module MetronomeSDK
5428
5888
  # Determines whether the first and last commit will be prorated. If not provided,
5429
5889
  # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
5430
5890
  proration: nil,
5891
+ # Rounding configuration for prorated recurring commit amounts.
5892
+ proration_rounding: nil,
5431
5893
  # The frequency at which the recurring commits will be created. If not provided: -
5432
5894
  # The commits will be created on the usage invoice frequency. If provided: - The
5433
5895
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -5473,6 +5935,10 @@ module MetronomeSDK
5473
5935
  netsuite_sales_order_id: String,
5474
5936
  proration:
5475
5937
  MetronomeSDK::ContractV2::RecurringCommit::Proration::TaggedSymbol,
5938
+ proration_rounding:
5939
+ T.nilable(
5940
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding
5941
+ ),
5476
5942
  recurrence_frequency:
5477
5943
  MetronomeSDK::ContractV2::RecurringCommit::RecurrenceFrequency::TaggedSymbol,
5478
5944
  rollover_fraction: Float,
@@ -5769,27 +6235,276 @@ module MetronomeSDK
5769
6235
  end
5770
6236
  end
5771
6237
 
5772
- # The frequency at which the recurring commits will be created. If not provided: -
5773
- # The commits will be created on the usage invoice frequency. If provided: - The
5774
- # period defined in the duration will correspond to this frequency. - Commits will
5775
- # be created aligned with the recurring commit's starting_at rather than the usage
5776
- # invoice dates.
5777
- module RecurrenceFrequency
5778
- extend MetronomeSDK::Internal::Type::Enum
5779
-
5780
- TaggedSymbol =
6238
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
6239
+ OrHash =
5781
6240
  T.type_alias do
5782
- T.all(
5783
- Symbol,
5784
- MetronomeSDK::ContractV2::RecurringCommit::RecurrenceFrequency
6241
+ T.any(
6242
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding,
6243
+ MetronomeSDK::Internal::AnyHash
5785
6244
  )
5786
6245
  end
5787
- OrSymbol = T.type_alias { T.any(Symbol, String) }
5788
6246
 
5789
- MONTHLY =
5790
- T.let(
5791
- :MONTHLY,
5792
- MetronomeSDK::ContractV2::RecurringCommit::RecurrenceFrequency::TaggedSymbol
6247
+ sig do
6248
+ returns(
6249
+ T.nilable(
6250
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access
6251
+ )
6252
+ )
6253
+ end
6254
+ attr_reader :access
6255
+
6256
+ sig do
6257
+ params(
6258
+ access:
6259
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::OrHash
6260
+ ).void
6261
+ end
6262
+ attr_writer :access
6263
+
6264
+ sig do
6265
+ returns(
6266
+ T.nilable(
6267
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice
6268
+ )
6269
+ )
6270
+ end
6271
+ attr_reader :invoice
6272
+
6273
+ sig do
6274
+ params(
6275
+ invoice:
6276
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::OrHash
6277
+ ).void
6278
+ end
6279
+ attr_writer :invoice
6280
+
6281
+ # Rounding configuration for prorated recurring commit amounts.
6282
+ sig do
6283
+ params(
6284
+ access:
6285
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::OrHash,
6286
+ invoice:
6287
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::OrHash
6288
+ ).returns(T.attached_class)
6289
+ end
6290
+ def self.new(access: nil, invoice: nil)
6291
+ end
6292
+
6293
+ sig do
6294
+ override.returns(
6295
+ {
6296
+ access:
6297
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access,
6298
+ invoice:
6299
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice
6300
+ }
6301
+ )
6302
+ end
6303
+ def to_hash
6304
+ end
6305
+
6306
+ class Access < MetronomeSDK::Internal::Type::BaseModel
6307
+ OrHash =
6308
+ T.type_alias do
6309
+ T.any(
6310
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access,
6311
+ MetronomeSDK::Internal::AnyHash
6312
+ )
6313
+ end
6314
+
6315
+ # Number of decimal places to round to. Applied directly to the stored monetary
6316
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
6317
+ # nearest 100 in the stored unit).
6318
+ sig { returns(Float) }
6319
+ attr_accessor :decimal_places
6320
+
6321
+ sig do
6322
+ returns(
6323
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
6324
+ )
6325
+ end
6326
+ attr_accessor :rounding_method
6327
+
6328
+ sig do
6329
+ params(
6330
+ decimal_places: Float,
6331
+ rounding_method:
6332
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::RoundingMethod::OrSymbol
6333
+ ).returns(T.attached_class)
6334
+ end
6335
+ def self.new(
6336
+ # Number of decimal places to round to. Applied directly to the stored monetary
6337
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
6338
+ # nearest 100 in the stored unit).
6339
+ decimal_places:,
6340
+ rounding_method:
6341
+ )
6342
+ end
6343
+
6344
+ sig do
6345
+ override.returns(
6346
+ {
6347
+ decimal_places: Float,
6348
+ rounding_method:
6349
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
6350
+ }
6351
+ )
6352
+ end
6353
+ def to_hash
6354
+ end
6355
+
6356
+ module RoundingMethod
6357
+ extend MetronomeSDK::Internal::Type::Enum
6358
+
6359
+ TaggedSymbol =
6360
+ T.type_alias do
6361
+ T.all(
6362
+ Symbol,
6363
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::RoundingMethod
6364
+ )
6365
+ end
6366
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6367
+
6368
+ HALF_UP =
6369
+ T.let(
6370
+ :HALF_UP,
6371
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
6372
+ )
6373
+ FLOOR =
6374
+ T.let(
6375
+ :FLOOR,
6376
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
6377
+ )
6378
+ CEILING =
6379
+ T.let(
6380
+ :CEILING,
6381
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
6382
+ )
6383
+
6384
+ sig do
6385
+ override.returns(
6386
+ T::Array[
6387
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
6388
+ ]
6389
+ )
6390
+ end
6391
+ def self.values
6392
+ end
6393
+ end
6394
+ end
6395
+
6396
+ class Invoice < MetronomeSDK::Internal::Type::BaseModel
6397
+ OrHash =
6398
+ T.type_alias do
6399
+ T.any(
6400
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice,
6401
+ MetronomeSDK::Internal::AnyHash
6402
+ )
6403
+ end
6404
+
6405
+ # Number of decimal places to round to. Applied directly to the stored monetary
6406
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
6407
+ # nearest 100 in the stored unit).
6408
+ sig { returns(Float) }
6409
+ attr_accessor :decimal_places
6410
+
6411
+ sig do
6412
+ returns(
6413
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
6414
+ )
6415
+ end
6416
+ attr_accessor :rounding_method
6417
+
6418
+ sig do
6419
+ params(
6420
+ decimal_places: Float,
6421
+ rounding_method:
6422
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::RoundingMethod::OrSymbol
6423
+ ).returns(T.attached_class)
6424
+ end
6425
+ def self.new(
6426
+ # Number of decimal places to round to. Applied directly to the stored monetary
6427
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
6428
+ # nearest 100 in the stored unit).
6429
+ decimal_places:,
6430
+ rounding_method:
6431
+ )
6432
+ end
6433
+
6434
+ sig do
6435
+ override.returns(
6436
+ {
6437
+ decimal_places: Float,
6438
+ rounding_method:
6439
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
6440
+ }
6441
+ )
6442
+ end
6443
+ def to_hash
6444
+ end
6445
+
6446
+ module RoundingMethod
6447
+ extend MetronomeSDK::Internal::Type::Enum
6448
+
6449
+ TaggedSymbol =
6450
+ T.type_alias do
6451
+ T.all(
6452
+ Symbol,
6453
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::RoundingMethod
6454
+ )
6455
+ end
6456
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6457
+
6458
+ HALF_UP =
6459
+ T.let(
6460
+ :HALF_UP,
6461
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
6462
+ )
6463
+ FLOOR =
6464
+ T.let(
6465
+ :FLOOR,
6466
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
6467
+ )
6468
+ CEILING =
6469
+ T.let(
6470
+ :CEILING,
6471
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
6472
+ )
6473
+
6474
+ sig do
6475
+ override.returns(
6476
+ T::Array[
6477
+ MetronomeSDK::ContractV2::RecurringCommit::ProrationRounding::Invoice::RoundingMethod::TaggedSymbol
6478
+ ]
6479
+ )
6480
+ end
6481
+ def self.values
6482
+ end
6483
+ end
6484
+ end
6485
+ end
6486
+
6487
+ # The frequency at which the recurring commits will be created. If not provided: -
6488
+ # The commits will be created on the usage invoice frequency. If provided: - The
6489
+ # period defined in the duration will correspond to this frequency. - Commits will
6490
+ # be created aligned with the recurring commit's starting_at rather than the usage
6491
+ # invoice dates.
6492
+ module RecurrenceFrequency
6493
+ extend MetronomeSDK::Internal::Type::Enum
6494
+
6495
+ TaggedSymbol =
6496
+ T.type_alias do
6497
+ T.all(
6498
+ Symbol,
6499
+ MetronomeSDK::ContractV2::RecurringCommit::RecurrenceFrequency
6500
+ )
6501
+ end
6502
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
6503
+
6504
+ MONTHLY =
6505
+ T.let(
6506
+ :MONTHLY,
6507
+ MetronomeSDK::ContractV2::RecurringCommit::RecurrenceFrequency::TaggedSymbol
5793
6508
  )
5794
6509
  QUARTERLY =
5795
6510
  T.let(
@@ -5806,6 +6521,11 @@ module MetronomeSDK
5806
6521
  :WEEKLY,
5807
6522
  MetronomeSDK::ContractV2::RecurringCommit::RecurrenceFrequency::TaggedSymbol
5808
6523
  )
6524
+ DAILY =
6525
+ T.let(
6526
+ :DAILY,
6527
+ MetronomeSDK::ContractV2::RecurringCommit::RecurrenceFrequency::TaggedSymbol
6528
+ )
5809
6529
 
5810
6530
  sig do
5811
6531
  override.returns(
@@ -5971,6 +6691,26 @@ module MetronomeSDK
5971
6691
  end
5972
6692
  attr_writer :proration
5973
6693
 
6694
+ # Rounding configuration for prorated recurring credit amounts.
6695
+ sig do
6696
+ returns(
6697
+ T.nilable(
6698
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding
6699
+ )
6700
+ )
6701
+ end
6702
+ attr_reader :proration_rounding
6703
+
6704
+ sig do
6705
+ params(
6706
+ proration_rounding:
6707
+ T.nilable(
6708
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::OrHash
6709
+ )
6710
+ ).void
6711
+ end
6712
+ attr_writer :proration_rounding
6713
+
5974
6714
  # The frequency at which the recurring commits will be created. If not provided: -
5975
6715
  # The commits will be created on the usage invoice frequency. If provided: - The
5976
6716
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -6053,6 +6793,10 @@ module MetronomeSDK
6053
6793
  netsuite_sales_order_id: String,
6054
6794
  proration:
6055
6795
  MetronomeSDK::ContractV2::RecurringCredit::Proration::OrSymbol,
6796
+ proration_rounding:
6797
+ T.nilable(
6798
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::OrHash
6799
+ ),
6056
6800
  recurrence_frequency:
6057
6801
  MetronomeSDK::ContractV2::RecurringCredit::RecurrenceFrequency::OrSymbol,
6058
6802
  rollover_fraction: Float,
@@ -6092,6 +6836,8 @@ module MetronomeSDK
6092
6836
  # Determines whether the first and last commit will be prorated. If not provided,
6093
6837
  # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
6094
6838
  proration: nil,
6839
+ # Rounding configuration for prorated recurring credit amounts.
6840
+ proration_rounding: nil,
6095
6841
  # The frequency at which the recurring commits will be created. If not provided: -
6096
6842
  # The commits will be created on the usage invoice frequency. If provided: - The
6097
6843
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -6135,6 +6881,10 @@ module MetronomeSDK
6135
6881
  netsuite_sales_order_id: String,
6136
6882
  proration:
6137
6883
  MetronomeSDK::ContractV2::RecurringCredit::Proration::TaggedSymbol,
6884
+ proration_rounding:
6885
+ T.nilable(
6886
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding
6887
+ ),
6138
6888
  recurrence_frequency:
6139
6889
  MetronomeSDK::ContractV2::RecurringCredit::RecurrenceFrequency::TaggedSymbol,
6140
6890
  rollover_fraction: Float,
@@ -6393,6 +7143,144 @@ module MetronomeSDK
6393
7143
  end
6394
7144
  end
6395
7145
 
7146
+ class ProrationRounding < MetronomeSDK::Internal::Type::BaseModel
7147
+ OrHash =
7148
+ T.type_alias do
7149
+ T.any(
7150
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding,
7151
+ MetronomeSDK::Internal::AnyHash
7152
+ )
7153
+ end
7154
+
7155
+ sig do
7156
+ returns(
7157
+ T.nilable(
7158
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access
7159
+ )
7160
+ )
7161
+ end
7162
+ attr_reader :access
7163
+
7164
+ sig do
7165
+ params(
7166
+ access:
7167
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::OrHash
7168
+ ).void
7169
+ end
7170
+ attr_writer :access
7171
+
7172
+ # Rounding configuration for prorated recurring credit amounts.
7173
+ sig do
7174
+ params(
7175
+ access:
7176
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::OrHash
7177
+ ).returns(T.attached_class)
7178
+ end
7179
+ def self.new(access: nil)
7180
+ end
7181
+
7182
+ sig do
7183
+ override.returns(
7184
+ {
7185
+ access:
7186
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access
7187
+ }
7188
+ )
7189
+ end
7190
+ def to_hash
7191
+ end
7192
+
7193
+ class Access < MetronomeSDK::Internal::Type::BaseModel
7194
+ OrHash =
7195
+ T.type_alias do
7196
+ T.any(
7197
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access,
7198
+ MetronomeSDK::Internal::AnyHash
7199
+ )
7200
+ end
7201
+
7202
+ # Number of decimal places to round to. Applied directly to the stored monetary
7203
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
7204
+ # nearest 100 in the stored unit).
7205
+ sig { returns(Float) }
7206
+ attr_accessor :decimal_places
7207
+
7208
+ sig do
7209
+ returns(
7210
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
7211
+ )
7212
+ end
7213
+ attr_accessor :rounding_method
7214
+
7215
+ sig do
7216
+ params(
7217
+ decimal_places: Float,
7218
+ rounding_method:
7219
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::RoundingMethod::OrSymbol
7220
+ ).returns(T.attached_class)
7221
+ end
7222
+ def self.new(
7223
+ # Number of decimal places to round to. Applied directly to the stored monetary
7224
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
7225
+ # nearest 100 in the stored unit).
7226
+ decimal_places:,
7227
+ rounding_method:
7228
+ )
7229
+ end
7230
+
7231
+ sig do
7232
+ override.returns(
7233
+ {
7234
+ decimal_places: Float,
7235
+ rounding_method:
7236
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
7237
+ }
7238
+ )
7239
+ end
7240
+ def to_hash
7241
+ end
7242
+
7243
+ module RoundingMethod
7244
+ extend MetronomeSDK::Internal::Type::Enum
7245
+
7246
+ TaggedSymbol =
7247
+ T.type_alias do
7248
+ T.all(
7249
+ Symbol,
7250
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::RoundingMethod
7251
+ )
7252
+ end
7253
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7254
+
7255
+ HALF_UP =
7256
+ T.let(
7257
+ :HALF_UP,
7258
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
7259
+ )
7260
+ FLOOR =
7261
+ T.let(
7262
+ :FLOOR,
7263
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
7264
+ )
7265
+ CEILING =
7266
+ T.let(
7267
+ :CEILING,
7268
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
7269
+ )
7270
+
7271
+ sig do
7272
+ override.returns(
7273
+ T::Array[
7274
+ MetronomeSDK::ContractV2::RecurringCredit::ProrationRounding::Access::RoundingMethod::TaggedSymbol
7275
+ ]
7276
+ )
7277
+ end
7278
+ def self.values
7279
+ end
7280
+ end
7281
+ end
7282
+ end
7283
+
6396
7284
  # The frequency at which the recurring commits will be created. If not provided: -
6397
7285
  # The commits will be created on the usage invoice frequency. If provided: - The
6398
7286
  # period defined in the duration will correspond to this frequency. - Commits will
@@ -6430,6 +7318,11 @@ module MetronomeSDK
6430
7318
  :WEEKLY,
6431
7319
  MetronomeSDK::ContractV2::RecurringCredit::RecurrenceFrequency::TaggedSymbol
6432
7320
  )
7321
+ DAILY =
7322
+ T.let(
7323
+ :DAILY,
7324
+ MetronomeSDK::ContractV2::RecurringCredit::RecurrenceFrequency::TaggedSymbol
7325
+ )
6433
7326
 
6434
7327
  sig do
6435
7328
  override.returns(
@@ -6595,119 +7488,382 @@ module MetronomeSDK
6595
7488
  sig { params(ending_before: Time).void }
6596
7489
  attr_writer :ending_before
6597
7490
 
6598
- sig { returns(T.nilable(String)) }
6599
- attr_reader :gcp_account_id
7491
+ sig { returns(T.nilable(String)) }
7492
+ attr_reader :gcp_account_id
7493
+
7494
+ sig { params(gcp_account_id: String).void }
7495
+ attr_writer :gcp_account_id
7496
+
7497
+ sig { returns(T.nilable(String)) }
7498
+ attr_reader :gcp_offer_id
7499
+
7500
+ sig { params(gcp_offer_id: String).void }
7501
+ attr_writer :gcp_offer_id
7502
+
7503
+ sig { returns(T.nilable(Float)) }
7504
+ attr_reader :reseller_contract_value
7505
+
7506
+ sig { params(reseller_contract_value: Float).void }
7507
+ attr_writer :reseller_contract_value
7508
+
7509
+ sig do
7510
+ params(
7511
+ fraction: Float,
7512
+ netsuite_reseller_id: String,
7513
+ reseller_type:
7514
+ MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::OrSymbol,
7515
+ starting_at: Time,
7516
+ applicable_product_ids: T::Array[String],
7517
+ applicable_product_tags: T::Array[String],
7518
+ aws_account_number: String,
7519
+ aws_offer_id: String,
7520
+ aws_payer_reference_id: String,
7521
+ ending_before: Time,
7522
+ gcp_account_id: String,
7523
+ gcp_offer_id: String,
7524
+ reseller_contract_value: Float
7525
+ ).returns(T.attached_class)
7526
+ end
7527
+ def self.new(
7528
+ fraction:,
7529
+ netsuite_reseller_id:,
7530
+ reseller_type:,
7531
+ starting_at:,
7532
+ applicable_product_ids: nil,
7533
+ applicable_product_tags: nil,
7534
+ aws_account_number: nil,
7535
+ aws_offer_id: nil,
7536
+ aws_payer_reference_id: nil,
7537
+ ending_before: nil,
7538
+ gcp_account_id: nil,
7539
+ gcp_offer_id: nil,
7540
+ reseller_contract_value: nil
7541
+ )
7542
+ end
7543
+
7544
+ sig do
7545
+ override.returns(
7546
+ {
7547
+ fraction: Float,
7548
+ netsuite_reseller_id: String,
7549
+ reseller_type:
7550
+ MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol,
7551
+ starting_at: Time,
7552
+ applicable_product_ids: T::Array[String],
7553
+ applicable_product_tags: T::Array[String],
7554
+ aws_account_number: String,
7555
+ aws_offer_id: String,
7556
+ aws_payer_reference_id: String,
7557
+ ending_before: Time,
7558
+ gcp_account_id: String,
7559
+ gcp_offer_id: String,
7560
+ reseller_contract_value: Float
7561
+ }
7562
+ )
7563
+ end
7564
+ def to_hash
7565
+ end
7566
+
7567
+ module ResellerType
7568
+ extend MetronomeSDK::Internal::Type::Enum
7569
+
7570
+ TaggedSymbol =
7571
+ T.type_alias do
7572
+ T.all(
7573
+ Symbol,
7574
+ MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType
7575
+ )
7576
+ end
7577
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7578
+
7579
+ AWS =
7580
+ T.let(
7581
+ :AWS,
7582
+ MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7583
+ )
7584
+ AWS_PRO_SERVICE =
7585
+ T.let(
7586
+ :AWS_PRO_SERVICE,
7587
+ MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7588
+ )
7589
+ GCP =
7590
+ T.let(
7591
+ :GCP,
7592
+ MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7593
+ )
7594
+ GCP_PRO_SERVICE =
7595
+ T.let(
7596
+ :GCP_PRO_SERVICE,
7597
+ MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7598
+ )
7599
+
7600
+ sig do
7601
+ override.returns(
7602
+ T::Array[
7603
+ MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7604
+ ]
7605
+ )
7606
+ end
7607
+ def self.values
7608
+ end
7609
+ end
7610
+ end
7611
+ end
7612
+
7613
+ class RevenueSystemConfigurationSchedule < MetronomeSDK::Internal::Type::BaseModel
7614
+ OrHash =
7615
+ T.type_alias do
7616
+ T.any(
7617
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule,
7618
+ MetronomeSDK::Internal::AnyHash
7619
+ )
7620
+ end
7621
+
7622
+ # The date this revenue system configuration became or becomes active.
7623
+ sig { returns(Time) }
7624
+ attr_accessor :effective_at
7625
+
7626
+ sig do
7627
+ returns(
7628
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration
7629
+ )
7630
+ end
7631
+ attr_reader :revenue_system_configuration
7632
+
7633
+ sig do
7634
+ params(
7635
+ revenue_system_configuration:
7636
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::OrHash
7637
+ ).void
7638
+ end
7639
+ attr_writer :revenue_system_configuration
7640
+
7641
+ # The date this revenue system configuration is superseded by the next entry. Null
7642
+ # for the last entry in the schedule.
7643
+ sig { returns(T.nilable(Time)) }
7644
+ attr_reader :effective_until
7645
+
7646
+ sig { params(effective_until: Time).void }
7647
+ attr_writer :effective_until
7648
+
7649
+ sig do
7650
+ params(
7651
+ effective_at: Time,
7652
+ revenue_system_configuration:
7653
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::OrHash,
7654
+ effective_until: Time
7655
+ ).returns(T.attached_class)
7656
+ end
7657
+ def self.new(
7658
+ # The date this revenue system configuration became or becomes active.
7659
+ effective_at:,
7660
+ revenue_system_configuration:,
7661
+ # The date this revenue system configuration is superseded by the next entry. Null
7662
+ # for the last entry in the schedule.
7663
+ effective_until: nil
7664
+ )
7665
+ end
7666
+
7667
+ sig do
7668
+ override.returns(
7669
+ {
7670
+ effective_at: Time,
7671
+ revenue_system_configuration:
7672
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration,
7673
+ effective_until: Time
7674
+ }
7675
+ )
7676
+ end
7677
+ def to_hash
7678
+ end
7679
+
7680
+ class RevenueSystemConfiguration < MetronomeSDK::Internal::Type::BaseModel
7681
+ OrHash =
7682
+ T.type_alias do
7683
+ T.any(
7684
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration,
7685
+ MetronomeSDK::Internal::AnyHash
7686
+ )
7687
+ end
7688
+
7689
+ # ID of the revenue system configuration.
7690
+ sig { returns(String) }
7691
+ attr_accessor :id
7692
+
7693
+ # Configuration for the revenue system. The structure of this object is specific
7694
+ # to the provider.
7695
+ sig { returns(T::Hash[Symbol, T.anything]) }
7696
+ attr_accessor :configuration
7697
+
7698
+ sig { returns(String) }
7699
+ attr_accessor :customer_id
7700
+
7701
+ # ID of the delivery method used for this customer configuration.
7702
+ sig { returns(String) }
7703
+ attr_accessor :delivery_method_id
7704
+
7705
+ # The revenue system provider (e.g. netsuite).
7706
+ sig do
7707
+ returns(
7708
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::Provider::TaggedSymbol
7709
+ )
7710
+ end
7711
+ attr_accessor :provider
6600
7712
 
6601
- sig { params(gcp_account_id: String).void }
6602
- attr_writer :gcp_account_id
7713
+ sig { returns(T.nilable(Time)) }
7714
+ attr_accessor :archived_at
6603
7715
 
6604
- sig { returns(T.nilable(String)) }
6605
- attr_reader :gcp_offer_id
7716
+ # The method to use for delivering data to the revenue system.
7717
+ sig do
7718
+ returns(
7719
+ T.nilable(
7720
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod::TaggedSymbol
7721
+ )
7722
+ )
7723
+ end
7724
+ attr_reader :delivery_method
6606
7725
 
6607
- sig { params(gcp_offer_id: String).void }
6608
- attr_writer :gcp_offer_id
7726
+ sig do
7727
+ params(
7728
+ delivery_method:
7729
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod::OrSymbol
7730
+ ).void
7731
+ end
7732
+ attr_writer :delivery_method
6609
7733
 
6610
- sig { returns(T.nilable(Float)) }
6611
- attr_reader :reseller_contract_value
7734
+ # Configuration for the delivery method. The structure of this object is specific
7735
+ # to the delivery method.
7736
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
7737
+ attr_reader :delivery_method_configuration
6612
7738
 
6613
- sig { params(reseller_contract_value: Float).void }
6614
- attr_writer :reseller_contract_value
7739
+ sig do
7740
+ params(
7741
+ delivery_method_configuration: T::Hash[Symbol, T.anything]
7742
+ ).void
7743
+ end
7744
+ attr_writer :delivery_method_configuration
6615
7745
 
6616
7746
  sig do
6617
7747
  params(
6618
- fraction: Float,
6619
- netsuite_reseller_id: String,
6620
- reseller_type:
6621
- MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::OrSymbol,
6622
- starting_at: Time,
6623
- applicable_product_ids: T::Array[String],
6624
- applicable_product_tags: T::Array[String],
6625
- aws_account_number: String,
6626
- aws_offer_id: String,
6627
- aws_payer_reference_id: String,
6628
- ending_before: Time,
6629
- gcp_account_id: String,
6630
- gcp_offer_id: String,
6631
- reseller_contract_value: Float
7748
+ id: String,
7749
+ configuration: T::Hash[Symbol, T.anything],
7750
+ customer_id: String,
7751
+ delivery_method_id: String,
7752
+ provider:
7753
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::Provider::OrSymbol,
7754
+ archived_at: T.nilable(Time),
7755
+ delivery_method:
7756
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod::OrSymbol,
7757
+ delivery_method_configuration: T::Hash[Symbol, T.anything]
6632
7758
  ).returns(T.attached_class)
6633
7759
  end
6634
7760
  def self.new(
6635
- fraction:,
6636
- netsuite_reseller_id:,
6637
- reseller_type:,
6638
- starting_at:,
6639
- applicable_product_ids: nil,
6640
- applicable_product_tags: nil,
6641
- aws_account_number: nil,
6642
- aws_offer_id: nil,
6643
- aws_payer_reference_id: nil,
6644
- ending_before: nil,
6645
- gcp_account_id: nil,
6646
- gcp_offer_id: nil,
6647
- reseller_contract_value: nil
7761
+ # ID of the revenue system configuration.
7762
+ id:,
7763
+ # Configuration for the revenue system. The structure of this object is specific
7764
+ # to the provider.
7765
+ configuration:,
7766
+ customer_id:,
7767
+ # ID of the delivery method used for this customer configuration.
7768
+ delivery_method_id:,
7769
+ # The revenue system provider (e.g. netsuite).
7770
+ provider:,
7771
+ archived_at: nil,
7772
+ # The method to use for delivering data to the revenue system.
7773
+ delivery_method: nil,
7774
+ # Configuration for the delivery method. The structure of this object is specific
7775
+ # to the delivery method.
7776
+ delivery_method_configuration: nil
6648
7777
  )
6649
7778
  end
6650
7779
 
6651
7780
  sig do
6652
7781
  override.returns(
6653
7782
  {
6654
- fraction: Float,
6655
- netsuite_reseller_id: String,
6656
- reseller_type:
6657
- MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol,
6658
- starting_at: Time,
6659
- applicable_product_ids: T::Array[String],
6660
- applicable_product_tags: T::Array[String],
6661
- aws_account_number: String,
6662
- aws_offer_id: String,
6663
- aws_payer_reference_id: String,
6664
- ending_before: Time,
6665
- gcp_account_id: String,
6666
- gcp_offer_id: String,
6667
- reseller_contract_value: Float
7783
+ id: String,
7784
+ configuration: T::Hash[Symbol, T.anything],
7785
+ customer_id: String,
7786
+ delivery_method_id: String,
7787
+ provider:
7788
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::Provider::TaggedSymbol,
7789
+ archived_at: T.nilable(Time),
7790
+ delivery_method:
7791
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod::TaggedSymbol,
7792
+ delivery_method_configuration: T::Hash[Symbol, T.anything]
6668
7793
  }
6669
7794
  )
6670
7795
  end
6671
7796
  def to_hash
6672
7797
  end
6673
7798
 
6674
- module ResellerType
7799
+ # The revenue system provider (e.g. netsuite).
7800
+ module Provider
6675
7801
  extend MetronomeSDK::Internal::Type::Enum
6676
7802
 
6677
7803
  TaggedSymbol =
6678
7804
  T.type_alias do
6679
7805
  T.all(
6680
7806
  Symbol,
6681
- MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType
7807
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::Provider
6682
7808
  )
6683
7809
  end
6684
7810
  OrSymbol = T.type_alias { T.any(Symbol, String) }
6685
7811
 
6686
- AWS =
7812
+ NETSUITE =
6687
7813
  T.let(
6688
- :AWS,
6689
- MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7814
+ :netsuite,
7815
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::Provider::TaggedSymbol
6690
7816
  )
6691
- AWS_PRO_SERVICE =
7817
+
7818
+ sig do
7819
+ override.returns(
7820
+ T::Array[
7821
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::Provider::TaggedSymbol
7822
+ ]
7823
+ )
7824
+ end
7825
+ def self.values
7826
+ end
7827
+ end
7828
+
7829
+ # The method to use for delivering data to the revenue system.
7830
+ module DeliveryMethod
7831
+ extend MetronomeSDK::Internal::Type::Enum
7832
+
7833
+ TaggedSymbol =
7834
+ T.type_alias do
7835
+ T.all(
7836
+ Symbol,
7837
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod
7838
+ )
7839
+ end
7840
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
7841
+
7842
+ DIRECT_TO_BILLING_PROVIDER =
6692
7843
  T.let(
6693
- :AWS_PRO_SERVICE,
6694
- MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7844
+ :direct_to_billing_provider,
7845
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod::TaggedSymbol
6695
7846
  )
6696
- GCP =
7847
+ AWS_SQS =
6697
7848
  T.let(
6698
- :GCP,
6699
- MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7849
+ :aws_sqs,
7850
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod::TaggedSymbol
6700
7851
  )
6701
- GCP_PRO_SERVICE =
7852
+ TACKLE =
6702
7853
  T.let(
6703
- :GCP_PRO_SERVICE,
6704
- MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7854
+ :tackle,
7855
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod::TaggedSymbol
7856
+ )
7857
+ AWS_SNS =
7858
+ T.let(
7859
+ :aws_sns,
7860
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod::TaggedSymbol
6705
7861
  )
6706
7862
 
6707
7863
  sig do
6708
7864
  override.returns(
6709
7865
  T::Array[
6710
- MetronomeSDK::ContractV2::ResellerRoyalty::Segment::ResellerType::TaggedSymbol
7866
+ MetronomeSDK::ContractV2::RevenueSystemConfigurationSchedule::RevenueSystemConfiguration::DeliveryMethod::TaggedSymbol
6711
7867
  ]
6712
7868
  )
6713
7869
  end
@@ -7174,6 +8330,23 @@ module MetronomeSDK
7174
8330
  sig { params(id: String).void }
7175
8331
  attr_writer :id
7176
8332
 
8333
+ sig do
8334
+ returns(
8335
+ T.nilable(
8336
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig
8337
+ )
8338
+ )
8339
+ end
8340
+ attr_reader :billing_cycle_config
8341
+
8342
+ sig do
8343
+ params(
8344
+ billing_cycle_config:
8345
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig::OrHash
8346
+ ).void
8347
+ end
8348
+ attr_writer :billing_cycle_config
8349
+
7177
8350
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
7178
8351
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
7179
8352
  attr_reader :custom_fields
@@ -7236,6 +8409,8 @@ module MetronomeSDK
7236
8409
  subscription_rate:
7237
8410
  MetronomeSDK::ContractV2::Subscription::SubscriptionRate::OrHash,
7238
8411
  id: String,
8412
+ billing_cycle_config:
8413
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig::OrHash,
7239
8414
  custom_fields: T::Hash[Symbol, String],
7240
8415
  description: String,
7241
8416
  ending_before: Time,
@@ -7266,6 +8441,7 @@ module MetronomeSDK
7266
8441
  starting_at:,
7267
8442
  subscription_rate:,
7268
8443
  id: nil,
8444
+ billing_cycle_config: nil,
7269
8445
  # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
7270
8446
  custom_fields: nil,
7271
8447
  description: nil,
@@ -7294,6 +8470,8 @@ module MetronomeSDK
7294
8470
  subscription_rate:
7295
8471
  MetronomeSDK::ContractV2::Subscription::SubscriptionRate,
7296
8472
  id: String,
8473
+ billing_cycle_config:
8474
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig,
7297
8475
  custom_fields: T::Hash[Symbol, String],
7298
8476
  description: String,
7299
8477
  ending_before: Time,
@@ -7533,14 +8711,33 @@ module MetronomeSDK
7533
8711
  sig { returns(T::Boolean) }
7534
8712
  attr_accessor :is_prorated
7535
8713
 
8714
+ sig do
8715
+ returns(
8716
+ T.nilable(
8717
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding
8718
+ )
8719
+ )
8720
+ end
8721
+ attr_reader :rounding
8722
+
8723
+ sig do
8724
+ params(
8725
+ rounding:
8726
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::OrHash
8727
+ ).void
8728
+ end
8729
+ attr_writer :rounding
8730
+
7536
8731
  sig do
7537
8732
  params(
7538
8733
  invoice_behavior:
7539
8734
  MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior::OrSymbol,
7540
- is_prorated: T::Boolean
8735
+ is_prorated: T::Boolean,
8736
+ rounding:
8737
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::OrHash
7541
8738
  ).returns(T.attached_class)
7542
8739
  end
7543
- def self.new(invoice_behavior:, is_prorated:)
8740
+ def self.new(invoice_behavior:, is_prorated:, rounding: nil)
7544
8741
  end
7545
8742
 
7546
8743
  sig do
@@ -7548,7 +8745,9 @@ module MetronomeSDK
7548
8745
  {
7549
8746
  invoice_behavior:
7550
8747
  MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior::TaggedSymbol,
7551
- is_prorated: T::Boolean
8748
+ is_prorated: T::Boolean,
8749
+ rounding:
8750
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding
7552
8751
  }
7553
8752
  )
7554
8753
  end
@@ -7588,6 +8787,96 @@ module MetronomeSDK
7588
8787
  def self.values
7589
8788
  end
7590
8789
  end
8790
+
8791
+ class Rounding < MetronomeSDK::Internal::Type::BaseModel
8792
+ OrHash =
8793
+ T.type_alias do
8794
+ T.any(
8795
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding,
8796
+ MetronomeSDK::Internal::AnyHash
8797
+ )
8798
+ end
8799
+
8800
+ # Number of decimal places to round to. Applied directly to the stored monetary
8801
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
8802
+ # nearest 100 in the stored unit).
8803
+ sig { returns(Float) }
8804
+ attr_accessor :decimal_places
8805
+
8806
+ sig do
8807
+ returns(
8808
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
8809
+ )
8810
+ end
8811
+ attr_accessor :rounding_method
8812
+
8813
+ sig do
8814
+ params(
8815
+ decimal_places: Float,
8816
+ rounding_method:
8817
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::RoundingMethod::OrSymbol
8818
+ ).returns(T.attached_class)
8819
+ end
8820
+ def self.new(
8821
+ # Number of decimal places to round to. Applied directly to the stored monetary
8822
+ # representation. Negative values round to powers of 10 (e.g., -2 rounds to
8823
+ # nearest 100 in the stored unit).
8824
+ decimal_places:,
8825
+ rounding_method:
8826
+ )
8827
+ end
8828
+
8829
+ sig do
8830
+ override.returns(
8831
+ {
8832
+ decimal_places: Float,
8833
+ rounding_method:
8834
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
8835
+ }
8836
+ )
8837
+ end
8838
+ def to_hash
8839
+ end
8840
+
8841
+ module RoundingMethod
8842
+ extend MetronomeSDK::Internal::Type::Enum
8843
+
8844
+ TaggedSymbol =
8845
+ T.type_alias do
8846
+ T.all(
8847
+ Symbol,
8848
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::RoundingMethod
8849
+ )
8850
+ end
8851
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
8852
+
8853
+ HALF_UP =
8854
+ T.let(
8855
+ :HALF_UP,
8856
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
8857
+ )
8858
+ FLOOR =
8859
+ T.let(
8860
+ :FLOOR,
8861
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
8862
+ )
8863
+ CEILING =
8864
+ T.let(
8865
+ :CEILING,
8866
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
8867
+ )
8868
+
8869
+ sig do
8870
+ override.returns(
8871
+ T::Array[
8872
+ MetronomeSDK::ContractV2::Subscription::Proration::Rounding::RoundingMethod::TaggedSymbol
8873
+ ]
8874
+ )
8875
+ end
8876
+ def self.values
8877
+ end
8878
+ end
8879
+ end
7591
8880
  end
7592
8881
 
7593
8882
  # Determines how the subscription's quantity is controlled. Defaults to
@@ -7797,6 +9086,93 @@ module MetronomeSDK
7797
9086
  end
7798
9087
  end
7799
9088
 
9089
+ class BillingCycleConfig < MetronomeSDK::Internal::Type::BaseModel
9090
+ OrHash =
9091
+ T.type_alias do
9092
+ T.any(
9093
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig,
9094
+ MetronomeSDK::Internal::AnyHash
9095
+ )
9096
+ end
9097
+
9098
+ # The date this subscription's billing cycle is anchored to.
9099
+ sig { returns(Time) }
9100
+ attr_accessor :anchor_date
9101
+
9102
+ # Controls whether this subscription consolidates onto usage invoices or gets its
9103
+ # own scheduled invoice.
9104
+ sig do
9105
+ returns(
9106
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
9107
+ )
9108
+ end
9109
+ attr_accessor :invoice_placement
9110
+
9111
+ sig do
9112
+ params(
9113
+ anchor_date: Time,
9114
+ invoice_placement:
9115
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig::InvoicePlacement::OrSymbol
9116
+ ).returns(T.attached_class)
9117
+ end
9118
+ def self.new(
9119
+ # The date this subscription's billing cycle is anchored to.
9120
+ anchor_date:,
9121
+ # Controls whether this subscription consolidates onto usage invoices or gets its
9122
+ # own scheduled invoice.
9123
+ invoice_placement:
9124
+ )
9125
+ end
9126
+
9127
+ sig do
9128
+ override.returns(
9129
+ {
9130
+ anchor_date: Time,
9131
+ invoice_placement:
9132
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
9133
+ }
9134
+ )
9135
+ end
9136
+ def to_hash
9137
+ end
9138
+
9139
+ # Controls whether this subscription consolidates onto usage invoices or gets its
9140
+ # own scheduled invoice.
9141
+ module InvoicePlacement
9142
+ extend MetronomeSDK::Internal::Type::Enum
9143
+
9144
+ TaggedSymbol =
9145
+ T.type_alias do
9146
+ T.all(
9147
+ Symbol,
9148
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig::InvoicePlacement
9149
+ )
9150
+ end
9151
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
9152
+
9153
+ ON_SCHEDULED_INVOICE =
9154
+ T.let(
9155
+ :ON_SCHEDULED_INVOICE,
9156
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
9157
+ )
9158
+ ON_USAGE_INVOICE =
9159
+ T.let(
9160
+ :ON_USAGE_INVOICE,
9161
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
9162
+ )
9163
+
9164
+ sig do
9165
+ override.returns(
9166
+ T::Array[
9167
+ MetronomeSDK::ContractV2::Subscription::BillingCycleConfig::InvoicePlacement::TaggedSymbol
9168
+ ]
9169
+ )
9170
+ end
9171
+ def self.values
9172
+ end
9173
+ end
9174
+ end
9175
+
7800
9176
  class SeatConfig < MetronomeSDK::Internal::Type::BaseModel
7801
9177
  OrHash =
7802
9178
  T.type_alias do