# Shared ## Domain Types ### Customer Details V1 - `class CustomerDetailsV1` Information about the customer associated with the charge or payout. - `id: String` Unique identifier for the customer - `customer_type: :individual | :business` The type of customer - `:individual` - `:business` - `email: String` The customer's email address - `name: String` The name of the customer - `phone: String` The customer's phone number in E.164 format ### Device Info V1 - `class DeviceInfoV1` - `ip_address: String` The IP address of the device used when the customer authorized the charge or payout. Use `0.0.0.0` to represent an offline consent interaction. ### Paged Response Metadata - `class PagedResponseMetadata` Metadata about the API request, including an identifier, timestamp, and pagination details. - `api_request_id: String` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: Time` Timestamp for this API request, useful for troubleshooting. - `max_page_size: Integer` Maximum allowed page size for this endpoint. - `page_number: Integer` Page number for paginated results. - `page_size: Integer` Number of items per page in this response. - `sort_by: String` The field that the results were sorted by. - `sort_order: :asc | :desc` - `:asc` - `:desc` - `total_items: Integer` Total number of items returned in this response. - `total_pages: Integer` The number of pages available. ### Paykey Details V1 - `class PaykeyDetailsV1` - `id: String` Unique identifier for the paykey. - `customer_id: String` Unique identifier for the customer associated with the paykey. - `label: String` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `balance: Integer` The most recent balance of the bank account associated with the paykey in dollars. ### Response Metadata - `class ResponseMetadata` Metadata about the API request, including an identifier and timestamp. - `api_request_id: String` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: Time` Timestamp for this API request, useful for troubleshooting. ### Status Details V1 - `class StatusDetailsV1` - `changed_at: Time` The time the status change occurred. - `message: String` A human-readable description of the current status. - `reason: :insufficient_funds | :closed_bank_account | :invalid_bank_account | 24 more` A machine-readable identifier for the specific status, useful for programmatic handling. - `:insufficient_funds` - `:closed_bank_account` - `:invalid_bank_account` - `:invalid_routing` - `:disputed` - `:payment_stopped` - `:owner_deceased` - `:frozen_bank_account` - `:risk_review` - `:fraudulent` - `:duplicate_entry` - `:invalid_paykey` - `:payment_blocked` - `:amount_too_large` - `:too_many_attempts` - `:internal_system_error` - `:user_request` - `:ok` - `:other_network_return` - `:payout_refused` - `:cancel_request` - `:failed_verification` - `:require_review` - `:blocked_by_system` - `:watchtower_review` - `:validating` - `:auto_hold` - `source: :watchtower | :bank_decline | :customer_dispute | 2 more` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `:watchtower` - `:bank_decline` - `:customer_dispute` - `:user_action` - `:system` - `code: String` The status code if applicable.