metronome-sdk 3.1.0 → 3.2.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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/util.rb +32 -1
  5. data/lib/metronome_sdk/models/commit_rate.rb +29 -3
  6. data/lib/metronome_sdk/models/contract.rb +1 -9
  7. data/lib/metronome_sdk/models/contract_v2.rb +22 -1
  8. data/lib/metronome_sdk/models/overwrite_rate.rb +22 -1
  9. data/lib/metronome_sdk/models/payment_gate_config.rb +0 -1
  10. data/lib/metronome_sdk/models/payment_gate_config_v2.rb +0 -1
  11. data/lib/metronome_sdk/models/rate.rb +22 -1
  12. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +23 -2
  13. data/lib/metronome_sdk/models/v1/contract_create_params.rb +24 -11
  14. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_params.rb +23 -1
  15. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_add_params.rb +21 -1
  16. data/lib/metronome_sdk/models/v1/customers/invoice.rb +10 -1
  17. data/lib/metronome_sdk/models/v1/package_archive_params.rb +24 -0
  18. data/lib/metronome_sdk/models/v1/package_archive_response.rb +18 -0
  19. data/lib/metronome_sdk/models/v1/package_create_params.rb +2719 -0
  20. data/lib/metronome_sdk/models/v1/package_create_response.rb +18 -0
  21. data/lib/metronome_sdk/models/v1/package_list_contracts_on_package_params.rb +69 -0
  22. data/lib/metronome_sdk/models/v1/package_list_contracts_on_package_response.rb +42 -0
  23. data/lib/metronome_sdk/models/v1/package_list_params.rb +52 -0
  24. data/lib/metronome_sdk/models/v1/package_list_response.rb +2446 -0
  25. data/lib/metronome_sdk/models/v1/package_retrieve_params.rb +22 -0
  26. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +2479 -0
  27. data/lib/metronome_sdk/models/v1/usage_list_with_groups_params.rb +39 -2
  28. data/lib/metronome_sdk/models/v1/usage_list_with_groups_response.rb +27 -3
  29. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +23 -2
  30. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +23 -1
  31. data/lib/metronome_sdk/resources/v1/alerts.rb +5 -0
  32. data/lib/metronome_sdk/resources/v1/audit_logs.rb +4 -1
  33. data/lib/metronome_sdk/resources/v1/billable_metrics.rb +5 -1
  34. data/lib/metronome_sdk/resources/v1/contracts/named_schedules.rb +2 -0
  35. data/lib/metronome_sdk/resources/v1/contracts/products.rb +4 -2
  36. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/named_schedules.rb +2 -0
  37. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/product_orders.rb +1 -0
  38. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/rates.rb +7 -3
  39. data/lib/metronome_sdk/resources/v1/contracts/rate_cards.rb +10 -3
  40. data/lib/metronome_sdk/resources/v1/contracts.rb +8 -5
  41. data/lib/metronome_sdk/resources/v1/credit_grants.rb +9 -4
  42. data/lib/metronome_sdk/resources/v1/custom_fields.rb +6 -2
  43. data/lib/metronome_sdk/resources/v1/customers/alerts.rb +8 -2
  44. data/lib/metronome_sdk/resources/v1/customers/billing_config.rb +4 -0
  45. data/lib/metronome_sdk/resources/v1/customers/commits.rb +1 -0
  46. data/lib/metronome_sdk/resources/v1/customers/credits.rb +1 -0
  47. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +10 -3
  48. data/lib/metronome_sdk/resources/v1/customers/named_schedules.rb +2 -0
  49. data/lib/metronome_sdk/resources/v1/customers/plans.rb +8 -2
  50. data/lib/metronome_sdk/resources/v1/customers.rb +27 -3
  51. data/lib/metronome_sdk/resources/v1/dashboards.rb +4 -0
  52. data/lib/metronome_sdk/resources/v1/invoices.rb +4 -0
  53. data/lib/metronome_sdk/resources/v1/packages.rb +269 -0
  54. data/lib/metronome_sdk/resources/v1/plans.rb +10 -3
  55. data/lib/metronome_sdk/resources/v1/pricing_units.rb +4 -1
  56. data/lib/metronome_sdk/resources/v1/services.rb +2 -0
  57. data/lib/metronome_sdk/resources/v1/settings/billing_providers.rb +2 -0
  58. data/lib/metronome_sdk/resources/v1/settings.rb +4 -0
  59. data/lib/metronome_sdk/resources/v1/usage.rb +26 -13
  60. data/lib/metronome_sdk/resources/v1.rb +41 -0
  61. data/lib/metronome_sdk/version.rb +1 -1
  62. data/lib/metronome_sdk.rb +11 -0
  63. data/rbi/metronome_sdk/internal/util.rbi +21 -1
  64. data/rbi/metronome_sdk/models/commit_rate.rbi +43 -2
  65. data/rbi/metronome_sdk/models/contract.rbi +0 -11
  66. data/rbi/metronome_sdk/models/contract_v2.rbi +46 -0
  67. data/rbi/metronome_sdk/models/overwrite_rate.rbi +37 -0
  68. data/rbi/metronome_sdk/models/payment_gate_config.rbi +0 -5
  69. data/rbi/metronome_sdk/models/payment_gate_config_v2.rbi +0 -5
  70. data/rbi/metronome_sdk/models/rate.rbi +35 -0
  71. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +46 -5
  72. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +46 -16
  73. data/rbi/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_params.rbi +46 -0
  74. data/rbi/metronome_sdk/models/v1/contracts/rate_cards/rate_add_params.rbi +46 -0
  75. data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +13 -0
  76. data/rbi/metronome_sdk/models/v1/package_archive_params.rbi +48 -0
  77. data/rbi/metronome_sdk/models/v1/package_archive_response.rbi +31 -0
  78. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +6362 -0
  79. data/rbi/metronome_sdk/models/v1/package_create_response.rbi +31 -0
  80. data/rbi/metronome_sdk/models/v1/package_list_contracts_on_package_params.rbi +105 -0
  81. data/rbi/metronome_sdk/models/v1/package_list_contracts_on_package_response.rbi +70 -0
  82. data/rbi/metronome_sdk/models/v1/package_list_params.rbi +123 -0
  83. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +5796 -0
  84. data/rbi/metronome_sdk/models/v1/package_retrieve_params.rbi +43 -0
  85. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +5864 -0
  86. data/rbi/metronome_sdk/models/v1/usage_list_with_groups_params.rbi +52 -0
  87. data/rbi/metronome_sdk/models/v1/usage_list_with_groups_response.rbi +24 -3
  88. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +46 -5
  89. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +46 -0
  90. data/rbi/metronome_sdk/resources/v1/alerts.rbi +5 -0
  91. data/rbi/metronome_sdk/resources/v1/audit_logs.rbi +2 -0
  92. data/rbi/metronome_sdk/resources/v1/billable_metrics.rbi +3 -0
  93. data/rbi/metronome_sdk/resources/v1/contracts/named_schedules.rbi +2 -0
  94. data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +1 -0
  95. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/named_schedules.rbi +2 -0
  96. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/product_orders.rbi +1 -0
  97. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbi +5 -0
  98. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards.rbi +5 -0
  99. data/rbi/metronome_sdk/resources/v1/contracts.rbi +4 -3
  100. data/rbi/metronome_sdk/resources/v1/credit_grants.rbi +3 -0
  101. data/rbi/metronome_sdk/resources/v1/custom_fields.rbi +3 -0
  102. data/rbi/metronome_sdk/resources/v1/customers/alerts.rbi +5 -0
  103. data/rbi/metronome_sdk/resources/v1/customers/billing_config.rbi +4 -0
  104. data/rbi/metronome_sdk/resources/v1/customers/commits.rbi +1 -0
  105. data/rbi/metronome_sdk/resources/v1/customers/credits.rbi +1 -0
  106. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +4 -0
  107. data/rbi/metronome_sdk/resources/v1/customers/named_schedules.rbi +2 -0
  108. data/rbi/metronome_sdk/resources/v1/customers/plans.rbi +4 -0
  109. data/rbi/metronome_sdk/resources/v1/customers.rbi +21 -0
  110. data/rbi/metronome_sdk/resources/v1/dashboards.rbi +4 -0
  111. data/rbi/metronome_sdk/resources/v1/invoices.rbi +4 -0
  112. data/rbi/metronome_sdk/resources/v1/packages.rbi +268 -0
  113. data/rbi/metronome_sdk/resources/v1/plans.rbi +4 -0
  114. data/rbi/metronome_sdk/resources/v1/pricing_units.rbi +2 -0
  115. data/rbi/metronome_sdk/resources/v1/services.rbi +2 -0
  116. data/rbi/metronome_sdk/resources/v1/settings/billing_providers.rbi +2 -0
  117. data/rbi/metronome_sdk/resources/v1/settings.rbi +4 -0
  118. data/rbi/metronome_sdk/resources/v1/usage.rbi +35 -8
  119. data/rbi/metronome_sdk/resources/v1.rbi +40 -0
  120. data/sig/metronome_sdk/internal/util.rbs +10 -0
  121. data/sig/metronome_sdk/models/commit_rate.rbs +19 -0
  122. data/sig/metronome_sdk/models/contract.rbs +0 -7
  123. data/sig/metronome_sdk/models/contract_v2.rbs +19 -0
  124. data/sig/metronome_sdk/models/overwrite_rate.rbs +19 -0
  125. data/sig/metronome_sdk/models/payment_gate_config.rbs +1 -2
  126. data/sig/metronome_sdk/models/payment_gate_config_v2.rbs +1 -2
  127. data/sig/metronome_sdk/models/rate.rbs +19 -0
  128. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +20 -2
  129. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +20 -9
  130. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_params.rbs +19 -0
  131. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_add_params.rbs +19 -0
  132. data/sig/metronome_sdk/models/v1/customers/invoice.rbs +7 -0
  133. data/sig/metronome_sdk/models/v1/package_archive_params.rbs +26 -0
  134. data/sig/metronome_sdk/models/v1/package_archive_response.rbs +15 -0
  135. data/sig/metronome_sdk/models/v1/package_create_params.rbs +2532 -0
  136. data/sig/metronome_sdk/models/v1/package_create_response.rbs +15 -0
  137. data/sig/metronome_sdk/models/v1/package_list_contracts_on_package_params.rbs +63 -0
  138. data/sig/metronome_sdk/models/v1/package_list_contracts_on_package_response.rbs +46 -0
  139. data/sig/metronome_sdk/models/v1/package_list_params.rbs +58 -0
  140. data/sig/metronome_sdk/models/v1/package_list_response.rbs +2441 -0
  141. data/sig/metronome_sdk/models/v1/package_retrieve_params.rbs +26 -0
  142. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +2467 -0
  143. data/sig/metronome_sdk/models/v1/usage_list_with_groups_params.rbs +16 -0
  144. data/sig/metronome_sdk/models/v1/usage_list_with_groups_response.rbs +10 -3
  145. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +20 -2
  146. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +19 -0
  147. data/sig/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbs +1 -0
  148. data/sig/metronome_sdk/resources/v1/contracts.rbs +0 -1
  149. data/sig/metronome_sdk/resources/v1/packages.rbs +63 -0
  150. data/sig/metronome_sdk/resources/v1/usage.rbs +2 -0
  151. data/sig/metronome_sdk/resources/v1.rbs +2 -0
  152. metadata +35 -2
@@ -3,6 +3,9 @@
3
3
  module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
+ # [Usage events](https://docs.metronome.com/connecting-metronome/send-usage-data/)
7
+ # are the basis for billable metrics. Use these endpoints to send usage events to
8
+ # Metronome and retrieve aggregated event data.
6
9
  class Usage
7
10
  # Some parameter documentations has been truncated, see
8
11
  # {MetronomeSDK::Models::V1::UsageListParams} for more details.
@@ -61,12 +64,13 @@ module MetronomeSDK
61
64
  #
62
65
  # @see MetronomeSDK::Models::V1::UsageListParams
63
66
  def list(params)
64
- parsed, options = MetronomeSDK::V1::UsageListParams.dump_request(params)
65
67
  query_params = [:next_page]
68
+ parsed, options = MetronomeSDK::V1::UsageListParams.dump_request(params)
69
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed.slice(*query_params))
66
70
  @client.request(
67
71
  method: :post,
68
72
  path: "v1/usage",
69
- query: parsed.slice(*query_params),
73
+ query: query,
70
74
  body: parsed.except(*query_params),
71
75
  page: MetronomeSDK::Internal::CursorPageWithoutLimit,
72
76
  model: MetronomeSDK::Models::V1::UsageListResponse,
@@ -200,8 +204,11 @@ module MetronomeSDK
200
204
  # An array of `PagedUsageAggregate` objects containing:
201
205
  #
202
206
  # - `starting_on` and `ending_before`: Time window boundaries
203
- # - `group_key`: The dimension being grouped by (e.g., "region")
204
- # - `group_value`: The specific value for this group (e.g., "US-East")
207
+ # - `group`: Object mapping group keys to their values
208
+ # - For simple groups, this will be a map with a single key-value pair (e.g.,
209
+ # `{"region": "US-East"}`)
210
+ # - For compound groups, this will be a map with multiple key-value pairs (e.g.,
211
+ # `{"region": "US-East", "team": "engineering"}`)
205
212
  # - `value`: Aggregated usage for this group and time window
206
213
  # - `next_page`: Pagination cursor for large datasets
207
214
  #
@@ -211,14 +218,15 @@ module MetronomeSDK
211
218
  # `window_size`
212
219
  # - Time windows: Set `window_size` to hour, day, or none for different
213
220
  # granularities
214
- # - Group filtering: Use `group_by` to specify:
215
- # - key: The dimension to group by (must be set on the billable metric as a
216
- # group key)
217
- # - values: Optional array to filter to specific values only
221
+ # - Group filtering: Use `group_key` and `group_filters` to specify groups and
222
+ # group filters
223
+ # - Limits: When using compound group keys (2+ keys in `group_key`), the default
224
+ # and max limit is 100
218
225
  # - Pagination: Use limit and `next_page` for large result sets
219
- # - Null handling: `group_value` may be null for unmatched data
226
+ # - Null handling: Group values may be null for events missing the group key
227
+ # property
220
228
  #
221
- # @overload list_with_groups(billable_metric_id:, customer_id:, window_size:, limit: nil, next_page: nil, current_period: nil, ending_before: nil, group_by: nil, starting_on: nil, request_options: {})
229
+ # @overload list_with_groups(billable_metric_id:, customer_id:, window_size:, limit: nil, next_page: nil, current_period: nil, ending_before: nil, group_by: nil, group_filters: nil, group_key: nil, starting_on: nil, request_options: {})
222
230
  #
223
231
  # @param billable_metric_id [String] Body param
224
232
  #
@@ -234,7 +242,11 @@ module MetronomeSDK
234
242
  #
235
243
  # @param ending_before [Time] Body param
236
244
  #
237
- # @param group_by [MetronomeSDK::Models::V1::UsageListWithGroupsParams::GroupBy] Body param
245
+ # @param group_by [MetronomeSDK::Models::V1::UsageListWithGroupsParams::GroupBy] Body param: Use group_key and group_filters instead. Use a single group key to g
246
+ #
247
+ # @param group_filters [Hash{Symbol=>Array<String>}] Body param: Object mapping group keys to arrays of values to filter on. Only usa
248
+ #
249
+ # @param group_key [Array<String>] Body param: Group key to group usage by. Supports both simple (single key) and c
238
250
  #
239
251
  # @param starting_on [Time] Body param
240
252
  #
@@ -244,12 +256,13 @@ module MetronomeSDK
244
256
  #
245
257
  # @see MetronomeSDK::Models::V1::UsageListWithGroupsParams
246
258
  def list_with_groups(params)
247
- parsed, options = MetronomeSDK::V1::UsageListWithGroupsParams.dump_request(params)
248
259
  query_params = [:limit, :next_page]
260
+ parsed, options = MetronomeSDK::V1::UsageListWithGroupsParams.dump_request(params)
261
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed.slice(*query_params))
249
262
  @client.request(
250
263
  method: :post,
251
264
  path: "v1/usage/groups",
252
- query: parsed.slice(*query_params),
265
+ query: query,
253
266
  body: parsed.except(*query_params),
254
267
  page: MetronomeSDK::Internal::CursorPage,
255
268
  model: MetronomeSDK::Models::V1::UsageListWithGroupsResponse,
@@ -3,48 +3,88 @@
3
3
  module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
+ # [Alerts](https://docs.metronome.com/connecting-metronome/alerts/) monitor
7
+ # customer spending, balances, and other billing factors. Use these endpoints to
8
+ # create, retrieve, and archive customer alerts. To view sample alert payloads by
9
+ # alert type, navigate
10
+ # [here.](https://docs.metronome.com/manage-product-access/create-manage-alerts/#webhook-notifications)
6
11
  # @return [MetronomeSDK::Resources::V1::Alerts]
7
12
  attr_reader :alerts
8
13
 
14
+ # [Plans](https://docs.metronome.com/pricing-and-packaging/create-plans/)
15
+ # determine the base pricing for a customer. Use these endpoints to add a plan to
16
+ # a customer, end a customer plan, retrieve plans, and retrieve plan details.
17
+ # Create plans in the [Metronome app](https://app.metronome.com/plans).
9
18
  # @return [MetronomeSDK::Resources::V1::Plans]
10
19
  attr_reader :plans
11
20
 
21
+ # [Credit grants](https://docs.metronome.com/invoicing/how-billing-works/manage-credits/)
22
+ # adjust a customer balance for prepayments, reimbursements, promotions, and so
23
+ # on. Use these endpoints to create, retrieve, update, and delete credit grants.
12
24
  # @return [MetronomeSDK::Resources::V1::CreditGrants]
13
25
  attr_reader :credit_grants
14
26
 
27
+ # Use these endpoints to configure a billing API key, a webhook secret, or invoice
28
+ # finalization behavior.
15
29
  # @return [MetronomeSDK::Resources::V1::PricingUnits]
16
30
  attr_reader :pricing_units
17
31
 
18
32
  # @return [MetronomeSDK::Resources::V1::Customers]
19
33
  attr_reader :customers
20
34
 
35
+ # [Customers](https://docs.metronome.com/provisioning/create-customers/) in
36
+ # Metronome represent your users for all billing and reporting. Use these
37
+ # endpoints to create, retrieve, update, and archive customers and their billing
38
+ # configuration.
21
39
  # @return [MetronomeSDK::Resources::V1::Dashboards]
22
40
  attr_reader :dashboards
23
41
 
42
+ # [Usage events](https://docs.metronome.com/connecting-metronome/send-usage-data/)
43
+ # are the basis for billable metrics. Use these endpoints to send usage events to
44
+ # Metronome and retrieve aggregated event data.
24
45
  # @return [MetronomeSDK::Resources::V1::Usage]
25
46
  attr_reader :usage
26
47
 
48
+ # [Security](https://docs.metronome.com/developer-resources/security/) endpoints
49
+ # allow you to retrieve security-related data.
27
50
  # @return [MetronomeSDK::Resources::V1::AuditLogs]
28
51
  attr_reader :audit_logs
29
52
 
53
+ # [Custom fields](https://docs.metronome.com/integrations/custom-fields/) enable
54
+ # adding additional data to Metronome entities. Use these endpoints to create,
55
+ # retrieve, update, and delete custom fields.
30
56
  # @return [MetronomeSDK::Resources::V1::CustomFields]
31
57
  attr_reader :custom_fields
32
58
 
59
+ # [Billable metrics](https://docs.metronome.com/understanding-metronome/how-metronome-works#billable-metrics)
60
+ # in Metronome represent the various consumption components that Metronome meters
61
+ # and aggregates.
33
62
  # @return [MetronomeSDK::Resources::V1::BillableMetrics]
34
63
  attr_reader :billable_metrics
35
64
 
65
+ # [Security](https://docs.metronome.com/developer-resources/security/) endpoints
66
+ # allow you to retrieve security-related data.
36
67
  # @return [MetronomeSDK::Resources::V1::Services]
37
68
  attr_reader :services
38
69
 
70
+ # [Invoices](https://docs.metronome.com/invoicing/) reflect how much a customer
71
+ # spent during a period, which is the basis for billing. Metronome automatically
72
+ # generates invoices based upon your pricing, packaging, and usage events. Use
73
+ # these endpoints to retrieve invoices.
39
74
  # @return [MetronomeSDK::Resources::V1::Invoices]
40
75
  attr_reader :invoices
41
76
 
42
77
  # @return [MetronomeSDK::Resources::V1::Contracts]
43
78
  attr_reader :contracts
44
79
 
80
+ # @return [MetronomeSDK::Resources::V1::Packages]
81
+ attr_reader :packages
82
+
45
83
  # @return [MetronomeSDK::Resources::V1::Payments]
46
84
  attr_reader :payments
47
85
 
86
+ # Use these endpoints to configure a billing API key, a webhook secret, or invoice
87
+ # finalization behavior.
48
88
  # @return [MetronomeSDK::Resources::V1::Settings]
49
89
  attr_reader :settings
50
90
 
@@ -66,6 +106,7 @@ module MetronomeSDK
66
106
  @services = MetronomeSDK::Resources::V1::Services.new(client: client)
67
107
  @invoices = MetronomeSDK::Resources::V1::Invoices.new(client: client)
68
108
  @contracts = MetronomeSDK::Resources::V1::Contracts.new(client: client)
109
+ @packages = MetronomeSDK::Resources::V1::Packages.new(client: client)
69
110
  @payments = MetronomeSDK::Resources::V1::Payments.new(client: client)
70
111
  @settings = MetronomeSDK::Resources::V1::Settings.new(client: client)
71
112
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MetronomeSDK
4
- VERSION = "3.1.0"
4
+ VERSION = "3.2.0"
5
5
  end
data/lib/metronome_sdk.rb CHANGED
@@ -257,6 +257,16 @@ require_relative "metronome_sdk/models/v1/invoice_regenerate_params"
257
257
  require_relative "metronome_sdk/models/v1/invoice_regenerate_response"
258
258
  require_relative "metronome_sdk/models/v1/invoice_void_params"
259
259
  require_relative "metronome_sdk/models/v1/invoice_void_response"
260
+ require_relative "metronome_sdk/models/v1/package_archive_params"
261
+ require_relative "metronome_sdk/models/v1/package_archive_response"
262
+ require_relative "metronome_sdk/models/v1/package_create_params"
263
+ require_relative "metronome_sdk/models/v1/package_create_response"
264
+ require_relative "metronome_sdk/models/v1/package_list_contracts_on_package_params"
265
+ require_relative "metronome_sdk/models/v1/package_list_contracts_on_package_response"
266
+ require_relative "metronome_sdk/models/v1/package_list_params"
267
+ require_relative "metronome_sdk/models/v1/package_list_response"
268
+ require_relative "metronome_sdk/models/v1/package_retrieve_params"
269
+ require_relative "metronome_sdk/models/v1/package_retrieve_response"
260
270
  require_relative "metronome_sdk/models/v1/payment"
261
271
  require_relative "metronome_sdk/models/v1/payment_attempt_params"
262
272
  require_relative "metronome_sdk/models/v1/payment_attempt_response"
@@ -328,6 +338,7 @@ require_relative "metronome_sdk/resources/v1/customers/plans"
328
338
  require_relative "metronome_sdk/resources/v1/custom_fields"
329
339
  require_relative "metronome_sdk/resources/v1/dashboards"
330
340
  require_relative "metronome_sdk/resources/v1/invoices"
341
+ require_relative "metronome_sdk/resources/v1/packages"
331
342
  require_relative "metronome_sdk/resources/v1/payments"
332
343
  require_relative "metronome_sdk/resources/v1/plans"
333
344
  require_relative "metronome_sdk/resources/v1/pricing_units"
@@ -296,11 +296,31 @@ module MetronomeSDK
296
296
  end
297
297
 
298
298
  JSON_CONTENT =
299
- T.let(%r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}, Regexp)
299
+ T.let(%r{^application/(?:[a-zA-Z0-9.-]+\+)?json(?!l)}, Regexp)
300
300
  JSONL_CONTENT =
301
301
  T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp)
302
302
 
303
303
  class << self
304
+ # @api private
305
+ sig do
306
+ params(query: MetronomeSDK::Internal::AnyHash).returns(
307
+ MetronomeSDK::Internal::AnyHash
308
+ )
309
+ end
310
+ def encode_query_params(query)
311
+ end
312
+
313
+ # @api private
314
+ sig do
315
+ params(
316
+ collection: MetronomeSDK::Internal::AnyHash,
317
+ key: String,
318
+ element: T.anything
319
+ ).void
320
+ end
321
+ private def write_query_param_element!(collection, key, element)
322
+ end
323
+
304
324
  # @api private
305
325
  sig do
306
326
  params(
@@ -11,7 +11,20 @@ module MetronomeSDK
11
11
  sig { returns(MetronomeSDK::CommitRate::RateType::OrSymbol) }
12
12
  attr_accessor :rate_type
13
13
 
14
- # Commit rate price. For FLAT rate_type, this must be >=0.
14
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
15
+ sig { returns(T.nilable(MetronomeSDK::CommitRate::MinimumConfig)) }
16
+ attr_reader :minimum_config
17
+
18
+ sig do
19
+ params(
20
+ minimum_config: MetronomeSDK::CommitRate::MinimumConfig::OrHash
21
+ ).void
22
+ end
23
+ attr_writer :minimum_config
24
+
25
+ # Commit rate price. For FLAT rate_type, this must be >=0. For PERCENTAGE
26
+ # rate_type, this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0
27
+ # and <=1.
15
28
  sig { returns(T.nilable(Float)) }
16
29
  attr_reader :price
17
30
 
@@ -30,13 +43,18 @@ module MetronomeSDK
30
43
  sig do
31
44
  params(
32
45
  rate_type: MetronomeSDK::CommitRate::RateType::OrSymbol,
46
+ minimum_config: MetronomeSDK::CommitRate::MinimumConfig::OrHash,
33
47
  price: Float,
34
48
  tiers: T::Array[MetronomeSDK::Tier::OrHash]
35
49
  ).returns(T.attached_class)
36
50
  end
37
51
  def self.new(
38
52
  rate_type:,
39
- # Commit rate price. For FLAT rate_type, this must be >=0.
53
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
54
+ minimum_config: nil,
55
+ # Commit rate price. For FLAT rate_type, this must be >=0. For PERCENTAGE
56
+ # rate_type, this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0
57
+ # and <=1.
40
58
  price: nil,
41
59
  # Only set for TIERED rate_type.
42
60
  tiers: nil
@@ -47,6 +65,7 @@ module MetronomeSDK
47
65
  override.returns(
48
66
  {
49
67
  rate_type: MetronomeSDK::CommitRate::RateType::OrSymbol,
68
+ minimum_config: MetronomeSDK::CommitRate::MinimumConfig,
50
69
  price: Float,
51
70
  tiers: T::Array[MetronomeSDK::Tier]
52
71
  }
@@ -85,6 +104,28 @@ module MetronomeSDK
85
104
  def self.values
86
105
  end
87
106
  end
107
+
108
+ class MinimumConfig < MetronomeSDK::Internal::Type::BaseModel
109
+ OrHash =
110
+ T.type_alias do
111
+ T.any(
112
+ MetronomeSDK::CommitRate::MinimumConfig,
113
+ MetronomeSDK::Internal::AnyHash
114
+ )
115
+ end
116
+
117
+ sig { returns(Float) }
118
+ attr_accessor :minimum
119
+
120
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
121
+ sig { params(minimum: Float).returns(T.attached_class) }
122
+ def self.new(minimum:)
123
+ end
124
+
125
+ sig { override.returns({ minimum: Float }) }
126
+ def to_hash
127
+ end
128
+ end
88
129
  end
89
130
  end
90
131
  end
@@ -86,13 +86,6 @@ module MetronomeSDK
86
86
  end
87
87
  attr_writer :prepaid_balance_threshold_configuration
88
88
 
89
- # Priority of the contract.
90
- sig { returns(T.nilable(Float)) }
91
- attr_reader :priority
92
-
93
- sig { params(priority: Float).void }
94
- attr_writer :priority
95
-
96
89
  # Determines which scheduled and commit charges to consolidate onto the Contract's
97
90
  # usage invoice. The charge's `timestamp` must match the usage invoice's
98
91
  # `ending_before` date for consolidation to occur. This field cannot be modified
@@ -158,7 +151,6 @@ module MetronomeSDK
158
151
  package_id: String,
159
152
  prepaid_balance_threshold_configuration:
160
153
  MetronomeSDK::PrepaidBalanceThresholdConfiguration::OrHash,
161
- priority: Float,
162
154
  scheduled_charges_on_usage_invoices:
163
155
  MetronomeSDK::Contract::ScheduledChargesOnUsageInvoices::OrSymbol,
164
156
  spend_threshold_configuration:
@@ -183,8 +175,6 @@ module MetronomeSDK
183
175
  # ID of the package this contract was created from, if applicable.
184
176
  package_id: nil,
185
177
  prepaid_balance_threshold_configuration: nil,
186
- # Priority of the contract.
187
- priority: nil,
188
178
  # Determines which scheduled and commit charges to consolidate onto the Contract's
189
179
  # usage invoice. The charge's `timestamp` must match the usage invoice's
190
180
  # `ending_before` date for consolidation to occur. This field cannot be modified
@@ -216,7 +206,6 @@ module MetronomeSDK
216
206
  package_id: String,
217
207
  prepaid_balance_threshold_configuration:
218
208
  MetronomeSDK::PrepaidBalanceThresholdConfiguration,
219
- priority: Float,
220
209
  scheduled_charges_on_usage_invoices:
221
210
  MetronomeSDK::Contract::ScheduledChargesOnUsageInvoices::TaggedSymbol,
222
211
  spend_threshold_configuration:
@@ -2724,6 +2724,24 @@ module MetronomeSDK
2724
2724
  sig { params(is_prorated: T::Boolean).void }
2725
2725
  attr_writer :is_prorated
2726
2726
 
2727
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
2728
+ sig do
2729
+ returns(
2730
+ T.nilable(
2731
+ MetronomeSDK::ContractV2::Override::OverwriteRate::MinimumConfig
2732
+ )
2733
+ )
2734
+ end
2735
+ attr_reader :minimum_config
2736
+
2737
+ sig do
2738
+ params(
2739
+ minimum_config:
2740
+ MetronomeSDK::ContractV2::Override::OverwriteRate::MinimumConfig::OrHash
2741
+ ).void
2742
+ end
2743
+ attr_writer :minimum_config
2744
+
2727
2745
  # Default price. For FLAT rate_type, this must be >=0. For PERCENTAGE rate_type,
2728
2746
  # this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0 and <=1.
2729
2747
  sig { returns(T.nilable(Float)) }
@@ -2753,6 +2771,8 @@ module MetronomeSDK
2753
2771
  credit_type: MetronomeSDK::CreditTypeData::OrHash,
2754
2772
  custom_rate: T::Hash[Symbol, T.anything],
2755
2773
  is_prorated: T::Boolean,
2774
+ minimum_config:
2775
+ MetronomeSDK::ContractV2::Override::OverwriteRate::MinimumConfig::OrHash,
2756
2776
  price: Float,
2757
2777
  quantity: Float,
2758
2778
  tiers: T::Array[MetronomeSDK::Tier::OrHash]
@@ -2767,6 +2787,8 @@ module MetronomeSDK
2767
2787
  # Default proration configuration. Only valid for SUBSCRIPTION rate_type. Must be
2768
2788
  # set to true.
2769
2789
  is_prorated: nil,
2790
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
2791
+ minimum_config: nil,
2770
2792
  # Default price. For FLAT rate_type, this must be >=0. For PERCENTAGE rate_type,
2771
2793
  # this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0 and <=1.
2772
2794
  price: nil,
@@ -2785,6 +2807,8 @@ module MetronomeSDK
2785
2807
  credit_type: MetronomeSDK::CreditTypeData,
2786
2808
  custom_rate: T::Hash[Symbol, T.anything],
2787
2809
  is_prorated: T::Boolean,
2810
+ minimum_config:
2811
+ MetronomeSDK::ContractV2::Override::OverwriteRate::MinimumConfig,
2788
2812
  price: Float,
2789
2813
  quantity: Float,
2790
2814
  tiers: T::Array[MetronomeSDK::Tier]
@@ -2847,6 +2871,28 @@ module MetronomeSDK
2847
2871
  def self.values
2848
2872
  end
2849
2873
  end
2874
+
2875
+ class MinimumConfig < MetronomeSDK::Internal::Type::BaseModel
2876
+ OrHash =
2877
+ T.type_alias do
2878
+ T.any(
2879
+ MetronomeSDK::ContractV2::Override::OverwriteRate::MinimumConfig,
2880
+ MetronomeSDK::Internal::AnyHash
2881
+ )
2882
+ end
2883
+
2884
+ sig { returns(Float) }
2885
+ attr_accessor :minimum
2886
+
2887
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
2888
+ sig { params(minimum: Float).returns(T.attached_class) }
2889
+ def self.new(minimum:)
2890
+ end
2891
+
2892
+ sig { override.returns({ minimum: Float }) }
2893
+ def to_hash
2894
+ end
2895
+ end
2850
2896
  end
2851
2897
 
2852
2898
  class Product < MetronomeSDK::Internal::Type::BaseModel
@@ -33,6 +33,17 @@ module MetronomeSDK
33
33
  sig { params(is_prorated: T::Boolean).void }
34
34
  attr_writer :is_prorated
35
35
 
36
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
37
+ sig { returns(T.nilable(MetronomeSDK::OverwriteRate::MinimumConfig)) }
38
+ attr_reader :minimum_config
39
+
40
+ sig do
41
+ params(
42
+ minimum_config: MetronomeSDK::OverwriteRate::MinimumConfig::OrHash
43
+ ).void
44
+ end
45
+ attr_writer :minimum_config
46
+
36
47
  # Default price. For FLAT rate_type, this must be >=0. For PERCENTAGE rate_type,
37
48
  # this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0 and <=1.
38
49
  sig { returns(T.nilable(Float)) }
@@ -61,6 +72,7 @@ module MetronomeSDK
61
72
  credit_type: MetronomeSDK::CreditTypeData::OrHash,
62
73
  custom_rate: T::Hash[Symbol, T.anything],
63
74
  is_prorated: T::Boolean,
75
+ minimum_config: MetronomeSDK::OverwriteRate::MinimumConfig::OrHash,
64
76
  price: Float,
65
77
  quantity: Float,
66
78
  tiers: T::Array[MetronomeSDK::Tier::OrHash]
@@ -75,6 +87,8 @@ module MetronomeSDK
75
87
  # Default proration configuration. Only valid for SUBSCRIPTION rate_type. Must be
76
88
  # set to true.
77
89
  is_prorated: nil,
90
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
91
+ minimum_config: nil,
78
92
  # Default price. For FLAT rate_type, this must be >=0. For PERCENTAGE rate_type,
79
93
  # this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0 and <=1.
80
94
  price: nil,
@@ -92,6 +106,7 @@ module MetronomeSDK
92
106
  credit_type: MetronomeSDK::CreditTypeData,
93
107
  custom_rate: T::Hash[Symbol, T.anything],
94
108
  is_prorated: T::Boolean,
109
+ minimum_config: MetronomeSDK::OverwriteRate::MinimumConfig,
95
110
  price: Float,
96
111
  quantity: Float,
97
112
  tiers: T::Array[MetronomeSDK::Tier]
@@ -137,6 +152,28 @@ module MetronomeSDK
137
152
  def self.values
138
153
  end
139
154
  end
155
+
156
+ class MinimumConfig < MetronomeSDK::Internal::Type::BaseModel
157
+ OrHash =
158
+ T.type_alias do
159
+ T.any(
160
+ MetronomeSDK::OverwriteRate::MinimumConfig,
161
+ MetronomeSDK::Internal::AnyHash
162
+ )
163
+ end
164
+
165
+ sig { returns(Float) }
166
+ attr_accessor :minimum
167
+
168
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
169
+ sig { params(minimum: Float).returns(T.attached_class) }
170
+ def self.new(minimum:)
171
+ end
172
+
173
+ sig { override.returns({ minimum: Float }) }
174
+ def to_hash
175
+ end
176
+ end
140
177
  end
141
178
  end
142
179
  end
@@ -293,11 +293,6 @@ module MetronomeSDK
293
293
  T.let(:STRIPE, MetronomeSDK::PaymentGateConfig::TaxType::TaggedSymbol)
294
294
  ANROK =
295
295
  T.let(:ANROK, MetronomeSDK::PaymentGateConfig::TaxType::TaggedSymbol)
296
- AVALARA =
297
- T.let(
298
- :AVALARA,
299
- MetronomeSDK::PaymentGateConfig::TaxType::TaggedSymbol
300
- )
301
296
  PRECALCULATED =
302
297
  T.let(
303
298
  :PRECALCULATED,
@@ -302,11 +302,6 @@ module MetronomeSDK
302
302
  :ANROK,
303
303
  MetronomeSDK::PaymentGateConfigV2::TaxType::TaggedSymbol
304
304
  )
305
- AVALARA =
306
- T.let(
307
- :AVALARA,
308
- MetronomeSDK::PaymentGateConfigV2::TaxType::TaggedSymbol
309
- )
310
305
  PRECALCULATED =
311
306
  T.let(
312
307
  :PRECALCULATED,
@@ -33,6 +33,15 @@ module MetronomeSDK
33
33
  sig { params(is_prorated: T::Boolean).void }
34
34
  attr_writer :is_prorated
35
35
 
36
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
37
+ sig { returns(T.nilable(MetronomeSDK::Rate::MinimumConfig)) }
38
+ attr_reader :minimum_config
39
+
40
+ sig do
41
+ params(minimum_config: MetronomeSDK::Rate::MinimumConfig::OrHash).void
42
+ end
43
+ attr_writer :minimum_config
44
+
36
45
  # Default price. For FLAT rate_type, this must be >=0. For PERCENTAGE rate_type,
37
46
  # this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0 and <=1.
38
47
  sig { returns(T.nilable(Float)) }
@@ -69,6 +78,7 @@ module MetronomeSDK
69
78
  credit_type: MetronomeSDK::CreditTypeData::OrHash,
70
79
  custom_rate: T::Hash[Symbol, T.anything],
71
80
  is_prorated: T::Boolean,
81
+ minimum_config: MetronomeSDK::Rate::MinimumConfig::OrHash,
72
82
  price: Float,
73
83
  pricing_group_values: T::Hash[Symbol, String],
74
84
  quantity: Float,
@@ -84,6 +94,8 @@ module MetronomeSDK
84
94
  # Default proration configuration. Only valid for SUBSCRIPTION rate_type. Must be
85
95
  # set to true.
86
96
  is_prorated: nil,
97
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
98
+ minimum_config: nil,
87
99
  # Default price. For FLAT rate_type, this must be >=0. For PERCENTAGE rate_type,
88
100
  # this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0 and <=1.
89
101
  price: nil,
@@ -104,6 +116,7 @@ module MetronomeSDK
104
116
  credit_type: MetronomeSDK::CreditTypeData,
105
117
  custom_rate: T::Hash[Symbol, T.anything],
106
118
  is_prorated: T::Boolean,
119
+ minimum_config: MetronomeSDK::Rate::MinimumConfig,
107
120
  price: Float,
108
121
  pricing_group_values: T::Hash[Symbol, String],
109
122
  quantity: Float,
@@ -137,6 +150,28 @@ module MetronomeSDK
137
150
  def self.values
138
151
  end
139
152
  end
153
+
154
+ class MinimumConfig < MetronomeSDK::Internal::Type::BaseModel
155
+ OrHash =
156
+ T.type_alias do
157
+ T.any(
158
+ MetronomeSDK::Rate::MinimumConfig,
159
+ MetronomeSDK::Internal::AnyHash
160
+ )
161
+ end
162
+
163
+ sig { returns(Float) }
164
+ attr_accessor :minimum
165
+
166
+ # Only set for TIERED_PERCENTAGE or PERCENTAGE rate_type.
167
+ sig { params(minimum: Float).returns(T.attached_class) }
168
+ def self.new(minimum:)
169
+ end
170
+
171
+ sig { override.returns({ minimum: Float }) }
172
+ def to_hash
173
+ end
174
+ end
140
175
  end
141
176
  end
142
177
  end