metronome-sdk 3.6.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/type/enum.rb +0 -25
  5. data/lib/metronome_sdk/models/commit.rb +27 -1
  6. data/lib/metronome_sdk/models/contract.rb +140 -1
  7. data/lib/metronome_sdk/models/contract_v2.rb +168 -2
  8. data/lib/metronome_sdk/models/contract_without_amendments.rb +142 -1
  9. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +105 -2
  10. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +103 -2
  11. data/lib/metronome_sdk/models/spend_threshold_configuration.rb +33 -1
  12. data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +33 -1
  13. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +29 -1
  14. data/lib/metronome_sdk/models/v1/contract_create_params.rb +146 -2
  15. data/lib/metronome_sdk/models/v1/contract_create_response.rb +1134 -3
  16. data/lib/metronome_sdk/models/v1/package_create_params.rb +115 -1
  17. data/lib/metronome_sdk/models/v1/package_list_response.rb +110 -1
  18. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +114 -1
  19. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +303 -5
  20. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +3862 -3
  21. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +145 -3
  22. data/lib/metronome_sdk/resources/v1/contracts.rb +3 -1
  23. data/lib/metronome_sdk/resources/v1/packages.rb +6 -5
  24. data/lib/metronome_sdk/resources/v1.rb +0 -4
  25. data/lib/metronome_sdk/resources/v2/contracts.rb +5 -1
  26. data/lib/metronome_sdk/version.rb +1 -1
  27. data/lib/metronome_sdk.rb +0 -8
  28. data/rbi/metronome_sdk/models/commit.rbi +48 -0
  29. data/rbi/metronome_sdk/models/contract.rbi +354 -0
  30. data/rbi/metronome_sdk/models/contract_v2.rbi +409 -0
  31. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +368 -0
  32. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +289 -6
  33. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +283 -6
  34. data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +78 -3
  35. data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +78 -3
  36. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +54 -0
  37. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +368 -0
  38. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +2448 -4
  39. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +310 -0
  40. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +307 -0
  41. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +307 -0
  42. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +734 -11
  43. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +8612 -4
  44. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +359 -11
  45. data/rbi/metronome_sdk/resources/v1/contracts.rbi +7 -0
  46. data/rbi/metronome_sdk/resources/v1/packages.rbi +8 -4
  47. data/rbi/metronome_sdk/resources/v1.rbi +0 -3
  48. data/rbi/metronome_sdk/resources/v2/contracts.rbi +10 -0
  49. data/sig/metronome_sdk/models/commit.rbs +19 -0
  50. data/sig/metronome_sdk/models/contract.rbs +151 -0
  51. data/sig/metronome_sdk/models/contract_v2.rbs +170 -0
  52. data/sig/metronome_sdk/models/contract_without_amendments.rbs +151 -0
  53. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +116 -6
  54. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +116 -6
  55. data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +31 -3
  56. data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +31 -3
  57. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +19 -0
  58. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +134 -0
  59. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +1045 -4
  60. data/sig/metronome_sdk/models/v1/package_create_params.rbs +115 -0
  61. data/sig/metronome_sdk/models/v1/package_list_response.rbs +115 -0
  62. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +115 -0
  63. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +283 -9
  64. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +3792 -4
  65. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +142 -9
  66. data/sig/metronome_sdk/resources/v1/contracts.rbs +1 -0
  67. data/sig/metronome_sdk/resources/v1/packages.rbs +1 -0
  68. data/sig/metronome_sdk/resources/v1.rbs +0 -2
  69. data/sig/metronome_sdk/resources/v2/contracts.rbs +2 -0
  70. metadata +2 -26
  71. data/lib/metronome_sdk/models/v1/payment.rb +0 -196
  72. data/lib/metronome_sdk/models/v1/payment_attempt_params.rb +0 -28
  73. data/lib/metronome_sdk/models/v1/payment_attempt_response.rb +0 -18
  74. data/lib/metronome_sdk/models/v1/payment_cancel_params.rb +0 -28
  75. data/lib/metronome_sdk/models/v1/payment_cancel_response.rb +0 -18
  76. data/lib/metronome_sdk/models/v1/payment_list_params.rb +0 -53
  77. data/lib/metronome_sdk/models/v1/payment_status.rb +0 -19
  78. data/lib/metronome_sdk/resources/v1/payments.rb +0 -102
  79. data/rbi/metronome_sdk/models/v1/payment.rbi +0 -403
  80. data/rbi/metronome_sdk/models/v1/payment_attempt_params.rbi +0 -48
  81. data/rbi/metronome_sdk/models/v1/payment_attempt_response.rbi +0 -35
  82. data/rbi/metronome_sdk/models/v1/payment_cancel_params.rbi +0 -48
  83. data/rbi/metronome_sdk/models/v1/payment_cancel_response.rbi +0 -35
  84. data/rbi/metronome_sdk/models/v1/payment_list_params.rbi +0 -91
  85. data/rbi/metronome_sdk/models/v1/payment_status.rbi +0 -33
  86. data/rbi/metronome_sdk/resources/v1/payments.rbi +0 -72
  87. data/sig/metronome_sdk/models/v1/payment.rbs +0 -243
  88. data/sig/metronome_sdk/models/v1/payment_attempt_params.rbs +0 -30
  89. data/sig/metronome_sdk/models/v1/payment_attempt_response.rbs +0 -15
  90. data/sig/metronome_sdk/models/v1/payment_cancel_params.rbs +0 -30
  91. data/sig/metronome_sdk/models/v1/payment_cancel_response.rbs +0 -15
  92. data/sig/metronome_sdk/models/v1/payment_list_params.rbs +0 -56
  93. data/sig/metronome_sdk/models/v1/payment_status.rbs +0 -19
  94. data/sig/metronome_sdk/resources/v1/payments.rbs +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4d5355d04639b7153cfe94271378797fceaff008c386c001c6450f66674a584
4
- data.tar.gz: 25c993147e97e4acead3048b17b7328e67b4e95274bef1893723bf806ddd9bec
3
+ metadata.gz: 72c947987bf3b6947462d66133a12deab29b5c7ed85c20169adfa923caf73076
4
+ data.tar.gz: 54e641c55d3862d539331f0716fb62feece95b6cf83e15217dedb4fbdf2dc1bc
5
5
  SHA512:
6
- metadata.gz: 653c76e15fba1881dcc6e344161a61f7c0c061aba2603bdb26a3f489986c23e31d1fe77bb2134070f53333efe9efa5d37b73f206abb30b4cba33eb05f967c771
7
- data.tar.gz: 3d6505e8bd6767e3873ba2d70c28bc93eac7280ae2ca126eba43a18eca5e4a113704574909e5c0a26f503204675bc407582190dd9d1f20afa91ecc98cc30def0
6
+ metadata.gz: 1e9d8143dcda81173e1fd5c63001d0d952a27b667194d9c1e26c2a19a1f3d0c80b82f5463d394603cd22bd0f0ab79d7ffd47faaabaf6e7633ed73a73fcbb99cd
7
+ data.tar.gz: fa66a0ab59ddde426e0e9ac34adae0f40d3d99e1fdb827ed4934bde394d6902b90372f7e1e69942aeb416706e6cfc9ade9a05c9267723bc5b98dd7fb1943376e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.7.0 (2026-05-29)
4
+
5
+ Full Changelog: [v3.6.0...v3.7.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.6.0...v3.7.0)
6
+
7
+ ### Features
8
+
9
+ * [LAUNCH-2814] editContract returns full edit in the response ([fd684bc](https://github.com/Metronome-Industries/metronome-ruby/commit/fd684bc491dc2083911a144ba0a455385eaf315d))
10
+ * [orch-1860] remove all deprecated `/payments/*` endpoints from API ([1c6cdb1](https://github.com/Metronome-Industries/metronome-ruby/commit/1c6cdb1d7629e6a29adc78a1dbd460eebbbab08b))
11
+ * create contract returns contract data ([16469e5](https://github.com/Metronome-Industries/metronome-ruby/commit/16469e57c6563dd35b5b2f3cf05893a69ec7d406))
12
+ * nikku-orch-1723-update-create-contract ([a5de974](https://github.com/Metronome-Industries/metronome-ruby/commit/a5de9740f141a211e0435fff858ceca62d2b5359))
13
+
14
+
15
+ ### Chores
16
+
17
+ * (internal) Add threshold balance specifier to contract create & edit, package create and both contract and package retrievals ([eb1049d](https://github.com/Metronome-Industries/metronome-ruby/commit/eb1049d2826865a29710c274e13cc311005a0e91))
18
+
3
19
  ## 3.6.0 (2026-05-18)
4
20
 
5
21
  Full Changelog: [v3.5.0...v3.6.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.5.0...v3.6.0)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "metronome-sdk", "~> 3.6.0"
29
+ gem "metronome-sdk", "~> 3.7.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -15,31 +15,6 @@ module MetronomeSDK
15
15
  #
16
16
  # We can therefore convert string values to Symbols, but can't convert other
17
17
  # values safely.
18
- #
19
- # @example
20
- # # `payment_status` is a `MetronomeSDK::V1::PaymentStatus`
21
- # case payment_status
22
- # when MetronomeSDK::V1::PaymentStatus::PENDING
23
- # # ...
24
- # when MetronomeSDK::V1::PaymentStatus::REQUIRES_INTERVENTION
25
- # # ...
26
- # when MetronomeSDK::V1::PaymentStatus::PAID
27
- # # ...
28
- # else
29
- # puts(payment_status)
30
- # end
31
- #
32
- # @example
33
- # case payment_status
34
- # in :pending
35
- # # ...
36
- # in :requires_intervention
37
- # # ...
38
- # in :paid
39
- # # ...
40
- # else
41
- # puts(payment_status)
42
- # end
43
18
  module Enum
44
19
  include MetronomeSDK::Internal::Type::Converter
45
20
  include MetronomeSDK::Internal::Util::SorbetRuntimeSupport
@@ -171,6 +171,12 @@ module MetronomeSDK
171
171
  # @return [Array<MetronomeSDK::Models::CommitSpecifier>, nil]
172
172
  optional :specifiers, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::CommitSpecifier] }
173
173
 
174
+ # @!attribute spend_tracker_attributes
175
+ # Optional attributes controlling how this commit interacts with spend trackers.
176
+ #
177
+ # @return [MetronomeSDK::Models::Commit::SpendTrackerAttributes, nil]
178
+ optional :spend_tracker_attributes, -> { MetronomeSDK::Commit::SpendTrackerAttributes }
179
+
174
180
  # @!attribute subscription_config
175
181
  # The subscription configuration for this commit, if it was generated from a
176
182
  # recurring commit with a subscription attached.
@@ -187,7 +193,7 @@ module MetronomeSDK
187
193
  # @return [String, nil]
188
194
  optional :uniqueness_key, String
189
195
 
190
- # @!method initialize(id:, created_at:, product:, type:, access_schedule: nil, amount: nil, applicable_contract_ids: nil, applicable_product_ids: nil, applicable_product_tags: nil, archived_at: nil, balance: nil, contract: nil, custom_fields: nil, description: nil, hierarchy_configuration: nil, invoice_contract: nil, invoice_schedule: nil, ledger: nil, name: nil, netsuite_sales_order_id: nil, priority: nil, rate_type: nil, recurring_commit_id: nil, rolled_over_from: nil, rollover_fraction: nil, salesforce_opportunity_id: nil, specifiers: nil, subscription_config: nil, uniqueness_key: nil)
196
+ # @!method initialize(id:, created_at:, product:, type:, access_schedule: nil, amount: nil, applicable_contract_ids: nil, applicable_product_ids: nil, applicable_product_tags: nil, archived_at: nil, balance: nil, contract: nil, custom_fields: nil, description: nil, hierarchy_configuration: nil, invoice_contract: nil, invoice_schedule: nil, ledger: nil, name: nil, netsuite_sales_order_id: nil, priority: nil, rate_type: nil, recurring_commit_id: nil, rolled_over_from: nil, rollover_fraction: nil, salesforce_opportunity_id: nil, specifiers: nil, spend_tracker_attributes: nil, subscription_config: nil, uniqueness_key: nil)
191
197
  # Some parameter documentations has been truncated, see
192
198
  # {MetronomeSDK::Models::Commit} for more details.
193
199
  #
@@ -245,6 +251,8 @@ module MetronomeSDK
245
251
  #
246
252
  # @param specifiers [Array<MetronomeSDK::Models::CommitSpecifier>] List of filters that determine what kind of customer usage draws down a commit o
247
253
  #
254
+ # @param spend_tracker_attributes [MetronomeSDK::Models::Commit::SpendTrackerAttributes] Optional attributes controlling how this commit interacts with spend trackers.
255
+ #
248
256
  # @param subscription_config [MetronomeSDK::Models::Commit::SubscriptionConfig] The subscription configuration for this commit, if it was generated from a recur
249
257
  #
250
258
  # @param uniqueness_key [String] Prevents the creation of duplicates. If a request to create a commit or credit i
@@ -953,6 +961,24 @@ module MetronomeSDK
953
961
  # @param contract_id [String]
954
962
  end
955
963
 
964
+ # @see MetronomeSDK::Models::Commit#spend_tracker_attributes
965
+ class SpendTrackerAttributes < MetronomeSDK::Internal::Type::BaseModel
966
+ # @!attribute counts_as_discounted
967
+ # If true, this commit is included in spend trackers with discounted set to
968
+ # DISCOUNTED_ONLY
969
+ #
970
+ # @return [Boolean]
971
+ required :counts_as_discounted, MetronomeSDK::Internal::Type::Boolean
972
+
973
+ # @!method initialize(counts_as_discounted:)
974
+ # Some parameter documentations has been truncated, see
975
+ # {MetronomeSDK::Models::Commit::SpendTrackerAttributes} for more details.
976
+ #
977
+ # Optional attributes controlling how this commit interacts with spend trackers.
978
+ #
979
+ # @param counts_as_discounted [Boolean] If true, this commit is included in spend trackers with discounted set to DISCOU
980
+ end
981
+
956
982
  # @see MetronomeSDK::Models::Commit#subscription_config
957
983
  class SubscriptionConfig < MetronomeSDK::Internal::Type::BaseModel
958
984
  # @!attribute allocation
@@ -76,6 +76,13 @@ module MetronomeSDK
76
76
  # @return [MetronomeSDK::Models::SpendThresholdConfiguration, nil]
77
77
  optional :spend_threshold_configuration, -> { MetronomeSDK::SpendThresholdConfiguration }
78
78
 
79
+ # @!attribute spend_trackers
80
+ # Spend trackers attached to this contract.
81
+ #
82
+ # @return [Array<MetronomeSDK::Models::Contract::SpendTracker>, nil]
83
+ optional :spend_trackers,
84
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Contract::SpendTracker] }
85
+
79
86
  # @!attribute subscriptions
80
87
  # List of subscriptions on the contract.
81
88
  #
@@ -90,7 +97,7 @@ module MetronomeSDK
90
97
  # @return [String, nil]
91
98
  optional :uniqueness_key, String
92
99
 
93
- # @!method initialize(id:, amendments:, current:, customer_id:, initial:, archived_at: nil, custom_fields: nil, customer_billing_provider_configuration: nil, package_id: nil, prepaid_balance_threshold_configuration: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, subscriptions: nil, uniqueness_key: nil)
100
+ # @!method initialize(id:, amendments:, current:, customer_id:, initial:, archived_at: nil, custom_fields: nil, customer_billing_provider_configuration: nil, package_id: nil, prepaid_balance_threshold_configuration: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, spend_trackers: nil, subscriptions: nil, uniqueness_key: nil)
94
101
  # Some parameter documentations has been truncated, see
95
102
  # {MetronomeSDK::Models::Contract} for more details.
96
103
  #
@@ -118,6 +125,8 @@ module MetronomeSDK
118
125
  #
119
126
  # @param spend_threshold_configuration [MetronomeSDK::Models::SpendThresholdConfiguration]
120
127
  #
128
+ # @param spend_trackers [Array<MetronomeSDK::Models::Contract::SpendTracker>] Spend trackers attached to this contract.
129
+ #
121
130
  # @param subscriptions [Array<MetronomeSDK::Models::Subscription>] List of subscriptions on the contract.
122
131
  #
123
132
  # @param uniqueness_key [String] Prevents the creation of duplicates. If a request to create a record is made wit
@@ -400,6 +409,136 @@ module MetronomeSDK
400
409
  # @!method self.values
401
410
  # @return [Array<Symbol>]
402
411
  end
412
+
413
+ class SpendTracker < MetronomeSDK::Internal::Type::BaseModel
414
+ # @!attribute alias_
415
+ # Human-readable identifier, unique per contract.
416
+ #
417
+ # @return [String]
418
+ required :alias_, String, api_name: :alias
419
+
420
+ # @!attribute applicable_spend_specifiers
421
+ #
422
+ # @return [Array<MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier>]
423
+ required :applicable_spend_specifiers,
424
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier] }
425
+
426
+ # @!attribute credit_type_id
427
+ #
428
+ # @return [String]
429
+ required :credit_type_id, String
430
+
431
+ # @!attribute reset_frequency
432
+ #
433
+ # @return [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ResetFrequency]
434
+ required :reset_frequency, enum: -> { MetronomeSDK::Contract::SpendTracker::ResetFrequency }
435
+
436
+ # @!attribute accumulated_spend
437
+ #
438
+ # @return [MetronomeSDK::Models::Contract::SpendTracker::AccumulatedSpend, nil]
439
+ optional :accumulated_spend, -> { MetronomeSDK::Contract::SpendTracker::AccumulatedSpend }
440
+
441
+ # @!method initialize(alias_:, applicable_spend_specifiers:, credit_type_id:, reset_frequency:, accumulated_spend: nil)
442
+ # @param alias_ [String] Human-readable identifier, unique per contract.
443
+ #
444
+ # @param applicable_spend_specifiers [Array<MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier>]
445
+ #
446
+ # @param credit_type_id [String]
447
+ #
448
+ # @param reset_frequency [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ResetFrequency]
449
+ #
450
+ # @param accumulated_spend [MetronomeSDK::Models::Contract::SpendTracker::AccumulatedSpend]
451
+
452
+ class ApplicableSpendSpecifier < MetronomeSDK::Internal::Type::BaseModel
453
+ # @!attribute sources
454
+ #
455
+ # @return [Array<Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::Source>]
456
+ required :sources,
457
+ -> { MetronomeSDK::Internal::Type::ArrayOf[enum: MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier::Source] }
458
+
459
+ # @!attribute spend_type
460
+ #
461
+ # @return [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::SpendType]
462
+ required :spend_type,
463
+ enum: -> { MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier::SpendType }
464
+
465
+ # @!attribute discounted
466
+ #
467
+ # @return [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::Discounted, nil]
468
+ optional :discounted,
469
+ enum: -> { MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier::Discounted }
470
+
471
+ # @!method initialize(sources:, spend_type:, discounted: nil)
472
+ # @param sources [Array<Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::Source>]
473
+ # @param spend_type [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::SpendType]
474
+ # @param discounted [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::Discounted]
475
+
476
+ module Source
477
+ extend MetronomeSDK::Internal::Type::Enum
478
+
479
+ THRESHOLD_RECHARGE = :THRESHOLD_RECHARGE
480
+ MANUAL = :MANUAL
481
+
482
+ # @!method self.values
483
+ # @return [Array<Symbol>]
484
+ end
485
+
486
+ # @see MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier#spend_type
487
+ module SpendType
488
+ extend MetronomeSDK::Internal::Type::Enum
489
+
490
+ COMMIT_PURCHASE = :COMMIT_PURCHASE
491
+
492
+ # @!method self.values
493
+ # @return [Array<Symbol>]
494
+ end
495
+
496
+ # @see MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier#discounted
497
+ module Discounted
498
+ extend MetronomeSDK::Internal::Type::Enum
499
+
500
+ ANY = :ANY
501
+ DISCOUNTED_ONLY = :DISCOUNTED_ONLY
502
+ UNDISCOUNTED_ONLY = :UNDISCOUNTED_ONLY
503
+
504
+ # @!method self.values
505
+ # @return [Array<Symbol>]
506
+ end
507
+ end
508
+
509
+ # @see MetronomeSDK::Models::Contract::SpendTracker#reset_frequency
510
+ module ResetFrequency
511
+ extend MetronomeSDK::Internal::Type::Enum
512
+
513
+ BILLING_PERIOD = :BILLING_PERIOD
514
+
515
+ # @!method self.values
516
+ # @return [Array<Symbol>]
517
+ end
518
+
519
+ # @see MetronomeSDK::Models::Contract::SpendTracker#accumulated_spend
520
+ class AccumulatedSpend < MetronomeSDK::Internal::Type::BaseModel
521
+ # @!attribute amount
522
+ #
523
+ # @return [Float]
524
+ required :amount, Float
525
+
526
+ # @!attribute period_ending_before
527
+ #
528
+ # @return [Time]
529
+ required :period_ending_before, Time
530
+
531
+ # @!attribute period_starting_at
532
+ #
533
+ # @return [Time]
534
+ required :period_starting_at, Time
535
+
536
+ # @!method initialize(amount:, period_ending_before:, period_starting_at:)
537
+ # @param amount [Float]
538
+ # @param period_ending_before [Time]
539
+ # @param period_starting_at [Time]
540
+ end
541
+ end
403
542
  end
404
543
  end
405
544
  end
@@ -197,6 +197,13 @@ module MetronomeSDK
197
197
  # @return [MetronomeSDK::Models::SpendThresholdConfigurationV2, nil]
198
198
  optional :spend_threshold_configuration, -> { MetronomeSDK::SpendThresholdConfigurationV2 }
199
199
 
200
+ # @!attribute spend_trackers
201
+ # Spend trackers attached to this contract.
202
+ #
203
+ # @return [Array<MetronomeSDK::Models::ContractV2::SpendTracker>, nil]
204
+ optional :spend_trackers,
205
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::ContractV2::SpendTracker] }
206
+
200
207
  # @!attribute subscriptions
201
208
  # List of subscriptions on the contract.
202
209
  #
@@ -215,7 +222,7 @@ module MetronomeSDK
215
222
  # @return [String, nil]
216
223
  optional :uniqueness_key, String
217
224
 
218
- # @!method initialize(id:, commits:, created_at:, created_by:, customer_id:, overrides:, scheduled_charges:, starting_at:, transitions:, usage_filter:, usage_statement_schedule:, archived_at: nil, credits: nil, custom_fields: nil, customer_billing_provider_configuration: nil, discounts: nil, ending_before: nil, has_more: nil, hierarchy_configuration: nil, multiplier_override_prioritization: nil, name: nil, net_payment_terms_days: nil, netsuite_sales_order_id: nil, prepaid_balance_threshold_configuration: nil, priority: nil, professional_services: nil, rate_card_id: nil, recurring_commits: nil, recurring_credits: nil, reseller_royalties: nil, salesforce_opportunity_id: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, subscriptions: nil, total_contract_value: nil, uniqueness_key: nil)
225
+ # @!method initialize(id:, commits:, created_at:, created_by:, customer_id:, overrides:, scheduled_charges:, starting_at:, transitions:, usage_filter:, usage_statement_schedule:, archived_at: nil, credits: nil, custom_fields: nil, customer_billing_provider_configuration: nil, discounts: nil, ending_before: nil, has_more: nil, hierarchy_configuration: nil, multiplier_override_prioritization: nil, name: nil, net_payment_terms_days: nil, netsuite_sales_order_id: nil, prepaid_balance_threshold_configuration: nil, priority: nil, professional_services: nil, rate_card_id: nil, recurring_commits: nil, recurring_credits: nil, reseller_royalties: nil, salesforce_opportunity_id: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, spend_trackers: nil, subscriptions: nil, total_contract_value: nil, uniqueness_key: nil)
219
226
  # Some parameter documentations has been truncated, see
220
227
  # {MetronomeSDK::Models::ContractV2} for more details.
221
228
  #
@@ -285,6 +292,8 @@ module MetronomeSDK
285
292
  #
286
293
  # @param spend_threshold_configuration [MetronomeSDK::Models::SpendThresholdConfigurationV2]
287
294
  #
295
+ # @param spend_trackers [Array<MetronomeSDK::Models::ContractV2::SpendTracker>] Spend trackers attached to this contract.
296
+ #
288
297
  # @param subscriptions [Array<MetronomeSDK::Models::ContractV2::Subscription>] List of subscriptions on the contract.
289
298
  #
290
299
  # @param total_contract_value [Float]
@@ -452,13 +461,19 @@ module MetronomeSDK
452
461
  # @return [Array<MetronomeSDK::Models::CommitSpecifier>, nil]
453
462
  optional :specifiers, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::CommitSpecifier] }
454
463
 
464
+ # @!attribute spend_tracker_attributes
465
+ # Optional attributes controlling how this commit interacts with spend trackers.
466
+ #
467
+ # @return [MetronomeSDK::Models::ContractV2::Commit::SpendTrackerAttributes, nil]
468
+ optional :spend_tracker_attributes, -> { MetronomeSDK::ContractV2::Commit::SpendTrackerAttributes }
469
+
455
470
  # @!attribute subscription_config
456
471
  # Attach a subscription to the recurring commit/credit.
457
472
  #
458
473
  # @return [MetronomeSDK::Models::RecurringCommitSubscriptionConfig, nil]
459
474
  optional :subscription_config, -> { MetronomeSDK::RecurringCommitSubscriptionConfig }
460
475
 
461
- # @!method initialize(id:, created_at:, product:, type:, access_schedule: nil, applicable_contract_ids: nil, applicable_product_ids: nil, applicable_product_tags: nil, archived_at: nil, balance: nil, contract: nil, custom_fields: nil, description: nil, hierarchy_configuration: nil, invoice_contract: nil, invoice_schedule: nil, ledger: nil, name: nil, netsuite_sales_order_id: nil, priority: nil, rate_type: nil, recurring_commit_id: nil, rolled_over_from: nil, rollover_fraction: nil, salesforce_opportunity_id: nil, specifiers: nil, subscription_config: nil)
476
+ # @!method initialize(id:, created_at:, product:, type:, access_schedule: nil, applicable_contract_ids: nil, applicable_product_ids: nil, applicable_product_tags: nil, archived_at: nil, balance: nil, contract: nil, custom_fields: nil, description: nil, hierarchy_configuration: nil, invoice_contract: nil, invoice_schedule: nil, ledger: nil, name: nil, netsuite_sales_order_id: nil, priority: nil, rate_type: nil, recurring_commit_id: nil, rolled_over_from: nil, rollover_fraction: nil, salesforce_opportunity_id: nil, specifiers: nil, spend_tracker_attributes: nil, subscription_config: nil)
462
477
  # Some parameter documentations has been truncated, see
463
478
  # {MetronomeSDK::Models::ContractV2::Commit} for more details.
464
479
  #
@@ -514,6 +529,8 @@ module MetronomeSDK
514
529
  #
515
530
  # @param specifiers [Array<MetronomeSDK::Models::CommitSpecifier>] List of filters that determine what kind of customer usage draws down a commit o
516
531
  #
532
+ # @param spend_tracker_attributes [MetronomeSDK::Models::ContractV2::Commit::SpendTrackerAttributes] Optional attributes controlling how this commit interacts with spend trackers.
533
+ #
517
534
  # @param subscription_config [MetronomeSDK::Models::RecurringCommitSubscriptionConfig] Attach a subscription to the recurring commit/credit.
518
535
 
519
536
  # @see MetronomeSDK::Models::ContractV2::Commit#product
@@ -1230,6 +1247,25 @@ module MetronomeSDK
1230
1247
  # @param commit_id [String]
1231
1248
  # @param contract_id [String]
1232
1249
  end
1250
+
1251
+ # @see MetronomeSDK::Models::ContractV2::Commit#spend_tracker_attributes
1252
+ class SpendTrackerAttributes < MetronomeSDK::Internal::Type::BaseModel
1253
+ # @!attribute counts_as_discounted
1254
+ # If true, this commit is included in spend trackers with discounted set to
1255
+ # DISCOUNTED_ONLY
1256
+ #
1257
+ # @return [Boolean]
1258
+ required :counts_as_discounted, MetronomeSDK::Internal::Type::Boolean
1259
+
1260
+ # @!method initialize(counts_as_discounted:)
1261
+ # Some parameter documentations has been truncated, see
1262
+ # {MetronomeSDK::Models::ContractV2::Commit::SpendTrackerAttributes} for more
1263
+ # details.
1264
+ #
1265
+ # Optional attributes controlling how this commit interacts with spend trackers.
1266
+ #
1267
+ # @param counts_as_discounted [Boolean] If true, this commit is included in spend trackers with discounted set to DISCOU
1268
+ end
1233
1269
  end
1234
1270
 
1235
1271
  class Override < MetronomeSDK::Internal::Type::BaseModel
@@ -3306,6 +3342,136 @@ module MetronomeSDK
3306
3342
  # @return [Array<Symbol>]
3307
3343
  end
3308
3344
 
3345
+ class SpendTracker < MetronomeSDK::Internal::Type::BaseModel
3346
+ # @!attribute alias_
3347
+ # Human-readable identifier, unique per contract.
3348
+ #
3349
+ # @return [String]
3350
+ required :alias_, String, api_name: :alias
3351
+
3352
+ # @!attribute applicable_spend_specifiers
3353
+ #
3354
+ # @return [Array<MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier>]
3355
+ required :applicable_spend_specifiers,
3356
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier] }
3357
+
3358
+ # @!attribute credit_type_id
3359
+ #
3360
+ # @return [String]
3361
+ required :credit_type_id, String
3362
+
3363
+ # @!attribute reset_frequency
3364
+ #
3365
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ResetFrequency]
3366
+ required :reset_frequency, enum: -> { MetronomeSDK::ContractV2::SpendTracker::ResetFrequency }
3367
+
3368
+ # @!attribute accumulated_spend
3369
+ #
3370
+ # @return [MetronomeSDK::Models::ContractV2::SpendTracker::AccumulatedSpend, nil]
3371
+ optional :accumulated_spend, -> { MetronomeSDK::ContractV2::SpendTracker::AccumulatedSpend }
3372
+
3373
+ # @!method initialize(alias_:, applicable_spend_specifiers:, credit_type_id:, reset_frequency:, accumulated_spend: nil)
3374
+ # @param alias_ [String] Human-readable identifier, unique per contract.
3375
+ #
3376
+ # @param applicable_spend_specifiers [Array<MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier>]
3377
+ #
3378
+ # @param credit_type_id [String]
3379
+ #
3380
+ # @param reset_frequency [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ResetFrequency]
3381
+ #
3382
+ # @param accumulated_spend [MetronomeSDK::Models::ContractV2::SpendTracker::AccumulatedSpend]
3383
+
3384
+ class ApplicableSpendSpecifier < MetronomeSDK::Internal::Type::BaseModel
3385
+ # @!attribute sources
3386
+ #
3387
+ # @return [Array<Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source>]
3388
+ required :sources,
3389
+ -> { MetronomeSDK::Internal::Type::ArrayOf[enum: MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source] }
3390
+
3391
+ # @!attribute spend_type
3392
+ #
3393
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType]
3394
+ required :spend_type,
3395
+ enum: -> { MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType }
3396
+
3397
+ # @!attribute discounted
3398
+ #
3399
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted, nil]
3400
+ optional :discounted,
3401
+ enum: -> { MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted }
3402
+
3403
+ # @!method initialize(sources:, spend_type:, discounted: nil)
3404
+ # @param sources [Array<Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source>]
3405
+ # @param spend_type [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType]
3406
+ # @param discounted [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted]
3407
+
3408
+ module Source
3409
+ extend MetronomeSDK::Internal::Type::Enum
3410
+
3411
+ THRESHOLD_RECHARGE = :THRESHOLD_RECHARGE
3412
+ MANUAL = :MANUAL
3413
+
3414
+ # @!method self.values
3415
+ # @return [Array<Symbol>]
3416
+ end
3417
+
3418
+ # @see MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier#spend_type
3419
+ module SpendType
3420
+ extend MetronomeSDK::Internal::Type::Enum
3421
+
3422
+ COMMIT_PURCHASE = :COMMIT_PURCHASE
3423
+
3424
+ # @!method self.values
3425
+ # @return [Array<Symbol>]
3426
+ end
3427
+
3428
+ # @see MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier#discounted
3429
+ module Discounted
3430
+ extend MetronomeSDK::Internal::Type::Enum
3431
+
3432
+ ANY = :ANY
3433
+ DISCOUNTED_ONLY = :DISCOUNTED_ONLY
3434
+ UNDISCOUNTED_ONLY = :UNDISCOUNTED_ONLY
3435
+
3436
+ # @!method self.values
3437
+ # @return [Array<Symbol>]
3438
+ end
3439
+ end
3440
+
3441
+ # @see MetronomeSDK::Models::ContractV2::SpendTracker#reset_frequency
3442
+ module ResetFrequency
3443
+ extend MetronomeSDK::Internal::Type::Enum
3444
+
3445
+ BILLING_PERIOD = :BILLING_PERIOD
3446
+
3447
+ # @!method self.values
3448
+ # @return [Array<Symbol>]
3449
+ end
3450
+
3451
+ # @see MetronomeSDK::Models::ContractV2::SpendTracker#accumulated_spend
3452
+ class AccumulatedSpend < MetronomeSDK::Internal::Type::BaseModel
3453
+ # @!attribute amount
3454
+ #
3455
+ # @return [Float]
3456
+ required :amount, Float
3457
+
3458
+ # @!attribute period_ending_before
3459
+ #
3460
+ # @return [Time]
3461
+ required :period_ending_before, Time
3462
+
3463
+ # @!attribute period_starting_at
3464
+ #
3465
+ # @return [Time]
3466
+ required :period_starting_at, Time
3467
+
3468
+ # @!method initialize(amount:, period_ending_before:, period_starting_at:)
3469
+ # @param amount [Float]
3470
+ # @param period_ending_before [Time]
3471
+ # @param period_starting_at [Time]
3472
+ end
3473
+ end
3474
+
3309
3475
  class Subscription < MetronomeSDK::Internal::Type::BaseModel
3310
3476
  # @!attribute billing_periods
3311
3477
  # Previous, current, and next billing periods for the subscription.