Account Information Services

Enable access to account information services that allow J.P. Morgan clients to leverage Open Banking for data from customer bank accounts. Support consent management, account verification, balance retrieval, and transaction history for secure and efficient financial integration.

OpenAPI Specification

jp-morgan-chase-account-information-services-openapi.yml Raw ↑
# Harvested verbatim from the J.P. Morgan Payments Developer Portal.
# method: searched
# source: https://developer.payments.jpmorgan.com/api/llm-content?path=en%2Fapi%2Ftreasury%2Fpay-by-bank%2Fais-oas.md
# generated: '2026-07-28'
openapi: 3.0.1
info:
  title: Account Information Services
  version: 2.0.22
  description: Enable access to account information services that allow J.P. Morgan clients to leverage
    Open Banking for data from customer bank accounts. Support consent management, account verification,
    balance retrieval, and transaction history for secure and efficient financial integration.
  contact:
    name: JPMorgan Chase & Co. API Support
    url: https://apistore.jpmchase.net/support/contact
    email: imsd.security.operations@jpmorgan.com
servers:
- url: https://api.payments.jpmorgan.com/paybybank/v2
  description: PRODUCTION
- url: https://api-cat.payments.jpmorgan.com/paybybank/v2
  description: CLIENT TESTING
- url: https://api-mock.payments.jpmorgan.com/paybybank/v2
  description: MOCK
tags:
- name: Consents
  description: Account Information - Consents
- name: Account Services
  description: Account Information - Services
paths:
  /consents:
    post:
      tags:
      - Consents
      summary: Initiate Consent Journey
      description: '**Initiate consent journey to grant access to account information**

        '
      operationId: initiateConsent
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
      - $ref: '#/components/parameters/RequestId'
      - $ref: '#/components/parameters/ClientId'
      requestBody:
        $ref: '#/components/requestBodies/ConsentInitiation'
      responses:
        '201':
          $ref: '#/components/responses/201-ConsentCreated'
        '400':
          $ref: '#/components/responses/400-BadConsentRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
      callbacks:
        consentCallback:
          '{client-url}/callback':
            post:
              operationId: consentCallBack
              summary: Consent Webhook
              requestBody:
                description: '**Consent callback to merchant, after completion of user consent journey.
                  Merchant can retrieve consented information**

                  '
                content:
                  application/cloudevents+json:
                    schema:
                      $ref: '#/components/schemas/WebHook'
                    examples:
                      Consent Link - Initiated US:
                        $ref: '#/components/examples/ConsentLinkInitiatedCallBackUS'
                      Consent Link - Initiated EU:
                        $ref: '#/components/examples/ConsentLinkInitiatedCallBackEU'
                      Consent Link - Initiated UK:
                        $ref: '#/components/examples/ConsentLinkInitiatedCallBackUK'
                      Consent Link - Opened US:
                        $ref: '#/components/examples/ConsentLinkOpenedCallBackUS'
                      Consent Link - Opened EU:
                        $ref: '#/components/examples/ConsentLinkOpenedCallBackEU'
                      Consent Link - Opened UK:
                        $ref: '#/components/examples/ConsentLinkOpenedCallBackUK'
                      Consent Link - Pending US:
                        $ref: '#/components/examples/ConsentLinkPendingCallBackUS'
                      Consent Link - Expired US:
                        $ref: '#/components/examples/ConsentLinkExpiredCallBackUS'
                      Consent Link - Expired EU:
                        $ref: '#/components/examples/ConsentLinkExpiredCallBackEU'
                      Consent Link - Expired UK:
                        $ref: '#/components/examples/ConsentLinkExpiredCallBackUK'
                      Consent Link - Failed US:
                        $ref: '#/components/examples/ConsentLinkFailedCallBackUS'
                      Consent Link - Failed EU:
                        $ref: '#/components/examples/ConsentLinkFailedCallBackEU'
                      Consent Link - Failed UK:
                        $ref: '#/components/examples/ConsentLinkFailedCallBackUK'
                      Consent Link - Cancelled US:
                        $ref: '#/components/examples/ConsentLinkCancelledCallBackUS'
                      Consent Link - Cancelled EU:
                        $ref: '#/components/examples/ConsentLinkCancelledCallBackEU'
                      Consent Link - Cancelled UK:
                        $ref: '#/components/examples/ConsentLinkCancelledCallBackUK'
                      Consent Link - Abandoned US:
                        $ref: '#/components/examples/ConsentLinkAbandonedCallBackUS'
                      Consent Link - Abandoned EU:
                        $ref: '#/components/examples/ConsentLinkAbandonedCallBackEU'
                      Consent Link - Abandoned UK:
                        $ref: '#/components/examples/ConsentLinkAbandonedCallBackUK'
                      Consent Link - Successful US:
                        $ref: '#/components/examples/ConsentLinkSuccessfullCallbackUS'
                      Consent Link - Successful EU:
                        $ref: '#/components/examples/ConsentLinkSuccessfullCallbackEU'
                      Consent Link - Successful UK:
                        $ref: '#/components/examples/ConsentLinkSuccessfullCallbackUK'
                      Consent - Partially Success - US:
                        $ref: '#/components/examples/ConsentPartiallySuccessfulCallBackUS'
                      Consent - Success - US:
                        $ref: '#/components/examples/ConsentSuccessfulCallBackUS'
                      Consent - Success - UK:
                        $ref: '#/components/examples/ConsentSuccessfulCallBackUK'
                      Consent - Success - EU:
                        $ref: '#/components/examples/ConsentSuccessfulCallBackEU'
                      Consent - Pending - US:
                        $ref: '#/components/examples/ConsentPendingCallBackUS'
                      Consent - Ready to Validate - US:
                        $ref: '#/components/examples/ConsentReadyToValidateCallBackUS'
                      Consent - Revoked by Client US:
                        $ref: '#/components/examples/ConsentRevokeCallBackUS-ClientDelete'
                      Consent - Revoked by System US:
                        $ref: '#/components/examples/ConsentRevokeCallBackUS-PermanentDelete'
                      Consent - Failed US:
                        $ref: '#/components/examples/ConsentFailedCallBackUS'
                      Consent - Failed EU:
                        $ref: '#/components/examples/ConsentFailedCallBackEU'
                      Consent - Failed UK:
                        $ref: '#/components/examples/ConsentFailedCallBackUK'
                      Consent - Expired US:
                        $ref: '#/components/examples/ConsentRevokeCallBackUS-Expired'
                      ConsentFix - Success US:
                        $ref: '#/components/examples/ConsentFixSuccessfulCallBackUS'
                      ConsentFix - Failed US:
                        $ref: '#/components/examples/ConsentFixFailedCallBackUS'
                required: true
              responses:
                '204':
                  description: Callback successfully completed
  /consents/{consentId}:
    summary: Get consent status
    get:
      tags:
      - Consents
      summary: Get consent status
      description: '**Get consent status.**

        '
      operationId: getConsentStatus
      parameters:
      - $ref: '#/components/parameters/RequestId'
      - $ref: '#/components/parameters/ClientId'
      - name: consentId
        in: path
        description: JPMC generated consent identifier in UUID format (e.g., 0488ecb1-33c3-4b6a-b5e5-7a61680c463f)
        required: true
        schema:
          $ref: '#/components/schemas/ConsentId'
        examples:
          ConsentId-US:
            summary: Example of consent id for US
            value: 0488ecb1-33c3-4b6a-b5e5-7a61680c463f
      responses:
        '200':
          $ref: '#/components/responses/200-OK-ConsentBasic'
        '400':
          $ref: '#/components/responses/400-BadConsentIdRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFoundAccount'
        '422':
          $ref: '#/components/responses/422-Unprocessable'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
    delete:
      tags:
      - Consents
      summary: Revoke consent
      description: '**Revoke a consent authorized for continuous access**

        '
      operationId: revokeConsent
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
      - $ref: '#/components/parameters/RequestId'
      - $ref: '#/components/parameters/ClientId'
      - name: consentId
        in: path
        description: JPMC generated consent identifier
        required: true
        schema:
          $ref: '#/components/schemas/ConsentId'
        examples:
          ConsentId-US:
            summary: Example of consent id for US
            value: 0488ecb133c34b6ab5e57a61680c463f
      responses:
        '204':
          description: Consent Revoked Successfully
        '400':
          $ref: '#/components/responses/400-BadConsentIdRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '422':
          $ref: '#/components/responses/422-Unprocessable'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /consents/{consentId}/renew:
    summary: Renew consent or obtain new Consent Link URL for Microdeposit Confirmation
    post:
      tags:
      - Consents
      summary: Renew consent
      description: 'Renew consent is used to prompt the account holder for continued access to their financial
        data.

        For flows with Microdeposit and Challenge, Renew Consent is used to obtain new Consent Link URL
        for completion of the microdeposit confirmation.

        '
      operationId: renewConsent
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
      - $ref: '#/components/parameters/RequestId'
      - $ref: '#/components/parameters/ClientId'
      - name: consentId
        in: path
        description: JPMC generated consent identifier
        required: true
        schema:
          $ref: '#/components/schemas/ConsentId'
        examples:
          ConsentId-US:
            summary: Example of consent id for US
            value: 0488ecb133c34b6ab5e57a61680c463f
      requestBody:
        $ref: '#/components/requestBodies/ConsentUpdate'
      responses:
        '200':
          $ref: '#/components/responses/200-OK-ConsentRenew'
        '400':
          $ref: '#/components/responses/400-BadConsentIdRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFoundAccount'
        '422':
          $ref: '#/components/responses/422-Unprocessable'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /accounts:
    get:
      summary: Retrieve account information report
      description: 'The **Pay By Bank** - **Account Information Report API** provides an overview of permissioned
        consumer payment account details.

        '
      tags:
      - Account Services
      operationId: getAccounts
      parameters:
      - $ref: '#/components/parameters/ConsentId'
      - $ref: '#/components/parameters/RequestId'
      - $ref: '#/components/parameters/ClientId'
      responses:
        '200':
          $ref: '#/components/responses/200-OK-AccountSummary'
        '400':
          $ref: '#/components/responses/400-AccountVerificationBadRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '422':
          $ref: '#/components/responses/422-Unprocessable'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /balances:
    get:
      summary: Retrieve balance information report
      description: 'The **Pay By Bank** - **Balance Report** provides an overview of permissioned consumer
        payment account information and access to real-time balances.

        '
      tags:
      - Account Services
      operationId: getAccountBalances
      parameters:
      - $ref: '#/components/parameters/ConsentId'
      - $ref: '#/components/parameters/RequestId'
      - $ref: '#/components/parameters/ClientId'
      responses:
        '200':
          $ref: '#/components/responses/200-OK-BalanceDetails'
        '400':
          $ref: '#/components/responses/400-AccountVerificationBadRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '422':
          $ref: '#/components/responses/422-Unprocessable'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /transactions:
    get:
      summary: Retrieve transaction history report
      description: 'The **Pay By Bank** - **Transaction History Report API** provides an overview of permissioned
        consumer payment account information, including real-time balances and transaction history.

        '
      tags:
      - Account Services
      operationId: getAccountTransactions
      parameters:
      - $ref: '#/components/parameters/ConsentId'
      - $ref: '#/components/parameters/RequestId'
      - $ref: '#/components/parameters/ClientId'
      responses:
        '200':
          $ref: '#/components/responses/200-OK-TransactionDetails'
        '400':
          $ref: '#/components/responses/400-AccountVerificationBadRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '422':
          $ref: '#/components/responses/422-Unprocessable'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /account-information:
    get:
      summary: Retrieve account information
      description: 'The **Pay By Bank** - **Account Information API** facilitates the verification and
        provision of detailed information for linked bank accounts with continuous access permissions.
        This API allows users to retrieve specific account information, including account details, account
        owner verification, and balance checks.

        '
      tags:
      - Account Services
      operationId: getAccountSummaries
      parameters:
      - $ref: '#/components/parameters/ConsentId'
      - $ref: '#/components/parameters/RequestId'
      - $ref: '#/components/parameters/ClientId'
      - $ref: '#/components/parameters/AccountView'
      responses:
        '200':
          $ref: '#/components/responses/200-OK-AccountInformation'
        '400':
          $ref: '#/components/responses/400-AccountInformationBadRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '422':
          $ref: '#/components/responses/422-Unprocessable'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
components:
  schemas:
    IdempotencyKey:
      title: IdempotencyKey
      description: A string that enables the API support idempotency by safely retrying requests without
        accidentally performing the same operation twice.
      type: string
      minLength: 36
      maxLength: 36
      pattern: ^[-_.a-zA-Z0-9]{36}$
      example: 1b036f9c-8c84-4ce6-b1dd-5979472945a1
    RequestId:
      title: RequestId
      description: Client provided unique identifier for the current request invocation
      type: string
      minLength: 6
      maxLength: 128
      example: 5d1ff121-3a41-4cdc-9af9-de2f19cd567f
    ClientId:
      title: ClientId
      description: Unique Identifier of the client that is generated by PBB.
      type: string
      minLength: 1
      maxLength: 36
      example: '9876543210'
    ReferenceId:
      type: string
      minLength: 6
      maxLength: 128
      description: A unique identifier provided by the client for the request, which will be returned
        upon the completion of the consent process.
    ConsentType:
      title: ConsentType
      type: string
      description: 'Type of consent requested, specifying the **scope** of access to account information


        | Consent Type             | Description                                                           |
        Supported Region |

        |:-------------------------|:-----------------------------------------------------------------------|:------------------|

        | `ACCOUNT_INFORMATION`    | Consent for continuous access to account, account holders and balances
        information  | US  |

        | `ACCOUNT_CHECK`          | Consent for one time access to account and account holder information|
        UK, EU|

        | `BALANCE_CHECK`          | Consent for one time access to account balances information| UK,
        EU|

        | `TRANSACTIONS`           | Consent for one time access to access account transaction history|UK,
        EU|

        | `PAYMENT`                | Consent for one time payment to make a payment |UK, EU|

        '
      enum:
      - ACCOUNT_INFORMATION
      - ACCOUNT_CHECK
      - BALANCE_CHECK
      - TRANSACTIONS
      - PAYMENT
    ExternalUserId:
      title: ExternalUserId
      description: User Id for tracking the external user
      type: string
      minLength: 6
      maxLength: 256
    Email:
      title: Email
      type: object
      description: Representation of detailed email information.
      properties:
        isPrimary:
          type: boolean
          description: Indicates the email address is the first point of communication in instances where
            there are multiple email addresses.
        emailAddressType:
          type: string
          description: The email type.
          enum:
          - PERSONAL
          - BUSINESS
          - OTHER
          - UNKNOWN
        emailAddress:
          type: string
          description: The email address.
          format: email
      additionalProperties: false
    Phone:
      title: Phone
      type: object
      description: Representation of a Phone Number
      properties:
        phoneNumber:
          type: string
          pattern: ^\+[0-9]{1,3}-[0-9()+\-]{1,30}$
          description: Number as defined by the Telecom services
        phoneNumberType:
          type: string
          description: "The phone type.\r\n"
          enum:
          - PHONE
          - MOBILE
          - BUSINESS
          - OTHER
    ExternalUserProfile:
      type: object
      title: ExternalUserProfile
      description: Details of the external user.
      properties:
        firstName:
          type: string
          description: First name of the external user.
          maxLength: 100
        lastName:
          type: string
          description: Last name of the external user.
          maxLength: 100
        email:
          $ref: '#/components/schemas/Email'
        phone:
          $ref: '#/components/schemas/Phone'
    FinancialInstitutionIdType:
      title: FinancialInstitutionIdType
      description: Financial Institution Identifier Type
      type: string
      enum:
      - BIC
      - SORT_CODE
    FinancialInstitutionId:
      title: FinancialInstitutionId
      description: Financial Institution Identifier
      type: object
      properties:
        id:
          type: string
          description: Financial Institution Identifier
        idType:
          $ref: '#/components/schemas/FinancialInstitutionIdType'
      required:
      - id
      - idType
    ConsentLinkRequest:
      type: object
      title: ConsentLinkRequest
      description: Representation of a User's consent detail for accessing financial data
      properties:
        referenceId:
          $ref: '#/components/schemas/ReferenceId'
        country:
          type: string
          minLength: 2
          maxLength: 2
          pattern: ^[A-Z]{2}$
          description: "ISO 3166-1 Alpha-2 Country Code representing where the consent is requested\n\n\
            \  **Supported Countries:**\n  | Region         | Country                        |\n  | :-------------\
            \ | :----------------------------- |\n  | United States  | US                            \
            \ |\n  | United Kingdom | GB                             |\n  | EU             | DE, ES, IT,\
            \ NL, AT |\n"
        consentType:
          $ref: '#/components/schemas/ConsentType'
        externalUserId:
          $ref: '#/components/schemas/ExternalUserId'
        externalUserProfile:
          $ref: '#/components/schemas/ExternalUserProfile'
        redirectUrl:
          type: string
          format: uri
          description: Callback URL to be redirected upon consent completion
        locale:
          type: string
          description: 'Locale indicating the language and regional settings for the consent initiation

            '
          default: en_US
          maxLength: 5
        financialInstitutionId:
          description: 'Financial Institution where the end user will log in to provide consent

            '
          allOf:
          - $ref: '#/components/schemas/FinancialInstitutionId'
      required:
      - consentType
      - externalUserId
      - country
      additionalProperties: false
    ConsentLinkId:
      title: ConsentLinkId
      description: Unique identifier to access Pay by Bank UI for Link (UUID)
      type: string
      maxLength: 36
      minLength: 32
    ConsentId:
      title: ConsentId
      description: Unique identifier to access consent resources (UUID)
      type: string
      maxLength: 36
      minLength: 32
    ConsentLink:
      title: ConsentLink
      type: object
      description: Representation of a generated consent link.
      properties:
        consentLinkId:
          $ref: '#/components/schemas/ConsentLinkId'
        consentId:
          $ref: '#/components/schemas/ConsentId'
        referenceId:
          $ref: '#/components/schemas/ReferenceId'
      required:
      - consentLinkId
      - consentId
    ConsentLinkResponse:
      title: ConsentLinkResponse
      description: Representation of the details necessary to start and track the consent journey.
      type: object
      allOf:
      - $ref: '#/components/schemas/ConsentLink'
      - type: object
        properties:
          consentLink:
            type: string
            description: A URL link used to initiate user interaction for granting and authorizing consent.
            format: uri
          createdAt:
            type: string
            description: The timestamp indicating when the consent initiation process was created, formatted
              in ISO 8601 format.
            format: date-time
          consentLinkExpiringAt:
            type: string
            description: The timestamp indicating when the consent link will expire, formatted in ISO
              8601 format.
            format: date-time
        required:
        - consentLink
        - createdAt
        - consentLinkExpiringAt
    TraceId:
      title: TraceId
      description: A unique identifier generated by server for tracing the request through the system.
      type: string
      minLength: 16
      maxLength: 36
      pattern: ^[-_.a-zA-Z0-9]{16,36}$
      example: ed392d86-83f3-4611-ac51-3a00442c8fc5
    ApiAdditionalContext:
      title: AdditionalContext
      type: object
      properties:
        type:
          type: string
          description: Category of the error code (EXTERNAL)
          minLength: 3
          maxLength: 20
        code:
          type: string
          description: Short code that identifies the error - publicly cataloged and documented
          minLength: 2
          maxLength: 10
        message:
          type: string
          description: Humanly readable textual description of the error
          minLength: 1
          maxLength: 200
      required:
      - type
      - code
      - message
      additionalProperties: false
    ApiErrorContext:
      title: ErrorContext
      description: The API error context object returned by the API.
      type: object
      properties:
        code:
          type: string
          description: JPMC Short code that identifies the error - publicly cataloged and documented
          minLength: 5
          maxLength: 5
        message:
          type: string
          description: Humanly readable textual description of the error
          minLength: 1
          maxLength: 200
        location:
          type: string
          description: The location of the error occurred in the request.
          enum:
          - BODY
          - PATH
          - QUERY
          - HEADER
          minLength: 1
          maxLength: 99
        field:
          type: string
          description: The field which caused the error. Where the location of error occurred is BODY
            the field would contain the JSON Path expression
          minLength: 1
          maxLength: 99
        additionalContext:
          type: array
          description: List of additional error contexts providing detailed information
          items:
            $ref: '#/components/schemas/ApiAdditionalContext'
          minItems: 0
          maximum: 10
      required:
      - message
      additionalProperties: false
    ApiError:
      title: Error
      description: The error object returned by the API.
      type: object
      properties:
        title:
          type: string
          description: Brief title describing the error
          example: Consent Processing Error
          minLength: 1
          maxLength: 128
        httpStatus:
          type: integer
          format: int32
          description: HTTP Status Code
        traceId:
          $ref: '#/components/schemas/TraceId'
        requestId:
          $ref: '#/components/schemas/RequestId'
        context:
          type: array
          description: List of error contexts providing detailed information
          items:
            $ref: '#/components/schemas/ApiErrorContext'
          minItems: 0
          maxItems: 10
      required:
      - title
      - httpStatus
      - traceId
      additionalProperties: false
    ConsentLinkInitiated:
      title: ConsentLinkInitiated
      description: Consent Link event published as part of account linking flow for consent link URL is
        generated
      type: object
      properties:
        consentLinkRequest:
          $ref: '#/components/schemas/ConsentLinkRequest'
        consentLinkResponse:
          $ref: '#/components/schemas/ConsentLinkResponse'
      required:
      - consentLinkRequest
      - consentLinkResponse
    ConsentLinkWithView:
      title: ConsentLinkCancelled
      type: object
      description: Representation of a generated consent link.
      allOf:
      - $ref: '#/components/schemas/ConsentLink'
      - type: object
        properties:
          viewName:
            type: string
            description: The view page where the user cancelled the consent link
    AdditionalContext:
      title: AdditionalContext
      type: object
      properties:
        type:
          type: string
          description: Category of the error code (EXTERNAL)
          minLength: 3
          maxLength: 20
        code:
          type: string
          description: Short code that identifies the error - publicly cataloged and documented
          minLength: 2
          maxLength: 10
        message:
          type: string
          description: Humanly readable textual description of the error
          minLength: 1
          maxLength: 200
      required:
      - type
      - code
      - message
      additionalProperties: false
    ErrorContext:
      title: ConsentErrorContext
      type: object
      properties:
        code:
          type: string
          description: JPMC Short code that identifies the error - publicly cataloged and documented
          minLength: 5
          maxLength: 5
        message:
          type: string
          description: Humanly readable textual description of the error
          minLength: 1
          maxLength: 200
        field:
          type: string
          description: The field which caused the error. Where the location of error occurred is BODY
            the field would contain the JSON Path expression
          minLength: 1
          maxLength: 99
        additionalContext:
          type: array
          description: List of additional error contexts providing detailed information
          items:
            $ref: '#/components/schemas/AdditionalContext'
          minItems: 0
          maxItems: 10
      required:
      - message
      additionalProperties: false
    Error:
      title: ConsentError
      description: Error details for consent processing issues
      type: object
      properties:
        title:
          type: string
          description: Brief title describing the error
          example: Consent Processing Error
          minLength: 1
          maxLength: 128
        traceId:
          $ref: '#/components/schemas/TraceId'
        context:
          type: array
          description: List of error contexts providing detailed information
          items:
            $ref: '#/components/schemas/ErrorContext'
          minItems: 0
          maxItems: 10
      required:
      - title
      - traceId
    ConsentLinkFailed:
      title: ConsentLinkFailed
      description: Consent Link event published as part of account linking flow for failure
      type: object
      allOf:
      - $ref: '#/components/schemas/ConsentLink'
      - type: object
        properties:
          error:
            $ref: '#/components/schemas/Error'
        required:
        - error
    ConsumerProfileId:
      title: ConsumerProfileId
      type: string
      description: Internal consumer profile identifier provided by JPMC
      minLength: 5
      maxLength: 64
    User:
      title: User
      description: Pay by Bank User
      type: object
      allOf:
      - $ref: '#/components/schemas/ExternalUserProfile'
      properties:
        consumerProfileId:
          $ref: '#/components/schemas/ConsumerProfileId'
    ConsentStatus:
      title: ConsentStatus
      type: string
      description: 'Type of consent status


        | Consent Status     | Description                                                                 |

        |:---------------------|:--------------------------------------------------------------------------|

        | `SUCCESS`            | Consent process completed successfully.                                   |

        | `PARTIAL_SUCCESS`    | Consent completed successful. Consent data retrieval partial successful.  |

        | `FAILED`             | Consent process failed.                                                   |

        | `REVOKED_BY_USER`    | Consent was revoked by the user.                                          |

        | `REVOK

# --- truncated at 32 KB (145 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/jp-morgan-chase/refs/heads/main/openapi/jp-morgan-chase-account-information-services-openapi.yml