metronome-sdk 0.1.0.pre.alpha.2 → 0.1.0.pre.alpha.4

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 (475) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +85 -0
  3. data/README.md +120 -74
  4. data/SECURITY.md +2 -2
  5. data/lib/metronome_sdk/client.rb +4 -4
  6. data/lib/metronome_sdk/errors.rb +22 -0
  7. data/lib/metronome_sdk/internal/transport/base_client.rb +10 -2
  8. data/lib/metronome_sdk/internal/transport/pooled_net_requester.rb +3 -1
  9. data/lib/metronome_sdk/internal/type/array_of.rb +14 -1
  10. data/lib/metronome_sdk/internal/type/base_model.rb +92 -23
  11. data/lib/metronome_sdk/internal/type/boolean.rb +15 -1
  12. data/lib/metronome_sdk/internal/type/converter.rb +42 -34
  13. data/lib/metronome_sdk/internal/type/enum.rb +25 -2
  14. data/lib/metronome_sdk/internal/type/file_input.rb +13 -1
  15. data/lib/metronome_sdk/internal/type/hash_of.rb +14 -1
  16. data/lib/metronome_sdk/internal/type/union.rb +27 -7
  17. data/lib/metronome_sdk/internal/type/unknown.rb +15 -1
  18. data/lib/metronome_sdk/internal/util.rb +62 -10
  19. data/lib/metronome_sdk/internal.rb +3 -0
  20. data/lib/metronome_sdk/models/commit.rb +230 -87
  21. data/lib/metronome_sdk/models/contract_without_amendments.rb +551 -185
  22. data/lib/metronome_sdk/models/credit.rb +201 -51
  23. data/lib/metronome_sdk/models/discount.rb +5 -5
  24. data/lib/metronome_sdk/models/event_type_filter.rb +1 -1
  25. data/lib/metronome_sdk/models/override.rb +53 -34
  26. data/lib/metronome_sdk/models/pro_service.rb +2 -2
  27. data/lib/metronome_sdk/models/property_filter.rb +1 -1
  28. data/lib/metronome_sdk/models/rate.rb +9 -9
  29. data/lib/metronome_sdk/models/schedule_duration.rb +4 -4
  30. data/lib/metronome_sdk/models/schedule_point_in_time.rb +11 -11
  31. data/lib/metronome_sdk/models/scheduled_charge.rb +5 -5
  32. data/lib/metronome_sdk/models/v1/alert_archive_response.rb +2 -2
  33. data/lib/metronome_sdk/models/v1/alert_create_params.rb +15 -12
  34. data/lib/metronome_sdk/models/v1/alert_create_response.rb +2 -2
  35. data/lib/metronome_sdk/models/v1/audit_log_list_params.rb +2 -2
  36. data/lib/metronome_sdk/models/v1/billable_metric_archive_response.rb +2 -2
  37. data/lib/metronome_sdk/models/v1/billable_metric_create_params.rb +6 -6
  38. data/lib/metronome_sdk/models/v1/billable_metric_create_response.rb +2 -2
  39. data/lib/metronome_sdk/models/v1/billable_metric_list_response.rb +4 -4
  40. data/lib/metronome_sdk/models/v1/billable_metric_retrieve_response.rb +4 -4
  41. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +577 -152
  42. data/lib/metronome_sdk/models/v1/contract_amend_response.rb +2 -2
  43. data/lib/metronome_sdk/models/v1/contract_archive_response.rb +2 -2
  44. data/lib/metronome_sdk/models/v1/contract_create_historical_invoices_params.rb +12 -12
  45. data/lib/metronome_sdk/models/v1/contract_create_historical_invoices_response.rb +2 -2
  46. data/lib/metronome_sdk/models/v1/contract_create_params.rb +1317 -341
  47. data/lib/metronome_sdk/models/v1/contract_create_response.rb +2 -2
  48. data/lib/metronome_sdk/models/v1/contract_list_balances_response.rb +3 -7
  49. data/lib/metronome_sdk/models/v1/contract_list_response.rb +421 -36
  50. data/lib/metronome_sdk/models/v1/contract_retrieve_rate_schedule_params.rb +33 -5
  51. data/lib/metronome_sdk/models/v1/contract_retrieve_rate_schedule_response.rb +28 -7
  52. data/lib/metronome_sdk/models/v1/contract_retrieve_response.rb +422 -36
  53. data/lib/metronome_sdk/models/v1/contract_retrieve_subscription_quantity_history_params.rb +34 -0
  54. data/lib/metronome_sdk/models/v1/contract_retrieve_subscription_quantity_history_response.rb +81 -0
  55. data/lib/metronome_sdk/models/v1/contract_schedule_pro_services_invoice_params.rb +4 -4
  56. data/lib/metronome_sdk/models/v1/contract_schedule_pro_services_invoice_response.rb +2 -2
  57. data/lib/metronome_sdk/models/v1/contract_update_end_date_response.rb +2 -2
  58. data/lib/metronome_sdk/models/v1/contracts/product_archive_response.rb +2 -2
  59. data/lib/metronome_sdk/models/v1/contracts/product_create_params.rb +6 -6
  60. data/lib/metronome_sdk/models/v1/contracts/product_create_response.rb +2 -2
  61. data/lib/metronome_sdk/models/v1/contracts/product_list_item_state.rb +5 -5
  62. data/lib/metronome_sdk/models/v1/contracts/product_list_params.rb +4 -4
  63. data/lib/metronome_sdk/models/v1/contracts/product_list_response.rb +8 -8
  64. data/lib/metronome_sdk/models/v1/contracts/product_retrieve_response.rb +8 -8
  65. data/lib/metronome_sdk/models/v1/contracts/product_update_params.rb +4 -4
  66. data/lib/metronome_sdk/models/v1/contracts/product_update_response.rb +2 -2
  67. data/lib/metronome_sdk/models/v1/contracts/quantity_conversion.rb +3 -3
  68. data/lib/metronome_sdk/models/v1/contracts/quantity_rounding.rb +3 -3
  69. data/lib/metronome_sdk/models/v1/contracts/rate_card_archive_response.rb +2 -2
  70. data/lib/metronome_sdk/models/v1/contracts/rate_card_create_params.rb +4 -4
  71. data/lib/metronome_sdk/models/v1/contracts/rate_card_create_response.rb +2 -2
  72. data/lib/metronome_sdk/models/v1/contracts/rate_card_list_response.rb +4 -4
  73. data/lib/metronome_sdk/models/v1/contracts/rate_card_retrieve_rate_schedule_params.rb +33 -5
  74. data/lib/metronome_sdk/models/v1/contracts/rate_card_retrieve_rate_schedule_response.rb +26 -5
  75. data/lib/metronome_sdk/models/v1/contracts/rate_card_retrieve_response.rb +4 -4
  76. data/lib/metronome_sdk/models/v1/contracts/rate_card_update_params.rb +2 -2
  77. data/lib/metronome_sdk/models/v1/contracts/rate_card_update_response.rb +2 -2
  78. data/lib/metronome_sdk/models/v1/contracts/rate_cards/product_order_set_response.rb +2 -2
  79. data/lib/metronome_sdk/models/v1/contracts/rate_cards/product_order_update_params.rb +2 -2
  80. data/lib/metronome_sdk/models/v1/contracts/rate_cards/product_order_update_response.rb +2 -2
  81. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_params.rb +46 -18
  82. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_response.rb +2 -2
  83. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_add_params.rb +36 -12
  84. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_add_response.rb +6 -6
  85. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_list_params.rb +33 -5
  86. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_list_response.rb +26 -5
  87. data/lib/metronome_sdk/models/v1/credit_grant_create_params.rb +12 -20
  88. data/lib/metronome_sdk/models/v1/credit_grant_create_response.rb +2 -2
  89. data/lib/metronome_sdk/models/v1/credit_grant_edit_response.rb +2 -2
  90. data/lib/metronome_sdk/models/v1/credit_grant_list_entries_params.rb +20 -1
  91. data/lib/metronome_sdk/models/v1/credit_grant_list_entries_response.rb +6 -6
  92. data/lib/metronome_sdk/models/v1/credit_grant_list_response.rb +8 -8
  93. data/lib/metronome_sdk/models/v1/credit_grant_void_response.rb +2 -2
  94. data/lib/metronome_sdk/models/v1/credit_ledger_entry.rb +1 -1
  95. data/lib/metronome_sdk/models/v1/custom_field_add_key_params.rb +2 -2
  96. data/lib/metronome_sdk/models/v1/custom_field_delete_values_params.rb +2 -2
  97. data/lib/metronome_sdk/models/v1/custom_field_list_keys_params.rb +2 -2
  98. data/lib/metronome_sdk/models/v1/custom_field_remove_key_params.rb +2 -2
  99. data/lib/metronome_sdk/models/v1/custom_field_set_values_params.rb +2 -2
  100. data/lib/metronome_sdk/models/v1/customer.rb +1 -1
  101. data/lib/metronome_sdk/models/v1/customer_archive_response.rb +2 -2
  102. data/lib/metronome_sdk/models/v1/customer_create_params.rb +20 -20
  103. data/lib/metronome_sdk/models/v1/customer_create_response.rb +2 -2
  104. data/lib/metronome_sdk/models/v1/customer_detail.rb +10 -10
  105. data/lib/metronome_sdk/models/v1/customer_list_billable_metrics_response.rb +4 -4
  106. data/lib/metronome_sdk/models/v1/customer_preview_events_params.rb +115 -0
  107. data/lib/metronome_sdk/models/v1/customer_preview_events_response.rb +18 -0
  108. data/lib/metronome_sdk/models/v1/customer_retrieve_response.rb +2 -2
  109. data/lib/metronome_sdk/models/v1/customer_set_name_response.rb +2 -2
  110. data/lib/metronome_sdk/models/v1/customers/alert_list_params.rb +2 -2
  111. data/lib/metronome_sdk/models/v1/customers/alert_list_response.rb +2 -2
  112. data/lib/metronome_sdk/models/v1/customers/alert_retrieve_params.rb +2 -2
  113. data/lib/metronome_sdk/models/v1/customers/alert_retrieve_response.rb +2 -2
  114. data/lib/metronome_sdk/models/v1/customers/billing_config_create_params.rb +6 -6
  115. data/lib/metronome_sdk/models/v1/customers/billing_config_delete_params.rb +2 -2
  116. data/lib/metronome_sdk/models/v1/customers/billing_config_retrieve_params.rb +2 -2
  117. data/lib/metronome_sdk/models/v1/customers/billing_config_retrieve_response.rb +9 -1
  118. data/lib/metronome_sdk/models/v1/customers/commit_create_params.rb +86 -32
  119. data/lib/metronome_sdk/models/v1/customers/commit_create_response.rb +2 -2
  120. data/lib/metronome_sdk/models/v1/customers/commit_list_response.rb +2 -2
  121. data/lib/metronome_sdk/models/v1/customers/commit_update_end_date_response.rb +2 -2
  122. data/lib/metronome_sdk/models/v1/customers/credit_create_params.rb +59 -7
  123. data/lib/metronome_sdk/models/v1/customers/credit_create_response.rb +2 -2
  124. data/lib/metronome_sdk/models/v1/customers/credit_list_response.rb +2 -2
  125. data/lib/metronome_sdk/models/v1/customers/credit_update_end_date_response.rb +2 -2
  126. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +24 -24
  127. data/lib/metronome_sdk/models/v1/customers/invoice.rb +74 -73
  128. data/lib/metronome_sdk/models/v1/customers/invoice_list_breakdowns_params.rb +4 -4
  129. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +2 -2
  130. data/lib/metronome_sdk/models/v1/customers/invoice_retrieve_response.rb +2 -2
  131. data/lib/metronome_sdk/models/v1/customers/plan_add_params.rb +16 -15
  132. data/lib/metronome_sdk/models/v1/customers/plan_add_response.rb +2 -2
  133. data/lib/metronome_sdk/models/v1/customers/plan_list_response.rb +2 -2
  134. data/lib/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rb +14 -13
  135. data/lib/metronome_sdk/models/v1/plan_detail.rb +18 -18
  136. data/lib/metronome_sdk/models/v1/plan_get_details_response.rb +2 -2
  137. data/lib/metronome_sdk/models/v1/plan_list_charges_response.rb +2 -2
  138. data/lib/metronome_sdk/models/v1/plan_list_customers_params.rb +2 -2
  139. data/lib/metronome_sdk/models/v1/plan_list_customers_response.rb +2 -2
  140. data/lib/metronome_sdk/models/v1/rollover_amount_max_amount.rb +3 -3
  141. data/lib/metronome_sdk/models/v1/rollover_amount_max_percentage.rb +3 -3
  142. data/lib/metronome_sdk/models/v1/usage_ingest_params.rb +2 -2
  143. data/lib/metronome_sdk/models/v1/usage_list_params.rb +9 -8
  144. data/lib/metronome_sdk/models/v1/usage_list_with_groups_params.rb +5 -5
  145. data/lib/metronome_sdk/models/v1/usage_search_params.rb +24 -0
  146. data/lib/metronome_sdk/models/v1/usage_search_response.rb +249 -0
  147. data/lib/metronome_sdk/models/v2/contract_edit_commit_params.rb +78 -23
  148. data/lib/metronome_sdk/models/v2/contract_edit_commit_response.rb +2 -2
  149. data/lib/metronome_sdk/models/v2/contract_edit_credit_params.rb +62 -9
  150. data/lib/metronome_sdk/models/v2/contract_edit_credit_response.rb +2 -2
  151. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +1995 -443
  152. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +2 -2
  153. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +1959 -140
  154. data/lib/metronome_sdk/models/v2/contract_list_response.rb +963 -91
  155. data/lib/metronome_sdk/models/v2/contract_retrieve_response.rb +964 -91
  156. data/lib/metronome_sdk/models.rb +30 -19
  157. data/lib/metronome_sdk/resources/v1/alerts.rb +4 -4
  158. data/lib/metronome_sdk/resources/v1/audit_logs.rb +1 -1
  159. data/lib/metronome_sdk/resources/v1/billable_metrics.rb +3 -3
  160. data/lib/metronome_sdk/resources/v1/contracts/products.rb +9 -6
  161. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/product_orders.rb +1 -1
  162. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/rates.rb +8 -6
  163. data/lib/metronome_sdk/resources/v1/contracts/rate_cards.rb +4 -4
  164. data/lib/metronome_sdk/resources/v1/contracts.rb +59 -28
  165. data/lib/metronome_sdk/resources/v1/credit_grants.rb +7 -5
  166. data/lib/metronome_sdk/resources/v1/custom_fields.rb +5 -5
  167. data/lib/metronome_sdk/resources/v1/customers/alerts.rb +2 -2
  168. data/lib/metronome_sdk/resources/v1/customers/billing_config.rb +5 -5
  169. data/lib/metronome_sdk/resources/v1/customers/commits.rb +9 -7
  170. data/lib/metronome_sdk/resources/v1/customers/credits.rb +5 -3
  171. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +4 -4
  172. data/lib/metronome_sdk/resources/v1/customers/plans.rb +3 -3
  173. data/lib/metronome_sdk/resources/v1/customers.rb +43 -4
  174. data/lib/metronome_sdk/resources/v1/dashboards.rb +4 -4
  175. data/lib/metronome_sdk/resources/v1/plans.rb +1 -1
  176. data/lib/metronome_sdk/resources/v1/usage.rb +30 -5
  177. data/lib/metronome_sdk/resources/v2/contracts.rb +45 -31
  178. data/lib/metronome_sdk/version.rb +1 -1
  179. data/lib/metronome_sdk.rb +9 -1
  180. data/rbi/metronome_sdk/errors.rbi +16 -0
  181. data/rbi/metronome_sdk/internal/transport/pooled_net_requester.rbi +5 -1
  182. data/rbi/metronome_sdk/internal/type/array_of.rbi +6 -0
  183. data/rbi/metronome_sdk/internal/type/base_model.rbi +5 -0
  184. data/rbi/metronome_sdk/internal/type/boolean.rbi +8 -0
  185. data/rbi/metronome_sdk/internal/type/converter.rbi +15 -15
  186. data/rbi/metronome_sdk/internal/type/enum.rbi +5 -0
  187. data/rbi/metronome_sdk/internal/type/file_input.rbi +5 -0
  188. data/rbi/metronome_sdk/internal/type/hash_of.rbi +6 -0
  189. data/rbi/metronome_sdk/internal/type/union.rbi +10 -0
  190. data/rbi/metronome_sdk/internal/type/unknown.rbi +8 -0
  191. data/rbi/metronome_sdk/internal/util.rbi +36 -0
  192. data/rbi/metronome_sdk/internal.rbi +5 -0
  193. data/rbi/metronome_sdk/models/commit.rbi +376 -39
  194. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +791 -54
  195. data/rbi/metronome_sdk/models/credit.rbi +376 -25
  196. data/rbi/metronome_sdk/models/override.rbi +66 -0
  197. data/rbi/metronome_sdk/models/schedule_point_in_time.rbi +9 -9
  198. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +10 -4
  199. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +995 -17
  200. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +2220 -136
  201. data/rbi/metronome_sdk/models/v1/contract_list_balances_response.rbi +9 -2
  202. data/rbi/metronome_sdk/models/v1/contract_list_response.rbi +820 -28
  203. data/rbi/metronome_sdk/models/v1/contract_retrieve_rate_schedule_params.rbi +72 -0
  204. data/rbi/metronome_sdk/models/v1/contract_retrieve_rate_schedule_response.rbi +66 -0
  205. data/rbi/metronome_sdk/models/v1/contract_retrieve_response.rbi +820 -28
  206. data/rbi/metronome_sdk/models/v1/contract_retrieve_subscription_quantity_history_params.rbi +58 -0
  207. data/rbi/metronome_sdk/models/v1/contract_retrieve_subscription_quantity_history_response.rbi +212 -0
  208. data/rbi/metronome_sdk/models/v1/contracts/product_list_params.rbi +3 -3
  209. data/rbi/metronome_sdk/models/v1/contracts/rate_card_retrieve_rate_schedule_params.rbi +72 -0
  210. data/rbi/metronome_sdk/models/v1/contracts/rate_card_retrieve_rate_schedule_response.rbi +66 -0
  211. data/rbi/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_params.rbi +72 -0
  212. data/rbi/metronome_sdk/models/v1/contracts/rate_cards/rate_add_params.rbi +72 -0
  213. data/rbi/metronome_sdk/models/v1/contracts/rate_cards/rate_list_params.rbi +72 -0
  214. data/rbi/metronome_sdk/models/v1/contracts/rate_cards/rate_list_response.rbi +66 -0
  215. data/rbi/metronome_sdk/models/v1/credit_grant_list_entries_params.rbi +58 -0
  216. data/rbi/metronome_sdk/models/v1/customer_preview_events_params.rbi +214 -0
  217. data/rbi/metronome_sdk/models/v1/customer_preview_events_response.rbi +35 -0
  218. data/rbi/metronome_sdk/models/v1/customers/billing_config_retrieve_response.rbi +11 -0
  219. data/rbi/metronome_sdk/models/v1/customers/commit_create_params.rbi +121 -8
  220. data/rbi/metronome_sdk/models/v1/customers/credit_create_params.rbi +109 -0
  221. data/rbi/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbi +5 -0
  222. data/rbi/metronome_sdk/models/v1/usage_search_params.rbi +48 -0
  223. data/rbi/metronome_sdk/models/v1/usage_search_response.rbi +438 -0
  224. data/rbi/metronome_sdk/models/v2/contract_edit_commit_params.rbi +113 -8
  225. data/rbi/metronome_sdk/models/v2/contract_edit_credit_params.rbi +101 -0
  226. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +3667 -315
  227. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +5965 -2014
  228. data/rbi/metronome_sdk/models/v2/contract_list_response.rbi +2279 -226
  229. data/rbi/metronome_sdk/models/v2/contract_retrieve_response.rbi +2279 -226
  230. data/rbi/metronome_sdk/resources/v1/alerts.rbi +5 -2
  231. data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +2 -1
  232. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbi +5 -0
  233. data/rbi/metronome_sdk/resources/v1/contracts.rbi +36 -1
  234. data/rbi/metronome_sdk/resources/v1/credit_grants.rbi +4 -0
  235. data/rbi/metronome_sdk/resources/v1/customers/commits.rbi +15 -4
  236. data/rbi/metronome_sdk/resources/v1/customers/credits.rbi +9 -0
  237. data/rbi/metronome_sdk/resources/v1/customers.rbi +35 -1
  238. data/rbi/metronome_sdk/resources/v1/usage.rbi +17 -0
  239. data/rbi/metronome_sdk/resources/v2/contracts.rbi +65 -7
  240. data/sig/metronome_sdk/errors.rbs +9 -0
  241. data/sig/metronome_sdk/internal/transport/pooled_net_requester.rbs +2 -0
  242. data/sig/metronome_sdk/internal/type/array_of.rbs +3 -0
  243. data/sig/metronome_sdk/internal/type/base_model.rbs +2 -0
  244. data/sig/metronome_sdk/internal/type/boolean.rbs +3 -0
  245. data/sig/metronome_sdk/internal/type/converter.rbs +7 -1
  246. data/sig/metronome_sdk/internal/type/enum.rbs +2 -0
  247. data/sig/metronome_sdk/internal/type/file_input.rbs +2 -0
  248. data/sig/metronome_sdk/internal/type/hash_of.rbs +3 -0
  249. data/sig/metronome_sdk/internal/type/union.rbs +2 -0
  250. data/sig/metronome_sdk/internal/type/unknown.rbs +3 -0
  251. data/sig/metronome_sdk/internal/util.rbs +12 -0
  252. data/sig/metronome_sdk/internal.rbs +2 -0
  253. data/sig/metronome_sdk/models/base_usage_filter.rbs +6 -0
  254. data/sig/metronome_sdk/models/commit.rbs +374 -68
  255. data/sig/metronome_sdk/models/contract_without_amendments.rbs +620 -110
  256. data/sig/metronome_sdk/models/credit.rbs +286 -40
  257. data/sig/metronome_sdk/models/credit_type_data.rbs +2 -0
  258. data/sig/metronome_sdk/models/discount.rbs +11 -0
  259. data/sig/metronome_sdk/models/event_type_filter.rbs +5 -0
  260. data/sig/metronome_sdk/models/id.rbs +2 -0
  261. data/sig/metronome_sdk/models/override.rbs +92 -22
  262. data/sig/metronome_sdk/models/pro_service.rbs +11 -0
  263. data/sig/metronome_sdk/models/property_filter.rbs +7 -0
  264. data/sig/metronome_sdk/models/rate.rbs +16 -4
  265. data/sig/metronome_sdk/models/schedule_duration.rbs +12 -0
  266. data/sig/metronome_sdk/models/schedule_point_in_time.rbs +20 -6
  267. data/sig/metronome_sdk/models/scheduled_charge.rbs +12 -0
  268. data/sig/metronome_sdk/models/tier.rbs +2 -0
  269. data/sig/metronome_sdk/models/v1/alert_archive_params.rbs +6 -0
  270. data/sig/metronome_sdk/models/v1/alert_archive_response.rbs +2 -0
  271. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +29 -4
  272. data/sig/metronome_sdk/models/v1/alert_create_response.rbs +2 -0
  273. data/sig/metronome_sdk/models/v1/audit_log_list_params.rbs +11 -0
  274. data/sig/metronome_sdk/models/v1/audit_log_list_response.rbs +16 -0
  275. data/sig/metronome_sdk/models/v1/billable_metric_archive_params.rbs +2 -0
  276. data/sig/metronome_sdk/models/v1/billable_metric_archive_response.rbs +2 -0
  277. data/sig/metronome_sdk/models/v1/billable_metric_create_params.rbs +12 -0
  278. data/sig/metronome_sdk/models/v1/billable_metric_create_response.rbs +2 -0
  279. data/sig/metronome_sdk/models/v1/billable_metric_list_params.rbs +7 -0
  280. data/sig/metronome_sdk/models/v1/billable_metric_list_response.rbs +13 -0
  281. data/sig/metronome_sdk/models/v1/billable_metric_retrieve_params.rbs +5 -0
  282. data/sig/metronome_sdk/models/v1/billable_metric_retrieve_response.rbs +17 -0
  283. data/sig/metronome_sdk/models/v1/contract_add_manual_balance_entry_params.rbs +11 -0
  284. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +719 -75
  285. data/sig/metronome_sdk/models/v1/contract_amend_response.rbs +2 -0
  286. data/sig/metronome_sdk/models/v1/contract_archive_params.rbs +7 -0
  287. data/sig/metronome_sdk/models/v1/contract_archive_response.rbs +2 -0
  288. data/sig/metronome_sdk/models/v1/contract_create_historical_invoices_params.rbs +47 -12
  289. data/sig/metronome_sdk/models/v1/contract_create_historical_invoices_response.rbs +2 -0
  290. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +1503 -250
  291. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +2 -0
  292. data/sig/metronome_sdk/models/v1/contract_list_balances_params.rbs +14 -0
  293. data/sig/metronome_sdk/models/v1/contract_list_balances_response.rbs +5 -0
  294. data/sig/metronome_sdk/models/v1/contract_list_params.rbs +10 -0
  295. data/sig/metronome_sdk/models/v1/contract_list_response.rbs +459 -10
  296. data/sig/metronome_sdk/models/v1/contract_retrieve_params.rbs +8 -0
  297. data/sig/metronome_sdk/models/v1/contract_retrieve_rate_schedule_params.rbs +39 -0
  298. data/sig/metronome_sdk/models/v1/contract_retrieve_rate_schedule_response.rbs +48 -0
  299. data/sig/metronome_sdk/models/v1/contract_retrieve_response.rbs +459 -10
  300. data/sig/metronome_sdk/models/v1/contract_retrieve_subscription_quantity_history_params.rbs +34 -0
  301. data/sig/metronome_sdk/models/v1/contract_retrieve_subscription_quantity_history_response.rbs +101 -0
  302. data/sig/metronome_sdk/models/v1/contract_schedule_pro_services_invoice_params.rbs +21 -0
  303. data/sig/metronome_sdk/models/v1/contract_schedule_pro_services_invoice_response.rbs +2 -0
  304. data/sig/metronome_sdk/models/v1/contract_set_usage_filter_params.rbs +9 -0
  305. data/sig/metronome_sdk/models/v1/contract_update_end_date_params.rbs +8 -0
  306. data/sig/metronome_sdk/models/v1/contract_update_end_date_response.rbs +2 -0
  307. data/sig/metronome_sdk/models/v1/contracts/named_schedule_retrieve_params.rbs +7 -0
  308. data/sig/metronome_sdk/models/v1/contracts/named_schedule_retrieve_response.rbs +10 -0
  309. data/sig/metronome_sdk/models/v1/contracts/named_schedule_update_params.rbs +9 -0
  310. data/sig/metronome_sdk/models/v1/contracts/product_archive_params.rbs +5 -0
  311. data/sig/metronome_sdk/models/v1/contracts/product_archive_response.rbs +2 -0
  312. data/sig/metronome_sdk/models/v1/contracts/product_create_params.rbs +18 -0
  313. data/sig/metronome_sdk/models/v1/contracts/product_create_response.rbs +2 -0
  314. data/sig/metronome_sdk/models/v1/contracts/product_list_item_state.rbs +19 -0
  315. data/sig/metronome_sdk/models/v1/contracts/product_list_params.rbs +7 -0
  316. data/sig/metronome_sdk/models/v1/contracts/product_list_response.rbs +29 -0
  317. data/sig/metronome_sdk/models/v1/contracts/product_retrieve_params.rbs +2 -0
  318. data/sig/metronome_sdk/models/v1/contracts/product_retrieve_response.rbs +33 -0
  319. data/sig/metronome_sdk/models/v1/contracts/product_update_params.rbs +19 -0
  320. data/sig/metronome_sdk/models/v1/contracts/product_update_response.rbs +2 -0
  321. data/sig/metronome_sdk/models/v1/contracts/quantity_conversion.rbs +10 -4
  322. data/sig/metronome_sdk/models/v1/contracts/quantity_rounding.rbs +9 -4
  323. data/sig/metronome_sdk/models/v1/contracts/rate_card_archive_params.rbs +2 -0
  324. data/sig/metronome_sdk/models/v1/contracts/rate_card_archive_response.rbs +2 -0
  325. data/sig/metronome_sdk/models/v1/contracts/rate_card_create_params.rbs +21 -0
  326. data/sig/metronome_sdk/models/v1/contracts/rate_card_create_response.rbs +2 -0
  327. data/sig/metronome_sdk/models/v1/contracts/rate_card_list_params.rbs +7 -0
  328. data/sig/metronome_sdk/models/v1/contracts/rate_card_list_response.rbs +23 -0
  329. data/sig/metronome_sdk/models/v1/contracts/rate_card_retrieve_params.rbs +2 -0
  330. data/sig/metronome_sdk/models/v1/contracts/rate_card_retrieve_rate_schedule_params.rbs +38 -0
  331. data/sig/metronome_sdk/models/v1/contracts/rate_card_retrieve_rate_schedule_response.rbs +46 -0
  332. data/sig/metronome_sdk/models/v1/contracts/rate_card_retrieve_response.rbs +27 -0
  333. data/sig/metronome_sdk/models/v1/contracts/rate_card_update_params.rbs +14 -0
  334. data/sig/metronome_sdk/models/v1/contracts/rate_card_update_response.rbs +2 -0
  335. data/sig/metronome_sdk/models/v1/contracts/rate_cards/named_schedule_retrieve_params.rbs +8 -0
  336. data/sig/metronome_sdk/models/v1/contracts/rate_cards/named_schedule_retrieve_response.rbs +10 -0
  337. data/sig/metronome_sdk/models/v1/contracts/rate_cards/named_schedule_update_params.rbs +10 -0
  338. data/sig/metronome_sdk/models/v1/contracts/rate_cards/product_order_set_params.rbs +6 -0
  339. data/sig/metronome_sdk/models/v1/contracts/rate_cards/product_order_set_response.rbs +2 -0
  340. data/sig/metronome_sdk/models/v1/contracts/rate_cards/product_order_update_params.rbs +8 -0
  341. data/sig/metronome_sdk/models/v1/contracts/rate_cards/product_order_update_response.rbs +2 -0
  342. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_params.rbs +59 -8
  343. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_response.rbs +2 -0
  344. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_add_params.rbs +51 -4
  345. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_add_response.rbs +23 -0
  346. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_list_params.rbs +38 -0
  347. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_list_response.rbs +41 -0
  348. data/sig/metronome_sdk/models/v1/credit_grant_create_params.rbs +32 -4
  349. data/sig/metronome_sdk/models/v1/credit_grant_create_response.rbs +2 -0
  350. data/sig/metronome_sdk/models/v1/credit_grant_edit_params.rbs +8 -0
  351. data/sig/metronome_sdk/models/v1/credit_grant_edit_response.rbs +2 -0
  352. data/sig/metronome_sdk/models/v1/credit_grant_list_entries_params.rbs +29 -0
  353. data/sig/metronome_sdk/models/v1/credit_grant_list_entries_response.rbs +30 -0
  354. data/sig/metronome_sdk/models/v1/credit_grant_list_params.rbs +11 -0
  355. data/sig/metronome_sdk/models/v1/credit_grant_list_response.rbs +38 -0
  356. data/sig/metronome_sdk/models/v1/credit_grant_void_params.rbs +7 -0
  357. data/sig/metronome_sdk/models/v1/credit_grant_void_response.rbs +2 -0
  358. data/sig/metronome_sdk/models/v1/credit_ledger_entry.rbs +10 -0
  359. data/sig/metronome_sdk/models/v1/custom_field_add_key_params.rbs +7 -0
  360. data/sig/metronome_sdk/models/v1/custom_field_delete_values_params.rbs +7 -0
  361. data/sig/metronome_sdk/models/v1/custom_field_list_keys_params.rbs +12 -6
  362. data/sig/metronome_sdk/models/v1/custom_field_list_keys_response.rbs +11 -0
  363. data/sig/metronome_sdk/models/v1/custom_field_remove_key_params.rbs +6 -0
  364. data/sig/metronome_sdk/models/v1/custom_field_set_values_params.rbs +7 -0
  365. data/sig/metronome_sdk/models/v1/customer.rbs +8 -0
  366. data/sig/metronome_sdk/models/v1/customer_archive_params.rbs +2 -0
  367. data/sig/metronome_sdk/models/v1/customer_archive_response.rbs +2 -0
  368. data/sig/metronome_sdk/models/v1/customer_create_params.rbs +52 -26
  369. data/sig/metronome_sdk/models/v1/customer_create_response.rbs +2 -0
  370. data/sig/metronome_sdk/models/v1/customer_detail.rbs +23 -4
  371. data/sig/metronome_sdk/models/v1/customer_list_billable_metrics_params.rbs +9 -0
  372. data/sig/metronome_sdk/models/v1/customer_list_billable_metrics_response.rbs +17 -0
  373. data/sig/metronome_sdk/models/v1/customer_list_costs_params.rbs +9 -0
  374. data/sig/metronome_sdk/models/v1/customer_list_costs_response.rbs +19 -0
  375. data/sig/metronome_sdk/models/v1/customer_list_params.rbs +10 -0
  376. data/sig/metronome_sdk/models/v1/customer_preview_events_params.rbs +105 -0
  377. data/sig/metronome_sdk/models/v1/customer_preview_events_response.rbs +16 -0
  378. data/sig/metronome_sdk/models/v1/customer_retrieve_params.rbs +5 -0
  379. data/sig/metronome_sdk/models/v1/customer_retrieve_response.rbs +2 -0
  380. data/sig/metronome_sdk/models/v1/customer_set_ingest_aliases_params.rbs +6 -0
  381. data/sig/metronome_sdk/models/v1/customer_set_name_params.rbs +6 -0
  382. data/sig/metronome_sdk/models/v1/customer_set_name_response.rbs +2 -0
  383. data/sig/metronome_sdk/models/v1/customer_update_config_params.rbs +7 -0
  384. data/sig/metronome_sdk/models/v1/customers/alert_list_params.rbs +13 -6
  385. data/sig/metronome_sdk/models/v1/customers/alert_list_response.rbs +5 -0
  386. data/sig/metronome_sdk/models/v1/customers/alert_reset_params.rbs +6 -0
  387. data/sig/metronome_sdk/models/v1/customers/alert_retrieve_params.rbs +7 -0
  388. data/sig/metronome_sdk/models/v1/customers/alert_retrieve_response.rbs +2 -0
  389. data/sig/metronome_sdk/models/v1/customers/billing_config_create_params.rbs +10 -0
  390. data/sig/metronome_sdk/models/v1/customers/billing_config_delete_params.rbs +6 -0
  391. data/sig/metronome_sdk/models/v1/customers/billing_config_retrieve_params.rbs +6 -0
  392. data/sig/metronome_sdk/models/v1/customers/billing_config_retrieve_response.rbs +23 -0
  393. data/sig/metronome_sdk/models/v1/customers/commit_create_params.rbs +116 -8
  394. data/sig/metronome_sdk/models/v1/customers/commit_create_response.rbs +2 -0
  395. data/sig/metronome_sdk/models/v1/customers/commit_list_params.rbs +14 -0
  396. data/sig/metronome_sdk/models/v1/customers/commit_list_response.rbs +5 -0
  397. data/sig/metronome_sdk/models/v1/customers/commit_update_end_date_params.rbs +8 -0
  398. data/sig/metronome_sdk/models/v1/customers/commit_update_end_date_response.rbs +2 -0
  399. data/sig/metronome_sdk/models/v1/customers/credit_create_params.rbs +82 -0
  400. data/sig/metronome_sdk/models/v1/customers/credit_create_response.rbs +2 -0
  401. data/sig/metronome_sdk/models/v1/customers/credit_list_params.rbs +14 -0
  402. data/sig/metronome_sdk/models/v1/customers/credit_list_response.rbs +5 -0
  403. data/sig/metronome_sdk/models/v1/customers/credit_update_end_date_params.rbs +7 -0
  404. data/sig/metronome_sdk/models/v1/customers/credit_update_end_date_response.rbs +2 -0
  405. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +45 -16
  406. data/sig/metronome_sdk/models/v1/customers/invoice.rbs +195 -40
  407. data/sig/metronome_sdk/models/v1/customers/invoice_add_charge_params.rbs +11 -0
  408. data/sig/metronome_sdk/models/v1/customers/invoice_add_charge_response.rbs +2 -0
  409. data/sig/metronome_sdk/models/v1/customers/invoice_list_breakdowns_params.rbs +14 -0
  410. data/sig/metronome_sdk/models/v1/customers/invoice_list_breakdowns_response.rbs +5 -0
  411. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +13 -0
  412. data/sig/metronome_sdk/models/v1/customers/invoice_retrieve_params.rbs +7 -0
  413. data/sig/metronome_sdk/models/v1/customers/invoice_retrieve_response.rbs +2 -0
  414. data/sig/metronome_sdk/models/v1/customers/named_schedule_retrieve_params.rbs +7 -0
  415. data/sig/metronome_sdk/models/v1/customers/named_schedule_retrieve_response.rbs +10 -0
  416. data/sig/metronome_sdk/models/v1/customers/named_schedule_update_params.rbs +9 -0
  417. data/sig/metronome_sdk/models/v1/customers/plan_add_params.rbs +38 -4
  418. data/sig/metronome_sdk/models/v1/customers/plan_add_response.rbs +2 -0
  419. data/sig/metronome_sdk/models/v1/customers/plan_end_params.rbs +9 -0
  420. data/sig/metronome_sdk/models/v1/customers/plan_end_response.rbs +2 -0
  421. data/sig/metronome_sdk/models/v1/customers/plan_list_params.rbs +7 -0
  422. data/sig/metronome_sdk/models/v1/customers/plan_list_price_adjustments_params.rbs +8 -0
  423. data/sig/metronome_sdk/models/v1/customers/plan_list_price_adjustments_response.rbs +14 -0
  424. data/sig/metronome_sdk/models/v1/customers/plan_list_response.rbs +23 -0
  425. data/sig/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbs +30 -7
  426. data/sig/metronome_sdk/models/v1/dashboard_get_embeddable_url_response.rbs +6 -0
  427. data/sig/metronome_sdk/models/v1/invoice_regenerate_params.rbs +5 -0
  428. data/sig/metronome_sdk/models/v1/invoice_regenerate_response.rbs +6 -0
  429. data/sig/metronome_sdk/models/v1/invoice_void_params.rbs +5 -0
  430. data/sig/metronome_sdk/models/v1/invoice_void_response.rbs +6 -0
  431. data/sig/metronome_sdk/models/v1/plan_detail.rbs +38 -0
  432. data/sig/metronome_sdk/models/v1/plan_get_details_params.rbs +5 -0
  433. data/sig/metronome_sdk/models/v1/plan_get_details_response.rbs +2 -0
  434. data/sig/metronome_sdk/models/v1/plan_list_charges_params.rbs +7 -0
  435. data/sig/metronome_sdk/models/v1/plan_list_charges_response.rbs +28 -0
  436. data/sig/metronome_sdk/models/v1/plan_list_customers_params.rbs +8 -0
  437. data/sig/metronome_sdk/models/v1/plan_list_customers_response.rbs +14 -0
  438. data/sig/metronome_sdk/models/v1/plan_list_params.rbs +6 -0
  439. data/sig/metronome_sdk/models/v1/plan_list_response.rbs +7 -0
  440. data/sig/metronome_sdk/models/v1/pricing_unit_list_params.rbs +6 -0
  441. data/sig/metronome_sdk/models/v1/pricing_unit_list_response.rbs +2 -0
  442. data/sig/metronome_sdk/models/v1/rollover_amount_max_amount.rbs +12 -4
  443. data/sig/metronome_sdk/models/v1/rollover_amount_max_percentage.rbs +9 -4
  444. data/sig/metronome_sdk/models/v1/service_list_params.rbs +2 -0
  445. data/sig/metronome_sdk/models/v1/service_list_response.rbs +10 -0
  446. data/sig/metronome_sdk/models/v1/usage_ingest_params.rbs +13 -0
  447. data/sig/metronome_sdk/models/v1/usage_list_params.rbs +17 -0
  448. data/sig/metronome_sdk/models/v1/usage_list_response.rbs +15 -0
  449. data/sig/metronome_sdk/models/v1/usage_list_with_groups_params.rbs +15 -0
  450. data/sig/metronome_sdk/models/v1/usage_list_with_groups_response.rbs +8 -0
  451. data/sig/metronome_sdk/models/v1/usage_search_params.rbs +26 -0
  452. data/sig/metronome_sdk/models/v1/usage_search_response.rbs +230 -0
  453. data/sig/metronome_sdk/models/v2/contract_edit_commit_params.rbs +106 -1
  454. data/sig/metronome_sdk/models/v2/contract_edit_commit_response.rbs +2 -0
  455. data/sig/metronome_sdk/models/v2/contract_edit_credit_params.rbs +81 -1
  456. data/sig/metronome_sdk/models/v2/contract_edit_credit_response.rbs +2 -0
  457. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +2233 -303
  458. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +2 -0
  459. data/sig/metronome_sdk/models/v2/contract_get_edit_history_params.rbs +6 -0
  460. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +2475 -453
  461. data/sig/metronome_sdk/models/v2/contract_list_params.rbs +10 -0
  462. data/sig/metronome_sdk/models/v2/contract_list_response.rbs +1400 -43
  463. data/sig/metronome_sdk/models/v2/contract_retrieve_params.rbs +9 -0
  464. data/sig/metronome_sdk/models/v2/contract_retrieve_response.rbs +1400 -43
  465. data/sig/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbs +1 -0
  466. data/sig/metronome_sdk/resources/v1/contracts.rbs +10 -0
  467. data/sig/metronome_sdk/resources/v1/credit_grants.rbs +1 -0
  468. data/sig/metronome_sdk/resources/v1/custom_fields.rbs +1 -1
  469. data/sig/metronome_sdk/resources/v1/customers/alerts.rbs +1 -1
  470. data/sig/metronome_sdk/resources/v1/customers/commits.rbs +1 -0
  471. data/sig/metronome_sdk/resources/v1/customers/credits.rbs +1 -0
  472. data/sig/metronome_sdk/resources/v1/customers.rbs +8 -0
  473. data/sig/metronome_sdk/resources/v1/usage.rbs +5 -0
  474. data/sig/metronome_sdk/resources/v2/contracts.rbs +8 -1
  475. metadata +20 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b49fbb83290c83ee3d66cd3b2e5ae7e8055f745b97f8d1ab14ece932b89a23e0
4
- data.tar.gz: 526a11304c8b163141bd09f107dc6a2e32c9c992549b5b521cad8c3229407a14
3
+ metadata.gz: a44d5d1875ab2a3f6799d850de8e858790cf3b1effe78faf11aaf66cb63108bb
4
+ data.tar.gz: e8a0924693987951798904c088ba86857560fbf85a32948f1dde31a04cb2c1eb
5
5
  SHA512:
6
- metadata.gz: fb6e5add40c34fc28319a79a8cf445a2e770a8d523bbeebdd89e7047fcb683658dcaa3775a52e94c5dc00032594e3ca254e077b3164fad2669691123c4944ab4
7
- data.tar.gz: aacf5f90cddbb3756686efb8873d992f6df59fc6012bfcb2d770f0297eec754adaddfc82ef1960e948a93e594fda30f228e78caada919724f9f0774fd2bb371a
6
+ metadata.gz: 041527374ecc4da3c21f5b5971ac35962814ac7fbe8f80791b168b9daaff0cf2ab6360d6a0c98f5b63e41c4eecfa3edbbc29c5dda5cfdbd830a073a72b383dd3
7
+ data.tar.gz: 4f1c4fabe61b612eee4e20203a62c5c3cebe1df469d59cc9d6d299495f51fc9d5b489f82ed339b0008347ed6d04ee00d4026888410ee1bdc1565942fcf8869b5
data/CHANGELOG.md CHANGED
@@ -1,5 +1,90 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.4 (2025-07-18)
4
+
5
+ Full Changelog: [v0.1.0-alpha.3...v0.1.0-alpha.4](https://github.com/Metronome-Industries/metronome-ruby/compare/v0.1.0-alpha.3...v0.1.0-alpha.4)
6
+
7
+ ### Features
8
+
9
+ * **api:** Add Event Search API for finding events to match to customers and billable metrics ([26a0a0d](https://github.com/Metronome-Industries/metronome-ruby/commit/26a0a0d293496c532c635a9936dd2ba7c3f14683))
10
+ * **api:** add previewEvents API for generating draft invoices with provided events ([e2e5795](https://github.com/Metronome-Industries/metronome-ruby/commit/e2e579573a289ce749608a9c08a97b074ead387d))
11
+ * **api:** update v2 contracts list documentation to specify chronological order ([b322bbc](https://github.com/Metronome-Industries/metronome-ruby/commit/b322bbc373ac7b90fe771fa6a2a2bef1fdc504ff))
12
+ * **api:** add support for Anrok and Precalculated tax types in payment gateway configuration ([ee0d2af](https://github.com/Metronome-Industries/metronome-ruby/commit/ee0d2af6cc3cb1fb2bbc321f619ccd941db06c44))
13
+ * **api:** add hierarchy configuration to v1 contracts ([f076da2](https://github.com/Metronome-Industries/metronome-ruby/commit/f076da2387c85f5e4f94c2b9a5f0ab279a778c92))
14
+ * **api:** improve Event Search API documentation and rate limiting details ([e8618a3](https://github.com/Metronome-Industries/metronome-ruby/commit/e8618a3b86ec4d9e19df9dd24f5381288071313e))
15
+ * **api:** improve previewEvents API documentation and make custom_credit_type_id nullable ([12c5814](https://github.com/Metronome-Industries/metronome-ruby/commit/12c5814b48b6bf441c5b6b8a22adb683c185c007))
16
+ * **api:** add custom credit type support to prepaid balance thresholds ([1b75766](https://github.com/Metronome-Industries/metronome-ruby/commit/1b75766b321ca146dd911c56c47bf286f928f550))
17
+ * **api:** add Event Search API ([8065b4c](https://github.com/Metronome-Industries/metronome-ruby/commit/8065b4c8053818b19a40faf3dc99e17396d1f546))
18
+ * **api:** remove Event Search API and add contract priority field ([ae63c04](https://github.com/Metronome-Industries/metronome-ruby/commit/ae63c045c280949ba69c636c9ed25ea5942822ad))
19
+ * **api:** add shared type aliases for commit/credit types ([2f8a188](https://github.com/Metronome-Industries/metronome-ruby/commit/2f8a18824b0f5b6455dce126799de441be282a78))
20
+ * **api:** remove shared type aliases for commit/credit types ([e86a139](https://github.com/Metronome-Industries/metronome-ruby/commit/e86a139fca3e4b1919d8de7e1fb5841eb4835e3b))
21
+ * **api:** add contract hierarchy configuration to shared types ([4a31b46](https://github.com/Metronome-Industries/metronome-ruby/commit/4a31b4636526937656b65c265e74119c1944fb82))
22
+ * **api:** change recurring commit/credit access amount quantity field from required to optional ([2403df6](https://github.com/Metronome-Industries/metronome-ruby/commit/2403df68d460ddbdac8d0e5ef51c64b9d95a3029))
23
+ * **api:** add sort parameter to credit grant list entries API ([a56f5cb](https://github.com/Metronome-Industries/metronome-ruby/commit/a56f5cb1a04d956a282e21e520e25855b45807a6))
24
+ * **client:** add debug log helper ([fbc9042](https://github.com/Metronome-Industries/metronome-ruby/commit/fbc904277c1a3e96f3a0a03f3b2f65863802be2d))
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * `to_sorbet_type` should not return branded types ([9fda15f](https://github.com/Metronome-Industries/metronome-ruby/commit/9fda15fbb91924034acacadd4e4b88ba49bb9e61))
30
+ * **ci:** release-doctor — report correct token name ([ea3a4df](https://github.com/Metronome-Industries/metronome-ruby/commit/ea3a4dfc3c361601f10d7bf0bf9e8472404a413b))
31
+ * default content-type for text in multi-part formdata uploads should be text/plain ([c566bfd](https://github.com/Metronome-Industries/metronome-ruby/commit/c566bfd18faba7624ccf41b9275ecfa2610c40ed))
32
+ * issue where we cannot mutate arrays on base model derivatives ([8020ba8](https://github.com/Metronome-Industries/metronome-ruby/commit/8020ba8df6fbdb8362dd00223ad360a93acc0666))
33
+
34
+
35
+ ### Chores
36
+
37
+ * **ci:** enable for pull requests ([0dbe09f](https://github.com/Metronome-Industries/metronome-ruby/commit/0dbe09f41e8b56a873bcf1151ab5dff3a39a2d30))
38
+ * **ci:** link to correct github repo ([ca6bdf8](https://github.com/Metronome-Industries/metronome-ruby/commit/ca6bdf8a4edfe037c672b8e1fc4a800656391a49))
39
+ * **ci:** only run for pushes and fork pull requests ([e21f43c](https://github.com/Metronome-Industries/metronome-ruby/commit/e21f43ca4d03f0246693dc04393c2f82391d617a))
40
+ * **internal:** allow streams to also be unwrapped on a per-row basis ([b40d49a](https://github.com/Metronome-Industries/metronome-ruby/commit/b40d49a3e3915cc4bb47ebdcebac5e139ad7f07b))
41
+ * **internal:** version bump ([c50a620](https://github.com/Metronome-Industries/metronome-ruby/commit/c50a620ff8154b422aeb80e827986f28eded7da5))
42
+
43
+ ## 0.1.0-alpha.3 (2025-05-30)
44
+
45
+ Full Changelog: [v0.1.0-alpha.2...v0.1.0-alpha.3](https://github.com/Metronome-Industries/metronome-ruby/compare/v0.1.0-alpha.2...v0.1.0-alpha.3)
46
+
47
+ ### Features
48
+
49
+ * **api:** add subscription quantity history endpoint ([e351c6a](https://github.com/Metronome-Industries/metronome-ruby/commit/e351c6a19805c7ee8b81bf91a53eba9aca23de3b))
50
+ * **api:** api update ([74509d0](https://github.com/Metronome-Industries/metronome-ruby/commit/74509d026a2b1d05de8f01d632265712ec76902c))
51
+ * **api:** api update ([fd3ee7b](https://github.com/Metronome-Industries/metronome-ruby/commit/fd3ee7b5a91c376610c43bca936275acc2496d9a))
52
+ * **api:** api update ([cf7391b](https://github.com/Metronome-Industries/metronome-ruby/commit/cf7391bae153f1ef054eca2b823c2ad24b2a4ca2))
53
+ * **api:** api update ([d20737d](https://github.com/Metronome-Industries/metronome-ruby/commit/d20737d6b20aff070f442cb3d839a6936cefbfd9))
54
+ * **api:** api update ([43088af](https://github.com/Metronome-Industries/metronome-ruby/commit/43088af50aedccdc33d881d798abae2ae43effd4))
55
+ * **api:** api update ([a594256](https://github.com/Metronome-Industries/metronome-ruby/commit/a5942561ba77e6737f173845b8c77851d01bc29e))
56
+ * **api:** api update ([abef131](https://github.com/Metronome-Industries/metronome-ruby/commit/abef13148c6c87616bf17b9d8ddd27fa0720b4d2))
57
+ * **api:** api update ([e43c423](https://github.com/Metronome-Industries/metronome-ruby/commit/e43c4232914c39e151e48408f5e7bc92e3bba344))
58
+ * **api:** api update ([b380b6b](https://github.com/Metronome-Industries/metronome-ruby/commit/b380b6b419c5632c69042c59e56da7dd77b1c48d))
59
+ * **api:** api update ([5f4769e](https://github.com/Metronome-Industries/metronome-ruby/commit/5f4769ef4d7618986889aa65eb27b216925b6b88))
60
+ * **api:** api update ([6bc1ed9](https://github.com/Metronome-Industries/metronome-ruby/commit/6bc1ed9258a3e91af051ad66ce1154ca8f935672))
61
+ * **api:** rename get subscription quantity history to retrieve ([f42dd95](https://github.com/Metronome-Industries/metronome-ruby/commit/f42dd9512d9753529e30d84581d773266d3430a1))
62
+ * bump default connection pool size limit to minimum of 99 ([3505102](https://github.com/Metronome-Industries/metronome-ruby/commit/35051025eee8e1cc82573c6cdb22e5cdbba8bac4))
63
+
64
+
65
+ ### Bug Fixes
66
+
67
+ * correctly instantiate sorbet type aliases for enums and unions ([1f185c4](https://github.com/Metronome-Industries/metronome-ruby/commit/1f185c48f242edd584803dbe80446c7d1fda8dd0))
68
+ * prevent rubocop from mangling `===` to `is_a?` check ([c83f973](https://github.com/Metronome-Industries/metronome-ruby/commit/c83f9731040b4fb2681463e1462ce0c58fa76a9d))
69
+ * sorbet types for enums, and make tapioca detection ignore `tapioca dsl` ([20f971e](https://github.com/Metronome-Industries/metronome-ruby/commit/20f971e01e29c18fa9da3d8997501ced4201dbcf))
70
+
71
+
72
+ ### Chores
73
+
74
+ * configure new SDK language ([f533e8d](https://github.com/Metronome-Industries/metronome-ruby/commit/f533e8dd8644c8ea438f6415107dae372e066b42))
75
+ * **docs:** grammar improvements ([75acd0d](https://github.com/Metronome-Industries/metronome-ruby/commit/75acd0d91d514981f2289a30d5814b22572937e1))
76
+ * force utf-8 locale via `RUBYOPT` when formatting ([f0d61eb](https://github.com/Metronome-Industries/metronome-ruby/commit/f0d61eb00cc448aea60b083e39becc33ca1dbcda))
77
+ * refine Yard and Sorbet types and ensure linting is turned on for examples ([17087f7](https://github.com/Metronome-Industries/metronome-ruby/commit/17087f718e886d75803b500f31e271eb1372fb1d))
78
+ * update SDK settings ([cba0fb7](https://github.com/Metronome-Industries/metronome-ruby/commit/cba0fb75b0455b8a49cdf6b184a4976792a34e6e))
79
+ * use fully qualified names for yard annotations and rbs aliases ([e6c95d3](https://github.com/Metronome-Industries/metronome-ruby/commit/e6c95d341d8d28396ccc7a986afe0930749d32c8))
80
+ * use sorbet union aliases where available ([0070ea5](https://github.com/Metronome-Industries/metronome-ruby/commit/0070ea559f406fa847bc4078f346923469a404d8))
81
+ * whitespaces ([e343538](https://github.com/Metronome-Industries/metronome-ruby/commit/e343538c481650b8e1ad74a25e32635261f4d132))
82
+
83
+
84
+ ### Documentation
85
+
86
+ * rewrite much of README.md for readability ([c653f5e](https://github.com/Metronome-Industries/metronome-ruby/commit/c653f5e7a6c5b176c3ca4b566afd0ed612ef4e3d))
87
+
3
88
  ## 0.1.0-alpha.2 (2025-05-14)
4
89
 
5
90
  Full Changelog: [v0.1.0-alpha.1...v0.1.0-alpha.2](https://github.com/Metronome-Industries/metronome-ruby/compare/v0.1.0-alpha.1...v0.1.0-alpha.2)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Metronome Ruby API library
2
2
 
3
- The Metronome Ruby library provides convenient access to the Metronome REST API from any Ruby 3.2.0+ application.
3
+ The Metronome Ruby library provides convenient access to the Metronome REST API from any Ruby 3.2.0+ application. It ships with comprehensive types & docstrings in Yard, RBS, and RBI – [see below](https://github.com/Metronome-Industries/metronome-ruby#Sorbet) for usage with Sorbet. The standard library's `net/http` is used as the HTTP transport, with connection pooling via the `connection_pool` gem.
4
4
 
5
5
  It is generated with [Stainless](https://www.stainless.com/).
6
6
 
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "metronome-sdk", "~> 0.1.0.pre.alpha.2"
20
+ gem "metronome-sdk", "~> 0.1.0.pre.alpha.4"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -47,26 +47,6 @@ result = metronome.v1.usage.ingest(
47
47
  puts(result)
48
48
  ```
49
49
 
50
- ## Sorbet
51
-
52
- This library is written with [Sorbet type definitions](https://sorbet.org/docs/rbi). However, there is no runtime dependency on the `sorbet-runtime`.
53
-
54
- When using sorbet, it is recommended to use model classes as below. This provides stronger type checking and tooling integration.
55
-
56
- ```ruby
57
- metronome.v1.usage.ingest(
58
- usage: [
59
- MetronomeSDK::V1::UsageIngestParams::Usage.new(
60
- transaction_id: "90e9401f-0f8c-4cd3-9a9f-d6beb56d8d72",
61
- customer_id: "team@example.com",
62
- event_type: "heartbeat",
63
- timestamp: "2024-01-01T00:00:00Z",
64
- properties: {cluster_id: "42", cpu_seconds: 60, region: "Europe"}
65
- )
66
- ]
67
- )
68
- ```
69
-
70
50
  ### Pagination
71
51
 
72
52
  List methods in the Metronome API are paginated.
@@ -86,7 +66,16 @@ page.auto_paging_each do |product|
86
66
  end
87
67
  ```
88
68
 
89
- ### Errors
69
+ Alternatively, you can use the `#next_page?` and `#next_page` methods for more granular control working with pages.
70
+
71
+ ```ruby
72
+ if page.next_page?
73
+ new_page = page.next_page
74
+ puts(new_page.data[0].id)
75
+ end
76
+ ```
77
+
78
+ ### Handling errors
90
79
 
91
80
  When the library is unable to connect to the API, or if the API returns a non-success status code (i.e., 4xx or 5xx response), a subclass of `MetronomeSDK::Errors::APIError` will be thrown:
92
81
 
@@ -96,8 +85,14 @@ begin
96
85
  customer_id: "13117714-3f05-48e5-a6e9-a66093f13b4d",
97
86
  starting_at: "2020-01-01T00:00:00.000Z"
98
87
  )
99
- rescue MetronomeSDK::Errors::APIError => e
100
- puts(e.status) # 400
88
+ rescue MetronomeSDK::Errors::APIConnectionError => e
89
+ puts("The server could not be reached")
90
+ puts(e.cause) # an underlying Exception, likely raised within `net/http`
91
+ rescue MetronomeSDK::Errors::RateLimitError => e
92
+ puts("A 429 status code was received; we should back off a bit.")
93
+ rescue MetronomeSDK::Errors::APIStatusError => e
94
+ puts("Another non-200-range status code was received")
95
+ puts(e.status)
101
96
  end
102
97
  ```
103
98
 
@@ -141,11 +136,7 @@ metronome.v1.contracts.create(
141
136
 
142
137
  ### Timeouts
143
138
 
144
- By default, requests will time out after 60 seconds.
145
-
146
- Timeouts are applied separately to the initial connection and the overall request time, so in some cases a request could wait 2\*timeout seconds before it fails.
147
-
148
- You can use the `timeout` option to configure or disable this:
139
+ By default, requests will time out after 60 seconds. You can use the timeout option to configure or disable this:
149
140
 
150
141
  ```ruby
151
142
  # Configure the default for all requests:
@@ -161,57 +152,54 @@ metronome.v1.contracts.create(
161
152
  )
162
153
  ```
163
154
 
164
- ## Model DSL
155
+ On timeout, `MetronomeSDK::Errors::APITimeoutError` is raised.
165
156
 
166
- This library uses a simple DSL to represent request parameters and response shapes in `lib/metronome_sdk/models`.
157
+ Note that requests that time out are retried by default.
167
158
 
168
- With the right [editor plugins](https://shopify.github.io/ruby-lsp), you can ctrl-click on elements of the DSL to navigate around and explore the library.
159
+ ## Advanced concepts
169
160
 
170
- In all places where a `BaseModel` type is specified, vanilla Ruby `Hash` can also be used. For example, the following are interchangeable as arguments:
161
+ ### BaseModel
171
162
 
172
- ```ruby
173
- # This has tooling readability, for auto-completion, static analysis, and goto definition with supported language services
174
- params = MetronomeSDK::Models::V1::UsageIngestParams.new(
175
- usage: [
176
- MetronomeSDK::V1::UsageIngestParams::Usage.new(
177
- transaction_id: "90e9401f-0f8c-4cd3-9a9f-d6beb56d8d72",
178
- customer_id: "team@example.com",
179
- event_type: "heartbeat",
180
- timestamp: "2024-01-01T00:00:00Z",
181
- properties: {cluster_id: "42", cpu_seconds: 60, region: "Europe"}
182
- )
183
- ]
184
- )
163
+ All parameter and response objects inherit from `MetronomeSDK::Internal::Type::BaseModel`, which provides several conveniences, including:
185
164
 
186
- # This also works
187
- params = {
188
- usage: [
189
- {
190
- transaction_id: "90e9401f-0f8c-4cd3-9a9f-d6beb56d8d72",
191
- customer_id: "team@example.com",
192
- event_type: "heartbeat",
193
- timestamp: "2024-01-01T00:00:00Z",
194
- properties: {cluster_id: "42", cpu_seconds: 60, region: "Europe"}
195
- }
196
- ]
197
- }
198
- ```
165
+ 1. All fields, including unknown ones, are accessible with `obj[:prop]` syntax, and can be destructured with `obj => {prop: prop}` or pattern-matching syntax.
199
166
 
200
- ## Editor support
167
+ 2. Structural equivalence for equality; if two API calls return the same values, comparing the responses with == will return true.
201
168
 
202
- A combination of [Shopify LSP](https://shopify.github.io/ruby-lsp) and [Solargraph](https://solargraph.org/) is recommended for non-[Sorbet](https://sorbet.org) users. The former is especially good at go to definition, while the latter has much better auto-completion support.
169
+ 3. Both instances and the classes themselves can be pretty-printed.
203
170
 
204
- ## Advanced concepts
171
+ 4. Helpers such as `#to_h`, `#deep_to_h`, `#to_json`, and `#to_yaml`.
172
+
173
+ ### Making custom or undocumented requests
174
+
175
+ #### Undocumented properties
205
176
 
206
- ### Making custom/undocumented requests
177
+ You can send undocumented parameters to any endpoint, and read undocumented response properties, like so:
178
+
179
+ Note: the `extra_` parameters of the same name overrides the documented parameters.
180
+
181
+ ```ruby
182
+ contract =
183
+ metronome.v1.contracts.create(
184
+ customer_id: "13117714-3f05-48e5-a6e9-a66093f13b4d",
185
+ starting_at: "2020-01-01T00:00:00.000Z",
186
+ request_options: {
187
+ extra_query: {my_query_parameter: value},
188
+ extra_body: {my_body_parameter: value},
189
+ extra_headers: {"my-header": value}
190
+ }
191
+ )
192
+
193
+ puts(contract[:my_undocumented_property])
194
+ ```
207
195
 
208
196
  #### Undocumented request params
209
197
 
210
- If you want to explicitly send an extra param, you can do so with the `extra_query`, `extra_body`, and `extra_headers` under the `request_options:` parameter when making a requests as seen in examples above.
198
+ If you want to explicitly send an extra param, you can do so with the `extra_query`, `extra_body`, and `extra_headers` under the `request_options:` parameter when making a request, as seen in the examples above.
211
199
 
212
200
  #### Undocumented endpoints
213
201
 
214
- To make requests to undocumented endpoints, you can make requests using `client.request`. Options on the client will be respected (such as retries) when making this request.
202
+ To make requests to undocumented endpoints while retaining the benefit of auth, retries, and so on, you can make requests using `client.request`, like so:
215
203
 
216
204
  ```ruby
217
205
  response = client.request(
@@ -219,28 +207,58 @@ response = client.request(
219
207
  path: '/undocumented/endpoint',
220
208
  query: {"dog": "woof"},
221
209
  headers: {"useful-header": "interesting-value"},
222
- body: {"he": "llo"},
210
+ body: {"hello": "world"}
223
211
  )
224
212
  ```
225
213
 
226
214
  ### Concurrency & connection pooling
227
215
 
228
- The `MetronomeSDK::Client` instances are thread-safe, and should be re-used across multiple threads. By default, each `Client` have their own HTTP connection pool, with a maximum number of connections equal to thread count.
216
+ The `MetronomeSDK::Client` instances are threadsafe, but are only are fork-safe when there are no in-flight HTTP requests.
217
+
218
+ Each instance of `MetronomeSDK::Client` has its own HTTP connection pool with a default size of 99. As such, we recommend instantiating the client once per application in most settings.
229
219
 
230
- When the maximum number of connections has been checked out from the connection pool, the `Client` will wait for an in use connection to become available. The queue time for this mechanism is accounted for by the per-request timeout.
220
+ When all available connections from the pool are checked out, requests wait for a new connection to become available, with queue time counting towards the request timeout.
231
221
 
232
222
  Unless otherwise specified, other classes in the SDK do not have locks protecting their underlying data structure.
233
223
 
234
- Currently, `MetronomeSDK::Client` instances are only fork-safe if there are no in-flight HTTP requests.
224
+ ## Sorbet
235
225
 
236
- ### Sorbet
226
+ This library provides comprehensive [RBI](https://sorbet.org/docs/rbi) definitions, and has no dependency on sorbet-runtime.
237
227
 
238
- #### Argument passing trick
228
+ You can provide typesafe request parameters like so:
239
229
 
240
- It is possible to pass a compatible model / parameter class to a method that expects keyword arguments by using the `**` splat operator.
230
+ ```ruby
231
+ metronome.v1.usage.ingest(
232
+ usage: [
233
+ MetronomeSDK::V1::UsageIngestParams::Usage.new(
234
+ transaction_id: "90e9401f-0f8c-4cd3-9a9f-d6beb56d8d72",
235
+ customer_id: "team@example.com",
236
+ event_type: "heartbeat",
237
+ timestamp: "2024-01-01T00:00:00Z",
238
+ properties: {cluster_id: "42", cpu_seconds: 60, region: "Europe"}
239
+ )
240
+ ]
241
+ )
242
+ ```
243
+
244
+ Or, equivalently:
241
245
 
242
246
  ```ruby
243
- params = MetronomeSDK::Models::V1::UsageIngestParams.new(
247
+ # Hashes work, but are not typesafe:
248
+ metronome.v1.usage.ingest(
249
+ usage: [
250
+ {
251
+ transaction_id: "90e9401f-0f8c-4cd3-9a9f-d6beb56d8d72",
252
+ customer_id: "team@example.com",
253
+ event_type: "heartbeat",
254
+ timestamp: "2024-01-01T00:00:00Z",
255
+ properties: {cluster_id: "42", cpu_seconds: 60, region: "Europe"}
256
+ }
257
+ ]
258
+ )
259
+
260
+ # You can also splat a full Params class:
261
+ params = MetronomeSDK::V1::UsageIngestParams.new(
244
262
  usage: [
245
263
  MetronomeSDK::V1::UsageIngestParams::Usage.new(
246
264
  transaction_id: "90e9401f-0f8c-4cd3-9a9f-d6beb56d8d72",
@@ -254,6 +272,34 @@ params = MetronomeSDK::Models::V1::UsageIngestParams.new(
254
272
  metronome.v1.usage.ingest(**params)
255
273
  ```
256
274
 
275
+ ### Enums
276
+
277
+ Since this library does not depend on `sorbet-runtime`, it cannot provide [`T::Enum`](https://sorbet.org/docs/tenum) instances. Instead, we provide "tagged symbols" instead, which is always a primitive at runtime:
278
+
279
+ ```ruby
280
+ # :low_credit_balance_reached
281
+ puts(MetronomeSDK::V1::AlertCreateParams::AlertType::LOW_CREDIT_BALANCE_REACHED)
282
+
283
+ # Revealed type: `T.all(MetronomeSDK::V1::AlertCreateParams::AlertType, Symbol)`
284
+ T.reveal_type(MetronomeSDK::V1::AlertCreateParams::AlertType::LOW_CREDIT_BALANCE_REACHED)
285
+ ```
286
+
287
+ Enum parameters have a "relaxed" type, so you can either pass in enum constants or their literal value:
288
+
289
+ ```ruby
290
+ # Using the enum constants preserves the tagged type information:
291
+ metronome.v1.alerts.create(
292
+ alert_type: MetronomeSDK::V1::AlertCreateParams::AlertType::LOW_CREDIT_BALANCE_REACHED,
293
+ # …
294
+ )
295
+
296
+ # Literal values are also permissible:
297
+ metronome.v1.alerts.create(
298
+ alert_type: :low_credit_balance_reached,
299
+ # …
300
+ )
301
+ ```
302
+
257
303
  ## Versioning
258
304
 
259
305
  This package follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions. As the library is in initial development and has a major version of `0`, APIs may change at any time.
data/SECURITY.md CHANGED
@@ -16,11 +16,11 @@ before making any information public.
16
16
  ## Reporting Non-SDK Related Security Issues
17
17
 
18
18
  If you encounter security issues that are not directly related to SDKs but pertain to the services
19
- or products provided by Metronome please follow the respective company's security reporting guidelines.
19
+ or products provided by Metronome, please follow the respective company's security reporting guidelines.
20
20
 
21
21
  ### Metronome Terms and Policies
22
22
 
23
- Please contact dev-feedback@metronome.com for any questions or concerns regarding security of our services.
23
+ Please contact dev-feedback@metronome.com for any questions or concerns regarding the security of our services.
24
24
 
25
25
  ---
26
26
 
@@ -50,10 +50,10 @@ module MetronomeSDK
50
50
  def initialize(
51
51
  bearer_token: ENV["METRONOME_BEARER_TOKEN"],
52
52
  base_url: ENV["METRONOME_BASE_URL"],
53
- max_retries: MetronomeSDK::Client::DEFAULT_MAX_RETRIES,
54
- timeout: MetronomeSDK::Client::DEFAULT_TIMEOUT_IN_SECONDS,
55
- initial_retry_delay: MetronomeSDK::Client::DEFAULT_INITIAL_RETRY_DELAY,
56
- max_retry_delay: MetronomeSDK::Client::DEFAULT_MAX_RETRY_DELAY
53
+ max_retries: self.class::DEFAULT_MAX_RETRIES,
54
+ timeout: self.class::DEFAULT_TIMEOUT_IN_SECONDS,
55
+ initial_retry_delay: self.class::DEFAULT_INITIAL_RETRY_DELAY,
56
+ max_retry_delay: self.class::DEFAULT_MAX_RETRY_DELAY
57
57
  )
58
58
  base_url ||= "https://api.metronome.com"
59
59
 
@@ -9,6 +9,28 @@ module MetronomeSDK
9
9
  end
10
10
 
11
11
  class ConversionError < MetronomeSDK::Errors::Error
12
+ # @return [StandardError, nil]
13
+ def cause = @cause.nil? ? super : @cause
14
+
15
+ # @api private
16
+ #
17
+ # @param on [Class<StandardError>]
18
+ # @param method [Symbol]
19
+ # @param target [Object]
20
+ # @param value [Object]
21
+ # @param cause [StandardError, nil]
22
+ def initialize(on:, method:, target:, value:, cause: nil)
23
+ cls = on.name.split("::").last
24
+
25
+ message = [
26
+ "Failed to parse #{cls}.#{method} from #{value.class} to #{target.inspect}.",
27
+ "To get the unparsed API response, use #{cls}[#{method.inspect}].",
28
+ cause && "Cause: #{cause.message}"
29
+ ].filter(&:itself).join(" ")
30
+
31
+ @cause = cause
32
+ super(message)
33
+ end
12
34
  end
13
35
 
14
36
  class APIError < MetronomeSDK::Errors::Error
@@ -474,6 +474,7 @@ module MetronomeSDK
474
474
  self.class.validate!(req)
475
475
  model = req.fetch(:model) { MetronomeSDK::Internal::Type::Unknown }
476
476
  opts = req[:options].to_h
477
+ unwrap = req[:unwrap]
477
478
  MetronomeSDK::RequestOptions.validate!(opts)
478
479
  request = build_request(req.except(:options), opts)
479
480
  url = request.fetch(:url)
@@ -490,11 +491,18 @@ module MetronomeSDK
490
491
  decoded = MetronomeSDK::Internal::Util.decode_content(response, stream: stream)
491
492
  case req
492
493
  in {stream: Class => st}
493
- st.new(model: model, url: url, status: status, response: response, stream: decoded)
494
+ st.new(
495
+ model: model,
496
+ url: url,
497
+ status: status,
498
+ response: response,
499
+ unwrap: unwrap,
500
+ stream: decoded
501
+ )
494
502
  in {page: Class => page}
495
503
  page.new(client: self, req: req, headers: response, page_data: decoded)
496
504
  else
497
- unwrapped = MetronomeSDK::Internal::Util.dig(decoded, req[:unwrap])
505
+ unwrapped = MetronomeSDK::Internal::Util.dig(decoded, unwrap)
498
506
  MetronomeSDK::Internal::Type::Converter.coerce(model, unwrapped)
499
507
  end
500
508
  end
@@ -11,6 +11,8 @@ module MetronomeSDK
11
11
  # https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
12
12
  KEEP_ALIVE_TIMEOUT = 30
13
13
 
14
+ DEFAULT_MAX_CONNECTIONS = [Etc.nprocessors, 99].max
15
+
14
16
  class << self
15
17
  # @api private
16
18
  #
@@ -184,7 +186,7 @@ module MetronomeSDK
184
186
  # @api private
185
187
  #
186
188
  # @param size [Integer]
187
- def initialize(size: Etc.nprocessors)
189
+ def initialize(size: self.class::DEFAULT_MAX_CONNECTIONS)
188
190
  @mutex = Mutex.new
189
191
  @size = size
190
192
  @pools = {}
@@ -12,6 +12,7 @@ module MetronomeSDK
12
12
  # Array of items of a given type.
13
13
  class ArrayOf
14
14
  include MetronomeSDK::Internal::Type::Converter
15
+ include MetronomeSDK::Internal::Util::SorbetRuntimeSupport
15
16
 
16
17
  private_class_method :new
17
18
 
@@ -61,10 +62,14 @@ module MetronomeSDK
61
62
  #
62
63
  # @param state [Hash{Symbol=>Object}] .
63
64
  #
64
- # @option state [Boolean, :strong] :strictness
65
+ # @option state [Boolean] :translate_names
66
+ #
67
+ # @option state [Boolean] :strictness
65
68
  #
66
69
  # @option state [Hash{Symbol=>Object}] :exactness
67
70
  #
71
+ # @option state [Class<StandardError>] :error
72
+ #
68
73
  # @option state [Integer] :branched
69
74
  #
70
75
  # @return [Array<Object>, Object]
@@ -73,6 +78,7 @@ module MetronomeSDK
73
78
 
74
79
  unless value.is_a?(Array)
75
80
  exactness[:no] += 1
81
+ state[:error] = TypeError.new("#{value.class} can't be coerced into #{Array}")
76
82
  return value
77
83
  end
78
84
 
@@ -110,6 +116,13 @@ module MetronomeSDK
110
116
  end
111
117
  end
112
118
 
119
+ # @api private
120
+ #
121
+ # @return [Object]
122
+ def to_sorbet_type
123
+ T::Array[MetronomeSDK::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(item_type)]
124
+ end
125
+
113
126
  # @api private
114
127
  #
115
128
  # @return [generic<Elem>]