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
@@ -197,11 +197,19 @@ module MetronomeSDK
197
197
  # @return [MetronomeSDK::Models::SpendThresholdConfigurationV2, nil]
198
198
  optional :spend_threshold_configuration, -> { MetronomeSDK::SpendThresholdConfigurationV2 }
199
199
 
200
+ # @!attribute spend_trackers
201
+ # Spend trackers attached to this contract.
202
+ #
203
+ # @return [Array<MetronomeSDK::Models::ContractV2::SpendTracker>, nil]
204
+ optional :spend_trackers,
205
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::ContractV2::SpendTracker] }
206
+
200
207
  # @!attribute subscriptions
201
208
  # List of subscriptions on the contract.
202
209
  #
203
- # @return [Array<MetronomeSDK::Models::Subscription>, nil]
204
- optional :subscriptions, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Subscription] }
210
+ # @return [Array<MetronomeSDK::Models::ContractV2::Subscription>, nil]
211
+ optional :subscriptions,
212
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::ContractV2::Subscription] }
205
213
 
206
214
  # @!attribute total_contract_value
207
215
  #
@@ -214,7 +222,7 @@ module MetronomeSDK
214
222
  # @return [String, nil]
215
223
  optional :uniqueness_key, String
216
224
 
217
- # @!method initialize(id:, commits:, created_at:, created_by:, customer_id:, overrides:, scheduled_charges:, starting_at:, transitions:, usage_filter:, usage_statement_schedule:, archived_at: nil, credits: nil, custom_fields: nil, customer_billing_provider_configuration: nil, discounts: nil, ending_before: nil, has_more: nil, hierarchy_configuration: nil, multiplier_override_prioritization: nil, name: nil, net_payment_terms_days: nil, netsuite_sales_order_id: nil, prepaid_balance_threshold_configuration: nil, priority: nil, professional_services: nil, rate_card_id: nil, recurring_commits: nil, recurring_credits: nil, reseller_royalties: nil, salesforce_opportunity_id: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, subscriptions: nil, total_contract_value: nil, uniqueness_key: nil)
225
+ # @!method initialize(id:, commits:, created_at:, created_by:, customer_id:, overrides:, scheduled_charges:, starting_at:, transitions:, usage_filter:, usage_statement_schedule:, archived_at: nil, credits: nil, custom_fields: nil, customer_billing_provider_configuration: nil, discounts: nil, ending_before: nil, has_more: nil, hierarchy_configuration: nil, multiplier_override_prioritization: nil, name: nil, net_payment_terms_days: nil, netsuite_sales_order_id: nil, prepaid_balance_threshold_configuration: nil, priority: nil, professional_services: nil, rate_card_id: nil, recurring_commits: nil, recurring_credits: nil, reseller_royalties: nil, salesforce_opportunity_id: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, spend_trackers: nil, subscriptions: nil, total_contract_value: nil, uniqueness_key: nil)
218
226
  # Some parameter documentations has been truncated, see
219
227
  # {MetronomeSDK::Models::ContractV2} for more details.
220
228
  #
@@ -284,7 +292,9 @@ module MetronomeSDK
284
292
  #
285
293
  # @param spend_threshold_configuration [MetronomeSDK::Models::SpendThresholdConfigurationV2]
286
294
  #
287
- # @param subscriptions [Array<MetronomeSDK::Models::Subscription>] List of subscriptions on the contract.
295
+ # @param spend_trackers [Array<MetronomeSDK::Models::ContractV2::SpendTracker>] Spend trackers attached to this contract.
296
+ #
297
+ # @param subscriptions [Array<MetronomeSDK::Models::ContractV2::Subscription>] List of subscriptions on the contract.
288
298
  #
289
299
  # @param total_contract_value [Float]
290
300
  #
@@ -451,13 +461,19 @@ module MetronomeSDK
451
461
  # @return [Array<MetronomeSDK::Models::CommitSpecifier>, nil]
452
462
  optional :specifiers, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::CommitSpecifier] }
453
463
 
464
+ # @!attribute spend_tracker_attributes
465
+ # Optional attributes controlling how this commit interacts with spend trackers.
466
+ #
467
+ # @return [MetronomeSDK::Models::ContractV2::Commit::SpendTrackerAttributes, nil]
468
+ optional :spend_tracker_attributes, -> { MetronomeSDK::ContractV2::Commit::SpendTrackerAttributes }
469
+
454
470
  # @!attribute subscription_config
455
471
  # Attach a subscription to the recurring commit/credit.
456
472
  #
457
473
  # @return [MetronomeSDK::Models::RecurringCommitSubscriptionConfig, nil]
458
474
  optional :subscription_config, -> { MetronomeSDK::RecurringCommitSubscriptionConfig }
459
475
 
460
- # @!method initialize(id:, created_at:, product:, type:, access_schedule: 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)
476
+ # @!method initialize(id:, created_at:, product:, type:, access_schedule: 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)
461
477
  # Some parameter documentations has been truncated, see
462
478
  # {MetronomeSDK::Models::ContractV2::Commit} for more details.
463
479
  #
@@ -513,6 +529,8 @@ module MetronomeSDK
513
529
  #
514
530
  # @param specifiers [Array<MetronomeSDK::Models::CommitSpecifier>] List of filters that determine what kind of customer usage draws down a commit o
515
531
  #
532
+ # @param spend_tracker_attributes [MetronomeSDK::Models::ContractV2::Commit::SpendTrackerAttributes] Optional attributes controlling how this commit interacts with spend trackers.
533
+ #
516
534
  # @param subscription_config [MetronomeSDK::Models::RecurringCommitSubscriptionConfig] Attach a subscription to the recurring commit/credit.
517
535
 
518
536
  # @see MetronomeSDK::Models::ContractV2::Commit#product
@@ -1229,6 +1247,25 @@ module MetronomeSDK
1229
1247
  # @param commit_id [String]
1230
1248
  # @param contract_id [String]
1231
1249
  end
1250
+
1251
+ # @see MetronomeSDK::Models::ContractV2::Commit#spend_tracker_attributes
1252
+ class SpendTrackerAttributes < MetronomeSDK::Internal::Type::BaseModel
1253
+ # @!attribute counts_as_discounted
1254
+ # If true, this commit is included in spend trackers with discounted set to
1255
+ # DISCOUNTED_ONLY
1256
+ #
1257
+ # @return [Boolean]
1258
+ required :counts_as_discounted, MetronomeSDK::Internal::Type::Boolean
1259
+
1260
+ # @!method initialize(counts_as_discounted:)
1261
+ # Some parameter documentations has been truncated, see
1262
+ # {MetronomeSDK::Models::ContractV2::Commit::SpendTrackerAttributes} for more
1263
+ # details.
1264
+ #
1265
+ # Optional attributes controlling how this commit interacts with spend trackers.
1266
+ #
1267
+ # @param counts_as_discounted [Boolean] If true, this commit is included in spend trackers with discounted set to DISCOU
1268
+ end
1232
1269
  end
1233
1270
 
1234
1271
  class Override < MetronomeSDK::Internal::Type::BaseModel
@@ -1645,6 +1682,11 @@ module MetronomeSDK
1645
1682
  # @return [Array<String>, nil]
1646
1683
  optional :applicable_product_tags, MetronomeSDK::Internal::Type::ArrayOf[String]
1647
1684
 
1685
+ # @!attribute archived_at
1686
+ #
1687
+ # @return [Time, nil]
1688
+ optional :archived_at, Time
1689
+
1648
1690
  # @!attribute balance
1649
1691
  # The current balance of the credit or commit. This balance reflects the amount of
1650
1692
  # credit or commit that the customer has access to use at this moment - thus,
@@ -1746,7 +1788,7 @@ module MetronomeSDK
1746
1788
  # @return [MetronomeSDK::Models::RecurringCommitSubscriptionConfig, nil]
1747
1789
  optional :subscription_config, -> { MetronomeSDK::RecurringCommitSubscriptionConfig }
1748
1790
 
1749
- # @!method initialize(id:, product:, type:, access_schedule: nil, applicable_contract_ids: nil, applicable_product_ids: nil, applicable_product_tags: nil, balance: nil, contract: nil, created_at: nil, custom_fields: nil, description: nil, hierarchy_configuration: nil, ledger: nil, name: nil, netsuite_sales_order_id: nil, priority: nil, recurring_credit_id: nil, rolled_over_from: nil, salesforce_opportunity_id: nil, specifiers: nil, subscription_config: nil)
1791
+ # @!method initialize(id:, product:, type:, access_schedule: nil, applicable_contract_ids: nil, applicable_product_ids: nil, applicable_product_tags: nil, archived_at: nil, balance: nil, contract: nil, created_at: nil, custom_fields: nil, description: nil, hierarchy_configuration: nil, ledger: nil, name: nil, netsuite_sales_order_id: nil, priority: nil, recurring_credit_id: nil, rolled_over_from: nil, salesforce_opportunity_id: nil, specifiers: nil, subscription_config: nil)
1750
1792
  # Some parameter documentations has been truncated, see
1751
1793
  # {MetronomeSDK::Models::ContractV2::Credit} for more details.
1752
1794
  #
@@ -1764,6 +1806,8 @@ module MetronomeSDK
1764
1806
  #
1765
1807
  # @param applicable_product_tags [Array<String>]
1766
1808
  #
1809
+ # @param archived_at [Time]
1810
+ #
1767
1811
  # @param balance [Float] The current balance of the credit or commit. This balance reflects the amount of
1768
1812
  #
1769
1813
  # @param contract [MetronomeSDK::Models::ContractV2::Credit::Contract]
@@ -3297,6 +3341,486 @@ module MetronomeSDK
3297
3341
  # @!method self.values
3298
3342
  # @return [Array<Symbol>]
3299
3343
  end
3344
+
3345
+ class SpendTracker < MetronomeSDK::Internal::Type::BaseModel
3346
+ # @!attribute alias_
3347
+ # Human-readable identifier, unique per contract.
3348
+ #
3349
+ # @return [String]
3350
+ required :alias_, String, api_name: :alias
3351
+
3352
+ # @!attribute applicable_spend_specifiers
3353
+ #
3354
+ # @return [Array<MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier>]
3355
+ required :applicable_spend_specifiers,
3356
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier] }
3357
+
3358
+ # @!attribute credit_type_id
3359
+ #
3360
+ # @return [String]
3361
+ required :credit_type_id, String
3362
+
3363
+ # @!attribute reset_frequency
3364
+ #
3365
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ResetFrequency]
3366
+ required :reset_frequency, enum: -> { MetronomeSDK::ContractV2::SpendTracker::ResetFrequency }
3367
+
3368
+ # @!attribute accumulated_spend
3369
+ #
3370
+ # @return [MetronomeSDK::Models::ContractV2::SpendTracker::AccumulatedSpend, nil]
3371
+ optional :accumulated_spend, -> { MetronomeSDK::ContractV2::SpendTracker::AccumulatedSpend }
3372
+
3373
+ # @!method initialize(alias_:, applicable_spend_specifiers:, credit_type_id:, reset_frequency:, accumulated_spend: nil)
3374
+ # @param alias_ [String] Human-readable identifier, unique per contract.
3375
+ #
3376
+ # @param applicable_spend_specifiers [Array<MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier>]
3377
+ #
3378
+ # @param credit_type_id [String]
3379
+ #
3380
+ # @param reset_frequency [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ResetFrequency]
3381
+ #
3382
+ # @param accumulated_spend [MetronomeSDK::Models::ContractV2::SpendTracker::AccumulatedSpend]
3383
+
3384
+ class ApplicableSpendSpecifier < MetronomeSDK::Internal::Type::BaseModel
3385
+ # @!attribute sources
3386
+ #
3387
+ # @return [Array<Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source>]
3388
+ required :sources,
3389
+ -> { MetronomeSDK::Internal::Type::ArrayOf[enum: MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source] }
3390
+
3391
+ # @!attribute spend_type
3392
+ #
3393
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType]
3394
+ required :spend_type,
3395
+ enum: -> { MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType }
3396
+
3397
+ # @!attribute discounted
3398
+ #
3399
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted, nil]
3400
+ optional :discounted,
3401
+ enum: -> { MetronomeSDK::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted }
3402
+
3403
+ # @!method initialize(sources:, spend_type:, discounted: nil)
3404
+ # @param sources [Array<Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::Source>]
3405
+ # @param spend_type [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::SpendType]
3406
+ # @param discounted [Symbol, MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier::Discounted]
3407
+
3408
+ module Source
3409
+ extend MetronomeSDK::Internal::Type::Enum
3410
+
3411
+ THRESHOLD_RECHARGE = :THRESHOLD_RECHARGE
3412
+ MANUAL = :MANUAL
3413
+
3414
+ # @!method self.values
3415
+ # @return [Array<Symbol>]
3416
+ end
3417
+
3418
+ # @see MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier#spend_type
3419
+ module SpendType
3420
+ extend MetronomeSDK::Internal::Type::Enum
3421
+
3422
+ COMMIT_PURCHASE = :COMMIT_PURCHASE
3423
+
3424
+ # @!method self.values
3425
+ # @return [Array<Symbol>]
3426
+ end
3427
+
3428
+ # @see MetronomeSDK::Models::ContractV2::SpendTracker::ApplicableSpendSpecifier#discounted
3429
+ module Discounted
3430
+ extend MetronomeSDK::Internal::Type::Enum
3431
+
3432
+ ANY = :ANY
3433
+ DISCOUNTED_ONLY = :DISCOUNTED_ONLY
3434
+ UNDISCOUNTED_ONLY = :UNDISCOUNTED_ONLY
3435
+
3436
+ # @!method self.values
3437
+ # @return [Array<Symbol>]
3438
+ end
3439
+ end
3440
+
3441
+ # @see MetronomeSDK::Models::ContractV2::SpendTracker#reset_frequency
3442
+ module ResetFrequency
3443
+ extend MetronomeSDK::Internal::Type::Enum
3444
+
3445
+ BILLING_PERIOD = :BILLING_PERIOD
3446
+
3447
+ # @!method self.values
3448
+ # @return [Array<Symbol>]
3449
+ end
3450
+
3451
+ # @see MetronomeSDK::Models::ContractV2::SpendTracker#accumulated_spend
3452
+ class AccumulatedSpend < MetronomeSDK::Internal::Type::BaseModel
3453
+ # @!attribute amount
3454
+ #
3455
+ # @return [Float]
3456
+ required :amount, Float
3457
+
3458
+ # @!attribute period_ending_before
3459
+ #
3460
+ # @return [Time]
3461
+ required :period_ending_before, Time
3462
+
3463
+ # @!attribute period_starting_at
3464
+ #
3465
+ # @return [Time]
3466
+ required :period_starting_at, Time
3467
+
3468
+ # @!method initialize(amount:, period_ending_before:, period_starting_at:)
3469
+ # @param amount [Float]
3470
+ # @param period_ending_before [Time]
3471
+ # @param period_starting_at [Time]
3472
+ end
3473
+ end
3474
+
3475
+ class Subscription < MetronomeSDK::Internal::Type::BaseModel
3476
+ # @!attribute billing_periods
3477
+ # Previous, current, and next billing periods for the subscription.
3478
+ #
3479
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods]
3480
+ required :billing_periods, -> { MetronomeSDK::ContractV2::Subscription::BillingPeriods }
3481
+
3482
+ # @!attribute collection_schedule
3483
+ #
3484
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::Subscription::CollectionSchedule]
3485
+ required :collection_schedule, enum: -> { MetronomeSDK::ContractV2::Subscription::CollectionSchedule }
3486
+
3487
+ # @!attribute proration
3488
+ #
3489
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::Proration]
3490
+ required :proration, -> { MetronomeSDK::ContractV2::Subscription::Proration }
3491
+
3492
+ # @!attribute quantity_management_mode
3493
+ # Determines how the subscription's quantity is controlled. Defaults to
3494
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
3495
+ # directly on the subscription. `initial_quantity` must be provided with this
3496
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
3497
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
3498
+ # user_123) to increment and decrement a subscription quantity, rather than
3499
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
3500
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
3501
+ # provided with this option.
3502
+ #
3503
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::Subscription::QuantityManagementMode]
3504
+ required :quantity_management_mode,
3505
+ enum: -> { MetronomeSDK::ContractV2::Subscription::QuantityManagementMode }
3506
+
3507
+ # @!attribute quantity_schedule
3508
+ # List of quantity schedule items for the subscription. Only includes the current
3509
+ # quantity and future quantity changes.
3510
+ #
3511
+ # @return [Array<MetronomeSDK::Models::ContractV2::Subscription::QuantitySchedule>]
3512
+ required :quantity_schedule,
3513
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::ContractV2::Subscription::QuantitySchedule] }
3514
+
3515
+ # @!attribute starting_at
3516
+ #
3517
+ # @return [Time]
3518
+ required :starting_at, Time
3519
+
3520
+ # @!attribute subscription_rate
3521
+ #
3522
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate]
3523
+ required :subscription_rate, -> { MetronomeSDK::ContractV2::Subscription::SubscriptionRate }
3524
+
3525
+ # @!attribute id
3526
+ #
3527
+ # @return [String, nil]
3528
+ optional :id, String
3529
+
3530
+ # @!attribute custom_fields
3531
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
3532
+ #
3533
+ # @return [Hash{Symbol=>String}, nil]
3534
+ optional :custom_fields, MetronomeSDK::Internal::Type::HashOf[String]
3535
+
3536
+ # @!attribute description
3537
+ #
3538
+ # @return [String, nil]
3539
+ optional :description, String
3540
+
3541
+ # @!attribute ending_before
3542
+ #
3543
+ # @return [Time, nil]
3544
+ optional :ending_before, Time
3545
+
3546
+ # @!attribute fiat_credit_type_id
3547
+ #
3548
+ # @return [String, nil]
3549
+ optional :fiat_credit_type_id, String
3550
+
3551
+ # @!attribute name
3552
+ #
3553
+ # @return [String, nil]
3554
+ optional :name, String
3555
+
3556
+ # @!attribute seat_config
3557
+ #
3558
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::SeatConfig, nil]
3559
+ optional :seat_config, -> { MetronomeSDK::ContractV2::Subscription::SeatConfig }
3560
+
3561
+ # @!method initialize(billing_periods:, collection_schedule:, proration:, quantity_management_mode:, quantity_schedule:, starting_at:, subscription_rate:, id: nil, custom_fields: nil, description: nil, ending_before: nil, fiat_credit_type_id: nil, name: nil, seat_config: nil)
3562
+ # Some parameter documentations has been truncated, see
3563
+ # {MetronomeSDK::Models::ContractV2::Subscription} for more details.
3564
+ #
3565
+ # @param billing_periods [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods] Previous, current, and next billing periods for the subscription.
3566
+ #
3567
+ # @param collection_schedule [Symbol, MetronomeSDK::Models::ContractV2::Subscription::CollectionSchedule]
3568
+ #
3569
+ # @param proration [MetronomeSDK::Models::ContractV2::Subscription::Proration]
3570
+ #
3571
+ # @param quantity_management_mode [Symbol, MetronomeSDK::Models::ContractV2::Subscription::QuantityManagementMode] Determines how the subscription's quantity is controlled. Defaults to QUANTITY_O
3572
+ #
3573
+ # @param quantity_schedule [Array<MetronomeSDK::Models::ContractV2::Subscription::QuantitySchedule>] List of quantity schedule items for the subscription. Only includes the current
3574
+ #
3575
+ # @param starting_at [Time]
3576
+ #
3577
+ # @param subscription_rate [MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate]
3578
+ #
3579
+ # @param id [String]
3580
+ #
3581
+ # @param custom_fields [Hash{Symbol=>String}] Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
3582
+ #
3583
+ # @param description [String]
3584
+ #
3585
+ # @param ending_before [Time]
3586
+ #
3587
+ # @param fiat_credit_type_id [String]
3588
+ #
3589
+ # @param name [String]
3590
+ #
3591
+ # @param seat_config [MetronomeSDK::Models::ContractV2::Subscription::SeatConfig]
3592
+
3593
+ # @see MetronomeSDK::Models::ContractV2::Subscription#billing_periods
3594
+ class BillingPeriods < MetronomeSDK::Internal::Type::BaseModel
3595
+ # @!attribute current
3596
+ #
3597
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Current, nil]
3598
+ optional :current, -> { MetronomeSDK::ContractV2::Subscription::BillingPeriods::Current }
3599
+
3600
+ # @!attribute next_
3601
+ #
3602
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Next, nil]
3603
+ optional :next_,
3604
+ -> {
3605
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Next
3606
+ },
3607
+ api_name: :next
3608
+
3609
+ # @!attribute previous
3610
+ #
3611
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Previous, nil]
3612
+ optional :previous, -> { MetronomeSDK::ContractV2::Subscription::BillingPeriods::Previous }
3613
+
3614
+ # @!method initialize(current: nil, next_: nil, previous: nil)
3615
+ # Previous, current, and next billing periods for the subscription.
3616
+ #
3617
+ # @param current [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Current]
3618
+ # @param next_ [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Next]
3619
+ # @param previous [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Previous]
3620
+
3621
+ # @see MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods#current
3622
+ class Current < MetronomeSDK::Internal::Type::BaseModel
3623
+ # @!attribute ending_before
3624
+ #
3625
+ # @return [Time]
3626
+ required :ending_before, Time
3627
+
3628
+ # @!attribute starting_at
3629
+ #
3630
+ # @return [Time]
3631
+ required :starting_at, Time
3632
+
3633
+ # @!method initialize(ending_before:, starting_at:)
3634
+ # @param ending_before [Time]
3635
+ # @param starting_at [Time]
3636
+ end
3637
+
3638
+ # @see MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods#next_
3639
+ class Next < MetronomeSDK::Internal::Type::BaseModel
3640
+ # @!attribute ending_before
3641
+ #
3642
+ # @return [Time]
3643
+ required :ending_before, Time
3644
+
3645
+ # @!attribute starting_at
3646
+ #
3647
+ # @return [Time]
3648
+ required :starting_at, Time
3649
+
3650
+ # @!method initialize(ending_before:, starting_at:)
3651
+ # @param ending_before [Time]
3652
+ # @param starting_at [Time]
3653
+ end
3654
+
3655
+ # @see MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods#previous
3656
+ class Previous < MetronomeSDK::Internal::Type::BaseModel
3657
+ # @!attribute ending_before
3658
+ #
3659
+ # @return [Time]
3660
+ required :ending_before, Time
3661
+
3662
+ # @!attribute starting_at
3663
+ #
3664
+ # @return [Time]
3665
+ required :starting_at, Time
3666
+
3667
+ # @!method initialize(ending_before:, starting_at:)
3668
+ # @param ending_before [Time]
3669
+ # @param starting_at [Time]
3670
+ end
3671
+ end
3672
+
3673
+ # @see MetronomeSDK::Models::ContractV2::Subscription#collection_schedule
3674
+ module CollectionSchedule
3675
+ extend MetronomeSDK::Internal::Type::Enum
3676
+
3677
+ ADVANCE = :ADVANCE
3678
+ ARREARS = :ARREARS
3679
+
3680
+ # @!method self.values
3681
+ # @return [Array<Symbol>]
3682
+ end
3683
+
3684
+ # @see MetronomeSDK::Models::ContractV2::Subscription#proration
3685
+ class Proration < MetronomeSDK::Internal::Type::BaseModel
3686
+ # @!attribute invoice_behavior
3687
+ #
3688
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::Subscription::Proration::InvoiceBehavior]
3689
+ required :invoice_behavior,
3690
+ enum: -> { MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior }
3691
+
3692
+ # @!attribute is_prorated
3693
+ #
3694
+ # @return [Boolean]
3695
+ required :is_prorated, MetronomeSDK::Internal::Type::Boolean
3696
+
3697
+ # @!method initialize(invoice_behavior:, is_prorated:)
3698
+ # @param invoice_behavior [Symbol, MetronomeSDK::Models::ContractV2::Subscription::Proration::InvoiceBehavior]
3699
+ # @param is_prorated [Boolean]
3700
+
3701
+ # @see MetronomeSDK::Models::ContractV2::Subscription::Proration#invoice_behavior
3702
+ module InvoiceBehavior
3703
+ extend MetronomeSDK::Internal::Type::Enum
3704
+
3705
+ BILL_IMMEDIATELY = :BILL_IMMEDIATELY
3706
+ BILL_ON_NEXT_COLLECTION_DATE = :BILL_ON_NEXT_COLLECTION_DATE
3707
+
3708
+ # @!method self.values
3709
+ # @return [Array<Symbol>]
3710
+ end
3711
+ end
3712
+
3713
+ # Determines how the subscription's quantity is controlled. Defaults to
3714
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
3715
+ # directly on the subscription. `initial_quantity` must be provided with this
3716
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
3717
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
3718
+ # user_123) to increment and decrement a subscription quantity, rather than
3719
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
3720
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
3721
+ # provided with this option.
3722
+ #
3723
+ # @see MetronomeSDK::Models::ContractV2::Subscription#quantity_management_mode
3724
+ module QuantityManagementMode
3725
+ extend MetronomeSDK::Internal::Type::Enum
3726
+
3727
+ SEAT_BASED = :SEAT_BASED
3728
+ QUANTITY_ONLY = :QUANTITY_ONLY
3729
+
3730
+ # @!method self.values
3731
+ # @return [Array<Symbol>]
3732
+ end
3733
+
3734
+ class QuantitySchedule < MetronomeSDK::Internal::Type::BaseModel
3735
+ # @!attribute quantity
3736
+ #
3737
+ # @return [Float]
3738
+ required :quantity, Float
3739
+
3740
+ # @!attribute starting_at
3741
+ #
3742
+ # @return [Time]
3743
+ required :starting_at, Time
3744
+
3745
+ # @!attribute ending_before
3746
+ #
3747
+ # @return [Time, nil]
3748
+ optional :ending_before, Time
3749
+
3750
+ # @!method initialize(quantity:, starting_at:, ending_before: nil)
3751
+ # @param quantity [Float]
3752
+ # @param starting_at [Time]
3753
+ # @param ending_before [Time]
3754
+ end
3755
+
3756
+ # @see MetronomeSDK::Models::ContractV2::Subscription#subscription_rate
3757
+ class SubscriptionRate < MetronomeSDK::Internal::Type::BaseModel
3758
+ # @!attribute billing_frequency
3759
+ #
3760
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate::BillingFrequency]
3761
+ required :billing_frequency,
3762
+ enum: -> { MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency }
3763
+
3764
+ # @!attribute product
3765
+ #
3766
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate::Product]
3767
+ required :product, -> { MetronomeSDK::ContractV2::Subscription::SubscriptionRate::Product }
3768
+
3769
+ # @!method initialize(billing_frequency:, product:)
3770
+ # @param billing_frequency [Symbol, MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate::BillingFrequency]
3771
+ # @param product [MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate::Product]
3772
+
3773
+ # @see MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate#billing_frequency
3774
+ module BillingFrequency
3775
+ extend MetronomeSDK::Internal::Type::Enum
3776
+
3777
+ MONTHLY = :MONTHLY
3778
+ QUARTERLY = :QUARTERLY
3779
+ ANNUAL = :ANNUAL
3780
+ WEEKLY = :WEEKLY
3781
+
3782
+ # @!method self.values
3783
+ # @return [Array<Symbol>]
3784
+ end
3785
+
3786
+ # @see MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate#product
3787
+ class Product < MetronomeSDK::Internal::Type::BaseModel
3788
+ # @!attribute id
3789
+ #
3790
+ # @return [String]
3791
+ required :id, String
3792
+
3793
+ # @!attribute name
3794
+ #
3795
+ # @return [String]
3796
+ required :name, String
3797
+
3798
+ # @!method initialize(id:, name:)
3799
+ # @param id [String]
3800
+ # @param name [String]
3801
+ end
3802
+ end
3803
+
3804
+ # @see MetronomeSDK::Models::ContractV2::Subscription#seat_config
3805
+ class SeatConfig < MetronomeSDK::Internal::Type::BaseModel
3806
+ # @!attribute seat_group_key
3807
+ # The property name, sent on usage events, that identifies the seat ID associated
3808
+ # with the usage event. For example, the property name might be seat_id or
3809
+ # user_id. The property must be set as a group key on billable metrics and a
3810
+ # presentation/pricing group key on contract products. This allows linked
3811
+ # recurring credits with an allocation per seat to be consumed by only one seat's
3812
+ # usage.
3813
+ #
3814
+ # @return [String]
3815
+ required :seat_group_key, String
3816
+
3817
+ # @!method initialize(seat_group_key:)
3818
+ # Some parameter documentations has been truncated, see
3819
+ # {MetronomeSDK::Models::ContractV2::Subscription::SeatConfig} for more details.
3820
+ #
3821
+ # @param seat_group_key [String] The property name, sent on usage events, that identifies the seat ID associated
3822
+ end
3823
+ end
3300
3824
  end
3301
3825
  end
3302
3826
  end