moov_ruby 26.4.6 → 26.7.0.pre.dev.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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/cards.rb +158 -0
  3. data/lib/moov/models/components/amountdecimalrange.rb +36 -0
  4. data/lib/moov/models/components/amountdecimalrange.rbi +15 -0
  5. data/lib/moov/models/components/amountdecimalrangeupdate.rb +36 -0
  6. data/lib/moov/models/components/amountdecimalrangeupdate.rbi +15 -0
  7. data/lib/moov/models/components/cardmetadata.rb +79 -0
  8. data/lib/moov/models/components/cardmetadata.rbi +35 -0
  9. data/lib/moov/models/components/cardmetadatarequest.rb +38 -0
  10. data/lib/moov/models/components/cardmetadatarequest.rbi +15 -0
  11. data/lib/moov/models/components/createdtransfer.rb +2 -6
  12. data/lib/moov/models/components/createdtransfer.rbi +0 -2
  13. data/lib/moov/models/components/createpaymentlink.rb +11 -11
  14. data/lib/moov/models/components/createpaymentlink.rbi +4 -4
  15. data/lib/moov/models/components/createpaymentlinkamountdetails.rb +32 -0
  16. data/lib/moov/models/components/createpaymentlinkamountdetails.rbi +13 -0
  17. data/lib/moov/models/components/createpaymentlinkamountdetailsvalidationerror.rb +32 -0
  18. data/lib/moov/models/components/createpaymentlinkamountdetailsvalidationerror.rbi +13 -0
  19. data/lib/moov/models/components/createtransfer.rb +2 -6
  20. data/lib/moov/models/components/createtransfer.rbi +0 -2
  21. data/lib/moov/models/components/createtransferamountdetails.rb +6 -2
  22. data/lib/moov/models/components/createtransferamountdetails.rbi +2 -0
  23. data/lib/moov/models/components/createtransferamountdetailsvalidationerror.rb +6 -2
  24. data/lib/moov/models/components/createtransferamountdetailsvalidationerror.rbi +2 -0
  25. data/lib/moov/models/components/paymentlink.rb +15 -15
  26. data/lib/moov/models/components/paymentlink.rbi +4 -4
  27. data/lib/moov/models/components/paymentlinkamountdetails.rb +32 -0
  28. data/lib/moov/models/components/paymentlinkamountdetails.rbi +13 -0
  29. data/lib/moov/models/components/paymentlinkpaymentdetails.rb +14 -2
  30. data/lib/moov/models/components/paymentlinkpaymentdetails.rbi +6 -0
  31. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rb +19 -0
  32. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rbi +11 -0
  33. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rb +14 -2
  34. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rbi +6 -0
  35. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rb +19 -0
  36. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rbi +11 -0
  37. data/lib/moov/models/components/transfer.rb +2 -6
  38. data/lib/moov/models/components/transfer.rbi +0 -2
  39. data/lib/moov/models/components/transferamountdetails.rb +6 -2
  40. data/lib/moov/models/components/transferamountdetails.rbi +2 -0
  41. data/lib/moov/models/components/transferdestination.rb +2 -8
  42. data/lib/moov/models/components/transferdestination.rbi +0 -2
  43. data/lib/moov/models/components/updatepaymentlink.rb +6 -6
  44. data/lib/moov/models/components/updatepaymentlink.rbi +2 -2
  45. data/lib/moov/models/components/updatepaymentlinkamountdetails.rb +32 -0
  46. data/lib/moov/models/components/updatepaymentlinkamountdetails.rbi +13 -0
  47. data/lib/moov/models/components/updatepaymentlinkamountdetailsvalidationerror.rb +32 -0
  48. data/lib/moov/models/components/updatepaymentlinkamountdetailsvalidationerror.rbi +13 -0
  49. data/lib/moov/models/components/webhookdatabankaccountdeleted.rb +2 -6
  50. data/lib/moov/models/components/webhookdatabankaccountdeleted.rbi +0 -2
  51. data/lib/moov/models/components.rb +11 -3
  52. data/lib/moov/models/errors/cardmetadatarequesterror.rb +44 -0
  53. data/lib/moov/models/errors/cardmetadatarequesterror.rbi +19 -0
  54. data/lib/moov/models/errors/createpaymentlinkerror.rb +6 -6
  55. data/lib/moov/models/errors/createpaymentlinkerror.rbi +2 -2
  56. data/lib/moov/models/errors/transfer_error.rb +2 -6
  57. data/lib/moov/models/errors/transfer_error.rbi +0 -2
  58. data/lib/moov/models/errors/transfervalidationerror.rb +2 -6
  59. data/lib/moov/models/errors/transfervalidationerror.rbi +0 -2
  60. data/lib/moov/models/errors/updatepaymentlinkerror.rb +6 -6
  61. data/lib/moov/models/errors/updatepaymentlinkerror.rbi +2 -2
  62. data/lib/moov/models/errors.rb +1 -0
  63. data/lib/moov/models/operations/getcardmetadata_response.rb +48 -0
  64. data/lib/moov/models/operations/getcardmetadata_response.rbi +21 -0
  65. data/lib/moov/models/operations.rb +1 -0
  66. data/lib/moov/sdkconfiguration.rb +3 -3
  67. metadata +29 -9
  68. data/lib/moov/models/components/rtpfailurecode.rb +0 -27
  69. data/lib/moov/models/components/rtpfailurecode.rbi +0 -11
  70. data/lib/moov/models/components/rtptransactiondetails.rb +0 -58
  71. data/lib/moov/models/components/rtptransactiondetails.rbi +0 -25
  72. data/lib/moov/models/components/rtptransactionstatus.rb +0 -21
  73. data/lib/moov/models/components/rtptransactionstatus.rbi +0 -11
@@ -28,8 +28,6 @@ class Moov::Models::Components::TransferDestination
28
28
  def google_pay=(str_); end
29
29
  def card_details(); end
30
30
  def card_details=(str_); end
31
- def rtp_details(); end
32
- def rtp_details=(str_); end
33
31
  def instant_bank_details(); end
34
32
  def instant_bank_details=(str_); end
35
33
  end
@@ -14,8 +14,6 @@ module Moov
14
14
 
15
15
 
16
16
  field :amount, Crystalline::Nilable.new(Models::Components::AmountUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
17
-
18
- field :sales_tax_amount, Crystalline::Nilable.new(Models::Components::AmountUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('salesTaxAmount') } }
19
17
  # Customizable display options for a payment link.
20
18
  field :display, Crystalline::Nilable.new(Models::Components::PaymentLinkDisplayOptionsUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('display') } }
21
19
 
@@ -28,17 +26,19 @@ module Moov
28
26
  # When line items are provided, their total plus tax must equal the payment link amount.
29
27
  field :line_items, Crystalline::Nilable.new(Models::Components::CreatePaymentLinkLineItemsUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
30
28
 
29
+ field :amount_details, Crystalline::Nilable.new(Models::Components::UpdatePaymentLinkAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
30
+
31
31
  field :expires_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiresOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
32
32
 
33
- sig { params(amount: T.nilable(Models::Components::AmountUpdate), sales_tax_amount: T.nilable(Models::Components::AmountUpdate), display: T.nilable(Models::Components::PaymentLinkDisplayOptionsUpdate), customer: T.nilable(Models::Components::PaymentLinkCustomerOptions), payment: T.nilable(Models::Components::PaymentLinkPaymentDetailsUpdate), payout: T.nilable(Models::Components::PaymentLinkPayoutDetailsUpdate), line_items: T.nilable(Models::Components::CreatePaymentLinkLineItemsUpdate), expires_on: T.nilable(::DateTime)).void }
34
- def initialize(amount: nil, sales_tax_amount: nil, display: nil, customer: nil, payment: nil, payout: nil, line_items: nil, expires_on: nil)
33
+ sig { params(amount: T.nilable(Models::Components::AmountUpdate), display: T.nilable(Models::Components::PaymentLinkDisplayOptionsUpdate), customer: T.nilable(Models::Components::PaymentLinkCustomerOptions), payment: T.nilable(Models::Components::PaymentLinkPaymentDetailsUpdate), payout: T.nilable(Models::Components::PaymentLinkPayoutDetailsUpdate), line_items: T.nilable(Models::Components::CreatePaymentLinkLineItemsUpdate), amount_details: T.nilable(Models::Components::UpdatePaymentLinkAmountDetails), expires_on: T.nilable(::DateTime)).void }
34
+ def initialize(amount: nil, display: nil, customer: nil, payment: nil, payout: nil, line_items: nil, amount_details: nil, expires_on: nil)
35
35
  @amount = amount
36
- @sales_tax_amount = sales_tax_amount
37
36
  @display = display
38
37
  @customer = customer
39
38
  @payment = payment
40
39
  @payout = payout
41
40
  @line_items = line_items
41
+ @amount_details = amount_details
42
42
  @expires_on = expires_on
43
43
  end
44
44
 
@@ -46,12 +46,12 @@ module Moov
46
46
  def ==(other)
47
47
  return false unless other.is_a? self.class
48
48
  return false unless @amount == other.amount
49
- return false unless @sales_tax_amount == other.sales_tax_amount
50
49
  return false unless @display == other.display
51
50
  return false unless @customer == other.customer
52
51
  return false unless @payment == other.payment
53
52
  return false unless @payout == other.payout
54
53
  return false unless @line_items == other.line_items
54
+ return false unless @amount_details == other.amount_details
55
55
  return false unless @expires_on == other.expires_on
56
56
  true
57
57
  end
@@ -10,8 +10,6 @@ end
10
10
  class Moov::Models::Components::UpdatePaymentLink
11
11
  def amount(); end
12
12
  def amount=(str_); end
13
- def sales_tax_amount(); end
14
- def sales_tax_amount=(str_); end
15
13
  def display(); end
16
14
  def display=(str_); end
17
15
  def customer(); end
@@ -22,6 +20,8 @@ class Moov::Models::Components::UpdatePaymentLink
22
20
  def payout=(str_); end
23
21
  def line_items(); end
24
22
  def line_items=(str_); end
23
+ def amount_details(); end
24
+ def amount_details=(str_); end
25
25
  def expires_on(); end
26
26
  def expires_on=(str_); end
27
27
  end
@@ -0,0 +1,32 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ class UpdatePaymentLinkAmountDetails
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The amount of tax applied to the payment link.
16
+ field :tax, Crystalline::Nilable.new(Models::Components::AmountDecimalUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tax') } }
17
+
18
+ sig { params(tax: T.nilable(Models::Components::AmountDecimalUpdate)).void }
19
+ def initialize(tax: nil)
20
+ @tax = tax
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a? self.class
26
+ return false unless @tax == other.tax
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::UpdatePaymentLinkAmountDetails
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::UpdatePaymentLinkAmountDetails
11
+ def tax(); end
12
+ def tax=(str_); end
13
+ end
@@ -0,0 +1,32 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ class UpdatePaymentLinkAmountDetailsValidationError
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+
16
+ field :tax, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tax') } }
17
+
18
+ sig { params(tax: T.nilable(::String)).void }
19
+ def initialize(tax: nil)
20
+ @tax = tax
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a? self.class
26
+ return false unless @tax == other.tax
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::UpdatePaymentLinkAmountDetailsValidationError
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::UpdatePaymentLinkAmountDetailsValidationError
11
+ def tax(); end
12
+ def tax=(str_); end
13
+ end
@@ -17,13 +17,10 @@ module Moov
17
17
 
18
18
  field :account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('accountID'), required: true } }
19
19
 
20
- field :status, Models::Components::BankAccountStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::BankAccountStatus, false) } }
21
-
22
- sig { params(bank_account_id: ::String, account_id: ::String, status: Models::Components::BankAccountStatus).void }
23
- def initialize(bank_account_id:, account_id:, status:)
20
+ sig { params(bank_account_id: ::String, account_id: ::String).void }
21
+ def initialize(bank_account_id:, account_id:)
24
22
  @bank_account_id = bank_account_id
25
23
  @account_id = account_id
26
- @status = status
27
24
  end
28
25
 
29
26
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -31,7 +28,6 @@ module Moov
31
28
  return false unless other.is_a? self.class
32
29
  return false unless @bank_account_id == other.bank_account_id
33
30
  return false unless @account_id == other.account_id
34
- return false unless @status == other.status
35
31
  true
36
32
  end
37
33
  end
@@ -12,6 +12,4 @@ class Moov::Models::Components::WebhookDataBankAccountDeleted
12
12
  def bank_account_id=(str_); end
13
13
  def account_id(); end
14
14
  def account_id=(str_); end
15
- def status(); end
16
- def status=(str_); end
17
15
  end
@@ -49,6 +49,8 @@ module Moov
49
49
  autoload :Adjustment, 'moov/models/components/adjustment.rb'
50
50
  autoload :Amount, 'moov/models/components/amount.rb'
51
51
  autoload :AmountDecimal, 'moov/models/components/amountdecimal.rb'
52
+ autoload :AmountDecimalRange, 'moov/models/components/amountdecimalrange.rb'
53
+ autoload :AmountDecimalRangeUpdate, 'moov/models/components/amountdecimalrangeupdate.rb'
52
54
  autoload :AmountDecimalUpdate, 'moov/models/components/amountdecimalupdate.rb'
53
55
  autoload :AmountDecimalValidationError, 'moov/models/components/amountdecimalvalidationerror.rb'
54
56
  autoload :AmountUpdate, 'moov/models/components/amountupdate.rb'
@@ -125,6 +127,8 @@ module Moov
125
127
  autoload :CardExpiration, 'moov/models/components/cardexpiration.rb'
126
128
  autoload :CardExpirationError, 'moov/models/components/cardexpirationerror.rb'
127
129
  autoload :CardIssuingNetwork, 'moov/models/components/cardissuingnetwork.rb'
130
+ autoload :CardMetadata, 'moov/models/components/cardmetadata.rb'
131
+ autoload :CardMetadataRequest, 'moov/models/components/cardmetadatarequest.rb'
128
132
  autoload :CardPaymentDetails, 'moov/models/components/cardpaymentdetails.rb'
129
133
  autoload :CardPaymentDetailsError, 'moov/models/components/cardpaymentdetailserror.rb'
130
134
  autoload :CardPaymentPaymentMethod, 'moov/models/components/cardpaymentpaymentmethod.rb'
@@ -189,6 +193,8 @@ module Moov
189
193
  autoload :CreateInvoiceLineItemsValidationError, 'moov/models/components/createinvoicelineitemsvalidationerror.rb'
190
194
  autoload :CreateInvoicePayment, 'moov/models/components/createinvoicepayment.rb'
191
195
  autoload :CreatePaymentLink, 'moov/models/components/createpaymentlink.rb'
196
+ autoload :CreatePaymentLinkAmountDetails, 'moov/models/components/createpaymentlinkamountdetails.rb'
197
+ autoload :CreatePaymentLinkAmountDetailsValidationError, 'moov/models/components/createpaymentlinkamountdetailsvalidationerror.rb'
192
198
  autoload :CreatePaymentLinkLineItem, 'moov/models/components/createpaymentlinklineitem.rb'
193
199
  autoload :CreatePaymentLinkLineItemOption, 'moov/models/components/createpaymentlinklineitemoption.rb'
194
200
  autoload :CreatePaymentLinkLineItemOptionValidationError, 'moov/models/components/createpaymentlinklineitemoptionvalidationerror.rb'
@@ -415,6 +421,7 @@ module Moov
415
421
  autoload :PatchWallet, 'moov/models/components/patchwallet.rb'
416
422
  autoload :PaymentDetailsError, 'moov/models/components/paymentdetailserror.rb'
417
423
  autoload :PaymentLink, 'moov/models/components/paymentlink.rb'
424
+ autoload :PaymentLinkAmountDetails, 'moov/models/components/paymentlinkamountdetails.rb'
418
425
  autoload :PaymentLinkCustomerOptions, 'moov/models/components/paymentlinkcustomeroptions.rb'
419
426
  autoload :PaymentLinkDisplayOptions, 'moov/models/components/paymentlinkdisplayoptions.rb'
420
427
  autoload :PaymentLinkDisplayOptionsUpdate, 'moov/models/components/paymentlinkdisplayoptionsupdate.rb'
@@ -424,6 +431,8 @@ module Moov
424
431
  autoload :PaymentLinkLineItems, 'moov/models/components/paymentlinklineitems.rb'
425
432
  autoload :PaymentLinkPaymentDetails, 'moov/models/components/paymentlinkpaymentdetails.rb'
426
433
  autoload :PaymentLinkPaymentDetailsUpdate, 'moov/models/components/paymentlinkpaymentdetailsupdate.rb'
434
+ autoload :PaymentLinkPaymentDetailsUpdateAmountType, 'moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rb'
435
+ autoload :PaymentLinkPaymentDetailsAmountType, 'moov/models/components/paymentlinkpaymentdetails_amounttype.rb'
427
436
  autoload :PaymentLinkPayoutDetails, 'moov/models/components/paymentlinkpayoutdetails.rb'
428
437
  autoload :PaymentLinkPayoutDetailsUpdate, 'moov/models/components/paymentlinkpayoutdetailsupdate.rb'
429
438
  autoload :PaymentLinkStatus, 'moov/models/components/paymentlinkstatus.rb'
@@ -481,12 +490,9 @@ module Moov
481
490
  autoload :PutTipPresets, 'moov/models/components/puttippresets.rb'
482
491
  autoload :PutTransferConfig, 'moov/models/components/puttransferconfig.rb'
483
492
  autoload :QRCode, 'moov/models/components/qrcode.rb'
484
- autoload :RTPFailureCode, 'moov/models/components/rtpfailurecode.rb'
485
493
  autoload :RTPInstitution, 'moov/models/components/rtpinstitution.rb'
486
494
  autoload :RTPRejectionCode, 'moov/models/components/rtprejectioncode.rb'
487
495
  autoload :RTPServices, 'moov/models/components/rtpservices.rb'
488
- autoload :RTPTransactionDetails, 'moov/models/components/rtptransactiondetails.rb'
489
- autoload :RTPTransactionStatus, 'moov/models/components/rtptransactionstatus.rb'
490
496
  autoload :ReceiptKind, 'moov/models/components/receiptkind.rb'
491
497
  autoload :ReceiptRequest, 'moov/models/components/receiptrequest.rb'
492
498
  autoload :ReceiptResponse, 'moov/models/components/receiptresponse.rb'
@@ -607,6 +613,8 @@ module Moov
607
613
  autoload :UpdateIssuedCard, 'moov/models/components/updateissuedcard.rb'
608
614
  autoload :UpdateIssuedCardState, 'moov/models/components/updateissuedcardstate.rb'
609
615
  autoload :UpdatePaymentLink, 'moov/models/components/updatepaymentlink.rb'
616
+ autoload :UpdatePaymentLinkAmountDetails, 'moov/models/components/updatepaymentlinkamountdetails.rb'
617
+ autoload :UpdatePaymentLinkAmountDetailsValidationError, 'moov/models/components/updatepaymentlinkamountdetailsvalidationerror.rb'
610
618
  autoload :UpdateRepresentative, 'moov/models/components/updaterepresentative.rb'
611
619
  autoload :UpdateRepresentativeAddress, 'moov/models/components/updaterepresentative_address.rb'
612
620
  autoload :UpdateRepresentativeBirthDate, 'moov/models/components/updaterepresentative_birthdate.rb'
@@ -0,0 +1,44 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Errors
10
+
11
+ class CardMetadataRequestError < StandardError
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+
16
+ field :error, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('error') } }
17
+
18
+ field :e2ee, Crystalline::Nilable.new(Models::Components::End2EndEncryptionError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('e2ee') } }
19
+
20
+ field :card_number, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardNumber') } }
21
+ # Raw HTTP response; suitable for custom response parsing
22
+ field :raw_response, Crystalline::Nilable.new(::Faraday::Response), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('-') } }
23
+
24
+ sig { params(error: T.nilable(::String), e2ee: T.nilable(Models::Components::End2EndEncryptionError), card_number: T.nilable(::String), raw_response: T.nilable(::Faraday::Response)).void }
25
+ def initialize(error: nil, e2ee: nil, card_number: nil, raw_response: nil)
26
+ @error = error
27
+ @e2ee = e2ee
28
+ @card_number = card_number
29
+ @raw_response = raw_response
30
+ end
31
+
32
+ sig { params(other: T.untyped).returns(T::Boolean) }
33
+ def ==(other)
34
+ return false unless other.is_a? self.class
35
+ return false unless @error == other.error
36
+ return false unless @e2ee == other.e2ee
37
+ return false unless @card_number == other.card_number
38
+ return false unless @raw_response == other.raw_response
39
+ true
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Errors::CardMetadataRequestError
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Errors::CardMetadataRequestError
11
+ def error(); end
12
+ def error=(str_); end
13
+ def e2ee(); end
14
+ def e2ee=(str_); end
15
+ def card_number(); end
16
+ def card_number=(str_); end
17
+ def raw_response(); end
18
+ def raw_response=(str_); end
19
+ end
@@ -19,8 +19,6 @@ module Moov
19
19
 
20
20
  field :amount, Crystalline::Nilable.new(Models::Components::AmountValidationError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
21
21
 
22
- field :sales_tax_amount, Crystalline::Nilable.new(Models::Components::AmountValidationError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('salesTaxAmount') } }
23
-
24
22
  field :max_uses, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('maxUses') } }
25
23
 
26
24
  field :expires_on, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiresOn') } }
@@ -32,21 +30,23 @@ module Moov
32
30
  field :payout, Crystalline::Nilable.new(Models::Components::PayoutDetailsError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('payout') } }
33
31
 
34
32
  field :line_items, Crystalline::Nilable.new(Models::Components::CreatePaymentLinkLineItemsValidationError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
33
+
34
+ field :amount_details, Crystalline::Nilable.new(Models::Components::CreatePaymentLinkAmountDetailsValidationError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
35
35
  # Raw HTTP response; suitable for custom response parsing
36
36
  field :raw_response, Crystalline::Nilable.new(::Faraday::Response), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('-') } }
37
37
 
38
- sig { params(partner_account_id: T.nilable(::String), merchant_payment_method_id: T.nilable(::String), amount: T.nilable(Models::Components::AmountValidationError), sales_tax_amount: T.nilable(Models::Components::AmountValidationError), max_uses: T.nilable(::String), expires_on: T.nilable(::String), display: T.nilable(Models::Components::DisplayOptionsError), payment: T.nilable(Models::Components::PaymentDetailsError), payout: T.nilable(Models::Components::PayoutDetailsError), line_items: T.nilable(Models::Components::CreatePaymentLinkLineItemsValidationError), raw_response: T.nilable(::Faraday::Response)).void }
39
- def initialize(partner_account_id: nil, merchant_payment_method_id: nil, amount: nil, sales_tax_amount: nil, max_uses: nil, expires_on: nil, display: nil, payment: nil, payout: nil, line_items: nil, raw_response: nil)
38
+ sig { params(partner_account_id: T.nilable(::String), merchant_payment_method_id: T.nilable(::String), amount: T.nilable(Models::Components::AmountValidationError), max_uses: T.nilable(::String), expires_on: T.nilable(::String), display: T.nilable(Models::Components::DisplayOptionsError), payment: T.nilable(Models::Components::PaymentDetailsError), payout: T.nilable(Models::Components::PayoutDetailsError), line_items: T.nilable(Models::Components::CreatePaymentLinkLineItemsValidationError), amount_details: T.nilable(Models::Components::CreatePaymentLinkAmountDetailsValidationError), raw_response: T.nilable(::Faraday::Response)).void }
39
+ def initialize(partner_account_id: nil, merchant_payment_method_id: nil, amount: nil, max_uses: nil, expires_on: nil, display: nil, payment: nil, payout: nil, line_items: nil, amount_details: nil, raw_response: nil)
40
40
  @partner_account_id = partner_account_id
41
41
  @merchant_payment_method_id = merchant_payment_method_id
42
42
  @amount = amount
43
- @sales_tax_amount = sales_tax_amount
44
43
  @max_uses = max_uses
45
44
  @expires_on = expires_on
46
45
  @display = display
47
46
  @payment = payment
48
47
  @payout = payout
49
48
  @line_items = line_items
49
+ @amount_details = amount_details
50
50
  @raw_response = raw_response
51
51
  end
52
52
 
@@ -56,13 +56,13 @@ module Moov
56
56
  return false unless @partner_account_id == other.partner_account_id
57
57
  return false unless @merchant_payment_method_id == other.merchant_payment_method_id
58
58
  return false unless @amount == other.amount
59
- return false unless @sales_tax_amount == other.sales_tax_amount
60
59
  return false unless @max_uses == other.max_uses
61
60
  return false unless @expires_on == other.expires_on
62
61
  return false unless @display == other.display
63
62
  return false unless @payment == other.payment
64
63
  return false unless @payout == other.payout
65
64
  return false unless @line_items == other.line_items
65
+ return false unless @amount_details == other.amount_details
66
66
  return false unless @raw_response == other.raw_response
67
67
  true
68
68
  end
@@ -14,8 +14,6 @@ class Moov::Models::Errors::CreatePaymentLinkError
14
14
  def merchant_payment_method_id=(str_); end
15
15
  def amount(); end
16
16
  def amount=(str_); end
17
- def sales_tax_amount(); end
18
- def sales_tax_amount=(str_); end
19
17
  def max_uses(); end
20
18
  def max_uses=(str_); end
21
19
  def expires_on(); end
@@ -28,6 +26,8 @@ class Moov::Models::Errors::CreatePaymentLinkError
28
26
  def payout=(str_); end
29
27
  def line_items(); end
30
28
  def line_items=(str_); end
29
+ def amount_details(); end
30
+ def amount_details=(str_); end
31
31
  def raw_response(); end
32
32
  def raw_response=(str_); end
33
33
  end
@@ -62,8 +62,6 @@ module Moov
62
62
  field :occurrence_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('occurrenceID') } }
63
63
 
64
64
  field :payment_link_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentLinkCode') } }
65
-
66
- field :sales_tax_amount, Crystalline::Nilable.new(Models::Components::Amount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('salesTaxAmount') } }
67
65
  # Optional alias from a foreign/external system which can be used to reference this resource.
68
66
  field :foreign_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('foreignID') } }
69
67
  # An optional collection of line items for a transfer.
@@ -76,8 +74,8 @@ module Moov
76
74
  # Raw HTTP response; suitable for custom response parsing
77
75
  field :raw_response, Crystalline::Nilable.new(::Faraday::Response), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('-') } }
78
76
 
79
- sig { params(transfer_id: ::String, created_on: ::DateTime, source: Models::Components::TransferSource, destination: Models::Components::TransferDestination, status: Models::Components::TransferStatus, amount: Models::Components::Amount, completed_on: T.nilable(::DateTime), failure_reason: T.nilable(Models::Components::TransferFailureReason), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), facilitator_fee: T.nilable(Models::Components::FacilitatorFee), moov_fee: T.nilable(::Integer), moov_fee_decimal: T.nilable(::String), moov_fee_details: T.nilable(Models::Components::MoovFeeDetails), moov_fees: T.nilable(T::Array[Models::Components::MoovFee]), group_id: T.nilable(::String), cancellations: T.nilable(T::Array[Models::Components::Cancellation]), refunded_amount: T.nilable(Models::Components::Amount), refunds: T.nilable(T::Array[Models::Components::CardAcquiringRefund]), disputed_amount: T.nilable(Models::Components::Amount), disputes: T.nilable(T::Array[Models::Components::CardAcquiringDispute]), sweep_id: T.nilable(::String), schedule_id: T.nilable(::String), occurrence_id: T.nilable(::String), payment_link_code: T.nilable(::String), sales_tax_amount: T.nilable(Models::Components::Amount), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::TransferLineItems), invoice_id: T.nilable(::String), amount_details: T.nilable(Models::Components::TransferAmountDetails), raw_response: T.nilable(::Faraday::Response)).void }
80
- def initialize(transfer_id:, created_on:, source:, destination:, status:, amount:, completed_on: nil, failure_reason: nil, description: nil, metadata: nil, facilitator_fee: nil, moov_fee: nil, moov_fee_decimal: nil, moov_fee_details: nil, moov_fees: nil, group_id: nil, cancellations: nil, refunded_amount: nil, refunds: nil, disputed_amount: nil, disputes: nil, sweep_id: nil, schedule_id: nil, occurrence_id: nil, payment_link_code: nil, sales_tax_amount: nil, foreign_id: nil, line_items: nil, invoice_id: nil, amount_details: nil, raw_response: nil)
77
+ sig { params(transfer_id: ::String, created_on: ::DateTime, source: Models::Components::TransferSource, destination: Models::Components::TransferDestination, status: Models::Components::TransferStatus, amount: Models::Components::Amount, completed_on: T.nilable(::DateTime), failure_reason: T.nilable(Models::Components::TransferFailureReason), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), facilitator_fee: T.nilable(Models::Components::FacilitatorFee), moov_fee: T.nilable(::Integer), moov_fee_decimal: T.nilable(::String), moov_fee_details: T.nilable(Models::Components::MoovFeeDetails), moov_fees: T.nilable(T::Array[Models::Components::MoovFee]), group_id: T.nilable(::String), cancellations: T.nilable(T::Array[Models::Components::Cancellation]), refunded_amount: T.nilable(Models::Components::Amount), refunds: T.nilable(T::Array[Models::Components::CardAcquiringRefund]), disputed_amount: T.nilable(Models::Components::Amount), disputes: T.nilable(T::Array[Models::Components::CardAcquiringDispute]), sweep_id: T.nilable(::String), schedule_id: T.nilable(::String), occurrence_id: T.nilable(::String), payment_link_code: T.nilable(::String), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::TransferLineItems), invoice_id: T.nilable(::String), amount_details: T.nilable(Models::Components::TransferAmountDetails), raw_response: T.nilable(::Faraday::Response)).void }
78
+ def initialize(transfer_id:, created_on:, source:, destination:, status:, amount:, completed_on: nil, failure_reason: nil, description: nil, metadata: nil, facilitator_fee: nil, moov_fee: nil, moov_fee_decimal: nil, moov_fee_details: nil, moov_fees: nil, group_id: nil, cancellations: nil, refunded_amount: nil, refunds: nil, disputed_amount: nil, disputes: nil, sweep_id: nil, schedule_id: nil, occurrence_id: nil, payment_link_code: nil, foreign_id: nil, line_items: nil, invoice_id: nil, amount_details: nil, raw_response: nil)
81
79
  @transfer_id = transfer_id
82
80
  @created_on = created_on
83
81
  @source = source
@@ -103,7 +101,6 @@ module Moov
103
101
  @schedule_id = schedule_id
104
102
  @occurrence_id = occurrence_id
105
103
  @payment_link_code = payment_link_code
106
- @sales_tax_amount = sales_tax_amount
107
104
  @foreign_id = foreign_id
108
105
  @line_items = line_items
109
106
  @invoice_id = invoice_id
@@ -139,7 +136,6 @@ module Moov
139
136
  return false unless @schedule_id == other.schedule_id
140
137
  return false unless @occurrence_id == other.occurrence_id
141
138
  return false unless @payment_link_code == other.payment_link_code
142
- return false unless @sales_tax_amount == other.sales_tax_amount
143
139
  return false unless @foreign_id == other.foreign_id
144
140
  return false unless @line_items == other.line_items
145
141
  return false unless @invoice_id == other.invoice_id
@@ -58,8 +58,6 @@ class Moov::Models::Errors::TransferError
58
58
  def occurrence_id=(str_); end
59
59
  def payment_link_code(); end
60
60
  def payment_link_code=(str_); end
61
- def sales_tax_amount(); end
62
- def sales_tax_amount=(str_); end
63
61
  def foreign_id(); end
64
62
  def foreign_id=(str_); end
65
63
  def line_items(); end
@@ -29,8 +29,6 @@ module Moov
29
29
 
30
30
  field :metadata, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
31
31
 
32
- field :sales_tax_amount, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('salesTaxAmount') } }
33
-
34
32
  field :foreign_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('foreignID') } }
35
33
 
36
34
  field :line_items, Crystalline::Nilable.new(Models::Components::CreateTransferLineItemsValidationError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
@@ -39,8 +37,8 @@ module Moov
39
37
  # Raw HTTP response; suitable for custom response parsing
40
38
  field :raw_response, Crystalline::Nilable.new(::Faraday::Response), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('-') } }
41
39
 
42
- sig { params(amount: T.nilable(::String), source: T.nilable(::String), source_payment_method_id: T.nilable(::String), destination_payment_method_id: T.nilable(::String), description: T.nilable(::String), facilitator_fee_total_decimal: T.nilable(::String), facilitator_fee_markup_decimal: T.nilable(::String), metadata: T.nilable(::String), sales_tax_amount: T.nilable(::String), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::CreateTransferLineItemsValidationError), amount_details: T.nilable(Models::Components::CreateTransferAmountDetailsValidationError), raw_response: T.nilable(::Faraday::Response)).void }
43
- def initialize(amount: nil, source: nil, source_payment_method_id: nil, destination_payment_method_id: nil, description: nil, facilitator_fee_total_decimal: nil, facilitator_fee_markup_decimal: nil, metadata: nil, sales_tax_amount: nil, foreign_id: nil, line_items: nil, amount_details: nil, raw_response: nil)
40
+ sig { params(amount: T.nilable(::String), source: T.nilable(::String), source_payment_method_id: T.nilable(::String), destination_payment_method_id: T.nilable(::String), description: T.nilable(::String), facilitator_fee_total_decimal: T.nilable(::String), facilitator_fee_markup_decimal: T.nilable(::String), metadata: T.nilable(::String), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::CreateTransferLineItemsValidationError), amount_details: T.nilable(Models::Components::CreateTransferAmountDetailsValidationError), raw_response: T.nilable(::Faraday::Response)).void }
41
+ def initialize(amount: nil, source: nil, source_payment_method_id: nil, destination_payment_method_id: nil, description: nil, facilitator_fee_total_decimal: nil, facilitator_fee_markup_decimal: nil, metadata: nil, foreign_id: nil, line_items: nil, amount_details: nil, raw_response: nil)
44
42
  @amount = amount
45
43
  @source = source
46
44
  @source_payment_method_id = source_payment_method_id
@@ -49,7 +47,6 @@ module Moov
49
47
  @facilitator_fee_total_decimal = facilitator_fee_total_decimal
50
48
  @facilitator_fee_markup_decimal = facilitator_fee_markup_decimal
51
49
  @metadata = metadata
52
- @sales_tax_amount = sales_tax_amount
53
50
  @foreign_id = foreign_id
54
51
  @line_items = line_items
55
52
  @amount_details = amount_details
@@ -67,7 +64,6 @@ module Moov
67
64
  return false unless @facilitator_fee_total_decimal == other.facilitator_fee_total_decimal
68
65
  return false unless @facilitator_fee_markup_decimal == other.facilitator_fee_markup_decimal
69
66
  return false unless @metadata == other.metadata
70
- return false unless @sales_tax_amount == other.sales_tax_amount
71
67
  return false unless @foreign_id == other.foreign_id
72
68
  return false unless @line_items == other.line_items
73
69
  return false unless @amount_details == other.amount_details
@@ -24,8 +24,6 @@ class Moov::Models::Errors::TransferValidationError
24
24
  def facilitator_fee_markup_decimal=(str_); end
25
25
  def metadata(); end
26
26
  def metadata=(str_); end
27
- def sales_tax_amount(); end
28
- def sales_tax_amount=(str_); end
29
27
  def foreign_id(); end
30
28
  def foreign_id=(str_); end
31
29
  def line_items(); end
@@ -15,8 +15,6 @@ module Moov
15
15
 
16
16
  field :amount, Crystalline::Nilable.new(Models::Components::AmountValidationError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
17
17
 
18
- field :sales_tax_amount, Crystalline::Nilable.new(Models::Components::AmountValidationError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('salesTaxAmount') } }
19
-
20
18
  field :expires_on, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiresOn') } }
21
19
 
22
20
  field :display, Crystalline::Nilable.new(Models::Components::DisplayOptionsError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('display') } }
@@ -26,18 +24,20 @@ module Moov
26
24
  field :payout, Crystalline::Nilable.new(Models::Components::PayoutDetailsError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('payout') } }
27
25
 
28
26
  field :line_items, Crystalline::Nilable.new(Models::Components::CreatePaymentLinkLineItemsValidationError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
27
+
28
+ field :amount_details, Crystalline::Nilable.new(Models::Components::UpdatePaymentLinkAmountDetailsValidationError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
29
29
  # Raw HTTP response; suitable for custom response parsing
30
30
  field :raw_response, Crystalline::Nilable.new(::Faraday::Response), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('-') } }
31
31
 
32
- sig { params(amount: T.nilable(Models::Components::AmountValidationError), sales_tax_amount: T.nilable(Models::Components::AmountValidationError), expires_on: T.nilable(::String), display: T.nilable(Models::Components::DisplayOptionsError), payment: T.nilable(Models::Components::PaymentDetailsError), payout: T.nilable(Models::Components::PayoutDetailsError), line_items: T.nilable(Models::Components::CreatePaymentLinkLineItemsValidationError), raw_response: T.nilable(::Faraday::Response)).void }
33
- def initialize(amount: nil, sales_tax_amount: nil, expires_on: nil, display: nil, payment: nil, payout: nil, line_items: nil, raw_response: nil)
32
+ sig { params(amount: T.nilable(Models::Components::AmountValidationError), expires_on: T.nilable(::String), display: T.nilable(Models::Components::DisplayOptionsError), payment: T.nilable(Models::Components::PaymentDetailsError), payout: T.nilable(Models::Components::PayoutDetailsError), line_items: T.nilable(Models::Components::CreatePaymentLinkLineItemsValidationError), amount_details: T.nilable(Models::Components::UpdatePaymentLinkAmountDetailsValidationError), raw_response: T.nilable(::Faraday::Response)).void }
33
+ def initialize(amount: nil, expires_on: nil, display: nil, payment: nil, payout: nil, line_items: nil, amount_details: nil, raw_response: nil)
34
34
  @amount = amount
35
- @sales_tax_amount = sales_tax_amount
36
35
  @expires_on = expires_on
37
36
  @display = display
38
37
  @payment = payment
39
38
  @payout = payout
40
39
  @line_items = line_items
40
+ @amount_details = amount_details
41
41
  @raw_response = raw_response
42
42
  end
43
43
 
@@ -45,12 +45,12 @@ module Moov
45
45
  def ==(other)
46
46
  return false unless other.is_a? self.class
47
47
  return false unless @amount == other.amount
48
- return false unless @sales_tax_amount == other.sales_tax_amount
49
48
  return false unless @expires_on == other.expires_on
50
49
  return false unless @display == other.display
51
50
  return false unless @payment == other.payment
52
51
  return false unless @payout == other.payout
53
52
  return false unless @line_items == other.line_items
53
+ return false unless @amount_details == other.amount_details
54
54
  return false unless @raw_response == other.raw_response
55
55
  true
56
56
  end
@@ -10,8 +10,6 @@ end
10
10
  class Moov::Models::Errors::UpdatePaymentLinkError
11
11
  def amount(); end
12
12
  def amount=(str_); end
13
- def sales_tax_amount(); end
14
- def sales_tax_amount=(str_); end
15
13
  def expires_on(); end
16
14
  def expires_on=(str_); end
17
15
  def display(); end
@@ -22,6 +20,8 @@ class Moov::Models::Errors::UpdatePaymentLinkError
22
20
  def payout=(str_); end
23
21
  def line_items(); end
24
22
  def line_items=(str_); end
23
+ def amount_details(); end
24
+ def amount_details=(str_); end
25
25
  def raw_response(); end
26
26
  def raw_response=(str_); end
27
27
  end
@@ -14,6 +14,7 @@ module Moov
14
14
  autoload :BankAccountValidationError, 'moov/models/errors/bankaccountvalidationerror.rb'
15
15
  autoload :BrandValidationError, 'moov/models/errors/brandvalidationerror.rb'
16
16
  autoload :CardAcquiringRefundError, 'moov/models/errors/cardacquiringrefund_error.rb'
17
+ autoload :CardMetadataRequestError, 'moov/models/errors/cardmetadatarequesterror.rb'
17
18
  autoload :ConnectAccountRequestValidationError, 'moov/models/errors/connectaccountrequestvalidationerror.rb'
18
19
  autoload :CreateAccountError, 'moov/models/errors/createaccounterror.rb'
19
20
  autoload :CreateInvoiceError, 'moov/models/errors/createinvoiceerror.rb'
@@ -0,0 +1,48 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Operations
10
+
11
+ class GetCardMetadataResponse
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # HTTP response content type for this operation
16
+ field :content_type, ::String
17
+ # HTTP response status code for this operation
18
+ field :status_code, ::Integer
19
+ # Raw HTTP response; suitable for custom response parsing
20
+ field :raw_response, ::Faraday::Response
21
+
22
+ field :headers, Crystalline::Hash.new(Symbol, Crystalline::Array.new(::String))
23
+ # The request completed successfully.
24
+ field :card_metadata, Crystalline::Nilable.new(Models::Components::CardMetadata)
25
+
26
+ sig { params(content_type: ::String, status_code: ::Integer, raw_response: ::Faraday::Response, headers: T::Hash[Symbol, T::Array[::String]], card_metadata: T.nilable(Models::Components::CardMetadata)).void }
27
+ def initialize(content_type:, status_code:, raw_response:, headers:, card_metadata: nil)
28
+ @content_type = content_type
29
+ @status_code = status_code
30
+ @raw_response = raw_response
31
+ @headers = headers
32
+ @card_metadata = card_metadata
33
+ end
34
+
35
+ sig { params(other: T.untyped).returns(T::Boolean) }
36
+ def ==(other)
37
+ return false unless other.is_a? self.class
38
+ return false unless @content_type == other.content_type
39
+ return false unless @status_code == other.status_code
40
+ return false unless @raw_response == other.raw_response
41
+ return false unless @headers == other.headers
42
+ return false unless @card_metadata == other.card_metadata
43
+ true
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end