moov_ruby 0.0.0.pre.dev.29 → 0.0.0.pre.dev.31
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.
- checksums.yaml +4 -4
- data/lib/moov/card_issuing.rb +538 -0
- data/lib/moov/files.rb +186 -0
- data/lib/moov/issuing_transactions.rb +123 -0
- data/lib/moov/models/components/applicationscope.rb +1 -0
- data/lib/moov/models/components/authorizationsimulationasyncresponse.rb +32 -0
- data/lib/moov/models/components/authorizationsimulationasyncresponse.rbi +13 -0
- data/lib/moov/models/components/authtokenrequest.rb +6 -2
- data/lib/moov/models/components/authtokenrequest.rbi +2 -0
- data/lib/moov/models/components/bankaccount.rb +7 -2
- data/lib/moov/models/components/bankaccount.rbi +2 -0
- data/lib/moov/models/components/bankaccountpayload.rb +7 -2
- data/lib/moov/models/components/bankaccountpayload.rbi +2 -0
- data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rb +6 -2
- data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rbi +2 -0
- data/lib/moov/models/components/createauthorizationsimulation.rb +40 -0
- data/lib/moov/models/components/createauthorizationsimulation.rbi +17 -0
- data/lib/moov/models/components/createclearingsimulation.rb +32 -0
- data/lib/moov/models/components/createclearingsimulation.rbi +13 -0
- data/lib/moov/models/components/createdtransfer.rb +2 -1
- data/lib/moov/models/components/createinvoice.rb +6 -2
- data/lib/moov/models/components/createinvoice.rbi +2 -0
- data/lib/moov/models/components/disbursementpaymentmethodtype.rb +1 -0
- data/lib/moov/models/components/incurredfee.rb +6 -2
- data/lib/moov/models/components/incurredfee.rbi +2 -0
- data/lib/moov/models/components/issuedcardactivity.rb +78 -0
- data/lib/moov/models/components/issuedcardactivity.rbi +33 -0
- data/lib/moov/models/components/issuedcardauthorization.rb +7 -2
- data/lib/moov/models/components/issuedcardauthorization.rbi +2 -0
- data/lib/moov/models/components/issuedcardauthorizationevent.rb +7 -2
- data/lib/moov/models/components/issuedcardauthorizationevent.rbi +2 -0
- data/lib/moov/models/components/issuingdeclinereason.rb +35 -0
- data/lib/moov/models/components/issuingdeclinereason.rbi +11 -0
- data/lib/moov/models/components/issuingmerchantdatavalidationerror.rb +56 -0
- data/lib/moov/models/components/issuingmerchantdatavalidationerror.rbi +25 -0
- data/lib/moov/models/components/oauth2clienttype.rb +23 -0
- data/lib/moov/models/components/oauth2clienttype.rbi +11 -0
- data/lib/moov/models/components/paymentmethodsbankaccount.rb +7 -2
- data/lib/moov/models/components/paymentmethodsbankaccount.rbi +2 -0
- data/lib/moov/models/components/product.rb +6 -2
- data/lib/moov/models/components/product.rbi +2 -0
- data/lib/moov/models/components/productrequest.rb +6 -2
- data/lib/moov/models/components/productrequest.rbi +2 -0
- data/lib/moov/models/components/riskverificationoutcome.rb +23 -0
- data/lib/moov/models/components/riskverificationoutcome.rbi +11 -0
- data/lib/moov/models/components/transfer.rb +2 -1
- data/lib/moov/models/components/transferauthorization.rb +9 -2
- data/lib/moov/models/components/transferauthorization.rbi +2 -0
- data/lib/moov/models/components/transferevent.rb +48 -0
- data/lib/moov/models/components/transferevent.rbi +21 -0
- data/lib/moov/models/components/transfereventachdetails.rb +40 -0
- data/lib/moov/models/components/transfereventachdetails.rbi +17 -0
- data/lib/moov/models/components/transfereventauthorizationdetails.rb +40 -0
- data/lib/moov/models/components/transfereventauthorizationdetails.rbi +17 -0
- data/lib/moov/models/components/transfereventauthorizationstatus.rb +22 -0
- data/lib/moov/models/components/transfereventauthorizationstatus.rbi +11 -0
- data/lib/moov/models/components/transfereventcancellationdetails.rb +36 -0
- data/lib/moov/models/components/transfereventcancellationdetails.rbi +15 -0
- data/lib/moov/models/components/transfereventcapturedetails.rb +40 -0
- data/lib/moov/models/components/transfereventcapturedetails.rbi +17 -0
- data/lib/moov/models/components/transfereventcardpaymentdetails.rb +36 -0
- data/lib/moov/models/components/transfereventcardpaymentdetails.rbi +15 -0
- data/lib/moov/models/components/transfereventdetails.rb +88 -0
- data/lib/moov/models/components/transfereventdetails.rbi +41 -0
- data/lib/moov/models/components/transfereventdisputedetails.rb +46 -0
- data/lib/moov/models/components/transfereventdisputedetails.rbi +19 -0
- data/lib/moov/models/components/transfereventinstantbankcreditdetails.rb +36 -0
- data/lib/moov/models/components/transfereventinstantbankcreditdetails.rbi +15 -0
- data/lib/moov/models/components/transfereventpullfromcarddetails.rb +36 -0
- data/lib/moov/models/components/transfereventpullfromcarddetails.rbi +15 -0
- data/lib/moov/models/components/transfereventpushtocarddetails.rb +36 -0
- data/lib/moov/models/components/transfereventpushtocarddetails.rbi +15 -0
- data/lib/moov/models/components/transfereventrefunddetails.rb +44 -0
- data/lib/moov/models/components/transfereventrefunddetails.rbi +19 -0
- data/lib/moov/models/components/transfereventtransferdetails.rb +32 -0
- data/lib/moov/models/components/transfereventtransferdetails.rbi +13 -0
- data/lib/moov/models/components/transfereventtype.rb +34 -0
- data/lib/moov/models/components/transfereventtype.rbi +11 -0
- data/lib/moov/models/components/transfereventwallettransactiondetails.rb +48 -0
- data/lib/moov/models/components/transfereventwallettransactiondetails.rbi +21 -0
- data/lib/moov/models/components/transfereventwirecreditdetails.rb +36 -0
- data/lib/moov/models/components/transfereventwirecreditdetails.rbi +15 -0
- data/lib/moov/models/components/transferpaymentmethodsbankaccount.rb +7 -2
- data/lib/moov/models/components/transferpaymentmethodsbankaccount.rbi +2 -0
- data/lib/moov/models/components/webhookdatatransferstatus.rb +1 -0
- data/lib/moov/models/components.rb +25 -0
- data/lib/moov/models/errors/authorizationsimulationvalidationerror.rb +44 -0
- data/lib/moov/models/errors/authorizationsimulationvalidationerror.rbi +19 -0
- data/lib/moov/models/errors/clearingsimulationvalidationerror.rb +36 -0
- data/lib/moov/models/errors/clearingsimulationvalidationerror.rbi +15 -0
- data/lib/moov/models/errors/createinvoiceerror.rb +6 -2
- data/lib/moov/models/errors/createinvoiceerror.rbi +2 -0
- data/lib/moov/models/errors/transfer_error.rb +2 -1
- data/lib/moov/models/errors.rb +2 -0
- data/lib/moov/models/operations/createauthorizationsimulation_request.rb +36 -0
- data/lib/moov/models/operations/createauthorizationsimulation_request.rbi +15 -0
- data/lib/moov/models/operations/createauthorizationsimulation_response.rb +52 -0
- data/lib/moov/models/operations/createauthorizationsimulation_response.rbi +23 -0
- data/lib/moov/models/operations/createclearingsimulation_request.rb +40 -0
- data/lib/moov/models/operations/createclearingsimulation_request.rbi +17 -0
- data/lib/moov/models/operations/createclearingsimulation_response.rb +52 -0
- data/lib/moov/models/operations/createclearingsimulation_response.rbi +23 -0
- data/lib/moov/models/operations/createreversalsimulation_request.rb +36 -0
- data/lib/moov/models/operations/createreversalsimulation_request.rbi +15 -0
- data/lib/moov/models/operations/createreversalsimulation_response.rb +52 -0
- data/lib/moov/models/operations/createreversalsimulation_response.rbi +23 -0
- data/lib/moov/models/operations/downloadfile_request.rb +36 -0
- data/lib/moov/models/operations/downloadfile_request.rbi +15 -0
- data/lib/moov/models/operations/downloadfile_response.rb +64 -0
- data/lib/moov/models/operations/downloadfile_response.rbi +29 -0
- data/lib/moov/models/operations/listissuedcardactivity_request.rb +60 -0
- data/lib/moov/models/operations/listissuedcardactivity_request.rbi +27 -0
- data/lib/moov/models/operations/listissuedcardactivity_response.rb +48 -0
- data/lib/moov/models/operations/listissuedcardactivity_response.rbi +21 -0
- data/lib/moov/models/operations/listtransferevents_request.rb +36 -0
- data/lib/moov/models/operations/listtransferevents_request.rbi +15 -0
- data/lib/moov/models/operations/listtransferevents_response.rb +48 -0
- data/lib/moov/models/operations/listtransferevents_response.rbi +21 -0
- data/lib/moov/models/operations/listtransfers_request.rb +6 -2
- data/lib/moov/models/operations/listtransfers_request.rbi +2 -0
- data/lib/moov/models/operations.rb +12 -0
- data/lib/moov/sdkconfiguration.rb +3 -3
- data/lib/moov/transfers.rb +125 -0
- metadata +80 -2
|
@@ -22,16 +22,22 @@ module Moov
|
|
|
22
22
|
field :captured_amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capturedAmount'), required: true } }
|
|
23
23
|
# Amount of the authorization still available after captures and authorization cancellations.
|
|
24
24
|
field :capturable_amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capturableAmount'), required: true } }
|
|
25
|
+
# The tip, tax, and surcharge authorized by the card network.
|
|
26
|
+
#
|
|
27
|
+
# These describe the authorized amount and are fixed.
|
|
28
|
+
# They can differ from the transfer's `amountDetails`, which is the aggregate of all captures' `amountDetails`.
|
|
29
|
+
field :amount_details, Crystalline::Nilable.new(Models::Components::TransferAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
|
|
25
30
|
# Expiration time for the approved authorization, when available.
|
|
26
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) } }
|
|
27
32
|
|
|
28
|
-
sig { params(authorization_id: ::String, requested_amount: Models::Components::AmountDecimal, authorized_amount: Models::Components::AmountDecimal, captured_amount: Models::Components::AmountDecimal, capturable_amount: Models::Components::AmountDecimal, expires_on: T.nilable(::DateTime)).void }
|
|
29
|
-
def initialize(authorization_id:, requested_amount:, authorized_amount:, captured_amount:, capturable_amount:, expires_on: nil)
|
|
33
|
+
sig { params(authorization_id: ::String, requested_amount: Models::Components::AmountDecimal, authorized_amount: Models::Components::AmountDecimal, captured_amount: Models::Components::AmountDecimal, capturable_amount: Models::Components::AmountDecimal, amount_details: T.nilable(Models::Components::TransferAmountDetails), expires_on: T.nilable(::DateTime)).void }
|
|
34
|
+
def initialize(authorization_id:, requested_amount:, authorized_amount:, captured_amount:, capturable_amount:, amount_details: nil, expires_on: nil)
|
|
30
35
|
@authorization_id = authorization_id
|
|
31
36
|
@requested_amount = requested_amount
|
|
32
37
|
@authorized_amount = authorized_amount
|
|
33
38
|
@captured_amount = captured_amount
|
|
34
39
|
@capturable_amount = capturable_amount
|
|
40
|
+
@amount_details = amount_details
|
|
35
41
|
@expires_on = expires_on
|
|
36
42
|
end
|
|
37
43
|
|
|
@@ -43,6 +49,7 @@ module Moov
|
|
|
43
49
|
return false unless @authorized_amount == other.authorized_amount
|
|
44
50
|
return false unless @captured_amount == other.captured_amount
|
|
45
51
|
return false unless @capturable_amount == other.capturable_amount
|
|
52
|
+
return false unless @amount_details == other.amount_details
|
|
46
53
|
return false unless @expires_on == other.expires_on
|
|
47
54
|
true
|
|
48
55
|
end
|
|
@@ -18,6 +18,8 @@ class Moov::Models::Components::TransferAuthorization
|
|
|
18
18
|
def captured_amount=(str_); end
|
|
19
19
|
def capturable_amount(); end
|
|
20
20
|
def capturable_amount=(str_); end
|
|
21
|
+
def amount_details(); end
|
|
22
|
+
def amount_details=(str_); end
|
|
21
23
|
def expires_on(); end
|
|
22
24
|
def expires_on=(str_); end
|
|
23
25
|
end
|
|
@@ -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 Components
|
|
10
|
+
# An event in a Transfer's ordered timeline. Amounts are positive display context and are not additive across events.
|
|
11
|
+
class TransferEvent
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# A unique identifier for a Moov resource. Supports UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) or typed format with base32-encoded UUID and type suffix (e.g., kuoaydiojf7uszaokc2ggnaaaa_xfer).
|
|
16
|
+
field :event_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('eventID'), required: true } }
|
|
17
|
+
# The event family.
|
|
18
|
+
field :event_type, Models::Components::TransferEventType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('eventType'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::TransferEventType, false) } }
|
|
19
|
+
|
|
20
|
+
field :amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
|
|
21
|
+
# Details for a Transfer timeline event. A valid event contains exactly one detail object matching its event type.
|
|
22
|
+
field :details, Models::Components::TransferEventDetails, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('details'), required: true } }
|
|
23
|
+
|
|
24
|
+
field :occurred_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('occurredOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
|
|
25
|
+
|
|
26
|
+
sig { params(event_id: ::String, event_type: Models::Components::TransferEventType, amount: Models::Components::AmountDecimal, details: Models::Components::TransferEventDetails, occurred_on: ::DateTime).void }
|
|
27
|
+
def initialize(event_id:, event_type:, amount:, details:, occurred_on:)
|
|
28
|
+
@event_id = event_id
|
|
29
|
+
@event_type = event_type
|
|
30
|
+
@amount = amount
|
|
31
|
+
@details = details
|
|
32
|
+
@occurred_on = occurred_on
|
|
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 @event_id == other.event_id
|
|
39
|
+
return false unless @event_type == other.event_type
|
|
40
|
+
return false unless @amount == other.amount
|
|
41
|
+
return false unless @details == other.details
|
|
42
|
+
return false unless @occurred_on == other.occurred_on
|
|
43
|
+
true
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::TransferEvent
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::TransferEvent
|
|
11
|
+
def event_id(); end
|
|
12
|
+
def event_id=(str_); end
|
|
13
|
+
def event_type(); end
|
|
14
|
+
def event_type=(str_); end
|
|
15
|
+
def amount(); end
|
|
16
|
+
def amount=(str_); end
|
|
17
|
+
def details(); end
|
|
18
|
+
def details=(str_); end
|
|
19
|
+
def occurred_on(); end
|
|
20
|
+
def occurred_on=(str_); end
|
|
21
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
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 TransferEventACHDetails
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# Status of a transaction within the ACH lifecycle.
|
|
16
|
+
field :status, Models::Components::ACHTransactionStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::ACHTransactionStatus, false) } }
|
|
17
|
+
|
|
18
|
+
field :return_, Crystalline::Nilable.new(Models::Components::ACHException), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('return') } }
|
|
19
|
+
|
|
20
|
+
field :correction, Crystalline::Nilable.new(Models::Components::ACHException), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('correction') } }
|
|
21
|
+
|
|
22
|
+
sig { params(status: Models::Components::ACHTransactionStatus, return_: T.nilable(Models::Components::ACHException), correction: T.nilable(Models::Components::ACHException)).void }
|
|
23
|
+
def initialize(status:, return_: nil, correction: nil)
|
|
24
|
+
@status = status
|
|
25
|
+
@return_ = return_
|
|
26
|
+
@correction = correction
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
30
|
+
def ==(other)
|
|
31
|
+
return false unless other.is_a? self.class
|
|
32
|
+
return false unless @status == other.status
|
|
33
|
+
return false unless @return_ == other.return_
|
|
34
|
+
return false unless @correction == other.correction
|
|
35
|
+
true
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::TransferEventACHDetails
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::TransferEventACHDetails
|
|
11
|
+
def status(); end
|
|
12
|
+
def status=(str_); end
|
|
13
|
+
def return_(); end
|
|
14
|
+
def return_=(str_); end
|
|
15
|
+
def correction(); end
|
|
16
|
+
def correction=(str_); end
|
|
17
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
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 TransferEventAuthorizationDetails
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# A unique identifier for a Moov resource. Supports UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) or typed format with base32-encoded UUID and type suffix (e.g., kuoaydiojf7uszaokc2ggnaaaa_xfer).
|
|
16
|
+
field :authorization_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizationID'), required: true } }
|
|
17
|
+
|
|
18
|
+
field :status, Models::Components::TransferEventAuthorizationStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::TransferEventAuthorizationStatus, false) } }
|
|
19
|
+
|
|
20
|
+
field :failure_code, Crystalline::Nilable.new(Models::Components::CardTransactionFailureCode), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('failureCode'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::CardTransactionFailureCode, true) } }
|
|
21
|
+
|
|
22
|
+
sig { params(authorization_id: ::String, status: Models::Components::TransferEventAuthorizationStatus, failure_code: T.nilable(Models::Components::CardTransactionFailureCode)).void }
|
|
23
|
+
def initialize(authorization_id:, status:, failure_code: nil)
|
|
24
|
+
@authorization_id = authorization_id
|
|
25
|
+
@status = status
|
|
26
|
+
@failure_code = failure_code
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
30
|
+
def ==(other)
|
|
31
|
+
return false unless other.is_a? self.class
|
|
32
|
+
return false unless @authorization_id == other.authorization_id
|
|
33
|
+
return false unless @status == other.status
|
|
34
|
+
return false unless @failure_code == other.failure_code
|
|
35
|
+
true
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::TransferEventAuthorizationDetails
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::TransferEventAuthorizationDetails
|
|
11
|
+
def authorization_id(); end
|
|
12
|
+
def authorization_id=(str_); end
|
|
13
|
+
def status(); end
|
|
14
|
+
def status=(str_); end
|
|
15
|
+
def failure_code(); end
|
|
16
|
+
def failure_code=(str_); end
|
|
17
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
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 TransferEventAuthorizationStatus
|
|
12
|
+
include ::Crystalline::Enum
|
|
13
|
+
enums do
|
|
14
|
+
APPROVED = new('approved')
|
|
15
|
+
DECLINED = new('declined')
|
|
16
|
+
REVERSED = new('reversed')
|
|
17
|
+
end
|
|
18
|
+
open!
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
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 TransferEventCancellationDetails
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# A unique identifier for a Moov resource. Supports UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) or typed format with base32-encoded UUID and type suffix (e.g., kuoaydiojf7uszaokc2ggnaaaa_xfer).
|
|
16
|
+
field :cancellation_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cancellationID'), required: true } }
|
|
17
|
+
|
|
18
|
+
field :status, Models::Components::CancellationStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::CancellationStatus, false) } }
|
|
19
|
+
|
|
20
|
+
sig { params(cancellation_id: ::String, status: Models::Components::CancellationStatus).void }
|
|
21
|
+
def initialize(cancellation_id:, status:)
|
|
22
|
+
@cancellation_id = cancellation_id
|
|
23
|
+
@status = status
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
27
|
+
def ==(other)
|
|
28
|
+
return false unless other.is_a? self.class
|
|
29
|
+
return false unless @cancellation_id == other.cancellation_id
|
|
30
|
+
return false unless @status == other.status
|
|
31
|
+
true
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::TransferEventCancellationDetails
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::TransferEventCancellationDetails
|
|
11
|
+
def cancellation_id(); end
|
|
12
|
+
def cancellation_id=(str_); end
|
|
13
|
+
def status(); end
|
|
14
|
+
def status=(str_); end
|
|
15
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
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 TransferEventCaptureDetails
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# A unique identifier for a Moov resource. Supports UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) or typed format with base32-encoded UUID and type suffix (e.g., kuoaydiojf7uszaokc2ggnaaaa_xfer).
|
|
16
|
+
field :capture_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('captureID'), required: true } }
|
|
17
|
+
|
|
18
|
+
field :status, Models::Components::CaptureStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::CaptureStatus, false) } }
|
|
19
|
+
|
|
20
|
+
field :failure_code, Crystalline::Nilable.new(Models::Components::CardTransactionFailureCode), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('failureCode'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::CardTransactionFailureCode, true) } }
|
|
21
|
+
|
|
22
|
+
sig { params(capture_id: ::String, status: Models::Components::CaptureStatus, failure_code: T.nilable(Models::Components::CardTransactionFailureCode)).void }
|
|
23
|
+
def initialize(capture_id:, status:, failure_code: nil)
|
|
24
|
+
@capture_id = capture_id
|
|
25
|
+
@status = status
|
|
26
|
+
@failure_code = failure_code
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
30
|
+
def ==(other)
|
|
31
|
+
return false unless other.is_a? self.class
|
|
32
|
+
return false unless @capture_id == other.capture_id
|
|
33
|
+
return false unless @status == other.status
|
|
34
|
+
return false unless @failure_code == other.failure_code
|
|
35
|
+
true
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::TransferEventCaptureDetails
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::TransferEventCaptureDetails
|
|
11
|
+
def capture_id(); end
|
|
12
|
+
def capture_id=(str_); end
|
|
13
|
+
def status(); end
|
|
14
|
+
def status=(str_); end
|
|
15
|
+
def failure_code(); end
|
|
16
|
+
def failure_code=(str_); end
|
|
17
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
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 TransferEventCardPaymentDetails
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# Status of a card payment transaction.
|
|
16
|
+
field :status, Models::Components::CardPaymentTransactionStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::CardPaymentTransactionStatus, false) } }
|
|
17
|
+
|
|
18
|
+
field :failure_code, Crystalline::Nilable.new(Models::Components::CardTransactionFailureCode), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('failureCode'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::CardTransactionFailureCode, true) } }
|
|
19
|
+
|
|
20
|
+
sig { params(status: Models::Components::CardPaymentTransactionStatus, failure_code: T.nilable(Models::Components::CardTransactionFailureCode)).void }
|
|
21
|
+
def initialize(status:, failure_code: nil)
|
|
22
|
+
@status = status
|
|
23
|
+
@failure_code = failure_code
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
27
|
+
def ==(other)
|
|
28
|
+
return false unless other.is_a? self.class
|
|
29
|
+
return false unless @status == other.status
|
|
30
|
+
return false unless @failure_code == other.failure_code
|
|
31
|
+
true
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::TransferEventCardPaymentDetails
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::TransferEventCardPaymentDetails
|
|
11
|
+
def status(); end
|
|
12
|
+
def status=(str_); end
|
|
13
|
+
def failure_code(); end
|
|
14
|
+
def failure_code=(str_); end
|
|
15
|
+
end
|
|
@@ -0,0 +1,88 @@
|
|
|
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
|
+
# Details for a Transfer timeline event. A valid event contains exactly one detail object matching its event type.
|
|
11
|
+
class TransferEventDetails
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
field :transfer, Crystalline::Nilable.new(Models::Components::TransferEventTransferDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('transfer') } }
|
|
17
|
+
|
|
18
|
+
field :authorization, Crystalline::Nilable.new(Models::Components::TransferEventAuthorizationDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorization') } }
|
|
19
|
+
|
|
20
|
+
field :capture, Crystalline::Nilable.new(Models::Components::TransferEventCaptureDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capture') } }
|
|
21
|
+
|
|
22
|
+
field :refund, Crystalline::Nilable.new(Models::Components::TransferEventRefundDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('refund') } }
|
|
23
|
+
|
|
24
|
+
field :cancellation, Crystalline::Nilable.new(Models::Components::TransferEventCancellationDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cancellation') } }
|
|
25
|
+
|
|
26
|
+
field :dispute, Crystalline::Nilable.new(Models::Components::TransferEventDisputeDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('dispute') } }
|
|
27
|
+
|
|
28
|
+
field :ach_credit, Crystalline::Nilable.new(Models::Components::TransferEventACHDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('achCredit') } }
|
|
29
|
+
|
|
30
|
+
field :ach_debit, Crystalline::Nilable.new(Models::Components::TransferEventACHDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('achDebit') } }
|
|
31
|
+
|
|
32
|
+
field :instant_bank_credit, Crystalline::Nilable.new(Models::Components::TransferEventInstantBankCreditDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('instantBankCredit') } }
|
|
33
|
+
|
|
34
|
+
field :wire_credit, Crystalline::Nilable.new(Models::Components::TransferEventWireCreditDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('wireCredit') } }
|
|
35
|
+
|
|
36
|
+
field :card_payment, Crystalline::Nilable.new(Models::Components::TransferEventCardPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardPayment') } }
|
|
37
|
+
|
|
38
|
+
field :push_to_card, Crystalline::Nilable.new(Models::Components::TransferEventPushToCardDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pushToCard') } }
|
|
39
|
+
|
|
40
|
+
field :pull_from_card, Crystalline::Nilable.new(Models::Components::TransferEventPullFromCardDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pullFromCard') } }
|
|
41
|
+
|
|
42
|
+
field :wallet_credit, Crystalline::Nilable.new(Models::Components::TransferEventWalletTransactionDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('walletCredit') } }
|
|
43
|
+
|
|
44
|
+
field :wallet_debit, Crystalline::Nilable.new(Models::Components::TransferEventWalletTransactionDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('walletDebit') } }
|
|
45
|
+
|
|
46
|
+
sig { params(transfer: T.nilable(Models::Components::TransferEventTransferDetails), authorization: T.nilable(Models::Components::TransferEventAuthorizationDetails), capture: T.nilable(Models::Components::TransferEventCaptureDetails), refund: T.nilable(Models::Components::TransferEventRefundDetails), cancellation: T.nilable(Models::Components::TransferEventCancellationDetails), dispute: T.nilable(Models::Components::TransferEventDisputeDetails), ach_credit: T.nilable(Models::Components::TransferEventACHDetails), ach_debit: T.nilable(Models::Components::TransferEventACHDetails), instant_bank_credit: T.nilable(Models::Components::TransferEventInstantBankCreditDetails), wire_credit: T.nilable(Models::Components::TransferEventWireCreditDetails), card_payment: T.nilable(Models::Components::TransferEventCardPaymentDetails), push_to_card: T.nilable(Models::Components::TransferEventPushToCardDetails), pull_from_card: T.nilable(Models::Components::TransferEventPullFromCardDetails), wallet_credit: T.nilable(Models::Components::TransferEventWalletTransactionDetails), wallet_debit: T.nilable(Models::Components::TransferEventWalletTransactionDetails)).void }
|
|
47
|
+
def initialize(transfer: nil, authorization: nil, capture: nil, refund: nil, cancellation: nil, dispute: nil, ach_credit: nil, ach_debit: nil, instant_bank_credit: nil, wire_credit: nil, card_payment: nil, push_to_card: nil, pull_from_card: nil, wallet_credit: nil, wallet_debit: nil)
|
|
48
|
+
@transfer = transfer
|
|
49
|
+
@authorization = authorization
|
|
50
|
+
@capture = capture
|
|
51
|
+
@refund = refund
|
|
52
|
+
@cancellation = cancellation
|
|
53
|
+
@dispute = dispute
|
|
54
|
+
@ach_credit = ach_credit
|
|
55
|
+
@ach_debit = ach_debit
|
|
56
|
+
@instant_bank_credit = instant_bank_credit
|
|
57
|
+
@wire_credit = wire_credit
|
|
58
|
+
@card_payment = card_payment
|
|
59
|
+
@push_to_card = push_to_card
|
|
60
|
+
@pull_from_card = pull_from_card
|
|
61
|
+
@wallet_credit = wallet_credit
|
|
62
|
+
@wallet_debit = wallet_debit
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
66
|
+
def ==(other)
|
|
67
|
+
return false unless other.is_a? self.class
|
|
68
|
+
return false unless @transfer == other.transfer
|
|
69
|
+
return false unless @authorization == other.authorization
|
|
70
|
+
return false unless @capture == other.capture
|
|
71
|
+
return false unless @refund == other.refund
|
|
72
|
+
return false unless @cancellation == other.cancellation
|
|
73
|
+
return false unless @dispute == other.dispute
|
|
74
|
+
return false unless @ach_credit == other.ach_credit
|
|
75
|
+
return false unless @ach_debit == other.ach_debit
|
|
76
|
+
return false unless @instant_bank_credit == other.instant_bank_credit
|
|
77
|
+
return false unless @wire_credit == other.wire_credit
|
|
78
|
+
return false unless @card_payment == other.card_payment
|
|
79
|
+
return false unless @push_to_card == other.push_to_card
|
|
80
|
+
return false unless @pull_from_card == other.pull_from_card
|
|
81
|
+
return false unless @wallet_credit == other.wallet_credit
|
|
82
|
+
return false unless @wallet_debit == other.wallet_debit
|
|
83
|
+
true
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::TransferEventDetails
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::TransferEventDetails
|
|
11
|
+
def transfer(); end
|
|
12
|
+
def transfer=(str_); end
|
|
13
|
+
def authorization(); end
|
|
14
|
+
def authorization=(str_); end
|
|
15
|
+
def capture(); end
|
|
16
|
+
def capture=(str_); end
|
|
17
|
+
def refund(); end
|
|
18
|
+
def refund=(str_); end
|
|
19
|
+
def cancellation(); end
|
|
20
|
+
def cancellation=(str_); end
|
|
21
|
+
def dispute(); end
|
|
22
|
+
def dispute=(str_); end
|
|
23
|
+
def ach_credit(); end
|
|
24
|
+
def ach_credit=(str_); end
|
|
25
|
+
def ach_debit(); end
|
|
26
|
+
def ach_debit=(str_); end
|
|
27
|
+
def instant_bank_credit(); end
|
|
28
|
+
def instant_bank_credit=(str_); end
|
|
29
|
+
def wire_credit(); end
|
|
30
|
+
def wire_credit=(str_); end
|
|
31
|
+
def card_payment(); end
|
|
32
|
+
def card_payment=(str_); end
|
|
33
|
+
def push_to_card(); end
|
|
34
|
+
def push_to_card=(str_); end
|
|
35
|
+
def pull_from_card(); end
|
|
36
|
+
def pull_from_card=(str_); end
|
|
37
|
+
def wallet_credit(); end
|
|
38
|
+
def wallet_credit=(str_); end
|
|
39
|
+
def wallet_debit(); end
|
|
40
|
+
def wallet_debit=(str_); end
|
|
41
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
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 TransferEventDisputeDetails
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# A unique identifier for a Moov resource. Supports UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) or typed format with base32-encoded UUID and type suffix (e.g., kuoaydiojf7uszaokc2ggnaaaa_xfer).
|
|
16
|
+
field :dispute_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('disputeID'), required: true } }
|
|
17
|
+
# The phase of a dispute within the dispute lifecycle.
|
|
18
|
+
field :phase, Models::Components::DisputePhase, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('phase'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::DisputePhase, false) } }
|
|
19
|
+
# The status of a particular dispute.
|
|
20
|
+
#
|
|
21
|
+
# Read our [disputes guide](https://docs.moov.io/guides/money-movement/accept-payments/card-acceptance/disputes/#dispute-statuses) to learn what each status means.
|
|
22
|
+
field :status, Models::Components::DisputeStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::DisputeStatus, false) } }
|
|
23
|
+
# A unique identifier for a Moov resource. Supports UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) or typed format with base32-encoded UUID and type suffix (e.g., kuoaydiojf7uszaokc2ggnaaaa_xfer).
|
|
24
|
+
field :capture_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('captureID') } }
|
|
25
|
+
|
|
26
|
+
sig { params(dispute_id: ::String, phase: Models::Components::DisputePhase, status: Models::Components::DisputeStatus, capture_id: T.nilable(::String)).void }
|
|
27
|
+
def initialize(dispute_id:, phase:, status:, capture_id: nil)
|
|
28
|
+
@dispute_id = dispute_id
|
|
29
|
+
@phase = phase
|
|
30
|
+
@status = status
|
|
31
|
+
@capture_id = capture_id
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
35
|
+
def ==(other)
|
|
36
|
+
return false unless other.is_a? self.class
|
|
37
|
+
return false unless @dispute_id == other.dispute_id
|
|
38
|
+
return false unless @phase == other.phase
|
|
39
|
+
return false unless @status == other.status
|
|
40
|
+
return false unless @capture_id == other.capture_id
|
|
41
|
+
true
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::TransferEventDisputeDetails
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::TransferEventDisputeDetails
|
|
11
|
+
def dispute_id(); end
|
|
12
|
+
def dispute_id=(str_); end
|
|
13
|
+
def phase(); end
|
|
14
|
+
def phase=(str_); end
|
|
15
|
+
def status(); end
|
|
16
|
+
def status=(str_); end
|
|
17
|
+
def capture_id(); end
|
|
18
|
+
def capture_id=(str_); end
|
|
19
|
+
end
|