metronome-sdk 3.6.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +54 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/transport/base_client.rb +4 -1
  5. data/lib/metronome_sdk/internal/type/enum.rb +0 -25
  6. data/lib/metronome_sdk/models/commit.rb +36 -1
  7. data/lib/metronome_sdk/models/contract.rb +140 -1
  8. data/lib/metronome_sdk/models/contract_v2.rb +457 -8
  9. data/lib/metronome_sdk/models/contract_without_amendments.rb +320 -5
  10. data/lib/metronome_sdk/models/credit.rb +10 -1
  11. data/lib/metronome_sdk/models/override.rb +7 -1
  12. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +113 -2
  13. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +105 -2
  14. data/lib/metronome_sdk/models/spend_threshold_configuration.rb +33 -1
  15. data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +33 -1
  16. data/lib/metronome_sdk/models/subscription.rb +90 -2
  17. data/lib/metronome_sdk/models/v1/alert_create_params.rb +127 -1
  18. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +46 -5
  19. data/lib/metronome_sdk/models/v1/contract_create_params.rb +436 -12
  20. data/lib/metronome_sdk/models/v1/contract_create_response.rb +1308 -3
  21. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rb +88 -0
  22. data/lib/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rb +62 -0
  23. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +10 -1
  24. data/lib/metronome_sdk/models/v1/customers/alert_retrieve_params.rb +127 -1
  25. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +130 -3
  26. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +10 -1
  27. data/lib/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rb +2 -0
  28. data/lib/metronome_sdk/models/v1/package_create_params.rb +394 -11
  29. data/lib/metronome_sdk/models/v1/package_list_response.rb +374 -8
  30. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +378 -8
  31. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +817 -13
  32. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +4310 -3
  33. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +600 -10
  34. data/lib/metronome_sdk/resources/v1/alerts.rb +3 -1
  35. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/rates.rb +4 -0
  36. data/lib/metronome_sdk/resources/v1/contracts.rb +71 -2
  37. data/lib/metronome_sdk/resources/v1/customers/alerts.rb +4 -2
  38. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +3 -1
  39. data/lib/metronome_sdk/resources/v1/dashboards.rb +7 -2
  40. data/lib/metronome_sdk/resources/v1/packages.rb +6 -5
  41. data/lib/metronome_sdk/resources/v1.rb +0 -4
  42. data/lib/metronome_sdk/resources/v2/contracts.rb +5 -1
  43. data/lib/metronome_sdk/version.rb +1 -1
  44. data/lib/metronome_sdk.rb +2 -8
  45. data/rbi/metronome_sdk/models/commit.rbi +61 -0
  46. data/rbi/metronome_sdk/models/contract.rbi +354 -0
  47. data/rbi/metronome_sdk/models/contract_v2.rbi +1132 -11
  48. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +831 -0
  49. data/rbi/metronome_sdk/models/credit.rbi +13 -0
  50. data/rbi/metronome_sdk/models/override.rbi +9 -0
  51. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +299 -6
  52. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +287 -6
  53. data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +78 -3
  54. data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +78 -3
  55. data/rbi/metronome_sdk/models/subscription.rbi +212 -3
  56. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +373 -0
  57. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +81 -6
  58. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +1095 -17
  59. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +2911 -4
  60. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbi +112 -0
  61. data/rbi/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbi +119 -0
  62. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +13 -0
  63. data/rbi/metronome_sdk/models/v1/customers/alert_retrieve_params.rbi +360 -0
  64. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +379 -2
  65. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +13 -0
  66. data/rbi/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbi +10 -0
  67. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +1049 -42
  68. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +1051 -54
  69. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +1051 -54
  70. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +2130 -114
  71. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +9749 -4
  72. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1567 -82
  73. data/rbi/metronome_sdk/resources/v1/alerts.rbi +8 -0
  74. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbi +4 -0
  75. data/rbi/metronome_sdk/resources/v1/contracts.rbi +77 -0
  76. data/rbi/metronome_sdk/resources/v1/customers/alerts.rbi +8 -1
  77. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +4 -0
  78. data/rbi/metronome_sdk/resources/v1/dashboards.rbi +7 -2
  79. data/rbi/metronome_sdk/resources/v1/packages.rbi +8 -4
  80. data/rbi/metronome_sdk/resources/v1.rbi +0 -3
  81. data/rbi/metronome_sdk/resources/v2/contracts.rbi +10 -0
  82. data/sig/metronome_sdk/models/commit.rbs +26 -0
  83. data/sig/metronome_sdk/models/contract.rbs +151 -0
  84. data/sig/metronome_sdk/models/contract_v2.rbs +448 -5
  85. data/sig/metronome_sdk/models/contract_without_amendments.rbs +320 -2
  86. data/sig/metronome_sdk/models/credit.rbs +7 -0
  87. data/sig/metronome_sdk/models/override.rbs +7 -0
  88. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +116 -6
  89. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +116 -6
  90. data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +31 -3
  91. data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +31 -3
  92. data/sig/metronome_sdk/models/subscription.rbs +88 -3
  93. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +144 -0
  94. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +26 -0
  95. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +412 -5
  96. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +1210 -4
  97. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_params.rbs +63 -0
  98. data/sig/metronome_sdk/models/v1/contract_get_subscription_seats_history_response.rbs +59 -0
  99. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +7 -0
  100. data/sig/metronome_sdk/models/v1/customers/alert_retrieve_params.rbs +141 -0
  101. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +150 -0
  102. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +8 -1
  103. data/sig/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbs +4 -0
  104. data/sig/metronome_sdk/models/v1/package_create_params.rbs +386 -5
  105. data/sig/metronome_sdk/models/v1/package_list_response.rbs +380 -5
  106. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +378 -5
  107. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +751 -14
  108. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +4215 -4
  109. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +569 -14
  110. data/sig/metronome_sdk/resources/v1/alerts.rbs +1 -0
  111. data/sig/metronome_sdk/resources/v1/contracts.rbs +14 -0
  112. data/sig/metronome_sdk/resources/v1/customers/alerts.rbs +1 -0
  113. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +1 -0
  114. data/sig/metronome_sdk/resources/v1/packages.rbs +1 -0
  115. data/sig/metronome_sdk/resources/v1.rbs +0 -2
  116. data/sig/metronome_sdk/resources/v2/contracts.rbs +2 -0
  117. metadata +8 -26
  118. data/lib/metronome_sdk/models/v1/payment.rb +0 -196
  119. data/lib/metronome_sdk/models/v1/payment_attempt_params.rb +0 -28
  120. data/lib/metronome_sdk/models/v1/payment_attempt_response.rb +0 -18
  121. data/lib/metronome_sdk/models/v1/payment_cancel_params.rb +0 -28
  122. data/lib/metronome_sdk/models/v1/payment_cancel_response.rb +0 -18
  123. data/lib/metronome_sdk/models/v1/payment_list_params.rb +0 -53
  124. data/lib/metronome_sdk/models/v1/payment_status.rb +0 -19
  125. data/lib/metronome_sdk/resources/v1/payments.rb +0 -102
  126. data/rbi/metronome_sdk/models/v1/payment.rbi +0 -403
  127. data/rbi/metronome_sdk/models/v1/payment_attempt_params.rbi +0 -48
  128. data/rbi/metronome_sdk/models/v1/payment_attempt_response.rbi +0 -35
  129. data/rbi/metronome_sdk/models/v1/payment_cancel_params.rbi +0 -48
  130. data/rbi/metronome_sdk/models/v1/payment_cancel_response.rbi +0 -35
  131. data/rbi/metronome_sdk/models/v1/payment_list_params.rbi +0 -91
  132. data/rbi/metronome_sdk/models/v1/payment_status.rbi +0 -33
  133. data/rbi/metronome_sdk/resources/v1/payments.rbi +0 -72
  134. data/sig/metronome_sdk/models/v1/payment.rbs +0 -243
  135. data/sig/metronome_sdk/models/v1/payment_attempt_params.rbs +0 -30
  136. data/sig/metronome_sdk/models/v1/payment_attempt_response.rbs +0 -15
  137. data/sig/metronome_sdk/models/v1/payment_cancel_params.rbs +0 -30
  138. data/sig/metronome_sdk/models/v1/payment_cancel_response.rbs +0 -15
  139. data/sig/metronome_sdk/models/v1/payment_list_params.rbs +0 -56
  140. data/sig/metronome_sdk/models/v1/payment_status.rbs +0 -19
  141. data/sig/metronome_sdk/resources/v1/payments.rbs +0 -30
@@ -60,6 +60,10 @@ module MetronomeSDK
60
60
  MetronomeSDK::V1::AlertCreateParams::AlertType::OrSymbol,
61
61
  name: String,
62
62
  threshold: Float,
63
+ alert_specifiers:
64
+ T::Array[
65
+ MetronomeSDK::V1::AlertCreateParams::AlertSpecifier::OrHash
66
+ ],
63
67
  billable_metric_id: String,
64
68
  credit_grant_type_filters: T::Array[String],
65
69
  credit_type_id: String,
@@ -88,6 +92,10 @@ module MetronomeSDK
88
92
  # type, this number may represent a financial amount, the days remaining, or a
89
93
  # percentage reached.
90
94
  threshold:,
95
+ # Can be used with only `low_remaining_contract_credit_and_commit_balance_reached`
96
+ # notifications. Defines the balances that are considered when evaluating the
97
+ # alert.
98
+ alert_specifiers: nil,
91
99
  # For threshold notifications of type `usage_threshold_reached`, specifies which
92
100
  # billable metric to track the usage for.
93
101
  billable_metric_id: nil,
@@ -51,6 +51,10 @@ module MetronomeSDK
51
51
  end
52
52
 
53
53
  # Add a new rate
54
+ #
55
+ # This endpoint is heavily rate limited. For adding multiple rates, using the
56
+ # [addRates](https://docs.metronome.com/api-reference/rate-cards/add-rates)
57
+ # endpoint is strongly encouraged.
54
58
  sig do
55
59
  params(
56
60
  entitled: T::Boolean,
@@ -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
@@ -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.
@@ -609,6 +616,72 @@ module MetronomeSDK
609
616
  )
610
617
  end
611
618
 
619
+ # Get the history of subscription seats schedule over time for a given
620
+ # `subscription_id`. This endpoint provides information about seat assignments and
621
+ # total quantities for different time periods, allowing you to track how seat
622
+ # assignments have changed over time.
623
+ #
624
+ # ### Use this endpoint to:
625
+ #
626
+ # - Track changes to seat assignments over time
627
+ # - Get seat schedule for a specific date using the `covering_date` parameter
628
+ # - Get seat schedule history with optional date range filtering using
629
+ # `starting_at` and `ending_before`
630
+ #
631
+ # ### Key response fields:
632
+ #
633
+ # - data: array of seat schedule entries with time periods, quantity, and
634
+ # assignments
635
+ # - next_page: cursor for pagination to retrieve additional results
636
+ #
637
+ # ### Usage guidelines:
638
+ #
639
+ # - Use `covering_date` to get the active seats for a specific point in time.
640
+ # `covering_date` cannot be used with `starting_at` or `ending_before`.
641
+ # - Use `starting_at` and `ending_before` to filter results by time range.
642
+ # `starting_at` and `ending_before` cannot be used with `covering_date`.
643
+ # - Maximum limit is 10 seat schedule entries per request
644
+ # - Results are ordered by `starting_at` timestamp
645
+ sig do
646
+ params(
647
+ contract_id: String,
648
+ customer_id: String,
649
+ subscription_id: String,
650
+ covering_date: T.nilable(Time),
651
+ cursor: T.nilable(String),
652
+ ending_before: T.nilable(Time),
653
+ limit: T.nilable(Integer),
654
+ starting_at: T.nilable(Time),
655
+ request_options: MetronomeSDK::RequestOptions::OrHash
656
+ ).returns(
657
+ MetronomeSDK::Models::V1::ContractGetSubscriptionSeatsHistoryResponse
658
+ )
659
+ end
660
+ def get_subscription_seats_history(
661
+ contract_id:,
662
+ customer_id:,
663
+ subscription_id:,
664
+ # Get the seats history segment for the covering date. Cannot be used with
665
+ # `starting_at` or `ending_before`.
666
+ covering_date: nil,
667
+ # Cursor for pagination. Use the value from the `next_page` field of the previous
668
+ # response to retrieve the next page of results.
669
+ cursor: nil,
670
+ # Include seats history segments that are active at or before this timestamp. Use
671
+ # with `starting_at` to get a specific time range. If not set, there's no upper
672
+ # bound.
673
+ ending_before: nil,
674
+ # Maximum number of seat schedule entries to return. Defaults to 10. Required
675
+ # range: 1 <= x <= 10.
676
+ limit: nil,
677
+ # Include seats history segments that are active at or after this timestamp. Use
678
+ # with `ending_before` to get a specific time range. If not set, there's no lower
679
+ # bound.
680
+ starting_at: nil,
681
+ request_options: {}
682
+ )
683
+ end
684
+
612
685
  # Retrieve a comprehensive view of all available balances (commits and credits)
613
686
  # for a customer. This endpoint provides real-time visibility into prepaid funds,
614
687
  # postpaid commitments, promotional credits, and other balance types that can
@@ -730,6 +803,7 @@ module MetronomeSDK
730
803
  include_ledgers: T::Boolean,
731
804
  limit: Integer,
732
805
  seat_ids: T::Array[String],
806
+ skip_missing_seat_ids: T::Boolean,
733
807
  starting_at: Time,
734
808
  subscription_ids: T::Array[String],
735
809
  request_options: MetronomeSDK::RequestOptions::OrHash
@@ -763,6 +837,9 @@ module MetronomeSDK
763
837
  limit: nil,
764
838
  # Optional filter to only include specific seats.
765
839
  seat_ids: nil,
840
+ # When true, any seat_ids not found in contract subscriptions will be silently
841
+ # omitted from the response instead of returning a 400 error.
842
+ skip_missing_seat_ids: nil,
766
843
  # Include only commits or credits with access effective on or after this date
767
844
  # (cannot be used with covering_date).
768
845
  starting_at: nil,
@@ -44,11 +44,11 @@ module MetronomeSDK
44
44
  # - `null` - Notification has been archived
45
45
  # - `triggered_by`: Additional context about what caused the notification to
46
46
  # trigger (when applicable)
47
+ # - `updated_at`: Timestamp of when the `customer_status` was last updated
47
48
  # - alert: Complete threshold notification configuration including:
48
49
  # - Notification ID, name, and type
49
50
  # - Current threshold values and credit type information
50
51
  # - Notification status (enabled, disabled, or archived)
51
- # - Last update timestamp
52
52
  # - Any applied filters (credit grant types, custom fields, group values)
53
53
  #
54
54
  # ### Usage guidelines:
@@ -69,6 +69,10 @@ module MetronomeSDK
69
69
  params(
70
70
  alert_id: String,
71
71
  customer_id: String,
72
+ alert_specifiers:
73
+ T::Array[
74
+ MetronomeSDK::V1::Customers::AlertRetrieveParams::AlertSpecifier::OrHash
75
+ ],
72
76
  group_values:
73
77
  T::Array[
74
78
  MetronomeSDK::V1::Customers::AlertRetrieveParams::GroupValue::OrHash
@@ -87,6 +91,9 @@ module MetronomeSDK
87
91
  alert_id:,
88
92
  # The Metronome ID of the customer
89
93
  customer_id:,
94
+ # Can be used with only `low_remaining_contract_credit_and_commit_balance_reached`
95
+ # notifications. Used to filter the alert by the custom field key-value pair.
96
+ alert_specifiers: nil,
90
97
  # Only present for `spend_threshold_reached` notifications. Retrieve the
91
98
  # notification for a specific group key-value pair.
92
99
  group_values: nil,
@@ -132,6 +132,7 @@ module MetronomeSDK
132
132
  status: String,
133
133
  type:
134
134
  MetronomeSDK::V1::Customers::InvoiceListParams::Type::OrSymbol,
135
+ webhook_notification_id: String,
135
136
  request_options: MetronomeSDK::RequestOptions::OrHash
136
137
  ).returns(
137
138
  MetronomeSDK::Internal::CursorPage[
@@ -166,6 +167,9 @@ module MetronomeSDK
166
167
  status: nil,
167
168
  # Query param: Filter invoices by type. Defaults to returning all invoice types.
168
169
  type: nil,
170
+ # Query param: Indicates that this API request was triggered by a webhook
171
+ # notification with the provided ID.
172
+ webhook_notification_id: nil,
169
173
  request_options: {}
170
174
  )
171
175
  end
@@ -30,8 +30,13 @@ module MetronomeSDK
30
30
  #
31
31
  # - Dashboard types: Choose from `invoices`, `usage`, or `commits_and_credits`
32
32
  # - Customization options:
33
- # - `dashboard_options`: Configure whether you want invoices to show zero usage
34
- # line items
33
+ # - `dashboard_options`: Configure dashboard behavior. For the invoices
34
+ # dashboard, supported keys include: `show_zero_usage_line_items`
35
+ # ("true"/"false"), `hide_voided_invoices` ("true"/"false"), `contract_id`
36
+ # (UUID, filters invoices by contract), `invoice_type` ("USAGE" or
37
+ # "SCHEDULED", filters by invoice type), `invoice_status_filter` ("VOID",
38
+ # "FINALIZED", "DRAFT", "FINALIZED_AND_DRAFT", or "ALL"), and
39
+ # `billable_status_filter` ("BILLABLE", "UNBILLABLE", or "ALL")
35
40
  # - `color_overrides`: Match your brand's color palette
36
41
  # - `bm_group_key_overrides`: Customize how dimensions are displayed (for the
37
42
  # usage embeddable dashboard)
@@ -94,6 +94,10 @@ module MetronomeSDK
94
94
  MetronomeSDK::V1::PackageCreateParams::ScheduledChargesOnUsageInvoices::OrSymbol,
95
95
  spend_threshold_configuration:
96
96
  MetronomeSDK::SpendThresholdConfiguration::OrHash,
97
+ spend_trackers:
98
+ T::Array[
99
+ MetronomeSDK::V1::PackageCreateParams::SpendTracker::OrHash
100
+ ],
97
101
  subscriptions:
98
102
  T::Array[
99
103
  MetronomeSDK::V1::PackageCreateParams::Subscription::OrHash
@@ -138,6 +142,7 @@ module MetronomeSDK
138
142
  # on a separate invoice from usage charges.
139
143
  scheduled_charges_on_usage_invoices: nil,
140
144
  spend_threshold_configuration: nil,
145
+ spend_trackers: nil,
141
146
  subscriptions: nil,
142
147
  # Prevents the creation of duplicates. If a request to create a record is made
143
148
  # with a previously used uniqueness key, a new record will not be created and the
@@ -216,10 +221,9 @@ module MetronomeSDK
216
221
  #
217
222
  # ### **Usage guidelines:**
218
223
  #
219
- # Use the **`starting_at`**, **`covering_date`**,
220
- # and **`include_archived`** parameters to filter the list of returned contracts.
221
- # For example, to list only currently active contracts,
222
- # 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.
223
227
  sig do
224
228
  params(
225
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.
@@ -14,6 +14,7 @@ module MetronomeSDK
14
14
  archived_at: Time,
15
15
  balance: Float,
16
16
  contract: MetronomeSDK::Commit::Contract,
17
+ created_by: String,
17
18
  custom_fields: ::Hash[Symbol, String],
18
19
  description: String,
19
20
  hierarchy_configuration: MetronomeSDK::CommitHierarchyConfiguration,
@@ -29,6 +30,7 @@ module MetronomeSDK
29
30
  rollover_fraction: Float,
30
31
  salesforce_opportunity_id: String,
31
32
  specifiers: ::Array[MetronomeSDK::CommitSpecifier],
33
+ spend_tracker_attributes: MetronomeSDK::Commit::SpendTrackerAttributes,
32
34
  subscription_config: MetronomeSDK::Commit::SubscriptionConfig,
33
35
  uniqueness_key: String
34
36
  }
@@ -78,6 +80,10 @@ module MetronomeSDK
78
80
  MetronomeSDK::Commit::Contract
79
81
  ) -> MetronomeSDK::Commit::Contract
80
82
 
83
+ attr_reader created_by: String?
84
+
85
+ def created_by=: (String) -> String
86
+
81
87
  attr_reader custom_fields: ::Hash[Symbol, String]?
82
88
 
83
89
  def custom_fields=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
@@ -152,6 +158,12 @@ module MetronomeSDK
152
158
  ::Array[MetronomeSDK::CommitSpecifier]
153
159
  ) -> ::Array[MetronomeSDK::CommitSpecifier]
154
160
 
161
+ attr_reader spend_tracker_attributes: MetronomeSDK::Commit::SpendTrackerAttributes?
162
+
163
+ def spend_tracker_attributes=: (
164
+ MetronomeSDK::Commit::SpendTrackerAttributes
165
+ ) -> MetronomeSDK::Commit::SpendTrackerAttributes
166
+
155
167
  attr_reader subscription_config: MetronomeSDK::Commit::SubscriptionConfig?
156
168
 
157
169
  def subscription_config=: (
@@ -175,6 +187,7 @@ module MetronomeSDK
175
187
  ?archived_at: Time,
176
188
  ?balance: Float,
177
189
  ?contract: MetronomeSDK::Commit::Contract,
190
+ ?created_by: String,
178
191
  ?custom_fields: ::Hash[Symbol, String],
179
192
  ?description: String,
180
193
  ?hierarchy_configuration: MetronomeSDK::CommitHierarchyConfiguration,
@@ -190,6 +203,7 @@ module MetronomeSDK
190
203
  ?rollover_fraction: Float,
191
204
  ?salesforce_opportunity_id: String,
192
205
  ?specifiers: ::Array[MetronomeSDK::CommitSpecifier],
206
+ ?spend_tracker_attributes: MetronomeSDK::Commit::SpendTrackerAttributes,
193
207
  ?subscription_config: MetronomeSDK::Commit::SubscriptionConfig,
194
208
  ?uniqueness_key: String
195
209
  ) -> void
@@ -207,6 +221,7 @@ module MetronomeSDK
207
221
  archived_at: Time,
208
222
  balance: Float,
209
223
  contract: MetronomeSDK::Commit::Contract,
224
+ created_by: String,
210
225
  custom_fields: ::Hash[Symbol, String],
211
226
  description: String,
212
227
  hierarchy_configuration: MetronomeSDK::CommitHierarchyConfiguration,
@@ -222,6 +237,7 @@ module MetronomeSDK
222
237
  rollover_fraction: Float,
223
238
  salesforce_opportunity_id: String,
224
239
  specifiers: ::Array[MetronomeSDK::CommitSpecifier],
240
+ spend_tracker_attributes: MetronomeSDK::Commit::SpendTrackerAttributes,
225
241
  subscription_config: MetronomeSDK::Commit::SubscriptionConfig,
226
242
  uniqueness_key: String
227
243
  }
@@ -957,6 +973,16 @@ module MetronomeSDK
957
973
  def to_hash: -> { commit_id: String, contract_id: String }
958
974
  end
959
975
 
976
+ type spend_tracker_attributes = { counts_as_discounted: bool }
977
+
978
+ class SpendTrackerAttributes < MetronomeSDK::Internal::Type::BaseModel
979
+ attr_accessor counts_as_discounted: bool
980
+
981
+ def initialize: (counts_as_discounted: bool) -> void
982
+
983
+ def to_hash: -> { counts_as_discounted: bool }
984
+ end
985
+
960
986
  type subscription_config =
961
987
  {
962
988
  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