metronome-sdk 3.4.0 → 3.6.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 (95) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +84 -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/util.rb +22 -7
  7. data/lib/metronome_sdk/models/base_threshold_commit.rb +10 -1
  8. data/lib/metronome_sdk/models/contract_v2.rb +443 -15
  9. data/lib/metronome_sdk/models/credit.rb +74 -4
  10. data/lib/metronome_sdk/models/override.rb +9 -8
  11. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +27 -1
  12. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +28 -2
  13. data/lib/metronome_sdk/models/spend_threshold_configuration.rb +26 -1
  14. data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +30 -4
  15. data/lib/metronome_sdk/models/update_base_threshold_commit.rb +11 -1
  16. data/lib/metronome_sdk/models/v1/alert_create_params.rb +1 -0
  17. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +2 -189
  18. data/lib/metronome_sdk/models/v1/contract_create_params.rb +3 -191
  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 +2 -30
  27. data/lib/metronome_sdk/models/v1/package_list_response.rb +28 -9
  28. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +29 -9
  29. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +67 -20
  30. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +496 -15
  31. data/lib/metronome_sdk/resources/v1/contracts/products.rb +6 -2
  32. data/lib/metronome_sdk/resources/v1/contracts.rb +76 -2
  33. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +5 -1
  34. data/lib/metronome_sdk/resources/v1/packages.rb +1 -3
  35. data/lib/metronome_sdk/version.rb +1 -1
  36. data/lib/metronome_sdk.rb +3 -1
  37. data/rbi/metronome_sdk/internal/util.rbi +8 -0
  38. data/rbi/metronome_sdk/models/base_threshold_commit.rbi +24 -5
  39. data/rbi/metronome_sdk/models/contract_v2.rbi +916 -19
  40. data/rbi/metronome_sdk/models/credit.rbi +139 -3
  41. data/rbi/metronome_sdk/models/override.rbi +9 -12
  42. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +54 -3
  43. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +55 -4
  44. data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +54 -3
  45. data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +58 -9
  46. data/rbi/metronome_sdk/models/update_base_threshold_commit.rbi +22 -4
  47. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +5 -0
  48. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +3 -416
  49. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +5 -418
  50. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +179 -0
  51. data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_response.rbi +714 -0
  52. data/rbi/metronome_sdk/models/v1/contracts/product_create_params.rbi +74 -0
  53. data/rbi/metronome_sdk/models/v1/contracts/product_update_params.rbi +74 -0
  54. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +5 -0
  55. data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +9 -0
  56. data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +75 -0
  57. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +3 -76
  58. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +72 -15
  59. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +72 -17
  60. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +133 -28
  61. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1174 -145
  62. data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +18 -0
  63. data/rbi/metronome_sdk/resources/v1/contracts.rbi +88 -3
  64. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +7 -0
  65. data/rbi/metronome_sdk/resources/v1/packages.rbi +0 -3
  66. data/sig/metronome_sdk/internal/util.rbs +4 -0
  67. data/sig/metronome_sdk/models/base_threshold_commit.rbs +13 -3
  68. data/sig/metronome_sdk/models/contract_v2.rbs +401 -16
  69. data/sig/metronome_sdk/models/credit.rbs +69 -0
  70. data/sig/metronome_sdk/models/override.rbs +8 -10
  71. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +22 -3
  72. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +23 -4
  73. data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +22 -3
  74. data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +26 -7
  75. data/sig/metronome_sdk/models/update_base_threshold_commit.rbs +15 -2
  76. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +3 -1
  77. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +3 -147
  78. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +3 -147
  79. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +96 -0
  80. data/sig/metronome_sdk/models/v1/contract_list_seat_balances_response.rbs +299 -0
  81. data/sig/metronome_sdk/models/v1/contracts/product_create_params.rbs +20 -0
  82. data/sig/metronome_sdk/models/v1/contracts/product_update_params.rbs +20 -0
  83. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +3 -1
  84. data/sig/metronome_sdk/models/v1/customers/invoice.rbs +7 -0
  85. data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +29 -1
  86. data/sig/metronome_sdk/models/v1/package_create_params.rbs +3 -30
  87. data/sig/metronome_sdk/models/v1/package_list_response.rbs +33 -15
  88. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +33 -15
  89. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +33 -10
  90. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +409 -19
  91. data/sig/metronome_sdk/resources/v1/contracts/products.rbs +2 -0
  92. data/sig/metronome_sdk/resources/v1/contracts.rbs +15 -0
  93. data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +2 -0
  94. data/sig/metronome_sdk/resources/v1/packages.rbs +0 -1
  95. metadata +8 -2
@@ -200,8 +200,9 @@ module MetronomeSDK
200
200
  # @!attribute subscriptions
201
201
  # List of subscriptions on the contract.
202
202
  #
203
- # @return [Array<MetronomeSDK::Models::Subscription>, nil]
204
- optional :subscriptions, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Subscription] }
203
+ # @return [Array<MetronomeSDK::Models::ContractV2::Subscription>, nil]
204
+ optional :subscriptions,
205
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::ContractV2::Subscription] }
205
206
 
206
207
  # @!attribute total_contract_value
207
208
  #
@@ -284,7 +285,7 @@ module MetronomeSDK
284
285
  #
285
286
  # @param spend_threshold_configuration [MetronomeSDK::Models::SpendThresholdConfigurationV2]
286
287
  #
287
- # @param subscriptions [Array<MetronomeSDK::Models::Subscription>] List of subscriptions on the contract.
288
+ # @param subscriptions [Array<MetronomeSDK::Models::ContractV2::Subscription>] List of subscriptions on the contract.
288
289
  #
289
290
  # @param total_contract_value [Float]
290
291
  #
@@ -1237,6 +1238,11 @@ module MetronomeSDK
1237
1238
  # @return [String]
1238
1239
  required :id, String
1239
1240
 
1241
+ # @!attribute created_at
1242
+ #
1243
+ # @return [Time]
1244
+ required :created_at, Time
1245
+
1240
1246
  # @!attribute starting_at
1241
1247
  #
1242
1248
  # @return [Time]
@@ -1303,8 +1309,9 @@ module MetronomeSDK
1303
1309
  # @return [Symbol, MetronomeSDK::Models::ContractV2::Override::Type, nil]
1304
1310
  optional :type, enum: -> { MetronomeSDK::ContractV2::Override::Type }
1305
1311
 
1306
- # @!method initialize(id:, starting_at:, applicable_product_tags: nil, ending_before: nil, entitled: nil, is_commit_specific: nil, multiplier: nil, override_specifiers: nil, override_tiers: nil, overwrite_rate: nil, priority: nil, product: nil, target: nil, type: nil)
1312
+ # @!method initialize(id:, created_at:, starting_at:, applicable_product_tags: nil, ending_before: nil, entitled: nil, is_commit_specific: nil, multiplier: nil, override_specifiers: nil, override_tiers: nil, overwrite_rate: nil, priority: nil, product: nil, target: nil, type: nil)
1307
1313
  # @param id [String]
1314
+ # @param created_at [Time]
1308
1315
  # @param starting_at [Time]
1309
1316
  # @param applicable_product_tags [Array<String>]
1310
1317
  # @param ending_before [Time]
@@ -1356,12 +1363,7 @@ module MetronomeSDK
1356
1363
  # @return [Array<String>, nil]
1357
1364
  optional :recurring_commit_ids, MetronomeSDK::Internal::Type::ArrayOf[String]
1358
1365
 
1359
- # @!attribute recurring_credit_ids
1360
- #
1361
- # @return [Array<String>, nil]
1362
- optional :recurring_credit_ids, MetronomeSDK::Internal::Type::ArrayOf[String]
1363
-
1364
- # @!method initialize(billing_frequency: nil, commit_ids: nil, presentation_group_values: nil, pricing_group_values: nil, product_id: nil, product_tags: nil, recurring_commit_ids: nil, recurring_credit_ids: nil)
1366
+ # @!method initialize(billing_frequency: nil, commit_ids: nil, presentation_group_values: nil, pricing_group_values: nil, product_id: nil, product_tags: nil, recurring_commit_ids: nil)
1365
1367
  # @param billing_frequency [Symbol, MetronomeSDK::Models::ContractV2::Override::OverrideSpecifier::BillingFrequency]
1366
1368
  # @param commit_ids [Array<String>]
1367
1369
  # @param presentation_group_values [Hash{Symbol=>String, nil}]
@@ -1369,7 +1371,6 @@ module MetronomeSDK
1369
1371
  # @param product_id [String]
1370
1372
  # @param product_tags [Array<String>]
1371
1373
  # @param recurring_commit_ids [Array<String>]
1372
- # @param recurring_credit_ids [Array<String>]
1373
1374
 
1374
1375
  # @see MetronomeSDK::Models::ContractV2::Override::OverrideSpecifier#billing_frequency
1375
1376
  module BillingFrequency
@@ -1645,6 +1646,11 @@ module MetronomeSDK
1645
1646
  # @return [Array<String>, nil]
1646
1647
  optional :applicable_product_tags, MetronomeSDK::Internal::Type::ArrayOf[String]
1647
1648
 
1649
+ # @!attribute archived_at
1650
+ #
1651
+ # @return [Time, nil]
1652
+ optional :archived_at, Time
1653
+
1648
1654
  # @!attribute balance
1649
1655
  # The current balance of the credit or commit. This balance reflects the amount of
1650
1656
  # credit or commit that the customer has access to use at this moment - thus,
@@ -1693,7 +1699,7 @@ module MetronomeSDK
1693
1699
  # A list of ordered events that impact the balance of a credit. For example, an
1694
1700
  # invoice deduction or an expiration.
1695
1701
  #
1696
- # @return [Array<MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSegmentStartLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditAutomatedInvoiceDeductionLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditExpirationLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCanceledLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCreditedLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditManualLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSeatBasedAdjustmentLedgerEntry>, nil]
1702
+ # @return [Array<MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSegmentStartLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditAutomatedInvoiceDeductionLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditExpirationLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCanceledLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCreditedLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditManualLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSeatBasedAdjustmentLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditRolloverLedgerEntry>, nil]
1697
1703
  optional :ledger,
1698
1704
  -> { MetronomeSDK::Internal::Type::ArrayOf[union: MetronomeSDK::ContractV2::Credit::Ledger] }
1699
1705
 
@@ -1721,6 +1727,11 @@ module MetronomeSDK
1721
1727
  # @return [String, nil]
1722
1728
  optional :recurring_credit_id, String
1723
1729
 
1730
+ # @!attribute rolled_over_from
1731
+ #
1732
+ # @return [MetronomeSDK::Models::ContractV2::Credit::RolledOverFrom, nil]
1733
+ optional :rolled_over_from, -> { MetronomeSDK::ContractV2::Credit::RolledOverFrom }
1734
+
1724
1735
  # @!attribute salesforce_opportunity_id
1725
1736
  # This field's availability is dependent on your client's configuration.
1726
1737
  #
@@ -1741,7 +1752,7 @@ module MetronomeSDK
1741
1752
  # @return [MetronomeSDK::Models::RecurringCommitSubscriptionConfig, nil]
1742
1753
  optional :subscription_config, -> { MetronomeSDK::RecurringCommitSubscriptionConfig }
1743
1754
 
1744
- # @!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, salesforce_opportunity_id: nil, specifiers: nil, subscription_config: nil)
1755
+ # @!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)
1745
1756
  # Some parameter documentations has been truncated, see
1746
1757
  # {MetronomeSDK::Models::ContractV2::Credit} for more details.
1747
1758
  #
@@ -1759,6 +1770,8 @@ module MetronomeSDK
1759
1770
  #
1760
1771
  # @param applicable_product_tags [Array<String>]
1761
1772
  #
1773
+ # @param archived_at [Time]
1774
+ #
1762
1775
  # @param balance [Float] The current balance of the credit or commit. This balance reflects the amount of
1763
1776
  #
1764
1777
  # @param contract [MetronomeSDK::Models::ContractV2::Credit::Contract]
@@ -1771,7 +1784,7 @@ module MetronomeSDK
1771
1784
  #
1772
1785
  # @param hierarchy_configuration [MetronomeSDK::Models::CommitHierarchyConfiguration] Optional configuration for credit hierarchy access control
1773
1786
  #
1774
- # @param ledger [Array<MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSegmentStartLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditAutomatedInvoiceDeductionLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditExpirationLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCanceledLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCreditedLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditManualLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSeatBasedAdjustmentLedgerEntry>] A list of ordered events that impact the balance of a credit. For example, an in
1787
+ # @param ledger [Array<MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSegmentStartLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditAutomatedInvoiceDeductionLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditExpirationLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCanceledLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCreditedLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditManualLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSeatBasedAdjustmentLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditRolloverLedgerEntry>] A list of ordered events that impact the balance of a credit. For example, an in
1775
1788
  #
1776
1789
  # @param name [String]
1777
1790
  #
@@ -1781,6 +1794,8 @@ module MetronomeSDK
1781
1794
  #
1782
1795
  # @param recurring_credit_id [String] The ID of the recurring credit that created this credit
1783
1796
  #
1797
+ # @param rolled_over_from [MetronomeSDK::Models::ContractV2::Credit::RolledOverFrom]
1798
+ #
1784
1799
  # @param salesforce_opportunity_id [String] This field's availability is dependent on your client's configuration.
1785
1800
  #
1786
1801
  # @param specifiers [Array<MetronomeSDK::Models::CommitSpecifier>] List of filters that determine what kind of customer usage draws down a commit o
@@ -1842,6 +1857,8 @@ module MetronomeSDK
1842
1857
 
1843
1858
  variant -> { MetronomeSDK::ContractV2::Credit::Ledger::CreditSeatBasedAdjustmentLedgerEntry }
1844
1859
 
1860
+ variant -> { MetronomeSDK::ContractV2::Credit::Ledger::CreditRolloverLedgerEntry }
1861
+
1845
1862
  class CreditSegmentStartLedgerEntry < MetronomeSDK::Internal::Type::BaseModel
1846
1863
  # @!attribute amount
1847
1864
  #
@@ -2146,8 +2163,69 @@ module MetronomeSDK
2146
2163
  end
2147
2164
  end
2148
2165
 
2166
+ class CreditRolloverLedgerEntry < MetronomeSDK::Internal::Type::BaseModel
2167
+ # @!attribute amount
2168
+ #
2169
+ # @return [Float]
2170
+ required :amount, Float
2171
+
2172
+ # @!attribute new_contract_id
2173
+ #
2174
+ # @return [String]
2175
+ required :new_contract_id, String
2176
+
2177
+ # @!attribute segment_id
2178
+ #
2179
+ # @return [String]
2180
+ required :segment_id, String
2181
+
2182
+ # @!attribute timestamp
2183
+ #
2184
+ # @return [Time]
2185
+ required :timestamp, Time
2186
+
2187
+ # @!attribute type
2188
+ #
2189
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditRolloverLedgerEntry::Type]
2190
+ required :type, enum: -> { MetronomeSDK::ContractV2::Credit::Ledger::CreditRolloverLedgerEntry::Type }
2191
+
2192
+ # @!method initialize(amount:, new_contract_id:, segment_id:, timestamp:, type:)
2193
+ # @param amount [Float]
2194
+ # @param new_contract_id [String]
2195
+ # @param segment_id [String]
2196
+ # @param timestamp [Time]
2197
+ # @param type [Symbol, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditRolloverLedgerEntry::Type]
2198
+
2199
+ # @see MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditRolloverLedgerEntry#type
2200
+ module Type
2201
+ extend MetronomeSDK::Internal::Type::Enum
2202
+
2203
+ CREDIT_ROLLOVER = :CREDIT_ROLLOVER
2204
+
2205
+ # @!method self.values
2206
+ # @return [Array<Symbol>]
2207
+ end
2208
+ end
2209
+
2149
2210
  # @!method self.variants
2150
- # @return [Array(MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSegmentStartLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditAutomatedInvoiceDeductionLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditExpirationLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCanceledLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCreditedLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditManualLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSeatBasedAdjustmentLedgerEntry)]
2211
+ # @return [Array(MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSegmentStartLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditAutomatedInvoiceDeductionLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditExpirationLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCanceledLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditCreditedLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditManualLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditSeatBasedAdjustmentLedgerEntry, MetronomeSDK::Models::ContractV2::Credit::Ledger::CreditRolloverLedgerEntry)]
2212
+ end
2213
+
2214
+ # @see MetronomeSDK::Models::ContractV2::Credit#rolled_over_from
2215
+ class RolledOverFrom < MetronomeSDK::Internal::Type::BaseModel
2216
+ # @!attribute contract_id
2217
+ #
2218
+ # @return [String]
2219
+ required :contract_id, String
2220
+
2221
+ # @!attribute credit_id
2222
+ #
2223
+ # @return [String]
2224
+ required :credit_id, String
2225
+
2226
+ # @!method initialize(contract_id:, credit_id:)
2227
+ # @param contract_id [String]
2228
+ # @param credit_id [String]
2151
2229
  end
2152
2230
  end
2153
2231
 
@@ -3227,6 +3305,356 @@ module MetronomeSDK
3227
3305
  # @!method self.values
3228
3306
  # @return [Array<Symbol>]
3229
3307
  end
3308
+
3309
+ class Subscription < MetronomeSDK::Internal::Type::BaseModel
3310
+ # @!attribute billing_periods
3311
+ # Previous, current, and next billing periods for the subscription.
3312
+ #
3313
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods]
3314
+ required :billing_periods, -> { MetronomeSDK::ContractV2::Subscription::BillingPeriods }
3315
+
3316
+ # @!attribute collection_schedule
3317
+ #
3318
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::Subscription::CollectionSchedule]
3319
+ required :collection_schedule, enum: -> { MetronomeSDK::ContractV2::Subscription::CollectionSchedule }
3320
+
3321
+ # @!attribute proration
3322
+ #
3323
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::Proration]
3324
+ required :proration, -> { MetronomeSDK::ContractV2::Subscription::Proration }
3325
+
3326
+ # @!attribute quantity_management_mode
3327
+ # Determines how the subscription's quantity is controlled. Defaults to
3328
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
3329
+ # directly on the subscription. `initial_quantity` must be provided with this
3330
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
3331
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
3332
+ # user_123) to increment and decrement a subscription quantity, rather than
3333
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
3334
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
3335
+ # provided with this option.
3336
+ #
3337
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::Subscription::QuantityManagementMode]
3338
+ required :quantity_management_mode,
3339
+ enum: -> { MetronomeSDK::ContractV2::Subscription::QuantityManagementMode }
3340
+
3341
+ # @!attribute quantity_schedule
3342
+ # List of quantity schedule items for the subscription. Only includes the current
3343
+ # quantity and future quantity changes.
3344
+ #
3345
+ # @return [Array<MetronomeSDK::Models::ContractV2::Subscription::QuantitySchedule>]
3346
+ required :quantity_schedule,
3347
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::ContractV2::Subscription::QuantitySchedule] }
3348
+
3349
+ # @!attribute starting_at
3350
+ #
3351
+ # @return [Time]
3352
+ required :starting_at, Time
3353
+
3354
+ # @!attribute subscription_rate
3355
+ #
3356
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate]
3357
+ required :subscription_rate, -> { MetronomeSDK::ContractV2::Subscription::SubscriptionRate }
3358
+
3359
+ # @!attribute id
3360
+ #
3361
+ # @return [String, nil]
3362
+ optional :id, String
3363
+
3364
+ # @!attribute custom_fields
3365
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
3366
+ #
3367
+ # @return [Hash{Symbol=>String}, nil]
3368
+ optional :custom_fields, MetronomeSDK::Internal::Type::HashOf[String]
3369
+
3370
+ # @!attribute description
3371
+ #
3372
+ # @return [String, nil]
3373
+ optional :description, String
3374
+
3375
+ # @!attribute ending_before
3376
+ #
3377
+ # @return [Time, nil]
3378
+ optional :ending_before, Time
3379
+
3380
+ # @!attribute fiat_credit_type_id
3381
+ #
3382
+ # @return [String, nil]
3383
+ optional :fiat_credit_type_id, String
3384
+
3385
+ # @!attribute name
3386
+ #
3387
+ # @return [String, nil]
3388
+ optional :name, String
3389
+
3390
+ # @!attribute seat_config
3391
+ #
3392
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::SeatConfig, nil]
3393
+ optional :seat_config, -> { MetronomeSDK::ContractV2::Subscription::SeatConfig }
3394
+
3395
+ # @!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)
3396
+ # Some parameter documentations has been truncated, see
3397
+ # {MetronomeSDK::Models::ContractV2::Subscription} for more details.
3398
+ #
3399
+ # @param billing_periods [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods] Previous, current, and next billing periods for the subscription.
3400
+ #
3401
+ # @param collection_schedule [Symbol, MetronomeSDK::Models::ContractV2::Subscription::CollectionSchedule]
3402
+ #
3403
+ # @param proration [MetronomeSDK::Models::ContractV2::Subscription::Proration]
3404
+ #
3405
+ # @param quantity_management_mode [Symbol, MetronomeSDK::Models::ContractV2::Subscription::QuantityManagementMode] Determines how the subscription's quantity is controlled. Defaults to QUANTITY_O
3406
+ #
3407
+ # @param quantity_schedule [Array<MetronomeSDK::Models::ContractV2::Subscription::QuantitySchedule>] List of quantity schedule items for the subscription. Only includes the current
3408
+ #
3409
+ # @param starting_at [Time]
3410
+ #
3411
+ # @param subscription_rate [MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate]
3412
+ #
3413
+ # @param id [String]
3414
+ #
3415
+ # @param custom_fields [Hash{Symbol=>String}] Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
3416
+ #
3417
+ # @param description [String]
3418
+ #
3419
+ # @param ending_before [Time]
3420
+ #
3421
+ # @param fiat_credit_type_id [String]
3422
+ #
3423
+ # @param name [String]
3424
+ #
3425
+ # @param seat_config [MetronomeSDK::Models::ContractV2::Subscription::SeatConfig]
3426
+
3427
+ # @see MetronomeSDK::Models::ContractV2::Subscription#billing_periods
3428
+ class BillingPeriods < MetronomeSDK::Internal::Type::BaseModel
3429
+ # @!attribute current
3430
+ #
3431
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Current, nil]
3432
+ optional :current, -> { MetronomeSDK::ContractV2::Subscription::BillingPeriods::Current }
3433
+
3434
+ # @!attribute next_
3435
+ #
3436
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Next, nil]
3437
+ optional :next_,
3438
+ -> {
3439
+ MetronomeSDK::ContractV2::Subscription::BillingPeriods::Next
3440
+ },
3441
+ api_name: :next
3442
+
3443
+ # @!attribute previous
3444
+ #
3445
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Previous, nil]
3446
+ optional :previous, -> { MetronomeSDK::ContractV2::Subscription::BillingPeriods::Previous }
3447
+
3448
+ # @!method initialize(current: nil, next_: nil, previous: nil)
3449
+ # Previous, current, and next billing periods for the subscription.
3450
+ #
3451
+ # @param current [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Current]
3452
+ # @param next_ [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Next]
3453
+ # @param previous [MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods::Previous]
3454
+
3455
+ # @see MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods#current
3456
+ class Current < MetronomeSDK::Internal::Type::BaseModel
3457
+ # @!attribute ending_before
3458
+ #
3459
+ # @return [Time]
3460
+ required :ending_before, Time
3461
+
3462
+ # @!attribute starting_at
3463
+ #
3464
+ # @return [Time]
3465
+ required :starting_at, Time
3466
+
3467
+ # @!method initialize(ending_before:, starting_at:)
3468
+ # @param ending_before [Time]
3469
+ # @param starting_at [Time]
3470
+ end
3471
+
3472
+ # @see MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods#next_
3473
+ class Next < MetronomeSDK::Internal::Type::BaseModel
3474
+ # @!attribute ending_before
3475
+ #
3476
+ # @return [Time]
3477
+ required :ending_before, Time
3478
+
3479
+ # @!attribute starting_at
3480
+ #
3481
+ # @return [Time]
3482
+ required :starting_at, Time
3483
+
3484
+ # @!method initialize(ending_before:, starting_at:)
3485
+ # @param ending_before [Time]
3486
+ # @param starting_at [Time]
3487
+ end
3488
+
3489
+ # @see MetronomeSDK::Models::ContractV2::Subscription::BillingPeriods#previous
3490
+ class Previous < MetronomeSDK::Internal::Type::BaseModel
3491
+ # @!attribute ending_before
3492
+ #
3493
+ # @return [Time]
3494
+ required :ending_before, Time
3495
+
3496
+ # @!attribute starting_at
3497
+ #
3498
+ # @return [Time]
3499
+ required :starting_at, Time
3500
+
3501
+ # @!method initialize(ending_before:, starting_at:)
3502
+ # @param ending_before [Time]
3503
+ # @param starting_at [Time]
3504
+ end
3505
+ end
3506
+
3507
+ # @see MetronomeSDK::Models::ContractV2::Subscription#collection_schedule
3508
+ module CollectionSchedule
3509
+ extend MetronomeSDK::Internal::Type::Enum
3510
+
3511
+ ADVANCE = :ADVANCE
3512
+ ARREARS = :ARREARS
3513
+
3514
+ # @!method self.values
3515
+ # @return [Array<Symbol>]
3516
+ end
3517
+
3518
+ # @see MetronomeSDK::Models::ContractV2::Subscription#proration
3519
+ class Proration < MetronomeSDK::Internal::Type::BaseModel
3520
+ # @!attribute invoice_behavior
3521
+ #
3522
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::Subscription::Proration::InvoiceBehavior]
3523
+ required :invoice_behavior,
3524
+ enum: -> { MetronomeSDK::ContractV2::Subscription::Proration::InvoiceBehavior }
3525
+
3526
+ # @!attribute is_prorated
3527
+ #
3528
+ # @return [Boolean]
3529
+ required :is_prorated, MetronomeSDK::Internal::Type::Boolean
3530
+
3531
+ # @!method initialize(invoice_behavior:, is_prorated:)
3532
+ # @param invoice_behavior [Symbol, MetronomeSDK::Models::ContractV2::Subscription::Proration::InvoiceBehavior]
3533
+ # @param is_prorated [Boolean]
3534
+
3535
+ # @see MetronomeSDK::Models::ContractV2::Subscription::Proration#invoice_behavior
3536
+ module InvoiceBehavior
3537
+ extend MetronomeSDK::Internal::Type::Enum
3538
+
3539
+ BILL_IMMEDIATELY = :BILL_IMMEDIATELY
3540
+ BILL_ON_NEXT_COLLECTION_DATE = :BILL_ON_NEXT_COLLECTION_DATE
3541
+
3542
+ # @!method self.values
3543
+ # @return [Array<Symbol>]
3544
+ end
3545
+ end
3546
+
3547
+ # Determines how the subscription's quantity is controlled. Defaults to
3548
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
3549
+ # directly on the subscription. `initial_quantity` must be provided with this
3550
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
3551
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
3552
+ # user_123) to increment and decrement a subscription quantity, rather than
3553
+ # directly providing the quantity. You must use a **SEAT_BASED** subscription to
3554
+ # use a linked recurring credit with an allocation per seat. `seat_config` must be
3555
+ # provided with this option.
3556
+ #
3557
+ # @see MetronomeSDK::Models::ContractV2::Subscription#quantity_management_mode
3558
+ module QuantityManagementMode
3559
+ extend MetronomeSDK::Internal::Type::Enum
3560
+
3561
+ SEAT_BASED = :SEAT_BASED
3562
+ QUANTITY_ONLY = :QUANTITY_ONLY
3563
+
3564
+ # @!method self.values
3565
+ # @return [Array<Symbol>]
3566
+ end
3567
+
3568
+ class QuantitySchedule < MetronomeSDK::Internal::Type::BaseModel
3569
+ # @!attribute quantity
3570
+ #
3571
+ # @return [Float]
3572
+ required :quantity, Float
3573
+
3574
+ # @!attribute starting_at
3575
+ #
3576
+ # @return [Time]
3577
+ required :starting_at, Time
3578
+
3579
+ # @!attribute ending_before
3580
+ #
3581
+ # @return [Time, nil]
3582
+ optional :ending_before, Time
3583
+
3584
+ # @!method initialize(quantity:, starting_at:, ending_before: nil)
3585
+ # @param quantity [Float]
3586
+ # @param starting_at [Time]
3587
+ # @param ending_before [Time]
3588
+ end
3589
+
3590
+ # @see MetronomeSDK::Models::ContractV2::Subscription#subscription_rate
3591
+ class SubscriptionRate < MetronomeSDK::Internal::Type::BaseModel
3592
+ # @!attribute billing_frequency
3593
+ #
3594
+ # @return [Symbol, MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate::BillingFrequency]
3595
+ required :billing_frequency,
3596
+ enum: -> { MetronomeSDK::ContractV2::Subscription::SubscriptionRate::BillingFrequency }
3597
+
3598
+ # @!attribute product
3599
+ #
3600
+ # @return [MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate::Product]
3601
+ required :product, -> { MetronomeSDK::ContractV2::Subscription::SubscriptionRate::Product }
3602
+
3603
+ # @!method initialize(billing_frequency:, product:)
3604
+ # @param billing_frequency [Symbol, MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate::BillingFrequency]
3605
+ # @param product [MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate::Product]
3606
+
3607
+ # @see MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate#billing_frequency
3608
+ module BillingFrequency
3609
+ extend MetronomeSDK::Internal::Type::Enum
3610
+
3611
+ MONTHLY = :MONTHLY
3612
+ QUARTERLY = :QUARTERLY
3613
+ ANNUAL = :ANNUAL
3614
+ WEEKLY = :WEEKLY
3615
+
3616
+ # @!method self.values
3617
+ # @return [Array<Symbol>]
3618
+ end
3619
+
3620
+ # @see MetronomeSDK::Models::ContractV2::Subscription::SubscriptionRate#product
3621
+ class Product < MetronomeSDK::Internal::Type::BaseModel
3622
+ # @!attribute id
3623
+ #
3624
+ # @return [String]
3625
+ required :id, String
3626
+
3627
+ # @!attribute name
3628
+ #
3629
+ # @return [String]
3630
+ required :name, String
3631
+
3632
+ # @!method initialize(id:, name:)
3633
+ # @param id [String]
3634
+ # @param name [String]
3635
+ end
3636
+ end
3637
+
3638
+ # @see MetronomeSDK::Models::ContractV2::Subscription#seat_config
3639
+ class SeatConfig < MetronomeSDK::Internal::Type::BaseModel
3640
+ # @!attribute seat_group_key
3641
+ # The property name, sent on usage events, that identifies the seat ID associated
3642
+ # with the usage event. For example, the property name might be seat_id or
3643
+ # user_id. The property must be set as a group key on billable metrics and a
3644
+ # presentation/pricing group key on contract products. This allows linked
3645
+ # recurring credits with an allocation per seat to be consumed by only one seat's
3646
+ # usage.
3647
+ #
3648
+ # @return [String]
3649
+ required :seat_group_key, String
3650
+
3651
+ # @!method initialize(seat_group_key:)
3652
+ # Some parameter documentations has been truncated, see
3653
+ # {MetronomeSDK::Models::ContractV2::Subscription::SeatConfig} for more details.
3654
+ #
3655
+ # @param seat_group_key [String] The property name, sent on usage events, that identifies the seat ID associated
3656
+ end
3657
+ end
3230
3658
  end
3231
3659
  end
3232
3660
  end