openapi: 3.1.0
paths:
  /rest/account/{accountId}/service/{indicationOfInterestId}:
    get:
      description: >-
        Returns an indication of interest (service request) scoped to an
        account.


        Authentication is via a valid API key; no additional resource grant is
        required.
      operationId: getAccountService
      parameters:
        - name: accountId
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: indicationOfInterestId
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountServiceDetail'
        '404':
          description: >-
            The indication of interest was not found, or it is not associated
            with the given account id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            The indication of interest exists but does not have an account id
            yet (pre-booking).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '410':
          description: The indication of interest was removed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Retrieve a service request for an account
      tags:
        - Servicing
  /rest/account/{accountId}/service/{indicationOfInterestId}/fulfill:
    post:
      description: |-
        Marks an indication of interest (service request) as complete.

        Required resource grants:
        - Manage Account Servicing
      operationId: fulfillAccountService
      parameters:
        - name: accountId
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: indicationOfInterestId
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $id: AccountServiceFulfillRequest
              type: object
              properties:
                metadata:
                  description: >-
                    Key-value data to store with this service request. All
                    values must be strings.
                  type: object
                  patternProperties:
                    ^(.*)$:
                      type: string
      responses:
        '204':
          description: Service request fulfilled.
        '404':
          description: >-
            The indication of interest was not found, or it is not associated
            with the given account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The indication of interest is already fulfilled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '410':
          description: The indication of interest was removed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Fulfill a service request for an account
      tags:
        - Servicing
  /rest/account/{id}:
    get:
      description: >-
        Retrieves account details from the MANTL system.


        The data reflects the most recent synchronization with the core account
        known to MANTL.

        To check the freshness of the data, refer to the lastCoreSync field.

        If you require the most up-to-date account status and balances, use the
        refreshAccount endpoint.


        Required resource grants:

        - Retrieve Account Data
      operationId: getAccount
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Retrieve an account
      tags:
        - Accounts
  /rest/account/{id}/refresh:
    get:
      description: >-
        Retrieves account details from the core system.


        This operation does not search MANTL records, but instead queries the
        core directly.

        As such, callers should be prepared to handle higher latency and
        scheduled core downtimes.

        Prefer to use the getAccount endpoint unless your use-case requires the
        most up-to-date account status and balances.

        MANTL will synchronize its copy of the account as part of this process.


        Required resource grants:

        - Retrieve Account Data
      operationId: refreshAccount
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '503':
          description: >-
            Core is currently unavailable. Usually seen during scheduled
            maintenance. Retry the request after waiting.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Refresh details of an account
      tags:
        - Accounts
  /rest/ach:
    post:
      description: >-
        Creates a new ACH transfer from a source bank account to a destination
        bank account.


        Required resource grants:

        - Manage ACH Transfer Request
      operationId: createAchTransfer
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                fundingMethod:
                  description: >
                    A configuration value denoting how the requested ACH
                    transfer is to be processed.

                    The allowed slugs are specific to individual financial
                    institutions.
                  example: directManualBankAccount
                  type: string
                amountCents:
                  minimum: 1
                  maximum: 100000000
                  description: Amount in cents to transfer (e.g., 2000 for $20.00)
                  example: 2000
                  type: integer
                fromEntity:
                  type: object
                  oneOf:
                    - type: object
                      properties:
                        id:
                          format: uuid
                          description: A MANTL UUID of a person record
                          type: string
                      required:
                        - id
                    - type: object
                      properties:
                        firstName:
                          type: string
                        lastName:
                          type: string
                      required:
                        - firstName
                        - lastName
                fromAccount:
                  type: object
                  oneOf:
                    - type: object
                      properties:
                        id:
                          format: uuid
                          description: A MANTL UUID of an existing account record
                          type: string
                      required:
                        - id
                    - type: object
                      properties:
                        accountType:
                          type: string
                          enum:
                            - checking
                            - savings
                            - moneyMarket
                        accountNumber:
                          format: regex
                          pattern: ^[a-zA-Z0-9]*$
                          maxLength: 17
                          type: string
                        routingNumber:
                          format: regex
                          pattern: ^\d{9}$
                          example: '026009593'
                          type: string
                      required:
                        - accountType
                        - accountNumber
                        - routingNumber
                toAccount:
                  type: object
                  oneOf:
                    - type: object
                      properties:
                        id:
                          format: uuid
                          description: A MANTL UUID of an existing account record
                          type: string
                      required:
                        - id
                    - type: object
                      properties:
                        accountType:
                          type: string
                          enum:
                            - checking
                            - savings
                            - moneyMarket
                        accountNumber:
                          format: regex
                          pattern: ^[a-zA-Z0-9]*$
                          maxLength: 17
                          type: string
                        routingNumber:
                          format: regex
                          pattern: ^\d{9}$
                          example: '026009593'
                          type: string
                      required:
                        - accountType
                        - accountNumber
                        - routingNumber
              required:
                - fundingMethod
                - amountCents
                - fromEntity
                - fromAccount
                - toAccount
            examples:
              minimal:
                summary: Minimal, using only MANTL internal UUIDs
                value:
                  fundingMethod: directManualBankAccount
                  amountCents: 10000
                  fromEntity:
                    id: 55b82166-bbb7-40a0-8dfb-8c02e5bd97d9
                  fromAccount:
                    id: e4d857b6-d520-4f81-ba42-864448b38eea
                  toAccount:
                    id: 9688509c-3e8a-4f31-babd-b7ecbe94a19c
              knownFrom:
                summary: From an account known in MANTL to an external account
                value:
                  fundingMethod: directManualBankAccount
                  amountCents: 10000
                  fromEntity:
                    id: 55b82166-bbb7-40a0-8dfb-8c02e5bd97d9
                  fromAccount:
                    id: e4d857b6-d520-4f81-ba42-864448b38eea
                  toAccount:
                    accountType: checking
                    accountNumber: '378124757678'
                    routingNumber: '026009593'
              rawNumbers:
                summary: Without using MANTL references
                value:
                  fundingMethod: directManualBankAccount
                  amountCents: 10000
                  fromEntity:
                    firstName: John
                    lastName: Smith
                  fromAccount:
                    accountType: savings
                    accountNumber: '87654723894'
                    routingNumber: '121201694'
                  toAccount:
                    accountType: checking
                    accountNumber: '378124757678'
                    routingNumber: '026009593'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AchTransfer'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Create an ACH transfer
      tags:
        - Servicing
  /rest/ach/{id}:
    get:
      description: |-
        Retrieves an existing ACH transfer in the MANTL system.

        Required resource grants:
        - Manage ACH Transfer Request
      operationId: getAchTransfer
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AchTransfer'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Retrieve an ACH transfer
      tags:
        - Servicing
    delete:
      description: >-
        Cancels a pending ACH transfer.


        Only transfers which are pending can be cancelled. Once a transfer
        starts processing, it cannot be cancelled.

        Cancelled transfers cannot be reactivated, a new transfer must be
        created.


        Required resource grants:

        - Manage ACH Transfer Request
      operationId: cancelAchTransfer
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: No response body
        '409':
          description: >-
            The ACH transfer record is not in a pending state. Likely, it was
            already batched and transmitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Cancel a pending ACH transfer
      tags:
        - Servicing
  /rest/application/{id}:
    get:
      description: 'Required resource grants: None.'
      operationId: applicationGet
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Retrieve an Application
      tags:
        - Applications
  /rest/application:
    post:
      description: |-
        Required resource grants, depending on product:
        - Create Consumer Deposit Application
        - Create Business Deposit Application
        - Create Consumer Loan Application
      operationId: applicationCreate
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              additionalProperties: false
              type: object
              properties:
                product:
                  type: string
                accountType:
                  type: string
                entities:
                  minItems: 1
                  type: array
                  items:
                    allOf:
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - person
                              - business
                              - trust
                              - estate
                              - municipality
                        required:
                          - type
                      - type: object
                        discriminator:
                          propertyName: type
                        oneOf:
                          - $id: PersonEntityInput
                            additionalProperties: false
                            type: object
                            properties:
                              type:
                                const: person
                                type: string
                              role:
                                type: string
                                enum:
                                  - adult
                                  - authorizedSigner
                                  - beneficiary
                                  - business
                                  - controlProng
                                  - estate
                                  - fiduciary
                                  - grantor
                                  - guarantor
                                  - minor
                                  - municipality
                                  - otherAdult
                                  - significantParty
                                  - trust
                                  - trustee
                                  - beneficialOwner
                                title: The entity's role on the application
                                description: >-
                                  Which role(s) are appropriate for a given
                                  application are dependant on the product and
                                  account type.


                                  For example, a personal checking account may
                                  allow exactly one role of `adult`, whose
                                  entity type must be `person`,

                                  while a more complex business account may
                                  require a `business` type and role, and
                                  optionally accept people entities for
                                  `controlProng`, `significantParty`, etc.
                              id:
                                format: uuid
                                description: MANTL's internal ID for the entity
                                type: string
                              coreId:
                                description: >-
                                  The value that uniquely identifies the entity
                                  in the core.


                                  Depending on the institution, the core, and
                                  the subscribed features, this value is
                                  sometimes referred to as the CIF, RM Key, or
                                  membership ID.<br />

                                  For some institutions, especially credit
                                  unions, there may be no one value to identify
                                  an entity. In which case this value should not
                                  be used.
                                type: string
                              taxId:
                                description: >-
                                  U.S. taxpayer identification number. A Social
                                  Security Number (SSN), which is issued to
                                  individuals, or an Employer Identification
                                  Number (EIN), which is issued to individuals
                                  or entities.


                                  This value may be provided with or without
                                  dashes (-), but must contain exactly nine
                                  digits.
                                example: 000-12-3456
                                type: string
                              emails:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    emailAddress:
                                      format: email
                                      type: string
                                    verified:
                                      type: boolean
                                    primary:
                                      type: boolean
                                    description:
                                      type: string
                                  required:
                                    - emailAddress
                                    - verified
                                    - primary
                              phones:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    phoneNumber:
                                      description: >-
                                        This value may be provided with or
                                        without formatting, but must contain
                                        exactly ten digits.
                                      type: string
                                    verified:
                                      type: boolean
                                    primary:
                                      type: boolean
                                    description:
                                      type: string
                                  required:
                                    - phoneNumber
                                    - verified
                                    - primary
                              addresses:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    country:
                                      format: country
                                      example: US
                                      type: string
                                    line1:
                                      description: >-
                                        REQUIRED. If not provided the request
                                        will not be rejected, however, the
                                        address will not save on the person
                                        record.
                                      example: 20 W 34th St.
                                      type: string
                                    line2:
                                      type: string
                                    city:
                                      description: >-
                                        REQUIRED. If not provided the request
                                        will not be rejected, however, the
                                        address will not save on the person
                                        record.
                                      example: New York
                                      type: string
                                    state:
                                      description: >-
                                        REQUIRED. If not provided the request
                                        will not be rejected, however, the
                                        address will not save on the person
                                        record.
                                      format: us-state
                                      example: NY
                                      type: string
                                    postalCode:
                                      description: >-
                                        REQUIRED. If not provided the request
                                        will not be rejected, however, the
                                        address will not save on the person
                                        record.
                                      example: '10001'
                                      type: string
                                    verified:
                                      type: boolean
                                    primary:
                                      description: >-
                                        DEPRECATED: Use the type field instead.
                                        Whether this is the primary address.
                                      type: boolean
                                    type:
                                      type: string
                                      enum:
                                        - Primary
                                        - Secondary
                                        - Mailing
                                        - Billing
                                        - Home
                                        - International
                                        - Legal
                                        - Seasonal
                                        - Work
                                      description: >-
                                        The type of address. If multiple
                                        addresses of the same type are provided,
                                        only the last one will be saved. If no
                                        primary address is specified, the first
                                        address will be designated as primary.
                                        If multiple primary addresses are
                                        provided, the last one will be used.
                                    description:
                                      type: string
                                  required:
                                    - country
                                    - verified
                                    - type
                              creditUnionEligibilityCriteria:
                                description: >-
                                  A top-level eligibility reason for application
                                  of credit unions.

                                  Acceptable values are defined as enums for
                                  each credit union interdependently in MANTL.


                                  This field is only applicable for clients
                                  which are credit unions.
                                example: orgInCharterArea
                                type: string
                              creditUnionSegCode:
                                format: regex
                                pattern: ^\w{1,10}$
                                description: >-
                                  The Select Employer Group (SEG) Code allows
                                  the credit union determine the eligibility of

                                  an entity for membership based on their
                                  affiliation with a particular employer,
                                  residential region, organization association,
                                  etc.


                                  This field is only applicable for clients
                                  which are credit unions.

                                  Allowed values are any valid SEG code from the
                                  pre-defined list maintained by the credit
                                  union.

                                  Provided codes are not validated during
                                  application creation.

                                  Providing incorrect codes may result in
                                  booking errors.
                                example: EMP123456
                                type: string
                              firstName:
                                type: string
                              lastName:
                                type: string
                              dateOfBirth:
                                format: date
                                type: string
                              motherMaidenName:
                                pattern: ^[^0-9@:.~<>;"`\\/#?&]{1,50}$
                                description: >-
                                  Mother's maiden name (surname before
                                  marriage). May be required by the
                                  institution's configuration.
                                type: string
                              enhancedDueDiligence:
                                additionalProperties: false
                                type: object
                                properties:
                                  isPoliticalOfficial:
                                    description: >-
                                      Directly Exposed<br />A Politically
                                      Exposed Person is an individual with a
                                      high profile political role, or who has
                                      been entrusted with a prominent public
                                      function. This generally includes current
                                      or former senior political figures, their
                                      immediate family, and their close
                                      associates.

                                          An immediate family member is defined as a parent, sibling, spouse, child or in-law.

                                          A business/close associate of a political figure is defined as a person who is widely and publicly known to maintain an unusually close relationship with the political figure, and includes a person who is in a position to conduct substantial domestic and international transactions on behalf of the political figure.
                                    type: boolean
                                  isPoliticallyActive:
                                    description: Politically Active
                                    type: boolean
                                  politicallyExposedPublicOfficeCountry:
                                    description: >-
                                      Country of Office<br />Two character ISO
                                      3166-1 alpha-2 code.
                                    format: country
                                    type: string
                                  politicallyExposedOfficialTitle:
                                    description: Official Title
                                    minLength: 2
                                    maxLength: 40
                                    type: string
                                  politicallyExposedNatureOfTitle:
                                    description: Nature of the Title
                                    minLength: 1
                                    maxLength: 40
                                    type: string
                                  politicallyExposedLevelOfAuthority:
                                    description: Political Official's Level of Authority
                                    minLength: 1
                                    maxLength: 40
                                    type: string
                                  politicallyExposedAccessToAssetsDescription:
                                    description: Access to Assets or Funds
                                    minLength: 1
                                    maxLength: 280
                                    type: string
                                  officialGovernmentResponsibilities:
                                    description: Official Government Responsibilities
                                    minLength: 2
                                    maxLength: 280
                                    type: string
                                  branchOfGovernment:
                                    description: Branch of Government
                                    minLength: 2
                                    maxLength: 280
                                    type: string
                                  isPoliticallyExposedIndirectly:
                                    type: string
                                    enum:
                                      - family_member
                                      - close_associate
                                      - 'no'
                                    description: Politically Exposed Indirectly
                                  politicallyExposedRelatedOfficialPublicOfficeCountry:
                                    description: >-
                                      In what country is/was the related person
                                      a politically official?<br />Two character
                                      ISO 3166-1 alpha-2 code.
                                    format: country
                                    type: string
                                  providerOfProfessionalServicesTypeConsumer:
                                    type: string
                                    enum:
                                      - accounting_cpa
                                      - attorney_lawyer
                                      - investment_security_individual
                                      - real_estate_individual
                                      - other
                                    description: Provider Of Professional Services Type
                                  doesProviderExpectToLeveragePersonalAccountsForProfessionalTransactions:
                                    description: >-
                                      Does the customer expect to make
                                      transactions related to their professional
                                      designation within their personal
                                      accounts?
                                    type: boolean
                                  doesProviderActAsIntermediaryBetweenClientsAndFinancialInstitutions:
                                    description: >-
                                      Does the business act as an intermediary
                                      between their clients and the bank,
                                      performing services or arranging for
                                      services to be performed on their client's
                                      behalf?
                                    type: boolean
                                  doesProviderExpectClientFundsToBePooledInSingleAccount:
                                    description: >-
                                      Will client-owned funds be pooled within a
                                      single account?
                                    type: boolean
                                  doesProviderPerformServicesInternationally:
                                    description: >-
                                      Does the customer offer their services or
                                      invest internationally on behalf of their
                                      clients?
                                    type: boolean
                                  hasRemovedSecurityFreeze:
                                    description: Removed Security Freeze
                                    type: boolean
                              businessRole:
                                description: >-
                                  Describes the persons role at the business on
                                  this application.<br />Can only be provided if
                                  the business is also included as one of the
                                  provided entities.
                                type: object
                                properties:
                                  type:
                                    type: string
                                  title:
                                    type: string
                                  ownershipPercentage:
                                    minimum: 0
                                    maximum: 100
                                    type: number
                                  isControlProng:
                                    description: >-
                                      Is this person the one person at the
                                      business who has the most control and
                                      responsibility over the account being
                                      applied for?
                                    type: boolean
                            required:
                              - type
                              - role
                          - $id: OrganizationEntityInput
                            additionalProperties: false
                            type: object
                            properties:
                              type:
                                const: business
                                type: string
                              role:
                                type: string
                                enum:
                                  - adult
                                  - authorizedSigner
                                  - beneficiary
                                  - business
                                  - controlProng
                                  - estate
                                  - fiduciary
                                  - grantor
                                  - guarantor
                                  - minor
                                  - municipality
                                  - otherAdult
                                  - significantParty
                                  - trust
                                  - trustee
                                  - beneficialOwner
                                title: The entity's role on the application
                                description: >-
                                  Which role(s) are appropriate for a given
                                  application are dependant on the product and
                                  account type.


                                  For example, a personal checking account may
                                  allow exactly one role of `adult`, whose
                                  entity type must be `person`,

                                  while a more complex business account may
                                  require a `business` type and role, and
                                  optionally accept people entities for
                                  `controlProng`, `significantParty`, etc.
                              id:
                                format: uuid
                                description: MANTL's internal ID for the entity
                                type: string
                              coreId:
                                description: >-
                                  The value that uniquely identifies the entity
                                  in the core.


                                  Depending on the institution, the core, and
                                  the subscribed features, this value is
                                  sometimes referred to as the CIF, RM Key, or
                                  membership ID.<br />

                                  For some institutions, especially credit
                                  unions, there may be no one value to identify
                                  an entity. In which case this value should not
                                  be used.
                                type: string
                              taxId:
                                description: >-
                                  U.S. taxpayer identification number. A Social
                                  Security Number (SSN), which is issued to
                                  individuals, or an Employer Identification
                                  Number (EIN), which is issued to individuals
                                  or entities.


                                  This value may be provided with or without
                                  dashes (-), but must contain exactly nine
                                  digits.
                                example: 000-12-3456
                                type: string
                              emails:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    emailAddress:
                                      format: email
                                      type: string
                                    verified:
                                      type: boolean
                                    primary:
                                      type: boolean
                                    description:
                                      type: string
                                  required:
                                    - emailAddress
                                    - verified
                                    - primary
                              phones:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    phoneNumber:
                                      description: >-
                                        This value may be provided with or
                                        without formatting, but must contain
                                        exactly ten digits.
                                      type: string
                                    verified:
                                      type: boolean
                                    primary:
                                      type: boolean
                                    description:
                                      type: string
                                  required:
                                    - phoneNumber
                                    - verified
                                    - primary
                              addresses:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    country:
                                      format: country
                                      example: US
                                      type: string
                                    line1:
                                      description: >-
                                        REQUIRED. If not provided the request
                                        will not be rejected, however, the
                                        address will not save on the person
                                        record.
                                      example: 20 W 34th St.
                                      type: string
                                    line2:
                                      type: string
                                    city:
                                      description: >-
                                        REQUIRED. If not provided the request
                                        will not be rejected, however, the
                                        address will not save on the person
                                        record.
                                      example: New York
                                      type: string
                                    state:
                                      description: >-
                                        REQUIRED. If not provided the request
                                        will not be rejected, however, the
                                        address will not save on the person
                                        record.
                                      format: us-state
                                      example: NY
                                      type: string
                                    postalCode:
                                      description: >-
                                        REQUIRED. If not provided the request
                                        will not be rejected, however, the
                                        address will not save on the person
                                        record.
                                      example: '10001'
                                      type: string
                                    verified:
                                      type: boolean
                                    primary:
                                      description: >-
                                        DEPRECATED: Use the type field instead.
                                        Whether this is the primary address.
                                      type: boolean
                                    type:
                                      type: string
                                      enum:
                                        - Primary
                                        - Secondary
                                        - Mailing
                                        - Billing
                                        - Home
                                        - International
                                        - Legal
                                        - Seasonal
                                        - Work
                                      description: >-
                                        The type of address. If multiple
                                        addresses of the same type are provided,
                                        only the last one will be saved. If no
                                        primary address is specified, the first
                                        address will be designated as primary.
                                        If multiple primary addresses are
                                        provided, the last one will be used.
                                    description:
                                      type: string
                                  required:
                                    - country
                                    - verified
                                    - type
                              creditUnionEligibilityCriteria:
                                description: >-
                                  A top-level eligibility reason for application
                                  of credit unions.

                                  Acceptable values are defined as enums for
                                  each credit union interdependently in MANTL.


                                  This field is only applicable for clients
                                  which are credit unions.
                                example: orgInCharterArea
                                type: string
                              creditUnionSegCode:
                                format: regex
                                pattern: ^\w{1,10}$
                                description: >-
                                  The Select Employer Group (SEG) Code allows
                                  the credit union determine the eligibility of

                                  an entity for membership based on their
                                  affiliation with a particular employer,
                                  residential region, organization association,
                                  etc.


                                  This field is only applicable for clients
                                  which are credit unions.

                                  Allowed values are any valid SEG code from the
                                  pre-defined list maintained by the credit
                                  union.

                                  Provided codes are not validated during
                                  application creation.

                                  Providing incorrect codes may result in
                                  booking errors.
                                example: EMP123456
                                type: string
                              name:
                                type: string
                              doingBusinessAs:
                                type: string
                              businessStructure:
                                type: string
                                enum:
                                  - association
                                  - corporation
                                  - generalPartnership
                                  - llc
                                  - llp
                                  - lp
                                  - nonProfit
                                  - organization
                                  - soleProprietorship
                                  - trust
                                  - estate
                                  - municipality
                                  - unknown
                                description: >-
                                  The legal structure or type of business entity
                                  registered in the United States.
                              dateEstablished:
                                format: date
                                description: >-
                                  Usually refers to the effective date the
                                  business registered with a state, however, a
                                  company can select another effective date.
                                type: string
                              naicsCode:
                                format: regex
                                pattern: ^\d{6}$
                                description: >-
                                  Six-digit North American Industry
                                  Classification System (NAICS) code.
                                example: '236115'
                                type: string
                              detailedBusinessDescription:
                                description: Description of Business
                                minLength: 1
                                maxLength: 280
                                type: string
                              websiteUrl:
                                format: uri
                                description: Business Website URL
                                type: string
                              numberOfEmployees:
                                minimum: 1
                                type: integer
                              numberOfLocations:
                                minimum: 0
                                type: integer
                              enhancedDueDiligence:
                                additionalProperties: false
                                type: object
                                properties:
                                  pacName:
                                    description: What is the official name of the PAC?
                                    minLength: 1
                                    maxLength: 64
                                    type: string
                                  pacType:
                                    type: string
                                    enum:
                                      - Federal
                                      - State
                                      - Local
                                      - 527 Organization
                                    description: Select the Type of PAC
                                  pacOperationLocations:
                                    description: >-
                                      List the states and countries where the
                                      organization operates, starting with its
                                      headquarters
                                    type: array
                                    items:
                                      type: string
                                      enum:
                                        - US
                                        - AF
                                        - AL
                                        - DZ
                                        - AS
                                        - AD
                                        - AO
                                        - AI
                                        - AQ
                                        - AG
                                        - AR
                                        - AM
                                        - AW
                                        - AU
                                        - AT
                                        - AZ
                                        - BS
                                        - BH
                                        - BD
                                        - BB
                                        - BY
                                        - BE
                                        - BZ
                                        - BJ
                                        - BM
                                        - BT
                                        - BO
                                        - BQ
                                        - BA
                                        - BW
                                        - BV
                                        - BR
                                        - IO
                                        - BN
                                        - BG
                                        - BF
                                        - BI
                                        - CV
                                        - KH
                                        - CM
                                        - CA
                                        - KY
                                        - CF
                                        - TD
                                        - CL
                                        - CN
                                        - CX
                                        - CC
                                        - CO
                                        - KM
                                        - CD
                                        - CG
                                        - CK
                                        - CR
                                        - HR
                                        - CU
                                        - CW
                                        - CY
                                        - CZ
                                        - CI
                                        - DK
                                        - DJ
                                        - DM
                                        - DO
                                        - EC
                                        - EG
                                        - SV
                                        - GQ
                                        - ER
                                        - EE
                                        - SZ
                                        - ET
                                        - FK
                                        - FO
                                        - FJ
                                        - FI
                                        - FR
                                        - GF
                                        - PF
                                        - TF
                                        - GA
                                        - GM
                                        - GE
                                        - DE
                                        - GH
                                        - GI
                                        - GR
                                        - GL
                                        - GD
                                        - GP
                                        - GU
                                        - GT
                                        - GG
                                        - GN
                                        - GW
                                        - GY
                                        - HT
                                        - HM
                                        - VA
                                        - HN
                                        - HK
                                        - HU
                                        - IS
                                        - IN
                                        - ID
                                        - IR
                                        - IQ
                                        - IE
                                        - IM
                                        - IL
                                        - IT
                                        - JM
                                        - JP
                                        - JE
                                        - JO
                                        - KZ
                                        - KE
                                        - KI
                                        - KP
                                        - KR
                                        - KW
                                        - KG
                                        - LA
                                        - LV
                                        - LB
                                        - LS
                                        - LR
                                        - LY
                                        - LI
                                        - LT
                                        - LU
                                        - MO
                                        - MG
                                        - MW
                                        - MY
                                        - MV
                                        - ML
                                        - MT
                                        - MH
                                        - MQ
                                        - MR
                                        - MU
                                        - YT
                                        - MX
                                        - FM
                                        - MD
                                        - MC
                                        - MN
                                        - ME
                                        - MS
                                        - MA
                                        - MZ
                                        - MM
                                        - NA
                                        - NR
                                        - NP
                                        - NL
                                        - NC
                                        - NZ
                                        - NI
                                        - NE
                                        - NG
                                        - NU
                                        - NF
                                        - MP
                                        - 'NO'
                                        - OM
                                        - PK
                                        - PW
                                        - PS
                                        - PA
                                        - PG
                                        - PY
                                        - PE
                                        - PH
                                        - PN
                                        - PL
                                        - PT
                                        - PR
                                        - QA
                                        - MK
                                        - RO
                                        - RU
                                        - RW
                                        - RE
                                        - BL
                                        - SH
                                        - KN
                                        - LC
                                        - MF
                                        - PM
                                        - VC
                                        - WS
                                        - SM
                                        - ST
                                        - SA
                                        - SN
                                        - RS
                                        - SC
                                        - SL
                                        - SG
                                        - SX
                                        - SK
                                        - SI
                                        - SB
                                        - SO
                                        - ZA
                                        - GS
                                        - SS
                                        - ES
                                        - LK
                                        - SD
                                        - SR
                                        - SJ
                                        - SE
                                        - CH
                                        - SY
                                        - TW
                                        - TJ
                                        - TZ
                                        - TH
                                        - TL
                                        - TG
                                        - TK
                                        - TO
                                        - TT
                                        - TN
                                        - TR
                                        - TM
                                        - TC
                                        - TV
                                        - UG
                                        - UA
                                        - AE
                                        - GB
                                        - UM
                                        - UY
                                        - UZ
                                        - VU
                                        - VE
                                        - VN
                                        - VG
                                        - VI
                                        - WF
                                        - EH
                                        - YE
                                        - ZM
                                        - ZW
                                        - AX
                                        - AL
                                        - AK
                                        - AZ
                                        - AR
                                        - CA
                                        - CO
                                        - CT
                                        - DE
                                        - DC
                                        - FL
                                        - GA
                                        - HI
                                        - ID
                                        - IL
                                        - IN
                                        - IA
                                        - KS
                                        - KY
                                        - LA
                                        - ME
                                        - MD
                                        - MA
                                        - MI
                                        - MN
                                        - MS
                                        - MO
                                        - MT
                                        - NE
                                        - NV
                                        - NH
                                        - NJ
                                        - NM
                                        - NY
                                        - NC
                                        - ND
                                        - OH
                                        - OK
                                        - OR
                                        - PA
                                        - RI
                                        - SC
                                        - SD
                                        - TN
                                        - TX
                                        - UT
                                        - VT
                                        - VA
                                        - WA
                                        - WV
                                        - WI
                                        - WY
                                        - AS
                                        - FM
                                        - GU
                                        - MH
                                        - MP
                                        - PW
                                        - PR
                                        - VI
                                  marijuanaBusinessType:
                                    description: >-
                                      What type of marijuana business do you
                                      operate?
                                    type: string
                                  marijuanaTradeActivitiesList:
                                    description: >-
                                      What type of marijuana related activity
                                      does the business engage in?
                                    type: array
                                    items:
                                      type: string
                                  isLicensedMarijuanaBusiness:
                                    description: Is the business licensed by the state?
                                    type: boolean
                                  isInvolvedDirectlyInMarijuanaTrade:
                                    description: Directly Involved MRB
                                    type: boolean
                                  percentageRevenueMarijuanaTrade:
                                    description: >-
                                      What percentage of the business revenue is
                                      derived from sale of cannabis and/or
                                      cannabis related products?
                                    type: string
                                  percentageRevenueHempTrade:
                                    description: >-
                                      What percentage of the business revenue is
                                      derived from sale of hemp and/or hemp
                                      related products?
                                    type: string
                                  isLicensedCannabisHemp:
                                    description: >-
                                      Is the customer licensed by the state for
                                      cannabis hemp activity
                                    type: boolean
                                  isNgoReliantOnDonationsOrVoluntaryService:
                                    description: >-
                                      Does the organization depend, in whole or
                                      in part, on charitable donations and
                                      voluntary service for support?
                                    type: boolean
                                  nonbankFinancialInstitutionType:
                                    type: string
                                    enum:
                                      - dealerOfPreciousGoods
                                      - securityAndCommodityFirm
                                      - loanOrFinancialServicesFirm
                                      - insuranceCompany
                                      - pawnBroker
                                    description: Type of Business
                                  hasAmlOfficerForNonbankFinancialInstitution:
                                    description: AML Officer
                                    type: boolean
                                  hasAmlProceduresForNonbankFinancialInstitution:
                                    description: AML Procedures
                                    type: boolean
                                  hasAmlTrainingForNonbankFinancialInstitution:
                                    description: AML Training
                                    type: boolean
                                  doesNonbankFinancialInstitutionConductDueDiligence:
                                    description: Conduct Due Diligence
                                    type: boolean
                                  doesNonbankFinancialInstitutionReviewClientSourceOfWealth:
                                    description: Review Source of Wealth
                                    type: boolean
                                  doesNonbankFinancialInstitutionScreenClientsInOfacList:
                                    description: OFAC Transaction Screening
                                    type: boolean
                                  nonbankFinancialInstitutionDescription:
                                    description: Explanation of No Answers
                                    minLength: 1
                                    maxLength: 280
                                    type: string
                                  nonMoneyServiceBusinessActivitiesList:
                                    description: >-
                                      Does the business engage in any of the
                                      following?
                                    type: array
                                    items:
                                      type: string
                                  nonMsbInternationalSales:
                                    description: >-
                                      Does the business sell its products
                                      internationally?
                                    type: boolean
                                  isProfessionalServicesProvider:
                                    description: >-
                                      Does the business act as an intermediary
                                      between their clients and the bank,
                                      performing services or arranging for
                                      services to be performed on their client's
                                      behalf?
                                    type: boolean
                                  politicalOrganizationName:
                                    description: Candidate, Campaign Name, or Committee
                                    minLength: 1
                                    maxLength: 280
                                    type: string
                                  politicalOrganizationRegion:
                                    description: >-
                                      Specific state or district the entity is
                                      affiliated with, or if national indicate
                                      national
                                    minLength: 1
                                    maxLength: 280
                                    type: string
                                  politicalOrganizationTreasurerName:
                                    description: Treasurer's name
                                    minLength: 1
                                    maxLength: 280
                                    type: string
                                  isPoliticalOrganizationRegistered:
                                    description: Federal Election Committee Registration
                                    type: boolean
                                  politicalOrganizationType:
                                    type: string
                                    enum:
                                      - federal
                                      - state
                                      - local
                                    description: Political organization type
                                  isPoliticalOrganizationFundsHeldAtOtherBank:
                                    description: Are funds being held at other banks?
                                    type: boolean
                                  cashIntensiveBusinessType:
                                    type: string
                                    enum:
                                      - convenienceLiquorGroceryStores
                                      - barsLounges
                                      - retailStores
                                      - cigaretteDistributors
                                      - nightClub
                                      - vendingMachineOperators
                                      - parkingGarage
                                      - carWash
                                      - gasStations
                                      - artDealers
                                      - wholesales
                                      - restaurant
                                      - breweryDistillery
                                      - nailSalon
                                      - laundromat
                                      - pawnShop
                                      - other
                                    description: Type of Business
                                  doesOfferCourierServices:
                                    description: >-
                                      Does the business offer courier or armored
                                      car services to ship currency on your
                                      customers' behalf?
                                    type: boolean
                                  moneyServiceBusinessActivities:
                                    description: >-
                                      What type of money services does the
                                      customer's business engage in?
                                    type: array
                                    items:
                                      type: string
                                      enum:
                                        - moneyOrders
                                        - travelersChecks
                                        - moneyTransmission
                                        - checkCashing
                                        - currencyExchange
                                        - currencyDealing
                                        - prepaidAccess
                                  isRegisteredWithFincen:
                                    description: Is the customer registered with FinCEN?
                                    type: boolean
                                  actOnBehalfOfAgent:
                                    type: string
                                    enum:
                                      - onBehalfOfAnAgent
                                      - behalfOfMyself
                                    description: >-
                                      Does the customer act on behalf of an
                                      agent, or on behalf of themself?
                                  isMoneyServiceBusinessAgentOrPrincipalRegardingAnotherMSB:
                                    description: >-
                                      Does the business act as an agent of a
                                      money service business?
                                    type: boolean
                                  hasAmlProceduresForMoneyServiceBusiness:
                                    description: >-
                                      Does the business have a documented
                                      BSA/AML program?
                                    type: boolean
                                  doesMoneyServiceBusinessConductCardActivityInternationally:
                                    description: Can the cards be used internationally?
                                    type: boolean
                                  moneyServiceBusinessIndividualTransactionLimit:
                                    description: >-
                                      Does the business/entity engage in
                                      transactions greater than $1,000 for any
                                      one person on a single day as an
                                      individual or aggregate total?
                                    type: boolean
                                  moneyServiceRegistrationState:
                                    description: "Is the business registered with the state?\_"
                                    type: boolean
                                  moneyServiceFranchiseLocations:
                                    description: "Does the business have any agents or franchise locations working under the business?\_"
                                    type: boolean
                                  atmsLeasedOrOwned:
                                    type: string
                                    enum:
                                      - leased
                                      - owned
                                    description: Lease or Own
                                  atmServiceProvider:
                                    description: ATM Service Provider
                                    minLength: 2
                                    maxLength: 40
                                    type: string
                                  doesAtmAcceptOrDealCrypto:
                                    description: ATM Accept or Deal in Cryptocurrencies
                                    type: boolean
                                  sourceOfCash:
                                    description: Source of Cash
                                    minLength: 2
                                    maxLength: 280
                                    type: string
                                  doesCustomerReplenishAtm:
                                    description: >-
                                      Is the customer responsible for
                                      replenishing the cash in the ATM(s)
                                    type: boolean
                                  realEstatePropertyLocationDescription:
                                    description: Property Address
                                    minLength: 1
                                    maxLength: 280
                                    type: string
                                  thirdPartyServicesDescription:
                                    description: >-
                                      Description of services provided by the
                                      business
                                    minLength: 1
                                    maxLength: 280
                                    type: string
                                  isForeignBusinessThirdPartyServiceProvider:
                                    description: >-
                                      Does the customer service foreign
                                      businesses?
                                    type: boolean
                                  thirdPartyPaymentProcessorsSendReceive:
                                    description: >-
                                      Does the business send and/or receive
                                      payments on behalf of its clients?
                                    type: array
                                    items:
                                      type: string
                                  thirdPartyPaymentProcessorsClientRoute:
                                    description: >-
                                      Will client payments run through the
                                      business's accounts with us?
                                    type: boolean
                                  thirdPartyPaymentProcessorsServices:
                                    description: >-
                                      What types of payment services does the
                                      business offer?
                                    type: array
                                    items:
                                      type: string
                                  thirdPartyPaymentProcessorsRestrictions:
                                    description: >-
                                      Does the business have any restrictions on
                                      the types of businesses it accepts as
                                      customers?
                                    type: boolean
                                  cryptoBusinessActivities:
                                    description: >-
                                      What type of crypto services does the
                                      customer's business engage in?
                                    type: array
                                    items:
                                      type: string
                                      enum:
                                        - purchaserOfGoodsWithCrypto
                                        - exchangerOfCrypto
                                        - cryptoAtm
                                        - cryptoMining
                                        - cryptoInvesting
                                        - purchasedAndSoldForCompanyBenefit
                                  cryptoRegisteredFincen:
                                    description: Is the customer registered with FinCEN?
                                    type: boolean
                                  cryptoCurrencyType:
                                    description: >-
                                      What type(s) of virtual currency does the
                                      business engage in?
                                    minLength: 0
                                    maxLength: 64
                                    type: string
                                  convertibleVirtualCurrencyActivities:
                                    description: >-
                                      Which CVC (convertible virtual currency)
                                      related activities does the business
                                      engage in?
                                    type: array
                                    items:
                                      type: string
                                      enum:
                                        - cvc_circulation
                                        - cvc_exchange
                                        - operate_atm_device
                                  cryptoActivities:
                                    description: >-
                                      What type of transactions does the
                                      business plan to engage in?
                                    type: array
                                    items:
                                      type: string
                                      enum:
                                        - cash_deposits
                                        - cash_withdrawals
                                        - ach_deposits
                                        - ach_withdrawals
                                        - check_deposits
                                        - check_withdrawals
                                        - incoming_wire_transfers
                                        - outgoing_wire_transfers
                                        - other
                                  cryptoInternalAccountActivity:
                                    type: string
                                    enum:
                                      - this_fi
                                      - other_institution
                                    description: >-
                                      Will business activity only occur on this
                                      account or does the business have accounts
                                      with other financial institutions?
                                  cryptoRegistrationState:
                                    type: string
                                    enum:
                                      - 'Yes'
                                      - 'No'
                                      - N/A
                                    description: >-
                                      Is the business required to be registered
                                      with the state?
                                  unionIndustry:
                                    description: Union Industry(s)
                                    minLength: 1
                                    maxLength: 280
                                    type: string
                                  unionCategory:
                                    type: string
                                    enum:
                                      - LM1
                                      - LM2
                                      - LM3
                                      - LM4
                                      - None
                                    description: Union Category
                                  unionRegion:
                                    type: string
                                    enum:
                                      - Local
                                      - State
                                      - District
                                      - National
                                      - International
                                    description: Union Region
                                  unionType:
                                    type: string
                                    enum:
                                      - Private Industry
                                      - Public Industry
                                      - Labor Union
                                      - Trade Association
                                    description: Union Type
                            required:
                              - type
                              - role
                originatingBranch:
                  description: >-
                    Which branch, physical or digital, an account was opened
                    from. The accepted code is internal to the financial
                    institution.
                  type: string
                officers:
                  maxItems: 2
                  description: >-
                    A list of officer or sales representative codes, internal to
                    the financial institution.<br />

                    The order of the provided codes may be specific for the
                    institution.

                    e.g. the first officer may be deemed to be primary person
                    responsible for the customer relationship,

                    while the second indicates who was responsible for initially
                    opening the account.
                  type: array
                  items:
                    type: string
                costCenter:
                  description: >-
                    Indicates the center for tracking costs and support. The
                    accepted code is internal to the financial institution.
                  type: string
                enhancedDueDiligence:
                  additionalProperties: false
                  type: object
                  properties:
                    purposeOfAccountBusiness:
                      type: string
                      enum:
                        - payroll
                        - general
                        - accountsReceivable
                        - accountsPayable
                        - investment
                        - trustAccount
                        - other
                      description: Purpose of Account
                    purposesOfAccountBusiness:
                      description: Purposes of Account
                      type: array
                      items:
                        type: string
                        enum:
                          - general_operating_funds
                          - payroll
                          - savings
                          - credit_card
                          - iolta_iola
                          - lottery
                          - msb_activity
                          - private_banking_account
                          - retail_pos_credit_products
                          - postage_remittance
                          - equipment_purchase_or_lease
                          - insurance_premiums
                          - pooled_investment_vehicle
                          - other
                    isDesignatingPowerOfAttorneyBusiness:
                      description: >-
                        Designating Power of Attorney<br />Is the customer
                        planning to grant power of attorney over this account to
                        another party?
                      type: boolean
                    expectedFrequencyOfDepositsBusiness:
                      type: string
                      enum:
                        - daily
                        - weekly
                        - monthly
                        - quarterly
                        - semiAnnually
                        - annually
                      description: Expected Deposit Frequency
                    expectedDepositMethodListBusiness:
                      description: Expected Deposit Methods
                      type: array
                      items:
                        type: string
                        enum:
                          - inPerson
                          - byMail
                          - bankCourier
                          - remoteCheckDeposit
                          - mobileCheckDeposit
                          - other
                    doesExpectCashActivityBusiness:
                      description: Expects Cash Activity
                      type: boolean
                    doesExpectCheckActivityBusiness:
                      description: Expects Check Activity
                      type: boolean
                    doesExpectInternalTransferActivityBusiness:
                      description: Expects Internal Transfer Activity
                      type: boolean
                    doesExpectAchOriginationActivityBusiness:
                      description: Expects ACH Origination Activity
                      type: boolean
                    doesExpectAchTransferActivityBusiness:
                      description: Expects ACH Transfer Activity
                      type: boolean
                    doesExpectMonetaryInstrumentActivityBusiness:
                      description: Expects Monetary Instruments Activity
                      type: boolean
                    doesExpectWireTransferActivityBusiness:
                      description: >-
                        Do you expect to deposit and/or withdraw money from this
                        account via wire transfers?
                      type: boolean
                    doesExpectElectronicTransferDepositsBusiness:
                      description: >-
                        Does the business expect electronic transfer (non-wire)
                        deposits?
                      type: boolean
                    doesExpectElectronicTransferWithdrawalsBusiness:
                      description: >-
                        Does the business expect electronic transfer (non-wire)
                        withdrawals?
                      type: boolean
                    expectedTotalDepositVolumeBusiness:
                      type: string
                      enum:
                        - lessThan10000
                        - 10000-50000
                        - moreThan50000
                      description: Expected average monthly deposit into this account
                    seasonalActivityDescriptionBusiness:
                      description: >-
                        Please provide any details related to seasonal business
                        activity that may impact the activity on this account
                      minLength: 1
                      maxLength: 280
                      type: string
                    hasRemoteCaptureBusiness:
                      description: >-
                        Does the customer expect they will use remote check
                        capture (includes mobile check deposit) on a regular
                        basis?
                      type: boolean
                    doesExpectToUseAccountForCorrespondentBankingPurposesBusiness:
                      description: >-
                        Will any of the business' accounts be used for
                        correspondent banking purposes?
                      type: boolean
                    doesExpectAtmWithdrawalsBusiness:
                      description: Does the business expect to make ATM withdrawals?
                      type: boolean
                    doesExpectAtmDepositsBusiness:
                      description: Does the business expect to make ATM deposits?
                      type: boolean
                    doesExpectMonetaryInstrumentPurchasesBusiness:
                      description: >-
                        Does the business expect to make monetary instrument
                        purchases?
                      type: boolean
                    sourceOfInitialDepositFundsBusiness:
                      description: >-
                        Select the source of funds for the initial deposit to
                        this new account
                      type: string
                    doesExpectToUseAccountsForPersonalBankingActivityBusiness:
                      description: >-
                        Will the business' account(s) also be used for personal
                        (i.e., non-business) banking activity?
                      type: boolean
                    sourceOfFunds:
                      type: string
                      enum:
                        - salaryEmploymentIncome
                        - savingsOtherDeposits
                        - propertySale
                        - investments
                        - inheritanceGift
                        - pension401k
                        - other
                      description: Source of Funds
                    purposeOfAccountConsumer:
                      type: string
                      enum:
                        - personalSavings
                        - vacation
                        - purchaseAHome
                        - collegeFund
                        - other
                      description: Purpose of Account
                    isDesignatingPowerOfAttorneyConsumer:
                      description: Designating Power of Attorney
                      type: boolean
                    expectedFrequencyOfDepositsConsumer:
                      type: string
                      enum:
                        - daily
                        - weekly
                        - monthly
                        - quarterly
                        - semiAnnually
                        - annually
                      description: Expected Deposit Frequency
                    expectedDepositMethodListConsumer:
                      description: Expected Deposit Methods
                      type: array
                      items:
                        type: string
                        enum:
                          - inPerson
                          - byMail
                          - bankCourier
                          - remoteCheckDeposit
                          - mobileCheckDeposit
                          - other
                    doesExpectCashActivityConsumer:
                      description: Expects Cash Activity
                      type: boolean
                    doesExpectCheckActivityConsumer:
                      description: Expects Check Activity
                      type: boolean
                    doesExpectInternalTransferActivityConsumer:
                      description: Expects Internal Transfer Activity
                      type: boolean
                    doesExpectAchOriginationActivityConsumer:
                      description: Expects ACH Origination Activity
                      type: boolean
                    doesExpectAchTransferActivityConsumer:
                      description: Expects ACH Transfer Activity
                      type: boolean
                    doesExpectWireTransferActivityConsumer:
                      description: Expects Wire Transfer Activity
                      type: boolean
                    expectedDomesticDailyTransactionVolumeConsumer:
                      type: string
                      enum:
                        - lessThan20000
                        - moreThan20000
                      description: Expected Daily Transaction Volume
                    expectedDomesticMonthlyTransactionVolumeConsumer:
                      type: string
                      enum:
                        - lessThan600000
                        - moreThan600000
                      description: Expected Monthly Transaction Volume
                    doesExpectInternationalTransactions:
                      description: >-
                        Do you expect to use this account to conduct
                        international transactions?
                      type: boolean
                    doesExpectCryptocurrencyExchangeTransactionsConsumer:
                      description: >-
                        Will this account be used to transact with any
                        cryptocurrency exchanges?
                      type: boolean
                    expectedTotalDepositVolumeConsumer:
                      type: string
                      enum:
                        - lessThan10000
                        - 10000-50000
                        - moreThan50000
                      description: Expected average monthly deposit into this account
                    hasRemoteCaptureConsumer:
                      description: >-
                        Does the customer expect they will use remote check
                        capture (includes mobile check deposit) on a regular
                        basis?
                      type: boolean
                    doesExpectElectronicTransactionsConsumer:
                      description: >-
                        Does the customer expect to send or receive electronic
                        (non-wire) transactions?
                      type: boolean
                    sourceOfInitialDepositFundsConsumer:
                      description: >-
                        Select the source of funds for the initial deposit to
                        this new account
                      type: string
                    isProxyQuestion:
                      description: Do you agree to this proxy?
                      type: boolean
                    needsCDD:
                      description: Needs CDD
                      type: boolean
                    locationsOutsideTerritory:
                      description: >-
                        Domestic location within California, Florida, Hawaii,
                        Nevada, or Texas
                      type: boolean
                    locationsInsideTerritory:
                      description: >-
                        Domestic location outside California, Florida, Hawaii,
                        Nevada, or Texas
                      type: boolean
                    otherLocation:
                      description: Close proximity to the CA/Mexico Border?
                      type: boolean
                    controlPersonForeignLocation:
                      description: Owner or Control Person have any Foreign Location?
                      type: boolean
                    wealthSource:
                      description: >-
                        Where did they acquire the assets (wealth) they
                        currently have?
                      minLength: 10
                      maxLength: 280
                      type: string
                    futureFunds:
                      description: How will they continue to generate funds in the future?
                      minLength: 10
                      maxLength: 280
                      type: string
                    foreignFunds:
                      description: Foreign Funds
                      type: boolean
                    activityAccountPurpose:
                      description: What is the purpose(s) of the account(s)?
                      minLength: 10
                      maxLength: 280
                      type: string
                    activityComment:
                      description: >-
                        COMMENTS/NARRATIVES - Please indicate any important or
                        significant information about the Client that was not
                        detailed above
                      minLength: 10
                      maxLength: 280
                      type: string
                    hempIndustryEmployment:
                      type: string
                      enum:
                        - 'yes'
                        - 'no'
                      description: >-
                        Are you employed by a business engaged in the growth,
                        processing, or handling of industrial hemp?
                    marijuanaRelatedBusinessInvolvement:
                      type: string
                      enum:
                        - 'yes'
                        - 'no'
                      description: >-
                        Do you work for or own a business that produces, sells,
                        supports, or provides services to a marijuana related
                        business?
                    isSpousePrimaryBeneficiary:
                      description: >-
                        Will your spouse be designated as the primary
                        beneficiary of this account?
                      type: boolean
                    hasRemovedSecurityFreeze:
                      description: Removed Security Freeze
                      type: boolean
                    hasAccountWithin12Months:
                      description: >-
                        Have you had a transaction account (checking account) at
                        this or another financial institution within 12 months
                        preceding this account?
                      type: boolean
                    hasAccountClosedWithin12Months:
                      description: >-
                        Have you had a transaction account (checking account)
                        closed by a financial institution without your consent
                        within 12 months preceding this account?
                      type: boolean
                    hasBeenConvictedCheckUse:
                      description: >-
                        Have you been convicted of a criminal offense because of
                        check use?
                      type: boolean
                purposesOfLoan:
                  description: List of loan purposes selected by the applicant.
                  type: array
                  items:
                    type: string
                desiredLoanAmountCents:
                  description: >-
                    The desired loan amount in cents (e.g., 1000000 represents
                    $10,000.00 USD).
                  type: number
                desiredMonthlyPaymentCents:
                  description: >-
                    The desired monthly payment in cents (e.g., 1000000
                    represents $10,000.00 USD).
                  type: number
                desiredLoanTermMonths:
                  description: The desired loan term in months.
                  type: number
                annualRevenueCentsBusiness:
                  minimum: 0
                  description: >-
                    Annual Revenue in cents (e.g., 12000000 represents
                    $120,000.00 USD).
                  type: number
                monthlyLoanAndLeasePaymentsCentsBusiness:
                  minimum: 0
                  description: >-
                    Monthly Loan and Lease Payments in cents (e.g., 1000000
                    represents $10,000.00 USD).
                  type: number
                ebitdaOrPretaxIncomeCentsBusiness:
                  minimum: 0
                  description: >-
                    EBITDA or Pretax Income in cents (e.g., 12000000 represents
                    $120,000.00 USD).
                  type: number
                metadata:
                  description: >-
                    This object can be used to attach additional key-value data
                    to the application. All the values must be strings.
                  type: object
                  properties: {}
              required:
                - product
                - accountType
                - entities
            examples:
              minimalKnown:
                summary: Minimal. Single, known adult
                description: >-
                  If the internal MANTL ID for person is already known, then the
                  information required to open an application on their behalf
                  could be this minimal.
                value:
                  product: highYieldSavings
                  accountType: singleAdult
                  entities:
                    - type: person
                      role: adult
                      id: 78fb9a1c-f321-40b9-98b3-84a5938728b3
              basicNewPerson:
                summary: Basic consumer for new person
                value:
                  product: consumerChecking
                  accountType: singleAdult
                  entities:
                    - type: person
                      role: adult
                      taxId: 123-45-6789
                      firstName: Joe
                      lastName: Smith
                      motherMaidenName: Johnson
              business:
                summary: Business Account
                value:
                  product: freeBusinessChecking
                  accountType: freeBusinessChecking
                  entities:
                    - type: person
                      role: controlProng
                      businessRole:
                        type: founder
                        ownershipPercentage: 100
                        isControlProng: true
                      firstName: Bob
                      lastName: Smith
                      emails:
                        - emailAddress: bob@bob.com
                          primary: true
                          verified: false
                      phones:
                        - phoneNumber: '0123456789'
                          primary: true
                          verified: false
                    - type: business
                      role: business
                      name: BBB Holdings
                      doingBusinessAs: Bob's Big Burger
                      businessStructure: llc
                      naicsCode: '722513'
                      dateEstablished: '1976-06-01'
                      numberOfEmployees: 650
                      detailedBusinessDescription: >-
                        A restaurant chain serving burgers and fries with
                        locations across the Midwest
                      websiteUrl: https://bobsbigburger.com
                      addresses:
                        - line1: 123 Main St.
                          line2: 14th Floor
                          city: Akron
                          state: OH
                          postalCode: '44223'
                          country: US
                          type: Primary
                          primary: true
                          verified: true
                          description: Corporation Headquarters
                        - line1: 456 PO Box
                          city: Akron
                          state: OH
                          postalCode: '44224'
                          country: US
                          type: Mailing
                          primary: false
                          verified: false
                        - line1: 789 Billing Ave
                          city: Akron
                          state: OH
                          postalCode: '44225'
                          country: US
                          type: Billing
                          primary: false
                          verified: true
                      enhancedDueDiligence:
                        cashIntensiveBusinessType: restaurant
                  officers:
                    - '40'
                  originatingBranch: '15'
                  costCenter: '132'
                  enhancedDueDiligence:
                    purposeOfAccountBusiness: payroll
                    expectedFrequencyOfDepositsBusiness: weekly
                    expectedTotalDepositVolumeBusiness: moreThan50000
                    doesExpectAtmWithdrawalsBusiness: false
                  metadata:
                    salesforceAccountID: 0015500000WO1ZiAAL
              basicConsumerLoan:
                summary: Basic consumer loan application
                value:
                  product: personalLoan
                  accountType: singleAdult
                  entities:
                    - type: person
                      role: adult
                      taxId: 123-45-6789
                      firstName: Joe
                      lastName: Smith
                      emails:
                        - emailAddress: joe.smith@example.com
                          primary: true
                          verified: false
                      phones:
                        - phoneNumber: '0123456789'
                          primary: true
                          verified: false
                  purposesOfLoan:
                    - homeImprovement
                    - debtConsolidation
                  desiredLoanAmountCents: 1000000
                  desiredLoanTermMonths: 36
              basicBusinessLoan:
                summary: Basic business loan application
                value:
                  product: businessLoan
                  accountType: business
                  entities:
                    - type: person
                      taxId: '000000000'
                      role: controlProng
                      businessRole:
                        type: founder
                        isControlProng: true
                        ownershipPercentage: 40
                      firstName: Bob
                      lastName: Smith
                      emails:
                        - emailAddress: bob@bob.com
                          primary: true
                          verified: false
                      phones:
                        - phoneNumber: '0123456789'
                          primary: true
                          verified: false
                    - type: business
                      taxId: '111111111'
                      role: business
                      name: BBB Holdings
                      doingBusinessAs: Bob's Big Burger
                      businessStructure: llc
                      naicsCode: '722513'
                      dateEstablished: '1976-06-01'
                      numberOfEmployees: 650
                      detailedBusinessDescription: >-
                        A restaurant chain serving burgers and fries with
                        locations across the Midwest
                      websiteUrl: https://bobsbigburger.com
                      addresses:
                        - line1: 123 Main St.
                          line2: 14th Floor
                          city: Akron
                          state: OH
                          postalCode: '44223'
                          country: US
                          type: Primary
                          primary: true
                          verified: true
                          description: Corporation Headquarters
                        - line1: 456 PO Box
                          city: Akron
                          state: OH
                          postalCode: '44224'
                          country: US
                          type: Mailing
                          primary: false
                          verified: false
                        - line1: 789 Billing Ave
                          city: Akron
                          state: OH
                          postalCode: '44225'
                          country: US
                          type: Billing
                          primary: false
                          verified: true
                      enhancedDueDiligence:
                        cashIntensiveBusinessType: restaurant
                  officers:
                    - '40'
                  originatingBranch: '15'
                  costCenter: '132'
                  enhancedDueDiligence:
                    purposeOfAccountBusiness: payroll
                    doesExpectAtmWithdrawalsBusiness: false
                  purposesOfLoan:
                    - debtConsolidation
                  desiredLoanAmountCents: 2000000
                  desiredLoanTermMonths: 48
                  annualRevenueCentsBusiness: 12000000
                  monthlyLoanAndLeasePaymentsCentsBusiness: 1000000
                  ebitdaOrPretaxIncomeCentsBusiness: 12000000
                  metadata:
                    salesforceAccountID: 0015500000WO1ZiAAL
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Create an Application
      tags:
        - Applications
  /rest/application/{id}/review:
    post:
      description: >-
        Submits an existing account application to the MANTL automated-review
        pipeline.


        This is an asynchronous process that can take up to several minutes,
        depending on the sources used by the financial institution for KYC/KYB
        and specifics of their core.

        The endpoint returns 202 (Accepted) and the application will receive an
        updated status of `submitted`.

        Callers interested in the result of the review should utilize the
        webhooks specific for application status updates.


        Required resource grants:

        - Submit Application for Review
      operationId: applicationReview
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '202':
          description: Indicates the request was successfully accepted for processing
        '409':
          description: >-
            A conflict error will be returned if the application is not in a
            state that allows automated reviews
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Submit an Application for Review
      tags:
        - Applications
  /rest/application/{id}/handoff:
    post:
      description: >-
        Email one or more applicants, allowing them to continue the application
        in the MANTL account opening experience.


        Required resource grants:

        - Send Application Handoff
      operationId: applicationHandoff
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                personIds:
                  minItems: 1
                  description: >-
                    If no person IDs are provided, all eligible signers on this
                    application will be sent an email with unique signed
                    URLs.<br />

                    If any provided person IDs are not eligible signers on the
                    application, the entire request will fail.
                  type: array
                  items:
                    format: uuid
                    type: string
      responses:
        '204':
          description: No response body
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Send an Application Handoff
      tags:
        - Applications
  /rest/application/{id}/applicantLink:
    post:
      description: >-
        Creates a signed URL, which can be used to redirect an applicant into
        the MANTL account opening experience.


        The returned URL is a sensitive value, as it allows authorized access to
        an existing application, and should be transmitted and stored with the
        same care as any sensitive value.<br />

        Unless you intend to immediately redirect the applicant into MANTL, we
        recommend using the application handoff functionality instead.<br />

        Signed URLs have expirations that are configurable per financial
        institution. Default: 30 days.


        Required resource grants:

        - Generate Signed URL for Application
      operationId: applicationApplicantLink
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                personId:
                  format: uuid
                  type: string
              required:
                - personId
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  selfServeUrl:
                    format: uri
                    example: >-
                      https://open.test-bank.com/magictoken/Gl4y8bQSACb-IfUv2BrZTcdrvWt5WmwebX1PrBvFk3op2tfyHAyiJDYDITfAZKqZtsHA4ZJzerEHpiQ2nIb4dw
                    type: string
                required:
                  - selfServeUrl
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: Generate Signed URL for Applicant
      tags:
        - Applications
  /rest/entity/memberships:
    get:
      description: >-
        Search a credit unions core for existing memberships associated to the
        provided tax ID.


        Only applicable to credit unions. Searching for organization
        associations is not supported at this time.


        This operation does not search MANTL records, but instead queries the
        core directly.

        As such, callers should be prepared to handle higher latency and
        scheduled core downtimes.


        Required resource grants:

        - Search Entity Memberships
      operationId: membershipsList
      parameters:
        - name: MANTL-Tax-ID
          in: header
          description: >-
            The taxpayer identification number (TIN, SSN, ITIN) of the person
            being searched.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      example: '0003169547'
                      description: >-
                        The ID or Number associated with the membership in the
                        core.
                      type: string
                    type:
                      example: adultMembership
                      description: >-
                        A slug denoting the type of membership within the credit
                        union. The potential list of membership types is
                        configurable per credit union and will therefore vary
                        between integrations.
                      type: string
                  required:
                    - id
                    - type
        '502':
          description: MANTL servers received an invalid response from the core.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: >-
            Core is currently unavailable. Usually seen during scheduled
            maintenance. Retry the request after waiting.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: List the memberships for a person
      tags:
        - Entities
  /rest/entity/{entity_type}/{id_uuid}/accounts:
    get:
      description: >-
        The accounts associated with the provided entity.


        This operation does not query the core directly, but instead searches
        MANTL records.


        Required resource grants:

        - getAccounts
      operationId: listAccounts
      parameters:
        - name: after
          required: false
          in: query
          schema:
            description: Cursor for pagination
            type: string
          description: Cursor for pagination
        - name: limit
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 100
            default: 100
            description: The number of accounts to return
            type: integer
          description: The number of accounts to return
        - name: id_uuid
          required: true
          in: path
          schema:
            format: uuid
            description: The unique identifier of the entity
            type: string
          description: The unique identifier of the entity
        - name: entity_type
          required: true
          in: path
          schema:
            type: string
            enum:
              - person
              - business
              - trust
              - estate
              - municipality
            description: The type of entity
          description: The type of entity
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAccountsResponse'
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: List the accounts for an entity
      tags:
        - Entities
  /rest/ping:
    get:
      description: >-
        Can be used to verify authentication of an API key.<br />

        Intended for development purposes. If a health check is desired, prefer
        to use https://status.mantl.com.


        Required resource grants: None.
      operationId: ping
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  pong:
                    type: boolean
                required:
                  - pong
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: ''
      tags:
        - Utility
  /rest/resources:
    get:
      description: |-
        Returns the resources granted to the API Key used to make the request.

        Required resource grants: None.
      operationId: resources
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    title:
                      type: string
                    summary:
                      type: string
                    details:
                      type: string
                  required:
                    - id
                    - title
                    - summary
        5XX:
          description: Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        4XX:
          description: Client Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKey: []
      summary: ''
      tags:
        - Utility
info:
  title: MANTL API
  description: >-
    The Mantl API allows your application to apply for new banking products at
    the client bank on behalf of end users.


    To orient yourself, please view the API Knowledgebase for high-level
    overviews and example flows of common use cases.
  version: '2024-04-08'
  contact:
    name: Support Engineering
    email: support@mantl.com
tags:
  - name: Applications
    description: Applications represent an entity's application for a specific product
  - name: Entities
    description: >-
      An entity is a person, business, organization, trust, etc. which can be
      associated with an application or account
  - name: Accounts
    description: Account management
  - name: Servicing
    description: Account servicing for ongoing management and maintenance activities
  - name: Utility
    description: Miscellaneous operations unrelated to account opening workflows
servers:
  - url: https://api.mantl.com
    description: Production Environment
externalDocs:
  description: View API Knowledgebase
  url: >-
    https://mantl.zendesk.com/hc/en-us/articles/24993702288283-Account-Opening-API
components:
  parameters:
    idempotencyKey:
      in: header
      name: Idempotency-Key
      required: false
      schema:
        type: string
      description: Unique identifier for ensuring idempotent behavior
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
  schemas:
    Account:
      $id: Account
      type: object
      properties:
        id:
          format: uuid
          description: The internal identifier of the Account in MANTL.
          type: string
        status:
          type: string
          enum:
            - active
            - inactive
            - closed
            - unknown
          example: active
          description: >-
            The specifics on the status represents will vary between cores and
            financial institutions.
        accountNumber:
          example: '964784779667'
          description: >-
            Primary Account Number (PAN) used to uniquely identify an account to
            a specific financial institution.


            Typically 8-12 digits, however, varies by institution and product
            type. Consumers should be prepared to handle alpha-numeric values of
            any length up to 34 characters (ISO 13616).
          type: string
        routingNumber:
          example: '026009593'
          description: >-
            ABA routing transit number. A nine-digit code specific to the
            financial institution and branch where the account is held.
          type: string
        currentBalanceAmount:
          example: 150000
          description: >-
            The total balance in the account, including any pending
            transactions.

            Provided as a whole integer in the minor unit of the currency e.g.
            15000 USD is equivalent to US$150.00.
          type: integer
        availableBalanceAmount:
          example: 150000
          description: >-
            The amount currently available for withdrawal.

            Provided as a whole integer in the minor unit of the currency e.g.
            15000 USD is equivalent to US$150.00.
          type: integer
        currencyCode:
          example: USD
          description: >-
            ISO 4217 three-character alpha currency code representing the
            currency of the account.
          type: string
        majorCode:
          example: AA
          description: >-
            A classification code used by financial institutions to identify the
            primary type or category of an account.

            It groups accounts based on their general purpose or nature, such as
            whether they are personal, business, savings, or checking accounts.
          type: string
        minorCode:
          example: 123ABC
          description: >-
            Provides a more granular classification within the major code
            category.

            It identifies specific subtypes or variations of the account. This
            allows for detailed tracking and differentiation of account
            features.
          type: string
        lastCoreSync:
          format: date-time
          description: Timestamp of the last synchronization with the core system
          type: string
        product:
          description: >-
            The product identifier of the account, as configured in MANTL.

            Will not be returned if the major and minor codes are not configured
            in MANTL.
          type: string
        productType:
          type: string
          enum:
            - savings
            - checking
            - certificate
            - moneyMarket
            - loan
            - safeDepositBox
          example: savings
          description: >-
            The MANTL product type of the account.

            Will not be returned if the major and minor codes are not configured
            in MANTL.
      required:
        - id
        - status
        - accountNumber
        - routingNumber
        - currentBalanceAmount
        - availableBalanceAmount
        - currencyCode
        - majorCode
        - minorCode
    AccountServiceDetail:
      $id: AccountServiceDetail
      type: object
      properties:
        id:
          format: uuid
          description: >-
            The internal identifier of the indication of interest (service
            request) in MANTL.
          type: string
        status:
          type: string
          enum:
            - awaitingRetry
            - complete
            - failed
            - pending
            - processing
          example: pending
          description: >-
            Processing state of the service request on the financial institution
            core.
        serviceId:
          description: Client-configured identifier for the requested service or product.
          type: string
        type:
          type: string
          enum:
            - beneficiary
            - contingentBeneficiary
            - beneficiariesWithSignatures
            - atmCard
            - debitCard
            - creditCard
            - checks
            - custom
            - achOrigination
            - billPay
            - courierServiceCash
            - courierServiceNoCash
            - directDeposit
            - eStatements
            - facsimileStamp
            - fundsTransferAgreement
            - loans
            - merchantServices
            - onlineBanking
            - overdraftProtection
            - specSheet
            - treasuryManagement
            - twoSignaturesRequired
            - wireOrigination
            - updateInformation
            - rolloverFunds
            - transferFunds
            - linkedCard
          example: debitCard
          description: The category of service associated with this request.
        accountId:
          format: uuid
          description: The account this service request is associated with in MANTL.
          type: string
        applicationId:
          format: uuid
          description: When present, the application from which this request originated.
          type: string
        personId:
          format: uuid
          description: Related person entity, when applicable.
          type: string
        organizationId:
          format: uuid
          description: Related organization entity, when applicable.
          type: string
        metadata:
          description: >-
            Caller-defined key-value strings. Populated when the service request
            is fulfilled via the Public API fulfill endpoint.
          type: object
          patternProperties:
            ^(.*)$:
              type: string
      required:
        - id
        - status
        - serviceId
        - type
        - accountId
        - metadata
    AccountServiceFulfillRequest:
      $id: AccountServiceFulfillRequest
      type: object
      properties:
        metadata:
          description: >-
            Key-value data to store with this service request. All values must
            be strings.
          type: object
          patternProperties:
            ^(.*)$:
              type: string
    Error:
      $id: Error
      type: object
      properties:
        timestamp:
          format: date-time
          type: string
        requestId:
          format: uuid
          description: >-
            Unique identifier of the request. Please include this value when
            opening a support ticket.
          type: string
        error:
          type: object
          properties:
            code:
              example: 401
              type: integer
            message:
              example: Authorization header required
              type: string
          required:
            - code
            - message
      required:
        - timestamp
        - requestId
        - error
    AchTransfer:
      $id: AchTransfer
      type: object
      properties:
        id:
          format: uuid
          description: The internal identifier of the ACH Transfer in MANTL.
          type: string
        status:
          example: pending
          description: >
            Describes the internal state of the ACH Transfer Request in MANTL.


            Possible values:

            - __pending__: The Transfer Request is queued for batch processing.
                  Financial institutions configured their batching intervals separately; time of day, weekends, holidays, etc.
            - __success__: The Transfer Request was successfully batched for the
            financial institution.
                  A notable timing consideration; an individual Transfer Request with a status of "success" does not necessarily mean the downstream clearing house has processed the related ACH file yet.
            - __failure__: The record was unable to successfully process during
            batching the operation.
                  Should not be considered an end-state. Both automated and manual processes could allow the Transfer Request to successfully process in the future.
            - __canceled__: The Transfer Request was canceled before it was
            batched into an ACH file or transmitted out of the MANTL system.
          type: string
        fundingMethod:
          description: >-
            A configuration value denoting how the requested ACH transfer is to
            be processed.
          example: directManualBankAccount
          type: string
        amountCents:
          description: Amount in cents to transfer (e.g., 2000 for $20.00)
          example: 2000
          type: integer
        fromEntity:
          type: object
          properties:
            firstName:
              example: John
              type: string
            lastName:
              example: Smith
              type: string
          required:
            - firstName
            - lastName
        fromAccount:
          type: object
          properties:
            accountType:
              type: string
              enum:
                - checking
                - savings
                - moneyMarket
            accountNumber:
              example: '9647847796645787'
              type: string
            routingNumber:
              example: '026009593'
              type: string
          required:
            - accountType
            - accountNumber
            - routingNumber
        toAccount:
          type: object
          properties:
            accountType:
              type: string
              enum:
                - checking
                - savings
                - moneyMarket
            accountNumber:
              example: '9647847796645787'
              type: string
            routingNumber:
              example: '026009593'
              type: string
          required:
            - accountType
            - accountNumber
            - routingNumber
      required:
        - id
        - status
        - fundingMethod
        - amountCents
        - fromEntity
        - fromAccount
        - toAccount
    Application:
      $id: Application
      type: object
      properties:
        id:
          format: uuid
          description: The internal identifier of the application in MANTL.
          type: string
        consoleUrl:
          format: uri
          example: >-
            https://console.mantl.com/console/customers/applications/Zm9vOmJhcg==
          description: >-
            A deep link for bankers to access the application.


            This URL can only be used by employees of the financial institution.

            To provide access to an applicant use the handoff or signed URL
            routes.
          type: string
        status:
          example: incomplete
          description: >
            Describes the internal state of the application in MANTL.


            The statuses are designed to be presented to bankers processing
            applications, however, should be considered too fine-grained for
            applicants.


            Possible values:

            - __incomplete__: The initial state of applications when created,
            denotes the application has not or cannot be submitted due to
            missing information.

            - __canceled__: The application is at a canceled end-state either by
            a banker's manual actions or sufficient time has passed since the
            last activity.

            - __submitted__: The application is locked while MANTL runs
            automated decisioning.
                  An application will usually sit in this state for a short period of time, however, a single application may return to a submitted status multiple times before arriving at an end-state.
            - __actionRequired__: Post-submission the application requires
            additional information from the applicant.
                  This is usually triggered by a step-up for enhanced due diligence or document verification from KYC.
            - __manualReviewRequired__: Post-submission the application requires
            a manual review from a banker.

            - __rejected__: The application was rejected by either automated or
            manual decisioning.
                  Generally regarded as an end-state, however, financial institutions may choose to cancel rejected applications per their internal procedures.
            - __approved__: The application was approved by either automated or
            manual decisioning.
                  If the financial institution does not use automated booking to the core with MANTL, this status can be treated as an end-state.
                  However, in most cases this status will be short-lived on an application and will change once automated booking initiates.
            - __booked__: Post-approval, the new account and/or account changes
            have been written to the core.
                  The normal end-state for successful applications.
            - __failed__: Post-approval, MANTL was unable to update records on
            the core for a technical reason.

            - __enqueued__, __processing__, or __awaitingRetry__: Post-approval,
            the MANTL system is working on updating the records on the core.
                  Given normally scheduled core downtimes and failure retry functionality; an application may sit in these limbo states for seconds, hours, or days.
          type: string
        product:
          example: highYieldSavings
          type: string
        accountType:
          example: singleAdult
          type: string
        entities:
          type: array
          items:
            type: object
            properties:
              type:
                example: person
                type: string
              role:
                example: adult
                type: string
              id:
                format: uuid
                description: MANTL's internal ID for the entity.
                type: string
            required:
              - type
              - role
              - id
        metadata:
          description: Additional key-value data added to the application.
          type: object
          properties: {}
      required:
        - id
        - consoleUrl
        - status
        - product
        - accountType
        - entities
        - metadata
    ListAccountsResponse:
      $id: ListAccountsResponse
      type: object
      properties:
        page:
          type: object
          properties:
            hasMore:
              type: boolean
            next:
              type: string
          required:
            - hasMore
        records:
          type: array
          items:
            type: object
            allOf:
              - $id: Account
                type: object
                properties:
                  id:
                    format: uuid
                    description: The internal identifier of the Account in MANTL.
                    type: string
                  status:
                    type: string
                    enum:
                      - active
                      - inactive
                      - closed
                      - unknown
                    example: active
                    description: >-
                      The specifics on the status represents will vary between
                      cores and financial institutions.
                  accountNumber:
                    example: '964784779667'
                    description: >-
                      Primary Account Number (PAN) used to uniquely identify an
                      account to a specific financial institution.


                      Typically 8-12 digits, however, varies by institution and
                      product type. Consumers should be prepared to handle
                      alpha-numeric values of any length up to 34 characters
                      (ISO 13616).
                    type: string
                  routingNumber:
                    example: '026009593'
                    description: >-
                      ABA routing transit number. A nine-digit code specific to
                      the financial institution and branch where the account is
                      held.
                    type: string
                  currentBalanceAmount:
                    example: 150000
                    description: >-
                      The total balance in the account, including any pending
                      transactions.

                      Provided as a whole integer in the minor unit of the
                      currency e.g. 15000 USD is equivalent to US$150.00.
                    type: integer
                  availableBalanceAmount:
                    example: 150000
                    description: >-
                      The amount currently available for withdrawal.

                      Provided as a whole integer in the minor unit of the
                      currency e.g. 15000 USD is equivalent to US$150.00.
                    type: integer
                  currencyCode:
                    example: USD
                    description: >-
                      ISO 4217 three-character alpha currency code representing
                      the currency of the account.
                    type: string
                  majorCode:
                    example: AA
                    description: >-
                      A classification code used by financial institutions to
                      identify the primary type or category of an account.

                      It groups accounts based on their general purpose or
                      nature, such as whether they are personal, business,
                      savings, or checking accounts.
                    type: string
                  minorCode:
                    example: 123ABC
                    description: >-
                      Provides a more granular classification within the major
                      code category.

                      It identifies specific subtypes or variations of the
                      account. This allows for detailed tracking and
                      differentiation of account features.
                    type: string
                  lastCoreSync:
                    format: date-time
                    description: Timestamp of the last synchronization with the core system
                    type: string
                  product:
                    description: >-
                      The product identifier of the account, as configured in
                      MANTL.

                      Will not be returned if the major and minor codes are not
                      configured in MANTL.
                    type: string
                  productType:
                    type: string
                    enum:
                      - savings
                      - checking
                      - certificate
                      - moneyMarket
                      - loan
                      - safeDepositBox
                    example: savings
                    description: >-
                      The MANTL product type of the account.

                      Will not be returned if the major and minor codes are not
                      configured in MANTL.
                required:
                  - id
                  - status
                  - accountNumber
                  - routingNumber
                  - currentBalanceAmount
                  - availableBalanceAmount
                  - currencyCode
                  - majorCode
                  - minorCode
              - type: object
                properties:
                  relationshipType:
                    type: string
                required:
                  - relationshipType
      required:
        - page
        - records
    WebhookEnvelope:
      $id: WebhookEnvelope
      type: object
      properties:
        messageId:
          format: uuid
          description: >-
            A unique ID tying the original event to the consumer. Retry attempts
            for failed webhook requests will maintain the same message ID across
            attempts.
          type: string
        consumerId:
          format: uuid
          description: The MANTL ID of the intended consumer of the webhook event.
          type: string
        timestamp:
          format: date-time
          description: The date-time the original event occurred.
          type: string
        eventType:
          description: >-
            Use the received event type to determine what processing your
            application needs to perform. The `data` object corresponding to
            each event type varies.
          type: string
        data:
          description: Dynamic data relevant for the specific event type.
          type: object
          properties: {}
      required:
        - messageId
        - consumerId
        - timestamp
        - eventType
        - data
webhooks:
  application.booked:
    post:
      summary: Application Booked in Core
      description: >-
        Post-approval, the new account and/or account changes have been written
        to the core. The normal end-state for successful applications.
      tags:
        - Applications
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WebhookEnvelope'
                - type: object
                  properties:
                    eventType:
                      const: application.booked
                      type: string
                    data:
                      type: object
                      properties:
                        applicationId:
                          format: uuid
                          type: string
                      required:
                        - applicationId
                  required:
                    - eventType
                    - data
      responses:
        2XX:
          description: >-
            Return a 200-299 status to indicate that the data was received
            successfully
  application.rejected:
    post:
      summary: Application Rejected
      description: >-
        The application was rejected by either automated or manual decisioning.
        Generally regarded as an end-state, however, financial institutions may
        choose to cancel rejected applications per their internal procedures.
      tags:
        - Applications
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WebhookEnvelope'
                - type: object
                  properties:
                    eventType:
                      const: application.rejected
                      type: string
                    data:
                      type: object
                      properties:
                        applicationId:
                          format: uuid
                          type: string
                      required:
                        - applicationId
                  required:
                    - eventType
                    - data
      responses:
        2XX:
          description: >-
            Return a 200-299 status to indicate that the data was received
            successfully
  application.manualReviewRequired:
    post:
      summary: Application Requires Manual Review
      description: Post-submission the application requires a manual review from a banker.
      tags:
        - Applications
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WebhookEnvelope'
                - type: object
                  properties:
                    eventType:
                      const: application.manualReviewRequired
                      type: string
                    data:
                      type: object
                      properties:
                        applicationId:
                          format: uuid
                          type: string
                      required:
                        - applicationId
                  required:
                    - eventType
                    - data
      responses:
        2XX:
          description: >-
            Return a 200-299 status to indicate that the data was received
            successfully
  application.applicantActionRequired:
    post:
      summary: Application Requires Additional Information
      description: >-
        Post-submission the application requires additional information from the
        applicant. This is usually triggered by a step-up for enhanced due
        diligence or document verification from KYC.
      tags:
        - Applications
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WebhookEnvelope'
                - type: object
                  properties:
                    eventType:
                      const: application.applicantActionRequired
                      type: string
                    data:
                      type: object
                      properties:
                        applicationId:
                          format: uuid
                          type: string
                      required:
                        - applicationId
                  required:
                    - eventType
                    - data
      responses:
        2XX:
          description: >-
            Return a 200-299 status to indicate that the data was received
            successfully
  application.canceled:
    post:
      summary: Application Canceled
      description: >-
        The application has been canceled. This is an end-state event that
        occurs when an application is canceled by the applicant, an
        administrative action, or due to expiration.
      tags:
        - Applications
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WebhookEnvelope'
                - type: object
                  properties:
                    eventType:
                      const: application.canceled
                      type: string
                    data:
                      type: object
                      properties:
                        applicationId:
                          format: uuid
                          type: string
                        cancellationReason:
                          type: string
                          enum:
                            - canceledByApplicant
                            - canceledByConsoleUser
                            - canceledByMantlEmployee
                            - legacyCanceled
                            - offerExpired
                            - outOfArea
                            - expiredNotCompleted
                            - expiredNotSubmitted
                      required:
                        - applicationId
                        - cancellationReason
                  required:
                    - eventType
                    - data
      responses:
        2XX:
          description: >-
            Return a 200-299 status to indicate that the data was received
            successfully
  service.requested:
    post:
      summary: Service Requested
      description: >-
        A service has been requested for an account. This event fires after an
        indication of interest is created and the associated account has booked
        to the core.
      tags:
        - Servicing
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WebhookEnvelope'
                - type: object
                  properties:
                    eventType:
                      const: service.requested
                      type: string
                    data:
                      type: object
                      properties:
                        indicationOfInterestId:
                          format: uuid
                          description: The unique identifier for this service request.
                          type: string
                        type:
                          type: string
                          enum:
                            - beneficiary
                            - contingentBeneficiary
                            - beneficiariesWithSignatures
                            - atmCard
                            - debitCard
                            - creditCard
                            - checks
                            - custom
                            - achOrigination
                            - billPay
                            - courierServiceCash
                            - courierServiceNoCash
                            - directDeposit
                            - eStatements
                            - facsimileStamp
                            - fundsTransferAgreement
                            - loans
                            - merchantServices
                            - onlineBanking
                            - overdraftProtection
                            - specSheet
                            - treasuryManagement
                            - twoSignaturesRequired
                            - wireOrigination
                            - updateInformation
                            - rolloverFunds
                            - transferFunds
                            - linkedCard
                          description: >-
                            The category of service requested, such as
                            debitCard, checks, or beneficiary. Corresponds to
                            the service types configured for the institution.
                        serviceId:
                          description: >-
                            The identifier of the specific service offering.
                            This value is set up in the institution's service
                            configuration.
                          type: string
                        accountId:
                          format: uuid
                          description: >-
                            The unique identifier of the account for which the
                            service was requested.
                          type: string
                      required:
                        - indicationOfInterestId
                        - type
                        - serviceId
                        - accountId
                  required:
                    - eventType
                    - data
      responses:
        2XX:
          description: >-
            Return a 200-299 status to indicate that the data was received
            successfully
  service.fulfilled:
    post:
      summary: Service Fulfilled
      description: >-
        A service request has been fulfilled. This event fires when an
        indication of interest transitions to the complete status, indicating
        the service has been successfully executed for the associated account.
      tags:
        - Servicing
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WebhookEnvelope'
                - type: object
                  properties:
                    eventType:
                      const: service.fulfilled
                      type: string
                    data:
                      type: object
                      properties:
                        indicationOfInterestId:
                          format: uuid
                          description: >-
                            The unique identifier of the service request that
                            was fulfilled.
                          type: string
                        type:
                          type: string
                          enum:
                            - beneficiary
                            - contingentBeneficiary
                            - beneficiariesWithSignatures
                            - atmCard
                            - debitCard
                            - creditCard
                            - checks
                            - custom
                            - achOrigination
                            - billPay
                            - courierServiceCash
                            - courierServiceNoCash
                            - directDeposit
                            - eStatements
                            - facsimileStamp
                            - fundsTransferAgreement
                            - loans
                            - merchantServices
                            - onlineBanking
                            - overdraftProtection
                            - specSheet
                            - treasuryManagement
                            - twoSignaturesRequired
                            - wireOrigination
                            - updateInformation
                            - rolloverFunds
                            - transferFunds
                            - linkedCard
                          description: >-
                            The category of service fullfiled, such as
                            debitCard, checks, or beneficiary. Corresponds to
                            the service types configured for the institution.
                        serviceId:
                          description: >-
                            The identifier of the specific service offering.
                            This value is set up in the institution's service
                            configuration.
                          type: string
                        accountId:
                          format: uuid
                          description: >-
                            The unique identifier of the account for which the
                            service was requested.
                          type: string
                      required:
                        - indicationOfInterestId
                        - type
                        - serviceId
                        - accountId
                  required:
                    - eventType
                    - data
      responses:
        2XX:
          description: >-
            Return a 200-299 status to indicate that the data was received
            successfully
  test:
    post:
      summary: Manual Test Event
      description: >-
        The Test Event is a manually triggered webhook event designed for
        testing and validating your webhook integration.

        This event can be initiated directly from the Console UI, allowing you
        to simulate webhook deliveries without waiting for actual events to
        occur.

        Use this event to ensure your system correctly receives, parses, and
        processes webhook data before relying on live events.
      tags:
        - Utility
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WebhookEnvelope'
                - type: object
                  properties:
                    eventType:
                      const: test
                      type: string
                    data:
                      type: object
                      properties:
                        message:
                          const: Test event.
                          type: string
                      required:
                        - message
                  required:
                    - eventType
                    - data
      responses:
        2XX:
          description: >-
            Return a 200-299 status to indicate that the data was received
            successfully
