metronome-sdk 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/util.rb +32 -1
  5. data/lib/metronome_sdk/models/commit_rate.rb +29 -3
  6. data/lib/metronome_sdk/models/contract.rb +1 -9
  7. data/lib/metronome_sdk/models/contract_v2.rb +22 -1
  8. data/lib/metronome_sdk/models/overwrite_rate.rb +22 -1
  9. data/lib/metronome_sdk/models/payment_gate_config.rb +0 -1
  10. data/lib/metronome_sdk/models/payment_gate_config_v2.rb +0 -1
  11. data/lib/metronome_sdk/models/rate.rb +22 -1
  12. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +23 -2
  13. data/lib/metronome_sdk/models/v1/contract_create_params.rb +24 -11
  14. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_params.rb +23 -1
  15. data/lib/metronome_sdk/models/v1/contracts/rate_cards/rate_add_params.rb +21 -1
  16. data/lib/metronome_sdk/models/v1/customers/invoice.rb +10 -1
  17. data/lib/metronome_sdk/models/v1/package_archive_params.rb +24 -0
  18. data/lib/metronome_sdk/models/v1/package_archive_response.rb +18 -0
  19. data/lib/metronome_sdk/models/v1/package_create_params.rb +2719 -0
  20. data/lib/metronome_sdk/models/v1/package_create_response.rb +18 -0
  21. data/lib/metronome_sdk/models/v1/package_list_contracts_on_package_params.rb +69 -0
  22. data/lib/metronome_sdk/models/v1/package_list_contracts_on_package_response.rb +42 -0
  23. data/lib/metronome_sdk/models/v1/package_list_params.rb +52 -0
  24. data/lib/metronome_sdk/models/v1/package_list_response.rb +2446 -0
  25. data/lib/metronome_sdk/models/v1/package_retrieve_params.rb +22 -0
  26. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +2479 -0
  27. data/lib/metronome_sdk/models/v1/usage_list_with_groups_params.rb +39 -2
  28. data/lib/metronome_sdk/models/v1/usage_list_with_groups_response.rb +27 -3
  29. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +23 -2
  30. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +23 -1
  31. data/lib/metronome_sdk/resources/v1/alerts.rb +5 -0
  32. data/lib/metronome_sdk/resources/v1/audit_logs.rb +4 -1
  33. data/lib/metronome_sdk/resources/v1/billable_metrics.rb +5 -1
  34. data/lib/metronome_sdk/resources/v1/contracts/named_schedules.rb +2 -0
  35. data/lib/metronome_sdk/resources/v1/contracts/products.rb +4 -2
  36. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/named_schedules.rb +2 -0
  37. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/product_orders.rb +1 -0
  38. data/lib/metronome_sdk/resources/v1/contracts/rate_cards/rates.rb +7 -3
  39. data/lib/metronome_sdk/resources/v1/contracts/rate_cards.rb +10 -3
  40. data/lib/metronome_sdk/resources/v1/contracts.rb +8 -5
  41. data/lib/metronome_sdk/resources/v1/credit_grants.rb +9 -4
  42. data/lib/metronome_sdk/resources/v1/custom_fields.rb +6 -2
  43. data/lib/metronome_sdk/resources/v1/customers/alerts.rb +8 -2
  44. data/lib/metronome_sdk/resources/v1/customers/billing_config.rb +4 -0
  45. data/lib/metronome_sdk/resources/v1/customers/commits.rb +1 -0
  46. data/lib/metronome_sdk/resources/v1/customers/credits.rb +1 -0
  47. data/lib/metronome_sdk/resources/v1/customers/invoices.rb +10 -3
  48. data/lib/metronome_sdk/resources/v1/customers/named_schedules.rb +2 -0
  49. data/lib/metronome_sdk/resources/v1/customers/plans.rb +8 -2
  50. data/lib/metronome_sdk/resources/v1/customers.rb +27 -3
  51. data/lib/metronome_sdk/resources/v1/dashboards.rb +4 -0
  52. data/lib/metronome_sdk/resources/v1/invoices.rb +4 -0
  53. data/lib/metronome_sdk/resources/v1/packages.rb +269 -0
  54. data/lib/metronome_sdk/resources/v1/plans.rb +10 -3
  55. data/lib/metronome_sdk/resources/v1/pricing_units.rb +4 -1
  56. data/lib/metronome_sdk/resources/v1/services.rb +2 -0
  57. data/lib/metronome_sdk/resources/v1/settings/billing_providers.rb +2 -0
  58. data/lib/metronome_sdk/resources/v1/settings.rb +4 -0
  59. data/lib/metronome_sdk/resources/v1/usage.rb +26 -13
  60. data/lib/metronome_sdk/resources/v1.rb +41 -0
  61. data/lib/metronome_sdk/version.rb +1 -1
  62. data/lib/metronome_sdk.rb +11 -0
  63. data/rbi/metronome_sdk/internal/util.rbi +21 -1
  64. data/rbi/metronome_sdk/models/commit_rate.rbi +43 -2
  65. data/rbi/metronome_sdk/models/contract.rbi +0 -11
  66. data/rbi/metronome_sdk/models/contract_v2.rbi +46 -0
  67. data/rbi/metronome_sdk/models/overwrite_rate.rbi +37 -0
  68. data/rbi/metronome_sdk/models/payment_gate_config.rbi +0 -5
  69. data/rbi/metronome_sdk/models/payment_gate_config_v2.rbi +0 -5
  70. data/rbi/metronome_sdk/models/rate.rbi +35 -0
  71. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +46 -5
  72. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +46 -16
  73. data/rbi/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_params.rbi +46 -0
  74. data/rbi/metronome_sdk/models/v1/contracts/rate_cards/rate_add_params.rbi +46 -0
  75. data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +13 -0
  76. data/rbi/metronome_sdk/models/v1/package_archive_params.rbi +48 -0
  77. data/rbi/metronome_sdk/models/v1/package_archive_response.rbi +31 -0
  78. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +6362 -0
  79. data/rbi/metronome_sdk/models/v1/package_create_response.rbi +31 -0
  80. data/rbi/metronome_sdk/models/v1/package_list_contracts_on_package_params.rbi +105 -0
  81. data/rbi/metronome_sdk/models/v1/package_list_contracts_on_package_response.rbi +70 -0
  82. data/rbi/metronome_sdk/models/v1/package_list_params.rbi +123 -0
  83. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +5796 -0
  84. data/rbi/metronome_sdk/models/v1/package_retrieve_params.rbi +43 -0
  85. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +5864 -0
  86. data/rbi/metronome_sdk/models/v1/usage_list_with_groups_params.rbi +52 -0
  87. data/rbi/metronome_sdk/models/v1/usage_list_with_groups_response.rbi +24 -3
  88. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +46 -5
  89. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +46 -0
  90. data/rbi/metronome_sdk/resources/v1/alerts.rbi +5 -0
  91. data/rbi/metronome_sdk/resources/v1/audit_logs.rbi +2 -0
  92. data/rbi/metronome_sdk/resources/v1/billable_metrics.rbi +3 -0
  93. data/rbi/metronome_sdk/resources/v1/contracts/named_schedules.rbi +2 -0
  94. data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +1 -0
  95. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/named_schedules.rbi +2 -0
  96. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/product_orders.rbi +1 -0
  97. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbi +5 -0
  98. data/rbi/metronome_sdk/resources/v1/contracts/rate_cards.rbi +5 -0
  99. data/rbi/metronome_sdk/resources/v1/contracts.rbi +4 -3
  100. data/rbi/metronome_sdk/resources/v1/credit_grants.rbi +3 -0
  101. data/rbi/metronome_sdk/resources/v1/custom_fields.rbi +3 -0
  102. data/rbi/metronome_sdk/resources/v1/customers/alerts.rbi +5 -0
  103. data/rbi/metronome_sdk/resources/v1/customers/billing_config.rbi +4 -0
  104. data/rbi/metronome_sdk/resources/v1/customers/commits.rbi +1 -0
  105. data/rbi/metronome_sdk/resources/v1/customers/credits.rbi +1 -0
  106. data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +4 -0
  107. data/rbi/metronome_sdk/resources/v1/customers/named_schedules.rbi +2 -0
  108. data/rbi/metronome_sdk/resources/v1/customers/plans.rbi +4 -0
  109. data/rbi/metronome_sdk/resources/v1/customers.rbi +21 -0
  110. data/rbi/metronome_sdk/resources/v1/dashboards.rbi +4 -0
  111. data/rbi/metronome_sdk/resources/v1/invoices.rbi +4 -0
  112. data/rbi/metronome_sdk/resources/v1/packages.rbi +268 -0
  113. data/rbi/metronome_sdk/resources/v1/plans.rbi +4 -0
  114. data/rbi/metronome_sdk/resources/v1/pricing_units.rbi +2 -0
  115. data/rbi/metronome_sdk/resources/v1/services.rbi +2 -0
  116. data/rbi/metronome_sdk/resources/v1/settings/billing_providers.rbi +2 -0
  117. data/rbi/metronome_sdk/resources/v1/settings.rbi +4 -0
  118. data/rbi/metronome_sdk/resources/v1/usage.rbi +35 -8
  119. data/rbi/metronome_sdk/resources/v1.rbi +40 -0
  120. data/sig/metronome_sdk/internal/util.rbs +10 -0
  121. data/sig/metronome_sdk/models/commit_rate.rbs +19 -0
  122. data/sig/metronome_sdk/models/contract.rbs +0 -7
  123. data/sig/metronome_sdk/models/contract_v2.rbs +19 -0
  124. data/sig/metronome_sdk/models/overwrite_rate.rbs +19 -0
  125. data/sig/metronome_sdk/models/payment_gate_config.rbs +1 -2
  126. data/sig/metronome_sdk/models/payment_gate_config_v2.rbs +1 -2
  127. data/sig/metronome_sdk/models/rate.rbs +19 -0
  128. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +20 -2
  129. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +20 -9
  130. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_add_many_params.rbs +19 -0
  131. data/sig/metronome_sdk/models/v1/contracts/rate_cards/rate_add_params.rbs +19 -0
  132. data/sig/metronome_sdk/models/v1/customers/invoice.rbs +7 -0
  133. data/sig/metronome_sdk/models/v1/package_archive_params.rbs +26 -0
  134. data/sig/metronome_sdk/models/v1/package_archive_response.rbs +15 -0
  135. data/sig/metronome_sdk/models/v1/package_create_params.rbs +2532 -0
  136. data/sig/metronome_sdk/models/v1/package_create_response.rbs +15 -0
  137. data/sig/metronome_sdk/models/v1/package_list_contracts_on_package_params.rbs +63 -0
  138. data/sig/metronome_sdk/models/v1/package_list_contracts_on_package_response.rbs +46 -0
  139. data/sig/metronome_sdk/models/v1/package_list_params.rbs +58 -0
  140. data/sig/metronome_sdk/models/v1/package_list_response.rbs +2441 -0
  141. data/sig/metronome_sdk/models/v1/package_retrieve_params.rbs +26 -0
  142. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +2467 -0
  143. data/sig/metronome_sdk/models/v1/usage_list_with_groups_params.rbs +16 -0
  144. data/sig/metronome_sdk/models/v1/usage_list_with_groups_response.rbs +10 -3
  145. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +20 -2
  146. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +19 -0
  147. data/sig/metronome_sdk/resources/v1/contracts/rate_cards/rates.rbs +1 -0
  148. data/sig/metronome_sdk/resources/v1/contracts.rbs +0 -1
  149. data/sig/metronome_sdk/resources/v1/packages.rbs +63 -0
  150. data/sig/metronome_sdk/resources/v1/usage.rbs +2 -0
  151. data/sig/metronome_sdk/resources/v1.rbs +2 -0
  152. metadata +35 -2
@@ -0,0 +1,2479 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MetronomeSDK
4
+ module Models
5
+ module V1
6
+ # @see MetronomeSDK::Resources::V1::Packages#retrieve
7
+ class PackageRetrieveResponse < MetronomeSDK::Internal::Type::BaseModel
8
+ # @!attribute data
9
+ #
10
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data]
11
+ required :data, -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data }
12
+
13
+ # @!method initialize(data:)
14
+ # @param data [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data]
15
+
16
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse#data
17
+ class Data < MetronomeSDK::Internal::Type::BaseModel
18
+ # @!attribute id
19
+ #
20
+ # @return [String]
21
+ required :id, String
22
+
23
+ # @!attribute commits
24
+ #
25
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit>]
26
+ required :commits,
27
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit] }
28
+
29
+ # @!attribute created_at
30
+ #
31
+ # @return [Time]
32
+ required :created_at, Time
33
+
34
+ # @!attribute created_by
35
+ #
36
+ # @return [String]
37
+ required :created_by, String
38
+
39
+ # @!attribute overrides
40
+ #
41
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override>]
42
+ required :overrides,
43
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override] }
44
+
45
+ # @!attribute scheduled_charges
46
+ #
47
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge>]
48
+ required :scheduled_charges,
49
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge] }
50
+
51
+ # @!attribute usage_statement_schedule
52
+ #
53
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::UsageStatementSchedule]
54
+ required :usage_statement_schedule,
55
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::UsageStatementSchedule }
56
+
57
+ # @!attribute aliases
58
+ #
59
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Alias>, nil]
60
+ optional :aliases,
61
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Alias] }
62
+
63
+ # @!attribute archived_at
64
+ #
65
+ # @return [Time, nil]
66
+ optional :archived_at, Time
67
+
68
+ # @!attribute billing_provider
69
+ #
70
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::BillingProvider, nil]
71
+ optional :billing_provider,
72
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::BillingProvider }
73
+
74
+ # @!attribute credits
75
+ #
76
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit>, nil]
77
+ optional :credits,
78
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit] }
79
+
80
+ # @!attribute delivery_method
81
+ #
82
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::DeliveryMethod, nil]
83
+ optional :delivery_method,
84
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::DeliveryMethod }
85
+
86
+ # @!attribute duration
87
+ #
88
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Duration, nil]
89
+ optional :duration, -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Duration }
90
+
91
+ # @!attribute multiplier_override_prioritization
92
+ # Defaults to LOWEST_MULTIPLIER, which applies the greatest discount to list
93
+ # prices automatically. EXPLICIT prioritization requires specifying priorities for
94
+ # each multiplier; the one with the lowest priority value will be prioritized
95
+ # first.
96
+ #
97
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::MultiplierOverridePrioritization, nil]
98
+ optional :multiplier_override_prioritization,
99
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::MultiplierOverridePrioritization }
100
+
101
+ # @!attribute name
102
+ #
103
+ # @return [String, nil]
104
+ optional :name, String
105
+
106
+ # @!attribute net_payment_terms_days
107
+ #
108
+ # @return [Float, nil]
109
+ optional :net_payment_terms_days, Float
110
+
111
+ # @!attribute prepaid_balance_threshold_configuration
112
+ #
113
+ # @return [MetronomeSDK::Models::PrepaidBalanceThresholdConfiguration, nil]
114
+ optional :prepaid_balance_threshold_configuration,
115
+ -> { MetronomeSDK::PrepaidBalanceThresholdConfiguration }
116
+
117
+ # @!attribute rate_card_id
118
+ #
119
+ # @return [String, nil]
120
+ optional :rate_card_id, String
121
+
122
+ # @!attribute recurring_commits
123
+ #
124
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit>, nil]
125
+ optional :recurring_commits,
126
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit] }
127
+
128
+ # @!attribute recurring_credits
129
+ #
130
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit>, nil]
131
+ optional :recurring_credits,
132
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit] }
133
+
134
+ # @!attribute scheduled_charges_on_usage_invoices
135
+ # Determines which scheduled and commit charges to consolidate onto the Contract's
136
+ # usage invoice. The charge's `timestamp` must match the usage invoice's
137
+ # `ending_before` date for consolidation to occur. This field cannot be modified
138
+ # after a Contract has been created. If this field is omitted, charges will appear
139
+ # on a separate invoice from usage charges.
140
+ #
141
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledChargesOnUsageInvoices, nil]
142
+ optional :scheduled_charges_on_usage_invoices,
143
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledChargesOnUsageInvoices }
144
+
145
+ # @!attribute spend_threshold_configuration
146
+ #
147
+ # @return [MetronomeSDK::Models::SpendThresholdConfiguration, nil]
148
+ optional :spend_threshold_configuration, -> { MetronomeSDK::SpendThresholdConfiguration }
149
+
150
+ # @!attribute subscriptions
151
+ #
152
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription>, nil]
153
+ optional :subscriptions,
154
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription] }
155
+
156
+ # @!attribute uniqueness_key
157
+ # Prevents the creation of duplicates. If a request to create a record is made
158
+ # with a previously used uniqueness key, a new record will not be created and the
159
+ # request will fail with a 409 error.
160
+ #
161
+ # @return [String, nil]
162
+ optional :uniqueness_key, String
163
+
164
+ # @!method initialize(id:, commits:, created_at:, created_by:, overrides:, scheduled_charges:, usage_statement_schedule:, aliases: nil, archived_at: nil, billing_provider: nil, credits: nil, delivery_method: nil, duration: nil, multiplier_override_prioritization: nil, name: nil, net_payment_terms_days: nil, prepaid_balance_threshold_configuration: nil, rate_card_id: nil, recurring_commits: nil, recurring_credits: nil, scheduled_charges_on_usage_invoices: nil, spend_threshold_configuration: nil, subscriptions: nil, uniqueness_key: nil)
165
+ # Some parameter documentations has been truncated, see
166
+ # {MetronomeSDK::Models::V1::PackageRetrieveResponse::Data} for more details.
167
+ #
168
+ # @param id [String]
169
+ #
170
+ # @param commits [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit>]
171
+ #
172
+ # @param created_at [Time]
173
+ #
174
+ # @param created_by [String]
175
+ #
176
+ # @param overrides [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override>]
177
+ #
178
+ # @param scheduled_charges [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge>]
179
+ #
180
+ # @param usage_statement_schedule [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::UsageStatementSchedule]
181
+ #
182
+ # @param aliases [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Alias>]
183
+ #
184
+ # @param archived_at [Time]
185
+ #
186
+ # @param billing_provider [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::BillingProvider]
187
+ #
188
+ # @param credits [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit>]
189
+ #
190
+ # @param delivery_method [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::DeliveryMethod]
191
+ #
192
+ # @param duration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Duration]
193
+ #
194
+ # @param multiplier_override_prioritization [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::MultiplierOverridePrioritization] Defaults to LOWEST_MULTIPLIER, which applies the greatest discount to list price
195
+ #
196
+ # @param name [String]
197
+ #
198
+ # @param net_payment_terms_days [Float]
199
+ #
200
+ # @param prepaid_balance_threshold_configuration [MetronomeSDK::Models::PrepaidBalanceThresholdConfiguration]
201
+ #
202
+ # @param rate_card_id [String]
203
+ #
204
+ # @param recurring_commits [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit>]
205
+ #
206
+ # @param recurring_credits [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit>]
207
+ #
208
+ # @param scheduled_charges_on_usage_invoices [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledChargesOnUsageInvoices] Determines which scheduled and commit charges to consolidate onto the Contract's
209
+ #
210
+ # @param spend_threshold_configuration [MetronomeSDK::Models::SpendThresholdConfiguration]
211
+ #
212
+ # @param subscriptions [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription>]
213
+ #
214
+ # @param uniqueness_key [String] Prevents the creation of duplicates. If a request to create a record is made wit
215
+
216
+ class Commit < MetronomeSDK::Internal::Type::BaseModel
217
+ # @!attribute id
218
+ #
219
+ # @return [String]
220
+ required :id, String
221
+
222
+ # @!attribute product
223
+ #
224
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::Product]
225
+ required :product, -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::Product }
226
+
227
+ # @!attribute type
228
+ #
229
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::Type]
230
+ required :type, enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::Type }
231
+
232
+ # @!attribute access_schedule
233
+ # The schedule that the customer will gain access to the credits purposed with
234
+ # this commit.
235
+ #
236
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule, nil]
237
+ optional :access_schedule,
238
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule }
239
+
240
+ # @!attribute applicable_product_ids
241
+ #
242
+ # @return [Array<String>, nil]
243
+ optional :applicable_product_ids, MetronomeSDK::Internal::Type::ArrayOf[String]
244
+
245
+ # @!attribute applicable_product_tags
246
+ #
247
+ # @return [Array<String>, nil]
248
+ optional :applicable_product_tags, MetronomeSDK::Internal::Type::ArrayOf[String]
249
+
250
+ # @!attribute custom_fields
251
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
252
+ #
253
+ # @return [Hash{Symbol=>String}, nil]
254
+ optional :custom_fields, MetronomeSDK::Internal::Type::HashOf[String]
255
+
256
+ # @!attribute description
257
+ #
258
+ # @return [String, nil]
259
+ optional :description, String
260
+
261
+ # @!attribute invoice_schedule
262
+ # The schedule that the customer will be invoiced for this commit.
263
+ #
264
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule, nil]
265
+ optional :invoice_schedule,
266
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule }
267
+
268
+ # @!attribute name
269
+ #
270
+ # @return [String, nil]
271
+ optional :name, String
272
+
273
+ # @!attribute priority
274
+ # If multiple credits or commits are applicable, the one with the lower priority
275
+ # will apply first.
276
+ #
277
+ # @return [Float, nil]
278
+ optional :priority, Float
279
+
280
+ # @!attribute rate_type
281
+ #
282
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::RateType, nil]
283
+ optional :rate_type,
284
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::RateType }
285
+
286
+ # @!attribute rollover_fraction
287
+ #
288
+ # @return [Float, nil]
289
+ optional :rollover_fraction, Float
290
+
291
+ # @!attribute specifiers
292
+ # List of filters that determine what kind of customer usage draws down a commit
293
+ # or credit. A customer's usage needs to meet the condition of at least one of the
294
+ # specifiers to contribute to a commit's or credit's drawdown.
295
+ #
296
+ # @return [Array<MetronomeSDK::Models::CommitSpecifier>, nil]
297
+ optional :specifiers, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::CommitSpecifier] }
298
+
299
+ # @!method initialize(id:, product:, type:, access_schedule: nil, applicable_product_ids: nil, applicable_product_tags: nil, custom_fields: nil, description: nil, invoice_schedule: nil, name: nil, priority: nil, rate_type: nil, rollover_fraction: nil, specifiers: nil)
300
+ # Some parameter documentations has been truncated, see
301
+ # {MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit} for more
302
+ # details.
303
+ #
304
+ # @param id [String]
305
+ #
306
+ # @param product [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::Product]
307
+ #
308
+ # @param type [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::Type]
309
+ #
310
+ # @param access_schedule [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule] The schedule that the customer will gain access to the credits purposed with thi
311
+ #
312
+ # @param applicable_product_ids [Array<String>]
313
+ #
314
+ # @param applicable_product_tags [Array<String>]
315
+ #
316
+ # @param custom_fields [Hash{Symbol=>String}] Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
317
+ #
318
+ # @param description [String]
319
+ #
320
+ # @param invoice_schedule [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule] The schedule that the customer will be invoiced for this commit.
321
+ #
322
+ # @param name [String]
323
+ #
324
+ # @param priority [Float] If multiple credits or commits are applicable, the one with the lower priority w
325
+ #
326
+ # @param rate_type [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::RateType]
327
+ #
328
+ # @param rollover_fraction [Float]
329
+ #
330
+ # @param specifiers [Array<MetronomeSDK::Models::CommitSpecifier>] List of filters that determine what kind of customer usage draws down a commit o
331
+
332
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit#product
333
+ class Product < MetronomeSDK::Internal::Type::BaseModel
334
+ # @!attribute id
335
+ #
336
+ # @return [String]
337
+ required :id, String
338
+
339
+ # @!attribute name
340
+ #
341
+ # @return [String]
342
+ required :name, String
343
+
344
+ # @!method initialize(id:, name:)
345
+ # @param id [String]
346
+ # @param name [String]
347
+ end
348
+
349
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit#type
350
+ module Type
351
+ extend MetronomeSDK::Internal::Type::Enum
352
+
353
+ PREPAID = :PREPAID
354
+ POSTPAID = :POSTPAID
355
+
356
+ # @!method self.values
357
+ # @return [Array<Symbol>]
358
+ end
359
+
360
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit#access_schedule
361
+ class AccessSchedule < MetronomeSDK::Internal::Type::BaseModel
362
+ # @!attribute credit_type
363
+ #
364
+ # @return [MetronomeSDK::Models::CreditTypeData]
365
+ required :credit_type, -> { MetronomeSDK::CreditTypeData }
366
+
367
+ # @!attribute schedule_items
368
+ #
369
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem>]
370
+ required :schedule_items,
371
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem] }
372
+
373
+ # @!method initialize(credit_type:, schedule_items:)
374
+ # The schedule that the customer will gain access to the credits purposed with
375
+ # this commit.
376
+ #
377
+ # @param credit_type [MetronomeSDK::Models::CreditTypeData]
378
+ # @param schedule_items [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem>]
379
+
380
+ class ScheduleItem < MetronomeSDK::Internal::Type::BaseModel
381
+ # @!attribute id
382
+ #
383
+ # @return [String]
384
+ required :id, String
385
+
386
+ # @!attribute amount
387
+ #
388
+ # @return [Float]
389
+ required :amount, Float
390
+
391
+ # @!attribute duration
392
+ #
393
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::Duration]
394
+ required :duration,
395
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::Duration }
396
+
397
+ # @!attribute starting_at_offset
398
+ #
399
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::StartingAtOffset]
400
+ required :starting_at_offset,
401
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::StartingAtOffset }
402
+
403
+ # @!method initialize(id:, amount:, duration:, starting_at_offset:)
404
+ # @param id [String]
405
+ # @param amount [Float]
406
+ # @param duration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::Duration]
407
+ # @param starting_at_offset [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::StartingAtOffset]
408
+
409
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem#duration
410
+ class Duration < MetronomeSDK::Internal::Type::BaseModel
411
+ # @!attribute unit
412
+ #
413
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::Duration::Unit]
414
+ required :unit,
415
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::Duration::Unit }
416
+
417
+ # @!attribute value
418
+ #
419
+ # @return [Integer]
420
+ required :value, Integer
421
+
422
+ # @!method initialize(unit:, value:)
423
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::Duration::Unit]
424
+ # @param value [Integer]
425
+
426
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::Duration#unit
427
+ module Unit
428
+ extend MetronomeSDK::Internal::Type::Enum
429
+
430
+ DAYS = :DAYS
431
+ WEEKS = :WEEKS
432
+ MONTHS = :MONTHS
433
+ YEARS = :YEARS
434
+
435
+ # @!method self.values
436
+ # @return [Array<Symbol>]
437
+ end
438
+ end
439
+
440
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem#starting_at_offset
441
+ class StartingAtOffset < MetronomeSDK::Internal::Type::BaseModel
442
+ # @!attribute unit
443
+ #
444
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::StartingAtOffset::Unit]
445
+ required :unit,
446
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::StartingAtOffset::Unit }
447
+
448
+ # @!attribute value
449
+ #
450
+ # @return [Integer]
451
+ required :value, Integer
452
+
453
+ # @!method initialize(unit:, value:)
454
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::StartingAtOffset::Unit]
455
+ # @param value [Integer]
456
+
457
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::AccessSchedule::ScheduleItem::StartingAtOffset#unit
458
+ module Unit
459
+ extend MetronomeSDK::Internal::Type::Enum
460
+
461
+ DAYS = :DAYS
462
+ WEEKS = :WEEKS
463
+ MONTHS = :MONTHS
464
+ YEARS = :YEARS
465
+
466
+ # @!method self.values
467
+ # @return [Array<Symbol>]
468
+ end
469
+ end
470
+ end
471
+ end
472
+
473
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit#invoice_schedule
474
+ class InvoiceSchedule < MetronomeSDK::Internal::Type::BaseModel
475
+ # @!attribute credit_type
476
+ #
477
+ # @return [MetronomeSDK::Models::CreditTypeData]
478
+ required :credit_type, -> { MetronomeSDK::CreditTypeData }
479
+
480
+ # @!attribute do_not_invoice
481
+ # If true, this schedule will not generate an invoice.
482
+ #
483
+ # @return [Boolean]
484
+ required :do_not_invoice, MetronomeSDK::Internal::Type::Boolean
485
+
486
+ # @!attribute schedule_items
487
+ #
488
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem>]
489
+ required :schedule_items,
490
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem] }
491
+
492
+ # @!method initialize(credit_type:, do_not_invoice:, schedule_items:)
493
+ # The schedule that the customer will be invoiced for this commit.
494
+ #
495
+ # @param credit_type [MetronomeSDK::Models::CreditTypeData]
496
+ #
497
+ # @param do_not_invoice [Boolean] If true, this schedule will not generate an invoice.
498
+ #
499
+ # @param schedule_items [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem>]
500
+
501
+ class ScheduleItem < MetronomeSDK::Internal::Type::BaseModel
502
+ # @!attribute id
503
+ #
504
+ # @return [String]
505
+ required :id, String
506
+
507
+ # @!attribute date_offset
508
+ #
509
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem::DateOffset]
510
+ required :date_offset,
511
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem::DateOffset }
512
+
513
+ # @!attribute quantity
514
+ #
515
+ # @return [Float]
516
+ required :quantity, Float
517
+
518
+ # @!attribute unit_price
519
+ #
520
+ # @return [Float]
521
+ required :unit_price, Float
522
+
523
+ # @!method initialize(id:, date_offset:, quantity:, unit_price:)
524
+ # @param id [String]
525
+ # @param date_offset [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem::DateOffset]
526
+ # @param quantity [Float]
527
+ # @param unit_price [Float]
528
+
529
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem#date_offset
530
+ class DateOffset < MetronomeSDK::Internal::Type::BaseModel
531
+ # @!attribute unit
532
+ #
533
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem::DateOffset::Unit]
534
+ required :unit,
535
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem::DateOffset::Unit }
536
+
537
+ # @!attribute value
538
+ #
539
+ # @return [Integer]
540
+ required :value, Integer
541
+
542
+ # @!method initialize(unit:, value:)
543
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem::DateOffset::Unit]
544
+ # @param value [Integer]
545
+
546
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit::InvoiceSchedule::ScheduleItem::DateOffset#unit
547
+ module Unit
548
+ extend MetronomeSDK::Internal::Type::Enum
549
+
550
+ DAYS = :DAYS
551
+ WEEKS = :WEEKS
552
+ MONTHS = :MONTHS
553
+ YEARS = :YEARS
554
+
555
+ # @!method self.values
556
+ # @return [Array<Symbol>]
557
+ end
558
+ end
559
+ end
560
+ end
561
+
562
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Commit#rate_type
563
+ module RateType
564
+ extend MetronomeSDK::Internal::Type::Enum
565
+
566
+ COMMIT_RATE = :COMMIT_RATE
567
+ LIST_RATE = :LIST_RATE
568
+
569
+ # @!method self.values
570
+ # @return [Array<Symbol>]
571
+ end
572
+ end
573
+
574
+ class Override < MetronomeSDK::Internal::Type::BaseModel
575
+ # @!attribute id
576
+ #
577
+ # @return [String]
578
+ required :id, String
579
+
580
+ # @!attribute override_specifiers
581
+ #
582
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::OverrideSpecifier>]
583
+ required :override_specifiers,
584
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::OverrideSpecifier] }
585
+
586
+ # @!attribute starting_at_offset
587
+ #
588
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::StartingAtOffset]
589
+ required :starting_at_offset,
590
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::StartingAtOffset }
591
+
592
+ # @!attribute applicable_product_tags
593
+ #
594
+ # @return [Array<String>, nil]
595
+ optional :applicable_product_tags, MetronomeSDK::Internal::Type::ArrayOf[String]
596
+
597
+ # @!attribute duration
598
+ #
599
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Duration, nil]
600
+ optional :duration, -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Duration }
601
+
602
+ # @!attribute entitled
603
+ #
604
+ # @return [Boolean, nil]
605
+ optional :entitled, MetronomeSDK::Internal::Type::Boolean
606
+
607
+ # @!attribute is_commit_specific
608
+ #
609
+ # @return [Boolean, nil]
610
+ optional :is_commit_specific, MetronomeSDK::Internal::Type::Boolean
611
+
612
+ # @!attribute multiplier
613
+ #
614
+ # @return [Float, nil]
615
+ optional :multiplier, Float
616
+
617
+ # @!attribute override_tiers
618
+ #
619
+ # @return [Array<MetronomeSDK::Models::OverrideTier>, nil]
620
+ optional :override_tiers, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::OverrideTier] }
621
+
622
+ # @!attribute overwrite_rate
623
+ #
624
+ # @return [MetronomeSDK::Models::OverwriteRate, nil]
625
+ optional :overwrite_rate, -> { MetronomeSDK::OverwriteRate }
626
+
627
+ # @!attribute priority
628
+ #
629
+ # @return [Float, nil]
630
+ optional :priority, Float
631
+
632
+ # @!attribute product
633
+ #
634
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Product, nil]
635
+ optional :product, -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Product }
636
+
637
+ # @!attribute target
638
+ #
639
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Target, nil]
640
+ optional :target, enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Target }
641
+
642
+ # @!attribute type
643
+ #
644
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Type, nil]
645
+ optional :type, enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Type }
646
+
647
+ # @!method initialize(id:, override_specifiers:, starting_at_offset:, applicable_product_tags: nil, duration: nil, entitled: nil, is_commit_specific: nil, multiplier: nil, override_tiers: nil, overwrite_rate: nil, priority: nil, product: nil, target: nil, type: nil)
648
+ # @param id [String]
649
+ # @param override_specifiers [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::OverrideSpecifier>]
650
+ # @param starting_at_offset [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::StartingAtOffset]
651
+ # @param applicable_product_tags [Array<String>]
652
+ # @param duration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Duration]
653
+ # @param entitled [Boolean]
654
+ # @param is_commit_specific [Boolean]
655
+ # @param multiplier [Float]
656
+ # @param override_tiers [Array<MetronomeSDK::Models::OverrideTier>]
657
+ # @param overwrite_rate [MetronomeSDK::Models::OverwriteRate]
658
+ # @param priority [Float]
659
+ # @param product [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Product]
660
+ # @param target [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Target]
661
+ # @param type [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Type]
662
+
663
+ class OverrideSpecifier < MetronomeSDK::Internal::Type::BaseModel
664
+ # @!attribute billing_frequency
665
+ #
666
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::OverrideSpecifier::BillingFrequency, nil]
667
+ optional :billing_frequency,
668
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::OverrideSpecifier::BillingFrequency }
669
+
670
+ # @!attribute commit_template_ids
671
+ #
672
+ # @return [Array<String>, nil]
673
+ optional :commit_template_ids, MetronomeSDK::Internal::Type::ArrayOf[String]
674
+
675
+ # @!attribute presentation_group_values
676
+ #
677
+ # @return [Hash{Symbol=>String, nil}, nil]
678
+ optional :presentation_group_values, MetronomeSDK::Internal::Type::HashOf[String, nil?: true]
679
+
680
+ # @!attribute pricing_group_values
681
+ #
682
+ # @return [Hash{Symbol=>String}, nil]
683
+ optional :pricing_group_values, MetronomeSDK::Internal::Type::HashOf[String]
684
+
685
+ # @!attribute product_id
686
+ #
687
+ # @return [String, nil]
688
+ optional :product_id, String
689
+
690
+ # @!attribute product_tags
691
+ #
692
+ # @return [Array<String>, nil]
693
+ optional :product_tags, MetronomeSDK::Internal::Type::ArrayOf[String]
694
+
695
+ # @!attribute recurring_commit_template_ids
696
+ #
697
+ # @return [Array<String>, nil]
698
+ optional :recurring_commit_template_ids, MetronomeSDK::Internal::Type::ArrayOf[String]
699
+
700
+ # @!attribute recurring_credit_template_ids
701
+ #
702
+ # @return [Array<String>, nil]
703
+ optional :recurring_credit_template_ids, MetronomeSDK::Internal::Type::ArrayOf[String]
704
+
705
+ # @!method initialize(billing_frequency: nil, commit_template_ids: nil, presentation_group_values: nil, pricing_group_values: nil, product_id: nil, product_tags: nil, recurring_commit_template_ids: nil, recurring_credit_template_ids: nil)
706
+ # @param billing_frequency [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::OverrideSpecifier::BillingFrequency]
707
+ # @param commit_template_ids [Array<String>]
708
+ # @param presentation_group_values [Hash{Symbol=>String, nil}]
709
+ # @param pricing_group_values [Hash{Symbol=>String}]
710
+ # @param product_id [String]
711
+ # @param product_tags [Array<String>]
712
+ # @param recurring_commit_template_ids [Array<String>]
713
+ # @param recurring_credit_template_ids [Array<String>]
714
+
715
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::OverrideSpecifier#billing_frequency
716
+ module BillingFrequency
717
+ extend MetronomeSDK::Internal::Type::Enum
718
+
719
+ MONTHLY = :MONTHLY
720
+ QUARTERLY = :QUARTERLY
721
+ ANNUAL = :ANNUAL
722
+ WEEKLY = :WEEKLY
723
+
724
+ # @!method self.values
725
+ # @return [Array<Symbol>]
726
+ end
727
+ end
728
+
729
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override#starting_at_offset
730
+ class StartingAtOffset < MetronomeSDK::Internal::Type::BaseModel
731
+ # @!attribute unit
732
+ #
733
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::StartingAtOffset::Unit]
734
+ required :unit,
735
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::StartingAtOffset::Unit }
736
+
737
+ # @!attribute value
738
+ #
739
+ # @return [Integer]
740
+ required :value, Integer
741
+
742
+ # @!method initialize(unit:, value:)
743
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::StartingAtOffset::Unit]
744
+ # @param value [Integer]
745
+
746
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::StartingAtOffset#unit
747
+ module Unit
748
+ extend MetronomeSDK::Internal::Type::Enum
749
+
750
+ DAYS = :DAYS
751
+ WEEKS = :WEEKS
752
+ MONTHS = :MONTHS
753
+ YEARS = :YEARS
754
+
755
+ # @!method self.values
756
+ # @return [Array<Symbol>]
757
+ end
758
+ end
759
+
760
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override#duration
761
+ class Duration < MetronomeSDK::Internal::Type::BaseModel
762
+ # @!attribute unit
763
+ #
764
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Duration::Unit]
765
+ required :unit,
766
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Duration::Unit }
767
+
768
+ # @!attribute value
769
+ #
770
+ # @return [Integer]
771
+ required :value, Integer
772
+
773
+ # @!method initialize(unit:, value:)
774
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Duration::Unit]
775
+ # @param value [Integer]
776
+
777
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override::Duration#unit
778
+ module Unit
779
+ extend MetronomeSDK::Internal::Type::Enum
780
+
781
+ DAYS = :DAYS
782
+ WEEKS = :WEEKS
783
+ MONTHS = :MONTHS
784
+ YEARS = :YEARS
785
+
786
+ # @!method self.values
787
+ # @return [Array<Symbol>]
788
+ end
789
+ end
790
+
791
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override#product
792
+ class Product < MetronomeSDK::Internal::Type::BaseModel
793
+ # @!attribute id
794
+ #
795
+ # @return [String]
796
+ required :id, String
797
+
798
+ # @!attribute name
799
+ #
800
+ # @return [String]
801
+ required :name, String
802
+
803
+ # @!method initialize(id:, name:)
804
+ # @param id [String]
805
+ # @param name [String]
806
+ end
807
+
808
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override#target
809
+ module Target
810
+ extend MetronomeSDK::Internal::Type::Enum
811
+
812
+ COMMIT_RATE = :COMMIT_RATE
813
+ LIST_RATE = :LIST_RATE
814
+
815
+ # @!method self.values
816
+ # @return [Array<Symbol>]
817
+ end
818
+
819
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Override#type
820
+ module Type
821
+ extend MetronomeSDK::Internal::Type::Enum
822
+
823
+ OVERWRITE = :OVERWRITE
824
+ MULTIPLIER = :MULTIPLIER
825
+ TIERED = :TIERED
826
+
827
+ # @!method self.values
828
+ # @return [Array<Symbol>]
829
+ end
830
+ end
831
+
832
+ class ScheduledCharge < MetronomeSDK::Internal::Type::BaseModel
833
+ # @!attribute id
834
+ #
835
+ # @return [String]
836
+ required :id, String
837
+
838
+ # @!attribute product
839
+ #
840
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Product]
841
+ required :product,
842
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Product }
843
+
844
+ # @!attribute schedule
845
+ #
846
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule]
847
+ required :schedule,
848
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule }
849
+
850
+ # @!attribute custom_fields
851
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
852
+ #
853
+ # @return [Hash{Symbol=>String}, nil]
854
+ optional :custom_fields, MetronomeSDK::Internal::Type::HashOf[String]
855
+
856
+ # @!attribute description
857
+ #
858
+ # @return [String, nil]
859
+ optional :description, String
860
+
861
+ # @!attribute name
862
+ #
863
+ # @return [String, nil]
864
+ optional :name, String
865
+
866
+ # @!method initialize(id:, product:, schedule:, custom_fields: nil, description: nil, name: nil)
867
+ # @param id [String]
868
+ #
869
+ # @param product [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Product]
870
+ #
871
+ # @param schedule [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule]
872
+ #
873
+ # @param custom_fields [Hash{Symbol=>String}] Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
874
+ #
875
+ # @param description [String]
876
+ #
877
+ # @param name [String]
878
+
879
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge#product
880
+ class Product < MetronomeSDK::Internal::Type::BaseModel
881
+ # @!attribute id
882
+ #
883
+ # @return [String]
884
+ required :id, String
885
+
886
+ # @!attribute name
887
+ #
888
+ # @return [String]
889
+ required :name, String
890
+
891
+ # @!method initialize(id:, name:)
892
+ # @param id [String]
893
+ # @param name [String]
894
+ end
895
+
896
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge#schedule
897
+ class Schedule < MetronomeSDK::Internal::Type::BaseModel
898
+ # @!attribute credit_type
899
+ #
900
+ # @return [MetronomeSDK::Models::CreditTypeData]
901
+ required :credit_type, -> { MetronomeSDK::CreditTypeData }
902
+
903
+ # @!attribute schedule_items
904
+ #
905
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem>]
906
+ required :schedule_items,
907
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem] }
908
+
909
+ # @!method initialize(credit_type:, schedule_items:)
910
+ # @param credit_type [MetronomeSDK::Models::CreditTypeData]
911
+ # @param schedule_items [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem>]
912
+
913
+ class ScheduleItem < MetronomeSDK::Internal::Type::BaseModel
914
+ # @!attribute id
915
+ #
916
+ # @return [String]
917
+ required :id, String
918
+
919
+ # @!attribute date_offset
920
+ #
921
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem::DateOffset]
922
+ required :date_offset,
923
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem::DateOffset }
924
+
925
+ # @!attribute quantity
926
+ #
927
+ # @return [Float]
928
+ required :quantity, Float
929
+
930
+ # @!attribute unit_price
931
+ #
932
+ # @return [Float]
933
+ required :unit_price, Float
934
+
935
+ # @!method initialize(id:, date_offset:, quantity:, unit_price:)
936
+ # @param id [String]
937
+ # @param date_offset [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem::DateOffset]
938
+ # @param quantity [Float]
939
+ # @param unit_price [Float]
940
+
941
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem#date_offset
942
+ class DateOffset < MetronomeSDK::Internal::Type::BaseModel
943
+ # @!attribute unit
944
+ #
945
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem::DateOffset::Unit]
946
+ required :unit,
947
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem::DateOffset::Unit }
948
+
949
+ # @!attribute value
950
+ #
951
+ # @return [Integer]
952
+ required :value, Integer
953
+
954
+ # @!method initialize(unit:, value:)
955
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem::DateOffset::Unit]
956
+ # @param value [Integer]
957
+
958
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::ScheduledCharge::Schedule::ScheduleItem::DateOffset#unit
959
+ module Unit
960
+ extend MetronomeSDK::Internal::Type::Enum
961
+
962
+ DAYS = :DAYS
963
+ WEEKS = :WEEKS
964
+ MONTHS = :MONTHS
965
+ YEARS = :YEARS
966
+
967
+ # @!method self.values
968
+ # @return [Array<Symbol>]
969
+ end
970
+ end
971
+ end
972
+ end
973
+ end
974
+
975
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data#usage_statement_schedule
976
+ class UsageStatementSchedule < MetronomeSDK::Internal::Type::BaseModel
977
+ # @!attribute frequency
978
+ #
979
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::UsageStatementSchedule::Frequency]
980
+ required :frequency,
981
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::UsageStatementSchedule::Frequency }
982
+
983
+ # @!method initialize(frequency:)
984
+ # @param frequency [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::UsageStatementSchedule::Frequency]
985
+
986
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::UsageStatementSchedule#frequency
987
+ module Frequency
988
+ extend MetronomeSDK::Internal::Type::Enum
989
+
990
+ MONTHLY = :MONTHLY
991
+ QUARTERLY = :QUARTERLY
992
+ ANNUAL = :ANNUAL
993
+ WEEKLY = :WEEKLY
994
+
995
+ # @!method self.values
996
+ # @return [Array<Symbol>]
997
+ end
998
+ end
999
+
1000
+ class Alias < MetronomeSDK::Internal::Type::BaseModel
1001
+ # @!attribute name
1002
+ #
1003
+ # @return [String]
1004
+ required :name, String
1005
+
1006
+ # @!attribute ending_before
1007
+ #
1008
+ # @return [Time, nil]
1009
+ optional :ending_before, Time
1010
+
1011
+ # @!attribute starting_at
1012
+ #
1013
+ # @return [Time, nil]
1014
+ optional :starting_at, Time
1015
+
1016
+ # @!method initialize(name:, ending_before: nil, starting_at: nil)
1017
+ # @param name [String]
1018
+ # @param ending_before [Time]
1019
+ # @param starting_at [Time]
1020
+ end
1021
+
1022
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data#billing_provider
1023
+ module BillingProvider
1024
+ extend MetronomeSDK::Internal::Type::Enum
1025
+
1026
+ AWS_MARKETPLACE = :aws_marketplace
1027
+ STRIPE = :stripe
1028
+ NETSUITE = :netsuite
1029
+ CUSTOM = :custom
1030
+ AZURE_MARKETPLACE = :azure_marketplace
1031
+ QUICKBOOKS_ONLINE = :quickbooks_online
1032
+ WORKDAY = :workday
1033
+ GCP_MARKETPLACE = :gcp_marketplace
1034
+ METRONOME = :metronome
1035
+
1036
+ # @!method self.values
1037
+ # @return [Array<Symbol>]
1038
+ end
1039
+
1040
+ class Credit < MetronomeSDK::Internal::Type::BaseModel
1041
+ # @!attribute id
1042
+ #
1043
+ # @return [String]
1044
+ required :id, String
1045
+
1046
+ # @!attribute product
1047
+ #
1048
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::Product]
1049
+ required :product, -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::Product }
1050
+
1051
+ # @!attribute access_schedule
1052
+ #
1053
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule, nil]
1054
+ optional :access_schedule,
1055
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule }
1056
+
1057
+ # @!attribute applicable_product_ids
1058
+ #
1059
+ # @return [Array<String>, nil]
1060
+ optional :applicable_product_ids, MetronomeSDK::Internal::Type::ArrayOf[String]
1061
+
1062
+ # @!attribute applicable_product_tags
1063
+ #
1064
+ # @return [Array<String>, nil]
1065
+ optional :applicable_product_tags, MetronomeSDK::Internal::Type::ArrayOf[String]
1066
+
1067
+ # @!attribute custom_fields
1068
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
1069
+ #
1070
+ # @return [Hash{Symbol=>String}, nil]
1071
+ optional :custom_fields, MetronomeSDK::Internal::Type::HashOf[String]
1072
+
1073
+ # @!attribute description
1074
+ #
1075
+ # @return [String, nil]
1076
+ optional :description, String
1077
+
1078
+ # @!attribute name
1079
+ #
1080
+ # @return [String, nil]
1081
+ optional :name, String
1082
+
1083
+ # @!attribute priority
1084
+ #
1085
+ # @return [Float, nil]
1086
+ optional :priority, Float
1087
+
1088
+ # @!attribute rate_type
1089
+ #
1090
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::RateType, nil]
1091
+ optional :rate_type,
1092
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::RateType }
1093
+
1094
+ # @!attribute specifiers
1095
+ # List of filters that determine what kind of customer usage draws down a commit
1096
+ # or credit. A customer's usage needs to meet the condition of at least one of the
1097
+ # specifiers to contribute to a commit's or credit's drawdown.
1098
+ #
1099
+ # @return [Array<MetronomeSDK::Models::CommitSpecifier>, nil]
1100
+ optional :specifiers, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::CommitSpecifier] }
1101
+
1102
+ # @!method initialize(id:, product:, access_schedule: nil, applicable_product_ids: nil, applicable_product_tags: nil, custom_fields: nil, description: nil, name: nil, priority: nil, rate_type: nil, specifiers: nil)
1103
+ # Some parameter documentations has been truncated, see
1104
+ # {MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit} for more
1105
+ # details.
1106
+ #
1107
+ # @param id [String]
1108
+ #
1109
+ # @param product [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::Product]
1110
+ #
1111
+ # @param access_schedule [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule]
1112
+ #
1113
+ # @param applicable_product_ids [Array<String>]
1114
+ #
1115
+ # @param applicable_product_tags [Array<String>]
1116
+ #
1117
+ # @param custom_fields [Hash{Symbol=>String}] Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
1118
+ #
1119
+ # @param description [String]
1120
+ #
1121
+ # @param name [String]
1122
+ #
1123
+ # @param priority [Float]
1124
+ #
1125
+ # @param rate_type [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::RateType]
1126
+ #
1127
+ # @param specifiers [Array<MetronomeSDK::Models::CommitSpecifier>] List of filters that determine what kind of customer usage draws down a commit o
1128
+
1129
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit#product
1130
+ class Product < MetronomeSDK::Internal::Type::BaseModel
1131
+ # @!attribute id
1132
+ #
1133
+ # @return [String]
1134
+ required :id, String
1135
+
1136
+ # @!attribute name
1137
+ #
1138
+ # @return [String]
1139
+ required :name, String
1140
+
1141
+ # @!method initialize(id:, name:)
1142
+ # @param id [String]
1143
+ # @param name [String]
1144
+ end
1145
+
1146
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit#access_schedule
1147
+ class AccessSchedule < MetronomeSDK::Internal::Type::BaseModel
1148
+ # @!attribute credit_type
1149
+ #
1150
+ # @return [MetronomeSDK::Models::CreditTypeData]
1151
+ required :credit_type, -> { MetronomeSDK::CreditTypeData }
1152
+
1153
+ # @!attribute schedule_items
1154
+ #
1155
+ # @return [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem>]
1156
+ required :schedule_items,
1157
+ -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem] }
1158
+
1159
+ # @!method initialize(credit_type:, schedule_items:)
1160
+ # @param credit_type [MetronomeSDK::Models::CreditTypeData]
1161
+ # @param schedule_items [Array<MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem>]
1162
+
1163
+ class ScheduleItem < MetronomeSDK::Internal::Type::BaseModel
1164
+ # @!attribute id
1165
+ #
1166
+ # @return [String]
1167
+ required :id, String
1168
+
1169
+ # @!attribute amount
1170
+ #
1171
+ # @return [Float]
1172
+ required :amount, Float
1173
+
1174
+ # @!attribute duration
1175
+ #
1176
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::Duration]
1177
+ required :duration,
1178
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::Duration }
1179
+
1180
+ # @!attribute starting_at_offset
1181
+ #
1182
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::StartingAtOffset]
1183
+ required :starting_at_offset,
1184
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::StartingAtOffset }
1185
+
1186
+ # @!method initialize(id:, amount:, duration:, starting_at_offset:)
1187
+ # @param id [String]
1188
+ # @param amount [Float]
1189
+ # @param duration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::Duration]
1190
+ # @param starting_at_offset [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::StartingAtOffset]
1191
+
1192
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem#duration
1193
+ class Duration < MetronomeSDK::Internal::Type::BaseModel
1194
+ # @!attribute unit
1195
+ #
1196
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::Duration::Unit]
1197
+ required :unit,
1198
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::Duration::Unit }
1199
+
1200
+ # @!attribute value
1201
+ #
1202
+ # @return [Integer]
1203
+ required :value, Integer
1204
+
1205
+ # @!method initialize(unit:, value:)
1206
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::Duration::Unit]
1207
+ # @param value [Integer]
1208
+
1209
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::Duration#unit
1210
+ module Unit
1211
+ extend MetronomeSDK::Internal::Type::Enum
1212
+
1213
+ DAYS = :DAYS
1214
+ WEEKS = :WEEKS
1215
+ MONTHS = :MONTHS
1216
+ YEARS = :YEARS
1217
+
1218
+ # @!method self.values
1219
+ # @return [Array<Symbol>]
1220
+ end
1221
+ end
1222
+
1223
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem#starting_at_offset
1224
+ class StartingAtOffset < MetronomeSDK::Internal::Type::BaseModel
1225
+ # @!attribute unit
1226
+ #
1227
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::StartingAtOffset::Unit]
1228
+ required :unit,
1229
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::StartingAtOffset::Unit }
1230
+
1231
+ # @!attribute value
1232
+ #
1233
+ # @return [Integer]
1234
+ required :value, Integer
1235
+
1236
+ # @!method initialize(unit:, value:)
1237
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::StartingAtOffset::Unit]
1238
+ # @param value [Integer]
1239
+
1240
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit::AccessSchedule::ScheduleItem::StartingAtOffset#unit
1241
+ module Unit
1242
+ extend MetronomeSDK::Internal::Type::Enum
1243
+
1244
+ DAYS = :DAYS
1245
+ WEEKS = :WEEKS
1246
+ MONTHS = :MONTHS
1247
+ YEARS = :YEARS
1248
+
1249
+ # @!method self.values
1250
+ # @return [Array<Symbol>]
1251
+ end
1252
+ end
1253
+ end
1254
+ end
1255
+
1256
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Credit#rate_type
1257
+ module RateType
1258
+ extend MetronomeSDK::Internal::Type::Enum
1259
+
1260
+ COMMIT_RATE = :COMMIT_RATE
1261
+ LIST_RATE = :LIST_RATE
1262
+
1263
+ # @!method self.values
1264
+ # @return [Array<Symbol>]
1265
+ end
1266
+ end
1267
+
1268
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data#delivery_method
1269
+ module DeliveryMethod
1270
+ extend MetronomeSDK::Internal::Type::Enum
1271
+
1272
+ DIRECT_TO_BILLING_PROVIDER = :direct_to_billing_provider
1273
+ AWS_SQS = :aws_sqs
1274
+ TACKLE = :tackle
1275
+ AWS_SNS = :aws_sns
1276
+
1277
+ # @!method self.values
1278
+ # @return [Array<Symbol>]
1279
+ end
1280
+
1281
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data#duration
1282
+ class Duration < MetronomeSDK::Internal::Type::BaseModel
1283
+ # @!attribute unit
1284
+ #
1285
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Duration::Unit]
1286
+ required :unit, enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Duration::Unit }
1287
+
1288
+ # @!attribute value
1289
+ #
1290
+ # @return [Integer]
1291
+ required :value, Integer
1292
+
1293
+ # @!method initialize(unit:, value:)
1294
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Duration::Unit]
1295
+ # @param value [Integer]
1296
+
1297
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Duration#unit
1298
+ module Unit
1299
+ extend MetronomeSDK::Internal::Type::Enum
1300
+
1301
+ DAYS = :DAYS
1302
+ WEEKS = :WEEKS
1303
+ MONTHS = :MONTHS
1304
+ YEARS = :YEARS
1305
+
1306
+ # @!method self.values
1307
+ # @return [Array<Symbol>]
1308
+ end
1309
+ end
1310
+
1311
+ # Defaults to LOWEST_MULTIPLIER, which applies the greatest discount to list
1312
+ # prices automatically. EXPLICIT prioritization requires specifying priorities for
1313
+ # each multiplier; the one with the lowest priority value will be prioritized
1314
+ # first.
1315
+ #
1316
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data#multiplier_override_prioritization
1317
+ module MultiplierOverridePrioritization
1318
+ extend MetronomeSDK::Internal::Type::Enum
1319
+
1320
+ LOWEST_MULTIPLIER = :LOWEST_MULTIPLIER
1321
+ EXPLICIT = :EXPLICIT
1322
+
1323
+ # @!method self.values
1324
+ # @return [Array<Symbol>]
1325
+ end
1326
+
1327
+ class RecurringCommit < MetronomeSDK::Internal::Type::BaseModel
1328
+ # @!attribute id
1329
+ #
1330
+ # @return [String]
1331
+ required :id, String
1332
+
1333
+ # @!attribute access_amount
1334
+ # The amount of commit to grant.
1335
+ #
1336
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::AccessAmount]
1337
+ required :access_amount,
1338
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::AccessAmount }
1339
+
1340
+ # @!attribute commit_duration
1341
+ # The amount of time each of the created commits will be valid for
1342
+ #
1343
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::CommitDuration]
1344
+ required :commit_duration,
1345
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::CommitDuration }
1346
+
1347
+ # @!attribute priority
1348
+ #
1349
+ # @return [Float]
1350
+ required :priority, Float
1351
+
1352
+ # @!attribute product
1353
+ #
1354
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Product]
1355
+ required :product,
1356
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Product }
1357
+
1358
+ # @!attribute rate_type
1359
+ # Whether the created commits will use the commit rate or list rate
1360
+ #
1361
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::RateType]
1362
+ required :rate_type,
1363
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::RateType }
1364
+
1365
+ # @!attribute starting_at_offset
1366
+ # Offset relative to the contract start date that determines the start time for
1367
+ # the first commit
1368
+ #
1369
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::StartingAtOffset]
1370
+ required :starting_at_offset,
1371
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::StartingAtOffset }
1372
+
1373
+ # @!attribute applicable_product_ids
1374
+ # Will be passed down to the individual commits
1375
+ #
1376
+ # @return [Array<String>, nil]
1377
+ optional :applicable_product_ids, MetronomeSDK::Internal::Type::ArrayOf[String]
1378
+
1379
+ # @!attribute applicable_product_tags
1380
+ # Will be passed down to the individual commits
1381
+ #
1382
+ # @return [Array<String>, nil]
1383
+ optional :applicable_product_tags, MetronomeSDK::Internal::Type::ArrayOf[String]
1384
+
1385
+ # @!attribute description
1386
+ #
1387
+ # @return [String, nil]
1388
+ optional :description, String
1389
+
1390
+ # @!attribute duration
1391
+ # Offset relative to the recurring credit start that determines when the contract
1392
+ # will stop creating recurring commits. optional
1393
+ #
1394
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Duration, nil]
1395
+ optional :duration,
1396
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Duration }
1397
+
1398
+ # @!attribute invoice_amount
1399
+ # The amount the customer should be billed for the commit.
1400
+ #
1401
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::InvoiceAmount, nil]
1402
+ optional :invoice_amount,
1403
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::InvoiceAmount }
1404
+
1405
+ # @!attribute name
1406
+ #
1407
+ # @return [String, nil]
1408
+ optional :name, String
1409
+
1410
+ # @!attribute proration
1411
+ # Determines whether the first and last commit will be prorated. If not provided,
1412
+ # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
1413
+ #
1414
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Proration, nil]
1415
+ optional :proration,
1416
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Proration }
1417
+
1418
+ # @!attribute recurrence_frequency
1419
+ # The frequency at which the recurring commits will be created. If not provided: -
1420
+ # The commits will be created on the usage invoice frequency. If provided: - The
1421
+ # period defined in the duration will correspond to this frequency. - Commits will
1422
+ # be created aligned with the recurring commit's starting_at rather than the usage
1423
+ # invoice dates.
1424
+ #
1425
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::RecurrenceFrequency, nil]
1426
+ optional :recurrence_frequency,
1427
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::RecurrenceFrequency }
1428
+
1429
+ # @!attribute rollover_fraction
1430
+ # Will be passed down to the individual commits. This controls how much of an
1431
+ # individual unexpired commit will roll over upon contract transition. Must be
1432
+ # between 0 and 1.
1433
+ #
1434
+ # @return [Float, nil]
1435
+ optional :rollover_fraction, Float
1436
+
1437
+ # @!attribute specifiers
1438
+ # List of filters that determine what kind of customer usage draws down a commit
1439
+ # or credit. A customer's usage needs to meet the condition of at least one of the
1440
+ # specifiers to contribute to a commit's or credit's drawdown.
1441
+ #
1442
+ # @return [Array<MetronomeSDK::Models::CommitSpecifier>, nil]
1443
+ optional :specifiers, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::CommitSpecifier] }
1444
+
1445
+ # @!attribute subscription_config
1446
+ # Attach a subscription to the recurring commit/credit.
1447
+ #
1448
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig, nil]
1449
+ optional :subscription_config,
1450
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig }
1451
+
1452
+ # @!method initialize(id:, access_amount:, commit_duration:, priority:, product:, rate_type:, starting_at_offset:, applicable_product_ids: nil, applicable_product_tags: nil, description: nil, duration: nil, invoice_amount: nil, name: nil, proration: nil, recurrence_frequency: nil, rollover_fraction: nil, specifiers: nil, subscription_config: nil)
1453
+ # Some parameter documentations has been truncated, see
1454
+ # {MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit} for
1455
+ # more details.
1456
+ #
1457
+ # @param id [String]
1458
+ #
1459
+ # @param access_amount [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::AccessAmount] The amount of commit to grant.
1460
+ #
1461
+ # @param commit_duration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::CommitDuration] The amount of time each of the created commits will be valid for
1462
+ #
1463
+ # @param priority [Float]
1464
+ #
1465
+ # @param product [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Product]
1466
+ #
1467
+ # @param rate_type [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::RateType] Whether the created commits will use the commit rate or list rate
1468
+ #
1469
+ # @param starting_at_offset [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::StartingAtOffset] Offset relative to the contract start date that determines the start time for th
1470
+ #
1471
+ # @param applicable_product_ids [Array<String>] Will be passed down to the individual commits
1472
+ #
1473
+ # @param applicable_product_tags [Array<String>] Will be passed down to the individual commits
1474
+ #
1475
+ # @param description [String]
1476
+ #
1477
+ # @param duration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Duration] Offset relative to the recurring credit start that determines when the contract
1478
+ #
1479
+ # @param invoice_amount [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::InvoiceAmount] The amount the customer should be billed for the commit.
1480
+ #
1481
+ # @param name [String]
1482
+ #
1483
+ # @param proration [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Proration] Determines whether the first and last commit will be prorated. If not provided,
1484
+ #
1485
+ # @param recurrence_frequency [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::RecurrenceFrequency] The frequency at which the recurring commits will be created. If not provided:
1486
+ #
1487
+ # @param rollover_fraction [Float] Will be passed down to the individual commits. This controls how much of an indi
1488
+ #
1489
+ # @param specifiers [Array<MetronomeSDK::Models::CommitSpecifier>] List of filters that determine what kind of customer usage draws down a commit o
1490
+ #
1491
+ # @param subscription_config [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig] Attach a subscription to the recurring commit/credit.
1492
+
1493
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#access_amount
1494
+ class AccessAmount < MetronomeSDK::Internal::Type::BaseModel
1495
+ # @!attribute credit_type_id
1496
+ #
1497
+ # @return [String]
1498
+ required :credit_type_id, String
1499
+
1500
+ # @!attribute unit_price
1501
+ #
1502
+ # @return [Float]
1503
+ required :unit_price, Float
1504
+
1505
+ # @!attribute quantity
1506
+ #
1507
+ # @return [Float, nil]
1508
+ optional :quantity, Float
1509
+
1510
+ # @!method initialize(credit_type_id:, unit_price:, quantity: nil)
1511
+ # The amount of commit to grant.
1512
+ #
1513
+ # @param credit_type_id [String]
1514
+ # @param unit_price [Float]
1515
+ # @param quantity [Float]
1516
+ end
1517
+
1518
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#commit_duration
1519
+ class CommitDuration < MetronomeSDK::Internal::Type::BaseModel
1520
+ # @!attribute value
1521
+ #
1522
+ # @return [Float]
1523
+ required :value, Float
1524
+
1525
+ # @!attribute unit
1526
+ #
1527
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::CommitDuration::Unit, nil]
1528
+ optional :unit,
1529
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::CommitDuration::Unit }
1530
+
1531
+ # @!method initialize(value:, unit: nil)
1532
+ # The amount of time each of the created commits will be valid for
1533
+ #
1534
+ # @param value [Float]
1535
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::CommitDuration::Unit]
1536
+
1537
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::CommitDuration#unit
1538
+ module Unit
1539
+ extend MetronomeSDK::Internal::Type::Enum
1540
+
1541
+ PERIODS = :PERIODS
1542
+
1543
+ # @!method self.values
1544
+ # @return [Array<Symbol>]
1545
+ end
1546
+ end
1547
+
1548
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#product
1549
+ class Product < MetronomeSDK::Internal::Type::BaseModel
1550
+ # @!attribute id
1551
+ #
1552
+ # @return [String]
1553
+ required :id, String
1554
+
1555
+ # @!attribute name
1556
+ #
1557
+ # @return [String]
1558
+ required :name, String
1559
+
1560
+ # @!method initialize(id:, name:)
1561
+ # @param id [String]
1562
+ # @param name [String]
1563
+ end
1564
+
1565
+ # Whether the created commits will use the commit rate or list rate
1566
+ #
1567
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#rate_type
1568
+ module RateType
1569
+ extend MetronomeSDK::Internal::Type::Enum
1570
+
1571
+ COMMIT_RATE = :COMMIT_RATE
1572
+ LIST_RATE = :LIST_RATE
1573
+
1574
+ # @!method self.values
1575
+ # @return [Array<Symbol>]
1576
+ end
1577
+
1578
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#starting_at_offset
1579
+ class StartingAtOffset < MetronomeSDK::Internal::Type::BaseModel
1580
+ # @!attribute unit
1581
+ #
1582
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::StartingAtOffset::Unit]
1583
+ required :unit,
1584
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::StartingAtOffset::Unit }
1585
+
1586
+ # @!attribute value
1587
+ #
1588
+ # @return [Integer]
1589
+ required :value, Integer
1590
+
1591
+ # @!method initialize(unit:, value:)
1592
+ # Offset relative to the contract start date that determines the start time for
1593
+ # the first commit
1594
+ #
1595
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::StartingAtOffset::Unit]
1596
+ # @param value [Integer]
1597
+
1598
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::StartingAtOffset#unit
1599
+ module Unit
1600
+ extend MetronomeSDK::Internal::Type::Enum
1601
+
1602
+ DAYS = :DAYS
1603
+ WEEKS = :WEEKS
1604
+ MONTHS = :MONTHS
1605
+ YEARS = :YEARS
1606
+
1607
+ # @!method self.values
1608
+ # @return [Array<Symbol>]
1609
+ end
1610
+ end
1611
+
1612
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#duration
1613
+ class Duration < MetronomeSDK::Internal::Type::BaseModel
1614
+ # @!attribute unit
1615
+ #
1616
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Duration::Unit]
1617
+ required :unit,
1618
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Duration::Unit }
1619
+
1620
+ # @!attribute value
1621
+ #
1622
+ # @return [Integer]
1623
+ required :value, Integer
1624
+
1625
+ # @!method initialize(unit:, value:)
1626
+ # Offset relative to the recurring credit start that determines when the contract
1627
+ # will stop creating recurring commits. optional
1628
+ #
1629
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Duration::Unit]
1630
+ # @param value [Integer]
1631
+
1632
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::Duration#unit
1633
+ module Unit
1634
+ extend MetronomeSDK::Internal::Type::Enum
1635
+
1636
+ DAYS = :DAYS
1637
+ WEEKS = :WEEKS
1638
+ MONTHS = :MONTHS
1639
+ YEARS = :YEARS
1640
+
1641
+ # @!method self.values
1642
+ # @return [Array<Symbol>]
1643
+ end
1644
+ end
1645
+
1646
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#invoice_amount
1647
+ class InvoiceAmount < MetronomeSDK::Internal::Type::BaseModel
1648
+ # @!attribute credit_type_id
1649
+ #
1650
+ # @return [String]
1651
+ required :credit_type_id, String
1652
+
1653
+ # @!attribute quantity
1654
+ #
1655
+ # @return [Float]
1656
+ required :quantity, Float
1657
+
1658
+ # @!attribute unit_price
1659
+ #
1660
+ # @return [Float]
1661
+ required :unit_price, Float
1662
+
1663
+ # @!method initialize(credit_type_id:, quantity:, unit_price:)
1664
+ # The amount the customer should be billed for the commit.
1665
+ #
1666
+ # @param credit_type_id [String]
1667
+ # @param quantity [Float]
1668
+ # @param unit_price [Float]
1669
+ end
1670
+
1671
+ # Determines whether the first and last commit will be prorated. If not provided,
1672
+ # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
1673
+ #
1674
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#proration
1675
+ module Proration
1676
+ extend MetronomeSDK::Internal::Type::Enum
1677
+
1678
+ NONE = :NONE
1679
+ FIRST = :FIRST
1680
+ LAST = :LAST
1681
+ FIRST_AND_LAST = :FIRST_AND_LAST
1682
+
1683
+ # @!method self.values
1684
+ # @return [Array<Symbol>]
1685
+ end
1686
+
1687
+ # The frequency at which the recurring commits will be created. If not provided: -
1688
+ # The commits will be created on the usage invoice frequency. If provided: - The
1689
+ # period defined in the duration will correspond to this frequency. - Commits will
1690
+ # be created aligned with the recurring commit's starting_at rather than the usage
1691
+ # invoice dates.
1692
+ #
1693
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#recurrence_frequency
1694
+ module RecurrenceFrequency
1695
+ extend MetronomeSDK::Internal::Type::Enum
1696
+
1697
+ MONTHLY = :MONTHLY
1698
+ QUARTERLY = :QUARTERLY
1699
+ ANNUAL = :ANNUAL
1700
+ WEEKLY = :WEEKLY
1701
+
1702
+ # @!method self.values
1703
+ # @return [Array<Symbol>]
1704
+ end
1705
+
1706
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit#subscription_config
1707
+ class SubscriptionConfig < MetronomeSDK::Internal::Type::BaseModel
1708
+ # @!attribute allocation
1709
+ #
1710
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig::Allocation]
1711
+ required :allocation,
1712
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig::Allocation }
1713
+
1714
+ # @!attribute apply_seat_increase_config
1715
+ #
1716
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig::ApplySeatIncreaseConfig]
1717
+ required :apply_seat_increase_config,
1718
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig::ApplySeatIncreaseConfig }
1719
+
1720
+ # @!attribute subscription_template_id
1721
+ #
1722
+ # @return [String]
1723
+ required :subscription_template_id, String
1724
+
1725
+ # @!method initialize(allocation:, apply_seat_increase_config:, subscription_template_id:)
1726
+ # Attach a subscription to the recurring commit/credit.
1727
+ #
1728
+ # @param allocation [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig::Allocation]
1729
+ # @param apply_seat_increase_config [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig::ApplySeatIncreaseConfig]
1730
+ # @param subscription_template_id [String]
1731
+
1732
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig#allocation
1733
+ module Allocation
1734
+ extend MetronomeSDK::Internal::Type::Enum
1735
+
1736
+ INDIVIDUAL = :INDIVIDUAL
1737
+ POOLED = :POOLED
1738
+
1739
+ # @!method self.values
1740
+ # @return [Array<Symbol>]
1741
+ end
1742
+
1743
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCommit::SubscriptionConfig#apply_seat_increase_config
1744
+ class ApplySeatIncreaseConfig < MetronomeSDK::Internal::Type::BaseModel
1745
+ # @!attribute is_prorated
1746
+ # Indicates whether a mid-period seat increase should be prorated.
1747
+ #
1748
+ # @return [Boolean]
1749
+ required :is_prorated, MetronomeSDK::Internal::Type::Boolean
1750
+
1751
+ # @!method initialize(is_prorated:)
1752
+ # @param is_prorated [Boolean] Indicates whether a mid-period seat increase should be prorated.
1753
+ end
1754
+ end
1755
+ end
1756
+
1757
+ class RecurringCredit < MetronomeSDK::Internal::Type::BaseModel
1758
+ # @!attribute id
1759
+ #
1760
+ # @return [String]
1761
+ required :id, String
1762
+
1763
+ # @!attribute access_amount
1764
+ # The amount of commit to grant.
1765
+ #
1766
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::AccessAmount]
1767
+ required :access_amount,
1768
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::AccessAmount }
1769
+
1770
+ # @!attribute commit_duration
1771
+ # The amount of time each of the created commits will be valid for
1772
+ #
1773
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::CommitDuration]
1774
+ required :commit_duration,
1775
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::CommitDuration }
1776
+
1777
+ # @!attribute priority
1778
+ #
1779
+ # @return [Float]
1780
+ required :priority, Float
1781
+
1782
+ # @!attribute product
1783
+ #
1784
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Product]
1785
+ required :product,
1786
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Product }
1787
+
1788
+ # @!attribute rate_type
1789
+ # Whether the created commits will use the commit rate or list rate
1790
+ #
1791
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::RateType]
1792
+ required :rate_type,
1793
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::RateType }
1794
+
1795
+ # @!attribute starting_at_offset
1796
+ # Offset relative to the contract start date that determines the start time for
1797
+ # the first commit
1798
+ #
1799
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::StartingAtOffset]
1800
+ required :starting_at_offset,
1801
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::StartingAtOffset }
1802
+
1803
+ # @!attribute applicable_product_ids
1804
+ # Will be passed down to the individual commits
1805
+ #
1806
+ # @return [Array<String>, nil]
1807
+ optional :applicable_product_ids, MetronomeSDK::Internal::Type::ArrayOf[String]
1808
+
1809
+ # @!attribute applicable_product_tags
1810
+ # Will be passed down to the individual commits
1811
+ #
1812
+ # @return [Array<String>, nil]
1813
+ optional :applicable_product_tags, MetronomeSDK::Internal::Type::ArrayOf[String]
1814
+
1815
+ # @!attribute description
1816
+ #
1817
+ # @return [String, nil]
1818
+ optional :description, String
1819
+
1820
+ # @!attribute duration
1821
+ # Offset relative to the recurring credit start that determines when the contract
1822
+ # will stop creating recurring commits. optional
1823
+ #
1824
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Duration, nil]
1825
+ optional :duration,
1826
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Duration }
1827
+
1828
+ # @!attribute name
1829
+ #
1830
+ # @return [String, nil]
1831
+ optional :name, String
1832
+
1833
+ # @!attribute proration
1834
+ # Determines whether the first and last commit will be prorated. If not provided,
1835
+ # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
1836
+ #
1837
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Proration, nil]
1838
+ optional :proration,
1839
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Proration }
1840
+
1841
+ # @!attribute recurrence_frequency
1842
+ # The frequency at which the recurring commits will be created. If not provided: -
1843
+ # The commits will be created on the usage invoice frequency. If provided: - The
1844
+ # period defined in the duration will correspond to this frequency. - Commits will
1845
+ # be created aligned with the recurring commit's starting_at rather than the usage
1846
+ # invoice dates.
1847
+ #
1848
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::RecurrenceFrequency, nil]
1849
+ optional :recurrence_frequency,
1850
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::RecurrenceFrequency }
1851
+
1852
+ # @!attribute rollover_fraction
1853
+ # Will be passed down to the individual commits. This controls how much of an
1854
+ # individual unexpired commit will roll over upon contract transition. Must be
1855
+ # between 0 and 1.
1856
+ #
1857
+ # @return [Float, nil]
1858
+ optional :rollover_fraction, Float
1859
+
1860
+ # @!attribute specifiers
1861
+ # List of filters that determine what kind of customer usage draws down a commit
1862
+ # or credit. A customer's usage needs to meet the condition of at least one of the
1863
+ # specifiers to contribute to a commit's or credit's drawdown.
1864
+ #
1865
+ # @return [Array<MetronomeSDK::Models::CommitSpecifier>, nil]
1866
+ optional :specifiers, -> { MetronomeSDK::Internal::Type::ArrayOf[MetronomeSDK::CommitSpecifier] }
1867
+
1868
+ # @!attribute subscription_config
1869
+ # Attach a subscription to the recurring commit/credit.
1870
+ #
1871
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig, nil]
1872
+ optional :subscription_config,
1873
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig }
1874
+
1875
+ # @!method initialize(id:, access_amount:, commit_duration:, priority:, product:, rate_type:, starting_at_offset:, applicable_product_ids: nil, applicable_product_tags: nil, description: nil, duration: nil, name: nil, proration: nil, recurrence_frequency: nil, rollover_fraction: nil, specifiers: nil, subscription_config: nil)
1876
+ # Some parameter documentations has been truncated, see
1877
+ # {MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit} for
1878
+ # more details.
1879
+ #
1880
+ # @param id [String]
1881
+ #
1882
+ # @param access_amount [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::AccessAmount] The amount of commit to grant.
1883
+ #
1884
+ # @param commit_duration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::CommitDuration] The amount of time each of the created commits will be valid for
1885
+ #
1886
+ # @param priority [Float]
1887
+ #
1888
+ # @param product [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Product]
1889
+ #
1890
+ # @param rate_type [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::RateType] Whether the created commits will use the commit rate or list rate
1891
+ #
1892
+ # @param starting_at_offset [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::StartingAtOffset] Offset relative to the contract start date that determines the start time for th
1893
+ #
1894
+ # @param applicable_product_ids [Array<String>] Will be passed down to the individual commits
1895
+ #
1896
+ # @param applicable_product_tags [Array<String>] Will be passed down to the individual commits
1897
+ #
1898
+ # @param description [String]
1899
+ #
1900
+ # @param duration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Duration] Offset relative to the recurring credit start that determines when the contract
1901
+ #
1902
+ # @param name [String]
1903
+ #
1904
+ # @param proration [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Proration] Determines whether the first and last commit will be prorated. If not provided,
1905
+ #
1906
+ # @param recurrence_frequency [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::RecurrenceFrequency] The frequency at which the recurring commits will be created. If not provided:
1907
+ #
1908
+ # @param rollover_fraction [Float] Will be passed down to the individual commits. This controls how much of an indi
1909
+ #
1910
+ # @param specifiers [Array<MetronomeSDK::Models::CommitSpecifier>] List of filters that determine what kind of customer usage draws down a commit o
1911
+ #
1912
+ # @param subscription_config [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig] Attach a subscription to the recurring commit/credit.
1913
+
1914
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit#access_amount
1915
+ class AccessAmount < MetronomeSDK::Internal::Type::BaseModel
1916
+ # @!attribute credit_type_id
1917
+ #
1918
+ # @return [String]
1919
+ required :credit_type_id, String
1920
+
1921
+ # @!attribute unit_price
1922
+ #
1923
+ # @return [Float]
1924
+ required :unit_price, Float
1925
+
1926
+ # @!attribute quantity
1927
+ #
1928
+ # @return [Float, nil]
1929
+ optional :quantity, Float
1930
+
1931
+ # @!method initialize(credit_type_id:, unit_price:, quantity: nil)
1932
+ # The amount of commit to grant.
1933
+ #
1934
+ # @param credit_type_id [String]
1935
+ # @param unit_price [Float]
1936
+ # @param quantity [Float]
1937
+ end
1938
+
1939
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit#commit_duration
1940
+ class CommitDuration < MetronomeSDK::Internal::Type::BaseModel
1941
+ # @!attribute value
1942
+ #
1943
+ # @return [Float]
1944
+ required :value, Float
1945
+
1946
+ # @!attribute unit
1947
+ #
1948
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::CommitDuration::Unit, nil]
1949
+ optional :unit,
1950
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::CommitDuration::Unit }
1951
+
1952
+ # @!method initialize(value:, unit: nil)
1953
+ # The amount of time each of the created commits will be valid for
1954
+ #
1955
+ # @param value [Float]
1956
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::CommitDuration::Unit]
1957
+
1958
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::CommitDuration#unit
1959
+ module Unit
1960
+ extend MetronomeSDK::Internal::Type::Enum
1961
+
1962
+ PERIODS = :PERIODS
1963
+
1964
+ # @!method self.values
1965
+ # @return [Array<Symbol>]
1966
+ end
1967
+ end
1968
+
1969
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit#product
1970
+ class Product < MetronomeSDK::Internal::Type::BaseModel
1971
+ # @!attribute id
1972
+ #
1973
+ # @return [String]
1974
+ required :id, String
1975
+
1976
+ # @!attribute name
1977
+ #
1978
+ # @return [String]
1979
+ required :name, String
1980
+
1981
+ # @!method initialize(id:, name:)
1982
+ # @param id [String]
1983
+ # @param name [String]
1984
+ end
1985
+
1986
+ # Whether the created commits will use the commit rate or list rate
1987
+ #
1988
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit#rate_type
1989
+ module RateType
1990
+ extend MetronomeSDK::Internal::Type::Enum
1991
+
1992
+ COMMIT_RATE = :COMMIT_RATE
1993
+ LIST_RATE = :LIST_RATE
1994
+
1995
+ # @!method self.values
1996
+ # @return [Array<Symbol>]
1997
+ end
1998
+
1999
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit#starting_at_offset
2000
+ class StartingAtOffset < MetronomeSDK::Internal::Type::BaseModel
2001
+ # @!attribute unit
2002
+ #
2003
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::StartingAtOffset::Unit]
2004
+ required :unit,
2005
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::StartingAtOffset::Unit }
2006
+
2007
+ # @!attribute value
2008
+ #
2009
+ # @return [Integer]
2010
+ required :value, Integer
2011
+
2012
+ # @!method initialize(unit:, value:)
2013
+ # Offset relative to the contract start date that determines the start time for
2014
+ # the first commit
2015
+ #
2016
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::StartingAtOffset::Unit]
2017
+ # @param value [Integer]
2018
+
2019
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::StartingAtOffset#unit
2020
+ module Unit
2021
+ extend MetronomeSDK::Internal::Type::Enum
2022
+
2023
+ DAYS = :DAYS
2024
+ WEEKS = :WEEKS
2025
+ MONTHS = :MONTHS
2026
+ YEARS = :YEARS
2027
+
2028
+ # @!method self.values
2029
+ # @return [Array<Symbol>]
2030
+ end
2031
+ end
2032
+
2033
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit#duration
2034
+ class Duration < MetronomeSDK::Internal::Type::BaseModel
2035
+ # @!attribute unit
2036
+ #
2037
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Duration::Unit]
2038
+ required :unit,
2039
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Duration::Unit }
2040
+
2041
+ # @!attribute value
2042
+ #
2043
+ # @return [Integer]
2044
+ required :value, Integer
2045
+
2046
+ # @!method initialize(unit:, value:)
2047
+ # Offset relative to the recurring credit start that determines when the contract
2048
+ # will stop creating recurring commits. optional
2049
+ #
2050
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Duration::Unit]
2051
+ # @param value [Integer]
2052
+
2053
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::Duration#unit
2054
+ module Unit
2055
+ extend MetronomeSDK::Internal::Type::Enum
2056
+
2057
+ DAYS = :DAYS
2058
+ WEEKS = :WEEKS
2059
+ MONTHS = :MONTHS
2060
+ YEARS = :YEARS
2061
+
2062
+ # @!method self.values
2063
+ # @return [Array<Symbol>]
2064
+ end
2065
+ end
2066
+
2067
+ # Determines whether the first and last commit will be prorated. If not provided,
2068
+ # the default is FIRST_AND_LAST (i.e. prorate both the first and last commits).
2069
+ #
2070
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit#proration
2071
+ module Proration
2072
+ extend MetronomeSDK::Internal::Type::Enum
2073
+
2074
+ NONE = :NONE
2075
+ FIRST = :FIRST
2076
+ LAST = :LAST
2077
+ FIRST_AND_LAST = :FIRST_AND_LAST
2078
+
2079
+ # @!method self.values
2080
+ # @return [Array<Symbol>]
2081
+ end
2082
+
2083
+ # The frequency at which the recurring commits will be created. If not provided: -
2084
+ # The commits will be created on the usage invoice frequency. If provided: - The
2085
+ # period defined in the duration will correspond to this frequency. - Commits will
2086
+ # be created aligned with the recurring commit's starting_at rather than the usage
2087
+ # invoice dates.
2088
+ #
2089
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit#recurrence_frequency
2090
+ module RecurrenceFrequency
2091
+ extend MetronomeSDK::Internal::Type::Enum
2092
+
2093
+ MONTHLY = :MONTHLY
2094
+ QUARTERLY = :QUARTERLY
2095
+ ANNUAL = :ANNUAL
2096
+ WEEKLY = :WEEKLY
2097
+
2098
+ # @!method self.values
2099
+ # @return [Array<Symbol>]
2100
+ end
2101
+
2102
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit#subscription_config
2103
+ class SubscriptionConfig < MetronomeSDK::Internal::Type::BaseModel
2104
+ # @!attribute allocation
2105
+ #
2106
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig::Allocation]
2107
+ required :allocation,
2108
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig::Allocation }
2109
+
2110
+ # @!attribute apply_seat_increase_config
2111
+ #
2112
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig::ApplySeatIncreaseConfig]
2113
+ required :apply_seat_increase_config,
2114
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig::ApplySeatIncreaseConfig }
2115
+
2116
+ # @!attribute subscription_template_id
2117
+ #
2118
+ # @return [String]
2119
+ required :subscription_template_id, String
2120
+
2121
+ # @!method initialize(allocation:, apply_seat_increase_config:, subscription_template_id:)
2122
+ # Attach a subscription to the recurring commit/credit.
2123
+ #
2124
+ # @param allocation [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig::Allocation]
2125
+ # @param apply_seat_increase_config [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig::ApplySeatIncreaseConfig]
2126
+ # @param subscription_template_id [String]
2127
+
2128
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig#allocation
2129
+ module Allocation
2130
+ extend MetronomeSDK::Internal::Type::Enum
2131
+
2132
+ INDIVIDUAL = :INDIVIDUAL
2133
+ POOLED = :POOLED
2134
+
2135
+ # @!method self.values
2136
+ # @return [Array<Symbol>]
2137
+ end
2138
+
2139
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::RecurringCredit::SubscriptionConfig#apply_seat_increase_config
2140
+ class ApplySeatIncreaseConfig < MetronomeSDK::Internal::Type::BaseModel
2141
+ # @!attribute is_prorated
2142
+ # Indicates whether a mid-period seat increase should be prorated.
2143
+ #
2144
+ # @return [Boolean]
2145
+ required :is_prorated, MetronomeSDK::Internal::Type::Boolean
2146
+
2147
+ # @!method initialize(is_prorated:)
2148
+ # @param is_prorated [Boolean] Indicates whether a mid-period seat increase should be prorated.
2149
+ end
2150
+ end
2151
+ end
2152
+
2153
+ # Determines which scheduled and commit charges to consolidate onto the Contract's
2154
+ # usage invoice. The charge's `timestamp` must match the usage invoice's
2155
+ # `ending_before` date for consolidation to occur. This field cannot be modified
2156
+ # after a Contract has been created. If this field is omitted, charges will appear
2157
+ # on a separate invoice from usage charges.
2158
+ #
2159
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data#scheduled_charges_on_usage_invoices
2160
+ module ScheduledChargesOnUsageInvoices
2161
+ extend MetronomeSDK::Internal::Type::Enum
2162
+
2163
+ ALL = :ALL
2164
+
2165
+ # @!method self.values
2166
+ # @return [Array<Symbol>]
2167
+ end
2168
+
2169
+ class Subscription < MetronomeSDK::Internal::Type::BaseModel
2170
+ # @!attribute collection_schedule
2171
+ #
2172
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::CollectionSchedule]
2173
+ required :collection_schedule,
2174
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::CollectionSchedule }
2175
+
2176
+ # @!attribute proration
2177
+ #
2178
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Proration]
2179
+ required :proration,
2180
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Proration }
2181
+
2182
+ # @!attribute subscription_rate
2183
+ #
2184
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate]
2185
+ required :subscription_rate,
2186
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate }
2187
+
2188
+ # @!attribute id
2189
+ #
2190
+ # @return [String, nil]
2191
+ optional :id, String
2192
+
2193
+ # @!attribute custom_fields
2194
+ # Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
2195
+ #
2196
+ # @return [Hash{Symbol=>String}, nil]
2197
+ optional :custom_fields, MetronomeSDK::Internal::Type::HashOf[String]
2198
+
2199
+ # @!attribute description
2200
+ #
2201
+ # @return [String, nil]
2202
+ optional :description, String
2203
+
2204
+ # @!attribute duration
2205
+ #
2206
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Duration, nil]
2207
+ optional :duration, -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Duration }
2208
+
2209
+ # @!attribute fiat_credit_type_id
2210
+ #
2211
+ # @return [String, nil]
2212
+ optional :fiat_credit_type_id, String
2213
+
2214
+ # @!attribute initial_quantity
2215
+ #
2216
+ # @return [Float, nil]
2217
+ optional :initial_quantity, Float
2218
+
2219
+ # @!attribute name
2220
+ #
2221
+ # @return [String, nil]
2222
+ optional :name, String
2223
+
2224
+ # @!attribute quantity_management_mode
2225
+ # Determines how the subscription's quantity is controlled. Defaults to
2226
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
2227
+ # directly on the subscription. `initial_quantity` must be provided with this
2228
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
2229
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
2230
+ # user_123) to increment and decrement a subscription quantity, rather than
2231
+ # directly providing the quantity. You must use a SEAT_BASED subscription to use a
2232
+ # linked recurring credit with an allocation per seat. `seat_config` must be
2233
+ # provided with this option.
2234
+ #
2235
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::QuantityManagementMode, nil]
2236
+ optional :quantity_management_mode,
2237
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::QuantityManagementMode }
2238
+
2239
+ # @!attribute seat_config
2240
+ #
2241
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SeatConfig, nil]
2242
+ optional :seat_config,
2243
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SeatConfig }
2244
+
2245
+ # @!attribute starting_at_offset
2246
+ #
2247
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::StartingAtOffset, nil]
2248
+ optional :starting_at_offset,
2249
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::StartingAtOffset }
2250
+
2251
+ # @!method initialize(collection_schedule:, proration:, subscription_rate:, id: nil, custom_fields: nil, description: nil, duration: nil, fiat_credit_type_id: nil, initial_quantity: nil, name: nil, quantity_management_mode: nil, seat_config: nil, starting_at_offset: nil)
2252
+ # Some parameter documentations has been truncated, see
2253
+ # {MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription} for more
2254
+ # details.
2255
+ #
2256
+ # @param collection_schedule [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::CollectionSchedule]
2257
+ #
2258
+ # @param proration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Proration]
2259
+ #
2260
+ # @param subscription_rate [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate]
2261
+ #
2262
+ # @param id [String]
2263
+ #
2264
+ # @param custom_fields [Hash{Symbol=>String}] Custom fields to be added eg. { "key1": "value1", "key2": "value2" }
2265
+ #
2266
+ # @param description [String]
2267
+ #
2268
+ # @param duration [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Duration]
2269
+ #
2270
+ # @param fiat_credit_type_id [String]
2271
+ #
2272
+ # @param initial_quantity [Float]
2273
+ #
2274
+ # @param name [String]
2275
+ #
2276
+ # @param quantity_management_mode [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::QuantityManagementMode] Determines how the subscription's quantity is controlled. Defaults to QUANTITY_O
2277
+ #
2278
+ # @param seat_config [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SeatConfig]
2279
+ #
2280
+ # @param starting_at_offset [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::StartingAtOffset]
2281
+
2282
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription#collection_schedule
2283
+ module CollectionSchedule
2284
+ extend MetronomeSDK::Internal::Type::Enum
2285
+
2286
+ ADVANCE = :ADVANCE
2287
+ ARREARS = :ARREARS
2288
+
2289
+ # @!method self.values
2290
+ # @return [Array<Symbol>]
2291
+ end
2292
+
2293
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription#proration
2294
+ class Proration < MetronomeSDK::Internal::Type::BaseModel
2295
+ # @!attribute invoice_behavior
2296
+ #
2297
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Proration::InvoiceBehavior]
2298
+ required :invoice_behavior,
2299
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Proration::InvoiceBehavior }
2300
+
2301
+ # @!attribute is_prorated
2302
+ #
2303
+ # @return [Boolean]
2304
+ required :is_prorated, MetronomeSDK::Internal::Type::Boolean
2305
+
2306
+ # @!method initialize(invoice_behavior:, is_prorated:)
2307
+ # @param invoice_behavior [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Proration::InvoiceBehavior]
2308
+ # @param is_prorated [Boolean]
2309
+
2310
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Proration#invoice_behavior
2311
+ module InvoiceBehavior
2312
+ extend MetronomeSDK::Internal::Type::Enum
2313
+
2314
+ BILL_IMMEDIATELY = :BILL_IMMEDIATELY
2315
+ BILL_ON_NEXT_COLLECTION_DATE = :BILL_ON_NEXT_COLLECTION_DATE
2316
+
2317
+ # @!method self.values
2318
+ # @return [Array<Symbol>]
2319
+ end
2320
+ end
2321
+
2322
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription#subscription_rate
2323
+ class SubscriptionRate < MetronomeSDK::Internal::Type::BaseModel
2324
+ # @!attribute billing_frequency
2325
+ #
2326
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate::BillingFrequency]
2327
+ required :billing_frequency,
2328
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate::BillingFrequency }
2329
+
2330
+ # @!attribute product
2331
+ #
2332
+ # @return [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate::Product]
2333
+ required :product,
2334
+ -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate::Product }
2335
+
2336
+ # @!method initialize(billing_frequency:, product:)
2337
+ # @param billing_frequency [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate::BillingFrequency]
2338
+ # @param product [MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate::Product]
2339
+
2340
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate#billing_frequency
2341
+ module BillingFrequency
2342
+ extend MetronomeSDK::Internal::Type::Enum
2343
+
2344
+ MONTHLY = :MONTHLY
2345
+ QUARTERLY = :QUARTERLY
2346
+ ANNUAL = :ANNUAL
2347
+ WEEKLY = :WEEKLY
2348
+
2349
+ # @!method self.values
2350
+ # @return [Array<Symbol>]
2351
+ end
2352
+
2353
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SubscriptionRate#product
2354
+ class Product < MetronomeSDK::Internal::Type::BaseModel
2355
+ # @!attribute id
2356
+ #
2357
+ # @return [String]
2358
+ required :id, String
2359
+
2360
+ # @!attribute name
2361
+ #
2362
+ # @return [String]
2363
+ required :name, String
2364
+
2365
+ # @!method initialize(id:, name:)
2366
+ # @param id [String]
2367
+ # @param name [String]
2368
+ end
2369
+ end
2370
+
2371
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription#duration
2372
+ class Duration < MetronomeSDK::Internal::Type::BaseModel
2373
+ # @!attribute unit
2374
+ #
2375
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Duration::Unit]
2376
+ required :unit,
2377
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Duration::Unit }
2378
+
2379
+ # @!attribute value
2380
+ #
2381
+ # @return [Integer]
2382
+ required :value, Integer
2383
+
2384
+ # @!method initialize(unit:, value:)
2385
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Duration::Unit]
2386
+ # @param value [Integer]
2387
+
2388
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::Duration#unit
2389
+ module Unit
2390
+ extend MetronomeSDK::Internal::Type::Enum
2391
+
2392
+ DAYS = :DAYS
2393
+ WEEKS = :WEEKS
2394
+ MONTHS = :MONTHS
2395
+ YEARS = :YEARS
2396
+
2397
+ # @!method self.values
2398
+ # @return [Array<Symbol>]
2399
+ end
2400
+ end
2401
+
2402
+ # Determines how the subscription's quantity is controlled. Defaults to
2403
+ # QUANTITY_ONLY. **QUANTITY_ONLY**: The subscription quantity is specified
2404
+ # directly on the subscription. `initial_quantity` must be provided with this
2405
+ # option. Compatible with recurring commits/credits that use POOLED allocation.
2406
+ # **SEAT_BASED**: Use when you want to pass specific seat identifiers (e.g. add
2407
+ # user_123) to increment and decrement a subscription quantity, rather than
2408
+ # directly providing the quantity. You must use a SEAT_BASED subscription to use a
2409
+ # linked recurring credit with an allocation per seat. `seat_config` must be
2410
+ # provided with this option.
2411
+ #
2412
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription#quantity_management_mode
2413
+ module QuantityManagementMode
2414
+ extend MetronomeSDK::Internal::Type::Enum
2415
+
2416
+ SEAT_BASED = :SEAT_BASED
2417
+ QUANTITY_ONLY = :QUANTITY_ONLY
2418
+
2419
+ # @!method self.values
2420
+ # @return [Array<Symbol>]
2421
+ end
2422
+
2423
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription#seat_config
2424
+ class SeatConfig < MetronomeSDK::Internal::Type::BaseModel
2425
+ # @!attribute seat_group_key
2426
+ # The property name, sent on usage events, that identifies the seat ID associated
2427
+ # with the usage event. For example, the property name might be seat_id or
2428
+ # user_id. The property must be set as a group key on billable metrics and a
2429
+ # presentation/pricing group key on contract products. This allows linked
2430
+ # recurring credits with an allocation per seat to be consumed by only one seat's
2431
+ # usage.
2432
+ #
2433
+ # @return [String]
2434
+ required :seat_group_key, String
2435
+
2436
+ # @!method initialize(seat_group_key:)
2437
+ # Some parameter documentations has been truncated, see
2438
+ # {MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::SeatConfig}
2439
+ # for more details.
2440
+ #
2441
+ # @param seat_group_key [String] The property name, sent on usage events, that identifies the seat ID associated
2442
+ end
2443
+
2444
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription#starting_at_offset
2445
+ class StartingAtOffset < MetronomeSDK::Internal::Type::BaseModel
2446
+ # @!attribute unit
2447
+ #
2448
+ # @return [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::StartingAtOffset::Unit]
2449
+ required :unit,
2450
+ enum: -> { MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::StartingAtOffset::Unit }
2451
+
2452
+ # @!attribute value
2453
+ #
2454
+ # @return [Integer]
2455
+ required :value, Integer
2456
+
2457
+ # @!method initialize(unit:, value:)
2458
+ # @param unit [Symbol, MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::StartingAtOffset::Unit]
2459
+ # @param value [Integer]
2460
+
2461
+ # @see MetronomeSDK::Models::V1::PackageRetrieveResponse::Data::Subscription::StartingAtOffset#unit
2462
+ module Unit
2463
+ extend MetronomeSDK::Internal::Type::Enum
2464
+
2465
+ DAYS = :DAYS
2466
+ WEEKS = :WEEKS
2467
+ MONTHS = :MONTHS
2468
+ YEARS = :YEARS
2469
+
2470
+ # @!method self.values
2471
+ # @return [Array<Symbol>]
2472
+ end
2473
+ end
2474
+ end
2475
+ end
2476
+ end
2477
+ end
2478
+ end
2479
+ end