openapi: 3.0.2
info:
#---------------------------------------------------
# Information to contact the API provider
#--------------------------------------------------- 
  title: Wire Inquiry
  description: Retrieve the status and details of a wire transaction.
  contact: 
   name: "KeyBank Developer Support"
   email: "developers@keybank.com"
  version: 1.3.3           

servers:
#---------------------------------------------------
# List of Environments for the API
#---------------------------------------------------
 - url: https://partner-api-qv.key.com
 - url: https://partner-api.key.com

paths:
#---------------------------------------------------
# List of API flows
#---------------------------------------------------    
  /wireInquiry/v1/transactions/healthCheck:
    get:
      tags: # Apigee Product: Logical group based on functionality
        - HealthCheck     
      summary: Health check            
      description: Verify you can connect to the API service. A bearer token is required. 
      operationId: healthCheck
      security:
        - bearerAuth: []
      responses:
        '200':
          description: Successful response
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/healthResponse'
              example:
                Status: Ok
                Source: Roundtrip
                Timestamp: '2022-09-15T04:49:03'
                ClientIp: 156.77.111.28
                X-Forwarded-For: '[156.77.111.28]'   
  /wireInquiry/v1/transactions/list:
    post:
      tags:
        - Wire
      summary: Search wire transfers
      security:
        - bearerAuth: []
      operationId: searchWireTransactions
      description: Based on search criteria provided, get a list of wire transfers. The account number and date range are required for every request. 
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - accountNumber
                - fromDate
                - toDate
              properties:
                accountNumber:
                  type: string
                  description: The bank account number. This number cannot exceed 16 characters. 
                  minLength: 1
                  maxLength: 16
                  pattern: '/^\d+$/'
                  example: 3123456789
                fromDate:
                  description: 'Start date for the date range. This date can be the current day or within 180 days prior to the current date. To search for a single date, this value will be the same as the toDate. Format: YYYY-MM-DD'
                  type: string
                  format: date
                  example: 2024-02-01
                toDate:
                  description: 'End date for the date range. This date must be the same or later than the start date (fromDate). To search for a single date, this value will be the same as the fromDate.  To search for a range of dates, make sure the date range does not exceed 31 days. Format: YYYY-MM-DD'
                  type: string
                  format: date
                  example: 2024-02-01
                minimumAmount:
                  description: The minimum dollar amount of the transaction. This amount must be less than or equal to the maximum amount. Leave blank or enter zero for no minimum amount.
                  format: currency
                  minimum: 0
                  maximum: 1000000000
                  example: 100.00
                maximumAmount:
                  description: The maximum dollar amount of the transaction. This amount must be greater than or equal to the minimum amount. Leave blank to retrieve all amounts. This amount cannot exceed one billion dollars.
                  type: number
                  format: currency
                  minimum: 0
                  maximum: 1000000000
                  example: 75020.52
                requestReference:
                  type: string
                  description: A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters.
                  maxLength: 35
                  example: "USRSIM-0.0001"
                pageNumber:
                  type: integer
                  description: The number of the page being viewed. This number must be greater than or equal to 1.
                  example: 1
                pageSize:
                  type: integer
                  description: The total number of pages returned. This number must be greater than or equal to 1 and cannot exceed 1000.
                  example: 500
      responses:
        '200':
          description: Search results match the criteria
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain fo API operations. The ID is unique to each request. 
          content:
            application/json:
              schema:
                type: object
                properties:
                  transactions:
                    type: array
                    items:
                      $ref: '#/components/schemas/WireListTransaction'
                  metadata:
                    $ref: '#/components/schemas/Metadata'
              example:
                transactions:  
                - transactionId: "US99999000999999"
                  transactionStatus: "COMPLETED"
                  transactionDate: "2024-02-01"
                  transactionAmount: 32772.63
                  requestReference: "1122334455"
                  sendersReference: "US99999000999999"
                  creditor:
                    name: "Global Markets LLC"
                  creditorAccount: 
                    accountNumber: "987654321"
                    virtualAccountNumber: "98765432100015"
                  debtor:
                    name: "Paul Wilson"
                  debtorAccount:
                    accountNumber: "123456789"
                    virtualAccountNumber: "98765432100000"
                  beneficiary:
                    name: MARKET CAPITAL
                  beneficiaryAccount:
                    accountNumber: "102030405060"
                metadata:
                  page:
                    pageNumber: 1
                    pageSize: 25
                    totalPages: 3
                    totalRecords: 75
                    lastPage: true
        '400':
          description: Bad input parameter
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain fo API operations. The ID is unique to each request. 
          content:            
            application/json:
              schema:
                $ref: '#/components/schemas/Metadata'
              example:               
                messages:
                  code: "Wire-List-400-bad-input"
                  message: Bad input parameter

  /wireInquiry/v1/transactions/detail/{transactionId}:
    get:
      tags:
        - Wire
      summary: View the details of a wire transfer by the transaction ID. 
      security:
        - bearerAuth: []
      operationId: searchWireTransaction
      description: Provide the transaction ID to retrieve all available fields for that wire transfer.       
      parameters:
      - name: transactionId
        in: path
        description: The unique ID number associated with the original payment request.
        style: simple
        explode: false
        schema: 
          maxLength: 100
          type: string
        required: true
        example: US99999000999999
      responses:
        '200':
          description: A Wire transaction matches the provided transactionId
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A universal ID to trace the transaction across all the systems involved, useful for system logging and identification. 
          content:
            application/json:
              schema:
                 $ref: '#/components/schemas/WireDetailTransaction'
              example:  
                transactionId: "US99999000999999"
                transactionStatus: "COMPLETED"
                transactionDate: "2024-02-01"
                transactionAmount: 32772.63
                requestReference: "1122334455"
                sendersReference: "US99999000999999"
                creditor:
                  name: "Global Markets LLC"
                creditorAccount: 
                  accountNumber: "987654321"
                debtor:
                 name: "Paul Wilson"
                debtorAccount:
                  accountNumber: "123456789"
                remittanceInformation: "Payment 02/01/2024_Invoice - 123456789 Cust"
        '404':
          description: No Wire transaction was found with the provided transactionId
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain fo API operations. The ID is unique to each request. 
          content:            
            application/json:
              schema:
                $ref: '#/components/schemas/Metadata'
              example:               
                messages:
                  code: "Wire-Detail-404-no-records"
                  message: "Record Not Found" 
                  X-Forwarded-For: '[156.77.111.28]'

  /wireInquiry/v1/transactions/details:
    post:
      tags:
        - Transaction Status      
      summary: Get wire transaction details        
      description: Get the details about a wire transaction and its status. Wire transaction data can be recalled from the previous 24 months. When setting the date range (fromDate and toDate), the date range specified cannot exceed more than one year.
      operationId: transactionDetails
      security:
        - bearerAuth: []  
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/transactionDetailsRequest'
            example:                
              getWireInquiryRequest:
                accountNumber:
                  - '123456789'
                transactionType: null
                paymentStatus: null
                fromDate: 2022-12-01
                toDate: 2022-12-01
                fromTransmitDate: null
                toTransmitDate: null
                fromAmount: null
                toAmount: null
                traceID: null
                keyBankTransactionReference: null
                sourceChannel: null
                startRowIndex: '1'
                endRowIndex: '1000'
                channelCode: 'OLB'
        required: true
      responses:
        '200':
          description: Successful response
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionDetailsResponse'
              example:
                getWireInquiryResponse:
                  responseHeader:
                    status: Success
                    statusDescription: Successfully returned results for the requested range 1 to
                      1
                    retreivedRows: '1'
                    totalRows: '1'
                  WireInquiryResult:
                  - amount: '6400'
                    debitCurrencyCode: USD
                    transactionType: INBOUND FED PAYMENT
                    creditAccountNumber: '987654321'
                    wireEventName: PaymentWaitForOFCResponse
                    clearingBankNumber: '21300077'
                    creditAccountBankBranch: US
                    creditAccountCurrencyCode: USD
                    creditAccountCustomerNumber: '987654321'
                    creditAccountCustomerName: TEST COMPANY 1, LLC
                    creditAccountCountry: US
                    creditAccountCustomerType: CORP
                    wireTransactionDirection: INBOUND
                    transactionValueIdentifier: HVC
                    creditTransactionCurrency: USD
                    settlementPaymentType: CRD
                    incomingReferenceNumber: INVC0012345
                    paymentEventType: BKP
                    sendingBankReferenceNumber: KTT00049210303842R
                    initiatingPartyName: TEST BANK, USA
                    initiatingPartyPostalAddressLine1: 127 Public Sq, Cleveland
                    initiatingPartyPostalAddressLine2: OH 44114
                    initiatingParty2Name: TEST COMPANY 2, LLC
                    initiatingParty2AccountNumber: '123456789'
                    initiatingParty2PostalAddressLine1: 726 Exchange Street,Suite 900,
                    initiatingParty2PostalAddressLine2: Buffalo, NY 14210
                    transactionDetailDocument: Receivers Reference Information
                    traceID: 01239240303842R
                    keybankTransactionReference: US2201100012345
                    transmittedDate: '2022-01-10T00:00:00.000-0500'
                    federalClearingReferenceNumber: 20220110B1QDRCQR012345
                    enteredDate: '2022-01-10T11:38:05.000-0500'
                    creditorAgentBankName: KeyBank National Association
                    creditorAgentBankPostalAddressLine1: 250 Delaware Ave Ste
                    creditorAgentBankPostalAddressLine2: Buffalo,NY 14202
                    beneficiaryName: TEST COMPANY 1, LLC
                    beneficiaryAccountNumber: '987654321'
                    beneficiaryCreditorPostalAddressLine1: 726 Exchange Street,Suite 900,
                    beneficiaryCreditorPostalAddressLine2: Buffalo, NY 14210
                    sourceChannel: FRB INITIATED
                    paymentStatus: Active
                    transactionBusinessStatusCode: Regulatory Filter
                    initiatingFailureReasonCode: string
                    initiatingFailureReasonTitle: string
                    initiatingFailureReasonDesc: string
                    networkFailureReasonCode: string
                    networkFailureReasonTitle: string
                    networkFailureReasonDesc: string
                    remittanceInfo: "SERVICES AND ADMIN FEE"
        '400':
          description: Missing mandatory information
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Mandatory data not provided, please verify the data and resubmit the request"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"        
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"
                Api-Url: "/wireInquiry/v1/transactions/details"
        '401':
          description: Unauthorized request
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:               
                ErrorMessage: "Received request is unauthorized, please provide valid credentials"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"    
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"  
                Api-Url: "/wireInquiry/v1/transactions/details"
        '403':
          description: Request is forbidden to access the resource
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Access to requested resource is forbidden"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"         
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"  
                Api-Url: "/wireInquiry/v1/transactions/details"
        '404':
          description: Resource not found
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Requested resource is not found, please verify the resource then resubmit the request"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"         
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"
                Api-Url: "/wireInquiry/v1/transactions/details"
        '405':
          description: Requested method denied
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Requested method is not allowed, please verify the method and resubmit the request"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"         
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"
                Api-Url: "/wireInquiry/v1/transactions/details"
        '415':
          description: Media type not supported
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Requested media type is not allowed, please verify the media type and resubmit the request"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"  
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"
                Api-Url: "/wireInquiry/v1/transactions/details"
        '429':
          description: Too many requests
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Number requests threshold reached, please resubmit the request after sometime"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1" 
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"
                Api-Url: "/wireInquiry/v1/transactions/details"
        '500':
          description: Internal server error
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Runtime error occurred in the service, please check with application support team before resubmitting the request"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"       
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"
                Api-Url: "/wireInquiry/v1/transactions/details"
        '502':
          description: Bad gateway
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Error received from backend"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"     
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"   
                TransactionTime: "2021-06-11T16:31:34.041Z"
                Api-Url: "/wireInquiry/v1/transactions/details"
                ServiceError: 
                  ConnectError : "Connectivity error occurred with the downstream service (Unexpected EOF at target), please check with application support team before resubmitting the request"
        '503':
          description: Service unavailable
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Error received from backend"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"     
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"
                Api-Url: "/wireInquiry/v1/transactions/details"
                ServiceError: 
                  ConnectError : "Service is currently unavailable (NoActiveTargets), please check with application support before resubmitting the request."
        '504':
          description: Gateway timeout
          headers:
            X-CorrelationId:
              schema:
                type: string
              description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. 
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exception'
              example:
                ErrorMessage: "Error received from backend"
                TransactionId:  "rrt-7709400285867417207-b-gce-27587-2383364-1"       
                X-CorrelationId: "929618f2-6163-bf73-51b0-6c54a8533c74"
                TransactionTime: "2021-06-11T16:31:34.041Z"
                Api-Url: "/wireInquiry/v1/transactions/details"
                ServiceError: 
                  ConnectError : "Request could not be processed on time (GatewayTimeout), please wait a moment and resubmit the request."     
                                                            
 
components:
#---------------------------------------------------
# Data definitions
#--------------------------------------------------- 
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  schemas:
    WireDetailTransaction:
      type: object
      description: Contains the response payload with details about a Wire transfer.
      properties:
        transactionId:
          type: string
          description: The unique ID number associated with the original payment request.
          maxLength: 100
        transactionStatus:
          enum:
          - CANCELLED
          - COMPLETED
          - FAILED
          - IN PROCESS
          - IN REVIEW
          - RETURNED
          description: 'The status of the wire transfer. Valid values: CANCELLED, COMPLETED, FAILED, IN PROCESS, IN REVIEW, RETURNED'
          maxLength: 50
        transactionDate:
          description: 'Date the transfer occurred. Format: YYYY-MM-DD'
          type: string
          format: date
          example: 2024-07-22
        transactionAmount:
          description: The dollar amount of the transaction.
          type: number
          format: currency
        requestReference:
          type: string
          description: A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters.
          maxLength: 64
        sendersReference:
          type: string
          description: A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 35 characters.
          maxLength: 35
        creditor:
          $ref: '#/components/schemas/PartyList'
        creditorAccount:
          $ref: '#/components/schemas/AccountList'
        debtor:
          $ref: '#/components/schemas/PartyList'
        debtorAccount:
          $ref: '#/components/schemas/AccountList'
        originator:
          $ref: '#/components/schemas/PartyList'
        originatorAccount: 
          $ref: '#/components/schemas/AccountList'
        beneficiary:
          $ref: '#/components/schemas/PartyList'
        beneficiaryAccount:
          $ref: '#/components/schemas/AccountList'  
        ultimateCreditor:
          $ref: '#/components/schemas/PartyList' 
        ultimateCreditorAccount:
          $ref: '#/components/schemas/AccountList'
        ultimateDebtor:
          $ref: '#/components/schemas/PartyList' 
        ultimateDebtorAccount:
          $ref: '#/components/schemas/AccountList'
        remittanceInformation:
          type: string
          description: Information that stays with a payment as it is transferred from one party to another. This field only displays if there is remittance information for the transaction. Message length cannot exceed 256 characters.
          maxLength: 256
        bankToBankInstructions:
          type: string
          description: Messages or instructions shared from one bank to another. Data retrieved if part of the original wire transfer. 
          maxLength: 2048
    WireListTransaction:
      type: object
      description: Contains the response payload for Wire inquiries. 
      properties:
        transactionId:
          type: string
          description: The unique ID number associated with the original payment request
          maxLength: 100
        transactionStatus:
          enum:
          - CANCELLED
          - COMPLETED
          - FAILED
          - IN PROCESS
          - IN REVIEW
          - RETURNED
          description: 'The status of the wire transfer. Valid values: CANCELLED, COMPLETED, FAILED, IN PROCESS, IN REVIEW, RETURNED'
          maxLength: 50
        transactionDate:
          description: 'Date the transfer occurred. Format: YYYY-MM-DD'
          type: string
          format: date
          example: 2024-07-22
        transactionAmount:
          type: number
          description: The dollar amount of the transaction.
          format: currency
        requestReference:
          type: string
          description: A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters.
          maxLength: 64
        sendersReference:
          type: string
          description: A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 35 characters.
          maxLength: 35
        creditor:
          $ref: '#/components/schemas/PartyList'
        creditorAccount:
          $ref: '#/components/schemas/AccountList'
        debtor:
          $ref: '#/components/schemas/PartyList'
        debtorAccount:
          $ref: '#/components/schemas/AccountList'
    healthResponse:
      type: object
      description: The response for the API health check.
      title: healthResponse
      properties:
        Status:
          type: string
          description: Status of the health check response.
        Source:
          type: string
          description: The origin of the system response can be 'Gateway' or 'Roundtrip'. Roundtrip returns a response from the farthest system involved.
        Timestamp:
          type: string
          description: The date (YYYY-MM-DD) and time (HH:MM:SS) of the response from the API service. 
        ClientIp:
          type: string
          description: The client IP address the gateway gets from the request.
        X-Forwarded-For:
          type: string
          description: The sequence of all the IP addresses for systems involved between the client and the gateway.
    AccountList:
      type: object
      properties:
        accountNumber:
          type: string
          description: Account number of the party.
          maxLength: 20
        virtualAccountNumber:
          type: string
          description: Account number for the virtual account (VAM).
    PartyList:
      type: object
      properties:
        name:
          type: string 
          description: Contains the customer identification number and the company name. 
          maxLength: 255  
    Message:
      type: object
      description: Informational code and message from the server. 
      properties:
        code:
          type: string
          description: Static code assigned by the network or payment system.
        message:
          type: string
          description: A human-readable message associated with the code. 
    Page:
      type: object
      properties:
        pageNumber:
          type: integer
          description: The number of the page being viewed. 
        pageSize:
          type: integer
          description: The number of records per page.
        totalPages:
          type: integer
          description: The total number of pages available.
        totalRecords:
          type: integer
          description: The total number of the transactions (records) available in the result set. 
        lastPage:
          type: boolean
          description: Indicates the last page of the total pages.
      description: Page information returned from the server.
    Metadata:
      type: object
      description: Data information returned as a message or page information retrieved from the server. 
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
        page:
          $ref: '#/components/schemas/Page'

# Schemas for /wireinquiry/v1/transactions/details
    exception:
      type: object
      description: Contains information about errors related to the request.
      title: exceptionSchema
      properties:
        ErrorMessage: 
          type: string
          description: A human-readable message that describes the type or source of the error.
        TransactionId:
          type: string
          description: A unique transaction ID returned with the response, useful for traceability.
        TransactionTime: 
          type: string
          description: Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred.
        Api-Url:
          type: string
          description: The API URL path of the call that generated the response.
        ServiceError:
          type: object
          title: ServiceError
          description: Detailed service-level error details, if available.   
          oneOf:          
          - $ref: '#/components/schemas/serviceErrorData'
          - $ref: '#/components/schemas/connectError'
    serviceErrorData:
      type: object
      title: serviceErrorData
      description: Detailed service-level error information, if available.
      properties:        
         getWireInquiryResponse:
            $ref: '#/components/schemas/getWireInquiryResponse'    
    connectError:
      type: object
      properties:
        ConnectError:
          type: string
          description: API connectivity error information, if available.
    getWireInquiryResponse:
      required:
      - responseHeader
      type: object
      description: Contains the response payload for the submitted request.
      properties:
        responseHeader:
          $ref: '#/components/schemas/responseHeader'
        WireInquiryResult:
          type: array
          items:
            $ref: '#/components/schemas/getWireInquiryResult'
        errorResponse:
          $ref: '#/components/schemas/errorResponse'
    getWireInquiryResult:
      type: object
      description: Contains the transaction details for the submitted request.
      properties:
        amount:
          type: string
          description: Transaction amount
          example: 1.00
        debitCurrencyCode:
          type: string
          description: Debit currency code
          example: USD
        transactionType:
          type: string
          description: 'Indicates the type of transaction. Valid values: INBOUND FED PAYMENT, OUTBOUND SWIFT PAYMENT, OUTBOUND FED PAYMENT, INBOUND SWIFT PAYMENT, INTERNAL, OTHER'
          example: INTERNAL
        debitAccountNumber:
          type: string
          description: Debit account number
          example: 123456789
        creditAccountNumber:
          type: string
          description: Credit account number
          example: 987654321
        wireEventName:
          type: string
          description: 'Internal status of the intermediary stages a transaction goes through before being processed. Valid values: CancelledPayments, CompletedPayment, DrawndownPay, PaymentWaitForOFCResponse, RepairedPayments, ReturnedFEDPayment, Swift101'
          example: CompletedPayments
        clearingBankNumber:
          type: string
          description: Bank number of the clearing bank.
          example: 0101
        creditAccountBankBranch:
          type: string
          description: Bank branch holding the credit account.
          example: US
        creditAccountCurrencyCode:
          type: string
          description: Transaction currency code of the credit account.
          example: USD
        creditAccountCustomerNumber:
          type: string
          description: Customer number associated with the credit account.
          example: 11371283
        creditAccountCustomerName:
          type: string
          description: Customer name associated with the credit account.
          example: KEYBANK INTERNAL ACCT 2
        creditAccountCountry:
          type: string
          description: Country of the credit account.
          example: US
        creditAccountCustomerType:
          type: string
          description: Customer type associated with the credit account.
          example: CORP
        debitAccountType:
          type: string
          description: 'Debit account type. Valid values: DDA, GL'
          example: DDA
        debitAccountBankNumber:
          type: string
          description: Bank number holding the debit account.
          example: 0101
        debitAccountBankBranch:
          type: string
          description: Bank branch holding the debit account.
          example: US
        debitAccountCurrencyCode:
          type: string
          description: Transaction currency code associated with the debit account.
          example: USD
        debitAccountCustomerNumber:
          type: string
          description: Customer number associated with the debit account.
          example: 11371283
        debitAccountCustomerName:
          type: string
          description: Customer name associated with the debit account.
          example: KEYBANK INTERNAL ACCT 1
        cancelComment:
          type: string
          description: Message provided by the operator who canceled a transaction.
          example: NO CORRESPONDENCE 
        wireTransactionDirection:
          type: string
          description: 'Indicates the direction of the transaction. Valid values: UNKNOWN, INBOUND, OUTBOUND, BOOK'
          example: Book
        transactionValueIdentifier:
          type: string
          description: 'Indicates the value of the transaction. Valid values: HVC, HVB, LVC'
          example: HVC
        paymentClearingState:
          type: string
          description: 'Payment clearing status of the wire transaction. Valid values: Cancelled, Complete, Cutoff Error, Pending Release, Ready to Send, Rejected, Returned, null'
          example: Complete
        creditTransactionCurrency:
          type: string
          description: Currency of the amount credited.
          example: USD
        settlementPaymentType:
          type: string
          description: 'The mechanism or method by which settlement occurs. Valid values: FRB, CRD, BKP, NOS, FRD.'
          example: CRD
        incomingReferenceNumber:
          type: string
          description: The incoming reference number, which is provided by the sending bank. 
          example: KTT00049210303842R
        executionDate:
          type: string
          description: Date (YYYY-MM-DD) and time (HH:MM:SS) the transaction is executed. 
          example: 2022-04-06T00:00:00.000-0400
        paymentEventType:
          type: string
          description: 'Payment type of PEN message. Valid Values: BKP, RTPCT'
          example: BKP
        transactionTypeCode:
          type: string
          description: 'Type of wire transaction code. Valid values: FRB, PRE, FTR'
          example: E01
        sendingBankReferenceNumber:
          type: string
          description: Reference number issued by the sending bank. 
          example: KTT00049210303842R
        bankToBankMemo:
          type: string
          description: Free-form text transmitted between the banks.
          example: /REF/202011140645          
        initiatingPartyName:
          type: string
          description: Initiating party name
          example: TEST COMPANY, LLC
        initiatingPartyAccountNumber:
          type: string
          description: Initiating party account number
          example: 12345123
        initiatingPartyPostalAddressLine1:
          type: string
          description: Initiating party address line 1
          example: 127 Public Sq, Cleveland
        initiatingPartyPostalAddressLine2:
          type: string
          description: Initiating party address line 2
          example: OH 44114
        initiatingParty2Name:
          type: string
          description: Initiating party 2 name
          example: TEST COMPANY, LLC
        initiatingParty2AccountNumber:
          type: string
          description: Initiating party 2 account number
          example: 12345123
        initiatingParty2PostalAddressLine1:
          type: string
          description: Initiating party 2 address line 1
          example: 127 Public Sq, Cleveland
        initiatingParty2PostalAddressLine2: 
          type: string
          description: Initiating party 2 address line 2
          example: OH 44114
        transactionDetailDocument:
          type: string
          description: Detail document or related reference
          example: Receivers Reference Information
        traceID:
          type: string
          description: Source transaction identifier
          example: 01239240303842R
        keybankTransactionReference:
          type: string
          description: Unique wire transaction identifier created by KeyBank.
          example: US22040600447123
        transmittedDate:
          type: string
          format: date
          description: Transaction settled date
          example: 2022-04-06T00:00:00.000-0400
        federalClearingReferenceNumber:
          type: string
          description: Federal reference number
          example: 20200929041001039T1BUSRT40748049801
        exchangeRate:
          type: string
          description: Exchange rate
          example: ""
        enteredDate:
          type: string
          format: date
          description: Entered date
          example: 2022-04-06T06:18:38.000-0400
        creditorAgentBankName:
          type: string
          description: Creditor agent bank name
          example: PNC Bank National Association
        creditorAgentBankABA:
          type: string
          description: Creditor agent bank ABA
          example: 211291666
        creditorAgentBIC:
          type: string
          description: Creditor agent BIC (business identifier code)
          example: NOSCJMKN
        creditorAgentBankPostalAddressLine1:
          type: string
          description: Creditor agent bank postal address line 1
          example: 1216 WELSH RD
        creditorAgentBankPostalAddressLine2:
          type: string
          description: Creditor agent bank postal address line 2
          example: NORTH WALES
        beneficiaryName:
          type: string
          description: Beneficiary name
          example: TEST COMPANY, LLC
        beneficiaryAccountNumber:
          type: string
          description: Beneficiary account number
          example: 3435656
        beneficiaryCreditorPostalAddressLine1:
          type: string
          description: Beneficiary postal address line 1
          example: 127 Public Sq, Cleveland
        beneficiaryCreditorPostalAddressLine2:
          type: string
          description: Beneficiary postal address line 2
          example: OH 44114
        sourceChannel:
          type: string
          description: Denotes the channel that created the wire transaction. KTT is used for RTP transaction and FRB is used for Federal Reserve transactions.
          example: KTT
        paymentStatus:
          type: string
          description: 'Indicates the status of payment. Valid values: Active, Returned, Cancelled, Success, PendingUserAction'
          example: Active
        transactionBusinessStatusCode:
          type: string
          description: 'Transaction business status code. Valid values: Completed, Pricing, Cancelled, Future Warehouse, PaymentNotification, Held Requiring Cover, Awaiting Approval, Internal Filter, Advising, Funds Release, Product Selection, Regulatory Filter, Clearing, Limit Check, Pre-Qualifying, Abandoned, Repair'
          example: Completed
        paySubType:
          type: string
          description: 'A four-digit code that identifies the type of the wire transaction and if it is a drawdown request (1031), drawdown funds (1032) or drawdown refusal (1033). Valid values: 1031, 1032, 1033'
          example: '1032'
        sourceSubType:
          type: string
          description: 'Three-character code that defines the source of the paySubType.'
          example: 'EXT'
        correlationId:
          type: string
          description: 'A unique identifier generated for each transaction that remains with the transaction through the chain of API operations.'
          example: '123ca578-6783-9bd9-c8ff-e8661fc456789'
        channelCode:
          type: string
          description: 'An optional three-character code for the wire channel. The field can only have one value and is not case sensitive.'
          pattern: '^[A-Z]+$'
          example: 'OLB'
        channelMode:
          type: string
          description: 'The mode of the wire transfer.'
          example: 'BAT'
        relatedReferenceId:
          type: string
          description: "Reference identification for the wire transaction."
          example: 'TNT3368286653'
        creditVirtualAccount:
          type: string
          description: The VAM credit account number. VAM account numbers are 15 digits and start with 953.
        debitVirtualAccount:
          type: string
          description: The VAM debit account number. VAM account numbers are 15 digits and start with 953.
        transactionCreateDate:
          type: string
          description: "The date and time the transaction was created. Format: YYYY-MM-DDTHH:MM:SS.SSS-Z"
          format: date 
          example: "2023:10:30T14:35:52.000-400"    
        customData:
          type: string 
          description: The values for custom data is defined by the client. This free-form text field can contain up to 500 alphanumeric characters. Custom information stays with the transaction through its lifecycle. 
          nullable: true   
        initiatingFailureReasonCode:
          type: string
          description: Code indicates the reason the transaction payment was not successful.
        initiatingFailureReasonTitle:
          type: string
          description: Brief title about the payment error associated with the code.
        initiatingFailureReasonDesc:
          type: string
          description: Details about the reason the transaction payment was not successful.
        networkFailureReasonCode:
          type: string
          description: Code indicates the network reason that faulted the transaction payment.
        networkFailureReasonTitle:
          type: string
          description: Brief title about the network error associated with the code.
        networkFailureReasonDesc:
          type: string
          description: Details about the reason for a network failure.
        remittanceInformation:
          type: string
          description: Information that stays with a payment as it is transferred from one party to another. This field only displays if there is remittance information for the transaction. Message length cannot exceed 256 characters.
          maxLength: 256
        requestReference:
          type: string
          description: A reference value from the originating request that is useful for traceability and reporting. 
    transactionDetailsResponse:
      required:
      - getWireInquiryResponse
      type: object
      description: Contains the response payload. 
      properties:
        getWireInquiryResponse:
          $ref: '#/components/schemas/getWireInquiryResponse'
    businessFault:
      type: object
      description: Indicates business fault error details
      properties:
        errorCode:
          type: string
          description: Business error code
          example: ECA-W-001
        errorDescription:
          type: string
          description: A human-readable message that describes the type or source of the business error.
          example: Missing mandatory field(s)-AccountNumber.
    transactionDetailsRequest:
      required:
      - getWireInquiryRequest
      type: object
      description: Contains the request payload. 
      properties:
        getWireInquiryRequest:
          $ref: '#/components/schemas/getWireInquiryRequest'  
    systemFault:
      type: object
      description: Indicates system fault error details
      properties:
        errorCode:
          type: string
          description: System error code
          example: ECA-E-001
        errorDescription:
          type: string
          description: A human-readable message that describes the type or source of the system error.
          example: WM encountered an error while trying to retrieve Count of records from database.
    getWireInquiryRequest:
      required:
      - accountNumber      
      - fromDate
      - toDate
      type: object
      description: Contains the request payload
      properties:
        accountNumber:
          type: array
          description: One or more bank account numbers. To look up multiple accounts, separate the account numbers with a comma. This field cannot exceed 16 characters.
          example: "123456789"
          items:
            type: string
        transactionType:
          type: array
          nullable: true
          description: 'Indicates the type of transaction. Valid values: INBOUND FED PAYMENT, OUTBOUND SWIFT PAYMENT, OUTBOUND FED PAYMENT, INBOUND SWIFT PAYMENT, INTERNAL, OTHER'
          example: INBOUND FED PAYMENT
          items:
            type: string
        paymentStatus:
          type: array
          nullable: true
          description: 'Indicates the status of payment. Valid values: Active, Returned, Cancelled, Success, PendingUserAction'
          example: Active
          items:
            type: string
        fromDate:
          type: string
          description: 'The start date to search a range of wire origination transactions by date. The date range must be less than or equal to the current date and cannot exceed more than one year. Format: YYYY-MM-DD'
          format : date
          example: 2022-12-31
        toDate:
          type: string
          description: 'The end date to search a range of wire origination transactions by date. The date range must be less than or equal to the current date and cannot exceed more than one year. Format: YYYY-MM-DD'
          format : date
          example: 2022-12-31
        fromTransmitDate:
          type: string
          pattern: "^(?:\\d{4}-\\d{2}-\\d{2}|)$"
          nullable: true
          description: 'The start date to search a range of wire origination transactions by the transmission or settled date. The date range must be less than or equal to the current date and cannot exceed more than one year. Format: YYYY-MM-DD'
          example: 2022-12-31
        toTransmitDate:
          type: string
          pattern: "^(?:\\d{4}-\\d{2}-\\d{2}|)$"
          nullable: true
          description: 'The end date to search a range of wire origination transactions by the transmission or settled date. The date range must be less than or equal to the current date and cannot exceed more than one year. Format: YYYY-MM-DD'
          example: 2022-12-31
        fromAmount:
          type: string
          nullable: true
          description: Transaction amount lower limit value to be searched. 
          example: 1.00
        toAmount:
          type: string
          nullable: true
          description: Transaction amount upper limit value to be searched. 
          example: 1.00
        traceID:
          type: string
          nullable: true
          description: Source transaction identifier for a specific transaction.
          example: 12049758561948R
        keyBankTransactionReference:
          type: string
          nullable: true
          description: Unique wire transaction identifier created by KeyBank.
          example: US22042300511659
        sourceChannel:
          type: array
          nullable: true
          description: Denotes the channel that created the wire transaction. KTT INITIATED is used for RTP transaction and FRB INITIATED is used for Federal Reserve transactions.
          example: KTT INITIATED
          items:
            type: string
        startRowIndex:
          type: string
          nullable: true
          description: Pagination parameter that indicates the starting count available for the records. If this parameter is not provided, value will default to 1.
          example: 1
        endRowIndex:
          type: string
          nullable: true
          description: Pagination parameter that indicates the last count available for the records. If this parameter is not provided, value will default to 1000. The request can't exceed more than 1000 records from the startRowIndex.
          example: 1000
        channelCode:
          type: string  
          nullable: true
          description: 'An optional three-character code for the wire channel. The field can only have one value and is not case sensitive.'
          pattern: '^[A-Z]+$'
          example: 'OLB'
    responseHeader:
      required:      
      - status
      - statusDescription
      type: object
      description: Provides status information of the processed request.
      properties:
        status:
          type: string
          description: Indicates whether the result was successfully retrieved.         
        statusDescription:
          type: string
          description: Description of the status         
        retreivedRows:
          type: string
          description: Total number of transactions retrieved          
        totalRows:
          type: string
          description: Total number of transactions matching the requested criteria         
    errorResponse:
      type: object
      description: Detailed error information generated by the chain of services involved either as a business fault or system fault.
      properties:
        businessFault:
          type: array
          items:
            $ref: '#/components/schemas/businessFault'
        systemFault:
          type: array
          items:
            $ref: '#/components/schemas/systemFault'    
