diff --git a/.release-please-manifest.json b/.release-please-manifest.json index cd74a2ad..4b0a1882 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.156.0" + ".": "1.157.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 62bd5d7e..537cdff6 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 229 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-56334e000721ba4ee20536271d3acf7231529d7b1f651729e2f4ebe75eb12048.yml -openapi_spec_hash: 45777c412bcbc1aead50c84f78695203 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-942f7494ee0f14c1634ede0989985359cea633e5eece3d761910e7ffd6ac0fd8.yml +openapi_spec_hash: d87134899fb29e27832158facf9d67eb config_hash: b6f365add90e618b2174634df140826e diff --git a/CHANGELOG.md b/CHANGELOG.md index 8270cb0e..1a3843f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 1.157.0 (2025-12-08) + +Full Changelog: [v1.156.0...v1.157.0](https://github.com/Increase/increase-ruby/compare/v1.156.0...v1.157.0) + +### Features + +* **api:** api update ([cf2e5f7](https://github.com/Increase/increase-ruby/commit/cf2e5f7ac3084a0a372d004ce292783bebd4bfcf)) + ## 1.156.0 (2025-12-08) Full Changelog: [v1.155.0...v1.156.0](https://github.com/Increase/increase-ruby/compare/v1.155.0...v1.156.0) diff --git a/Gemfile.lock b/Gemfile.lock index 8c095e95..f921ea8f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - increase (1.156.0) + increase (1.157.0) connection_pool GEM diff --git a/README.md b/README.md index 7f4d8036..9dedceb7 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application ```ruby -gem "increase", "~> 1.156.0" +gem "increase", "~> 1.157.0" ``` diff --git a/lib/increase/models/event.rb b/lib/increase/models/event.rb index da380723..d4b61e51 100644 --- a/lib/increase/models/event.rb +++ b/lib/increase/models/event.rb @@ -325,6 +325,9 @@ module Category # Occurs whenever a Real-Time Decision is created in response to a card authorization. REAL_TIME_DECISION_CARD_AUTHORIZATION_REQUESTED = :"real_time_decision.card_authorization_requested" + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED = :"real_time_decision.card_balance_inquiry_requested" + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED = :"real_time_decision.digital_wallet_token_requested" diff --git a/lib/increase/models/event_list_params.rb b/lib/increase/models/event_list_params.rb index 35dec6e9..1871a33e 100644 --- a/lib/increase/models/event_list_params.rb +++ b/lib/increase/models/event_list_params.rb @@ -327,6 +327,9 @@ module In # Occurs whenever a Real-Time Decision is created in response to a card authorization. REAL_TIME_DECISION_CARD_AUTHORIZATION_REQUESTED = :"real_time_decision.card_authorization_requested" + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED = :"real_time_decision.card_balance_inquiry_requested" + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED = :"real_time_decision.digital_wallet_token_requested" diff --git a/lib/increase/models/event_subscription.rb b/lib/increase/models/event_subscription.rb index c1bccb63..0c2e411a 100644 --- a/lib/increase/models/event_subscription.rb +++ b/lib/increase/models/event_subscription.rb @@ -348,6 +348,9 @@ module SelectedEventCategory # Occurs whenever a Real-Time Decision is created in response to a card authorization. REAL_TIME_DECISION_CARD_AUTHORIZATION_REQUESTED = :"real_time_decision.card_authorization_requested" + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED = :"real_time_decision.card_balance_inquiry_requested" + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED = :"real_time_decision.digital_wallet_token_requested" diff --git a/lib/increase/models/event_subscription_create_params.rb b/lib/increase/models/event_subscription_create_params.rb index 01da8742..1f4317d6 100644 --- a/lib/increase/models/event_subscription_create_params.rb +++ b/lib/increase/models/event_subscription_create_params.rb @@ -317,6 +317,9 @@ module SelectedEventCategory # Occurs whenever a Real-Time Decision is created in response to a card authorization. REAL_TIME_DECISION_CARD_AUTHORIZATION_REQUESTED = :"real_time_decision.card_authorization_requested" + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED = :"real_time_decision.card_balance_inquiry_requested" + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED = :"real_time_decision.digital_wallet_token_requested" diff --git a/lib/increase/models/real_time_decision.rb b/lib/increase/models/real_time_decision.rb index 8fb92193..b8ba0a1c 100644 --- a/lib/increase/models/real_time_decision.rb +++ b/lib/increase/models/real_time_decision.rb @@ -30,6 +30,12 @@ class RealTimeDecision < Increase::Internal::Type::BaseModel # @return [Increase::Models::RealTimeDecision::CardAuthorization, nil] required :card_authorization, -> { Increase::RealTimeDecision::CardAuthorization }, nil?: true + # @!attribute card_balance_inquiry + # Fields related to a card balance inquiry. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry, nil] + required :card_balance_inquiry, -> { Increase::RealTimeDecision::CardBalanceInquiry }, nil?: true + # @!attribute category # The category of the Real-Time Decision. # @@ -77,7 +83,7 @@ class RealTimeDecision < Increase::Internal::Type::BaseModel # @return [Symbol, Increase::Models::RealTimeDecision::Type] required :type, enum: -> { Increase::RealTimeDecision::Type } - # @!method initialize(id:, card_authentication:, card_authentication_challenge:, card_authorization:, category:, created_at:, digital_wallet_authentication:, digital_wallet_token:, status:, timeout_at:, type:) + # @!method initialize(id:, card_authentication:, card_authentication_challenge:, card_authorization:, card_balance_inquiry:, category:, created_at:, digital_wallet_authentication:, digital_wallet_token:, status:, timeout_at:, type:) # Some parameter documentations has been truncated, see # {Increase::Models::RealTimeDecision} for more details. # @@ -94,6 +100,8 @@ class RealTimeDecision < Increase::Internal::Type::BaseModel # # @param card_authorization [Increase::Models::RealTimeDecision::CardAuthorization, nil] Fields related to a card authorization. # + # @param card_balance_inquiry [Increase::Models::RealTimeDecision::CardBalanceInquiry, nil] Fields related to a card balance inquiry. + # # @param category [Symbol, Increase::Models::RealTimeDecision::Category] The category of the Real-Time Decision. # # @param created_at [Time] The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time at which th @@ -1564,14 +1572,1051 @@ module Result end end - # The category of the Real-Time Decision. - # - # @see Increase::Models::RealTimeDecision#category - module Category - extend Increase::Internal::Type::Enum + # @see Increase::Models::RealTimeDecision#card_balance_inquiry + class CardBalanceInquiry < Increase::Internal::Type::BaseModel + # @!attribute account_id + # The identifier of the Account the authorization will debit. + # + # @return [String] + required :account_id, String - # A card is being authorized. - CARD_AUTHORIZATION_REQUESTED = :card_authorization_requested + # @!attribute additional_amounts + # Additional amounts associated with the card authorization, such as ATM + # surcharges fees. These are usually a subset of the `amount` field and are used + # to provide more detailed information about the transaction. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts] + required :additional_amounts, -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts } + + # @!attribute approval + # Present if and only if `decision` is `approve`. Contains information related to + # the approval of the balance inquiry. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::Approval, nil] + required :approval, -> { Increase::RealTimeDecision::CardBalanceInquiry::Approval }, nil?: true + + # @!attribute card_id + # The identifier of the Card that is being authorized. + # + # @return [String] + required :card_id, String + + # @!attribute decision + # Whether or not the authorization was approved. + # + # @return [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::Decision, nil] + required :decision, enum: -> { Increase::RealTimeDecision::CardBalanceInquiry::Decision }, nil?: true + + # @!attribute digital_wallet_token_id + # If the authorization was made via a Digital Wallet Token (such as an Apple Pay + # purchase), the identifier of the token that was used. + # + # @return [String, nil] + required :digital_wallet_token_id, String, nil?: true + + # @!attribute merchant_acceptor_id + # The merchant identifier (commonly abbreviated as MID) of the merchant the card + # is transacting with. + # + # @return [String] + required :merchant_acceptor_id, String + + # @!attribute merchant_category_code + # The Merchant Category Code (commonly abbreviated as MCC) of the merchant the + # card is transacting with. + # + # @return [String] + required :merchant_category_code, String + + # @!attribute merchant_city + # The city the merchant resides in. + # + # @return [String, nil] + required :merchant_city, String, nil?: true + + # @!attribute merchant_country + # The country the merchant resides in. + # + # @return [String] + required :merchant_country, String + + # @!attribute merchant_descriptor + # The merchant descriptor of the merchant the card is transacting with. + # + # @return [String] + required :merchant_descriptor, String + + # @!attribute merchant_postal_code + # The merchant's postal code. For US merchants this is either a 5-digit or 9-digit + # ZIP code, where the first 5 and last 4 are separated by a dash. + # + # @return [String, nil] + required :merchant_postal_code, String, nil?: true + + # @!attribute merchant_state + # The state the merchant resides in. + # + # @return [String, nil] + required :merchant_state, String, nil?: true + + # @!attribute network_details + # Fields specific to the `network`. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails] + required :network_details, -> { Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails } + + # @!attribute network_identifiers + # Network-specific identifiers for a specific request or transaction. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers] + required :network_identifiers, -> { Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers } + + # @!attribute network_risk_score + # The risk score generated by the card network. For Visa this is the Visa Advanced + # Authorization risk score, from 0 to 99, where 99 is the riskiest. For Pulse the + # score is from 0 to 999, where 999 is the riskiest. + # + # @return [Integer, nil] + required :network_risk_score, Integer, nil?: true + + # @!attribute physical_card_id + # If the authorization was made in-person with a physical card, the Physical Card + # that was used. + # + # @return [String, nil] + required :physical_card_id, String, nil?: true + + # @!attribute terminal_id + # The terminal identifier (commonly abbreviated as TID) of the terminal the card + # is transacting with. + # + # @return [String, nil] + required :terminal_id, String, nil?: true + + # @!attribute upcoming_card_payment_id + # The identifier of the Card Payment this authorization will belong to. Available + # in the API once the card authorization has completed. + # + # @return [String] + required :upcoming_card_payment_id, String + + # @!attribute verification + # Fields related to verification of cardholder-provided values. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification] + required :verification, -> { Increase::RealTimeDecision::CardBalanceInquiry::Verification } + + # @!method initialize(account_id:, additional_amounts:, approval:, card_id:, decision:, digital_wallet_token_id:, merchant_acceptor_id:, merchant_category_code:, merchant_city:, merchant_country:, merchant_descriptor:, merchant_postal_code:, merchant_state:, network_details:, network_identifiers:, network_risk_score:, physical_card_id:, terminal_id:, upcoming_card_payment_id:, verification:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry} for more details. + # + # Fields related to a card balance inquiry. + # + # @param account_id [String] The identifier of the Account the authorization will debit. + # + # @param additional_amounts [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts] Additional amounts associated with the card authorization, such as ATM surcharge + # + # @param approval [Increase::Models::RealTimeDecision::CardBalanceInquiry::Approval, nil] Present if and only if `decision` is `approve`. Contains information related to + # + # @param card_id [String] The identifier of the Card that is being authorized. + # + # @param decision [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::Decision, nil] Whether or not the authorization was approved. + # + # @param digital_wallet_token_id [String, nil] If the authorization was made via a Digital Wallet Token (such as an Apple Pay p + # + # @param merchant_acceptor_id [String] The merchant identifier (commonly abbreviated as MID) of the merchant the card i + # + # @param merchant_category_code [String] The Merchant Category Code (commonly abbreviated as MCC) of the merchant the car + # + # @param merchant_city [String, nil] The city the merchant resides in. + # + # @param merchant_country [String] The country the merchant resides in. + # + # @param merchant_descriptor [String] The merchant descriptor of the merchant the card is transacting with. + # + # @param merchant_postal_code [String, nil] The merchant's postal code. For US merchants this is either a 5-digit or 9-digit + # + # @param merchant_state [String, nil] The state the merchant resides in. + # + # @param network_details [Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails] Fields specific to the `network`. + # + # @param network_identifiers [Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers] Network-specific identifiers for a specific request or transaction. + # + # @param network_risk_score [Integer, nil] The risk score generated by the card network. For Visa this is the Visa Advanced + # + # @param physical_card_id [String, nil] If the authorization was made in-person with a physical card, the Physical Card + # + # @param terminal_id [String, nil] The terminal identifier (commonly abbreviated as TID) of the terminal the card i + # + # @param upcoming_card_payment_id [String] The identifier of the Card Payment this authorization will belong to. Available + # + # @param verification [Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification] Fields related to verification of cardholder-provided values. + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry#additional_amounts + class AdditionalAmounts < Increase::Internal::Type::BaseModel + # @!attribute clinic + # The part of this transaction amount that was for clinic-related services. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic, nil] + required :clinic, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic }, + nil?: true + + # @!attribute dental + # The part of this transaction amount that was for dental-related services. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental, nil] + required :dental, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental }, + nil?: true + + # @!attribute original + # The original pre-authorized amount. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original, nil] + required :original, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original }, + nil?: true + + # @!attribute prescription + # The part of this transaction amount that was for healthcare prescriptions. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription, nil] + required :prescription, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription }, + nil?: true + + # @!attribute surcharge + # The surcharge amount charged for this transaction by the merchant. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge, nil] + required :surcharge, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge }, + nil?: true + + # @!attribute total_cumulative + # The total amount of a series of incremental authorizations, optionally provided. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative, nil] + required :total_cumulative, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative }, + nil?: true + + # @!attribute total_healthcare + # The total amount of healthcare-related additional amounts. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare, nil] + required :total_healthcare, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare }, + nil?: true + + # @!attribute transit + # The part of this transaction amount that was for transit-related services. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit, nil] + required :transit, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit }, + nil?: true + + # @!attribute unknown + # An unknown additional amount. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown, nil] + required :unknown, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown }, + nil?: true + + # @!attribute vision + # The part of this transaction amount that was for vision-related services. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision, nil] + required :vision, + -> { Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision }, + nil?: true + + # @!method initialize(clinic:, dental:, original:, prescription:, surcharge:, total_cumulative:, total_healthcare:, transit:, unknown:, vision:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts} for + # more details. + # + # Additional amounts associated with the card authorization, such as ATM + # surcharges fees. These are usually a subset of the `amount` field and are used + # to provide more detailed information about the transaction. + # + # @param clinic [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic, nil] The part of this transaction amount that was for clinic-related services. + # + # @param dental [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental, nil] The part of this transaction amount that was for dental-related services. + # + # @param original [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original, nil] The original pre-authorized amount. + # + # @param prescription [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription, nil] The part of this transaction amount that was for healthcare prescriptions. + # + # @param surcharge [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge, nil] The surcharge amount charged for this transaction by the merchant. + # + # @param total_cumulative [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative, nil] The total amount of a series of incremental authorizations, optionally provided. + # + # @param total_healthcare [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare, nil] The total amount of healthcare-related additional amounts. + # + # @param transit [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit, nil] The part of this transaction amount that was for transit-related services. + # + # @param unknown [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown, nil] An unknown additional amount. + # + # @param vision [Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision, nil] The part of this transaction amount that was for vision-related services. + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#clinic + class Clinic < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic} + # for more details. + # + # The part of this transaction amount that was for clinic-related services. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#dental + class Dental < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental} + # for more details. + # + # The part of this transaction amount that was for dental-related services. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#original + class Original < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original} + # for more details. + # + # The original pre-authorized amount. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#prescription + class Prescription < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription} + # for more details. + # + # The part of this transaction amount that was for healthcare prescriptions. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#surcharge + class Surcharge < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge} + # for more details. + # + # The surcharge amount charged for this transaction by the merchant. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#total_cumulative + class TotalCumulative < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative} + # for more details. + # + # The total amount of a series of incremental authorizations, optionally provided. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#total_healthcare + class TotalHealthcare < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare} + # for more details. + # + # The total amount of healthcare-related additional amounts. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#transit + class Transit < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit} + # for more details. + # + # The part of this transaction amount that was for transit-related services. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#unknown + class Unknown < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown} + # for more details. + # + # An unknown additional amount. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts#vision + class Vision < Increase::Internal::Type::BaseModel + # @!attribute amount + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + # + # @return [Integer] + required :amount, Integer + + # @!attribute currency + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + # + # @return [String] + required :currency, String + + # @!method initialize(amount:, currency:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision} + # for more details. + # + # The part of this transaction amount that was for vision-related services. + # + # @param amount [Integer] The amount in minor units of the `currency` field. The amount is positive if it + # + # @param currency [String] The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional a + end + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry#approval + class Approval < Increase::Internal::Type::BaseModel + # @!attribute balance + # If the balance inquiry was approved, this field contains the balance in the + # minor unit of the settlement currency. + # + # @return [Integer] + required :balance, Integer + + # @!method initialize(balance:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::Approval} for more + # details. + # + # Present if and only if `decision` is `approve`. Contains information related to + # the approval of the balance inquiry. + # + # @param balance [Integer] If the balance inquiry was approved, this field contains the balance in the mino + end + + # Whether or not the authorization was approved. + # + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry#decision + module Decision + extend Increase::Internal::Type::Enum + + # Approve the authorization. + APPROVE = :approve + + # Decline the authorization. + DECLINE = :decline + + # @!method self.values + # @return [Array] + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry#network_details + class NetworkDetails < Increase::Internal::Type::BaseModel + # @!attribute category + # The payment network used to process this card authorization. + # + # @return [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category] + required :category, enum: -> { Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category } + + # @!attribute pulse + # Fields specific to the `pulse` network. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse, nil] + required :pulse, + -> { + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse + }, + nil?: true + + # @!attribute visa + # Fields specific to the `visa` network. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa, nil] + required :visa, + -> { + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa + }, + nil?: true + + # @!method initialize(category:, pulse:, visa:) + # Fields specific to the `network`. + # + # @param category [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category] The payment network used to process this card authorization. + # + # @param pulse [Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse, nil] Fields specific to the `pulse` network. + # + # @param visa [Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa, nil] Fields specific to the `visa` network. + + # The payment network used to process this card authorization. + # + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails#category + module Category + extend Increase::Internal::Type::Enum + + # Visa + VISA = :visa + + # Pulse + PULSE = :pulse + + # @!method self.values + # @return [Array] + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails#pulse + class Pulse < Increase::Internal::Type::BaseModel + # @!method initialize + # Fields specific to the `pulse` network. + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails#visa + class Visa < Increase::Internal::Type::BaseModel + # @!attribute electronic_commerce_indicator + # For electronic commerce transactions, this identifies the level of security used + # in obtaining the customer's payment credential. For mail or telephone order + # transactions, identifies the type of mail or telephone order. + # + # @return [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator, nil] + required :electronic_commerce_indicator, + enum: -> { + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator + }, + nil?: true + + # @!attribute point_of_service_entry_mode + # The method used to enter the cardholder's primary account number and card + # expiration date. + # + # @return [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode, nil] + required :point_of_service_entry_mode, + enum: -> { + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode + }, + nil?: true + + # @!attribute stand_in_processing_reason + # Only present when `actioner: network`. Describes why a card authorization was + # approved or declined by Visa through stand-in processing. + # + # @return [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason, nil] + required :stand_in_processing_reason, + enum: -> { + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason + }, + nil?: true + + # @!method initialize(electronic_commerce_indicator:, point_of_service_entry_mode:, stand_in_processing_reason:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa} + # for more details. + # + # Fields specific to the `visa` network. + # + # @param electronic_commerce_indicator [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator, nil] For electronic commerce transactions, this identifies the level of security used + # + # @param point_of_service_entry_mode [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode, nil] The method used to enter the cardholder's primary account number and card expira + # + # @param stand_in_processing_reason [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason, nil] Only present when `actioner: network`. Describes why a card authorization was ap + + # For electronic commerce transactions, this identifies the level of security used + # in obtaining the customer's payment credential. For mail or telephone order + # transactions, identifies the type of mail or telephone order. + # + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa#electronic_commerce_indicator + module ElectronicCommerceIndicator + extend Increase::Internal::Type::Enum + + # Single transaction of a mail/phone order: Use to indicate that the transaction is a mail/phone order purchase, not a recurring transaction or installment payment. For domestic transactions in the US region, this value may also indicate one bill payment transaction in the card-present or card-absent environments. + MAIL_PHONE_ORDER = :mail_phone_order + + # Recurring transaction: Payment indicator used to indicate a recurring transaction that originates from an acquirer in the US region. + RECURRING = :recurring + + # Installment payment: Payment indicator used to indicate one purchase of goods or services that is billed to the account in multiple charges over a period of time agreed upon by the cardholder and merchant from transactions that originate from an acquirer in the US region. + INSTALLMENT = :installment + + # Unknown classification: other mail order: Use to indicate that the type of mail/telephone order is unknown. + UNKNOWN_MAIL_PHONE_ORDER = :unknown_mail_phone_order + + # Secure electronic commerce transaction: Use to indicate that the electronic commerce transaction has been authenticated using e.g., 3-D Secure + SECURE_ELECTRONIC_COMMERCE = :secure_electronic_commerce + + # Non-authenticated security transaction at a 3-D Secure-capable merchant, and merchant attempted to authenticate the cardholder using 3-D Secure: Use to identify an electronic commerce transaction where the merchant attempted to authenticate the cardholder using 3-D Secure, but was unable to complete the authentication because the issuer or cardholder does not participate in the 3-D Secure program. + NON_AUTHENTICATED_SECURITY_TRANSACTION_AT_3DS_CAPABLE_MERCHANT = + :non_authenticated_security_transaction_at_3ds_capable_merchant + + # Non-authenticated security transaction: Use to identify an electronic commerce transaction that uses data encryption for security however, cardholder authentication is not performed using 3-D Secure. + NON_AUTHENTICATED_SECURITY_TRANSACTION = :non_authenticated_security_transaction + + # Non-secure transaction: Use to identify an electronic commerce transaction that has no data protection. + NON_SECURE_TRANSACTION = :non_secure_transaction + + # @!method self.values + # @return [Array] + end + + # The method used to enter the cardholder's primary account number and card + # expiration date. + # + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa#point_of_service_entry_mode + module PointOfServiceEntryMode + extend Increase::Internal::Type::Enum + + # Unknown + UNKNOWN = :unknown + + # Manual key entry + MANUAL = :manual + + # Magnetic stripe read, without card verification value + MAGNETIC_STRIPE_NO_CVV = :magnetic_stripe_no_cvv + + # Optical code + OPTICAL_CODE = :optical_code + + # Contact chip card + INTEGRATED_CIRCUIT_CARD = :integrated_circuit_card + + # Contactless read of chip card + CONTACTLESS = :contactless + + # Transaction initiated using a credential that has previously been stored on file + CREDENTIAL_ON_FILE = :credential_on_file + + # Magnetic stripe read + MAGNETIC_STRIPE = :magnetic_stripe + + # Contactless read of magnetic stripe data + CONTACTLESS_MAGNETIC_STRIPE = :contactless_magnetic_stripe + + # Contact chip card, without card verification value + INTEGRATED_CIRCUIT_CARD_NO_CVV = :integrated_circuit_card_no_cvv + + # @!method self.values + # @return [Array] + end + + # Only present when `actioner: network`. Describes why a card authorization was + # approved or declined by Visa through stand-in processing. + # + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa#stand_in_processing_reason + module StandInProcessingReason + extend Increase::Internal::Type::Enum + + # Increase failed to process the authorization in a timely manner. + ISSUER_ERROR = :issuer_error + + # The physical card read had an invalid CVV, dCVV, or authorization request cryptogram. + INVALID_PHYSICAL_CARD = :invalid_physical_card + + # The 3DS cardholder authentication verification value was invalid. + INVALID_CARDHOLDER_AUTHENTICATION_VERIFICATION_VALUE = + :invalid_cardholder_authentication_verification_value + + # An internal Visa error occurred. Visa uses this reason code for certain expected occurrences as well, such as Application Transaction Counter (ATC) replays. + INTERNAL_VISA_ERROR = :internal_visa_error + + # The merchant has enabled Visa's Transaction Advisory Service and requires further authentication to perform the transaction. In practice this is often utilized at fuel pumps to tell the cardholder to see the cashier. + MERCHANT_TRANSACTION_ADVISORY_SERVICE_AUTHENTICATION_REQUIRED = + :merchant_transaction_advisory_service_authentication_required + + # The transaction was blocked by Visa's Payment Fraud Disruption service due to fraudulent Acquirer behavior, such as card testing. + PAYMENT_FRAUD_DISRUPTION_ACQUIRER_BLOCK = :payment_fraud_disruption_acquirer_block + + # An unspecific reason for stand-in processing. + OTHER = :other + + # @!method self.values + # @return [Array] + end + end + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry#network_identifiers + class NetworkIdentifiers < Increase::Internal::Type::BaseModel + # @!attribute authorization_identification_response + # The randomly generated 6-character Authorization Identification Response code + # sent back to the acquirer in an approved response. + # + # @return [String, nil] + required :authorization_identification_response, String, nil?: true + + # @!attribute retrieval_reference_number + # A life-cycle identifier used across e.g., an authorization and a reversal. + # Expected to be unique per acquirer within a window of time. For some card + # networks the retrieval reference number includes the trace counter. + # + # @return [String, nil] + required :retrieval_reference_number, String, nil?: true + + # @!attribute trace_number + # A counter used to verify an individual authorization. Expected to be unique per + # acquirer within a window of time. + # + # @return [String, nil] + required :trace_number, String, nil?: true + + # @!attribute transaction_id + # A globally unique transaction identifier provided by the card network, used + # across multiple life-cycle requests. + # + # @return [String, nil] + required :transaction_id, String, nil?: true + + # @!method initialize(authorization_identification_response:, retrieval_reference_number:, trace_number:, transaction_id:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers} for + # more details. + # + # Network-specific identifiers for a specific request or transaction. + # + # @param authorization_identification_response [String, nil] The randomly generated 6-character Authorization Identification Response code se + # + # @param retrieval_reference_number [String, nil] A life-cycle identifier used across e.g., an authorization and a reversal. Expec + # + # @param trace_number [String, nil] A counter used to verify an individual authorization. Expected to be unique per + # + # @param transaction_id [String, nil] A globally unique transaction identifier provided by the card network, used acro + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry#verification + class Verification < Increase::Internal::Type::BaseModel + # @!attribute card_verification_code + # Fields related to verification of the Card Verification Code, a 3-digit code on + # the back of the card. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode] + required :card_verification_code, + -> { Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode } + + # @!attribute cardholder_address + # Cardholder address provided in the authorization request and the address on file + # we verified it against. + # + # @return [Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress] + required :cardholder_address, + -> { Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress } + + # @!method initialize(card_verification_code:, cardholder_address:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification} for more + # details. + # + # Fields related to verification of cardholder-provided values. + # + # @param card_verification_code [Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode] Fields related to verification of the Card Verification Code, a 3-digit code on + # + # @param cardholder_address [Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress] Cardholder address provided in the authorization request and the address on file + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification#card_verification_code + class CardVerificationCode < Increase::Internal::Type::BaseModel + # @!attribute result + # The result of verifying the Card Verification Code. + # + # @return [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result] + required :result, + enum: -> { Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result } + + # @!method initialize(result:) + # Fields related to verification of the Card Verification Code, a 3-digit code on + # the back of the card. + # + # @param result [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result] The result of verifying the Card Verification Code. + + # The result of verifying the Card Verification Code. + # + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode#result + module Result + extend Increase::Internal::Type::Enum + + # No card verification code was provided in the authorization request. + NOT_CHECKED = :not_checked + + # The card verification code matched the one on file. + MATCH = :match + + # The card verification code did not match the one on file. + NO_MATCH = :no_match + + # @!method self.values + # @return [Array] + end + end + + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification#cardholder_address + class CardholderAddress < Increase::Internal::Type::BaseModel + # @!attribute actual_line1 + # Line 1 of the address on file for the cardholder. + # + # @return [String, nil] + required :actual_line1, String, nil?: true + + # @!attribute actual_postal_code + # The postal code of the address on file for the cardholder. + # + # @return [String, nil] + required :actual_postal_code, String, nil?: true + + # @!attribute provided_line1 + # The cardholder address line 1 provided for verification in the authorization + # request. + # + # @return [String, nil] + required :provided_line1, String, nil?: true + + # @!attribute provided_postal_code + # The postal code provided for verification in the authorization request. + # + # @return [String, nil] + required :provided_postal_code, String, nil?: true + + # @!attribute result + # The address verification result returned to the card network. + # + # @return [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result] + required :result, + enum: -> { Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result } + + # @!method initialize(actual_line1:, actual_postal_code:, provided_line1:, provided_postal_code:, result:) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress} + # for more details. + # + # Cardholder address provided in the authorization request and the address on file + # we verified it against. + # + # @param actual_line1 [String, nil] Line 1 of the address on file for the cardholder. + # + # @param actual_postal_code [String, nil] The postal code of the address on file for the cardholder. + # + # @param provided_line1 [String, nil] The cardholder address line 1 provided for verification in the authorization req + # + # @param provided_postal_code [String, nil] The postal code provided for verification in the authorization request. + # + # @param result [Symbol, Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result] The address verification result returned to the card network. + + # The address verification result returned to the card network. + # + # @see Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress#result + module Result + extend Increase::Internal::Type::Enum + + # No address information was provided in the authorization request. + NOT_CHECKED = :not_checked + + # Postal code matches, but the street address does not match or was not provided. + POSTAL_CODE_MATCH_ADDRESS_NO_MATCH = :postal_code_match_address_no_match + + # Postal code does not match, but the street address matches or was not provided. + POSTAL_CODE_NO_MATCH_ADDRESS_MATCH = :postal_code_no_match_address_match + + # Postal code and street address match. + MATCH = :match + + # Postal code and street address do not match. + NO_MATCH = :no_match + + # Postal code matches, but the street address was not verified. (deprecated) + POSTAL_CODE_MATCH_ADDRESS_NOT_CHECKED = :postal_code_match_address_not_checked + + # @!method self.values + # @return [Array] + end + end + end + end + + # The category of the Real-Time Decision. + # + # @see Increase::Models::RealTimeDecision#category + module Category + extend Increase::Internal::Type::Enum + + # A card is being authorized. + CARD_AUTHORIZATION_REQUESTED = :card_authorization_requested + + # A balance inquiry is being made on a card. + CARD_BALANCE_INQUIRY_REQUESTED = :card_balance_inquiry_requested # 3DS authentication is requested. CARD_AUTHENTICATION_REQUESTED = :card_authentication_requested diff --git a/lib/increase/models/real_time_decision_action_params.rb b/lib/increase/models/real_time_decision_action_params.rb index 36dfc1b9..aa9b6541 100644 --- a/lib/increase/models/real_time_decision_action_params.rb +++ b/lib/increase/models/real_time_decision_action_params.rb @@ -29,6 +29,13 @@ class RealTimeDecisionActionParams < Increase::Internal::Type::BaseModel # @return [Increase::Models::RealTimeDecisionActionParams::CardAuthorization, nil] optional :card_authorization, -> { Increase::RealTimeDecisionActionParams::CardAuthorization } + # @!attribute card_balance_inquiry + # If the Real-Time Decision relates to a card balance inquiry attempt, this object + # contains your response to the inquiry. + # + # @return [Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry, nil] + optional :card_balance_inquiry, -> { Increase::RealTimeDecisionActionParams::CardBalanceInquiry } + # @!attribute digital_wallet_authentication # If the Real-Time Decision relates to a digital wallet authentication attempt, # this object contains your response to the authentication. @@ -44,7 +51,7 @@ class RealTimeDecisionActionParams < Increase::Internal::Type::BaseModel # @return [Increase::Models::RealTimeDecisionActionParams::DigitalWalletToken, nil] optional :digital_wallet_token, -> { Increase::RealTimeDecisionActionParams::DigitalWalletToken } - # @!method initialize(card_authentication: nil, card_authentication_challenge: nil, card_authorization: nil, digital_wallet_authentication: nil, digital_wallet_token: nil, request_options: {}) + # @!method initialize(card_authentication: nil, card_authentication_challenge: nil, card_authorization: nil, card_balance_inquiry: nil, digital_wallet_authentication: nil, digital_wallet_token: nil, request_options: {}) # Some parameter documentations has been truncated, see # {Increase::Models::RealTimeDecisionActionParams} for more details. # @@ -54,6 +61,8 @@ class RealTimeDecisionActionParams < Increase::Internal::Type::BaseModel # # @param card_authorization [Increase::Models::RealTimeDecisionActionParams::CardAuthorization] If the Real-Time Decision relates to a card authorization attempt, this object c # + # @param card_balance_inquiry [Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry] If the Real-Time Decision relates to a card balance inquiry attempt, this object + # # @param digital_wallet_authentication [Increase::Models::RealTimeDecisionActionParams::DigitalWalletAuthentication] If the Real-Time Decision relates to a digital wallet authentication attempt, th # # @param digital_wallet_token [Increase::Models::RealTimeDecisionActionParams::DigitalWalletToken] If the Real-Time Decision relates to a digital wallet token provisioning attempt @@ -331,6 +340,64 @@ module Reason end end + class CardBalanceInquiry < Increase::Internal::Type::BaseModel + # @!attribute decision + # Whether the card balance inquiry should be approved or declined. + # + # @return [Symbol, Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry::Decision] + required :decision, enum: -> { Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Decision } + + # @!attribute approval + # If your application approves the balance inquiry, this contains metadata about + # your decision to approve. + # + # @return [Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry::Approval, nil] + optional :approval, -> { Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval } + + # @!method initialize(decision:, approval: nil) + # Some parameter documentations has been truncated, see + # {Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry} for more + # details. + # + # If the Real-Time Decision relates to a card balance inquiry attempt, this object + # contains your response to the inquiry. + # + # @param decision [Symbol, Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry::Decision] Whether the card balance inquiry should be approved or declined. + # + # @param approval [Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry::Approval] If your application approves the balance inquiry, this contains metadata about y + + # Whether the card balance inquiry should be approved or declined. + # + # @see Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry#decision + module Decision + extend Increase::Internal::Type::Enum + + # Approve the authorization. + APPROVE = :approve + + # Decline the authorization. + DECLINE = :decline + + # @!method self.values + # @return [Array] + end + + # @see Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry#approval + class Approval < Increase::Internal::Type::BaseModel + # @!attribute balance + # The balance on the card in the settlement currency of the transaction. + # + # @return [Integer] + required :balance, Integer + + # @!method initialize(balance:) + # If your application approves the balance inquiry, this contains metadata about + # your decision to approve. + # + # @param balance [Integer] The balance on the card in the settlement currency of the transaction. + end + end + class DigitalWalletAuthentication < Increase::Internal::Type::BaseModel # @!attribute result # Whether your application was able to deliver the one-time passcode. diff --git a/lib/increase/resources/real_time_decisions.rb b/lib/increase/resources/real_time_decisions.rb index f9682c55..03abf7b4 100644 --- a/lib/increase/resources/real_time_decisions.rb +++ b/lib/increase/resources/real_time_decisions.rb @@ -28,7 +28,7 @@ def retrieve(real_time_decision_id, params = {}) # # Action a Real-Time Decision # - # @overload action(real_time_decision_id, card_authentication: nil, card_authentication_challenge: nil, card_authorization: nil, digital_wallet_authentication: nil, digital_wallet_token: nil, request_options: {}) + # @overload action(real_time_decision_id, card_authentication: nil, card_authentication_challenge: nil, card_authorization: nil, card_balance_inquiry: nil, digital_wallet_authentication: nil, digital_wallet_token: nil, request_options: {}) # # @param real_time_decision_id [String] The identifier of the Real-Time Decision. # @@ -38,6 +38,8 @@ def retrieve(real_time_decision_id, params = {}) # # @param card_authorization [Increase::Models::RealTimeDecisionActionParams::CardAuthorization] If the Real-Time Decision relates to a card authorization attempt, this object c # + # @param card_balance_inquiry [Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry] If the Real-Time Decision relates to a card balance inquiry attempt, this object + # # @param digital_wallet_authentication [Increase::Models::RealTimeDecisionActionParams::DigitalWalletAuthentication] If the Real-Time Decision relates to a digital wallet authentication attempt, th # # @param digital_wallet_token [Increase::Models::RealTimeDecisionActionParams::DigitalWalletToken] If the Real-Time Decision relates to a digital wallet token provisioning attempt diff --git a/lib/increase/version.rb b/lib/increase/version.rb index f4c14c70..d7dd306b 100644 --- a/lib/increase/version.rb +++ b/lib/increase/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Increase - VERSION = "1.156.0" + VERSION = "1.157.0" end diff --git a/rbi/increase/models/event.rbi b/rbi/increase/models/event.rbi index f5c8f47b..c5bd1d88 100644 --- a/rbi/increase/models/event.rbi +++ b/rbi/increase/models/event.rbi @@ -634,6 +634,13 @@ module Increase Increase::Event::Category::TaggedSymbol ) + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED = + T.let( + :"real_time_decision.card_balance_inquiry_requested", + Increase::Event::Category::TaggedSymbol + ) + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED = T.let( diff --git a/rbi/increase/models/event_list_params.rbi b/rbi/increase/models/event_list_params.rbi index 8903a411..8b908eea 100644 --- a/rbi/increase/models/event_list_params.rbi +++ b/rbi/increase/models/event_list_params.rbi @@ -739,6 +739,13 @@ module Increase Increase::EventListParams::Category::In::TaggedSymbol ) + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED = + T.let( + :"real_time_decision.card_balance_inquiry_requested", + Increase::EventListParams::Category::In::TaggedSymbol + ) + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED = T.let( diff --git a/rbi/increase/models/event_subscription.rbi b/rbi/increase/models/event_subscription.rbi index d27413cd..f305272b 100644 --- a/rbi/increase/models/event_subscription.rbi +++ b/rbi/increase/models/event_subscription.rbi @@ -723,6 +723,13 @@ module Increase Increase::EventSubscription::SelectedEventCategory::TaggedSymbol ) + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED = + T.let( + :"real_time_decision.card_balance_inquiry_requested", + Increase::EventSubscription::SelectedEventCategory::TaggedSymbol + ) + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED = T.let( diff --git a/rbi/increase/models/event_subscription_create_params.rbi b/rbi/increase/models/event_subscription_create_params.rbi index 49559014..42e18ba9 100644 --- a/rbi/increase/models/event_subscription_create_params.rbi +++ b/rbi/increase/models/event_subscription_create_params.rbi @@ -722,6 +722,13 @@ module Increase Increase::EventSubscriptionCreateParams::SelectedEventCategory::TaggedSymbol ) + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED = + T.let( + :"real_time_decision.card_balance_inquiry_requested", + Increase::EventSubscriptionCreateParams::SelectedEventCategory::TaggedSymbol + ) + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED = T.let( diff --git a/rbi/increase/models/real_time_decision.rbi b/rbi/increase/models/real_time_decision.rbi index a60a383a..565565de 100644 --- a/rbi/increase/models/real_time_decision.rbi +++ b/rbi/increase/models/real_time_decision.rbi @@ -54,6 +54,18 @@ module Increase end attr_writer :card_authorization + # Fields related to a card balance inquiry. + sig { returns(T.nilable(Increase::RealTimeDecision::CardBalanceInquiry)) } + attr_reader :card_balance_inquiry + + sig do + params( + card_balance_inquiry: + T.nilable(Increase::RealTimeDecision::CardBalanceInquiry::OrHash) + ).void + end + attr_writer :card_balance_inquiry + # The category of the Real-Time Decision. sig { returns(Increase::RealTimeDecision::Category::TaggedSymbol) } attr_accessor :category @@ -122,6 +134,8 @@ module Increase ), card_authorization: T.nilable(Increase::RealTimeDecision::CardAuthorization::OrHash), + card_balance_inquiry: + T.nilable(Increase::RealTimeDecision::CardBalanceInquiry::OrHash), category: Increase::RealTimeDecision::Category::OrSymbol, created_at: Time, digital_wallet_authentication: @@ -144,6 +158,8 @@ module Increase card_authentication_challenge:, # Fields related to a card authorization. card_authorization:, + # Fields related to a card balance inquiry. + card_balance_inquiry:, # The category of the Real-Time Decision. category:, # The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time at which @@ -176,6 +192,8 @@ module Increase ), card_authorization: T.nilable(Increase::RealTimeDecision::CardAuthorization), + card_balance_inquiry: + T.nilable(Increase::RealTimeDecision::CardBalanceInquiry), category: Increase::RealTimeDecision::Category::TaggedSymbol, created_at: Time, digital_wallet_authentication: @@ -3057,18 +3075,2023 @@ module Increase end end - # The category of the Real-Time Decision. - module Category - extend Increase::Internal::Type::Enum + class CardBalanceInquiry < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry, + Increase::Internal::AnyHash + ) + end - TaggedSymbol = - T.type_alias { T.all(Symbol, Increase::RealTimeDecision::Category) } - OrSymbol = T.type_alias { T.any(Symbol, String) } + # The identifier of the Account the authorization will debit. + sig { returns(String) } + attr_accessor :account_id - # A card is being authorized. - CARD_AUTHORIZATION_REQUESTED = - T.let( - :card_authorization_requested, + # Additional amounts associated with the card authorization, such as ATM + # surcharges fees. These are usually a subset of the `amount` field and are used + # to provide more detailed information about the transaction. + sig do + returns( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts + ) + end + attr_reader :additional_amounts + + sig do + params( + additional_amounts: + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::OrHash + ).void + end + attr_writer :additional_amounts + + # Present if and only if `decision` is `approve`. Contains information related to + # the approval of the balance inquiry. + sig do + returns( + T.nilable(Increase::RealTimeDecision::CardBalanceInquiry::Approval) + ) + end + attr_reader :approval + + sig do + params( + approval: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::Approval::OrHash + ) + ).void + end + attr_writer :approval + + # The identifier of the Card that is being authorized. + sig { returns(String) } + attr_accessor :card_id + + # Whether or not the authorization was approved. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::Decision::TaggedSymbol + ) + ) + end + attr_accessor :decision + + # If the authorization was made via a Digital Wallet Token (such as an Apple Pay + # purchase), the identifier of the token that was used. + sig { returns(T.nilable(String)) } + attr_accessor :digital_wallet_token_id + + # The merchant identifier (commonly abbreviated as MID) of the merchant the card + # is transacting with. + sig { returns(String) } + attr_accessor :merchant_acceptor_id + + # The Merchant Category Code (commonly abbreviated as MCC) of the merchant the + # card is transacting with. + sig { returns(String) } + attr_accessor :merchant_category_code + + # The city the merchant resides in. + sig { returns(T.nilable(String)) } + attr_accessor :merchant_city + + # The country the merchant resides in. + sig { returns(String) } + attr_accessor :merchant_country + + # The merchant descriptor of the merchant the card is transacting with. + sig { returns(String) } + attr_accessor :merchant_descriptor + + # The merchant's postal code. For US merchants this is either a 5-digit or 9-digit + # ZIP code, where the first 5 and last 4 are separated by a dash. + sig { returns(T.nilable(String)) } + attr_accessor :merchant_postal_code + + # The state the merchant resides in. + sig { returns(T.nilable(String)) } + attr_accessor :merchant_state + + # Fields specific to the `network`. + sig do + returns( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails + ) + end + attr_reader :network_details + + sig do + params( + network_details: + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::OrHash + ).void + end + attr_writer :network_details + + # Network-specific identifiers for a specific request or transaction. + sig do + returns( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers + ) + end + attr_reader :network_identifiers + + sig do + params( + network_identifiers: + Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers::OrHash + ).void + end + attr_writer :network_identifiers + + # The risk score generated by the card network. For Visa this is the Visa Advanced + # Authorization risk score, from 0 to 99, where 99 is the riskiest. For Pulse the + # score is from 0 to 999, where 999 is the riskiest. + sig { returns(T.nilable(Integer)) } + attr_accessor :network_risk_score + + # If the authorization was made in-person with a physical card, the Physical Card + # that was used. + sig { returns(T.nilable(String)) } + attr_accessor :physical_card_id + + # The terminal identifier (commonly abbreviated as TID) of the terminal the card + # is transacting with. + sig { returns(T.nilable(String)) } + attr_accessor :terminal_id + + # The identifier of the Card Payment this authorization will belong to. Available + # in the API once the card authorization has completed. + sig { returns(String) } + attr_accessor :upcoming_card_payment_id + + # Fields related to verification of cardholder-provided values. + sig do + returns(Increase::RealTimeDecision::CardBalanceInquiry::Verification) + end + attr_reader :verification + + sig do + params( + verification: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::OrHash + ).void + end + attr_writer :verification + + # Fields related to a card balance inquiry. + sig do + params( + account_id: String, + additional_amounts: + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::OrHash, + approval: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::Approval::OrHash + ), + card_id: String, + decision: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::Decision::OrSymbol + ), + digital_wallet_token_id: T.nilable(String), + merchant_acceptor_id: String, + merchant_category_code: String, + merchant_city: T.nilable(String), + merchant_country: String, + merchant_descriptor: String, + merchant_postal_code: T.nilable(String), + merchant_state: T.nilable(String), + network_details: + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::OrHash, + network_identifiers: + Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers::OrHash, + network_risk_score: T.nilable(Integer), + physical_card_id: T.nilable(String), + terminal_id: T.nilable(String), + upcoming_card_payment_id: String, + verification: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::OrHash + ).returns(T.attached_class) + end + def self.new( + # The identifier of the Account the authorization will debit. + account_id:, + # Additional amounts associated with the card authorization, such as ATM + # surcharges fees. These are usually a subset of the `amount` field and are used + # to provide more detailed information about the transaction. + additional_amounts:, + # Present if and only if `decision` is `approve`. Contains information related to + # the approval of the balance inquiry. + approval:, + # The identifier of the Card that is being authorized. + card_id:, + # Whether or not the authorization was approved. + decision:, + # If the authorization was made via a Digital Wallet Token (such as an Apple Pay + # purchase), the identifier of the token that was used. + digital_wallet_token_id:, + # The merchant identifier (commonly abbreviated as MID) of the merchant the card + # is transacting with. + merchant_acceptor_id:, + # The Merchant Category Code (commonly abbreviated as MCC) of the merchant the + # card is transacting with. + merchant_category_code:, + # The city the merchant resides in. + merchant_city:, + # The country the merchant resides in. + merchant_country:, + # The merchant descriptor of the merchant the card is transacting with. + merchant_descriptor:, + # The merchant's postal code. For US merchants this is either a 5-digit or 9-digit + # ZIP code, where the first 5 and last 4 are separated by a dash. + merchant_postal_code:, + # The state the merchant resides in. + merchant_state:, + # Fields specific to the `network`. + network_details:, + # Network-specific identifiers for a specific request or transaction. + network_identifiers:, + # The risk score generated by the card network. For Visa this is the Visa Advanced + # Authorization risk score, from 0 to 99, where 99 is the riskiest. For Pulse the + # score is from 0 to 999, where 999 is the riskiest. + network_risk_score:, + # If the authorization was made in-person with a physical card, the Physical Card + # that was used. + physical_card_id:, + # The terminal identifier (commonly abbreviated as TID) of the terminal the card + # is transacting with. + terminal_id:, + # The identifier of the Card Payment this authorization will belong to. Available + # in the API once the card authorization has completed. + upcoming_card_payment_id:, + # Fields related to verification of cardholder-provided values. + verification: + ) + end + + sig do + override.returns( + { + account_id: String, + additional_amounts: + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts, + approval: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::Approval + ), + card_id: String, + decision: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::Decision::TaggedSymbol + ), + digital_wallet_token_id: T.nilable(String), + merchant_acceptor_id: String, + merchant_category_code: String, + merchant_city: T.nilable(String), + merchant_country: String, + merchant_descriptor: String, + merchant_postal_code: T.nilable(String), + merchant_state: T.nilable(String), + network_details: + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails, + network_identifiers: + Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers, + network_risk_score: T.nilable(Integer), + physical_card_id: T.nilable(String), + terminal_id: T.nilable(String), + upcoming_card_payment_id: String, + verification: + Increase::RealTimeDecision::CardBalanceInquiry::Verification + } + ) + end + def to_hash + end + + class AdditionalAmounts < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts, + Increase::Internal::AnyHash + ) + end + + # The part of this transaction amount that was for clinic-related services. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic + ) + ) + end + attr_reader :clinic + + sig do + params( + clinic: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic::OrHash + ) + ).void + end + attr_writer :clinic + + # The part of this transaction amount that was for dental-related services. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental + ) + ) + end + attr_reader :dental + + sig do + params( + dental: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental::OrHash + ) + ).void + end + attr_writer :dental + + # The original pre-authorized amount. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original + ) + ) + end + attr_reader :original + + sig do + params( + original: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original::OrHash + ) + ).void + end + attr_writer :original + + # The part of this transaction amount that was for healthcare prescriptions. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription + ) + ) + end + attr_reader :prescription + + sig do + params( + prescription: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription::OrHash + ) + ).void + end + attr_writer :prescription + + # The surcharge amount charged for this transaction by the merchant. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge + ) + ) + end + attr_reader :surcharge + + sig do + params( + surcharge: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge::OrHash + ) + ).void + end + attr_writer :surcharge + + # The total amount of a series of incremental authorizations, optionally provided. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative + ) + ) + end + attr_reader :total_cumulative + + sig do + params( + total_cumulative: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative::OrHash + ) + ).void + end + attr_writer :total_cumulative + + # The total amount of healthcare-related additional amounts. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare + ) + ) + end + attr_reader :total_healthcare + + sig do + params( + total_healthcare: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare::OrHash + ) + ).void + end + attr_writer :total_healthcare + + # The part of this transaction amount that was for transit-related services. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit + ) + ) + end + attr_reader :transit + + sig do + params( + transit: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit::OrHash + ) + ).void + end + attr_writer :transit + + # An unknown additional amount. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown + ) + ) + end + attr_reader :unknown + + sig do + params( + unknown: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown::OrHash + ) + ).void + end + attr_writer :unknown + + # The part of this transaction amount that was for vision-related services. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision + ) + ) + end + attr_reader :vision + + sig do + params( + vision: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision::OrHash + ) + ).void + end + attr_writer :vision + + # Additional amounts associated with the card authorization, such as ATM + # surcharges fees. These are usually a subset of the `amount` field and are used + # to provide more detailed information about the transaction. + sig do + params( + clinic: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic::OrHash + ), + dental: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental::OrHash + ), + original: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original::OrHash + ), + prescription: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription::OrHash + ), + surcharge: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge::OrHash + ), + total_cumulative: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative::OrHash + ), + total_healthcare: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare::OrHash + ), + transit: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit::OrHash + ), + unknown: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown::OrHash + ), + vision: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision::OrHash + ) + ).returns(T.attached_class) + end + def self.new( + # The part of this transaction amount that was for clinic-related services. + clinic:, + # The part of this transaction amount that was for dental-related services. + dental:, + # The original pre-authorized amount. + original:, + # The part of this transaction amount that was for healthcare prescriptions. + prescription:, + # The surcharge amount charged for this transaction by the merchant. + surcharge:, + # The total amount of a series of incremental authorizations, optionally provided. + total_cumulative:, + # The total amount of healthcare-related additional amounts. + total_healthcare:, + # The part of this transaction amount that was for transit-related services. + transit:, + # An unknown additional amount. + unknown:, + # The part of this transaction amount that was for vision-related services. + vision: + ) + end + + sig do + override.returns( + { + clinic: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic + ), + dental: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental + ), + original: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original + ), + prescription: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription + ), + surcharge: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge + ), + total_cumulative: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative + ), + total_healthcare: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare + ), + transit: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit + ), + unknown: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown + ), + vision: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision + ) + } + ) + end + def to_hash + end + + class Clinic < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # The part of this transaction amount that was for clinic-related services. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + + class Dental < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # The part of this transaction amount that was for dental-related services. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + + class Original < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # The original pre-authorized amount. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + + class Prescription < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # The part of this transaction amount that was for healthcare prescriptions. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + + class Surcharge < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # The surcharge amount charged for this transaction by the merchant. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + + class TotalCumulative < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # The total amount of a series of incremental authorizations, optionally provided. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + + class TotalHealthcare < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # The total amount of healthcare-related additional amounts. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + + class Transit < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # The part of this transaction amount that was for transit-related services. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + + class Unknown < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # An unknown additional amount. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + + class Vision < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision, + Increase::Internal::AnyHash + ) + end + + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + sig { returns(Integer) } + attr_accessor :amount + + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + sig { returns(String) } + attr_accessor :currency + + # The part of this transaction amount that was for vision-related services. + sig do + params(amount: Integer, currency: String).returns( + T.attached_class + ) + end + def self.new( + # The amount in minor units of the `currency` field. The amount is positive if it + # is added to the amount (such as an ATM surcharge fee) and negative if it is + # subtracted from the amount (such as a discount). + amount:, + # The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the additional + # amount's currency. + currency: + ) + end + + sig { override.returns({ amount: Integer, currency: String }) } + def to_hash + end + end + end + + class Approval < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::Approval, + Increase::Internal::AnyHash + ) + end + + # If the balance inquiry was approved, this field contains the balance in the + # minor unit of the settlement currency. + sig { returns(Integer) } + attr_accessor :balance + + # Present if and only if `decision` is `approve`. Contains information related to + # the approval of the balance inquiry. + sig { params(balance: Integer).returns(T.attached_class) } + def self.new( + # If the balance inquiry was approved, this field contains the balance in the + # minor unit of the settlement currency. + balance: + ) + end + + sig { override.returns({ balance: Integer }) } + def to_hash + end + end + + # Whether or not the authorization was approved. + module Decision + extend Increase::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Increase::RealTimeDecision::CardBalanceInquiry::Decision + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + # Approve the authorization. + APPROVE = + T.let( + :approve, + Increase::RealTimeDecision::CardBalanceInquiry::Decision::TaggedSymbol + ) + + # Decline the authorization. + DECLINE = + T.let( + :decline, + Increase::RealTimeDecision::CardBalanceInquiry::Decision::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Increase::RealTimeDecision::CardBalanceInquiry::Decision::TaggedSymbol + ] + ) + end + def self.values + end + end + + class NetworkDetails < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails, + Increase::Internal::AnyHash + ) + end + + # The payment network used to process this card authorization. + sig do + returns( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category::TaggedSymbol + ) + end + attr_accessor :category + + # Fields specific to the `pulse` network. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse + ) + ) + end + attr_reader :pulse + + sig do + params( + pulse: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse::OrHash + ) + ).void + end + attr_writer :pulse + + # Fields specific to the `visa` network. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa + ) + ) + end + attr_reader :visa + + sig do + params( + visa: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::OrHash + ) + ).void + end + attr_writer :visa + + # Fields specific to the `network`. + sig do + params( + category: + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category::OrSymbol, + pulse: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse::OrHash + ), + visa: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::OrHash + ) + ).returns(T.attached_class) + end + def self.new( + # The payment network used to process this card authorization. + category:, + # Fields specific to the `pulse` network. + pulse:, + # Fields specific to the `visa` network. + visa: + ) + end + + sig do + override.returns( + { + category: + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category::TaggedSymbol, + pulse: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse + ), + visa: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa + ) + } + ) + end + def to_hash + end + + # The payment network used to process this card authorization. + module Category + extend Increase::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + # Visa + VISA = + T.let( + :visa, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category::TaggedSymbol + ) + + # Pulse + PULSE = + T.let( + :pulse, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Category::TaggedSymbol + ] + ) + end + def self.values + end + end + + class Pulse < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse, + Increase::Internal::AnyHash + ) + end + + # Fields specific to the `pulse` network. + sig { returns(T.attached_class) } + def self.new + end + + sig { override.returns({}) } + def to_hash + end + end + + class Visa < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa, + Increase::Internal::AnyHash + ) + end + + # For electronic commerce transactions, this identifies the level of security used + # in obtaining the customer's payment credential. For mail or telephone order + # transactions, identifies the type of mail or telephone order. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ) + ) + end + attr_accessor :electronic_commerce_indicator + + # The method used to enter the cardholder's primary account number and card + # expiration date. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + ) + end + attr_accessor :point_of_service_entry_mode + + # Only present when `actioner: network`. Describes why a card authorization was + # approved or declined by Visa through stand-in processing. + sig do + returns( + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ) + ) + end + attr_accessor :stand_in_processing_reason + + # Fields specific to the `visa` network. + sig do + params( + electronic_commerce_indicator: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::OrSymbol + ), + point_of_service_entry_mode: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::OrSymbol + ), + stand_in_processing_reason: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::OrSymbol + ) + ).returns(T.attached_class) + end + def self.new( + # For electronic commerce transactions, this identifies the level of security used + # in obtaining the customer's payment credential. For mail or telephone order + # transactions, identifies the type of mail or telephone order. + electronic_commerce_indicator:, + # The method used to enter the cardholder's primary account number and card + # expiration date. + point_of_service_entry_mode:, + # Only present when `actioner: network`. Describes why a card authorization was + # approved or declined by Visa through stand-in processing. + stand_in_processing_reason: + ) + end + + sig do + override.returns( + { + electronic_commerce_indicator: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ), + point_of_service_entry_mode: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ), + stand_in_processing_reason: + T.nilable( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ) + } + ) + end + def to_hash + end + + # For electronic commerce transactions, this identifies the level of security used + # in obtaining the customer's payment credential. For mail or telephone order + # transactions, identifies the type of mail or telephone order. + module ElectronicCommerceIndicator + extend Increase::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + # Single transaction of a mail/phone order: Use to indicate that the transaction is a mail/phone order purchase, not a recurring transaction or installment payment. For domestic transactions in the US region, this value may also indicate one bill payment transaction in the card-present or card-absent environments. + MAIL_PHONE_ORDER = + T.let( + :mail_phone_order, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ) + + # Recurring transaction: Payment indicator used to indicate a recurring transaction that originates from an acquirer in the US region. + RECURRING = + T.let( + :recurring, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ) + + # Installment payment: Payment indicator used to indicate one purchase of goods or services that is billed to the account in multiple charges over a period of time agreed upon by the cardholder and merchant from transactions that originate from an acquirer in the US region. + INSTALLMENT = + T.let( + :installment, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ) + + # Unknown classification: other mail order: Use to indicate that the type of mail/telephone order is unknown. + UNKNOWN_MAIL_PHONE_ORDER = + T.let( + :unknown_mail_phone_order, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ) + + # Secure electronic commerce transaction: Use to indicate that the electronic commerce transaction has been authenticated using e.g., 3-D Secure + SECURE_ELECTRONIC_COMMERCE = + T.let( + :secure_electronic_commerce, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ) + + # Non-authenticated security transaction at a 3-D Secure-capable merchant, and merchant attempted to authenticate the cardholder using 3-D Secure: Use to identify an electronic commerce transaction where the merchant attempted to authenticate the cardholder using 3-D Secure, but was unable to complete the authentication because the issuer or cardholder does not participate in the 3-D Secure program. + NON_AUTHENTICATED_SECURITY_TRANSACTION_AT_3DS_CAPABLE_MERCHANT = + T.let( + :non_authenticated_security_transaction_at_3ds_capable_merchant, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ) + + # Non-authenticated security transaction: Use to identify an electronic commerce transaction that uses data encryption for security however, cardholder authentication is not performed using 3-D Secure. + NON_AUTHENTICATED_SECURITY_TRANSACTION = + T.let( + :non_authenticated_security_transaction, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ) + + # Non-secure transaction: Use to identify an electronic commerce transaction that has no data protection. + NON_SECURE_TRANSACTION = + T.let( + :non_secure_transaction, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::ElectronicCommerceIndicator::TaggedSymbol + ] + ) + end + def self.values + end + end + + # The method used to enter the cardholder's primary account number and card + # expiration date. + module PointOfServiceEntryMode + extend Increase::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + # Unknown + UNKNOWN = + T.let( + :unknown, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + # Manual key entry + MANUAL = + T.let( + :manual, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + # Magnetic stripe read, without card verification value + MAGNETIC_STRIPE_NO_CVV = + T.let( + :magnetic_stripe_no_cvv, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + # Optical code + OPTICAL_CODE = + T.let( + :optical_code, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + # Contact chip card + INTEGRATED_CIRCUIT_CARD = + T.let( + :integrated_circuit_card, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + # Contactless read of chip card + CONTACTLESS = + T.let( + :contactless, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + # Transaction initiated using a credential that has previously been stored on file + CREDENTIAL_ON_FILE = + T.let( + :credential_on_file, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + # Magnetic stripe read + MAGNETIC_STRIPE = + T.let( + :magnetic_stripe, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + # Contactless read of magnetic stripe data + CONTACTLESS_MAGNETIC_STRIPE = + T.let( + :contactless_magnetic_stripe, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + # Contact chip card, without card verification value + INTEGRATED_CIRCUIT_CARD_NO_CVV = + T.let( + :integrated_circuit_card_no_cvv, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::PointOfServiceEntryMode::TaggedSymbol + ] + ) + end + def self.values + end + end + + # Only present when `actioner: network`. Describes why a card authorization was + # approved or declined by Visa through stand-in processing. + module StandInProcessingReason + extend Increase::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + # Increase failed to process the authorization in a timely manner. + ISSUER_ERROR = + T.let( + :issuer_error, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ) + + # The physical card read had an invalid CVV, dCVV, or authorization request cryptogram. + INVALID_PHYSICAL_CARD = + T.let( + :invalid_physical_card, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ) + + # The 3DS cardholder authentication verification value was invalid. + INVALID_CARDHOLDER_AUTHENTICATION_VERIFICATION_VALUE = + T.let( + :invalid_cardholder_authentication_verification_value, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ) + + # An internal Visa error occurred. Visa uses this reason code for certain expected occurrences as well, such as Application Transaction Counter (ATC) replays. + INTERNAL_VISA_ERROR = + T.let( + :internal_visa_error, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ) + + # The merchant has enabled Visa's Transaction Advisory Service and requires further authentication to perform the transaction. In practice this is often utilized at fuel pumps to tell the cardholder to see the cashier. + MERCHANT_TRANSACTION_ADVISORY_SERVICE_AUTHENTICATION_REQUIRED = + T.let( + :merchant_transaction_advisory_service_authentication_required, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ) + + # The transaction was blocked by Visa's Payment Fraud Disruption service due to fraudulent Acquirer behavior, such as card testing. + PAYMENT_FRAUD_DISRUPTION_ACQUIRER_BLOCK = + T.let( + :payment_fraud_disruption_acquirer_block, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ) + + # An unspecific reason for stand-in processing. + OTHER = + T.let( + :other, + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::StandInProcessingReason::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + + class NetworkIdentifiers < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers, + Increase::Internal::AnyHash + ) + end + + # The randomly generated 6-character Authorization Identification Response code + # sent back to the acquirer in an approved response. + sig { returns(T.nilable(String)) } + attr_accessor :authorization_identification_response + + # A life-cycle identifier used across e.g., an authorization and a reversal. + # Expected to be unique per acquirer within a window of time. For some card + # networks the retrieval reference number includes the trace counter. + sig { returns(T.nilable(String)) } + attr_accessor :retrieval_reference_number + + # A counter used to verify an individual authorization. Expected to be unique per + # acquirer within a window of time. + sig { returns(T.nilable(String)) } + attr_accessor :trace_number + + # A globally unique transaction identifier provided by the card network, used + # across multiple life-cycle requests. + sig { returns(T.nilable(String)) } + attr_accessor :transaction_id + + # Network-specific identifiers for a specific request or transaction. + sig do + params( + authorization_identification_response: T.nilable(String), + retrieval_reference_number: T.nilable(String), + trace_number: T.nilable(String), + transaction_id: T.nilable(String) + ).returns(T.attached_class) + end + def self.new( + # The randomly generated 6-character Authorization Identification Response code + # sent back to the acquirer in an approved response. + authorization_identification_response:, + # A life-cycle identifier used across e.g., an authorization and a reversal. + # Expected to be unique per acquirer within a window of time. For some card + # networks the retrieval reference number includes the trace counter. + retrieval_reference_number:, + # A counter used to verify an individual authorization. Expected to be unique per + # acquirer within a window of time. + trace_number:, + # A globally unique transaction identifier provided by the card network, used + # across multiple life-cycle requests. + transaction_id: + ) + end + + sig do + override.returns( + { + authorization_identification_response: T.nilable(String), + retrieval_reference_number: T.nilable(String), + trace_number: T.nilable(String), + transaction_id: T.nilable(String) + } + ) + end + def to_hash + end + end + + class Verification < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::Verification, + Increase::Internal::AnyHash + ) + end + + # Fields related to verification of the Card Verification Code, a 3-digit code on + # the back of the card. + sig do + returns( + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode + ) + end + attr_reader :card_verification_code + + sig do + params( + card_verification_code: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::OrHash + ).void + end + attr_writer :card_verification_code + + # Cardholder address provided in the authorization request and the address on file + # we verified it against. + sig do + returns( + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress + ) + end + attr_reader :cardholder_address + + sig do + params( + cardholder_address: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::OrHash + ).void + end + attr_writer :cardholder_address + + # Fields related to verification of cardholder-provided values. + sig do + params( + card_verification_code: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::OrHash, + cardholder_address: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::OrHash + ).returns(T.attached_class) + end + def self.new( + # Fields related to verification of the Card Verification Code, a 3-digit code on + # the back of the card. + card_verification_code:, + # Cardholder address provided in the authorization request and the address on file + # we verified it against. + cardholder_address: + ) + end + + sig do + override.returns( + { + card_verification_code: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode, + cardholder_address: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress + } + ) + end + def to_hash + end + + class CardVerificationCode < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode, + Increase::Internal::AnyHash + ) + end + + # The result of verifying the Card Verification Code. + sig do + returns( + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result::TaggedSymbol + ) + end + attr_accessor :result + + # Fields related to verification of the Card Verification Code, a 3-digit code on + # the back of the card. + sig do + params( + result: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result::OrSymbol + ).returns(T.attached_class) + end + def self.new( + # The result of verifying the Card Verification Code. + result: + ) + end + + sig do + override.returns( + { + result: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result::TaggedSymbol + } + ) + end + def to_hash + end + + # The result of verifying the Card Verification Code. + module Result + extend Increase::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + # No card verification code was provided in the authorization request. + NOT_CHECKED = + T.let( + :not_checked, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result::TaggedSymbol + ) + + # The card verification code matched the one on file. + MATCH = + T.let( + :match, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result::TaggedSymbol + ) + + # The card verification code did not match the one on file. + NO_MATCH = + T.let( + :no_match, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::Result::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + class CardholderAddress < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress, + Increase::Internal::AnyHash + ) + end + + # Line 1 of the address on file for the cardholder. + sig { returns(T.nilable(String)) } + attr_accessor :actual_line1 + + # The postal code of the address on file for the cardholder. + sig { returns(T.nilable(String)) } + attr_accessor :actual_postal_code + + # The cardholder address line 1 provided for verification in the authorization + # request. + sig { returns(T.nilable(String)) } + attr_accessor :provided_line1 + + # The postal code provided for verification in the authorization request. + sig { returns(T.nilable(String)) } + attr_accessor :provided_postal_code + + # The address verification result returned to the card network. + sig do + returns( + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::TaggedSymbol + ) + end + attr_accessor :result + + # Cardholder address provided in the authorization request and the address on file + # we verified it against. + sig do + params( + actual_line1: T.nilable(String), + actual_postal_code: T.nilable(String), + provided_line1: T.nilable(String), + provided_postal_code: T.nilable(String), + result: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::OrSymbol + ).returns(T.attached_class) + end + def self.new( + # Line 1 of the address on file for the cardholder. + actual_line1:, + # The postal code of the address on file for the cardholder. + actual_postal_code:, + # The cardholder address line 1 provided for verification in the authorization + # request. + provided_line1:, + # The postal code provided for verification in the authorization request. + provided_postal_code:, + # The address verification result returned to the card network. + result: + ) + end + + sig do + override.returns( + { + actual_line1: T.nilable(String), + actual_postal_code: T.nilable(String), + provided_line1: T.nilable(String), + provided_postal_code: T.nilable(String), + result: + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::TaggedSymbol + } + ) + end + def to_hash + end + + # The address verification result returned to the card network. + module Result + extend Increase::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + # No address information was provided in the authorization request. + NOT_CHECKED = + T.let( + :not_checked, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::TaggedSymbol + ) + + # Postal code matches, but the street address does not match or was not provided. + POSTAL_CODE_MATCH_ADDRESS_NO_MATCH = + T.let( + :postal_code_match_address_no_match, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::TaggedSymbol + ) + + # Postal code does not match, but the street address matches or was not provided. + POSTAL_CODE_NO_MATCH_ADDRESS_MATCH = + T.let( + :postal_code_no_match_address_match, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::TaggedSymbol + ) + + # Postal code and street address match. + MATCH = + T.let( + :match, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::TaggedSymbol + ) + + # Postal code and street address do not match. + NO_MATCH = + T.let( + :no_match, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::TaggedSymbol + ) + + # Postal code matches, but the street address was not verified. (deprecated) + POSTAL_CODE_MATCH_ADDRESS_NOT_CHECKED = + T.let( + :postal_code_match_address_not_checked, + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::Result::TaggedSymbol + ] + ) + end + def self.values + end + end + end + end + end + + # The category of the Real-Time Decision. + module Category + extend Increase::Internal::Type::Enum + + TaggedSymbol = + T.type_alias { T.all(Symbol, Increase::RealTimeDecision::Category) } + OrSymbol = T.type_alias { T.any(Symbol, String) } + + # A card is being authorized. + CARD_AUTHORIZATION_REQUESTED = + T.let( + :card_authorization_requested, + Increase::RealTimeDecision::Category::TaggedSymbol + ) + + # A balance inquiry is being made on a card. + CARD_BALANCE_INQUIRY_REQUESTED = + T.let( + :card_balance_inquiry_requested, Increase::RealTimeDecision::Category::TaggedSymbol ) diff --git a/rbi/increase/models/real_time_decision_action_params.rbi b/rbi/increase/models/real_time_decision_action_params.rbi index 8814a8de..8d07a604 100644 --- a/rbi/increase/models/real_time_decision_action_params.rbi +++ b/rbi/increase/models/real_time_decision_action_params.rbi @@ -67,6 +67,23 @@ module Increase end attr_writer :card_authorization + # If the Real-Time Decision relates to a card balance inquiry attempt, this object + # contains your response to the inquiry. + sig do + returns( + T.nilable(Increase::RealTimeDecisionActionParams::CardBalanceInquiry) + ) + end + attr_reader :card_balance_inquiry + + sig do + params( + card_balance_inquiry: + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::OrHash + ).void + end + attr_writer :card_balance_inquiry + # If the Real-Time Decision relates to a digital wallet authentication attempt, # this object contains your response to the authentication. sig do @@ -111,6 +128,8 @@ module Increase Increase::RealTimeDecisionActionParams::CardAuthenticationChallenge::OrHash, card_authorization: Increase::RealTimeDecisionActionParams::CardAuthorization::OrHash, + card_balance_inquiry: + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::OrHash, digital_wallet_authentication: Increase::RealTimeDecisionActionParams::DigitalWalletAuthentication::OrHash, digital_wallet_token: @@ -128,6 +147,9 @@ module Increase # If the Real-Time Decision relates to a card authorization attempt, this object # contains your response to the authorization. card_authorization: nil, + # If the Real-Time Decision relates to a card balance inquiry attempt, this object + # contains your response to the inquiry. + card_balance_inquiry: nil, # If the Real-Time Decision relates to a digital wallet authentication attempt, # this object contains your response to the authentication. digital_wallet_authentication: nil, @@ -147,6 +169,8 @@ module Increase Increase::RealTimeDecisionActionParams::CardAuthenticationChallenge, card_authorization: Increase::RealTimeDecisionActionParams::CardAuthorization, + card_balance_inquiry: + Increase::RealTimeDecisionActionParams::CardBalanceInquiry, digital_wallet_authentication: Increase::RealTimeDecisionActionParams::DigitalWalletAuthentication, digital_wallet_token: @@ -798,6 +822,140 @@ module Increase end end + class CardBalanceInquiry < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecisionActionParams::CardBalanceInquiry, + Increase::Internal::AnyHash + ) + end + + # Whether the card balance inquiry should be approved or declined. + sig do + returns( + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Decision::OrSymbol + ) + end + attr_accessor :decision + + # If your application approves the balance inquiry, this contains metadata about + # your decision to approve. + sig do + returns( + T.nilable( + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval + ) + ) + end + attr_reader :approval + + sig do + params( + approval: + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval::OrHash + ).void + end + attr_writer :approval + + # If the Real-Time Decision relates to a card balance inquiry attempt, this object + # contains your response to the inquiry. + sig do + params( + decision: + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Decision::OrSymbol, + approval: + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval::OrHash + ).returns(T.attached_class) + end + def self.new( + # Whether the card balance inquiry should be approved or declined. + decision:, + # If your application approves the balance inquiry, this contains metadata about + # your decision to approve. + approval: nil + ) + end + + sig do + override.returns( + { + decision: + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Decision::OrSymbol, + approval: + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval + } + ) + end + def to_hash + end + + # Whether the card balance inquiry should be approved or declined. + module Decision + extend Increase::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Decision + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + # Approve the authorization. + APPROVE = + T.let( + :approve, + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Decision::TaggedSymbol + ) + + # Decline the authorization. + DECLINE = + T.let( + :decline, + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Decision::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Decision::TaggedSymbol + ] + ) + end + def self.values + end + end + + class Approval < Increase::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval, + Increase::Internal::AnyHash + ) + end + + # The balance on the card in the settlement currency of the transaction. + sig { returns(Integer) } + attr_accessor :balance + + # If your application approves the balance inquiry, this contains metadata about + # your decision to approve. + sig { params(balance: Integer).returns(T.attached_class) } + def self.new( + # The balance on the card in the settlement currency of the transaction. + balance: + ) + end + + sig { override.returns({ balance: Integer }) } + def to_hash + end + end + end + class DigitalWalletAuthentication < Increase::Internal::Type::BaseModel OrHash = T.type_alias do diff --git a/rbi/increase/resources/real_time_decisions.rbi b/rbi/increase/resources/real_time_decisions.rbi index 755eab24..3779144c 100644 --- a/rbi/increase/resources/real_time_decisions.rbi +++ b/rbi/increase/resources/real_time_decisions.rbi @@ -27,6 +27,8 @@ module Increase Increase::RealTimeDecisionActionParams::CardAuthenticationChallenge::OrHash, card_authorization: Increase::RealTimeDecisionActionParams::CardAuthorization::OrHash, + card_balance_inquiry: + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::OrHash, digital_wallet_authentication: Increase::RealTimeDecisionActionParams::DigitalWalletAuthentication::OrHash, digital_wallet_token: @@ -46,6 +48,9 @@ module Increase # If the Real-Time Decision relates to a card authorization attempt, this object # contains your response to the authorization. card_authorization: nil, + # If the Real-Time Decision relates to a card balance inquiry attempt, this object + # contains your response to the inquiry. + card_balance_inquiry: nil, # If the Real-Time Decision relates to a digital wallet authentication attempt, # this object contains your response to the authentication. digital_wallet_authentication: nil, diff --git a/sig/increase/models/event.rbs b/sig/increase/models/event.rbs index 88cbf892..a3530284 100644 --- a/sig/increase/models/event.rbs +++ b/sig/increase/models/event.rbs @@ -127,6 +127,7 @@ module Increase | :"proof_of_authorization_request.created" | :"proof_of_authorization_request.updated" | :"real_time_decision.card_authorization_requested" + | :"real_time_decision.card_balance_inquiry_requested" | :"real_time_decision.digital_wallet_token_requested" | :"real_time_decision.digital_wallet_authentication_requested" | :"real_time_decision.card_authentication_requested" @@ -401,6 +402,9 @@ module Increase # Occurs whenever a Real-Time Decision is created in response to a card authorization. REAL_TIME_DECISION_CARD_AUTHORIZATION_REQUESTED: :"real_time_decision.card_authorization_requested" + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED: :"real_time_decision.card_balance_inquiry_requested" + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED: :"real_time_decision.digital_wallet_token_requested" diff --git a/sig/increase/models/event_list_params.rbs b/sig/increase/models/event_list_params.rbs index 4e66104f..7ae390a2 100644 --- a/sig/increase/models/event_list_params.rbs +++ b/sig/increase/models/event_list_params.rbs @@ -160,6 +160,7 @@ module Increase | :"proof_of_authorization_request.created" | :"proof_of_authorization_request.updated" | :"real_time_decision.card_authorization_requested" + | :"real_time_decision.card_balance_inquiry_requested" | :"real_time_decision.digital_wallet_token_requested" | :"real_time_decision.digital_wallet_authentication_requested" | :"real_time_decision.card_authentication_requested" @@ -434,6 +435,9 @@ module Increase # Occurs whenever a Real-Time Decision is created in response to a card authorization. REAL_TIME_DECISION_CARD_AUTHORIZATION_REQUESTED: :"real_time_decision.card_authorization_requested" + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED: :"real_time_decision.card_balance_inquiry_requested" + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED: :"real_time_decision.digital_wallet_token_requested" diff --git a/sig/increase/models/event_subscription.rbs b/sig/increase/models/event_subscription.rbs index 98cc2b64..821db44d 100644 --- a/sig/increase/models/event_subscription.rbs +++ b/sig/increase/models/event_subscription.rbs @@ -137,6 +137,7 @@ module Increase | :"proof_of_authorization_request.created" | :"proof_of_authorization_request.updated" | :"real_time_decision.card_authorization_requested" + | :"real_time_decision.card_balance_inquiry_requested" | :"real_time_decision.digital_wallet_token_requested" | :"real_time_decision.digital_wallet_authentication_requested" | :"real_time_decision.card_authentication_requested" @@ -411,6 +412,9 @@ module Increase # Occurs whenever a Real-Time Decision is created in response to a card authorization. REAL_TIME_DECISION_CARD_AUTHORIZATION_REQUESTED: :"real_time_decision.card_authorization_requested" + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED: :"real_time_decision.card_balance_inquiry_requested" + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED: :"real_time_decision.digital_wallet_token_requested" diff --git a/sig/increase/models/event_subscription_create_params.rbs b/sig/increase/models/event_subscription_create_params.rbs index 1f67a75d..659e1a58 100644 --- a/sig/increase/models/event_subscription_create_params.rbs +++ b/sig/increase/models/event_subscription_create_params.rbs @@ -140,6 +140,7 @@ module Increase | :"proof_of_authorization_request.created" | :"proof_of_authorization_request.updated" | :"real_time_decision.card_authorization_requested" + | :"real_time_decision.card_balance_inquiry_requested" | :"real_time_decision.digital_wallet_token_requested" | :"real_time_decision.digital_wallet_authentication_requested" | :"real_time_decision.card_authentication_requested" @@ -414,6 +415,9 @@ module Increase # Occurs whenever a Real-Time Decision is created in response to a card authorization. REAL_TIME_DECISION_CARD_AUTHORIZATION_REQUESTED: :"real_time_decision.card_authorization_requested" + # Occurs whenever a Real-Time Decision is created in response to a card balance inquiry. + REAL_TIME_DECISION_CARD_BALANCE_INQUIRY_REQUESTED: :"real_time_decision.card_balance_inquiry_requested" + # Occurs whenever a Real-Time Decision is created in response to a digital wallet provisioning attempt. REAL_TIME_DECISION_DIGITAL_WALLET_TOKEN_REQUESTED: :"real_time_decision.digital_wallet_token_requested" diff --git a/sig/increase/models/real_time_decision.rbs b/sig/increase/models/real_time_decision.rbs index dd2c8241..abad2528 100644 --- a/sig/increase/models/real_time_decision.rbs +++ b/sig/increase/models/real_time_decision.rbs @@ -6,6 +6,7 @@ module Increase card_authentication: Increase::RealTimeDecision::CardAuthentication?, card_authentication_challenge: Increase::RealTimeDecision::CardAuthenticationChallenge?, card_authorization: Increase::RealTimeDecision::CardAuthorization?, + card_balance_inquiry: Increase::RealTimeDecision::CardBalanceInquiry?, category: Increase::Models::RealTimeDecision::category, created_at: Time, digital_wallet_authentication: Increase::RealTimeDecision::DigitalWalletAuthentication?, @@ -24,6 +25,8 @@ module Increase attr_accessor card_authorization: Increase::RealTimeDecision::CardAuthorization? + attr_accessor card_balance_inquiry: Increase::RealTimeDecision::CardBalanceInquiry? + attr_accessor category: Increase::Models::RealTimeDecision::category attr_accessor created_at: Time @@ -43,6 +46,7 @@ module Increase card_authentication: Increase::RealTimeDecision::CardAuthentication?, card_authentication_challenge: Increase::RealTimeDecision::CardAuthenticationChallenge?, card_authorization: Increase::RealTimeDecision::CardAuthorization?, + card_balance_inquiry: Increase::RealTimeDecision::CardBalanceInquiry?, category: Increase::Models::RealTimeDecision::category, created_at: Time, digital_wallet_authentication: Increase::RealTimeDecision::DigitalWalletAuthentication?, @@ -57,6 +61,7 @@ module Increase card_authentication: Increase::RealTimeDecision::CardAuthentication?, card_authentication_challenge: Increase::RealTimeDecision::CardAuthenticationChallenge?, card_authorization: Increase::RealTimeDecision::CardAuthorization?, + card_balance_inquiry: Increase::RealTimeDecision::CardBalanceInquiry?, category: Increase::Models::RealTimeDecision::category, created_at: Time, digital_wallet_authentication: Increase::RealTimeDecision::DigitalWalletAuthentication?, @@ -1079,18 +1084,697 @@ module Increase end end - type category = - :card_authorization_requested - | :card_authentication_requested - | :card_authentication_challenge_requested - | :digital_wallet_token_requested - | :digital_wallet_authentication_requested + type card_balance_inquiry = + { + account_id: String, + additional_amounts: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts, + approval: Increase::RealTimeDecision::CardBalanceInquiry::Approval?, + card_id: String, + decision: Increase::Models::RealTimeDecision::CardBalanceInquiry::decision?, + digital_wallet_token_id: String?, + merchant_acceptor_id: String, + merchant_category_code: String, + merchant_city: String?, + merchant_country: String, + merchant_descriptor: String, + merchant_postal_code: String?, + merchant_state: String?, + network_details: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails, + network_identifiers: Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers, + network_risk_score: Integer?, + physical_card_id: String?, + terminal_id: String?, + upcoming_card_payment_id: String, + verification: Increase::RealTimeDecision::CardBalanceInquiry::Verification + } - module Category - extend Increase::Internal::Type::Enum + class CardBalanceInquiry < Increase::Internal::Type::BaseModel + attr_accessor account_id: String - # A card is being authorized. - CARD_AUTHORIZATION_REQUESTED: :card_authorization_requested + attr_accessor additional_amounts: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts + + attr_accessor approval: Increase::RealTimeDecision::CardBalanceInquiry::Approval? + + attr_accessor card_id: String + + attr_accessor decision: Increase::Models::RealTimeDecision::CardBalanceInquiry::decision? + + attr_accessor digital_wallet_token_id: String? + + attr_accessor merchant_acceptor_id: String + + attr_accessor merchant_category_code: String + + attr_accessor merchant_city: String? + + attr_accessor merchant_country: String + + attr_accessor merchant_descriptor: String + + attr_accessor merchant_postal_code: String? + + attr_accessor merchant_state: String? + + attr_accessor network_details: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails + + attr_accessor network_identifiers: Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers + + attr_accessor network_risk_score: Integer? + + attr_accessor physical_card_id: String? + + attr_accessor terminal_id: String? + + attr_accessor upcoming_card_payment_id: String + + attr_accessor verification: Increase::RealTimeDecision::CardBalanceInquiry::Verification + + def initialize: ( + account_id: String, + additional_amounts: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts, + approval: Increase::RealTimeDecision::CardBalanceInquiry::Approval?, + card_id: String, + decision: Increase::Models::RealTimeDecision::CardBalanceInquiry::decision?, + digital_wallet_token_id: String?, + merchant_acceptor_id: String, + merchant_category_code: String, + merchant_city: String?, + merchant_country: String, + merchant_descriptor: String, + merchant_postal_code: String?, + merchant_state: String?, + network_details: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails, + network_identifiers: Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers, + network_risk_score: Integer?, + physical_card_id: String?, + terminal_id: String?, + upcoming_card_payment_id: String, + verification: Increase::RealTimeDecision::CardBalanceInquiry::Verification + ) -> void + + def to_hash: -> { + account_id: String, + additional_amounts: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts, + approval: Increase::RealTimeDecision::CardBalanceInquiry::Approval?, + card_id: String, + decision: Increase::Models::RealTimeDecision::CardBalanceInquiry::decision?, + digital_wallet_token_id: String?, + merchant_acceptor_id: String, + merchant_category_code: String, + merchant_city: String?, + merchant_country: String, + merchant_descriptor: String, + merchant_postal_code: String?, + merchant_state: String?, + network_details: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails, + network_identifiers: Increase::RealTimeDecision::CardBalanceInquiry::NetworkIdentifiers, + network_risk_score: Integer?, + physical_card_id: String?, + terminal_id: String?, + upcoming_card_payment_id: String, + verification: Increase::RealTimeDecision::CardBalanceInquiry::Verification + } + + type additional_amounts = + { + clinic: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic?, + dental: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental?, + original: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original?, + prescription: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription?, + surcharge: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge?, + total_cumulative: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative?, + total_healthcare: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare?, + transit: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit?, + unknown: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown?, + vision: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision? + } + + class AdditionalAmounts < Increase::Internal::Type::BaseModel + attr_accessor clinic: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic? + + attr_accessor dental: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental? + + attr_accessor original: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original? + + attr_accessor prescription: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription? + + attr_accessor surcharge: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge? + + attr_accessor total_cumulative: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative? + + attr_accessor total_healthcare: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare? + + attr_accessor transit: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit? + + attr_accessor unknown: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown? + + attr_accessor vision: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision? + + def initialize: ( + clinic: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic?, + dental: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental?, + original: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original?, + prescription: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription?, + surcharge: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge?, + total_cumulative: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative?, + total_healthcare: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare?, + transit: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit?, + unknown: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown?, + vision: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision? + ) -> void + + def to_hash: -> { + clinic: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Clinic?, + dental: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Dental?, + original: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Original?, + prescription: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Prescription?, + surcharge: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Surcharge?, + total_cumulative: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalCumulative?, + total_healthcare: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::TotalHealthcare?, + transit: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Transit?, + unknown: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Unknown?, + vision: Increase::RealTimeDecision::CardBalanceInquiry::AdditionalAmounts::Vision? + } + + type clinic = { amount: Integer, currency: String } + + class Clinic < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + + type dental = { amount: Integer, currency: String } + + class Dental < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + + type original = { amount: Integer, currency: String } + + class Original < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + + type prescription = { amount: Integer, currency: String } + + class Prescription < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + + type surcharge = { amount: Integer, currency: String } + + class Surcharge < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + + type total_cumulative = { amount: Integer, currency: String } + + class TotalCumulative < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + + type total_healthcare = { amount: Integer, currency: String } + + class TotalHealthcare < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + + type transit = { amount: Integer, currency: String } + + class Transit < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + + type unknown = { amount: Integer, currency: String } + + class Unknown < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + + type vision = { amount: Integer, currency: String } + + class Vision < Increase::Internal::Type::BaseModel + attr_accessor amount: Integer + + attr_accessor currency: String + + def initialize: (amount: Integer, currency: String) -> void + + def to_hash: -> { amount: Integer, currency: String } + end + end + + type approval = { balance: Integer } + + class Approval < Increase::Internal::Type::BaseModel + attr_accessor balance: Integer + + def initialize: (balance: Integer) -> void + + def to_hash: -> { balance: Integer } + end + + type decision = :approve | :decline + + module Decision + extend Increase::Internal::Type::Enum + + # Approve the authorization. + APPROVE: :approve + + # Decline the authorization. + DECLINE: :decline + + def self?.values: -> ::Array[Increase::Models::RealTimeDecision::CardBalanceInquiry::decision] + end + + type network_details = + { + category: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::category, + pulse: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse?, + visa: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa? + } + + class NetworkDetails < Increase::Internal::Type::BaseModel + attr_accessor category: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::category + + attr_accessor pulse: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse? + + attr_accessor visa: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa? + + def initialize: ( + category: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::category, + pulse: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse?, + visa: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa? + ) -> void + + def to_hash: -> { + category: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::category, + pulse: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Pulse?, + visa: Increase::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa? + } + + type category = :visa | :pulse + + module Category + extend Increase::Internal::Type::Enum + + # Visa + VISA: :visa + + # Pulse + PULSE: :pulse + + def self?.values: -> ::Array[Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::category] + end + + type pulse = { } + + class Pulse < Increase::Internal::Type::BaseModel + def initialize: -> void + + def to_hash: -> { } + end + + type visa = + { + electronic_commerce_indicator: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::electronic_commerce_indicator?, + point_of_service_entry_mode: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::point_of_service_entry_mode?, + stand_in_processing_reason: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::stand_in_processing_reason? + } + + class Visa < Increase::Internal::Type::BaseModel + attr_accessor electronic_commerce_indicator: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::electronic_commerce_indicator? + + attr_accessor point_of_service_entry_mode: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::point_of_service_entry_mode? + + attr_accessor stand_in_processing_reason: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::stand_in_processing_reason? + + def initialize: ( + electronic_commerce_indicator: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::electronic_commerce_indicator?, + point_of_service_entry_mode: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::point_of_service_entry_mode?, + stand_in_processing_reason: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::stand_in_processing_reason? + ) -> void + + def to_hash: -> { + electronic_commerce_indicator: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::electronic_commerce_indicator?, + point_of_service_entry_mode: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::point_of_service_entry_mode?, + stand_in_processing_reason: Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::stand_in_processing_reason? + } + + type electronic_commerce_indicator = + :mail_phone_order + | :recurring + | :installment + | :unknown_mail_phone_order + | :secure_electronic_commerce + | :non_authenticated_security_transaction_at_3ds_capable_merchant + | :non_authenticated_security_transaction + | :non_secure_transaction + + module ElectronicCommerceIndicator + extend Increase::Internal::Type::Enum + + # Single transaction of a mail/phone order: Use to indicate that the transaction is a mail/phone order purchase, not a recurring transaction or installment payment. For domestic transactions in the US region, this value may also indicate one bill payment transaction in the card-present or card-absent environments. + MAIL_PHONE_ORDER: :mail_phone_order + + # Recurring transaction: Payment indicator used to indicate a recurring transaction that originates from an acquirer in the US region. + RECURRING: :recurring + + # Installment payment: Payment indicator used to indicate one purchase of goods or services that is billed to the account in multiple charges over a period of time agreed upon by the cardholder and merchant from transactions that originate from an acquirer in the US region. + INSTALLMENT: :installment + + # Unknown classification: other mail order: Use to indicate that the type of mail/telephone order is unknown. + UNKNOWN_MAIL_PHONE_ORDER: :unknown_mail_phone_order + + # Secure electronic commerce transaction: Use to indicate that the electronic commerce transaction has been authenticated using e.g., 3-D Secure + SECURE_ELECTRONIC_COMMERCE: :secure_electronic_commerce + + # Non-authenticated security transaction at a 3-D Secure-capable merchant, and merchant attempted to authenticate the cardholder using 3-D Secure: Use to identify an electronic commerce transaction where the merchant attempted to authenticate the cardholder using 3-D Secure, but was unable to complete the authentication because the issuer or cardholder does not participate in the 3-D Secure program. + NON_AUTHENTICATED_SECURITY_TRANSACTION_AT_3DS_CAPABLE_MERCHANT: :non_authenticated_security_transaction_at_3ds_capable_merchant + + # Non-authenticated security transaction: Use to identify an electronic commerce transaction that uses data encryption for security however, cardholder authentication is not performed using 3-D Secure. + NON_AUTHENTICATED_SECURITY_TRANSACTION: :non_authenticated_security_transaction + + # Non-secure transaction: Use to identify an electronic commerce transaction that has no data protection. + NON_SECURE_TRANSACTION: :non_secure_transaction + + def self?.values: -> ::Array[Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::electronic_commerce_indicator] + end + + type point_of_service_entry_mode = + :unknown + | :manual + | :magnetic_stripe_no_cvv + | :optical_code + | :integrated_circuit_card + | :contactless + | :credential_on_file + | :magnetic_stripe + | :contactless_magnetic_stripe + | :integrated_circuit_card_no_cvv + + module PointOfServiceEntryMode + extend Increase::Internal::Type::Enum + + # Unknown + UNKNOWN: :unknown + + # Manual key entry + MANUAL: :manual + + # Magnetic stripe read, without card verification value + MAGNETIC_STRIPE_NO_CVV: :magnetic_stripe_no_cvv + + # Optical code + OPTICAL_CODE: :optical_code + + # Contact chip card + INTEGRATED_CIRCUIT_CARD: :integrated_circuit_card + + # Contactless read of chip card + CONTACTLESS: :contactless + + # Transaction initiated using a credential that has previously been stored on file + CREDENTIAL_ON_FILE: :credential_on_file + + # Magnetic stripe read + MAGNETIC_STRIPE: :magnetic_stripe + + # Contactless read of magnetic stripe data + CONTACTLESS_MAGNETIC_STRIPE: :contactless_magnetic_stripe + + # Contact chip card, without card verification value + INTEGRATED_CIRCUIT_CARD_NO_CVV: :integrated_circuit_card_no_cvv + + def self?.values: -> ::Array[Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::point_of_service_entry_mode] + end + + type stand_in_processing_reason = + :issuer_error + | :invalid_physical_card + | :invalid_cardholder_authentication_verification_value + | :internal_visa_error + | :merchant_transaction_advisory_service_authentication_required + | :payment_fraud_disruption_acquirer_block + | :other + + module StandInProcessingReason + extend Increase::Internal::Type::Enum + + # Increase failed to process the authorization in a timely manner. + ISSUER_ERROR: :issuer_error + + # The physical card read had an invalid CVV, dCVV, or authorization request cryptogram. + INVALID_PHYSICAL_CARD: :invalid_physical_card + + # The 3DS cardholder authentication verification value was invalid. + INVALID_CARDHOLDER_AUTHENTICATION_VERIFICATION_VALUE: :invalid_cardholder_authentication_verification_value + + # An internal Visa error occurred. Visa uses this reason code for certain expected occurrences as well, such as Application Transaction Counter (ATC) replays. + INTERNAL_VISA_ERROR: :internal_visa_error + + # The merchant has enabled Visa's Transaction Advisory Service and requires further authentication to perform the transaction. In practice this is often utilized at fuel pumps to tell the cardholder to see the cashier. + MERCHANT_TRANSACTION_ADVISORY_SERVICE_AUTHENTICATION_REQUIRED: :merchant_transaction_advisory_service_authentication_required + + # The transaction was blocked by Visa's Payment Fraud Disruption service due to fraudulent Acquirer behavior, such as card testing. + PAYMENT_FRAUD_DISRUPTION_ACQUIRER_BLOCK: :payment_fraud_disruption_acquirer_block + + # An unspecific reason for stand-in processing. + OTHER: :other + + def self?.values: -> ::Array[Increase::Models::RealTimeDecision::CardBalanceInquiry::NetworkDetails::Visa::stand_in_processing_reason] + end + end + end + + type network_identifiers = + { + authorization_identification_response: String?, + retrieval_reference_number: String?, + trace_number: String?, + transaction_id: String? + } + + class NetworkIdentifiers < Increase::Internal::Type::BaseModel + attr_accessor authorization_identification_response: String? + + attr_accessor retrieval_reference_number: String? + + attr_accessor trace_number: String? + + attr_accessor transaction_id: String? + + def initialize: ( + authorization_identification_response: String?, + retrieval_reference_number: String?, + trace_number: String?, + transaction_id: String? + ) -> void + + def to_hash: -> { + authorization_identification_response: String?, + retrieval_reference_number: String?, + trace_number: String?, + transaction_id: String? + } + end + + type verification = + { + card_verification_code: Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode, + cardholder_address: Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress + } + + class Verification < Increase::Internal::Type::BaseModel + attr_accessor card_verification_code: Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode + + attr_accessor cardholder_address: Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress + + def initialize: ( + card_verification_code: Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode, + cardholder_address: Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress + ) -> void + + def to_hash: -> { + card_verification_code: Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode, + cardholder_address: Increase::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress + } + + type card_verification_code = + { + result: Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::result + } + + class CardVerificationCode < Increase::Internal::Type::BaseModel + attr_accessor result: Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::result + + def initialize: ( + result: Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::result + ) -> void + + def to_hash: -> { + result: Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::result + } + + type result = :not_checked | :match | :no_match + + module Result + extend Increase::Internal::Type::Enum + + # No card verification code was provided in the authorization request. + NOT_CHECKED: :not_checked + + # The card verification code matched the one on file. + MATCH: :match + + # The card verification code did not match the one on file. + NO_MATCH: :no_match + + def self?.values: -> ::Array[Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardVerificationCode::result] + end + end + + type cardholder_address = + { + :actual_line1 => String?, + actual_postal_code: String?, + :provided_line1 => String?, + provided_postal_code: String?, + result: Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::result + } + + class CardholderAddress < Increase::Internal::Type::BaseModel + attr_accessor actual_line1: String? + + attr_accessor actual_postal_code: String? + + attr_accessor provided_line1: String? + + attr_accessor provided_postal_code: String? + + attr_accessor result: Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::result + + def initialize: ( + actual_line1: String?, + actual_postal_code: String?, + provided_line1: String?, + provided_postal_code: String?, + result: Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::result + ) -> void + + def to_hash: -> { + :actual_line1 => String?, + actual_postal_code: String?, + :provided_line1 => String?, + provided_postal_code: String?, + result: Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::result + } + + type result = + :not_checked + | :postal_code_match_address_no_match + | :postal_code_no_match_address_match + | :match + | :no_match + | :postal_code_match_address_not_checked + + module Result + extend Increase::Internal::Type::Enum + + # No address information was provided in the authorization request. + NOT_CHECKED: :not_checked + + # Postal code matches, but the street address does not match or was not provided. + POSTAL_CODE_MATCH_ADDRESS_NO_MATCH: :postal_code_match_address_no_match + + # Postal code does not match, but the street address matches or was not provided. + POSTAL_CODE_NO_MATCH_ADDRESS_MATCH: :postal_code_no_match_address_match + + # Postal code and street address match. + MATCH: :match + + # Postal code and street address do not match. + NO_MATCH: :no_match + + # Postal code matches, but the street address was not verified. (deprecated) + POSTAL_CODE_MATCH_ADDRESS_NOT_CHECKED: :postal_code_match_address_not_checked + + def self?.values: -> ::Array[Increase::Models::RealTimeDecision::CardBalanceInquiry::Verification::CardholderAddress::result] + end + end + end + end + + type category = + :card_authorization_requested + | :card_balance_inquiry_requested + | :card_authentication_requested + | :card_authentication_challenge_requested + | :digital_wallet_token_requested + | :digital_wallet_authentication_requested + + module Category + extend Increase::Internal::Type::Enum + + # A card is being authorized. + CARD_AUTHORIZATION_REQUESTED: :card_authorization_requested + + # A balance inquiry is being made on a card. + CARD_BALANCE_INQUIRY_REQUESTED: :card_balance_inquiry_requested # 3DS authentication is requested. CARD_AUTHENTICATION_REQUESTED: :card_authentication_requested diff --git a/sig/increase/models/real_time_decision_action_params.rbs b/sig/increase/models/real_time_decision_action_params.rbs index 671c03c9..38caa238 100644 --- a/sig/increase/models/real_time_decision_action_params.rbs +++ b/sig/increase/models/real_time_decision_action_params.rbs @@ -5,6 +5,7 @@ module Increase card_authentication: Increase::RealTimeDecisionActionParams::CardAuthentication, card_authentication_challenge: Increase::RealTimeDecisionActionParams::CardAuthenticationChallenge, card_authorization: Increase::RealTimeDecisionActionParams::CardAuthorization, + card_balance_inquiry: Increase::RealTimeDecisionActionParams::CardBalanceInquiry, digital_wallet_authentication: Increase::RealTimeDecisionActionParams::DigitalWalletAuthentication, digital_wallet_token: Increase::RealTimeDecisionActionParams::DigitalWalletToken } @@ -32,6 +33,12 @@ module Increase Increase::RealTimeDecisionActionParams::CardAuthorization ) -> Increase::RealTimeDecisionActionParams::CardAuthorization + attr_reader card_balance_inquiry: Increase::RealTimeDecisionActionParams::CardBalanceInquiry? + + def card_balance_inquiry=: ( + Increase::RealTimeDecisionActionParams::CardBalanceInquiry + ) -> Increase::RealTimeDecisionActionParams::CardBalanceInquiry + attr_reader digital_wallet_authentication: Increase::RealTimeDecisionActionParams::DigitalWalletAuthentication? def digital_wallet_authentication=: ( @@ -48,6 +55,7 @@ module Increase ?card_authentication: Increase::RealTimeDecisionActionParams::CardAuthentication, ?card_authentication_challenge: Increase::RealTimeDecisionActionParams::CardAuthenticationChallenge, ?card_authorization: Increase::RealTimeDecisionActionParams::CardAuthorization, + ?card_balance_inquiry: Increase::RealTimeDecisionActionParams::CardBalanceInquiry, ?digital_wallet_authentication: Increase::RealTimeDecisionActionParams::DigitalWalletAuthentication, ?digital_wallet_token: Increase::RealTimeDecisionActionParams::DigitalWalletToken, ?request_options: Increase::request_opts @@ -57,6 +65,7 @@ module Increase card_authentication: Increase::RealTimeDecisionActionParams::CardAuthentication, card_authentication_challenge: Increase::RealTimeDecisionActionParams::CardAuthenticationChallenge, card_authorization: Increase::RealTimeDecisionActionParams::CardAuthorization, + card_balance_inquiry: Increase::RealTimeDecisionActionParams::CardBalanceInquiry, digital_wallet_authentication: Increase::RealTimeDecisionActionParams::DigitalWalletAuthentication, digital_wallet_token: Increase::RealTimeDecisionActionParams::DigitalWalletToken, request_options: Increase::RequestOptions @@ -303,6 +312,56 @@ module Increase end end + type card_balance_inquiry = + { + decision: Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry::decision, + approval: Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval + } + + class CardBalanceInquiry < Increase::Internal::Type::BaseModel + attr_accessor decision: Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry::decision + + attr_reader approval: Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval? + + def approval=: ( + Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval + ) -> Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval + + def initialize: ( + decision: Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry::decision, + ?approval: Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval + ) -> void + + def to_hash: -> { + decision: Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry::decision, + approval: Increase::RealTimeDecisionActionParams::CardBalanceInquiry::Approval + } + + type decision = :approve | :decline + + module Decision + extend Increase::Internal::Type::Enum + + # Approve the authorization. + APPROVE: :approve + + # Decline the authorization. + DECLINE: :decline + + def self?.values: -> ::Array[Increase::Models::RealTimeDecisionActionParams::CardBalanceInquiry::decision] + end + + type approval = { balance: Integer } + + class Approval < Increase::Internal::Type::BaseModel + attr_accessor balance: Integer + + def initialize: (balance: Integer) -> void + + def to_hash: -> { balance: Integer } + end + end + type digital_wallet_authentication = { result: Increase::Models::RealTimeDecisionActionParams::DigitalWalletAuthentication::result, diff --git a/sig/increase/resources/real_time_decisions.rbs b/sig/increase/resources/real_time_decisions.rbs index 124e87ed..8ff94f74 100644 --- a/sig/increase/resources/real_time_decisions.rbs +++ b/sig/increase/resources/real_time_decisions.rbs @@ -11,6 +11,7 @@ module Increase ?card_authentication: Increase::RealTimeDecisionActionParams::CardAuthentication, ?card_authentication_challenge: Increase::RealTimeDecisionActionParams::CardAuthenticationChallenge, ?card_authorization: Increase::RealTimeDecisionActionParams::CardAuthorization, + ?card_balance_inquiry: Increase::RealTimeDecisionActionParams::CardBalanceInquiry, ?digital_wallet_authentication: Increase::RealTimeDecisionActionParams::DigitalWalletAuthentication, ?digital_wallet_token: Increase::RealTimeDecisionActionParams::DigitalWalletToken, ?request_options: Increase::request_opts diff --git a/test/increase/resources/real_time_decisions_test.rb b/test/increase/resources/real_time_decisions_test.rb index 48f2a755..41f7a2af 100644 --- a/test/increase/resources/real_time_decisions_test.rb +++ b/test/increase/resources/real_time_decisions_test.rb @@ -16,6 +16,7 @@ def test_retrieve card_authentication: Increase::RealTimeDecision::CardAuthentication | nil, card_authentication_challenge: Increase::RealTimeDecision::CardAuthenticationChallenge | nil, card_authorization: Increase::RealTimeDecision::CardAuthorization | nil, + card_balance_inquiry: Increase::RealTimeDecision::CardBalanceInquiry | nil, category: Increase::RealTimeDecision::Category, created_at: Time, digital_wallet_authentication: Increase::RealTimeDecision::DigitalWalletAuthentication | nil, @@ -40,6 +41,7 @@ def test_action card_authentication: Increase::RealTimeDecision::CardAuthentication | nil, card_authentication_challenge: Increase::RealTimeDecision::CardAuthenticationChallenge | nil, card_authorization: Increase::RealTimeDecision::CardAuthorization | nil, + card_balance_inquiry: Increase::RealTimeDecision::CardBalanceInquiry | nil, category: Increase::RealTimeDecision::Category, created_at: Time, digital_wallet_authentication: Increase::RealTimeDecision::DigitalWalletAuthentication | nil,