metronome-sdk 3.5.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/client.rb +15 -1
  5. data/lib/metronome_sdk/internal/transport/base_client.rb +2 -0
  6. data/lib/metronome_sdk/internal/type/enum.rb +0 -25
  7. data/lib/metronome_sdk/models/commit.rb +27 -1
  8. data/lib/metronome_sdk/models/contract.rb +140 -1
  9. data/lib/metronome_sdk/models/contract_v2.rb +530 -6
  10. data/lib/metronome_sdk/models/contract_without_amendments.rb +142 -1
  11. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +105 -2
  12. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +103 -2
  13. data/lib/metronome_sdk/models/spend_threshold_configuration.rb +33 -1
  14. data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +33 -1
  15. data/lib/metronome_sdk/models/v1/alert_create_params.rb +1 -0
  16. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +29 -177
  17. data/lib/metronome_sdk/models/v1/contract_create_params.rb +147 -180
  18. data/lib/metronome_sdk/models/v1/contract_create_response.rb +1134 -3
  19. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +119 -0
  20. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_response.rb +315 -0
  21. data/lib/metronome_sdk/models/v1/contracts/product_create_params.rb +31 -1
  22. data/lib/metronome_sdk/models/v1/contracts/product_update_params.rb +31 -1
  23. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +1 -0
  24. data/lib/metronome_sdk/models/v1/customers/invoice.rb +8 -1
  25. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +29 -1
  26. data/lib/metronome_sdk/models/v1/package_create_params.rb +115 -18
  27. data/lib/metronome_sdk/models/v1/package_list_response.rb +110 -1
  28. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +114 -1
  29. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +303 -5
  30. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +3862 -3
  31. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +507 -6
  32. data/lib/metronome_sdk/resources/v1/contracts/products.rb +6 -2
  33. data/lib/metronome_sdk/resources/v1/contracts.rb +72 -3
  34. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +5 -1
  35. data/lib/metronome_sdk/resources/v1/packages.rb +6 -7
  36. data/lib/metronome_sdk/resources/v1.rb +0 -4
  37. data/lib/metronome_sdk/resources/v2/contracts.rb +5 -1
  38. data/lib/metronome_sdk/version.rb +1 -1
  39. data/lib/metronome_sdk.rb +2 -8
  40. data/rbi/metronome_sdk/models/commit.rbi +48 -0
  41. data/rbi/metronome_sdk/models/contract.rbi +354 -0
  42. data/rbi/metronome_sdk/models/contract_v2.rbi +1172 -4
  43. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +368 -0
  44. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +289 -6
  45. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +283 -6
  46. data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +78 -3
  47. data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +78 -3
  48. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +5 -0
  49. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +54 -396
  50. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +370 -398
  51. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +2448 -4
  52. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +179 -0
  53. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_response.rbi +714 -0
  54. data/rbi/metronome_sdk/models/v1/contracts/product_create_params.rbi +74 -0
  55. data/rbi/metronome_sdk/models/v1/contracts/product_update_params.rbi +74 -0
  56. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +5 -0
  57. data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +9 -0
  58. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +75 -0
  59. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +310 -56
  60. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +307 -0
  61. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +307 -0
  62. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +734 -11
  63. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +8612 -4
  64. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1355 -219
  65. data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +18 -0
  66. data/rbi/metronome_sdk/resources/v1/contracts.rbi +88 -3
  67. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +7 -0
  68. data/rbi/metronome_sdk/resources/v1/packages.rbi +8 -7
  69. data/rbi/metronome_sdk/resources/v1.rbi +0 -3
  70. data/rbi/metronome_sdk/resources/v2/contracts.rbi +10 -0
  71. data/sig/metronome_sdk/models/commit.rbs +19 -0
  72. data/sig/metronome_sdk/models/contract.rbs +151 -0
  73. data/sig/metronome_sdk/models/contract_v2.rbs +494 -6
  74. data/sig/metronome_sdk/models/contract_without_amendments.rbs +151 -0
  75. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +116 -6
  76. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +116 -6
  77. data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +31 -3
  78. data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +31 -3
  79. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +3 -1
  80. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +19 -137
  81. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +134 -137
  82. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +1045 -4
  83. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +96 -0
  84. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_response.rbs +299 -0
  85. data/sig/metronome_sdk/models/v1/contracts/product_create_params.rbs +20 -0
  86. data/sig/metronome_sdk/models/v1/contracts/product_update_params.rbs +20 -0
  87. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +3 -1
  88. data/sig/metronome_sdk/models/v1/customers/invoice.rbs +7 -0
  89. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +29 -1
  90. data/sig/metronome_sdk/models/v1/package_create_params.rbs +115 -20
  91. data/sig/metronome_sdk/models/v1/package_list_response.rbs +115 -0
  92. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +115 -0
  93. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +283 -9
  94. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +3792 -4
  95. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +461 -15
  96. data/sig/metronome_sdk/resources/v1/contracts/products.rbs +2 -0
  97. data/sig/metronome_sdk/resources/v1/contracts.rbs +16 -0
  98. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +2 -0
  99. data/sig/metronome_sdk/resources/v1/packages.rbs +1 -1
  100. data/sig/metronome_sdk/resources/v1.rbs +0 -2
  101. data/sig/metronome_sdk/resources/v2/contracts.rbs +2 -0
  102. metadata +8 -26
  103. data/lib/metronome_sdk/models/v1/payment.rb +0 -196
  104. data/lib/metronome_sdk/models/v1/payment_attempt_params.rb +0 -28
  105. data/lib/metronome_sdk/models/v1/payment_attempt_response.rb +0 -18
  106. data/lib/metronome_sdk/models/v1/payment_cancel_params.rb +0 -28
  107. data/lib/metronome_sdk/models/v1/payment_cancel_response.rb +0 -18
  108. data/lib/metronome_sdk/models/v1/payment_list_params.rb +0 -53
  109. data/lib/metronome_sdk/models/v1/payment_status.rb +0 -19
  110. data/lib/metronome_sdk/resources/v1/payments.rb +0 -102
  111. data/rbi/metronome_sdk/models/v1/payment.rbi +0 -403
  112. data/rbi/metronome_sdk/models/v1/payment_attempt_params.rbi +0 -48
  113. data/rbi/metronome_sdk/models/v1/payment_attempt_response.rbi +0 -35
  114. data/rbi/metronome_sdk/models/v1/payment_cancel_params.rbi +0 -48
  115. data/rbi/metronome_sdk/models/v1/payment_cancel_response.rbi +0 -35
  116. data/rbi/metronome_sdk/models/v1/payment_list_params.rbi +0 -91
  117. data/rbi/metronome_sdk/models/v1/payment_status.rbi +0 -33
  118. data/rbi/metronome_sdk/resources/v1/payments.rbi +0 -72
  119. data/sig/metronome_sdk/models/v1/payment.rbs +0 -243
  120. data/sig/metronome_sdk/models/v1/payment_attempt_params.rbs +0 -30
  121. data/sig/metronome_sdk/models/v1/payment_attempt_response.rbs +0 -15
  122. data/sig/metronome_sdk/models/v1/payment_cancel_params.rbs +0 -30
  123. data/sig/metronome_sdk/models/v1/payment_cancel_response.rbs +0 -15
  124. data/sig/metronome_sdk/models/v1/payment_list_params.rbs +0 -56
  125. data/sig/metronome_sdk/models/v1/payment_status.rbs +0 -19
  126. data/sig/metronome_sdk/resources/v1/payments.rbs +0 -30
@@ -34,6 +34,8 @@ module MetronomeSDK
34
34
  T.nilable(
35
35
  MetronomeSDK::V1::Contracts::QuantityRounding::OrHash
36
36
  ),
37
+ sql_breakdown_granularity:
38
+ MetronomeSDK::V1::Contracts::ProductCreateParams::SqlBreakdownGranularity::OrSymbol,
37
39
  tags: T::Array[String],
38
40
  request_options: MetronomeSDK::RequestOptions::OrHash
39
41
  ).returns(
@@ -84,6 +86,13 @@ module MetronomeSDK
84
86
  # the method is "round up" and the decimal places is 0, then the quantity will be
85
87
  # rounded up to the nearest integer.
86
88
  quantity_rounding: nil,
89
+ # Defines the breakdown behavior when calculating usage from SQL Billable Metrics.
90
+ # If set to 'service_period' (default), the usage will be evaluated once for all
91
+ # events the invoice service period and the usage will be applied at the last
92
+ # instant of the invoice. If set to 'hour', it will be broken down and evaluated
93
+ # for each hour. For most use cases, 'hour' is recommended. The setting has no
94
+ # effect for Streaming Billable Metrics.
95
+ sql_breakdown_granularity: nil,
87
96
  tags: nil,
88
97
  request_options: {}
89
98
  )
@@ -134,6 +143,8 @@ module MetronomeSDK
134
143
  T.nilable(
135
144
  MetronomeSDK::V1::Contracts::QuantityRounding::OrHash
136
145
  ),
146
+ sql_breakdown_granularity:
147
+ MetronomeSDK::V1::Contracts::ProductUpdateParams::SqlBreakdownGranularity::OrSymbol,
137
148
  tags: T::Array[String],
138
149
  request_options: MetronomeSDK::RequestOptions::OrHash
139
150
  ).returns(
@@ -192,6 +203,13 @@ module MetronomeSDK
192
203
  # the method is "round up" and the decimal places is 0, then the quantity will be
193
204
  # rounded up to the nearest integer.
194
205
  quantity_rounding: nil,
206
+ # Defines the breakdown behavior when calculating usage from SQL Billable Metrics.
207
+ # If set to 'service_period' (default), the usage will be evaluated once for all
208
+ # events the invoice service period and the usage will be applied at the last
209
+ # instant of the invoice. If set to 'hour', it will be broken down and evaluated
210
+ # for each hour. For most use cases, 'hour' is recommended. The setting has no
211
+ # effect for Streaming Billable Metrics.
212
+ sql_breakdown_granularity: nil,
195
213
  # If not provided, defaults to product's current tags
196
214
  tags: nil,
197
215
  request_options: {}
@@ -19,8 +19,8 @@ module MetronomeSDK
19
19
 
20
20
  # Contracts define a customer's products, pricing, discounts, access duration, and
21
21
  # billing configuration. Contracts serve as the central billing agreement for both
22
- # PLG and Enterprise customers, you can automatically customers access to your
23
- # products and services directly from your product or CRM.
22
+ # PLG and Enterprise customers. You can automatically grant customers access to
23
+ # your products and services directly from your product or CRM.
24
24
  #
25
25
  # ### Use this endpoint to:
26
26
  #
@@ -200,6 +200,10 @@ module MetronomeSDK
200
200
  MetronomeSDK::V1::ContractCreateParams::ScheduledChargesOnUsageInvoices::OrSymbol,
201
201
  spend_threshold_configuration:
202
202
  MetronomeSDK::SpendThresholdConfiguration::OrHash,
203
+ spend_trackers:
204
+ T::Array[
205
+ MetronomeSDK::V1::ContractCreateParams::SpendTracker::OrHash
206
+ ],
203
207
  subscriptions:
204
208
  T::Array[
205
209
  MetronomeSDK::V1::ContractCreateParams::Subscription::OrHash
@@ -245,7 +249,7 @@ module MetronomeSDK
245
249
  package_alias: nil,
246
250
  # If provided, provisions a customer on a package instead of creating a
247
251
  # traditional contract. When specified, only customer_id, starting_at, package_id,
248
- # and uniqueness_key are allowed.
252
+ # uniqueness_key, transition, and custom_fields are allowed.
249
253
  package_id: nil,
250
254
  prepaid_balance_threshold_configuration: nil,
251
255
  # This field's availability is dependent on your client's configuration.
@@ -271,6 +275,9 @@ module MetronomeSDK
271
275
  # on a separate invoice from usage charges.
272
276
  scheduled_charges_on_usage_invoices: nil,
273
277
  spend_threshold_configuration: nil,
278
+ # Spend trackers to attach to this contract. Aliases must be unique within a
279
+ # contract.
280
+ spend_trackers: nil,
274
281
  # Optional list of
275
282
  # [subscriptions](https://docs.metronome.com/manage-product-access/create-subscription/)
276
283
  # to add to the contract.
@@ -696,6 +703,84 @@ module MetronomeSDK
696
703
  )
697
704
  end
698
705
 
706
+ # Retrieve detailed balance for seat-based credits and commits from the contract's
707
+ # subscriptions, broken down by individual seats.
708
+ #
709
+ # ### Use this endpoint to:
710
+ #
711
+ # - Display per-seat balance information in customer dashboards
712
+ # - Filter balance data by subscription or specific seats
713
+ #
714
+ # ### Key response fields:
715
+ #
716
+ # An array of seat balance objects containing:
717
+ #
718
+ # - Seat id
719
+ # - Balance: current total balance across all commits and credits
720
+ #
721
+ # ### Usage guidelines:
722
+ #
723
+ # - Date filtering: use `covering_date` OR `starting_at`/`ending_before` to filter
724
+ # balance data by time range
725
+ # - Set `include_credits_and_commits=true` for detailed commits and credits
726
+ # breakdown per seat
727
+ # - Set `include_ledgers=true` for detailed transaction history per commit/credit
728
+ # per seat
729
+ sig do
730
+ params(
731
+ contract_id: String,
732
+ customer_id: String,
733
+ covering_date: Time,
734
+ cursor: String,
735
+ effective_before: Time,
736
+ include_credits_and_commits: T::Boolean,
737
+ include_ledgers: T::Boolean,
738
+ limit: Integer,
739
+ seat_ids: T::Array[String],
740
+ starting_at: Time,
741
+ subscription_ids: T::Array[String],
742
+ request_options: MetronomeSDK::RequestOptions::OrHash
743
+ ).returns(MetronomeSDK::Models::V1::ContractListSeatBalancesResponse)
744
+ end
745
+ def list_seat_balances(
746
+ # The contract ID to retrieve seat balances for
747
+ contract_id:,
748
+ # The customer ID to retrieve seat balances for
749
+ customer_id:,
750
+ # Include only commits or credits with access that cover this specific date
751
+ # (cannot be used with starting_at or ending_before).
752
+ covering_date: nil,
753
+ # Page token from a previous response to retrieve the next page
754
+ cursor: nil,
755
+ # Include only commits or credits with access effective on or before this date
756
+ # (cannot be used with covering_date).
757
+ effective_before: nil,
758
+ # Include credits and commits in the response
759
+ include_credits_and_commits: nil,
760
+ # Include ledger entries for each commit and commit. `include_credits_and_commits`
761
+ # must be set to `true` for `include_ledgers=true` to apply.
762
+ include_ledgers: nil,
763
+ # Maximum number of seats to return. Range: 1-100. Default: 25. When
764
+ # `include_credits_and_commits = true`, if the total commits/credits across all
765
+ # seats exceeds 100, a limit of 100 applies to the total credits and commits.
766
+ # Seats are included greedily to maximize the number of seats returned. Example:
767
+ # if seat 1 has 98 commits and seat 2 has 10 commits, both seats will be returned
768
+ # (total: 108 commits). Each returned seat includes all of its associated credits
769
+ # and commits.
770
+ limit: nil,
771
+ # Optional filter to only include specific seats.
772
+ seat_ids: nil,
773
+ # Include only commits or credits with access effective on or after this date
774
+ # (cannot be used with covering_date).
775
+ starting_at: nil,
776
+ # Optional filter to only include seats from specific subscriptions. If
777
+ # subscriptions ids are not mapped to SEAT_BASED subscriptions, error will be
778
+ # returned.
779
+ subscription_ids: nil,
780
+ request_options: {}
781
+ )
782
+ end
783
+
699
784
  # For a specific customer and contract, get the rates at a specific point in time.
700
785
  # This endpoint takes the contract's rate card into consideration, including
701
786
  # scheduled changes. It also takes into account overrides on the contract.
@@ -120,6 +120,7 @@ module MetronomeSDK
120
120
  sig do
121
121
  params(
122
122
  customer_id: String,
123
+ contract_id: String,
123
124
  credit_type_id: String,
124
125
  ending_before: Time,
125
126
  limit: Integer,
@@ -129,6 +130,8 @@ module MetronomeSDK
129
130
  MetronomeSDK::V1::Customers::InvoiceListParams::Sort::OrSymbol,
130
131
  starting_on: Time,
131
132
  status: String,
133
+ type:
134
+ MetronomeSDK::V1::Customers::InvoiceListParams::Type::OrSymbol,
132
135
  request_options: MetronomeSDK::RequestOptions::OrHash
133
136
  ).returns(
134
137
  MetronomeSDK::Internal::CursorPage[
@@ -139,6 +142,8 @@ module MetronomeSDK
139
142
  def list(
140
143
  # Path param
141
144
  customer_id:,
145
+ # Query param: Only return invoices for the specified contract
146
+ contract_id: nil,
142
147
  # Query param: Only return invoices for the specified credit type
143
148
  credit_type_id: nil,
144
149
  # Query param: RFC 3339 timestamp (exclusive). Invoices will only be returned for
@@ -159,6 +164,8 @@ module MetronomeSDK
159
164
  starting_on: nil,
160
165
  # Query param: Invoice status, e.g. DRAFT, FINALIZED, or VOID
161
166
  status: nil,
167
+ # Query param: Filter invoices by type. Defaults to returning all invoice types.
168
+ type: nil,
162
169
  request_options: {}
163
170
  )
164
171
  end
@@ -59,8 +59,6 @@ module MetronomeSDK
59
59
  name: String,
60
60
  aliases:
61
61
  T::Array[MetronomeSDK::V1::PackageCreateParams::Alias::OrHash],
62
- billing_anchor_date:
63
- MetronomeSDK::V1::PackageCreateParams::BillingAnchorDate::OrSymbol,
64
62
  billing_provider:
65
63
  MetronomeSDK::V1::PackageCreateParams::BillingProvider::OrSymbol,
66
64
  commits:
@@ -96,6 +94,10 @@ module MetronomeSDK
96
94
  MetronomeSDK::V1::PackageCreateParams::ScheduledChargesOnUsageInvoices::OrSymbol,
97
95
  spend_threshold_configuration:
98
96
  MetronomeSDK::SpendThresholdConfiguration::OrHash,
97
+ spend_trackers:
98
+ T::Array[
99
+ MetronomeSDK::V1::PackageCreateParams::SpendTracker::OrHash
100
+ ],
99
101
  subscriptions:
100
102
  T::Array[
101
103
  MetronomeSDK::V1::PackageCreateParams::Subscription::OrHash
@@ -112,7 +114,6 @@ module MetronomeSDK
112
114
  # multiple packages, it will reference the package to which it was most recently
113
115
  # assigned. It is not exposed to end customers.
114
116
  aliases: nil,
115
- billing_anchor_date: nil,
116
117
  billing_provider: nil,
117
118
  commits: nil,
118
119
  contract_name: nil,
@@ -141,6 +142,7 @@ module MetronomeSDK
141
142
  # on a separate invoice from usage charges.
142
143
  scheduled_charges_on_usage_invoices: nil,
143
144
  spend_threshold_configuration: nil,
145
+ spend_trackers: nil,
144
146
  subscriptions: nil,
145
147
  # Prevents the creation of duplicates. If a request to create a record is made
146
148
  # with a previously used uniqueness key, a new record will not be created and the
@@ -219,10 +221,9 @@ module MetronomeSDK
219
221
  #
220
222
  # ### **Usage guidelines:**
221
223
  #
222
- # Use the **`starting_at`**, **`covering_date`**,
223
- # and **`include_archived`** parameters to filter the list of returned contracts.
224
- # For example, to list only currently active contracts,
225
- # pass **`covering_date`** equal to the current time.
224
+ # Use the **`starting_at`**, **`covering_date`**, and **`include_archived`**
225
+ # parameters to filter the list of returned contracts. For example, to list only
226
+ # currently active contracts, pass **`covering_date`** equal to the current time.
226
227
  sig do
227
228
  params(
228
229
  package_id: String,
@@ -80,9 +80,6 @@ module MetronomeSDK
80
80
  sig { returns(MetronomeSDK::Resources::V1::Packages) }
81
81
  attr_reader :packages
82
82
 
83
- sig { returns(MetronomeSDK::Resources::V1::Payments) }
84
- attr_reader :payments
85
-
86
83
  # Use these endpoints to configure a billing API key, a webhook secret, or invoice
87
84
  # finalization behavior.
88
85
  sig { returns(MetronomeSDK::Resources::V1::Settings) }
@@ -159,6 +159,10 @@ module MetronomeSDK
159
159
  ],
160
160
  add_spend_threshold_configuration:
161
161
  MetronomeSDK::SpendThresholdConfigurationV2::OrHash,
162
+ add_spend_trackers:
163
+ T::Array[
164
+ MetronomeSDK::V2::ContractEditParams::AddSpendTracker::OrHash
165
+ ],
162
166
  add_subscriptions:
163
167
  T::Array[
164
168
  MetronomeSDK::V2::ContractEditParams::AddSubscription::OrHash
@@ -176,6 +180,7 @@ module MetronomeSDK
176
180
  T::Array[
177
181
  MetronomeSDK::V2::ContractEditParams::ArchiveScheduledCharge::OrHash
178
182
  ],
183
+ archive_spend_trackers: T::Array[String],
179
184
  remove_overrides:
180
185
  T::Array[
181
186
  MetronomeSDK::V2::ContractEditParams::RemoveOverride::OrHash
@@ -240,6 +245,9 @@ module MetronomeSDK
240
245
  add_revenue_system_configuration_update: nil,
241
246
  add_scheduled_charges: nil,
242
247
  add_spend_threshold_configuration: nil,
248
+ # Spend trackers to add to this contract. Aliases must be unique within a
249
+ # contract.
250
+ add_spend_trackers: nil,
243
251
  # Optional list of
244
252
  # [subscriptions](https://docs.metronome.com/manage-product-access/create-subscription/)
245
253
  # to add to the contract.
@@ -255,6 +263,8 @@ module MetronomeSDK
255
263
  archive_credits: nil,
256
264
  # IDs of scheduled charges to archive
257
265
  archive_scheduled_charges: nil,
266
+ # Aliases of spend trackers to archive.
267
+ archive_spend_trackers: nil,
258
268
  # IDs of overrides to remove
259
269
  remove_overrides: nil,
260
270
  # Optional uniqueness key to prevent duplicate contract edits.
@@ -29,6 +29,7 @@ module MetronomeSDK
29
29
  rollover_fraction: Float,
30
30
  salesforce_opportunity_id: String,
31
31
  specifiers: ::Array[MetronomeSDK::CommitSpecifier],
32
+ spend_tracker_attributes: MetronomeSDK::Commit::SpendTrackerAttributes,
32
33
  subscription_config: MetronomeSDK::Commit::SubscriptionConfig,
33
34
  uniqueness_key: String
34
35
  }
@@ -152,6 +153,12 @@ module MetronomeSDK
152
153
  ::Array[MetronomeSDK::CommitSpecifier]
153
154
  ) -> ::Array[MetronomeSDK::CommitSpecifier]
154
155
 
156
+ attr_reader spend_tracker_attributes: MetronomeSDK::Commit::SpendTrackerAttributes?
157
+
158
+ def spend_tracker_attributes=: (
159
+ MetronomeSDK::Commit::SpendTrackerAttributes
160
+ ) -> MetronomeSDK::Commit::SpendTrackerAttributes
161
+
155
162
  attr_reader subscription_config: MetronomeSDK::Commit::SubscriptionConfig?
156
163
 
157
164
  def subscription_config=: (
@@ -190,6 +197,7 @@ module MetronomeSDK
190
197
  ?rollover_fraction: Float,
191
198
  ?salesforce_opportunity_id: String,
192
199
  ?specifiers: ::Array[MetronomeSDK::CommitSpecifier],
200
+ ?spend_tracker_attributes: MetronomeSDK::Commit::SpendTrackerAttributes,
193
201
  ?subscription_config: MetronomeSDK::Commit::SubscriptionConfig,
194
202
  ?uniqueness_key: String
195
203
  ) -> void
@@ -222,6 +230,7 @@ module MetronomeSDK
222
230
  rollover_fraction: Float,
223
231
  salesforce_opportunity_id: String,
224
232
  specifiers: ::Array[MetronomeSDK::CommitSpecifier],
233
+ spend_tracker_attributes: MetronomeSDK::Commit::SpendTrackerAttributes,
225
234
  subscription_config: MetronomeSDK::Commit::SubscriptionConfig,
226
235
  uniqueness_key: String
227
236
  }
@@ -957,6 +966,16 @@ module MetronomeSDK
957
966
  def to_hash: -> { commit_id: String, contract_id: String }
958
967
  end
959
968
 
969
+ type spend_tracker_attributes = { counts_as_discounted: bool }
970
+
971
+ class SpendTrackerAttributes < MetronomeSDK::Internal::Type::BaseModel
972
+ attr_accessor counts_as_discounted: bool
973
+
974
+ def initialize: (counts_as_discounted: bool) -> void
975
+
976
+ def to_hash: -> { counts_as_discounted: bool }
977
+ end
978
+
960
979
  type subscription_config =
961
980
  {
962
981
  allocation: MetronomeSDK::Models::Commit::SubscriptionConfig::allocation,
@@ -14,6 +14,7 @@ module MetronomeSDK
14
14
  prepaid_balance_threshold_configuration: MetronomeSDK::PrepaidBalanceThresholdConfiguration,
15
15
  scheduled_charges_on_usage_invoices: MetronomeSDK::Models::Contract::scheduled_charges_on_usage_invoices,
16
16
  spend_threshold_configuration: MetronomeSDK::SpendThresholdConfiguration,
17
+ spend_trackers: ::Array[MetronomeSDK::Contract::SpendTracker],
17
18
  subscriptions: ::Array[MetronomeSDK::Subscription],
18
19
  uniqueness_key: String
19
20
  }
@@ -65,6 +66,12 @@ module MetronomeSDK
65
66
  MetronomeSDK::SpendThresholdConfiguration
66
67
  ) -> MetronomeSDK::SpendThresholdConfiguration
67
68
 
69
+ attr_reader spend_trackers: ::Array[MetronomeSDK::Contract::SpendTracker]?
70
+
71
+ def spend_trackers=: (
72
+ ::Array[MetronomeSDK::Contract::SpendTracker]
73
+ ) -> ::Array[MetronomeSDK::Contract::SpendTracker]
74
+
68
75
  attr_reader subscriptions: ::Array[MetronomeSDK::Subscription]?
69
76
 
70
77
  def subscriptions=: (
@@ -88,6 +95,7 @@ module MetronomeSDK
88
95
  ?prepaid_balance_threshold_configuration: MetronomeSDK::PrepaidBalanceThresholdConfiguration,
89
96
  ?scheduled_charges_on_usage_invoices: MetronomeSDK::Models::Contract::scheduled_charges_on_usage_invoices,
90
97
  ?spend_threshold_configuration: MetronomeSDK::SpendThresholdConfiguration,
98
+ ?spend_trackers: ::Array[MetronomeSDK::Contract::SpendTracker],
91
99
  ?subscriptions: ::Array[MetronomeSDK::Subscription],
92
100
  ?uniqueness_key: String
93
101
  ) -> void
@@ -105,6 +113,7 @@ module MetronomeSDK
105
113
  prepaid_balance_threshold_configuration: MetronomeSDK::PrepaidBalanceThresholdConfiguration,
106
114
  scheduled_charges_on_usage_invoices: MetronomeSDK::Models::Contract::scheduled_charges_on_usage_invoices,
107
115
  spend_threshold_configuration: MetronomeSDK::SpendThresholdConfiguration,
116
+ spend_trackers: ::Array[MetronomeSDK::Contract::SpendTracker],
108
117
  subscriptions: ::Array[MetronomeSDK::Subscription],
109
118
  uniqueness_key: String
110
119
  }
@@ -395,6 +404,148 @@ module MetronomeSDK
395
404
 
396
405
  def self?.values: -> ::Array[MetronomeSDK::Models::Contract::scheduled_charges_on_usage_invoices]
397
406
  end
407
+
408
+ type spend_tracker =
409
+ {
410
+ alias_: String,
411
+ applicable_spend_specifiers: ::Array[MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier],
412
+ credit_type_id: String,
413
+ reset_frequency: MetronomeSDK::Models::Contract::SpendTracker::reset_frequency,
414
+ accumulated_spend: MetronomeSDK::Contract::SpendTracker::AccumulatedSpend
415
+ }
416
+
417
+ class SpendTracker < MetronomeSDK::Internal::Type::BaseModel
418
+ attr_accessor alias_: String
419
+
420
+ attr_accessor applicable_spend_specifiers: ::Array[MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier]
421
+
422
+ attr_accessor credit_type_id: String
423
+
424
+ attr_accessor reset_frequency: MetronomeSDK::Models::Contract::SpendTracker::reset_frequency
425
+
426
+ attr_reader accumulated_spend: MetronomeSDK::Contract::SpendTracker::AccumulatedSpend?
427
+
428
+ def accumulated_spend=: (
429
+ MetronomeSDK::Contract::SpendTracker::AccumulatedSpend
430
+ ) -> MetronomeSDK::Contract::SpendTracker::AccumulatedSpend
431
+
432
+ def initialize: (
433
+ alias_: String,
434
+ applicable_spend_specifiers: ::Array[MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier],
435
+ credit_type_id: String,
436
+ reset_frequency: MetronomeSDK::Models::Contract::SpendTracker::reset_frequency,
437
+ ?accumulated_spend: MetronomeSDK::Contract::SpendTracker::AccumulatedSpend
438
+ ) -> void
439
+
440
+ def to_hash: -> {
441
+ alias_: String,
442
+ applicable_spend_specifiers: ::Array[MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier],
443
+ credit_type_id: String,
444
+ reset_frequency: MetronomeSDK::Models::Contract::SpendTracker::reset_frequency,
445
+ accumulated_spend: MetronomeSDK::Contract::SpendTracker::AccumulatedSpend
446
+ }
447
+
448
+ type applicable_spend_specifier =
449
+ {
450
+ sources: ::Array[MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::source],
451
+ spend_type: MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::spend_type,
452
+ discounted: MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::discounted
453
+ }
454
+
455
+ class ApplicableSpendSpecifier < MetronomeSDK::Internal::Type::BaseModel
456
+ attr_accessor sources: ::Array[MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::source]
457
+
458
+ attr_accessor spend_type: MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::spend_type
459
+
460
+ attr_reader discounted: MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::discounted?
461
+
462
+ def discounted=: (
463
+ MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::discounted
464
+ ) -> MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::discounted
465
+
466
+ def initialize: (
467
+ sources: ::Array[MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::source],
468
+ spend_type: MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::spend_type,
469
+ ?discounted: MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::discounted
470
+ ) -> void
471
+
472
+ def to_hash: -> {
473
+ sources: ::Array[MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::source],
474
+ spend_type: MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::spend_type,
475
+ discounted: MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::discounted
476
+ }
477
+
478
+ type source = :THRESHOLD_RECHARGE | :MANUAL
479
+
480
+ module Source
481
+ extend MetronomeSDK::Internal::Type::Enum
482
+
483
+ THRESHOLD_RECHARGE: :THRESHOLD_RECHARGE
484
+ MANUAL: :MANUAL
485
+
486
+ def self?.values: -> ::Array[MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::source]
487
+ end
488
+
489
+ type spend_type = :COMMIT_PURCHASE
490
+
491
+ module SpendType
492
+ extend MetronomeSDK::Internal::Type::Enum
493
+
494
+ COMMIT_PURCHASE: :COMMIT_PURCHASE
495
+
496
+ def self?.values: -> ::Array[MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::spend_type]
497
+ end
498
+
499
+ type discounted = :ANY | :DISCOUNTED_ONLY | :UNDISCOUNTED_ONLY
500
+
501
+ module Discounted
502
+ extend MetronomeSDK::Internal::Type::Enum
503
+
504
+ ANY: :ANY
505
+ DISCOUNTED_ONLY: :DISCOUNTED_ONLY
506
+ UNDISCOUNTED_ONLY: :UNDISCOUNTED_ONLY
507
+
508
+ def self?.values: -> ::Array[MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::discounted]
509
+ end
510
+ end
511
+
512
+ type reset_frequency = :BILLING_PERIOD
513
+
514
+ module ResetFrequency
515
+ extend MetronomeSDK::Internal::Type::Enum
516
+
517
+ BILLING_PERIOD: :BILLING_PERIOD
518
+
519
+ def self?.values: -> ::Array[MetronomeSDK::Models::Contract::SpendTracker::reset_frequency]
520
+ end
521
+
522
+ type accumulated_spend =
523
+ {
524
+ amount: Float,
525
+ period_ending_before: Time,
526
+ period_starting_at: Time
527
+ }
528
+
529
+ class AccumulatedSpend < MetronomeSDK::Internal::Type::BaseModel
530
+ attr_accessor amount: Float
531
+
532
+ attr_accessor period_ending_before: Time
533
+
534
+ attr_accessor period_starting_at: Time
535
+
536
+ def initialize: (
537
+ amount: Float,
538
+ period_ending_before: Time,
539
+ period_starting_at: Time
540
+ ) -> void
541
+
542
+ def to_hash: -> {
543
+ amount: Float,
544
+ period_ending_before: Time,
545
+ period_starting_at: Time
546
+ }
547
+ end
548
+ end
398
549
  end
399
550
  end
400
551
  end