moov_ruby 26.7.0 → 26.7.1
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/avatars.rb +4 -4
- data/lib/moov/card_issuing.rb +116 -0
- data/lib/moov/client.rb +2 -2
- data/lib/moov/enriched_address.rb +1 -1
- data/lib/moov/enriched_profile.rb +1 -1
- data/lib/moov/institutions.rb +1 -1
- data/lib/moov/models/components/allowedscheduleerror.rb +36 -0
- data/lib/moov/models/components/allowedscheduleerror.rbi +15 -0
- data/lib/moov/models/components/createdtransfer.rb +6 -2
- data/lib/moov/models/components/createdtransfer.rbi +2 -0
- data/lib/moov/models/components/createrefund.rb +2 -2
- data/lib/moov/models/components/createreversal.rb +1 -1
- data/lib/moov/models/components/fullissuedcard.rb +3 -3
- data/lib/moov/models/components/issuedcard.rb +3 -3
- data/lib/moov/models/components/issuedcontrols.rb +52 -0
- data/lib/moov/models/components/issuedcontrols.rbi +23 -0
- data/lib/moov/models/components/issuedcontrols_allowedschedule.rb +36 -0
- data/lib/moov/models/components/issuedcontrols_allowedschedule.rbi +15 -0
- data/lib/moov/models/components/issuedvelocitylimit.rb +60 -0
- data/lib/moov/models/components/issuedvelocitylimit.rbi +27 -0
- data/lib/moov/models/components/issuingcontrols.rb +18 -2
- data/lib/moov/models/components/issuingcontrols.rbi +8 -0
- data/lib/moov/models/components/issuingcontrols_allowedschedule.rb +36 -0
- data/lib/moov/models/components/issuingcontrols_allowedschedule.rbi +15 -0
- data/lib/moov/models/components/issuingcontrolserror.rb +18 -2
- data/lib/moov/models/components/issuingcontrolserror.rbi +8 -0
- data/lib/moov/models/components/issuingcontrolsrestrictionmode.rb +19 -0
- data/lib/moov/models/components/issuingcontrolsrestrictionmode.rbi +11 -0
- data/lib/moov/models/components/issuingintervallimit.rb +3 -0
- data/lib/moov/models/components/issuingmerchantcategory.rb +43 -0
- data/lib/moov/models/components/issuingmerchantcategory.rbi +11 -0
- data/lib/moov/models/components/issuingscheduleday.rb +24 -0
- data/lib/moov/models/components/issuingscheduleday.rbi +11 -0
- data/lib/moov/models/components/issuingvelocitylimit.rb +10 -6
- data/lib/moov/models/components/issuingvelocitylimit.rbi +4 -2
- data/lib/moov/models/components/issuingvelocitylimiterror.rb +6 -2
- data/lib/moov/models/components/issuingvelocitylimiterror.rbi +2 -0
- data/lib/moov/models/components/merchantcategories.rb +32 -0
- data/lib/moov/models/components/merchantcategories.rbi +13 -0
- data/lib/moov/models/components/merchantcategory.rb +37 -0
- data/lib/moov/models/components/merchantcategory.rbi +15 -0
- data/lib/moov/models/components/merchantcategoryrestrictions.rb +44 -0
- data/lib/moov/models/components/merchantcategoryrestrictions.rbi +19 -0
- data/lib/moov/models/components/merchantcategoryrestrictionserror.rb +44 -0
- data/lib/moov/models/components/merchantcategoryrestrictionserror.rbi +19 -0
- data/lib/moov/models/components/merchantentry.rb +40 -0
- data/lib/moov/models/components/merchantentry.rbi +17 -0
- data/lib/moov/models/components/merchantentryerror.rb +36 -0
- data/lib/moov/models/components/merchantentryerror.rbi +15 -0
- data/lib/moov/models/components/merchantrestrictions.rb +36 -0
- data/lib/moov/models/components/merchantrestrictions.rbi +15 -0
- data/lib/moov/models/components/merchantrestrictionserror.rb +36 -0
- data/lib/moov/models/components/merchantrestrictionserror.rbi +15 -0
- data/lib/moov/models/components/paymentmethodswallet.rb +1 -0
- data/lib/moov/models/components/schedulewindow.rb +40 -0
- data/lib/moov/models/components/schedulewindow.rbi +17 -0
- data/lib/moov/models/components/schedulewindowerror.rb +40 -0
- data/lib/moov/models/components/schedulewindowerror.rbi +17 -0
- data/lib/moov/models/components/sendfunds.rb +6 -2
- data/lib/moov/models/components/sendfunds.rbi +2 -0
- data/lib/moov/models/components/sendfundserror.rb +6 -2
- data/lib/moov/models/components/sendfundserror.rbi +2 -0
- data/lib/moov/models/components/sendfundswire.rb +32 -0
- data/lib/moov/models/components/sendfundswire.rbi +13 -0
- data/lib/moov/models/components/sendfundswireerror.rb +32 -0
- data/lib/moov/models/components/sendfundswireerror.rbi +13 -0
- data/lib/moov/models/components/transfer.rb +6 -2
- data/lib/moov/models/components/transfer.rbi +2 -0
- data/lib/moov/models/components/transfercapture.rb +36 -0
- data/lib/moov/models/components/transfercapture.rbi +15 -0
- data/lib/moov/models/components/transferpaymentmethodswallet.rb +1 -0
- data/lib/moov/models/components/updateissuedcard.rb +6 -2
- data/lib/moov/models/components/updateissuedcard.rbi +2 -0
- data/lib/moov/models/components/updateissuingcontrols.rb +48 -0
- data/lib/moov/models/components/updateissuingcontrols.rbi +21 -0
- data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rb +36 -0
- data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rbi +15 -0
- data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rb +44 -0
- data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rbi +19 -0
- data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rb +36 -0
- data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rbi +15 -0
- data/lib/moov/models/components/updateissuingcontrolserror.rb +48 -0
- data/lib/moov/models/components/updateissuingcontrolserror.rbi +21 -0
- data/lib/moov/models/components/wallet.rb +1 -0
- data/lib/moov/models/components/wallettype.rb +2 -0
- data/lib/moov/models/components/webhookdatatransferstatus.rb +3 -0
- data/lib/moov/models/components.rb +26 -0
- data/lib/moov/models/errors/transfer_error.rb +6 -2
- data/lib/moov/models/errors/transfer_error.rbi +2 -0
- data/lib/moov/models/errors/updateissuedcarderror.rb +6 -2
- data/lib/moov/models/errors/updateissuedcarderror.rbi +2 -0
- data/lib/moov/models/operations/listissuingmerchantcategories_response.rb +48 -0
- data/lib/moov/models/operations/listissuingmerchantcategories_response.rbi +21 -0
- data/lib/moov/models/operations/listtransfers_request.rb +10 -2
- data/lib/moov/models/operations/listtransfers_request.rbi +4 -0
- data/lib/moov/models/operations.rb +1 -0
- data/lib/moov/sdkconfiguration.rb +2 -2
- data/lib/moov_ruby.rb +1 -1
- metadata +56 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7198fc7d52eb9a74a8a5367368ec6951d364f7a265b3d5a48cbfac9c476e5c21
|
|
4
|
+
data.tar.gz: 1f3685aaa2e1e751d96b4d9e2e40e057500bc0c18f58c4b48b8a92876f5cc5e7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 15d8a703be91f1e403ce4b4eb185d57a2075d44532cb97114870886a864bdd09a6029d43aea1f29c9fff61c899e4998a879858f2c9bee2dc03abecddfdfbb62b
|
|
7
|
+
data.tar.gz: 43c8323be8750653cf5697290665c37d8eaef3570a6048a1536c80312d58fdd29f155107e6b030c368ec38d3642b5c21203c2245bb9edc3ff36d024de083831f
|
data/lib/moov/avatars.rb
CHANGED
|
@@ -45,7 +45,7 @@ module Moov
|
|
|
45
45
|
def get(unique_id:, timeout_ms: nil, http_headers: nil)
|
|
46
46
|
# get - Get avatar image for an account using a unique ID.
|
|
47
47
|
#
|
|
48
|
-
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
48
|
+
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
49
49
|
# you'll need to specify the `/profile-enrichment.read` scope.
|
|
50
50
|
request = Models::Operations::GetAvatarRequest.new(
|
|
51
51
|
unique_id: unique_id
|
|
@@ -165,12 +165,12 @@ module Moov
|
|
|
165
165
|
def upload(security:, avatar_upload_request:, unique_id:, timeout_ms: nil, http_headers: nil)
|
|
166
166
|
# upload - Upload a user avatar image for an account.
|
|
167
167
|
#
|
|
168
|
-
# The image will be normalized to 512x512 PNG format and stored separately from
|
|
168
|
+
# The image will be normalized to 512x512 PNG format and stored separately from
|
|
169
169
|
# automatically discovered logos. User-uploaded avatars take precedence over enriched avatars at read time.
|
|
170
170
|
#
|
|
171
171
|
# This endpoint only accepts accountID values for the uniqueID parameter.
|
|
172
172
|
#
|
|
173
|
-
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
173
|
+
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
174
174
|
# you'll need to specify the `/accounts.write` scope.
|
|
175
175
|
request = Models::Operations::UploadAvatarRequest.new(
|
|
176
176
|
unique_id: unique_id,
|
|
@@ -314,7 +314,7 @@ module Moov
|
|
|
314
314
|
#
|
|
315
315
|
# This endpoint only accepts accountID values for the uniqueID parameter.
|
|
316
316
|
#
|
|
317
|
-
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
317
|
+
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
318
318
|
# you'll need to specify the `/accounts.write` scope.
|
|
319
319
|
request = Models::Operations::DeleteAvatarRequest.new(
|
|
320
320
|
unique_id: unique_id
|
data/lib/moov/card_issuing.rb
CHANGED
|
@@ -41,6 +41,122 @@ module Moov
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
sig { params(timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::ListIssuingMerchantCategoriesResponse) }
|
|
45
|
+
def list_merchant_categories(timeout_ms: nil, http_headers: nil)
|
|
46
|
+
# list_merchant_categories - List the predefined merchant category groups available for issued card spend controls, along with
|
|
47
|
+
# the merchant category codes (MCCs) each group covers. Use these category names in an issued card's
|
|
48
|
+
# `merchantCategoryRestrictions`.
|
|
49
|
+
#
|
|
50
|
+
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/),
|
|
51
|
+
# you'll need to specify the `/issued-cards.read` scope.
|
|
52
|
+
url, params = @sdk_configuration.get_server_details
|
|
53
|
+
base_url = Utils.template_url(url, params)
|
|
54
|
+
url = "#{base_url}/issuing/merchant-categories"
|
|
55
|
+
headers = {}
|
|
56
|
+
headers = T.cast(headers, T::Hash[String, String])
|
|
57
|
+
headers['Accept'] = 'application/json'
|
|
58
|
+
headers['user-agent'] = @sdk_configuration.user_agent
|
|
59
|
+
|
|
60
|
+
security = @sdk_configuration.security_source&.call
|
|
61
|
+
|
|
62
|
+
timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
|
|
63
|
+
timeout ||= @sdk_configuration.timeout
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
connection = @sdk_configuration.client
|
|
67
|
+
|
|
68
|
+
hook_ctx = SDKHooks::HookContext.new(
|
|
69
|
+
config: @sdk_configuration,
|
|
70
|
+
base_url: base_url,
|
|
71
|
+
oauth2_scopes: nil,
|
|
72
|
+
operation_id: 'listIssuingMerchantCategories',
|
|
73
|
+
security_source: @sdk_configuration.security_source
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
error = T.let(nil, T.nilable(StandardError))
|
|
77
|
+
http_response = T.let(nil, T.nilable(Faraday::Response))
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
begin
|
|
81
|
+
http_response = T.must(connection).get(url) do |req|
|
|
82
|
+
req.headers.merge!(headers)
|
|
83
|
+
req.options.timeout = timeout unless timeout.nil?
|
|
84
|
+
Utils.configure_request_security(req, security)
|
|
85
|
+
http_headers&.each do |key, value|
|
|
86
|
+
req.headers[key.to_s] = value
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
@sdk_configuration.hooks.before_request(
|
|
90
|
+
hook_ctx: SDKHooks::BeforeRequestHookContext.new(
|
|
91
|
+
hook_ctx: hook_ctx
|
|
92
|
+
),
|
|
93
|
+
request: req
|
|
94
|
+
)
|
|
95
|
+
end
|
|
96
|
+
rescue StandardError => e
|
|
97
|
+
error = e
|
|
98
|
+
ensure
|
|
99
|
+
if http_response.nil? || Utils.error_status?(http_response.status)
|
|
100
|
+
http_response = @sdk_configuration.hooks.after_error(
|
|
101
|
+
error: error,
|
|
102
|
+
hook_ctx: SDKHooks::AfterErrorHookContext.new(
|
|
103
|
+
hook_ctx: hook_ctx
|
|
104
|
+
),
|
|
105
|
+
response: http_response
|
|
106
|
+
)
|
|
107
|
+
else
|
|
108
|
+
http_response = @sdk_configuration.hooks.after_success(
|
|
109
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
|
110
|
+
hook_ctx: hook_ctx
|
|
111
|
+
),
|
|
112
|
+
response: http_response
|
|
113
|
+
)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
if http_response.nil?
|
|
117
|
+
raise error if !error.nil?
|
|
118
|
+
raise 'no response'
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
|
|
123
|
+
if Utils.match_status_code(http_response.status, ['200'])
|
|
124
|
+
if Utils.match_content_type(content_type, 'application/json')
|
|
125
|
+
http_response = @sdk_configuration.hooks.after_success(
|
|
126
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
|
127
|
+
hook_ctx: hook_ctx
|
|
128
|
+
),
|
|
129
|
+
response: http_response
|
|
130
|
+
)
|
|
131
|
+
response_data = http_response.env.response_body
|
|
132
|
+
obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::MerchantCategories)
|
|
133
|
+
response = Models::Operations::ListIssuingMerchantCategoriesResponse.new(
|
|
134
|
+
status_code: http_response.status,
|
|
135
|
+
content_type: content_type,
|
|
136
|
+
raw_response: http_response,
|
|
137
|
+
headers: http_response.headers,
|
|
138
|
+
merchant_categories: T.unsafe(obj)
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
return response
|
|
142
|
+
else
|
|
143
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
|
|
144
|
+
end
|
|
145
|
+
elsif Utils.match_status_code(http_response.status, ['401', '403', '429'])
|
|
146
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
147
|
+
elsif Utils.match_status_code(http_response.status, ['500', '504'])
|
|
148
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
149
|
+
elsif Utils.match_status_code(http_response.status, ['4XX'])
|
|
150
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
151
|
+
elsif Utils.match_status_code(http_response.status, ['5XX'])
|
|
152
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
153
|
+
else
|
|
154
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
|
|
155
|
+
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
|
|
44
160
|
sig { params(request_card: Models::Components::RequestCard, account_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::RequestCardResponse) }
|
|
45
161
|
def request(request_card:, account_id:, timeout_ms: nil, http_headers: nil)
|
|
46
162
|
# request - Request a virtual card be issued.
|
data/lib/moov/client.rb
CHANGED
|
@@ -16,7 +16,7 @@ module Moov
|
|
|
16
16
|
class Client
|
|
17
17
|
extend T::Sig
|
|
18
18
|
|
|
19
|
-
attr_accessor :accounts, :adjustments, :apple_pay, :bank_accounts, :branding, :capabilities, :cards, :disputes, :fee_plans, :files, :google_pay, :images, :invoices, :payment_links, :payment_methods, :products, :representatives, :resolution_links, :scheduling, :statements, :sweeps, :account_terminal_applications, :support, :transfer_config, :transfers, :underwriting, :wallets, :wallet_transactions, :avatars, :end_to_end_encryption, :enriched_address, :enriched_profile, :webhooks, :industries, :institutions, :
|
|
19
|
+
attr_accessor :accounts, :adjustments, :apple_pay, :bank_accounts, :branding, :capabilities, :cards, :disputes, :fee_plans, :files, :google_pay, :images, :invoices, :payment_links, :payment_methods, :products, :representatives, :resolution_links, :scheduling, :statements, :sweeps, :account_terminal_applications, :support, :transfer_config, :transfers, :underwriting, :wallets, :wallet_transactions, :avatars, :end_to_end_encryption, :enriched_address, :enriched_profile, :webhooks, :industries, :institutions, :card_issuing, :issuing_transactions, :authentication, :onboarding, :ping, :receipts, :terminal_applications, :deposit_view
|
|
20
20
|
|
|
21
21
|
# Instantiates the SDK, configuring it with the provided parameters.
|
|
22
22
|
#
|
|
@@ -113,8 +113,8 @@ module Moov
|
|
|
113
113
|
@webhooks = Webhooks.new(@sdk_configuration)
|
|
114
114
|
@industries = Industries.new(@sdk_configuration)
|
|
115
115
|
@institutions = Institutions.new(@sdk_configuration)
|
|
116
|
-
@issuing_transactions = IssuingTransactions.new(@sdk_configuration)
|
|
117
116
|
@card_issuing = CardIssuing.new(@sdk_configuration)
|
|
117
|
+
@issuing_transactions = IssuingTransactions.new(@sdk_configuration)
|
|
118
118
|
@authentication = Authentication.new(@sdk_configuration)
|
|
119
119
|
@onboarding = Onboarding.new(@sdk_configuration)
|
|
120
120
|
@ping = Ping.new(@sdk_configuration)
|
|
@@ -45,7 +45,7 @@ module Moov
|
|
|
45
45
|
def get(request:, timeout_ms: nil, http_headers: nil)
|
|
46
46
|
# get - Fetch enriched address suggestions. Requires a partial address.
|
|
47
47
|
#
|
|
48
|
-
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
48
|
+
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
49
49
|
# you'll need to specify the `/profile-enrichment.read` scope.
|
|
50
50
|
url, params = @sdk_configuration.get_server_details
|
|
51
51
|
base_url = Utils.template_url(url, params)
|
|
@@ -45,7 +45,7 @@ module Moov
|
|
|
45
45
|
def get(email:, timeout_ms: nil, http_headers: nil)
|
|
46
46
|
# get - Fetch enriched profile data. Requires a valid email address. This service is offered in collaboration with Clearbit.
|
|
47
47
|
#
|
|
48
|
-
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
48
|
+
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
49
49
|
# you'll need to specify the `/profile-enrichment.read` scope.
|
|
50
50
|
request = Models::Operations::GetEnrichmentProfileRequest.new(
|
|
51
51
|
email: email
|
data/lib/moov/institutions.rb
CHANGED
|
@@ -172,7 +172,7 @@ module Moov
|
|
|
172
172
|
#
|
|
173
173
|
# Search for institutions by either their name or routing number.
|
|
174
174
|
#
|
|
175
|
-
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
175
|
+
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
176
176
|
# you'll need to specify the `/fed.read` scope.
|
|
177
177
|
#
|
|
178
178
|
# @deprecated method: This will be removed in a future release, please migrate away from it as soon as possible.
|
|
@@ -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 AllowedScheduleError
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
field :timezone, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('timezone') } }
|
|
17
|
+
|
|
18
|
+
field :windows, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, Models::Components::ScheduleWindowError)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('windows') } }
|
|
19
|
+
|
|
20
|
+
sig { params(timezone: T.nilable(::String), windows: T.nilable(T::Hash[Symbol, Models::Components::ScheduleWindowError])).void }
|
|
21
|
+
def initialize(timezone: nil, windows: nil)
|
|
22
|
+
@timezone = timezone
|
|
23
|
+
@windows = windows
|
|
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 @timezone == other.timezone
|
|
30
|
+
return false unless @windows == other.windows
|
|
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::AllowedScheduleError
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::AllowedScheduleError
|
|
11
|
+
def timezone(); end
|
|
12
|
+
def timezone=(str_); end
|
|
13
|
+
def windows(); end
|
|
14
|
+
def windows=(str_); end
|
|
15
|
+
end
|
|
@@ -67,9 +67,11 @@ module Moov
|
|
|
67
67
|
field :line_items, Crystalline::Nilable.new(Models::Components::TransferLineItems), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
|
|
68
68
|
|
|
69
69
|
field :amount_details, Crystalline::Nilable.new(Models::Components::TransferAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
|
|
70
|
+
# The card authorization and capture IDs associated with a transfer.
|
|
71
|
+
field :capture, Crystalline::Nilable.new(Models::Components::TransferCapture), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capture') } }
|
|
70
72
|
|
|
71
|
-
sig { params(transfer_id: ::String, created_on: ::DateTime, source: T.nilable(Models::Components::TransferSource), destination: T.nilable(Models::Components::TransferDestination), completed_on: T.nilable(::DateTime), status: T.nilable(Models::Components::TransferStatus), failure_reason: T.nilable(Models::Components::TransferFailureReason), amount: T.nilable(Models::Components::Amount), 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), 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), amount_details: T.nilable(Models::Components::TransferAmountDetails)).void }
|
|
72
|
-
def initialize(transfer_id:, created_on:, source: nil, destination: nil, completed_on: nil, status: nil, failure_reason: nil, amount: nil, description: nil, metadata: nil, facilitator_fee: nil, moov_fee: nil, moov_fee_decimal: nil, moov_fee_details: 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, amount_details: nil)
|
|
73
|
+
sig { params(transfer_id: ::String, created_on: ::DateTime, source: T.nilable(Models::Components::TransferSource), destination: T.nilable(Models::Components::TransferDestination), completed_on: T.nilable(::DateTime), status: T.nilable(Models::Components::TransferStatus), failure_reason: T.nilable(Models::Components::TransferFailureReason), amount: T.nilable(Models::Components::Amount), 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), 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), amount_details: T.nilable(Models::Components::TransferAmountDetails), capture: T.nilable(Models::Components::TransferCapture)).void }
|
|
74
|
+
def initialize(transfer_id:, created_on:, source: nil, destination: nil, completed_on: nil, status: nil, failure_reason: nil, amount: nil, description: nil, metadata: nil, facilitator_fee: nil, moov_fee: nil, moov_fee_decimal: nil, moov_fee_details: 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, amount_details: nil, capture: nil)
|
|
73
75
|
@transfer_id = transfer_id
|
|
74
76
|
@created_on = created_on
|
|
75
77
|
@source = source
|
|
@@ -97,6 +99,7 @@ module Moov
|
|
|
97
99
|
@foreign_id = foreign_id
|
|
98
100
|
@line_items = line_items
|
|
99
101
|
@amount_details = amount_details
|
|
102
|
+
@capture = capture
|
|
100
103
|
end
|
|
101
104
|
|
|
102
105
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
@@ -129,6 +132,7 @@ module Moov
|
|
|
129
132
|
return false unless @foreign_id == other.foreign_id
|
|
130
133
|
return false unless @line_items == other.line_items
|
|
131
134
|
return false unless @amount_details == other.amount_details
|
|
135
|
+
return false unless @capture == other.capture
|
|
132
136
|
true
|
|
133
137
|
end
|
|
134
138
|
end
|
|
@@ -9,12 +9,12 @@ module Moov
|
|
|
9
9
|
module Components
|
|
10
10
|
# Specifies a partial amount to refund.
|
|
11
11
|
#
|
|
12
|
-
#
|
|
12
|
+
# Before v2026.10, this request body may be omitted. In v2026.10 and later, send an empty object to refund the full amount of the original transfer.
|
|
13
13
|
class CreateRefund
|
|
14
14
|
extend T::Sig
|
|
15
15
|
include Crystalline::MetadataFields
|
|
16
16
|
|
|
17
|
-
# Amount to refund in cents. If
|
|
17
|
+
# Amount to refund. Before v2026.10, specify the amount in integer cents. If omitted, the original transfer's full amount will be refunded.
|
|
18
18
|
field :amount, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
|
|
19
19
|
# Breakdown of the refunded amount.
|
|
20
20
|
field :amount_details, Crystalline::Nilable.new(Models::Components::RefundAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
|
|
@@ -12,7 +12,7 @@ module Moov
|
|
|
12
12
|
extend T::Sig
|
|
13
13
|
include Crystalline::MetadataFields
|
|
14
14
|
|
|
15
|
-
# Amount to reverse in cents. Partial amounts
|
|
15
|
+
# Amount to reverse. Before v2026.10, specify the amount in integer cents. Partial amounts automatically trigger a refund instead of a cancellation.
|
|
16
16
|
field :amount, ::Integer, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
|
|
17
17
|
# Breakdown of the reversed amount.
|
|
18
18
|
field :amount_details, Crystalline::Nilable.new(Models::Components::ReversalAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
|
|
@@ -45,10 +45,10 @@ module Moov
|
|
|
45
45
|
field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
|
|
46
46
|
# Billing address associated with the card.
|
|
47
47
|
field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
|
|
48
|
+
# Spend controls applied to an issued card, including velocity runtime state.
|
|
49
|
+
field :controls, Crystalline::Nilable.new(Models::Components::IssuedControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, pan: ::String, cvv: ::String, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuingControls)).void }
|
|
51
|
+
sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, pan: ::String, cvv: ::String, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuedControls)).void }
|
|
52
52
|
def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, funding_wallet_id:, state:, form_factor:, created_on:, updated_on:, pan:, cvv:, authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, controls: nil)
|
|
53
53
|
@issued_card_id = issued_card_id
|
|
54
54
|
@brand = brand
|
|
@@ -41,10 +41,10 @@ module Moov
|
|
|
41
41
|
field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
|
|
42
42
|
# Billing address associated with the card.
|
|
43
43
|
field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
|
|
44
|
+
# Spend controls applied to an issued card, including velocity runtime state.
|
|
45
|
+
field :controls, Crystalline::Nilable.new(Models::Components::IssuedControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuingControls)).void }
|
|
47
|
+
sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuedControls)).void }
|
|
48
48
|
def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, funding_wallet_id:, state:, form_factor:, created_on:, updated_on:, authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, controls: nil)
|
|
49
49
|
@issued_card_id = issued_card_id
|
|
50
50
|
@brand = brand
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
# Spend controls applied to an issued card, including velocity runtime state.
|
|
11
|
+
class IssuedControls
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# Indicates if the card is single-use. If true, the card closes after the first authorization.
|
|
16
|
+
field :single_use, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('singleUse') } }
|
|
17
|
+
# The spending limits per time interval, including current runtime state.
|
|
18
|
+
field :velocity_limits, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::IssuedVelocityLimit)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('velocityLimits') } }
|
|
19
|
+
# Restricts card usage by merchant category. When not set, all categories are allowed.
|
|
20
|
+
field :merchant_category_restrictions, Crystalline::Nilable.new(Models::Components::MerchantCategoryRestrictions), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantCategoryRestrictions') } }
|
|
21
|
+
# Restricts card usage to specific merchants, or blocks specific merchants.
|
|
22
|
+
field :merchant_restrictions, Crystalline::Nilable.new(Models::Components::MerchantRestrictions), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantRestrictions') } }
|
|
23
|
+
# Limits card usage to specific days and times.
|
|
24
|
+
field :allowed_schedule, Crystalline::Nilable.new(Models::Components::IssuedControlsAllowedSchedule), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowedSchedule') } }
|
|
25
|
+
# A spend cutoff date and time. When set, all authorizations after this datetime are declined regardless of other controls.
|
|
26
|
+
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
|
+
|
|
28
|
+
sig { params(single_use: T.nilable(T::Boolean), velocity_limits: T.nilable(T::Array[Models::Components::IssuedVelocityLimit]), merchant_category_restrictions: T.nilable(Models::Components::MerchantCategoryRestrictions), merchant_restrictions: T.nilable(Models::Components::MerchantRestrictions), allowed_schedule: T.nilable(Models::Components::IssuedControlsAllowedSchedule), expires_on: T.nilable(::DateTime)).void }
|
|
29
|
+
def initialize(single_use: nil, velocity_limits: nil, merchant_category_restrictions: nil, merchant_restrictions: nil, allowed_schedule: nil, expires_on: nil)
|
|
30
|
+
@single_use = single_use
|
|
31
|
+
@velocity_limits = velocity_limits
|
|
32
|
+
@merchant_category_restrictions = merchant_category_restrictions
|
|
33
|
+
@merchant_restrictions = merchant_restrictions
|
|
34
|
+
@allowed_schedule = allowed_schedule
|
|
35
|
+
@expires_on = expires_on
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
39
|
+
def ==(other)
|
|
40
|
+
return false unless other.is_a? self.class
|
|
41
|
+
return false unless @single_use == other.single_use
|
|
42
|
+
return false unless @velocity_limits == other.velocity_limits
|
|
43
|
+
return false unless @merchant_category_restrictions == other.merchant_category_restrictions
|
|
44
|
+
return false unless @merchant_restrictions == other.merchant_restrictions
|
|
45
|
+
return false unless @allowed_schedule == other.allowed_schedule
|
|
46
|
+
return false unless @expires_on == other.expires_on
|
|
47
|
+
true
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::IssuedControls
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::IssuedControls
|
|
11
|
+
def single_use(); end
|
|
12
|
+
def single_use=(str_); end
|
|
13
|
+
def velocity_limits(); end
|
|
14
|
+
def velocity_limits=(str_); end
|
|
15
|
+
def merchant_category_restrictions(); end
|
|
16
|
+
def merchant_category_restrictions=(str_); end
|
|
17
|
+
def merchant_restrictions(); end
|
|
18
|
+
def merchant_restrictions=(str_); end
|
|
19
|
+
def allowed_schedule(); end
|
|
20
|
+
def allowed_schedule=(str_); end
|
|
21
|
+
def expires_on(); end
|
|
22
|
+
def expires_on=(str_); end
|
|
23
|
+
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
|
+
# Limits card usage to specific days and times.
|
|
11
|
+
class IssuedControlsAllowedSchedule
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# IANA timezone string used to evaluate window boundaries against the authorization time.
|
|
16
|
+
field :timezone, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('timezone'), required: true } }
|
|
17
|
+
# Time windows during which the card may authorize. Any matching window allows the transaction.
|
|
18
|
+
field :windows, Crystalline::Array.new(Models::Components::ScheduleWindow), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('windows'), required: true } }
|
|
19
|
+
|
|
20
|
+
sig { params(timezone: ::String, windows: T::Array[Models::Components::ScheduleWindow]).void }
|
|
21
|
+
def initialize(timezone:, windows:)
|
|
22
|
+
@timezone = timezone
|
|
23
|
+
@windows = windows
|
|
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 @timezone == other.timezone
|
|
30
|
+
return false unless @windows == other.windows
|
|
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::IssuedControlsAllowedSchedule
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::IssuedControlsAllowedSchedule
|
|
11
|
+
def timezone(); end
|
|
12
|
+
def timezone=(str_); end
|
|
13
|
+
def windows(); end
|
|
14
|
+
def windows=(str_); end
|
|
15
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
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
|
+
# A velocity limit with its current runtime state.
|
|
11
|
+
class IssuedVelocityLimit
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# Specifies the time frame for a velocity limit. `per-transaction` applies to each individual authorization and never resets. Time-based intervals (where supported) reset at midnight ET.
|
|
16
|
+
field :interval, Models::Components::IssuingIntervalLimit, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('interval'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::IssuingIntervalLimit, false) } }
|
|
17
|
+
# The maximum amount in cents that can be spent in a given interval.
|
|
18
|
+
field :amount, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
|
|
19
|
+
# The maximum number of transactions allowed in the given interval.
|
|
20
|
+
field :count, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('count') } }
|
|
21
|
+
# The amount in cents already spent in the current interval.
|
|
22
|
+
field :amount_used, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountUsed') } }
|
|
23
|
+
# The amount in cents remaining in the current interval.
|
|
24
|
+
field :amount_remaining, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountRemaining') } }
|
|
25
|
+
# The number of transactions already made in the current interval.
|
|
26
|
+
field :count_used, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('countUsed') } }
|
|
27
|
+
# The number of transactions remaining in the current interval.
|
|
28
|
+
field :count_remaining, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('countRemaining') } }
|
|
29
|
+
# When the current interval resets. Absent for per-transaction limits.
|
|
30
|
+
field :resets_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('resetsOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
|
|
31
|
+
|
|
32
|
+
sig { params(interval: Models::Components::IssuingIntervalLimit, amount: T.nilable(::Integer), count: T.nilable(::Integer), amount_used: T.nilable(::Integer), amount_remaining: T.nilable(::Integer), count_used: T.nilable(::Integer), count_remaining: T.nilable(::Integer), resets_on: T.nilable(::DateTime)).void }
|
|
33
|
+
def initialize(interval:, amount: nil, count: nil, amount_used: nil, amount_remaining: nil, count_used: nil, count_remaining: nil, resets_on: nil)
|
|
34
|
+
@interval = interval
|
|
35
|
+
@amount = amount
|
|
36
|
+
@count = count
|
|
37
|
+
@amount_used = amount_used
|
|
38
|
+
@amount_remaining = amount_remaining
|
|
39
|
+
@count_used = count_used
|
|
40
|
+
@count_remaining = count_remaining
|
|
41
|
+
@resets_on = resets_on
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
45
|
+
def ==(other)
|
|
46
|
+
return false unless other.is_a? self.class
|
|
47
|
+
return false unless @interval == other.interval
|
|
48
|
+
return false unless @amount == other.amount
|
|
49
|
+
return false unless @count == other.count
|
|
50
|
+
return false unless @amount_used == other.amount_used
|
|
51
|
+
return false unless @amount_remaining == other.amount_remaining
|
|
52
|
+
return false unless @count_used == other.count_used
|
|
53
|
+
return false unless @count_remaining == other.count_remaining
|
|
54
|
+
return false unless @resets_on == other.resets_on
|
|
55
|
+
true
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::IssuedVelocityLimit
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::IssuedVelocityLimit
|
|
11
|
+
def interval(); end
|
|
12
|
+
def interval=(str_); end
|
|
13
|
+
def amount(); end
|
|
14
|
+
def amount=(str_); end
|
|
15
|
+
def count(); end
|
|
16
|
+
def count=(str_); end
|
|
17
|
+
def amount_used(); end
|
|
18
|
+
def amount_used=(str_); end
|
|
19
|
+
def amount_remaining(); end
|
|
20
|
+
def amount_remaining=(str_); end
|
|
21
|
+
def count_used(); end
|
|
22
|
+
def count_used=(str_); end
|
|
23
|
+
def count_remaining(); end
|
|
24
|
+
def count_remaining=(str_); end
|
|
25
|
+
def resets_on(); end
|
|
26
|
+
def resets_on=(str_); end
|
|
27
|
+
end
|
|
@@ -16,11 +16,23 @@ module Moov
|
|
|
16
16
|
field :single_use, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('singleUse') } }
|
|
17
17
|
# Sets the spending limit per time interval. Only one limit per interval is supported.
|
|
18
18
|
field :velocity_limits, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::IssuingVelocityLimit)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('velocityLimits') } }
|
|
19
|
+
# Restricts card usage by merchant category. When not set, all categories are allowed.
|
|
20
|
+
field :merchant_category_restrictions, Crystalline::Nilable.new(Models::Components::MerchantCategoryRestrictions), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantCategoryRestrictions') } }
|
|
21
|
+
# Restricts card usage to specific merchants, or blocks specific merchants.
|
|
22
|
+
field :merchant_restrictions, Crystalline::Nilable.new(Models::Components::MerchantRestrictions), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantRestrictions') } }
|
|
23
|
+
# Limits card usage to specific days and times. Set to `null` to remove all schedule restrictions.
|
|
24
|
+
field :allowed_schedule, Crystalline::Nilable.new(Models::Components::IssuingControlsAllowedSchedule), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowedSchedule') } }
|
|
25
|
+
# A spend cutoff date and time. When set, all authorizations after this datetime are declined regardless of other controls. Set to `null` for no cutoff.
|
|
26
|
+
field :expires_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiresOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
|
|
19
27
|
|
|
20
|
-
sig { params(single_use: T.nilable(T::Boolean), velocity_limits: T.nilable(T::Array[Models::Components::IssuingVelocityLimit])).void }
|
|
21
|
-
def initialize(single_use: nil, velocity_limits: nil)
|
|
28
|
+
sig { params(single_use: T.nilable(T::Boolean), velocity_limits: T.nilable(T::Array[Models::Components::IssuingVelocityLimit]), merchant_category_restrictions: T.nilable(Models::Components::MerchantCategoryRestrictions), merchant_restrictions: T.nilable(Models::Components::MerchantRestrictions), allowed_schedule: T.nilable(Models::Components::IssuingControlsAllowedSchedule), expires_on: T.nilable(::DateTime)).void }
|
|
29
|
+
def initialize(single_use: nil, velocity_limits: nil, merchant_category_restrictions: nil, merchant_restrictions: nil, allowed_schedule: nil, expires_on: nil)
|
|
22
30
|
@single_use = single_use
|
|
23
31
|
@velocity_limits = velocity_limits
|
|
32
|
+
@merchant_category_restrictions = merchant_category_restrictions
|
|
33
|
+
@merchant_restrictions = merchant_restrictions
|
|
34
|
+
@allowed_schedule = allowed_schedule
|
|
35
|
+
@expires_on = expires_on
|
|
24
36
|
end
|
|
25
37
|
|
|
26
38
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
@@ -28,6 +40,10 @@ module Moov
|
|
|
28
40
|
return false unless other.is_a? self.class
|
|
29
41
|
return false unless @single_use == other.single_use
|
|
30
42
|
return false unless @velocity_limits == other.velocity_limits
|
|
43
|
+
return false unless @merchant_category_restrictions == other.merchant_category_restrictions
|
|
44
|
+
return false unless @merchant_restrictions == other.merchant_restrictions
|
|
45
|
+
return false unless @allowed_schedule == other.allowed_schedule
|
|
46
|
+
return false unless @expires_on == other.expires_on
|
|
31
47
|
true
|
|
32
48
|
end
|
|
33
49
|
end
|