metronome-sdk 3.5.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/client.rb +15 -1
  5. data/lib/metronome_sdk/internal/transport/base_client.rb +2 -0
  6. data/lib/metronome_sdk/internal/type/enum.rb +0 -25
  7. data/lib/metronome_sdk/models/commit.rb +27 -1
  8. data/lib/metronome_sdk/models/contract.rb +140 -1
  9. data/lib/metronome_sdk/models/contract_v2.rb +530 -6
  10. data/lib/metronome_sdk/models/contract_without_amendments.rb +142 -1
  11. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +105 -2
  12. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +103 -2
  13. data/lib/metronome_sdk/models/spend_threshold_configuration.rb +33 -1
  14. data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +33 -1
  15. data/lib/metronome_sdk/models/v1/alert_create_params.rb +1 -0
  16. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +29 -177
  17. data/lib/metronome_sdk/models/v1/contract_create_params.rb +147 -180
  18. data/lib/metronome_sdk/models/v1/contract_create_response.rb +1134 -3
  19. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +119 -0
  20. data/lib/metronome_sdk/models/v1/contract_list_seat_balances_response.rb +315 -0
  21. data/lib/metronome_sdk/models/v1/contracts/product_create_params.rb +31 -1
  22. data/lib/metronome_sdk/models/v1/contracts/product_update_params.rb +31 -1
  23. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +1 -0
  24. data/lib/metronome_sdk/models/v1/customers/invoice.rb +8 -1
  25. data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +29 -1
  26. data/lib/metronome_sdk/models/v1/package_create_params.rb +115 -18
  27. data/lib/metronome_sdk/models/v1/package_list_response.rb +110 -1
  28. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +114 -1
  29. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +303 -5
  30. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +3862 -3
  31. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +507 -6
  32. data/lib/metronome_sdk/resources/v1/contracts/products.rb +6 -2
  33. data/lib/metronome_sdk/resources/v1/contracts.rb +72 -3
  34. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +5 -1
  35. data/lib/metronome_sdk/resources/v1/packages.rb +6 -7
  36. data/lib/metronome_sdk/resources/v1.rb +0 -4
  37. data/lib/metronome_sdk/resources/v2/contracts.rb +5 -1
  38. data/lib/metronome_sdk/version.rb +1 -1
  39. data/lib/metronome_sdk.rb +2 -8
  40. data/rbi/metronome_sdk/models/commit.rbi +48 -0
  41. data/rbi/metronome_sdk/models/contract.rbi +354 -0
  42. data/rbi/metronome_sdk/models/contract_v2.rbi +1172 -4
  43. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +368 -0
  44. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +289 -6
  45. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +283 -6
  46. data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +78 -3
  47. data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +78 -3
  48. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +5 -0
  49. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +54 -396
  50. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +370 -398
  51. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +2448 -4
  52. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +179 -0
  53. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_response.rbi +714 -0
  54. data/rbi/metronome_sdk/models/v1/contracts/product_create_params.rbi +74 -0
  55. data/rbi/metronome_sdk/models/v1/contracts/product_update_params.rbi +74 -0
  56. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +5 -0
  57. data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +9 -0
  58. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +75 -0
  59. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +310 -56
  60. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +307 -0
  61. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +307 -0
  62. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +734 -11
  63. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +8612 -4
  64. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1355 -219
  65. data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +18 -0
  66. data/rbi/metronome_sdk/resources/v1/contracts.rbi +88 -3
  67. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +7 -0
  68. data/rbi/metronome_sdk/resources/v1/packages.rbi +8 -7
  69. data/rbi/metronome_sdk/resources/v1.rbi +0 -3
  70. data/rbi/metronome_sdk/resources/v2/contracts.rbi +10 -0
  71. data/sig/metronome_sdk/models/commit.rbs +19 -0
  72. data/sig/metronome_sdk/models/contract.rbs +151 -0
  73. data/sig/metronome_sdk/models/contract_v2.rbs +494 -6
  74. data/sig/metronome_sdk/models/contract_without_amendments.rbs +151 -0
  75. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +116 -6
  76. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +116 -6
  77. data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +31 -3
  78. data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +31 -3
  79. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +3 -1
  80. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +19 -137
  81. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +134 -137
  82. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +1045 -4
  83. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +96 -0
  84. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_response.rbs +299 -0
  85. data/sig/metronome_sdk/models/v1/contracts/product_create_params.rbs +20 -0
  86. data/sig/metronome_sdk/models/v1/contracts/product_update_params.rbs +20 -0
  87. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +3 -1
  88. data/sig/metronome_sdk/models/v1/customers/invoice.rbs +7 -0
  89. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +29 -1
  90. data/sig/metronome_sdk/models/v1/package_create_params.rbs +115 -20
  91. data/sig/metronome_sdk/models/v1/package_list_response.rbs +115 -0
  92. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +115 -0
  93. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +283 -9
  94. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +3792 -4
  95. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +461 -15
  96. data/sig/metronome_sdk/resources/v1/contracts/products.rbs +2 -0
  97. data/sig/metronome_sdk/resources/v1/contracts.rbs +16 -0
  98. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +2 -0
  99. data/sig/metronome_sdk/resources/v1/packages.rbs +1 -1
  100. data/sig/metronome_sdk/resources/v1.rbs +0 -2
  101. data/sig/metronome_sdk/resources/v2/contracts.rbs +2 -0
  102. metadata +8 -26
  103. data/lib/metronome_sdk/models/v1/payment.rb +0 -196
  104. data/lib/metronome_sdk/models/v1/payment_attempt_params.rb +0 -28
  105. data/lib/metronome_sdk/models/v1/payment_attempt_response.rb +0 -18
  106. data/lib/metronome_sdk/models/v1/payment_cancel_params.rb +0 -28
  107. data/lib/metronome_sdk/models/v1/payment_cancel_response.rb +0 -18
  108. data/lib/metronome_sdk/models/v1/payment_list_params.rb +0 -53
  109. data/lib/metronome_sdk/models/v1/payment_status.rb +0 -19
  110. data/lib/metronome_sdk/resources/v1/payments.rb +0 -102
  111. data/rbi/metronome_sdk/models/v1/payment.rbi +0 -403
  112. data/rbi/metronome_sdk/models/v1/payment_attempt_params.rbi +0 -48
  113. data/rbi/metronome_sdk/models/v1/payment_attempt_response.rbi +0 -35
  114. data/rbi/metronome_sdk/models/v1/payment_cancel_params.rbi +0 -48
  115. data/rbi/metronome_sdk/models/v1/payment_cancel_response.rbi +0 -35
  116. data/rbi/metronome_sdk/models/v1/payment_list_params.rbi +0 -91
  117. data/rbi/metronome_sdk/models/v1/payment_status.rbi +0 -33
  118. data/rbi/metronome_sdk/resources/v1/payments.rbi +0 -72
  119. data/sig/metronome_sdk/models/v1/payment.rbs +0 -243
  120. data/sig/metronome_sdk/models/v1/payment_attempt_params.rbs +0 -30
  121. data/sig/metronome_sdk/models/v1/payment_attempt_response.rbs +0 -15
  122. data/sig/metronome_sdk/models/v1/payment_cancel_params.rbs +0 -30
  123. data/sig/metronome_sdk/models/v1/payment_cancel_response.rbs +0 -15
  124. data/sig/metronome_sdk/models/v1/payment_list_params.rbs +0 -56
  125. data/sig/metronome_sdk/models/v1/payment_status.rbs +0 -19
  126. data/sig/metronome_sdk/resources/v1/payments.rbs +0 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0efabaeb66e2c3c37a2df72b4643172c5696992964c9d4d87fa7c8831d954bae
4
- data.tar.gz: ce828a8840076f76c98d7721873e799fa3f536dcb4cedf25705fb5080b2ef90b
3
+ metadata.gz: 72c947987bf3b6947462d66133a12deab29b5c7ed85c20169adfa923caf73076
4
+ data.tar.gz: 54e641c55d3862d539331f0716fb62feece95b6cf83e15217dedb4fbdf2dc1bc
5
5
  SHA512:
6
- metadata.gz: f4404c030aaafa8c308dd7b708bfb709e92d5a0b03c9822187fe5dd2ce7cae120fb0c2ba76f39d95de800cd91005e6ed913658509cdcc53a213d9fd0301bda12
7
- data.tar.gz: 728d74b8043e076f0b0719967681cb8341558ee9a9a536b40dbf7364141c49faf2c8934fcd3ed35af5ce47e287e230a284b0607a95d33d32e943233ba2ab4fb0
6
+ metadata.gz: 1e9d8143dcda81173e1fd5c63001d0d952a27b667194d9c1e26c2a19a1f3d0c80b82f5463d394603cd22bd0f0ab79d7ffd47faaabaf6e7633ed73a73fcbb99cd
7
+ data.tar.gz: fa66a0ab59ddde426e0e9ac34adae0f40d3d99e1fdb827ed4934bde394d6902b90372f7e1e69942aeb416706e6cfc9ade9a05c9267723bc5b98dd7fb1943376e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,58 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.7.0 (2026-05-29)
4
+
5
+ Full Changelog: [v3.6.0...v3.7.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.6.0...v3.7.0)
6
+
7
+ ### Features
8
+
9
+ * [LAUNCH-2814] editContract returns full edit in the response ([fd684bc](https://github.com/Metronome-Industries/metronome-ruby/commit/fd684bc491dc2083911a144ba0a455385eaf315d))
10
+ * [orch-1860] remove all deprecated `/payments/*` endpoints from API ([1c6cdb1](https://github.com/Metronome-Industries/metronome-ruby/commit/1c6cdb1d7629e6a29adc78a1dbd460eebbbab08b))
11
+ * create contract returns contract data ([16469e5](https://github.com/Metronome-Industries/metronome-ruby/commit/16469e57c6563dd35b5b2f3cf05893a69ec7d406))
12
+ * nikku-orch-1723-update-create-contract ([a5de974](https://github.com/Metronome-Industries/metronome-ruby/commit/a5de9740f141a211e0435fff858ceca62d2b5359))
13
+
14
+
15
+ ### Chores
16
+
17
+ * (internal) Add threshold balance specifier to contract create & edit, package create and both contract and package retrievals ([eb1049d](https://github.com/Metronome-Industries/metronome-ruby/commit/eb1049d2826865a29710c274e13cc311005a0e91))
18
+
19
+ ## 3.6.0 (2026-05-18)
20
+
21
+ Full Changelog: [v3.5.0...v3.6.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.5.0...v3.6.0)
22
+
23
+ ### Features
24
+
25
+ * [docs] fix typo in "Create a Contract" [1] page ([1c944c1](https://github.com/Metronome-Industries/metronome-ruby/commit/1c944c186c83b405e283708850d5a608e6c21ed6))
26
+ * [orch-383] fix API docs for one-off payment-gated commits ([a4d2798](https://github.com/Metronome-Industries/metronome-ruby/commit/a4d27985195453b3546b5ecd8a420b4d768110db))
27
+ * Add alert specifiers to contract create API ([51db5ed](https://github.com/Metronome-Industries/metronome-ruby/commit/51db5ed0d8954978ac23e2ddc30a6b542a535828))
28
+ * add contract_id filter to list invoices endpoint ([a304fbe](https://github.com/Metronome-Industries/metronome-ruby/commit/a304fbe7fbdec29e84f6d7e00757ac8d53c4ddf2))
29
+ * add invoice type filter for list invoices api ([872e130](https://github.com/Metronome-Industries/metronome-ruby/commit/872e1300646c989ab9d1ae057358213651f140d9))
30
+ * Add list seat balances API endpoint to SDK ([b00dd28](https://github.com/Metronome-Industries/metronome-ruby/commit/b00dd2876202080710203143d27a3b592aa7333b))
31
+ * Add regenerated_from_invoice_id to getInvoice response ([4fcd94f](https://github.com/Metronome-Industries/metronome-ruby/commit/4fcd94f52de907beea33c5f619ee529cdf2ee295))
32
+ * Add sql_breakdown_granularity flag to product create/edit ([101c0ef](https://github.com/Metronome-Industries/metronome-ruby/commit/101c0efded08535d01f7d5ef67b80c3325be7e5a))
33
+ * added custom fields to create contract with package ([3df5eaf](https://github.com/Metronome-Industries/metronome-ruby/commit/3df5eafd29b0d030f2de6c9b1da6bd0f2d83fefd))
34
+ * doc updates ([a38c0ad](https://github.com/Metronome-Industries/metronome-ruby/commit/a38c0adccd0a9de33f91052cef6f8db0bfd054ba))
35
+ * Limit spend breakdown/seat balances to 100 vals ([019e16c](https://github.com/Metronome-Industries/metronome-ruby/commit/019e16ca2e5091d75d9674d3c1ae58e4af6c8786))
36
+ * Pranadreddy/launch 2486 remove dead billing anchor date field from api ([880922c](https://github.com/Metronome-Industries/metronome-ruby/commit/880922c776ce6b9026338097d22629153b06790d))
37
+ * support setting headers via env ([70a6689](https://github.com/Metronome-Industries/metronome-ruby/commit/70a66896bf1c85734adbcc3f90ec88e91b3b124d))
38
+ * Update stainless.yml to include Java configuration logic ([caadd1b](https://github.com/Metronome-Industries/metronome-ruby/commit/caadd1bcdfe6e513fa45e1ffe7ba16be4078f8e0))
39
+ * wip ([d85557d](https://github.com/Metronome-Industries/metronome-ruby/commit/d85557d5c8d4e42eaedeeb01d52e925cfaec2bf5))
40
+
41
+
42
+ ### Bug Fixes
43
+
44
+ * add archived_at to Credit schema (parity with Commit) ([c4cb0de](https://github.com/Metronome-Industries/metronome-ruby/commit/c4cb0de6639d6260cd5cd4991c2bdbbca9a56308))
45
+ * **client:** elide content type header on requests without body ([3229b9e](https://github.com/Metronome-Industries/metronome-ruby/commit/3229b9ea9655734024eeacf899aef1559401c950))
46
+
47
+
48
+ ### Chores
49
+
50
+ * configure new SDK language ([2318d44](https://github.com/Metronome-Industries/metronome-ruby/commit/2318d447232cd1368c1be58b004f4e56f6ec58f8))
51
+ * configure new SDK language ([c604e19](https://github.com/Metronome-Industries/metronome-ruby/commit/c604e191054d276f6620fe43ef76543c000703ee))
52
+ * configure new SDK language ([85c2a71](https://github.com/Metronome-Industries/metronome-ruby/commit/85c2a714681224c4e5b654ae2a0ffa0ff478c269))
53
+ * configure new SDK language ([7f6bb80](https://github.com/Metronome-Industries/metronome-ruby/commit/7f6bb80a5e0f7838849aa1fef4e255ac7a7c6d44))
54
+ * **internal:** more robust bootstrap script ([3f8dd59](https://github.com/Metronome-Industries/metronome-ruby/commit/3f8dd59db3d7878d6232f01d0fda804657de3e2a))
55
+
3
56
  ## 3.5.0 (2026-04-18)
4
57
 
5
58
  Full Changelog: [v3.4.0...v3.5.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.4.0...v3.5.0)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "metronome-sdk", "~> 3.5.0"
29
+ gem "metronome-sdk", "~> 3.7.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -67,6 +67,19 @@ module MetronomeSDK
67
67
  raise ArgumentError.new("bearer_token is required, and can be set via environ: \"METRONOME_BEARER_TOKEN\"")
68
68
  end
69
69
 
70
+ headers = {}
71
+ custom_headers_env = ENV["METRONOME_CUSTOM_HEADERS"]
72
+ unless custom_headers_env.nil?
73
+ parsed = {}
74
+ custom_headers_env.split("\n").each do |line|
75
+ colon = line.index(":")
76
+ unless colon.nil?
77
+ parsed[line[0...colon].strip] = line[(colon + 1)..].strip
78
+ end
79
+ end
80
+ headers = parsed.merge(headers)
81
+ end
82
+
70
83
  @bearer_token = bearer_token.to_s
71
84
  @webhook_secret = webhook_secret&.to_s
72
85
 
@@ -75,7 +88,8 @@ module MetronomeSDK
75
88
  timeout: timeout,
76
89
  max_retries: max_retries,
77
90
  initial_retry_delay: initial_retry_delay,
78
- max_retry_delay: max_retry_delay
91
+ max_retry_delay: max_retry_delay,
92
+ headers: headers
79
93
  )
80
94
 
81
95
  @v2 = MetronomeSDK::Resources::V2.new(client: self)
@@ -306,6 +306,8 @@ module MetronomeSDK
306
306
  MetronomeSDK::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
307
307
  end
308
308
 
309
+ headers.delete("content-type") if body.nil?
310
+
309
311
  url = MetronomeSDK::Internal::Util.join_parsed_uri(
310
312
  @base_url_components,
311
313
  {**req, path: path, query: query}
@@ -15,31 +15,6 @@ module MetronomeSDK
15
15
  #
16
16
  # We can therefore convert string values to Symbols, but can't convert other
17
17
  # values safely.
18
- #
19
- # @example
20
- # # `payment_status` is a `MetronomeSDK::V1::PaymentStatus`
21
- # case payment_status
22
- # when MetronomeSDK::V1::PaymentStatus::PENDING
23
- # # ...
24
- # when MetronomeSDK::V1::PaymentStatus::REQUIRES_INTERVENTION
25
- # # ...
26
- # when MetronomeSDK::V1::PaymentStatus::PAID
27
- # # ...
28
- # else
29
- # puts(payment_status)
30
- # end
31
- #
32
- # @example
33
- # case payment_status
34
- # in :pending
35
- # # ...
36
- # in :requires_intervention
37
- # # ...
38
- # in :paid
39
- # # ...
40
- # else
41
- # puts(payment_status)
42
- # end
43
18
  module Enum
44
19
  include MetronomeSDK::Internal::Type::Converter
45
20
  include MetronomeSDK::Internal::Util::SorbetRuntimeSupport
@@ -171,6 +171,12 @@ module MetronomeSDK
171
171
  # @return [Array<MetronomeSDK::Models::CommitSpecifier>, nil]
172
172
  optional :specifiers, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::CommitSpecifier] }
173
173
 
174
+ # @!attribute spend_tracker_attributes
175
+ # Optional attributes controlling how this commit interacts with spend trackers.
176
+ #
177
+ # @return [MetronomeSDK::Models::Commit::SpendTrackerAttributes, nil]
178
+ optional :spend_tracker_attributes, -> { MetronomeSDK::Commit::SpendTrackerAttributes }
179
+
174
180
  # @!attribute subscription_config
175
181
  # The subscription configuration for this commit, if it was generated from a
176
182
  # recurring commit with a subscription attached.
@@ -187,7 +193,7 @@ module MetronomeSDK
187
193
  # @return [String, nil]
188
194
  optional :uniqueness_key, String
189
195
 
190
- # @!method initialize(id:, created_at:, product:, type:, access_schedule: nil, amount: nil, applicable_contract_ids: nil, applicable_product_ids: nil, applicable_product_tags: nil, archived_at: nil, balance: nil, contract: nil, custom_fields: nil, description: nil, hierarchy_configuration: nil, invoice_contract: nil, invoice_schedule: nil, ledger: nil, name: nil, netsuite_sales_order_id: nil, priority: nil, rate_type: nil, recurring_commit_id: nil, rolled_over_from: nil, rollover_fraction: nil, salesforce_opportunity_id: nil, specifiers: nil, subscription_config: nil, uniqueness_key: nil)
196
+ # @!method initialize(id:, created_at:, product:, type:, access_schedule: nil, amount: nil, applicable_contract_ids: nil, applicable_product_ids: nil, applicable_product_tags: nil, archived_at: nil, balance: nil, contract: nil, custom_fields: nil, description: nil, hierarchy_configuration: nil, invoice_contract: nil, invoice_schedule: nil, ledger: nil, name: nil, netsuite_sales_order_id: nil, priority: nil, rate_type: nil, recurring_commit_id: nil, rolled_over_from: nil, rollover_fraction: nil, salesforce_opportunity_id: nil, specifiers: nil, spend_tracker_attributes: nil, subscription_config: nil, uniqueness_key: nil)
191
197
  # Some parameter documentations has been truncated, see
192
198
  # {MetronomeSDK::Models::Commit} for more details.
193
199
  #
@@ -245,6 +251,8 @@ module MetronomeSDK
245
251
  #
246
252
  # @param specifiers [Array<MetronomeSDK::Models::CommitSpecifier>] List of filters that determine what kind of customer usage draws down a commit o
247
253
  #
254
+ # @param spend_tracker_attributes [MetronomeSDK::Models::Commit::SpendTrackerAttributes] Optional attributes controlling how this commit interacts with spend trackers.
255
+ #
248
256
  # @param subscription_config [MetronomeSDK::Models::Commit::SubscriptionConfig] The subscription configuration for this commit, if it was generated from a recur
249
257
  #
250
258
  # @param uniqueness_key [String] Prevents the creation of duplicates. If a request to create a commit or credit i
@@ -953,6 +961,24 @@ module MetronomeSDK
953
961
  # @param contract_id [String]
954
962
  end
955
963
 
964
+ # @see MetronomeSDK::Models::Commit#spend_tracker_attributes
965
+ class SpendTrackerAttributes < MetronomeSDK::Internal::Type::BaseModel
966
+ # @!attribute counts_as_discounted
967
+ # If true, this commit is included in spend trackers with discounted set to
968
+ # DISCOUNTED_ONLY
969
+ #
970
+ # @return [Boolean]
971
+ required :counts_as_discounted, MetronomeSDK::Internal::Type::Boolean
972
+
973
+ # @!method initialize(counts_as_discounted:)
974
+ # Some parameter documentations has been truncated, see
975
+ # {MetronomeSDK::Models::Commit::SpendTrackerAttributes} for more details.
976
+ #
977
+ # Optional attributes controlling how this commit interacts with spend trackers.
978
+ #
979
+ # @param counts_as_discounted [Boolean] If true, this commit is included in spend trackers with discounted set to DISCOU
980
+ end
981
+
956
982
  # @see MetronomeSDK::Models::Commit#subscription_config
957
983
  class SubscriptionConfig < MetronomeSDK::Internal::Type::BaseModel
958
984
  # @!attribute allocation
@@ -76,6 +76,13 @@ module MetronomeSDK
76
76
  # @return [MetronomeSDK::Models::SpendThresholdConfiguration, nil]
77
77
  optional :spend_threshold_configuration, -> { MetronomeSDK::SpendThresholdConfiguration }
78
78
 
79
+ # @!attribute spend_trackers
80
+ # Spend trackers attached to this contract.
81
+ #
82
+ # @return [Array<MetronomeSDK::Models::Contract::SpendTracker>, nil]
83
+ optional :spend_trackers,
84
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Contract::SpendTracker] }
85
+
79
86
  # @!attribute subscriptions
80
87
  # List of subscriptions on the contract.
81
88
  #
@@ -90,7 +97,7 @@ module MetronomeSDK
90
97
  # @return [String, nil]
91
98
  optional :uniqueness_key, String
92
99
 
93
- # @!method initialize(id:, amendments:, current:, customer_id:, initial:, archived_at: nil, custom_fields: nil, customer_billing_provider_configuration: nil, package_id: nil, prepaid_balance_threshold_configuration: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, subscriptions: nil, uniqueness_key: nil)
100
+ # @!method initialize(id:, amendments:, current:, customer_id:, initial:, archived_at: nil, custom_fields: nil, customer_billing_provider_configuration: nil, package_id: nil, prepaid_balance_threshold_configuration: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, spend_trackers: nil, subscriptions: nil, uniqueness_key: nil)
94
101
  # Some parameter documentations has been truncated, see
95
102
  # {MetronomeSDK::Models::Contract} for more details.
96
103
  #
@@ -118,6 +125,8 @@ module MetronomeSDK
118
125
  #
119
126
  # @param spend_threshold_configuration [MetronomeSDK::Models::SpendThresholdConfiguration]
120
127
  #
128
+ # @param spend_trackers [Array<MetronomeSDK::Models::Contract::SpendTracker>] Spend trackers attached to this contract.
129
+ #
121
130
  # @param subscriptions [Array<MetronomeSDK::Models::Subscription>] List of subscriptions on the contract.
122
131
  #
123
132
  # @param uniqueness_key [String] Prevents the creation of duplicates. If a request to create a record is made wit
@@ -400,6 +409,136 @@ module MetronomeSDK
400
409
  # @!method self.values
401
410
  # @return [Array<Symbol>]
402
411
  end
412
+
413
+ class SpendTracker < MetronomeSDK::Internal::Type::BaseModel
414
+ # @!attribute alias_
415
+ # Human-readable identifier, unique per contract.
416
+ #
417
+ # @return [String]
418
+ required :alias_, String, api_name: :alias
419
+
420
+ # @!attribute applicable_spend_specifiers
421
+ #
422
+ # @return [Array<MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier>]
423
+ required :applicable_spend_specifiers,
424
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier] }
425
+
426
+ # @!attribute credit_type_id
427
+ #
428
+ # @return [String]
429
+ required :credit_type_id, String
430
+
431
+ # @!attribute reset_frequency
432
+ #
433
+ # @return [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ResetFrequency]
434
+ required :reset_frequency, enum: -> { MetronomeSDK::Contract::SpendTracker::ResetFrequency }
435
+
436
+ # @!attribute accumulated_spend
437
+ #
438
+ # @return [MetronomeSDK::Models::Contract::SpendTracker::AccumulatedSpend, nil]
439
+ optional :accumulated_spend, -> { MetronomeSDK::Contract::SpendTracker::AccumulatedSpend }
440
+
441
+ # @!method initialize(alias_:, applicable_spend_specifiers:, credit_type_id:, reset_frequency:, accumulated_spend: nil)
442
+ # @param alias_ [String] Human-readable identifier, unique per contract.
443
+ #
444
+ # @param applicable_spend_specifiers [Array<MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier>]
445
+ #
446
+ # @param credit_type_id [String]
447
+ #
448
+ # @param reset_frequency [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ResetFrequency]
449
+ #
450
+ # @param accumulated_spend [MetronomeSDK::Models::Contract::SpendTracker::AccumulatedSpend]
451
+
452
+ class ApplicableSpendSpecifier < MetronomeSDK::Internal::Type::BaseModel
453
+ # @!attribute sources
454
+ #
455
+ # @return [Array<Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::Source>]
456
+ required :sources,
457
+ -> { MetronomeSDK::Internal::Type::ArrayOf[enum: MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier::Source] }
458
+
459
+ # @!attribute spend_type
460
+ #
461
+ # @return [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::SpendType]
462
+ required :spend_type,
463
+ enum: -> { MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier::SpendType }
464
+
465
+ # @!attribute discounted
466
+ #
467
+ # @return [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::Discounted, nil]
468
+ optional :discounted,
469
+ enum: -> { MetronomeSDK::Contract::SpendTracker::ApplicableSpendSpecifier::Discounted }
470
+
471
+ # @!method initialize(sources:, spend_type:, discounted: nil)
472
+ # @param sources [Array<Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::Source>]
473
+ # @param spend_type [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::SpendType]
474
+ # @param discounted [Symbol, MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier::Discounted]
475
+
476
+ module Source
477
+ extend MetronomeSDK::Internal::Type::Enum
478
+
479
+ THRESHOLD_RECHARGE = :THRESHOLD_RECHARGE
480
+ MANUAL = :MANUAL
481
+
482
+ # @!method self.values
483
+ # @return [Array<Symbol>]
484
+ end
485
+
486
+ # @see MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier#spend_type
487
+ module SpendType
488
+ extend MetronomeSDK::Internal::Type::Enum
489
+
490
+ COMMIT_PURCHASE = :COMMIT_PURCHASE
491
+
492
+ # @!method self.values
493
+ # @return [Array<Symbol>]
494
+ end
495
+
496
+ # @see MetronomeSDK::Models::Contract::SpendTracker::ApplicableSpendSpecifier#discounted
497
+ module Discounted
498
+ extend MetronomeSDK::Internal::Type::Enum
499
+
500
+ ANY = :ANY
501
+ DISCOUNTED_ONLY = :DISCOUNTED_ONLY
502
+ UNDISCOUNTED_ONLY = :UNDISCOUNTED_ONLY
503
+
504
+ # @!method self.values
505
+ # @return [Array<Symbol>]
506
+ end
507
+ end
508
+
509
+ # @see MetronomeSDK::Models::Contract::SpendTracker#reset_frequency
510
+ module ResetFrequency
511
+ extend MetronomeSDK::Internal::Type::Enum
512
+
513
+ BILLING_PERIOD = :BILLING_PERIOD
514
+
515
+ # @!method self.values
516
+ # @return [Array<Symbol>]
517
+ end
518
+
519
+ # @see MetronomeSDK::Models::Contract::SpendTracker#accumulated_spend
520
+ class AccumulatedSpend < MetronomeSDK::Internal::Type::BaseModel
521
+ # @!attribute amount
522
+ #
523
+ # @return [Float]
524
+ required :amount, Float
525
+
526
+ # @!attribute period_ending_before
527
+ #
528
+ # @return [Time]
529
+ required :period_ending_before, Time
530
+
531
+ # @!attribute period_starting_at
532
+ #
533
+ # @return [Time]
534
+ required :period_starting_at, Time
535
+
536
+ # @!method initialize(amount:, period_ending_before:, period_starting_at:)
537
+ # @param amount [Float]
538
+ # @param period_ending_before [Time]
539
+ # @param period_starting_at [Time]
540
+ end
541
+ end
403
542
  end
404
543
  end
405
544
  end