metronome-sdk 0.1.0 → 0.3.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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/transport/base_client.rb +1 -1
  5. data/lib/metronome_sdk/internal/type/array_of.rb +1 -0
  6. data/lib/metronome_sdk/internal/type/base_model.rb +3 -1
  7. data/lib/metronome_sdk/internal/type/converter.rb +27 -0
  8. data/lib/metronome_sdk/internal/type/hash_of.rb +1 -0
  9. data/lib/metronome_sdk/internal/type/union.rb +9 -7
  10. data/lib/metronome_sdk/models/commit.rb +35 -5
  11. data/lib/metronome_sdk/models/contract_without_amendments.rb +128 -2
  12. data/lib/metronome_sdk/models/credit.rb +21 -3
  13. data/lib/metronome_sdk/models/schedule_point_in_time.rb +14 -1
  14. data/lib/metronome_sdk/models/v1/alert_create_params.rb +9 -11
  15. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +54 -5
  16. data/lib/metronome_sdk/models/v1/contract_create_params.rb +219 -23
  17. data/lib/metronome_sdk/models/v1/contracts/product_create_params.rb +8 -1
  18. data/lib/metronome_sdk/models/v1/customers/commit_create_params.rb +10 -1
  19. data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +29 -1
  20. data/lib/metronome_sdk/models/v1/customers/invoice.rb +13 -1
  21. data/lib/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rb +2 -0
  22. data/lib/metronome_sdk/models/v2/contract_edit_commit_params.rb +12 -1
  23. data/lib/metronome_sdk/models/v2/contract_edit_credit_params.rb +12 -1
  24. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +259 -37
  25. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +602 -15
  26. data/lib/metronome_sdk/models/v2/contract_list_response.rb +194 -17
  27. data/lib/metronome_sdk/models/v2/contract_retrieve_response.rb +194 -17
  28. data/lib/metronome_sdk/resources/v1/alerts.rb +2 -2
  29. data/lib/metronome_sdk/resources/v1/contracts/products.rb +3 -1
  30. data/lib/metronome_sdk/resources/v2/contracts.rb +6 -2
  31. data/lib/metronome_sdk/version.rb +1 -1
  32. data/rbi/metronome_sdk/internal/transport/base_client.rbi +1 -1
  33. data/rbi/metronome_sdk/internal/type/converter.rbi +58 -0
  34. data/rbi/metronome_sdk/internal/type/union.rbi +9 -2
  35. data/rbi/metronome_sdk/models/commit.rbi +89 -15
  36. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +304 -6
  37. data/rbi/metronome_sdk/models/credit.rbi +54 -9
  38. data/rbi/metronome_sdk/models/schedule_point_in_time.rbi +17 -1
  39. data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +16 -18
  40. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +76 -3
  41. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +433 -26
  42. data/rbi/metronome_sdk/models/v1/contracts/product_create_params.rbi +9 -0
  43. data/rbi/metronome_sdk/models/v1/customers/commit_create_params.rbi +13 -0
  44. data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +60 -0
  45. data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +16 -0
  46. data/rbi/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbi +10 -0
  47. data/rbi/metronome_sdk/models/v2/contract_edit_commit_params.rbi +14 -0
  48. data/rbi/metronome_sdk/models/v2/contract_edit_credit_params.rbi +14 -0
  49. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +481 -38
  50. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1565 -42
  51. data/rbi/metronome_sdk/models/v2/contract_list_response.rbi +431 -37
  52. data/rbi/metronome_sdk/models/v2/contract_retrieve_response.rbi +431 -37
  53. data/rbi/metronome_sdk/resources/v1/alerts.rbi +5 -5
  54. data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +2 -0
  55. data/rbi/metronome_sdk/resources/v2/contracts.rbi +12 -0
  56. data/sig/metronome_sdk/internal/transport/base_client.rbs +1 -1
  57. data/sig/metronome_sdk/internal/type/converter.rbs +17 -0
  58. data/sig/metronome_sdk/internal/type/union.rbs +2 -2
  59. data/sig/metronome_sdk/models/commit.rbs +50 -15
  60. data/sig/metronome_sdk/models/contract_without_amendments.rbs +120 -6
  61. data/sig/metronome_sdk/models/credit.rbs +30 -9
  62. data/sig/metronome_sdk/models/schedule_point_in_time.rbs +7 -0
  63. data/sig/metronome_sdk/models/v1/alert_create_params.rbs +9 -9
  64. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +38 -3
  65. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +168 -6
  66. data/sig/metronome_sdk/models/v1/contracts/product_create_params.rbs +7 -0
  67. data/sig/metronome_sdk/models/v1/customers/commit_create_params.rbs +7 -0
  68. data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +21 -0
  69. data/sig/metronome_sdk/models/v1/customers/invoice.rbs +5 -0
  70. data/sig/metronome_sdk/models/v1/dashboard_get_embeddable_url_params.rbs +4 -0
  71. data/sig/metronome_sdk/models/v2/contract_edit_commit_params.rbs +5 -0
  72. data/sig/metronome_sdk/models/v2/contract_edit_credit_params.rbs +5 -0
  73. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +178 -6
  74. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +629 -6
  75. data/sig/metronome_sdk/models/v2/contract_list_response.rbs +205 -30
  76. data/sig/metronome_sdk/models/v2/contract_retrieve_response.rbs +205 -30
  77. data/sig/metronome_sdk/resources/v1/alerts.rbs +1 -1
  78. data/sig/metronome_sdk/resources/v1/contracts/products.rbs +1 -0
  79. data/sig/metronome_sdk/resources/v2/contracts.rbs +2 -0
  80. metadata +2 -2
@@ -48,6 +48,12 @@ module MetronomeSDK
48
48
  sig { params(composite_tags: T::Array[String]).void }
49
49
  attr_writer :composite_tags
50
50
 
51
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
52
+ attr_reader :custom_fields
53
+
54
+ sig { params(custom_fields: T::Hash[Symbol, String]).void }
55
+ attr_writer :custom_fields
56
+
51
57
  # Beta feature only available for composite products. If true, products with $0
52
58
  # will not be included when computing composite usage. Defaults to false
53
59
  sig { returns(T.nilable(T::Boolean)) }
@@ -150,6 +156,7 @@ module MetronomeSDK
150
156
  billable_metric_id: String,
151
157
  composite_product_ids: T::Array[String],
152
158
  composite_tags: T::Array[String],
159
+ custom_fields: T::Hash[Symbol, String],
153
160
  exclude_free_usage: T::Boolean,
154
161
  is_refundable: T::Boolean,
155
162
  netsuite_internal_item_id: String,
@@ -178,6 +185,7 @@ module MetronomeSDK
178
185
  composite_product_ids: nil,
179
186
  # Required for COMPOSITE products
180
187
  composite_tags: nil,
188
+ custom_fields: nil,
181
189
  # Beta feature only available for composite products. If true, products with $0
182
190
  # will not be included when computing composite usage. Defaults to false
183
191
  exclude_free_usage: nil,
@@ -224,6 +232,7 @@ module MetronomeSDK
224
232
  billable_metric_id: String,
225
233
  composite_product_ids: T::Array[String],
226
234
  composite_tags: T::Array[String],
235
+ custom_fields: T::Hash[Symbol, String],
227
236
  exclude_free_usage: T::Boolean,
228
237
  is_refundable: T::Boolean,
229
238
  netsuite_internal_item_id: String,
@@ -469,6 +469,14 @@ module MetronomeSDK
469
469
  sig { params(credit_type_id: String).void }
470
470
  attr_writer :credit_type_id
471
471
 
472
+ # This field is only applicable to commit invoice schedules. If true, this
473
+ # schedule will not generate an invoice.
474
+ sig { returns(T.nilable(T::Boolean)) }
475
+ attr_reader :do_not_invoice
476
+
477
+ sig { params(do_not_invoice: T::Boolean).void }
478
+ attr_writer :do_not_invoice
479
+
472
480
  # Enter the unit price and quantity for the charge or instead only send the
473
481
  # amount. If amount is sent, the unit price is assumed to be the amount and
474
482
  # quantity is inferred to be 1.
@@ -518,6 +526,7 @@ module MetronomeSDK
518
526
  sig do
519
527
  params(
520
528
  credit_type_id: String,
529
+ do_not_invoice: T::Boolean,
521
530
  recurring_schedule:
522
531
  MetronomeSDK::V1::Customers::CommitCreateParams::InvoiceSchedule::RecurringSchedule::OrHash,
523
532
  schedule_items:
@@ -529,6 +538,9 @@ module MetronomeSDK
529
538
  def self.new(
530
539
  # Defaults to USD (cents) if not passed.
531
540
  credit_type_id: nil,
541
+ # This field is only applicable to commit invoice schedules. If true, this
542
+ # schedule will not generate an invoice.
543
+ do_not_invoice: nil,
532
544
  # Enter the unit price and quantity for the charge or instead only send the
533
545
  # amount. If amount is sent, the unit price is assumed to be the amount and
534
546
  # quantity is inferred to be 1.
@@ -542,6 +554,7 @@ module MetronomeSDK
542
554
  override.returns(
543
555
  {
544
556
  credit_type_id: String,
557
+ do_not_invoice: T::Boolean,
545
558
  recurring_schedule:
546
559
  MetronomeSDK::V1::Customers::CommitCreateParams::InvoiceSchedule::RecurringSchedule,
547
560
  schedule_items:
@@ -176,6 +176,29 @@ module MetronomeSDK
176
176
  end
177
177
  attr_writer :group_key_filter
178
178
 
179
+ # Only present for `spend_threshold_reached` alerts. Scope alert to a specific
180
+ # group key on individual line items.
181
+ sig do
182
+ returns(
183
+ T.nilable(
184
+ T::Array[
185
+ MetronomeSDK::V1::Customers::CustomerAlert::Alert::GroupValue
186
+ ]
187
+ )
188
+ )
189
+ end
190
+ attr_reader :group_values
191
+
192
+ sig do
193
+ params(
194
+ group_values:
195
+ T::Array[
196
+ MetronomeSDK::V1::Customers::CustomerAlert::Alert::GroupValue::OrHash
197
+ ]
198
+ ).void
199
+ end
200
+ attr_writer :group_values
201
+
179
202
  # Only supported for invoice_total_reached alerts. A list of invoice types to
180
203
  # evaluate.
181
204
  sig { returns(T.nilable(T::Array[String])) }
@@ -211,6 +234,10 @@ module MetronomeSDK
211
234
  ],
212
235
  group_key_filter:
213
236
  MetronomeSDK::V1::Customers::CustomerAlert::Alert::GroupKeyFilter::OrHash,
237
+ group_values:
238
+ T::Array[
239
+ MetronomeSDK::V1::Customers::CustomerAlert::Alert::GroupValue::OrHash
240
+ ],
214
241
  invoice_types_filter: T::Array[String],
215
242
  uniqueness_key: String
216
243
  ).returns(T.attached_class)
@@ -238,6 +265,9 @@ module MetronomeSDK
238
265
  # Scopes alert evaluation to a specific presentation group key on individual line
239
266
  # items. Only present for spend alerts.
240
267
  group_key_filter: nil,
268
+ # Only present for `spend_threshold_reached` alerts. Scope alert to a specific
269
+ # group key on individual line items.
270
+ group_values: nil,
241
271
  # Only supported for invoice_total_reached alerts. A list of invoice types to
242
272
  # evaluate.
243
273
  invoice_types_filter: nil,
@@ -267,6 +297,10 @@ module MetronomeSDK
267
297
  ],
268
298
  group_key_filter:
269
299
  MetronomeSDK::V1::Customers::CustomerAlert::Alert::GroupKeyFilter,
300
+ group_values:
301
+ T::Array[
302
+ MetronomeSDK::V1::Customers::CustomerAlert::Alert::GroupValue
303
+ ],
270
304
  invoice_types_filter: T::Array[String],
271
305
  uniqueness_key: String
272
306
  }
@@ -523,6 +557,32 @@ module MetronomeSDK
523
557
  def to_hash
524
558
  end
525
559
  end
560
+
561
+ class GroupValue < MetronomeSDK::Internal::Type::BaseModel
562
+ OrHash =
563
+ T.type_alias do
564
+ T.any(
565
+ MetronomeSDK::V1::Customers::CustomerAlert::Alert::GroupValue,
566
+ MetronomeSDK::Internal::AnyHash
567
+ )
568
+ end
569
+
570
+ sig { returns(String) }
571
+ attr_accessor :key
572
+
573
+ sig { returns(String) }
574
+ attr_accessor :value
575
+
576
+ sig do
577
+ params(key: String, value: String).returns(T.attached_class)
578
+ end
579
+ def self.new(key:, value:)
580
+ end
581
+
582
+ sig { override.returns({ key: String, value: String }) }
583
+ def to_hash
584
+ end
585
+ end
526
586
  end
527
587
 
528
588
  # The status of the customer alert. If the alert is archived, null will be
@@ -384,6 +384,14 @@ module MetronomeSDK
384
384
  sig { returns(Float) }
385
385
  attr_accessor :total
386
386
 
387
+ # The type of line item. Possible values are 'aws_royalty',
388
+ # 'applied_commit_or_credit', 'scheduled', 'commit_purchase', 'cpu_conversion',
389
+ # 'discount', 'gcp_royalty', 'postpaid_trueup', 'professional_services',
390
+ # 'subscription', 'usage', 'legacy', 'minimum', 'product_charge',
391
+ # 'trial_discount', 'rollover', 'seat', 'grouped_charge'.
392
+ sig { returns(String) }
393
+ attr_accessor :type
394
+
387
395
  # Details about the credit or commit that was applied to this line item. Only
388
396
  # present on line items with product of `USAGE`, `SUBSCRIPTION` or `COMPOSITE`
389
397
  # types.
@@ -713,6 +721,7 @@ module MetronomeSDK
713
721
  credit_type: MetronomeSDK::CreditTypeData::OrHash,
714
722
  name: String,
715
723
  total: Float,
724
+ type: String,
716
725
  applied_commit_or_credit:
717
726
  MetronomeSDK::V1::Customers::Invoice::LineItem::AppliedCommitOrCredit::OrHash,
718
727
  commit_custom_fields: T::Hash[Symbol, String],
@@ -763,6 +772,12 @@ module MetronomeSDK
763
772
  credit_type:,
764
773
  name:,
765
774
  total:,
775
+ # The type of line item. Possible values are 'aws_royalty',
776
+ # 'applied_commit_or_credit', 'scheduled', 'commit_purchase', 'cpu_conversion',
777
+ # 'discount', 'gcp_royalty', 'postpaid_trueup', 'professional_services',
778
+ # 'subscription', 'usage', 'legacy', 'minimum', 'product_charge',
779
+ # 'trial_discount', 'rollover', 'seat', 'grouped_charge'.
780
+ type:,
766
781
  # Details about the credit or commit that was applied to this line item. Only
767
782
  # present on line items with product of `USAGE`, `SUBSCRIPTION` or `COMPOSITE`
768
783
  # types.
@@ -843,6 +858,7 @@ module MetronomeSDK
843
858
  credit_type: MetronomeSDK::CreditTypeData,
844
859
  name: String,
845
860
  total: Float,
861
+ type: String,
846
862
  applied_commit_or_credit:
847
863
  MetronomeSDK::V1::Customers::Invoice::LineItem::AppliedCommitOrCredit,
848
864
  commit_custom_fields: T::Hash[Symbol, String],
@@ -424,6 +424,16 @@ module MetronomeSDK
424
424
  :Primary_red,
425
425
  MetronomeSDK::V1::DashboardGetEmbeddableURLParams::ColorOverride::Name::TaggedSymbol
426
426
  )
427
+ PROGRESS_BAR =
428
+ T.let(
429
+ :Progress_bar,
430
+ MetronomeSDK::V1::DashboardGetEmbeddableURLParams::ColorOverride::Name::TaggedSymbol
431
+ )
432
+ PROGRESS_BAR_BACKGROUND =
433
+ T.let(
434
+ :Progress_bar_background,
435
+ MetronomeSDK::V1::DashboardGetEmbeddableURLParams::ColorOverride::Name::TaggedSymbol
436
+ )
427
437
 
428
438
  sig do
429
439
  override.returns(
@@ -76,6 +76,11 @@ module MetronomeSDK
76
76
  end
77
77
  attr_writer :invoice_schedule
78
78
 
79
+ # If multiple commits are applicable, the one with the lower priority will apply
80
+ # first.
81
+ sig { returns(T.nilable(Float)) }
82
+ attr_accessor :priority
83
+
79
84
  sig { returns(T.nilable(String)) }
80
85
  attr_reader :product_id
81
86
 
@@ -86,6 +91,8 @@ module MetronomeSDK
86
91
  # or credit. A customer's usage needs to meet the condition of at least one of the
87
92
  # specifiers to contribute to a commit's or credit's drawdown. This field cannot
88
93
  # be used together with `applicable_product_ids` or `applicable_product_tags`.
94
+ # Instead, to target usage by product or product tag, pass those values in the
95
+ # body of `specifiers`.
89
96
  sig do
90
97
  returns(
91
98
  T.nilable(
@@ -106,6 +113,7 @@ module MetronomeSDK
106
113
  invoice_contract_id: String,
107
114
  invoice_schedule:
108
115
  MetronomeSDK::V2::ContractEditCommitParams::InvoiceSchedule::OrHash,
116
+ priority: T.nilable(Float),
109
117
  product_id: String,
110
118
  specifiers:
111
119
  T.nilable(
@@ -133,11 +141,16 @@ module MetronomeSDK
133
141
  # ID of contract to use for invoicing
134
142
  invoice_contract_id: nil,
135
143
  invoice_schedule: nil,
144
+ # If multiple commits are applicable, the one with the lower priority will apply
145
+ # first.
146
+ priority: nil,
136
147
  product_id: nil,
137
148
  # List of filters that determine what kind of customer usage draws down a commit
138
149
  # or credit. A customer's usage needs to meet the condition of at least one of the
139
150
  # specifiers to contribute to a commit's or credit's drawdown. This field cannot
140
151
  # be used together with `applicable_product_ids` or `applicable_product_tags`.
152
+ # Instead, to target usage by product or product tag, pass those values in the
153
+ # body of `specifiers`.
141
154
  specifiers: nil,
142
155
  request_options: {}
143
156
  )
@@ -155,6 +168,7 @@ module MetronomeSDK
155
168
  invoice_contract_id: String,
156
169
  invoice_schedule:
157
170
  MetronomeSDK::V2::ContractEditCommitParams::InvoiceSchedule,
171
+ priority: T.nilable(Float),
158
172
  product_id: String,
159
173
  specifiers:
160
174
  T.nilable(
@@ -50,6 +50,11 @@ module MetronomeSDK
50
50
  sig { returns(T.nilable(T::Array[String])) }
51
51
  attr_accessor :applicable_product_tags
52
52
 
53
+ # If multiple commits are applicable, the one with the lower priority will apply
54
+ # first.
55
+ sig { returns(T.nilable(Float)) }
56
+ attr_accessor :priority
57
+
53
58
  sig { returns(T.nilable(String)) }
54
59
  attr_reader :product_id
55
60
 
@@ -60,6 +65,8 @@ module MetronomeSDK
60
65
  # or credit. A customer's usage needs to meet the condition of at least one of the
61
66
  # specifiers to contribute to a commit's or credit's drawdown. This field cannot
62
67
  # be used together with `applicable_product_ids` or `applicable_product_tags`.
68
+ # Instead, to target usage by product or product tag, pass those values in the
69
+ # body of `specifiers`.
63
70
  sig do
64
71
  returns(
65
72
  T.nilable(
@@ -77,6 +84,7 @@ module MetronomeSDK
77
84
  MetronomeSDK::V2::ContractEditCreditParams::AccessSchedule::OrHash,
78
85
  applicable_product_ids: T.nilable(T::Array[String]),
79
86
  applicable_product_tags: T.nilable(T::Array[String]),
87
+ priority: T.nilable(Float),
80
88
  product_id: String,
81
89
  specifiers:
82
90
  T.nilable(
@@ -99,11 +107,16 @@ module MetronomeSDK
99
107
  # Which tags the credit applies to. If both applicable_product_ids and
100
108
  # applicable_product_tags are not provided, the credit applies to all products.
101
109
  applicable_product_tags: nil,
110
+ # If multiple commits are applicable, the one with the lower priority will apply
111
+ # first.
112
+ priority: nil,
102
113
  product_id: nil,
103
114
  # List of filters that determine what kind of customer usage draws down a commit
104
115
  # or credit. A customer's usage needs to meet the condition of at least one of the
105
116
  # specifiers to contribute to a commit's or credit's drawdown. This field cannot
106
117
  # be used together with `applicable_product_ids` or `applicable_product_tags`.
118
+ # Instead, to target usage by product or product tag, pass those values in the
119
+ # body of `specifiers`.
107
120
  specifiers: nil,
108
121
  request_options: {}
109
122
  )
@@ -118,6 +131,7 @@ module MetronomeSDK
118
131
  MetronomeSDK::V2::ContractEditCreditParams::AccessSchedule,
119
132
  applicable_product_ids: T.nilable(T::Array[String]),
120
133
  applicable_product_tags: T.nilable(T::Array[String]),
134
+ priority: T.nilable(Float),
121
135
  product_id: String,
122
136
  specifiers:
123
137
  T.nilable(