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
@@ -4,6 +4,10 @@ module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
6
  class Customers
7
+ # [Invoices](https://docs.metronome.com/invoicing/) reflect how much a customer
8
+ # spent during a period, which is the basis for billing. Metronome automatically
9
+ # generates invoices based upon your pricing, packaging, and usage events. Use
10
+ # these endpoints to retrieve invoices.
7
11
  class Invoices
8
12
  # Some parameter documentations has been truncated, see
9
13
  # {MetronomeSDK::Models::V1::Customers::InvoiceRetrieveParams} for more details.
@@ -64,6 +68,7 @@ module MetronomeSDK
64
68
  # @see MetronomeSDK::Models::V1::Customers::InvoiceRetrieveParams
65
69
  def retrieve(params)
66
70
  parsed, options = MetronomeSDK::V1::Customers::InvoiceRetrieveParams.dump_request(params)
71
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
67
72
  customer_id =
68
73
  parsed.delete(:customer_id) do
69
74
  raise ArgumentError.new("missing required path argument #{_1}")
@@ -75,7 +80,7 @@ module MetronomeSDK
75
80
  @client.request(
76
81
  method: :get,
77
82
  path: ["v1/customers/%1$s/invoices/%2$s", customer_id, invoice_id],
78
- query: parsed,
83
+ query: query,
79
84
  model: MetronomeSDK::Models::V1::Customers::InvoiceRetrieveResponse,
80
85
  options: options
81
86
  )
@@ -158,6 +163,7 @@ module MetronomeSDK
158
163
  # @see MetronomeSDK::Models::V1::Customers::InvoiceListParams
159
164
  def list(params)
160
165
  parsed, options = MetronomeSDK::V1::Customers::InvoiceListParams.dump_request(params)
166
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
161
167
  customer_id =
162
168
  parsed.delete(:customer_id) do
163
169
  raise ArgumentError.new("missing required path argument #{_1}")
@@ -165,7 +171,7 @@ module MetronomeSDK
165
171
  @client.request(
166
172
  method: :get,
167
173
  path: ["v1/customers/%1$s/invoices", customer_id],
168
- query: parsed,
174
+ query: query,
169
175
  page: MetronomeSDK::Internal::CursorPage,
170
176
  model: MetronomeSDK::V1::Customers::Invoice,
171
177
  options: options
@@ -286,6 +292,7 @@ module MetronomeSDK
286
292
  # @see MetronomeSDK::Models::V1::Customers::InvoiceListBreakdownsParams
287
293
  def list_breakdowns(params)
288
294
  parsed, options = MetronomeSDK::V1::Customers::InvoiceListBreakdownsParams.dump_request(params)
295
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
289
296
  customer_id =
290
297
  parsed.delete(:customer_id) do
291
298
  raise ArgumentError.new("missing required path argument #{_1}")
@@ -293,7 +300,7 @@ module MetronomeSDK
293
300
  @client.request(
294
301
  method: :get,
295
302
  path: ["v1/customers/%1$s/invoices/breakdowns", customer_id],
296
- query: parsed,
303
+ query: query,
297
304
  page: MetronomeSDK::Internal::CursorPage,
298
305
  model: MetronomeSDK::Models::V1::Customers::InvoiceListBreakdownsResponse,
299
306
  options: options
@@ -4,6 +4,8 @@ module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
6
  class Customers
7
+ # Named schedules are used for storing custom data that can change over time.
8
+ # Named schedules are often used in custom pricing logic.
7
9
  class NamedSchedules
8
10
  # Some parameter documentations has been truncated, see
9
11
  # {MetronomeSDK::Models::V1::Customers::NamedScheduleRetrieveParams} for more
@@ -4,6 +4,10 @@ module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
6
  class Customers
7
+ # [Plans](https://docs.metronome.com/pricing-and-packaging/create-plans/)
8
+ # determine the base pricing for a customer. Use these endpoints to add a plan to
9
+ # a customer, end a customer plan, retrieve plans, and retrieve plan details.
10
+ # Create plans in the [Metronome app](https://app.metronome.com/plans).
7
11
  class Plans
8
12
  # List the given customer's plans in reverse-chronological order. This is a Plans
9
13
  # (deprecated) endpoint. New clients should implement using Contracts.
@@ -23,6 +27,7 @@ module MetronomeSDK
23
27
  # @see MetronomeSDK::Models::V1::Customers::PlanListParams
24
28
  def list(params)
25
29
  parsed, options = MetronomeSDK::V1::Customers::PlanListParams.dump_request(params)
30
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
26
31
  customer_id =
27
32
  parsed.delete(:customer_id) do
28
33
  raise ArgumentError.new("missing required path argument #{_1}")
@@ -30,7 +35,7 @@ module MetronomeSDK
30
35
  @client.request(
31
36
  method: :get,
32
37
  path: ["v1/customers/%1$s/plans", customer_id],
33
- query: parsed,
38
+ query: query,
34
39
  page: MetronomeSDK::Internal::CursorPage,
35
40
  model: MetronomeSDK::Models::V1::Customers::PlanListResponse,
36
41
  options: options
@@ -147,6 +152,7 @@ module MetronomeSDK
147
152
  # @see MetronomeSDK::Models::V1::Customers::PlanListPriceAdjustmentsParams
148
153
  def list_price_adjustments(params)
149
154
  parsed, options = MetronomeSDK::V1::Customers::PlanListPriceAdjustmentsParams.dump_request(params)
155
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
150
156
  customer_id =
151
157
  parsed.delete(:customer_id) do
152
158
  raise ArgumentError.new("missing required path argument #{_1}")
@@ -158,7 +164,7 @@ module MetronomeSDK
158
164
  @client.request(
159
165
  method: :get,
160
166
  path: ["v1/customers/%1$s/plans/%2$s/priceAdjustments", customer_id, customer_plan_id],
161
- query: parsed,
167
+ query: query,
162
168
  page: MetronomeSDK::Internal::CursorPage,
163
169
  model: MetronomeSDK::Models::V1::Customers::PlanListPriceAdjustmentsResponse,
164
170
  options: options
@@ -4,24 +4,45 @@ module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
6
  class Customers
7
+ # [Alerts](https://docs.metronome.com/connecting-metronome/alerts/) monitor
8
+ # customer spending, balances, and other billing factors. Use these endpoints to
9
+ # create, retrieve, and archive customer alerts. To view sample alert payloads by
10
+ # alert type, navigate
11
+ # [here.](https://docs.metronome.com/manage-product-access/create-manage-alerts/#webhook-notifications)
7
12
  # @return [MetronomeSDK::Resources::V1::Customers::Alerts]
8
13
  attr_reader :alerts
9
14
 
15
+ # [Plans](https://docs.metronome.com/pricing-and-packaging/create-plans/)
16
+ # determine the base pricing for a customer. Use these endpoints to add a plan to
17
+ # a customer, end a customer plan, retrieve plans, and retrieve plan details.
18
+ # Create plans in the [Metronome app](https://app.metronome.com/plans).
10
19
  # @return [MetronomeSDK::Resources::V1::Customers::Plans]
11
20
  attr_reader :plans
12
21
 
22
+ # [Invoices](https://docs.metronome.com/invoicing/) reflect how much a customer
23
+ # spent during a period, which is the basis for billing. Metronome automatically
24
+ # generates invoices based upon your pricing, packaging, and usage events. Use
25
+ # these endpoints to retrieve invoices.
13
26
  # @return [MetronomeSDK::Resources::V1::Customers::Invoices]
14
27
  attr_reader :invoices
15
28
 
29
+ # [Customers](https://docs.metronome.com/provisioning/create-customers/) in
30
+ # Metronome represent your users for all billing and reporting. Use these
31
+ # endpoints to create, retrieve, update, and archive customers and their billing
32
+ # configuration.
16
33
  # @return [MetronomeSDK::Resources::V1::Customers::BillingConfig]
17
34
  attr_reader :billing_config
18
35
 
36
+ # Credits and commits are used to manage customer balances.
19
37
  # @return [MetronomeSDK::Resources::V1::Customers::Commits]
20
38
  attr_reader :commits
21
39
 
40
+ # Credits and commits are used to manage customer balances.
22
41
  # @return [MetronomeSDK::Resources::V1::Customers::Credits]
23
42
  attr_reader :credits
24
43
 
44
+ # Named schedules are used for storing custom data that can change over time.
45
+ # Named schedules are often used in custom pricing logic.
25
46
  # @return [MetronomeSDK::Resources::V1::Customers::NamedSchedules]
26
47
  attr_reader :named_schedules
27
48
 
@@ -155,10 +176,11 @@ module MetronomeSDK
155
176
  # @see MetronomeSDK::Models::V1::CustomerListParams
156
177
  def list(params = {})
157
178
  parsed, options = MetronomeSDK::V1::CustomerListParams.dump_request(params)
179
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
158
180
  @client.request(
159
181
  method: :get,
160
182
  path: "v1/customers",
161
- query: parsed,
183
+ query: query,
162
184
  page: MetronomeSDK::Internal::CursorPage,
163
185
  model: MetronomeSDK::V1::CustomerDetail,
164
186
  options: options
@@ -226,6 +248,7 @@ module MetronomeSDK
226
248
  # @see MetronomeSDK::Models::V1::CustomerListBillableMetricsParams
227
249
  def list_billable_metrics(params)
228
250
  parsed, options = MetronomeSDK::V1::CustomerListBillableMetricsParams.dump_request(params)
251
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
229
252
  customer_id =
230
253
  parsed.delete(:customer_id) do
231
254
  raise ArgumentError.new("missing required path argument #{_1}")
@@ -233,7 +256,7 @@ module MetronomeSDK
233
256
  @client.request(
234
257
  method: :get,
235
258
  path: ["v1/customers/%1$s/billable-metrics", customer_id],
236
- query: parsed,
259
+ query: query,
237
260
  page: MetronomeSDK::Internal::CursorPage,
238
261
  model: MetronomeSDK::Models::V1::CustomerListBillableMetricsResponse,
239
262
  options: options
@@ -264,6 +287,7 @@ module MetronomeSDK
264
287
  # @see MetronomeSDK::Models::V1::CustomerListCostsParams
265
288
  def list_costs(params)
266
289
  parsed, options = MetronomeSDK::V1::CustomerListCostsParams.dump_request(params)
290
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
267
291
  customer_id =
268
292
  parsed.delete(:customer_id) do
269
293
  raise ArgumentError.new("missing required path argument #{_1}")
@@ -271,7 +295,7 @@ module MetronomeSDK
271
295
  @client.request(
272
296
  method: :get,
273
297
  path: ["v1/customers/%1$s/costs", customer_id],
274
- query: parsed,
298
+ query: query,
275
299
  page: MetronomeSDK::Internal::CursorPage,
276
300
  model: MetronomeSDK::Models::V1::CustomerListCostsResponse,
277
301
  options: options
@@ -3,6 +3,10 @@
3
3
  module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
+ # [Customers](https://docs.metronome.com/provisioning/create-customers/) in
7
+ # Metronome represent your users for all billing and reporting. Use these
8
+ # endpoints to create, retrieve, update, and archive customers and their billing
9
+ # configuration.
6
10
  class Dashboards
7
11
  # Generate secure, embeddable dashboard URLs that allow you to seamlessly
8
12
  # integrate Metronome's billing visualizations directly into your application.
@@ -3,6 +3,10 @@
3
3
  module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
+ # [Invoices](https://docs.metronome.com/invoicing/) reflect how much a customer
7
+ # spent during a period, which is the basis for billing. Metronome automatically
8
+ # generates invoices based upon your pricing, packaging, and usage events. Use
9
+ # these endpoints to retrieve invoices.
6
10
  class Invoices
7
11
  # This endpoint regenerates a voided invoice and recalculates the invoice based on
8
12
  # up-to-date rates, available balances, and other fees regardless of the billing
@@ -0,0 +1,269 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MetronomeSDK
4
+ module Resources
5
+ class V1
6
+ class Packages
7
+ # Some parameter documentations has been truncated, see
8
+ # {MetronomeSDK::Models::V1::PackageCreateParams} for more details.
9
+ #
10
+ # Create a package that defines a set of reusable, time-relative contract terms
11
+ # that can be used across cohorts of customers. Packages provide an abstraction
12
+ # layer on top of rate cards to provide an easy way to provision customers with
13
+ # standard pricing.
14
+ #
15
+ # ### **Use this endpoint to:**
16
+ #
17
+ # - Model standard pay-as-you-go pricing packages that can be easily reused across
18
+ # customers
19
+ # - Define standardized contract terms and discounting for sales-led motions
20
+ # - Set aliases for the package to facilitate easy package transition. Aliases are
21
+ # human-readable names that you can use in the place of the id of the package
22
+ # when provisioning a customer’s contract. By using an alias, you can easily
23
+ # create a contract and provision a customer by choosing the “Starter Plan”
24
+ # package, without storing the package ID in your internal systems. This is
25
+ # helpful when launching terms for a package, as you can create a new package
26
+ # with the “Starter Plan” alias scheduled to be assigned without updating your
27
+ # provisioning code.
28
+ #
29
+ # ### Key input fields:
30
+ #
31
+ # - `starting_at_offset`: Starting date relative to contract start. Generates the
32
+ # `starting_at` date when a contract is provisioned using a package.
33
+ # - `duration`: Duration starting from `starting_at_offset`. Generates the
34
+ # `ending_before` date when a contract is provisioned using a package.
35
+ # - `date_offset`: Date relative to contract start. Used for point-in-time dates
36
+ # without a duration.
37
+ # - `aliases`: Human-readable name to use when provisioning contracts with a
38
+ # package.
39
+ #
40
+ # ### Usage guidelines:
41
+ #
42
+ # - Use packages for standard self-serve use cases where customers have consistent
43
+ # terms. For customers with negotiated custom contract terms, use the
44
+ # `createContract` endpoint for maximum flexibility.
45
+ # - Billing provider configuration can be set when creating a package by using
46
+ # `billing_provider` and `delivery_method`. To provision a customer successfully
47
+ # with a package, the customer must have one and only one billing provider
48
+ # configuration that matches the billing provider configuration set on the
49
+ # package.
50
+ # - A package alias can only be used by one package at a time. If you create a new
51
+ # package with an alias that is already in use by another package, the original
52
+ # package’s alias schedule will be updated. The alias will reference the package
53
+ # to which it was most recently assigned.
54
+ # - Terms can only be specified using times relative to the contract start date.
55
+ # Supported granularities are: `days`, `weeks`, `months`, `years`
56
+ # - Packages cannot be edited once created. Use the rate card to easily add new
57
+ # rates across all of your customers or make direct edits to a contract after
58
+ # provisioning with a package. Edited contracts will still be associated with
59
+ # the package used during provisioning.
60
+ #
61
+ # @overload create(name:, aliases: nil, billing_anchor_date: nil, billing_provider: nil, commits: nil, contract_name: nil, credits: nil, delivery_method: nil, duration: nil, multiplier_override_prioritization: nil, net_payment_terms_days: nil, overrides: nil, prepaid_balance_threshold_configuration: nil, rate_card_alias: nil, rate_card_id: nil, recurring_commits: nil, recurring_credits: nil, scheduled_charges: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, subscriptions: nil, uniqueness_key: nil, usage_statement_schedule: nil, request_options: {})
62
+ #
63
+ # @param name [String]
64
+ #
65
+ # @param aliases [Array<MetronomeSDK::Models::V1::PackageCreateParams::Alias>] Reference this alias when creating a contract. If the same alias is assigned to
66
+ #
67
+ # @param billing_anchor_date [Symbol, MetronomeSDK::Models::V1::PackageCreateParams::BillingAnchorDate]
68
+ #
69
+ # @param billing_provider [Symbol, MetronomeSDK::Models::V1::PackageCreateParams::BillingProvider]
70
+ #
71
+ # @param commits [Array<MetronomeSDK::Models::V1::PackageCreateParams::Commit>]
72
+ #
73
+ # @param contract_name [String]
74
+ #
75
+ # @param credits [Array<MetronomeSDK::Models::V1::PackageCreateParams::Credit>]
76
+ #
77
+ # @param delivery_method [Symbol, MetronomeSDK::Models::V1::PackageCreateParams::DeliveryMethod]
78
+ #
79
+ # @param duration [MetronomeSDK::Models::V1::PackageCreateParams::Duration]
80
+ #
81
+ # @param multiplier_override_prioritization [Symbol, MetronomeSDK::Models::V1::PackageCreateParams::MultiplierOverridePrioritization] Defaults to LOWEST_MULTIPLIER, which applies the greatest discount to list price
82
+ #
83
+ # @param net_payment_terms_days [Float]
84
+ #
85
+ # @param overrides [Array<MetronomeSDK::Models::V1::PackageCreateParams::Override>]
86
+ #
87
+ # @param prepaid_balance_threshold_configuration [MetronomeSDK::Models::PrepaidBalanceThresholdConfiguration]
88
+ #
89
+ # @param rate_card_alias [String] Selects the rate card linked to the specified alias as of the contract's start d
90
+ #
91
+ # @param rate_card_id [String]
92
+ #
93
+ # @param recurring_commits [Array<MetronomeSDK::Models::V1::PackageCreateParams::RecurringCommit>]
94
+ #
95
+ # @param recurring_credits [Array<MetronomeSDK::Models::V1::PackageCreateParams::RecurringCredit>]
96
+ #
97
+ # @param scheduled_charges [Array<MetronomeSDK::Models::V1::PackageCreateParams::ScheduledCharge>]
98
+ #
99
+ # @param scheduled_charges_on_usage_invoices [Symbol, MetronomeSDK::Models::V1::PackageCreateParams::ScheduledChargesOnUsageInvoices] Determines which scheduled and commit charges to consolidate onto the Contract's
100
+ #
101
+ # @param spend_threshold_configuration [MetronomeSDK::Models::SpendThresholdConfiguration]
102
+ #
103
+ # @param subscriptions [Array<MetronomeSDK::Models::V1::PackageCreateParams::Subscription>]
104
+ #
105
+ # @param uniqueness_key [String] Prevents the creation of duplicates. If a request to create a record is made wit
106
+ #
107
+ # @param usage_statement_schedule [MetronomeSDK::Models::V1::PackageCreateParams::UsageStatementSchedule]
108
+ #
109
+ # @param request_options [MetronomeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
110
+ #
111
+ # @return [MetronomeSDK::Models::V1::PackageCreateResponse]
112
+ #
113
+ # @see MetronomeSDK::Models::V1::PackageCreateParams
114
+ def create(params)
115
+ parsed, options = MetronomeSDK::V1::PackageCreateParams.dump_request(params)
116
+ @client.request(
117
+ method: :post,
118
+ path: "v1/packages/create",
119
+ body: parsed,
120
+ model: MetronomeSDK::Models::V1::PackageCreateResponse,
121
+ options: options
122
+ )
123
+ end
124
+
125
+ # Gets the details for a specific package, including name, aliases, duration, and
126
+ # terms. Use this endpoint to understand a package’s alias schedule, or display a
127
+ # specific package’s details to end customers.
128
+ #
129
+ # @overload retrieve(package_id:, request_options: {})
130
+ #
131
+ # @param package_id [String]
132
+ # @param request_options [MetronomeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
133
+ #
134
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse]
135
+ #
136
+ # @see MetronomeSDK::Models::V1::PackageRetrieveParams
137
+ def retrieve(params)
138
+ parsed, options = MetronomeSDK::V1::PackageRetrieveParams.dump_request(params)
139
+ @client.request(
140
+ method: :post,
141
+ path: "v1/packages/get",
142
+ body: parsed,
143
+ model: MetronomeSDK::Models::V1::PackageRetrieveResponse,
144
+ options: options
145
+ )
146
+ end
147
+
148
+ # Lists all packages with details including name, aliases, duration, and terms. To
149
+ # view contracts on a specific package, use the `listContractsOnPackage` endpoint.
150
+ #
151
+ # @overload list(limit: nil, next_page: nil, archive_filter: nil, request_options: {})
152
+ #
153
+ # @param limit [Integer] Query param: The maximum number of packages to return. Defaults to 10.
154
+ #
155
+ # @param next_page [String] Query param: Cursor that indicates where the next page of results should start.
156
+ #
157
+ # @param archive_filter [Symbol, MetronomeSDK::Models::V1::PackageListParams::ArchiveFilter] Body param: Filter packages by archived status. Defaults to NOT_ARCHIVED.
158
+ #
159
+ # @param request_options [MetronomeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
160
+ #
161
+ # @return [MetronomeSDK::Internal::CursorPage<MetronomeSDK::Models::V1::PackageListResponse>]
162
+ #
163
+ # @see MetronomeSDK::Models::V1::PackageListParams
164
+ def list(params = {})
165
+ query_params = [:limit, :next_page]
166
+ parsed, options = MetronomeSDK::V1::PackageListParams.dump_request(params)
167
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed.slice(*query_params))
168
+ @client.request(
169
+ method: :post,
170
+ path: "v1/packages/list",
171
+ query: query,
172
+ body: parsed.except(*query_params),
173
+ page: MetronomeSDK::Internal::CursorPage,
174
+ model: MetronomeSDK::Models::V1::PackageListResponse,
175
+ options: options
176
+ )
177
+ end
178
+
179
+ # Archive a package. Archived packages cannot be used to create new contracts.
180
+ # However, existing contracts associated with the package will continue to
181
+ # function as normal. Once you archive a package, you can still retrieve it in the
182
+ # UI and API, but you cannot unarchive it.
183
+ #
184
+ # @overload archive(package_id:, request_options: {})
185
+ #
186
+ # @param package_id [String] ID of the package to archive
187
+ #
188
+ # @param request_options [MetronomeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
189
+ #
190
+ # @return [MetronomeSDK::Models::V1::PackageArchiveResponse]
191
+ #
192
+ # @see MetronomeSDK::Models::V1::PackageArchiveParams
193
+ def archive(params)
194
+ parsed, options = MetronomeSDK::V1::PackageArchiveParams.dump_request(params)
195
+ @client.request(
196
+ method: :post,
197
+ path: "v1/packages/archive",
198
+ body: parsed,
199
+ model: MetronomeSDK::Models::V1::PackageArchiveResponse,
200
+ options: options
201
+ )
202
+ end
203
+
204
+ # Some parameter documentations has been truncated, see
205
+ # {MetronomeSDK::Models::V1::PackageListContractsOnPackageParams} for more
206
+ # details.
207
+ #
208
+ # For a given package, returns all contract IDs and customer IDs associated with
209
+ # the package over a specific time period.
210
+ #
211
+ # ### Use this endpoint to:
212
+ #
213
+ # - Understand which customers are provisioned on a package at any given time for
214
+ # internal cohort management
215
+ # - Manage customer migrations to a new package. For example, to migrate all
216
+ # active customers to a new package, call this endpoint, end contracts, and
217
+ # provision customers on a new package.
218
+ #
219
+ # ### **Usage guidelines:**
220
+ #
221
+ # Use the **`starting_at`**, **`covering_date`**,
222
+ # and **`include_archived`** parameters to filter the list of returned contracts.
223
+ # For example, to list only currently active contracts,
224
+ # pass **`covering_date`** equal to the current time.
225
+ #
226
+ # @overload list_contracts_on_package(package_id:, limit: nil, next_page: nil, covering_date: nil, include_archived: nil, starting_at: nil, request_options: {})
227
+ #
228
+ # @param package_id [String] Body param
229
+ #
230
+ # @param limit [Integer] Query param: Max number of results that should be returned
231
+ #
232
+ # @param next_page [String] Query param: Cursor that indicates where the next page of results should start.
233
+ #
234
+ # @param covering_date [Time] Body param: Optional RFC 3339 timestamp. Only include contracts active on the pr
235
+ #
236
+ # @param include_archived [Boolean] Body param: Default false. Determines whether to include archived contracts in t
237
+ #
238
+ # @param starting_at [Time] Body param: Optional RFC 3339 timestamp. Only include contracts that started on
239
+ #
240
+ # @param request_options [MetronomeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
241
+ #
242
+ # @return [MetronomeSDK::Internal::CursorPage<MetronomeSDK::Models::V1::PackageListContractsOnPackageResponse>]
243
+ #
244
+ # @see MetronomeSDK::Models::V1::PackageListContractsOnPackageParams
245
+ def list_contracts_on_package(params)
246
+ query_params = [:limit, :next_page]
247
+ parsed, options = MetronomeSDK::V1::PackageListContractsOnPackageParams.dump_request(params)
248
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed.slice(*query_params))
249
+ @client.request(
250
+ method: :post,
251
+ path: "v1/packages/listContractsOnPackage",
252
+ query: query,
253
+ body: parsed.except(*query_params),
254
+ page: MetronomeSDK::Internal::CursorPage,
255
+ model: MetronomeSDK::Models::V1::PackageListContractsOnPackageResponse,
256
+ options: options
257
+ )
258
+ end
259
+
260
+ # @api private
261
+ #
262
+ # @param client [MetronomeSDK::Client]
263
+ def initialize(client:)
264
+ @client = client
265
+ end
266
+ end
267
+ end
268
+ end
269
+ end
@@ -3,6 +3,10 @@
3
3
  module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
+ # [Plans](https://docs.metronome.com/pricing-and-packaging/create-plans/)
7
+ # determine the base pricing for a customer. Use these endpoints to add a plan to
8
+ # a customer, end a customer plan, retrieve plans, and retrieve plan details.
9
+ # Create plans in the [Metronome app](https://app.metronome.com/plans).
6
10
  class Plans
7
11
  # List all available plans. This is a Plans (deprecated) endpoint. New clients
8
12
  # should implement using Contracts.
@@ -20,10 +24,11 @@ module MetronomeSDK
20
24
  # @see MetronomeSDK::Models::V1::PlanListParams
21
25
  def list(params = {})
22
26
  parsed, options = MetronomeSDK::V1::PlanListParams.dump_request(params)
27
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
23
28
  @client.request(
24
29
  method: :get,
25
30
  path: "v1/plans",
26
- query: parsed,
31
+ query: query,
27
32
  page: MetronomeSDK::Internal::CursorPage,
28
33
  model: MetronomeSDK::Models::V1::PlanListResponse,
29
34
  options: options
@@ -73,6 +78,7 @@ module MetronomeSDK
73
78
  # @see MetronomeSDK::Models::V1::PlanListChargesParams
74
79
  def list_charges(params)
75
80
  parsed, options = MetronomeSDK::V1::PlanListChargesParams.dump_request(params)
81
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
76
82
  plan_id =
77
83
  parsed.delete(:plan_id) do
78
84
  raise ArgumentError.new("missing required path argument #{_1}")
@@ -80,7 +86,7 @@ module MetronomeSDK
80
86
  @client.request(
81
87
  method: :get,
82
88
  path: ["v1/planDetails/%1$s/charges", plan_id],
83
- query: parsed,
89
+ query: query,
84
90
  page: MetronomeSDK::Internal::CursorPage,
85
91
  model: MetronomeSDK::Models::V1::PlanListChargesResponse,
86
92
  options: options
@@ -111,6 +117,7 @@ module MetronomeSDK
111
117
  # @see MetronomeSDK::Models::V1::PlanListCustomersParams
112
118
  def list_customers(params)
113
119
  parsed, options = MetronomeSDK::V1::PlanListCustomersParams.dump_request(params)
120
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
114
121
  plan_id =
115
122
  parsed.delete(:plan_id) do
116
123
  raise ArgumentError.new("missing required path argument #{_1}")
@@ -118,7 +125,7 @@ module MetronomeSDK
118
125
  @client.request(
119
126
  method: :get,
120
127
  path: ["v1/planDetails/%1$s/customers", plan_id],
121
- query: parsed,
128
+ query: query,
122
129
  page: MetronomeSDK::Internal::CursorPage,
123
130
  model: MetronomeSDK::Models::V1::PlanListCustomersResponse,
124
131
  options: options
@@ -3,6 +3,8 @@
3
3
  module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
+ # Use these endpoints to configure a billing API key, a webhook secret, or invoice
7
+ # finalization behavior.
6
8
  class PricingUnits
7
9
  # List all pricing units. All fiat currency types (for example, USD or GBP) will
8
10
  # be included, as well as any custom pricing units that were configured. Custom
@@ -24,10 +26,11 @@ module MetronomeSDK
24
26
  # @see MetronomeSDK::Models::V1::PricingUnitListParams
25
27
  def list(params = {})
26
28
  parsed, options = MetronomeSDK::V1::PricingUnitListParams.dump_request(params)
29
+ query = MetronomeSDK::Internal::Util.encode_query_params(parsed)
27
30
  @client.request(
28
31
  method: :get,
29
32
  path: "v1/credit-types/list",
30
- query: parsed,
33
+ query: query,
31
34
  page: MetronomeSDK::Internal::CursorPage,
32
35
  model: MetronomeSDK::Models::V1::PricingUnitListResponse,
33
36
  options: options
@@ -3,6 +3,8 @@
3
3
  module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
+ # [Security](https://docs.metronome.com/developer-resources/security/) endpoints
7
+ # allow you to retrieve security-related data.
6
8
  class Services
7
9
  # Gets Metronome's service registry with associated IP addresses for security
8
10
  # allowlisting and firewall configuration. Use this endpoint to maintain an
@@ -4,6 +4,8 @@ module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
6
  class Settings
7
+ # Use these endpoints to configure a billing API key, a webhook secret, or invoice
8
+ # finalization behavior.
7
9
  class BillingProviders
8
10
  # Some parameter documentations has been truncated, see
9
11
  # {MetronomeSDK::Models::V1::Settings::BillingProviderCreateParams} for more
@@ -3,7 +3,11 @@
3
3
  module MetronomeSDK
4
4
  module Resources
5
5
  class V1
6
+ # Use these endpoints to configure a billing API key, a webhook secret, or invoice
7
+ # finalization behavior.
6
8
  class Settings
9
+ # Use these endpoints to configure a billing API key, a webhook secret, or invoice
10
+ # finalization behavior.
7
11
  # @return [MetronomeSDK::Resources::V1::Settings::BillingProviders]
8
12
  attr_reader :billing_providers
9
13