openapi: 3.0.3
info:
  title: Atto Developer Documentation
  version: all
  license:
    name: All Rights Reserved © The IDCO. Ltd
    url: https://www.atto.co/policies
  termsOfService: https://www.atto.co/policies/terms-of-use
  contact:
    name: API Support
    email: support@atto.co
    url: https://www.atto.co/about/contact
security:
  - {}
  - {}
paths:
  /v1/oauth2/token:
    post:
      tags:
        - Get Token
      summary: >-
        Request a token for the provided scope and grant type (only
        client_credentials supported)
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                grant_type:
                  type: string
                client_id:
                  type: string
                client_secret:
                  type: string
                scope:
                  type: string
            encoding:
              grant_type:
                style: form
              client_id:
                style: form
              client_secret:
                style: form
              scope:
                style: form
      responses:
        '200':
          description: Returns a token.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Authorization.Service.Models.Response.TokenResult
        '400':
          description: Invalid or missing parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error'
        '401':
          description: Client is not authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error'
        '500':
          description: Unable to get token due to an unexpected failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error'
  /v1/connect/validation-token:
    get:
      tags:
        - Validation Token
      summary: Request a validation token for DID Connect.
      responses:
        '200':
          description: Returns a DID Connect validation token.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Authorization.Service.Models.Response.ValidationTokenResult
        '401':
          description: Client is not authorized.
        '500':
          description: Unable to get token due to an unexpected failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error'
  /consents/v1:
    get:
      tags:
        - Get Consents
      summary: Retrieve list of consents.
      parameters:
        - name: consentStatus
          in: query
          description: Optional filter to get consents with a particular status.
          schema:
            type: string
        - name: configurationName
          in: query
          description: >-
            Optional filter to get consents only for a particular configuration
            name for the client.
          schema:
            type: string
        - name: providerId
          in: query
          description: Optional filter to get consents only for a particular provider id.
          schema:
            type: integer
            format: int32
        - name: customerReference
          in: query
          description: >-
            Optional filter to get consents that match the customer reference
            exactly.
          schema:
            type: string
        - name: userId
          in: query
          description: Optional filter to get consents associated with userId
          schema:
            type: string
        - name: from
          in: query
          description: >-
            Optional filter to get consents which have been created/updated
            after the from date.
          schema:
            type: string
            format: date-time
        - name: to
          in: query
          description: >-
            Optional filter to get consents which have been created/updated
            before the to date.
          schema:
            type: string
            format: date-time
        - name: offset
          in: query
          description: Number of consents to skip.
          schema:
            type: integer
            format: int32
            default: 0
        - name: limit
          in: query
          description: Maximum number of consents in the response.
          schema:
            type: integer
            format: int32
            default: 0
      responses:
        '200':
          description: Returns the list of consents.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DirectID.Models.Consent.Consent'
        '400':
          description: Invalid input parameters were provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
        '401':
          description: Client is not authorized.
        '500':
          description: Unable to get consents due to an unexpected failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
      deprecated: true
      security:
        - Bearer:
            - api:consent
  /consents/v2:
    get:
      tags:
        - Get Consents
      summary: Retrieve list of consents.
      parameters:
        - name: configurationName
          in: query
          description: >-
            Optional filter to get consents only for a particular configuration
            name for the client.
          schema:
            type: string
        - name: consentStatus
          in: query
          description: Optional filter to get consents with a particular status.
          schema:
            $ref: '#/components/schemas/DirectID.Consent.Service.Models.ConsentStatus'
        - name: providerId
          in: query
          description: Optional filter to get consents only for a particular provider id.
          schema:
            type: integer
            format: int32
        - name: customerReference
          in: query
          description: >-
            Optional filter to get consents that match the customer reference
            exactly.
          schema:
            type: string
        - name: userId
          in: query
          description: Optional filter to get consents associated with userId
          schema:
            type: string
        - name: dataSourceType
          in: query
          description: >-
            Optional filter to get consents of a particular type (OpenBanking
            vs. CreditInformation).
          schema:
            $ref: >-
              #/components/schemas/DirectID.Consent.Service.Models.DataSourceType
        - name: from
          in: query
          description: >-
            Optional filter to get consents which have been created/updated
            after the from date.
          schema:
            type: string
            format: date-time
        - name: to
          in: query
          description: >-
            Optional filter to get consents which have been created/updated
            before the to date.
          schema:
            type: string
            format: date-time
        - name: offset
          in: query
          description: Number of consents to skip.
          schema:
            type: integer
            format: int32
            default: 0
        - name: limit
          in: query
          description: Maximum number of consents in the response.
          schema:
            type: integer
            format: int32
            default: 0
      responses:
        '200':
          description: Returns the list of consents.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DirectID.Models.Consent.Consent'
        '400':
          description: Invalid input parameters were provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
        '401':
          description: Client is not authorized.
        '500':
          description: Unable to get consents due to an unexpected failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
      security:
        - Bearer:
            - api:consent
  /consents/v1/{consentId}:
    get:
      tags:
        - Get Consents
      summary: Retrieve a consent by consent ID.
      parameters:
        - name: consentId
          in: path
          description: >-
            The consent ID to fetch the consent details for. This should be a
            uuid.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the consent details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Consent.Consent'
        '400':
          description: Invalid consent ID was provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
        '401':
          description: Client is not authorized.
        '403':
          description: Authorized client does not have access to the provided consent ID.
        '404':
          description: Consent ID was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
        '500':
          description: Unable to get consent details due to an unexpected failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
      security:
        - Bearer:
            - api:consent
  /consents/v1/{consentId}/revoke:
    post:
      tags:
        - Revoke Consent
      summary: Revoke a consent.
      parameters:
        - name: consentId
          in: path
          description: The consent ID for the consent to revoke.
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Revoked the consent.
        '400':
          description: Consent isn't active.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
        '401':
          description: Client is not authorized.
        '403':
          description: Authorized client does not have access to the provided consent ID.
        '404':
          description: Consent ID was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
        '500':
          description: Unable to revoke consent due to an unexpected failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error1'
      security:
        - Bearer:
            - api:consent
  /insights-engine/v1/affordability:
    post:
      tags:
        - Affordability Engine
      summary: Processes affordability for the transactions supplied.
      description: Maximum of 12 months returned
      parameters:
        - name: useLegacyCategorisation
          in: query
          description: Flag whether to use the latest or legacy categorisation service
          schema:
            type: boolean
            default: false
        - name: confidenceFloor
          in: query
          description: >-
            Value from 0.0 to 1.0 which will return transactions as
            uncategorised if the category confidence is below this value
          schema:
            type: number
            format: double
            default: 0
      requestBody:
        description: The BYOD affordability processing request
        content:
          application/json-patch+json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.Affordability.Request.AffordabilityEngineRequest
          application/json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.Affordability.Request.AffordabilityEngineRequest
          text/json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.Affordability.Request.AffordabilityEngineRequest
          application/*+json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.Affordability.Request.AffordabilityEngineRequest
      responses:
        '200':
          description: Affordability Calculations for the supplied transactions
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Data.API.Models.Affordability.Response.AffordabilityEngineResponse
        '400':
          description: Invalid transactions provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The application is not authorised to access affordability
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /affordability/v1/consents/{consentId}:
    get:
      tags:
        - Affordability
      summary: Get affordability for the accounts shared for a consent.
      description: Maximum of 12 months returned
      parameters:
        - name: consentId
          in: path
          description: The consent ID to fetch the affordability results for
          required: true
          schema:
            type: string
        - name: includeFlexibleCosts
          in: query
          description: Includes the flags used to calculate the confidence score
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: Affordability Calculations for the supplied transactions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/DirectID.Data.API.Models.Affordability.Response.AffordabilityResponse
        '400':
          description: Invalid transactions provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The application is not authorised to access affordability
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /account-verification/v3/consents/{consentId}:
    post:
      tags:
        - Bank Account Verification
      summary: Trigger a bank account validation.
      description: >-
        Returns a result with an accompanying error code if validation is
        inconclusive.
      parameters:
        - name: consentId
          in: path
          description: The consent ID to fetch the account information for
          required: true
          schema:
            type: string
      requestBody:
        description: Bank account details
        content:
          application/json-patch+json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.AccountVerification.Request.AccountVerificationRequest
          application/json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.AccountVerification.Request.AccountVerificationRequest
          text/json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.AccountVerification.Request.AccountVerificationRequest
          application/*+json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.AccountVerification.Request.AccountVerificationRequest
      responses:
        '200':
          description: >-
            Account verification result.

            The result can be one of the following four statuses:

            * Pass - Account identifiers were found and name(s) were matched.

            * Fail - Account identifiers were found and name(s) were not
            matched.

            * Partial - Account identifiers were not found and name(s) were
            matched.

            * NA - Inconclusive result, please see the reason code for details.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Data.API.Models.AccountVerification.Response.AccountVerificationResponse
        '400':
          description: The submitted request was invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The consent or account access has been revoked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '502':
          description: >-
            The provider is temporarily unavailable or rate limit has been
            reached, try again in a few minutes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /data/v1/consents/{consentId}/accounts:
    get:
      tags:
        - Bank Data
      summary: Get all accounts
      description: |-
        Returns a list containing the accounts shared for a consent.


        Does a fresh pull from the external provider.
      parameters:
        - name: consentId
          in: path
          description: The consent ID to fetch the account information for
          required: true
          schema:
            type: string
        - name: endUser-Ip
          in: header
          description: >-
            The IP address of the end user. If provided will enable unlimited
            data refreshes for open banking providers that support this feature.
          schema:
            type: string
      responses:
        '200':
          description: Account info for consent
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Data.API.Models.Provider.ProviderAccounts
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The consent or account access has been revoked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '502':
          description: >-
            The provider is temporarily unavailable or rate limit has been
            reached, try again in a few minutes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      deprecated: true
      security:
        - Bearer:
            - api:data
  /data/v2/consents/{consentId}/accounts:
    get:
      tags:
        - Bank Data
      summary: Get all accounts
      description: |-
        Returns a list containing the accounts shared for a consent.


        Does a fresh pull from the external provider.
      parameters:
        - name: consentId
          in: path
          description: The consent ID to fetch the account information for
          required: true
          schema:
            type: string
        - name: endUser-Ip
          in: header
          description: >-
            The IP address of the end user. If provided will enable unlimited
            data refreshes for open banking providers that support this feature.
          schema:
            type: string
      responses:
        '200':
          description: Account info for consent
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Data.API.Models.Account.AccountsResponse
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The consent or account access has been revoked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '502':
          description: >-
            The provider is temporarily unavailable or rate limit has been
            reached, try again in a few minutes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /data/v2/consents/{consentId}/accounts/{accountId}:
    get:
      tags:
        - Bank Data
      summary: Get single account
      description: |-
        Returns a specific account shared for a consent.


        Does a fresh pull from the external provider.
      parameters:
        - name: consentId
          in: path
          description: The consent ID for which we want to fetch account information
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          description: The account ID for which we want to fetch account information
          required: true
          schema:
            type: string
        - name: endUser-Ip
          in: header
          description: >-
            The IP address of the end user. If provided will enable unlimited
            data refreshes for open banking providers that support this feature.
          schema:
            type: string
      responses:
        '200':
          description: Account info for consent
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Data.API.Models.Account.AccountResponse
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The consent or account access has been revoked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '502':
          description: >-
            The provider is temporarily unavailable or rate limit has been
            reached, try again in a few minutes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /data/v2/consents/{consentId}/accounts/{accountId}/balances:
    get:
      tags:
        - Bank Data
      summary: Get balances for account
      description: |-
        Returns the balance information for a specific account.


        Does a fresh pull from the external provider.
      parameters:
        - name: consentId
          in: path
          description: The consent ID for which we want to fetch balance information
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          description: The account ID for which we want to fetch balance information
          required: true
          schema:
            type: string
        - name: endUser-Ip
          in: header
          description: >-
            The IP address of the end user. If provided will enable unlimited
            data refreshes for open banking providers that support this feature.
          schema:
            type: string
      responses:
        '200':
          description: Account info for consent
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Data.API.Models.Balance.BalancesResponse
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The consent or account access has been revoked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '502':
          description: >-
            The provider is temporarily unavailable or rate limit has been
            reached, try again in a few minutes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /data/v2/consents/{consentId}/accounts/{accountId}/transactions:
    get:
      tags:
        - Bank Data
      summary: Get transactions for account
      description: >-
        Returns a list of transactions tied to a specific account.



        The data returned by this endpoint is paginated and subsequent calls
        using the links provided in response body may be required to retrieve
        the full data set.



        Does a fresh pull from the external provider.
      parameters:
        - name: consentId
          in: path
          description: The consent ID for which we want to fetch balance information
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          description: The account ID for which we want to fetch balance information
          required: true
          schema:
            type: string
        - name: from
          in: query
          description: 'Filter from date (Recommended format: yyyy-MM-dd)'
          schema:
            type: string
            format: date-time
        - name: to
          in: query
          description: 'Filter to date (Recommended format: yyyy-MM-dd)'
          schema:
            type: string
            format: date-time
        - name: pageId
          in: query
          description: >-
            Page Id (Represents an encoded uuid for Next or Prev uris from the
            bank transaction responses)
          schema:
            type: string
        - name: endUser-Ip
          in: header
          description: >-
            The IP address of the end user. If provided will enable unlimited
            data refreshes for open banking providers that support this feature.
          schema:
            type: string
      responses:
        '200':
          description: Account info for consent
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Data.API.Models.Transaction.TransactionsResponse
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The consent or account access has been revoked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '502':
          description: >-
            The provider is temporarily unavailable or rate limit has been
            reached, try again in a few minutes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /insights-engine/v1/enrich-transactions:
    post:
      tags:
        - Categorisation Engine
      summary: >-
        Adds categorisation, classification and predicts a merchant name for
        transactions supplied.
      parameters:
        - name: useLegacyCategorisation
          in: query
          description: Flag whether to use the latest or legacy categorisation service
          schema:
            type: boolean
            default: false
        - name: confidenceFloor
          in: query
          description: >-
            Value from 0.0 to 1.0 which will return transactions as
            uncategorised if the category confidence is below this value
          schema:
            type: number
            format: double
            default: 0
      requestBody:
        description: Request body for categorisation
        content:
          application/json-patch+json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.Categorisation.Request.CategorisationRequest
          application/json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.Categorisation.Request.CategorisationRequest
          text/json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.Categorisation.Request.CategorisationRequest
          application/*+json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.Categorisation.Request.CategorisationRequest
      responses:
        '200':
          description: Categorisation result for the supplied transactions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/DirectID.Data.API.Models.Categorisation.Response.CategorisationResponse
        '400':
          description: Invalid request data was provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The application is not authorized to access categorisation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /insights-engine/v1/income-verification:
    post:
      tags:
        - Income Verification Engine
      summary: Processes the income verifications for the accounts supplied.
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Request.API.IncomeVerificationRequest
          application/json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Request.API.IncomeVerificationRequest
          text/json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Request.API.IncomeVerificationRequest
          application/*+json:
            schema:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Request.API.IncomeVerificationRequest
      responses:
        '200':
          description: Income Verification result for the supplied accounts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.API.IncomeVerification
        '400':
          description: Invalid request data was provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The application is not authorized to access income verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /income-verification/v1/consents/{consentId}/verifications:
    get:
      tags:
        - Income Verification
      summary: Gets the income verifications for the accounts shared for a consent.
      parameters:
        - name: consentId
          in: path
          description: The consent ID to fetch the income verifications results for
          required: true
          schema:
            type: string
        - name: accountId
          in: query
          description: >-
            The account ID to fetch the income verification for.

            If not specified, all accounts associated with this session are
            returned
          schema:
            type: string
        - name: includeFlags
          in: query
          description: Includes the flags used to calculate the confidence score
          schema:
            type: boolean
            default: false
        - name: excludeBenefits
          in: query
          description: Excludes the benefits from the income streams
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Income Verification results for the accounts linked to this consent
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.Connect.IncomeVerification
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: >-
            The consent has been revoked or this consent is not authorized to
            access income verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '404':
          description: No consent or accounts were found for the consent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
        '502':
          description: >-
            The provider is temporarily unavailable or rate limit has been
            reached, try again in a few minutes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error2'
      security:
        - Bearer:
            - api:data
  /stored-data/v1/consents/{consentId}/affordability:
    get:
      tags:
        - Affordability (stored)
      summary: Gets the affordability for the transactions shared for a consent.
      parameters:
        - name: consentId
          in: path
          description: The consent ID to fetch the affordability for
          required: true
          schema:
            type: string
        - name: accountId
          in: query
          description: >-
            The account ID to fetch the affordability for.

            If not specified, all accounts associated with this session are
            returned
          schema:
            type: string
      responses:
        '200':
          description: >-
            Affordability Calculations for the supplied transactions linked to
            this consent
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/DirectID.Insights.Service.Models.Affordability.AffordabilityCalculationResponse
        '400':
          description: Invalid transactions provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The application is not authorised to access affordability
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}:
    delete:
      tags:
        - Bank Data (stored)
      summary: Deletes all the stored data associated with the consent
      description: Please note this does not revoke the consent.
      parameters:
        - name: consentId
          in: path
          description: Unique reference for the consent
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Successfully deleted the stored data
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: No connected user found for consent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '409':
          description: A refresh is in progress for this consent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}/accounts:
    get:
      tags:
        - Bank Data (stored)
      summary: Returns a list of accounts for a consent.
      parameters:
        - name: consentId
          in: path
          description: Unique reference for the user consent
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of accounts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/DirectID.Insights.Service.Models.BankData.Account
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: Consent id was not found
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}/accounts/{accountId}/balances:
    get:
      tags:
        - Bank Data (stored)
      summary: Returns balances for an account for a consent.
      parameters:
        - name: consentId
          in: path
          description: Unique reference for the user consent
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          description: Unique identifier for the account at the institution
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Balances for the provided account
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Insights.Service.Models.BankData.Balances
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      deprecated: true
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}/accounts/{accountId}/end-of-day-balances:
    get:
      tags:
        - Bank Data (stored)
      summary: Returns the end of day balances for an account for a given consent.
      parameters:
        - name: consentId
          in: path
          description: Unique reference for the user consent
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          description: Unique identifier for the account from the provider
          required: true
          schema:
            type: string
        - name: from
          in: query
          description: >-
            The start date of the period to fetch the balances  (Recommended
            format: yyyy-MM-dd)
          schema:
            type: string
            format: date-time
        - name: to
          in: query
          description: >-
            The end date of the period to fetch the balances  (Recommended
            format: yyyy-MM-dd)
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: End of day Balances for the provided account
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Insights.Service.Models.BankData.EndOfDayBalances
        '400':
          description: One of the query parameters is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: The consent id or account id was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}/accounts/{accountId}/transactions:
    get:
      tags:
        - Bank Data (stored)
      summary: Returns a list of transactions for an account for a consent.
      parameters:
        - name: consentId
          in: path
          description: Unique reference for the consent
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          description: Unique identifier for the account at the institution
          required: true
          schema:
            type: string
        - name: searchTerm
          in: query
          description: >-
            Term to search in all searchable transaction fields [Description,
            TransactionCategory.Category,
            TransactionClassification.Classification].
          schema:
            type: string
        - name: sortField
          in: query
          description: Sort by field
          schema:
            $ref: '#/components/schemas/DirectID.Insights.Service.Models.SortField'
        - name: sortDesc
          in: query
          description: >-
            Sorting direction "true" is descending, "false" is ascending.
            Default is "true".
          schema:
            type: boolean
        - name: indicator
          in: query
          description: Filter by transaction CreditDebitIndicator.
          schema:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.BankData.CreditDebitIndicator
        - name: category
          in: query
          description: Filter by category.
          schema:
            type: array
            items:
              type: string
        - name: classification
          in: query
          description: Filter by classification.
          schema:
            type: array
            items:
              type: string
        - name: from
          in: query
          description: 'Filter from date (Recommended format: yyyy-MM-dd)'
          schema:
            type: string
            format: date-time
        - name: to
          in: query
          description: 'Filter to date (Recommended format: yyyy-MM-dd)'
          schema:
            type: string
            format: date-time
        - name: offset
          in: query
          description: Pagination offset.
          schema:
            maximum: 2147483647
            minimum: 0
            type: integer
            format: int32
        - name: limit
          in: query
          description: Pagination limit. Default value is 25.
          schema:
            maximum: 2147483647
            minimum: 0
            type: integer
            format: int32
      responses:
        '200':
          description: Paged response of transactions
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Insights.Service.Models.Paging.PaginatedResponse.DirectID.Insights.Service.Models.BankData.Transaction
        '400':
          description: At least one query parameter is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}/provider-details:
    get:
      tags:
        - Bank Data (stored)
      summary: Returns provider details for a consent.
      parameters:
        - name: consentId
          in: path
          description: Unique reference for the user consent
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Provider details for the consent
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Insights.Service.Models.BankData.ProviderDetails
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: Consent id was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}/refresh:
    post:
      tags:
        - Bank Data (stored)
      summary: Refreshes data for a consent.
      description: Please note only 4 refreshes are allowed in a 24 hour period.
      parameters:
        - name: consentId
          in: path
          description: Unique reference for the consent
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successfully completed data refresh
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The consent or account access has been revoked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '409':
          description: A refresh is already in progress for this consent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '502':
          description: >-
            The provider is temporarily unavailable or rate limit has been
            reached, try again in a few minutes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/users/{userId}:
    delete:
      tags:
        - Bank Data (stored)
      summary: Deletes all the stored data associated with the user
      description: >-
        Please note this does not revoke any of the consents associated with the
        user.
      parameters:
        - name: userId
          in: path
          description: Unique reference for the user
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted the stored data
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: No connected user found for user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '409':
          description: A refresh is in progress for a consent associated with the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v2/consents/{consentId}/accounts/{accountId}/balances:
    get:
      tags:
        - Bank Data (stored)
      summary: Returns balances for an account for a consent.
      parameters:
        - name: consentId
          in: path
          description: Unique reference for the user consent
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          description: Unique identifier for the account at the institution
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Balances for the provided account
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Insights.Service.Models.BankData.Balances
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: No consent or accounts were found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}/accounts/{accountId}/statement:
    get:
      tags:
        - Get Statement
      summary: Get PDF statement for the account
      description: Please note this statement is created by Atto and not the bank.
      parameters:
        - name: consentId
          in: path
          description: The consent ID for which we want to fetch account information
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          description: The account ID for which we want to fetch PDF statement
          required: true
          schema:
            type: string
      responses:
        '200':
          description: PDF statement for the account
          content:
            application/pdf:
              schema:
                oneOf:
                  - type: string
                    format: binary
                  - type: string
                    format: binary
                  - type: string
                    format: binary
                  - type: string
                    format: binary
            application/json:
              schema:
                oneOf:
                  - type: string
                    format: binary
                  - type: string
                    format: binary
                  - type: string
                    format: binary
                  - type: string
                    format: binary
        '400':
          description: Unsupported account type
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The consent or account access has been revoked
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '404':
          description: No consent or accounts were found
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '502':
          description: >-
            The provider is temporarily unavailable or rate limit has been
            reached, try again in a few minutes
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}/income-verifications:
    get:
      tags:
        - Income Verification (stored)
      summary: Gets the income verifications for the accounts shared for a consent.
      parameters:
        - name: consentId
          in: path
          description: The consent ID to fetch the income verifications results for
          required: true
          schema:
            type: string
        - name: accountId
          in: query
          description: >-
            The account ID to fetch the income verification for.

            If not specified, all accounts associated with this session are
            returned
          schema:
            type: string
        - name: includeFlags
          in: query
          description: Includes the flags used to calculate the confidence score
          schema:
            type: boolean
            default: false
        - name: excludeBenefits
          in: query
          description: Excludes the benefits from the income streams
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Income Verification results for the accounts linked to this consent
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeVerification
        '400':
          description: At least one query parameter is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: Account id was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /stored-data/v1/consents/{consentId}/payment-account-confirmation:
    get:
      tags:
        - Payment Account Confirmation
      summary: Retrieves user entered payment account confirmation
      parameters:
        - name: consentId
          in: path
          description: The consent Id to fetch the payment account confirmation
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Payment account confirmation data was successfully retrieved
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Insights.Service.Models.PaymentConfirmation.PaymentAccountConfirmation
        '401':
          description: The authorization header was invalid or not found
        '404':
          description: Payment account confirmation not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error3'
      security:
        - Bearer:
            - api:stored_data
  /advanced-insights/v1/consents/{consentId}/business-financial-health:
    get:
      tags:
        - Business Financial Health
      summary: Get Business Financial Health
      parameters:
        - name: consentId
          in: path
          description: The consent ID to fetch the Financial Health Results
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Financial Health results for the accounts linked to this consent
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Insights.Service.Models.Paging.PaginatedResponse.DirectID.Insights.Service.Models.AdvancedInsights.BusinessAccountFinancialHealth
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: >-
            The application is not authorized to access business financial
            health
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error4'
        '404':
          description: ConsentId was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error4'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error4'
      security:
        - Bearer:
            - api:advanced_insights
  /advanced-insights/v1/consents/{consentId}/consumer-financial-health:
    get:
      tags:
        - Consumer Financial Health
      summary: Get Consumer Financial Health
      parameters:
        - name: consentId
          in: path
          description: The consent ID to fetch the Financial Health Results
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Financial Health results for the accounts linked to this consent
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Insights.Service.Models.Paging.PaginatedResponse.DirectID.Insights.Service.Models.AdvancedInsights.ConsumerAccountFinancialHealth
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: >-
            The application is not authorized to access consumer financial
            health
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error4'
        '404':
          description: ConsentId was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error4'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error4'
      security:
        - Bearer:
            - api:advanced_insights
  /connect-invitations/v1/{invitationId}:
    get:
      tags:
        - Connect Invitation
      summary: Gets a single email invitation
      parameters:
        - name: invitationId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful email invitation retrieval
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailInvitationActivityResponse1'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The application is not authorized to access Connect Invitation API
        '404':
          description: Invitation not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - Bearer:
            - api:connect_invitation
  /connect-invitations/v1:
    post:
      tags:
        - Connect Invitation
      summary: Sends an email invitation
      requestBody:
        description: Request details including recipient name, email, etc
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ConnectInvitationRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectInvitationRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ConnectInvitationRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ConnectInvitationRequest'
      responses:
        '202':
          description: Email Invitation request sent
          headers:
            Location:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectInvitationResponse1'
        '400':
          description: |-
            Bad Request result can be of:
            * Incorrect templateId
            * Incorrect applicationId
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The application is not authorized to access Connect Invitation API
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - Bearer:
            - api:connect_invitation
  /atto-score/v1/consents/{consentId}/accounts/{accountId}:
    get:
      tags:
        - Atto Score
      summary: Get Atto Score
      parameters:
        - name: consentId
          in: path
          description: The consent ID for which we want to fetch the atto-score
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          description: The account ID for which we want to fetch the atto-score
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Atto Score result for the account specified
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.AttoScore.AttoScoreResponse
        '400':
          description: The Consent ID is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error5'
        '401':
          description: The authorization header was invalid or not found
        '403':
          description: The application is not authorized to access atto-score
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error5'
        '404':
          description: The atto-score data was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error5'
        '422':
          description: Atto-score could not be generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error5'
        '500':
          description: A server error has occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectID.Models.Errors.Error5'
      security:
        - Bearer:
            - api:advanced_insights
  /connect/users/v1/{userId}/accounts:
    delete:
      tags:
        - Accounts
      summary: Deletes all credit bureau reported accounts information held for a user
      parameters:
        - name: userId
          in: path
          description: Id of the User
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusMessageResponse'
        '204':
          description: Successfully deleted
        '401':
          description: Client is not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: User with Id not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '409':
          description: >-
            A state conflict exists for the resource that prevents operation
            completing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusMessageResponse'
        '500':
          description: An unexpected error has occurred
      security:
        - Bearer:
            - AppId
    get:
      tags:
        - Accounts
      summary: Returns list of credit bureau reported accounts for a user
      parameters:
        - name: userId
          in: path
          description: Id of the User
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAccountsResponse'
        '401':
          description: Client is not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: An unexpected error has occurred
      security:
        - Bearer:
            - AppId
components:
  schemas:
    DirectID.Authorization.Service.Models.Response.TokenResult:
      type: object
      properties:
        tokenType:
          type: string
          nullable: true
        expiresIn:
          type: integer
          format: int64
        accessToken:
          type: string
          nullable: true
      additionalProperties: false
    DirectID.Authorization.Service.Models.Response.ValidationTokenResult:
      type: object
      properties:
        validationToken:
          type: string
          description: DID Connect validation token.
          nullable: true
        expiresIn:
          type: integer
          description: Expiry time in seconds.
          format: int32
      additionalProperties: false
    DirectID.Models.Errors.Error:
      type: object
      properties:
        code:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        details:
          type: string
          nullable: true
        correlationId:
          type: string
          nullable: true
      additionalProperties: false
    DirectID.Consent.Service.Models.ConsentStatus:
      enum:
        - Pending
        - Active
        - Revoked
        - Abandoned
        - Failed
        - Expired
      type: string
    DirectID.Consent.Service.Models.DataSourceType:
      enum:
        - OpenBanking
        - CreditInformation
      type: string
    DirectID.Models.Consent.Consent:
      type: object
      properties:
        consentId:
          type: string
          description: Unique reference for the consent.
          format: uuid
        applicationId:
          type: string
          description: Application Id for the client.
          format: uuid
        userId:
          type: string
          description: Unique reference for the User the consent is associated with.
          format: uuid
        providerId:
          type: integer
          description: Provider Id for the consent.
          format: int32
        providerName:
          type: string
          description: Provider name for the consent.
          nullable: true
        configurationName:
          type: string
          description: Specific configuration of the client.
          nullable: true
        customerReference:
          type: string
          description: Reference for the consent provided by the client.
          nullable: true
        consentDurationType:
          $ref: '#/components/schemas/DirectID.Models.Consent.ConsentDurationType'
        consentStatus:
          $ref: '#/components/schemas/DirectID.Models.Consent.ConsentStatus'
        consentStart:
          type: string
          description: Start date for the consent.
          format: date-time
          nullable: true
        consentEnd:
          type: string
          description: End date for the consent.
          format: date-time
          nullable: true
        duration:
          type: string
          description: Duration of consent in ISO8601 format.
          nullable: true
        daysOfHistoricalTransactions:
          type: integer
          description: Number of days of transactions that can be requested from the bank.
          format: int32
          nullable: true
        statusUpdated:
          type: string
          description: Date of last status update of the consent.
          format: date-time
        statusDetails:
          type: string
          description: Details for the current status.
          nullable: true
        permissions:
          type: array
          items:
            type: string
          description: List of permissions for the consent.
          nullable: true
        invitationId:
          type: string
          description: Associated Invitation Id
          nullable: true
        journeyType:
          $ref: '#/components/schemas/DirectID.Models.Consent.ConsentJourneyType'
      additionalProperties: false
      description: Common model for Consent representation
    DirectID.Models.Consent.ConsentDurationType:
      enum:
        - Single
        - Limited
        - Infinite
      type: string
      description: Type of the consent based on duration.
    DirectID.Models.Consent.ConsentJourneyType:
      enum:
        - Reauthentication
        - Reconfirmation
      type: string
      description: |-
        Used to indicate the type of journey that was performed
        If null it means the default(initial) journey was performed.
    DirectID.Models.Consent.ConsentStatus:
      enum:
        - Pending
        - Active
        - Revoked
        - Abandoned
        - Failed
        - Expired
      type: string
    DirectID.Models.Errors.Error1:
      type: object
      properties:
        code:
          type: string
          description: Error code.
          nullable: true
        description:
          type: string
          description: Error message.
          nullable: true
        details:
          type: string
          description: Error details.
          nullable: true
        correlationId:
          type: string
          description: User transaction tracking Id
          nullable: true
      additionalProperties: false
    DirectID.AccountVerification.Services.AccountVerificationError:
      enum:
        - AccountIdentifierNotFound
        - PartyNameNotFound
        - NameOnlyMatch
      type: string
      format: ''
    DirectID.Data.API.Models.Account.AccountDetails:
      type: object
      properties:
        accountId:
          type: string
          description: Unique identifier for the account at the institution.
          nullable: true
        currencyCode:
          type: string
          description: ISO4217 currency code for the account.
          nullable: true
        displayName:
          type: string
          description: The user’s familiar name for the account.
          nullable: true
        accountHolderNames:
          type: string
          description: >-
            The AccountHolderNames is the name or names of the account owner(s)
            represented at an account level.
          nullable: true
        accountType:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.AccountType'
        accountSubType:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.AccountSubType
        identifiers:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Identifiers'
        parties:
          type: array
          items:
            $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Party'
          nullable: true
      additionalProperties: false
      description: Details of a specific account
    DirectID.Data.API.Models.Account.AccountList:
      type: object
      properties:
        providerId:
          type: string
          description: The unique identifier of the provider.
          nullable: true
        providerName:
          type: string
          description: The name of the provider e.g., Lloyds.
          nullable: true
        countryCode:
          type: string
          description: An ISO 3166-1 alpha-2 Country code for the account.
          nullable: true
        requestDateTime:
          type: string
          description: |-
            ISO 8601 (UTC) encoded date time string containing
            the date and time the data was retrieved.
          nullable: true
        accounts:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.Account.AccountDetails
          description: The list of account details returned.
          nullable: true
      additionalProperties: false
      description: List of accounts returned for a given consent.
    DirectID.Data.API.Models.Account.AccountResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Account.AccountSingle'
        meta:
          $ref: '#/components/schemas/DirectID.Data.Common.Response.EmptyMetaData'
      additionalProperties: false
      description: Response object for account information
    DirectID.Data.API.Models.Account.AccountSingle:
      type: object
      properties:
        providerId:
          type: string
          description: The unique identifier of the provider.
          nullable: true
        providerName:
          type: string
          description: The name of the provider e.g., Lloyds.
          nullable: true
        countryCode:
          type: string
          description: An ISO 3166-1 alpha-2 Country code for the account.
          nullable: true
        requestDateTime:
          type: string
          description: |-
            ISO 8601 (UTC) encoded date time string containing
            the date and time the data was retrieved.
          nullable: true
        account:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Account.AccountDetails'
      additionalProperties: false
      description: Account returned for a given consent.
    DirectID.Data.API.Models.Account.AccountsResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Account.AccountList'
        meta:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Response.TotalRecordsMetaData
      additionalProperties: false
      description: Response object for list of accounts
    DirectID.Data.API.Models.AccountVerification.Request.AccountVerificationRequest:
      required:
        - accountHolderName
        - identifier
      type: object
      properties:
        accountHolderName:
          minLength: 1
          type: string
          description: Individual associated with the target account
        identifier:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.AccountVerification.Request.Identifier
        ignoreMiddleNames:
          type: boolean
          description: Flag to indicate if matching with middle names is enabled
      additionalProperties: false
      description: A set of elements that describes the account verification request.
    DirectID.Data.API.Models.AccountVerification.Request.Identifier:
      type: object
      properties:
        iban:
          type: string
          description: International Bank Account Number (IBAN)
          nullable: true
        bic:
          type: string
          description: >-
            Bank Identifier Code (BIC) is the SWIFT Address assigned to a bank
            in order to send

            automated payments quickly and accurately to the banks concerned.
          nullable: true
        bankCode:
          type: string
          description: >-
            The national bank transit or transfer code used for identification
            of the bank assigned

            by a central bank in a country, eg: A Routing number(US/CA) or Sort
            code(UK)
          nullable: true
        accountNumber:
          type: string
          description: The bank's unique identifier for the account
          nullable: true
        countryCode:
          type: string
          description: An ISO 3166-1 alpha-2 Country code for the account.
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.AccountVerification.Response.AccountIdentifier:
      type: object
      properties:
        countryCode:
          type: string
          description: An ISO 3166-1 alpha-2 Country code for the account.
          nullable: true
        accountNumber:
          type: string
          description: The bank's unique identifier for the account
          nullable: true
        bankCode:
          type: string
          description: >-
            The national bank transit or transfer code used for identification
            of the bank assigned

            by a central bank in a country, eg: A Routing number(US/CA) or Sort
            code(UK)
          nullable: true
        iban:
          type: string
          description: >-
            An internationally agreed upon system of identifying bank accounts
            across national borders

            to facilitate the communication and processing of cross border
            transactions with a reduced 

            risk of transcription errors.
          nullable: true
        bic:
          type: string
          description: >-
            BIC (Business Identifier Code) is an ISO 9362 standard for routing
            business transactions

            and identifying business parties.
          nullable: true
        type:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.AccountVerification.Response.IdentifierType
      additionalProperties: false
    DirectID.Data.API.Models.AccountVerification.Response.AccountVerification:
      enum:
        - Pass
        - Fail
        - NA
        - Partial
      type: string
      format: ''
    DirectID.Data.API.Models.AccountVerification.Response.AccountVerificationResponse:
      type: object
      properties:
        result:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.AccountVerification.Response.AccountVerification
        reason:
          $ref: >-
            #/components/schemas/DirectID.AccountVerification.Services.AccountVerificationError
        matchedAccount:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.AccountVerification.Response.AccountIdentifier
        matchedAccountHolderName:
          type: string
          description: >-
            Account holder name returned by the provider that is used for
            matching with provided account details
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.AccountVerification.Response.IdentifierType:
      enum:
        - Iban
        - Bic
        - CountrySpecific
      type: string
      format: ''
    DirectID.Data.API.Models.Affordability.Request.AffordabilityEngineRequest:
      required:
        - countryCode
        - currencyCode
        - referenceId
      type: object
      properties:
        referenceId:
          minLength: 1
          type: string
          description: >-
            Unique identifier for the account to have the affordability
            calculated
        includeFlexibleCosts:
          type: boolean
          description: Includes flexible costs in the affordability calculation
        currencyCode:
          minLength: 1
          type: string
          description: >-
            Currency code for the transactions, currently supported codes are
            GBP and USD.
        countryCode:
          minLength: 1
          type: string
          description: Country code for the account of the transactions
        transactions:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.Affordability.Request.AffordabilityTransaction
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.Affordability.Request.AffordabilityTransaction:
      required:
        - amount
        - bookingDate
        - creditDebitIndicator
        - description
        - status
        - transactionId
      type: object
      properties:
        transactionId:
          minLength: 1
          type: string
          description: Unique transaction id assigned by the provider
        description:
          minLength: 1
          type: string
          description: A description line for the transaction
        amount:
          type: number
          description: The quantity of money
          format: double
        creditDebitIndicator:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.CreditDebitIndicator
        status:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.TransactionStatus
        bookingDate:
          minLength: 1
          type: string
          description: >-
            ISO8601 formatted date string containing the date the transaction is
            expected to be settled(or did settle)
      additionalProperties: false
    DirectID.Data.API.Models.Affordability.Response.AffordabilityEngineResponse:
      type: object
      properties:
        referenceId:
          type: string
          description: Unique identifier for the categorisation request
          nullable: true
        countryCode:
          type: string
          description: Country code for the account of the transactions
          nullable: true
        currencyCode:
          type: string
          description: >-
            Currency code for the transactions, currently supported codes are
            GBP and USD.
          nullable: true
        affordabilityMonths:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.Affordability.Response.MonthAffordability
          description: List of Month Affordability
          nullable: true
        estimatedCalculatedIncome:
          type: number
          description: Calculated Income Estimate
          format: double
          readOnly: true
        estimatedFixedCosts:
          type: number
          description: Calculated Fixed Cost Estimate
          format: double
          readOnly: true
        estimatedFlexibleCosts:
          type: number
          description: Calculated Flexible Costs Estimate
          format: double
          readOnly: true
        estimatedDebtFees:
          type: number
          description: Calculated Debt Fees Estimate
          format: double
          readOnly: true
        estimatedAffordability:
          type: number
          description: Calculated Affordability Estimate
          format: double
          readOnly: true
      additionalProperties: false
    DirectID.Data.API.Models.Affordability.Response.AffordabilityResponse:
      type: object
      properties:
        accountDetails:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Affordability.Response.Connect.AccountDetails
        affordabilityMonths:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.Affordability.Response.MonthAffordability
          description: List of Month Affordability
          nullable: true
        estimatedCalculatedIncome:
          type: number
          description: Calculated Income Estimate
          format: double
          readOnly: true
        estimatedFixedCosts:
          type: number
          description: Calculated Fixed Cost Estimate
          format: double
          readOnly: true
        estimatedFlexibleCosts:
          type: number
          description: Calculated Flexible Costs Estimate
          format: double
          readOnly: true
        estimatedDebtFees:
          type: number
          description: Calculated Debt Fees Estimate
          format: double
          readOnly: true
        estimatedAffordability:
          type: number
          description: Calculated Affordability Estimate
          format: double
          readOnly: true
      additionalProperties: false
    DirectID.Data.API.Models.Affordability.Response.Connect.AccountDetails:
      type: object
      properties:
        accountId:
          type: string
          description: Unique identifier for the account at the institution
          nullable: true
        bankCode:
          type: string
          description: >-
            The national bank transit or transfer code used for identification
            of the bank assigned

            by a central bank in a country, eg: A Routing number(US/CA) or Sort
            code(UK)
          nullable: true
        accountNumber:
          type: string
          description: The bank’s unique identifier for the account
          nullable: true
        accountType:
          $ref: '#/components/schemas/DirectID.Data.Common.Models.Account.AccountType'
        accountSubType:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.AccountSubType
        currencyCode:
          type: string
          description: ISO4217 currency code for the account
          nullable: true
        accountHolderNames:
          type: string
          description: >-
            The AccountHolderNames is the name or names of the account owner(s)
            represented at an account level.
          nullable: true
        customerReference:
          type: string
          description: The reference that is passed by the customer
          nullable: true
        parties:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.Affordability.Response.Connect.PartyIdentifier
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.Affordability.Response.Connect.PartyIdentifier:
      type: object
      properties:
        accountHolderName:
          type: string
          description: >-
            Name by which a specific party is known and which is usually used to
            identify that party.
          nullable: true
        isIndividual:
          type: boolean
          description: Indicates the party is an individual and not a business.
          nullable: true
        isAuthorizingParty:
          type: boolean
          description: >-
            Indicates the party authorized the connection on behalf of a joint
            or business account.
          nullable: true
        partyType:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Bank.PartyType'
      additionalProperties: false
    DirectID.Data.API.Models.Affordability.Response.MonthAffordability:
      type: object
      properties:
        month:
          type: integer
          format: int32
        year:
          type: integer
          format: int32
        monthDateTime:
          type: string
          format: date-time
          readOnly: true
        calculatedIncome:
          type: number
          format: double
        fixedCosts:
          type: number
          format: double
        flexibleCosts:
          type: number
          format: double
        debtFees:
          type: number
          format: double
        affordability:
          type: number
          format: double
      additionalProperties: false
    DirectID.Data.API.Models.Balance.BalancesResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Balances'
        meta:
          $ref: '#/components/schemas/DirectID.Data.Common.Response.EmptyMetaData'
      additionalProperties: false
      description: Response object for account balances information
    DirectID.Data.API.Models.Bank.PartyType:
      enum:
        - Delegate
        - Joint
        - Sole
      type: string
      description: Party type, in a coded form.
      format: ''
    DirectID.Data.API.Models.Categorisation.Request.CategorisationRequest:
      required:
        - countryCode
        - currencyCode
        - referenceId
      type: object
      properties:
        referenceId:
          minLength: 1
          type: string
          description: Unique identifier for the categorisation request
        countryCode:
          minLength: 1
          type: string
          description: Country code for the account of the transactions
        currencyCode:
          minLength: 1
          type: string
          description: >-
            Currency code for the transactions, currently supported codes are
            GBP and USD.
        transactions:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.Categorisation.Request.CategorisationTransaction
          description: >-
            Transaction data. Maximum limit for the number of transactions is
            5000.
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.Categorisation.Request.CategorisationTransaction:
      required:
        - amount
        - bookingDate
        - creditDebitIndicator
        - description
        - status
        - transactionId
      type: object
      properties:
        transactionId:
          minLength: 1
          type: string
          description: Unique transaction id assigned by the provider
        description:
          minLength: 1
          type: string
          description: A description line for the transaction
        amount:
          type: number
          description: The quantity of money
          format: double
        creditDebitIndicator:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.CreditDebitIndicator
        status:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.TransactionStatus
        bookingDate:
          minLength: 1
          type: string
          description: >-
            ISO8601 formatted date string containing the date the transaction is
            expected to be settled(or did settle)
      additionalProperties: false
    DirectID.Data.API.Models.Categorisation.Response.CategorisationResponse:
      type: object
      properties:
        referenceId:
          type: string
          description: Unique identifier for the categorisation request
          nullable: true
        countryCode:
          type: string
          description: Country code for the account of the transactions
          nullable: true
        currencyCode:
          type: string
          description: >-
            Currency code for the transactions, currently supported codes are
            GBP and USD.
          nullable: true
        transactions:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.Categorisation.Response.CategorisationTransactionResponse
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.Categorisation.Response.CategorisationTransactionResponse:
      required:
        - amount
        - bookingDate
        - creditDebitIndicator
        - description
        - status
        - transactionId
      type: object
      properties:
        transactionId:
          minLength: 1
          type: string
          description: Unique transaction id assigned by the provider
        description:
          minLength: 1
          type: string
          description: A description line for the transaction
        amount:
          type: number
          description: The quantity of money
          format: double
        creditDebitIndicator:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.CreditDebitIndicator
        status:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.TransactionStatus
        bookingDate:
          minLength: 1
          type: string
          description: >-
            ISO8601 formatted date string containing the date the transaction is
            expected to be settled(or did settle)
        enrichedData:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.EnrichedData'
      additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Request.API.IncomeVerificationRequest:
      required:
        - accountId
        - currencyCode
      type: object
      properties:
        accountId:
          minLength: 1
          type: string
          description: Unique identifier for the account to be verified for income
        includeFlags:
          type: boolean
          description: Includes the flags used to calculate the confidence score
        excludeBenefits:
          type: boolean
          description: Excludes the benefits from the income streams
        currencyCode:
          minLength: 1
          type: string
          description: >-
            Currency code for the transactions, currently supported codes are
            GBP and USD.
        transactions:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Request.API.IncomeVerificationTransaction
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Request.API.IncomeVerificationTransaction:
      required:
        - amount
        - bookingDate
        - creditDebitIndicator
        - description
        - status
        - transactionId
      type: object
      properties:
        transactionId:
          minLength: 1
          type: string
          description: Unique transaction id assigned by the provider
        description:
          minLength: 1
          type: string
          description: A description line for the transaction
        amount:
          type: number
          description: The quantity of money
          format: double
        creditDebitIndicator:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.CreditDebitIndicator
        status:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.TransactionStatus
        bookingDate:
          minLength: 1
          type: string
          description: >-
            ISO8601 formatted date string containing the date the transaction is
            expected to be settled(or did settle)
      additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Response.API.IncomeVerification:
      type: object
      properties:
        accountId:
          type: string
          nullable: true
        incomeStreams:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeStream
          nullable: true
        incomeStreamsSummary:
          type: object
          oneOf:
            - $ref: >-
                #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeStreamsSummary
            - $ref: >-
                #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeStream
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Response.ConfidenceScoreFlags:
      type: object
      properties:
        incomeForLast3Months:
          type: boolean
          description: >-
            Boolean flag for determining whether the income for the last three
            months

            is present for this group ( > 0)
        varianceTolerance5Percent:
          type: boolean
          description: >-
            Boolean flag for determining whether the difference between
            estimated income and each

            of the last three months incomes is >= -5%
        varianceTolerance10Percent:
          type: boolean
          description: >-
            Boolean flag for determining whether the difference between
            estimated income and each

            of the last three months incomes is >= -10%
        mostRecentCheckValue:
          type: boolean
          description: >-
            Boolean flag for determining whether the most recent recorded income
            is higher than

            or equal to the estimated income
        stabilityOverall:
          type: number
          description: Calculated income stability over the whole recorded period
          format: double
        stability6Months:
          type: number
          description: Calculated income stability over the period of 6 months
          format: double
      additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Response.Connect.AccountDetails:
      type: object
      properties:
        accountId:
          type: string
          description: Unique identifier for the account at the institution
          nullable: true
        bankCode:
          type: string
          description: >-
            The national bank transit or transfer code used for identification
            of the bank assigned

            by a central bank in a country, eg: A Routing number(US/CA) or Sort
            code(UK)
          nullable: true
        accountNumber:
          type: string
          description: The bank’s unique identifier for the account
          nullable: true
        accountType:
          $ref: '#/components/schemas/DirectID.Data.Common.Models.Account.AccountType'
        accountSubType:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.AccountSubType
        currencyCode:
          type: string
          description: ISO4217 currency code for the account
          nullable: true
        accountHolderNames:
          type: string
          description: >-
            The AccountHolderNames is the name or names of the account owner(s)
            represented at an account level.
          nullable: true
        customerReference:
          type: string
          description: The reference that is passed by the customer
          nullable: true
        parties:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.Connect.PartyIdentifier
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Response.Connect.IncomeVerification:
      type: object
      properties:
        accountDetails:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.Connect.AccountDetails
        incomeStreams:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeStream
          nullable: true
        incomeStreamsSummary:
          type: object
          oneOf:
            - $ref: >-
                #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeStreamsSummary
            - $ref: >-
                #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeStream
          nullable: true
        verifiedIncomeStatus:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.VerifiedIncomeStatus
      additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Response.Connect.PartyIdentifier:
      type: object
      properties:
        accountHolderName:
          type: string
          description: >-
            Name by which a specific party is known and which is usually used to
            identify that party.
          nullable: true
        isIndividual:
          type: boolean
          description: Indicates the party is an individual and not a business.
          nullable: true
        isAuthorizingParty:
          type: boolean
          description: >-
            Indicates the party authorized the connection on behalf of a joint
            or business account.
          nullable: true
        partyType:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Bank.PartyType'
      additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth:
      type: object
      properties:
        income:
          type: number
          description: Income value for the month
          format: double
        month:
          type: integer
          format: int32
        year:
          type: integer
          format: int32
      additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Response.IncomeStream:
      allOf:
        - $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeStreamsSummary
        - type: object
          properties:
            name:
              type: string
              description: Unique description of this income stream
              nullable: true
            numberOfDeposits:
              type: integer
              description: The number of deposits made for this income stream
              format: int32
            isBenefit:
              type: boolean
              description: A flag indicating whether this income stream is a benefit
            isSalary:
              type: boolean
              description: A flag indicating whether this income stream is a salary
            rank:
              $ref: >-
                #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeStreamRank
          additionalProperties: false
    DirectID.Data.API.Models.IncomeVerification.Response.IncomeStreamRank:
      enum:
        - One
        - Two
        - Three
      type: string
      format: ''
    DirectID.Data.API.Models.IncomeVerification.Response.IncomeStreamsSummary:
      type: object
      properties:
        month1:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month2:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month3:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month4:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month5:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month6:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month7:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month8:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month9:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month10:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        month11:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.IncomeMonth
        estimatedIncome:
          type: number
          description: Estimated income for the combined income streams
          format: double
        confidenceScore:
          type: number
          description: Calculated confidence score for the combined income streams
          format: double
        confidenceScoreFlags:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.IncomeVerification.Response.ConfidenceScoreFlags
      additionalProperties: false
    DirectID.Data.API.Models.Provider.Account:
      type: object
      properties:
        accountId:
          type: string
          description: Unique identifier for the account at the institution.
          nullable: true
        currencyCode:
          type: string
          description: ISO4217 currency code for the account.
          nullable: true
        displayName:
          type: string
          description: The user’s familiar name for the account.
          nullable: true
        accountHolderNames:
          type: string
          description: >-
            The AccountHolderNames is the name or names of the account owner(s)
            represented at an account level.
          nullable: true
        accountType:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.AccountType'
        accountSubType:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.AccountSubType
        identifiers:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Identifiers'
        parties:
          type: array
          items:
            $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Party'
          nullable: true
        balances:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Balances'
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Transaction'
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.Provider.AccountSubType:
      enum:
        - ChargeCard
        - CreditCard
        - CurrentAccount
        - Emoney
        - Loan
        - Mortgage
        - PrepaidCard
        - Savings
      type: string
      format: ''
    DirectID.Data.API.Models.Provider.AccountType:
      enum:
        - Business
        - Personal
      type: string
      format: ''
    DirectID.Data.API.Models.Provider.AddressType:
      enum:
        - Business
        - Correspondence
        - DeliveryTo
        - MailTo
        - POBox
        - Postal
        - Residential
        - Statement
      type: string
      description: A collection of address types.
      format: ''
    DirectID.Data.API.Models.Provider.Balance:
      type: object
      properties:
        amount:
          type: number
          description: The absolute amount of the balance
          format: double
        creditDebitIndicator:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.CreditDebitIndicator
        creditLines:
          type: array
          items:
            $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.CreditLine'
          description: Credit lines of the balance
          nullable: true
      additionalProperties: false
      description: Balance information for a given account
    DirectID.Data.API.Models.Provider.Balances:
      type: object
      properties:
        current:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Balance'
        available:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Balance'
      additionalProperties: false
      description: Balance information for a given account
    DirectID.Data.API.Models.Provider.Classification:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
          nullable: true
        confidence:
          type: number
          description: 'Confidence score range: 0.0 - 1.0'
          format: double
      additionalProperties: false
    DirectID.Data.API.Models.Provider.CreditDebitIndicator:
      enum:
        - Credit
        - Debit
      type: string
      format: ''
    DirectID.Data.API.Models.Provider.CreditLine:
      type: object
      properties:
        amount:
          type: number
          description: Amount for credit lines is optional and can be null.
          format: double
          nullable: true
        creditLineType:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.CreditLineType
        included:
          type: boolean
        predicted:
          type: boolean
      additionalProperties: false
    DirectID.Data.API.Models.Provider.CreditLineType:
      enum:
        - NA
        - PREAGREED
        - TEMPORARY
        - EMERGENCY
        - CREDIT
        - AVAILABLE
      type: string
      format: ''
    DirectID.Data.API.Models.Provider.EnrichedData:
      type: object
      properties:
        category:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.Classification
        class:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.Classification
        predictedMerchantName:
          type: string
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.Provider.Identifiers:
      type: object
      properties:
        accountNumber:
          type: string
          description: The bank’s unique identifier for the account.
          nullable: true
        bankCode:
          type: string
          description: >-
            The national bank transit or transfer code used for identification
            of the bank assigned

            by a central bank in a country, eg: A Routing number(US/CA) or Sort
            code(UK).
          nullable: true
        bic:
          type: string
          description: >-
            Bank Identifier Code (BIC) is a standard format used to help
            identify banks worldwide.

            BIC is needed when transferring money between banks,

            in particular for international wire transfers.

            BIC code is interchangeably used with SWIFT code
          nullable: true
        iban:
          type: string
          description: International Bank Account Number (IBAN).
          nullable: true
        secondaryIdentification:
          type: string
          description: >-
            Additional information for identifying the account in the
            institution,

            e.g., Building society Roll Number.
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.Provider.MerchantDetails:
      type: object
      properties:
        merchantName:
          type: string
          description: Name by which the merchant is known.
          nullable: true
        merchantCategoryCode:
          type: string
          description: >-
            Category code conform to ISO 18245, related to the type of services
            or goods the

            merchant provides for the transaction.
          nullable: true
      additionalProperties: false
      description: Details of the merchant involved in the transaction.
    DirectID.Data.API.Models.Provider.Party:
      type: object
      properties:
        partyId:
          type: string
          description: |-
            A unique and immutable identifier used to identify a specific party.
            This identifier has no meaning to the account owner.
          nullable: true
        fullName:
          type: string
          description: >-
            Name by which a specific party is known and which is usually used to
            identify that party.
          nullable: true
        addresses:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.Provider.PartyAddress
          description: Addresses associated with a specific party.
          nullable: true
        partyType:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.PartyType'
        isIndividual:
          type: boolean
          description: Indicates the party is an individual and not a business.
          nullable: true
        isAuthorizingParty:
          type: boolean
          description: >-
            Indicates the party authorized the connection on behalf of a joint
            or business account.
          nullable: true
        emailAddress:
          type: string
          description: Email address of a specific party.
          nullable: true
        phoneNumbers:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Data.API.Models.Provider.PartyPhoneNumber
          description: Phone numbers which are linked to a specific party.
          nullable: true
      additionalProperties: false
      description: >-
        A set of elements that describes the party that is linked to a specific
        account.
    DirectID.Data.API.Models.Provider.PartyAddress:
      type: object
      properties:
        address:
          type: string
          description: Information that identifies an address of a specific party.
          nullable: true
        type:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.AddressType'
        city:
          type: string
          description: Information that identifies a specific city in the party address.
          nullable: true
        postcode:
          type: string
          description: >-
            Information that identifies a specific postcode in the party
            address.
          nullable: true
        country:
          type: string
          description: Information that identifies a specific country in the party address.
          nullable: true
        countrySubDivision:
          type: string
          description: >-
            Identifies a subdivision of a country e.g., state, region, county in
            the party address.
          nullable: true
      additionalProperties: false
      description: Address of a specific party.
    DirectID.Data.API.Models.Provider.PartyPhoneNumber:
      type: object
      properties:
        type:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.PhoneNumberType
        phoneNumber:
          type: string
          description: Collection of information that identifies a phone number.
          nullable: true
      additionalProperties: false
      description: >-
        A set of elements that describes the party phone numbers linked to a
        specific party.
    DirectID.Data.API.Models.Provider.PartyType:
      enum:
        - Delegate
        - Joint
        - Sole
      type: string
      description: Party type, in a coded form.
      format: ''
    DirectID.Data.API.Models.Provider.PhoneNumberType:
      enum:
        - Home
        - Work
        - Landline
        - Mobile
      type: string
      description: A collection of different types of phone number.
      format: ''
    DirectID.Data.API.Models.Provider.ProprietaryTransactionCode:
      type: object
      properties:
        code:
          type: string
          description: >-
            Proprietary bank transaction code to identify the underlying
            transaction.
          nullable: true
        issuer:
          type: string
          description: >-
            Identification of the issuer of the proprietary bank transaction
            code.
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.Provider.ProviderAccounts:
      type: object
      properties:
        providerId:
          type: string
          description: The unique identifier of the provider.
          nullable: true
        providerName:
          type: string
          description: The name of the provider e.g., Lloyds.
          nullable: true
        countryCode:
          type: string
          description: An ISO 3166-1 alpha-2 Country code for the account.
          nullable: true
        requestDateTime:
          type: string
          description: |-
            ISO 8601 (UTC) encoded date time string containing
            the date and time the data was retrieved.
          nullable: true
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Account'
          description: The list of accounts returned for the Provider.
          nullable: true
      additionalProperties: false
      description: Provider accounts returned for the consent.
    DirectID.Data.API.Models.Provider.Transaction:
      type: object
      properties:
        transactionId:
          type: string
          description: Unique transaction id assigned by the provider
          nullable: true
        description:
          type: string
          description: A description line for the transaction
          nullable: true
        amount:
          type: number
          description: The quantity of money
          format: double
        creditDebitIndicator:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.CreditDebitIndicator
        status:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.TransactionStatus
        transactionCode:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.TransactionCode
        proprietaryTransactionCode:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.ProprietaryTransactionCode
        bookingDate:
          type: string
          description: >-
            ISO8601 formatted date string containing the date the transaction is
            expected to be settled(or did settle)
          nullable: true
        merchantDetails:
          $ref: >-
            #/components/schemas/DirectID.Data.API.Models.Provider.MerchantDetails
        enrichedData:
          $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.EnrichedData'
      additionalProperties: false
    DirectID.Data.API.Models.Provider.TransactionCode:
      type: object
      properties:
        code:
          type: string
          description: Specifies the family within a domain.
          nullable: true
        subCode:
          type: string
          description: Specifies the sub-product family within a specific family.
          nullable: true
      additionalProperties: false
    DirectID.Data.API.Models.Provider.TransactionStatus:
      enum:
        - Pending
        - Booked
      type: string
      format: ''
    DirectID.Data.API.Models.Transaction.TransactionsResponse:
      type: object
      properties:
        links:
          $ref: '#/components/schemas/DirectID.Data.Common.Response.PaginationLinks'
        data:
          type: array
          items:
            $ref: '#/components/schemas/DirectID.Data.API.Models.Provider.Transaction'
          description: Data payload of the response
          nullable: true
        meta:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Response.PaginationMetaData
      additionalProperties: false
      description: Response object for account transactions
    DirectID.Data.Common.Models.Account.AccountSubType:
      enum:
        - ChargeCard
        - CreditCard
        - CurrentAccount
        - Emoney
        - Loan
        - Mortgage
        - PrepaidCard
        - Savings
      type: string
      format: ''
    DirectID.Data.Common.Models.Account.AccountType:
      enum:
        - Business
        - Personal
      type: string
      format: ''
    DirectID.Data.Common.Models.Account.CreditDebitIndicator:
      enum:
        - Credit
        - Debit
      type: string
      format: ''
    DirectID.Data.Common.Models.Account.TransactionStatus:
      enum:
        - Pending
        - Booked
      type: string
      format: ''
    DirectID.Data.Common.Models.Account.VerifiedIncomeStatus:
      enum:
        - UnsupportedAccountType
        - NoCreditTransactions
        - Processed
      type: string
      format: ''
    DirectID.Data.Common.Response.ApiResponseMetaData:
      type: object
      additionalProperties: false
      description: >-
        Meta data surrounding the response data (e.g. total record count, count
        of pages, etc.)
    DirectID.Data.Common.Response.EmptyMetaData:
      allOf:
        - $ref: >-
            #/components/schemas/DirectID.Data.Common.Response.ApiResponseMetaData
        - type: object
          additionalProperties: false
      description: No meta data corresponding to the response payload
    DirectID.Data.Common.Response.PaginationLinks:
      type: object
      properties:
        next:
          type: string
          description: Next Uri for the next set of paginated data
          nullable: true
        prev:
          type: string
          description: Prev Uri for the previous set of paginated data
          nullable: true
      additionalProperties: false
      description: Pagination links to retrieve next/previous portion of data set
    DirectID.Data.Common.Response.PaginationMetaData:
      allOf:
        - $ref: >-
            #/components/schemas/DirectID.Data.Common.Response.ApiResponseMetaData
        - type: object
          properties:
            totalPages:
              type: integer
              description: If set, indicates the total count of pages of paginated data
              format: int32
              nullable: true
          additionalProperties: false
      description: Meta data detailing a paginated data set
    DirectID.Data.Common.Response.TotalRecordsMetaData:
      allOf:
        - $ref: >-
            #/components/schemas/DirectID.Data.Common.Response.ApiResponseMetaData
        - type: object
          properties:
            totalRecords:
              type: integer
              description: Total records contained in the corresponding collection
              format: int32
          additionalProperties: false
      description: >-
        Meta data indicating how many total records contained in a corresponding
        collection
    DirectID.Models.Errors.Error2:
      type: object
      properties:
        code:
          type: string
          description: Error code.
          nullable: true
        description:
          type: string
          description: Error message.
          nullable: true
        details:
          type: string
          description: Error details.
          nullable: true
        correlationId:
          type: string
          description: User transaction tracking Id
          nullable: true
      additionalProperties: false
    DirectID.Data.Common.Models.Account.PartyType:
      enum:
        - Delegate
        - Joint
        - Sole
      type: string
      description: Party type, in a coded form.
      format: ''
    DirectID.Insights.Service.Models.Affordability.AccountDetails:
      type: object
      properties:
        accountId:
          type: string
          description: Unique identifier for the account at the institution
          nullable: true
        bankCode:
          type: string
          description: >-
            The national bank transit or transfer code used for identification
            of the bank assigned

            by a central bank in a country, eg: A Routing number(US/CA) or Sort
            code(UK)
          nullable: true
        accountNumber:
          type: string
          description: The bank’s unique identifier for the account
          nullable: true
        accountType:
          $ref: '#/components/schemas/DirectID.Data.Common.Models.Account.AccountType'
        accountSubType:
          $ref: >-
            #/components/schemas/DirectID.Data.Common.Models.Account.AccountSubType
        currencyCode:
          type: string
          description: ISO4217 currency code for the account
          nullable: true
        accountHolderNames:
          type: string
          description: >-
            The AccountHolderNames is the name or names of the account owner(s)
            represented at an account level.
          nullable: true
        parties:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.Affordability.PartyIdentifier
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.Affordability.AffordabilityCalculationResponse:
      type: object
      properties:
        accountDetails:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.Affordability.AccountDetails
        monthAffordabilities:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.Affordability.MonthAffordability
          description: List of Month Affordability
          nullable: true
        estimatedCalculatedIncome:
          type: number
          description: Calculated Income Estimate
          format: double
        estimatedFixedCosts:
          type: number
          description: Calculated Fixed Cost Estimate
          format: double
        estimatedFlexibleCosts:
          type: number
          description: Calculated Flexible Costs Estimate
          format: double
        estimatedDebtFees:
          type: number
          description: Calculated Debt Fees Estimate
          format: double
        estimatedAffordability:
          type: number
          description: Calculated Affordability Estimate
          format: double
        avgEstimatedAffordability:
          type: number
          description: Average Affordability Estimate
          format: double
          nullable: true
        avgCalculatedIncome:
          type: number
          description: Average Calculated Income
          format: double
          nullable: true
        affordabilityTransactions:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Services.Models.Affordability.AffordabilityTransactions
          description: Calculated Affordability Transactions
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.Affordability.MonthAffordability:
      type: object
      properties:
        month:
          type: integer
          format: int32
        year:
          type: integer
          format: int32
        monthDateTime:
          type: string
          format: date-time
        calculatedIncome:
          type: number
          format: double
        fixedCosts:
          type: number
          format: double
        flexibleCosts:
          type: number
          format: double
        debtFees:
          type: number
          format: double
        affordability:
          type: number
          format: double
      additionalProperties: false
    DirectID.Insights.Service.Models.Affordability.PartyIdentifier:
      type: object
      properties:
        accountHolderName:
          type: string
          description: >-
            Name by which a specific party is known and which is usually used to
            identify that party.
          nullable: true
        isIndividual:
          type: boolean
          description: Indicates the party is an individual and not a business.
          nullable: true
        isAuthorizingParty:
          type: boolean
          description: >-
            Indicates the party authorized the connection on behalf of a joint
            or business account.
          nullable: true
        partyType:
          $ref: '#/components/schemas/DirectID.Data.Common.Models.Account.PartyType'
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.Account:
      type: object
      properties:
        accountId:
          type: string
          description: Unique identifier for the account at the institution
          nullable: true
        currencyCode:
          type: string
          description: ISO4217 currency code for the account.
          nullable: true
        displayName:
          type: string
          description: The user�s familiar name for the account.
          nullable: true
        accountHolderNames:
          type: string
          description: >-
            The AccountHolderNames is the name or names of the account owner(s)
            represented at an account level.
          nullable: true
        accountType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.AccountType
        accountSubType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.AccountSubType
        identifiers:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.Identifiers
        parties:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.BankData.Party
          description: List of account holders associated with the account.
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.AccountSubType:
      enum:
        - ChargeCard
        - CreditCard
        - CurrentAccount
        - Emoney
        - Loan
        - Mortgage
        - PrepaidCard
        - Savings
      type: string
      format: ''
    DirectID.Insights.Service.Models.BankData.AccountType:
      enum:
        - Business
        - Personal
      type: string
      format: ''
    DirectID.Insights.Service.Models.BankData.AddressType:
      enum:
        - Business
        - Correspondence
        - DeliveryTo
        - MailTo
        - POBox
        - Postal
        - Residential
        - Statement
      type: string
      description: A collection of address types.
      format: ''
    DirectID.Insights.Service.Models.BankData.Balance:
      type: object
      properties:
        amount:
          type: number
          format: double
        creditDebitIndicator:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.CreditDebitIndicator
        creditLines:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.BankData.CreditLine
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.Balances:
      type: object
      properties:
        current:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.Balance
        available:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.Balance
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.Classification:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
          nullable: true
        confidence:
          type: number
          description: 'Confidence score range: 0.0 - 1.0'
          format: double
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.CreditDebitIndicator:
      enum:
        - Credit
        - Debit
      type: string
      format: ''
    DirectID.Insights.Service.Models.BankData.CreditLine:
      type: object
      properties:
        amount:
          type: number
          description: Amount for credit lines is optional and can be null.
          format: double
          nullable: true
        creditLineType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.CreditLineType
        included:
          type: boolean
        predicted:
          type: boolean
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.CreditLineType:
      enum:
        - NA
        - PREAGREED
        - TEMPORARY
        - EMERGENCY
        - CREDIT
        - AVAILABLE
      type: string
      format: ''
    DirectID.Insights.Service.Models.BankData.EndOfDayBalance:
      type: object
      properties:
        balance:
          type: number
          format: double
        date:
          type: string
          format: date-time
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.EndOfDayBalances:
      type: object
      properties:
        currency:
          type: string
          description: The account’s currency
          nullable: true
        average:
          type: number
          description: The average end of day balance for the specified period
          format: double
          nullable: true
        maximum:
          type: number
          description: The maximum end of day balance for the specified period
          format: double
          nullable: true
        minimum:
          type: number
          description: The minimum end of day balance for the specified period
          format: double
          nullable: true
        balances:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.BankData.EndOfDayBalance
          description: The end of day balances for the specified period
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.EnrichedData:
      type: object
      properties:
        category:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.Classification
        class:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.Classification
        predictedMerchantName:
          type: string
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.Identifiers:
      type: object
      properties:
        accountNumber:
          type: string
          description: The bank�s unique identifier for the account.
          nullable: true
        bankCode:
          type: string
          description: >-
            The national bank transit or transfer code used for identification
            of the bank assigned

            by a central bank in a country, eg: A Routing number(US/CA) or Sort
            code(UK).
          nullable: true
        iban:
          type: string
          description: International Bank Account Number (IBAN).
          nullable: true
        bic:
          type: string
          description: >-
            Bank Identifier Code (BIC) is a standard format used to help
            identify banks worldwide.

            BIC is needed when transferring money between banks,

            in particular for international wire transfers.

            BIC code is interchangeably used with SWIFT code
          nullable: true
        secondaryIdentification:
          type: string
          description: >-
            Additional information for identifying the account in the
            institution,

            e.g., Building society Roll Number.
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.MerchantDetails:
      type: object
      properties:
        merchantName:
          type: string
          description: Name by which the merchant is known.
          nullable: true
        merchantCategoryCode:
          type: string
          description: >-
            Category code conform to ISO 18245, related to the type of services
            or goods the

            merchant provides for the transaction.
          nullable: true
      additionalProperties: false
      description: Details of the merchant involved in the transaction.
    DirectID.Insights.Service.Models.BankData.Party:
      type: object
      properties:
        partyId:
          type: string
          description: |-
            A unique and immutable identifier used to identify a specific party.
            This identifier has no meaning to the account owner.
          nullable: true
        fullName:
          type: string
          description: >-
            Name by which a specific party is known and which is usually used to
            identify that party.
          nullable: true
        addresses:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.BankData.PartyAddress
          description: Addresses associated with a specific party.
          nullable: true
        partyType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.PartyType
        isIndividual:
          type: boolean
          description: Indicates the party is an individual and not a business.
          nullable: true
        isAuthorizingParty:
          type: boolean
          description: >-
            Indicates the party authorized the connection on behalf of a joint
            or business account.
          nullable: true
        emailAddress:
          type: string
          description: Email address of a specific party.
          nullable: true
        phoneNumbers:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.BankData.PartyPhoneNumber
          description: Phone numbers which are linked to a specific party.
          nullable: true
      additionalProperties: false
      description: >-
        A set of elements that describes the party that is linked to a specific
        account.
    DirectID.Insights.Service.Models.BankData.PartyAddress:
      type: object
      properties:
        address:
          type: string
          description: Information that identifies an address of a specific party.
          nullable: true
        type:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.AddressType
        city:
          type: string
          description: Information that identifies a specific city in the party address.
          nullable: true
        postcode:
          type: string
          description: >-
            Information that identifies a specific postcode in the party
            address.
          nullable: true
        country:
          type: string
          description: Information that identifies a specific country in the party address.
          nullable: true
        countrySubDivision:
          type: string
          description: >-
            Identifies a subdivision of a country e.g., state, region, county in
            the party address.
          nullable: true
      additionalProperties: false
      description: Address of a specific party.
    DirectID.Insights.Service.Models.BankData.PartyPhoneNumber:
      type: object
      properties:
        type:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.PhoneNumberType
        phoneNumber:
          type: string
          description: Collection of information that identifies a phone number.
          nullable: true
      additionalProperties: false
      description: >-
        A set of elements that describes the party phone numbers linked to a
        specific party.
    DirectID.Insights.Service.Models.BankData.PartyType:
      enum:
        - Delegate
        - Joint
        - Sole
      type: string
      description: Party type, in a coded form.
      format: ''
    DirectID.Insights.Service.Models.BankData.PhoneNumberType:
      enum:
        - Home
        - Work
        - Landline
        - Mobile
      type: string
      description: A collection of different types of phone number.
      format: ''
    DirectID.Insights.Service.Models.BankData.ProprietaryTransactionCode:
      type: object
      properties:
        code:
          type: string
          description: >-
            Proprietary bank transaction code to identify the underlying
            transaction.
          nullable: true
        issuer:
          type: string
          description: >-
            Identification of the issuer of the proprietary bank transaction
            code.
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.ProviderDetails:
      type: object
      properties:
        consentId:
          type: string
          description: The unique identifier of the consent.
          nullable: true
        customerReference:
          type: string
          description: Customer reference.
          nullable: true
        providerId:
          type: string
          description: The unique identifier of the provider.
          nullable: true
        providerName:
          type: string
          description: The name of the provider e.g., Lloyds.
          nullable: true
        countryCode:
          type: string
          description: An ISO 3166-1 alpha-2 Country code for the account.
          nullable: true
        consentExpiryDate:
          type: string
          description: |-
            ISO 8601 (UTC) encoded date time string containing
            the date and time the consent will expire.
          nullable: true
        connectedDate:
          type: string
          description: |-
            ISO 8601 (UTC) encoded date time string containing
            the date and time the data was retrieved for the first time.
          nullable: true
        updatedDate:
          type: string
          description: |-
            ISO 8601 (UTC) encoded date time string containing
            the date and time the data was retrieved last.
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.Transaction:
      type: object
      properties:
        transactionId:
          type: string
          description: Unique transaction id assigned by the provider
          nullable: true
        description:
          type: string
          description: A description line for the transaction
          nullable: true
        amount:
          type: number
          description: The quantity of money
          format: double
        creditDebitIndicator:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.CreditDebitIndicator
        status:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.TransactionStatus
        transactionCode:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.TransactionCode
        proprietaryTransactionCode:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.ProprietaryTransactionCode
        bookingDate:
          type: string
          description: >-
            ISO8601 formatted date string containing the date the transaction is
            expected to be settled(or did settle)
          nullable: true
        merchantDetails:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.MerchantDetails
        enrichedData:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.EnrichedData
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.TransactionCode:
      type: object
      properties:
        code:
          type: string
          description: Specifies the family within a domain.
          nullable: true
        subCode:
          type: string
          description: Specifies the sub-product family within a specific family.
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.BankData.TransactionStatus:
      enum:
        - Pending
        - Booked
      type: string
      format: ''
    DirectID.Insights.Service.Models.IncomeVerification.AccountDetails:
      type: object
      properties:
        accountId:
          type: string
          description: Unique identifier for the account at the institution
          nullable: true
        bankCode:
          type: string
          description: >-
            The national bank transit or transfer code used for identification
            of the bank assigned

            by a central bank in a country, eg: A Routing number(US/CA) or Sort
            code(UK)
          nullable: true
        accountNumber:
          type: string
          description: The bank’s unique identifier for the account
          nullable: true
        accountType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.AccountType
        accountSubType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.AccountSubType
        currencyCode:
          type: string
          description: ISO4217 currency code for the account
          nullable: true
        accountHolderNames:
          type: string
          description: >-
            The AccountHolderNames is the name or names of the account owner(s)
            represented at an account level.
          nullable: true
        parties:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.PartyIdentifier
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.IncomeVerification.ConfidenceScoreFlags:
      type: object
      properties:
        incomeForLast3Months:
          type: boolean
          description: >-
            Boolean flag for determining whether the income for the last three
            months

            is present for this group ( > 0)
        varianceTolerance5Percent:
          type: boolean
          description: >-
            Boolean flag for determining whether the difference between
            estimated income and each

            of the last three months incomes is >= -5%
        varianceTolerance10Percent:
          type: boolean
          description: >-
            Boolean flag for determining whether the difference between
            estimated income and each

            of the last three months incomes is >= -10%
        mostRecentCheckValue:
          type: boolean
          description: >-
            Boolean flag for determining whether the most recent recorded income
            is higher than

            or equal to the estimated income
        stabilityOverall:
          type: number
          description: Calculated income stability over the whole recorded period
          format: double
        stability6Months:
          type: number
          description: Calculated income stability over the period of 6 months
          format: double
      additionalProperties: false
    DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth:
      type: object
      properties:
        income:
          type: number
          description: Income value for the month
          format: double
        month:
          type: integer
          format: int32
        year:
          type: integer
          format: int32
      additionalProperties: false
    DirectID.Insights.Service.Models.IncomeVerification.IncomeStream:
      allOf:
        - $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeStreamsSummary
        - type: object
          properties:
            name:
              type: string
              description: Unique description of this income stream
              nullable: true
            numberOfDeposits:
              type: integer
              description: The number of deposits made for this income stream
              format: int32
            isBenefit:
              type: boolean
              description: A flag indicating whether this income stream is a benefit
            rank:
              $ref: >-
                #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeStreamRank
          additionalProperties: false
    DirectID.Insights.Service.Models.IncomeVerification.IncomeStreamRank:
      enum:
        - One
        - Two
        - Three
      type: string
      format: ''
    DirectID.Insights.Service.Models.IncomeVerification.IncomeStreamsSummary:
      type: object
      properties:
        month1:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month2:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month3:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month4:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month5:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month6:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month7:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month8:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month9:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month10:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        month11:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeMonth
        estimatedIncome:
          type: number
          description: Estimated income for the combined income streams
          format: double
        confidenceScore:
          type: number
          description: Calculated confidence score for the combined income streams
          format: double
        confidenceScoreFlags:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.ConfidenceScoreFlags
      additionalProperties: false
    DirectID.Insights.Service.Models.IncomeVerification.IncomeVerification:
      type: object
      properties:
        accountDetails:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.AccountDetails
        incomeStreams:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeStream
          nullable: true
        incomeStreamsSummary:
          type: object
          oneOf:
            - $ref: >-
                #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeStreamsSummary
            - $ref: >-
                #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.IncomeStream
          nullable: true
        verifiedIncomeStatus:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.IncomeVerification.VerifiedIncomeStatus
      additionalProperties: false
    DirectID.Insights.Service.Models.IncomeVerification.PartyIdentifier:
      type: object
      properties:
        partyName:
          type: string
          description: >-
            Name by which a specific party is known and which is usually used to
            identify that party.
          nullable: true
        isIndividual:
          type: boolean
          description: Indicates the party is an individual and not a business.
          nullable: true
        isAuthorizingParty:
          type: boolean
          description: >-
            Indicates the party authorized the connection on behalf of a joint
            or business account.
          nullable: true
        partyType:
          type: string
          description: An indicative value of the type of a specific party.
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.IncomeVerification.VerifiedIncomeStatus:
      enum:
        - UnsupportedAccountType
        - NoCreditTransactions
        - Processed
      type: string
      format: ''
    DirectID.Insights.Service.Models.Paging.Meta:
      type: object
      properties:
        totalRecords:
          type: integer
          description: The total available records for this paged response.
          format: int32
      additionalProperties: false
    DirectID.Insights.Service.Models.Paging.PaginatedResponse.DirectID.Insights.Service.Models.BankData.Transaction:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.BankData.Transaction
          description: Primary data of the response.
          nullable: true
        meta:
          $ref: '#/components/schemas/DirectID.Insights.Service.Models.Paging.Meta'
      additionalProperties: false
    DirectID.Insights.Service.Models.PaymentConfirmation.PaymentAccountConfirmation:
      required:
        - accountId
        - accountNumber
        - accountNumberSource
        - applicationId
        - bankCode
        - bankCodeSource
        - consentId
      type: object
      properties:
        consentId:
          minLength: 1
          type: string
          description: The unique identifier of the consent.
        applicationId:
          minLength: 1
          type: string
          description: Application id the consent is associated with.
        accountId:
          minLength: 1
          type: string
          description: Unique identifier for the account at the institution.
        accountNumber:
          minLength: 1
          type: string
          description: The bank’s unique identifier for the account
        bankCode:
          minLength: 1
          type: string
          description: >-
            The national bank transit or transfer code used for identification
            of the bank assigned

            by a central bank in a country, eg: A Routing number(US/CA) or Sort
            code(UK)
        accountNumberSource:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.PaymentConfirmation.Source
        bankCodeSource:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.PaymentConfirmation.Source
      additionalProperties: false
    DirectID.Insights.Service.Models.PaymentConfirmation.Source:
      enum:
        - Bank
        - User
      type: string
      format: ''
    DirectID.Insights.Service.Models.SortField:
      enum:
        - Description
        - Amount
        - Category
        - Classification
        - Date
      type: string
      format: ''
    DirectID.Insights.Service.Services.Models.Affordability.AffordabilityTransactions:
      type: object
      properties:
        affordabilityTransactionId:
          type: integer
          format: int32
        amount:
          type: number
          format: double
        creditDebitIndicator:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Services.Models.CreditDebitIndicator
        description:
          type: string
          nullable: true
        bookingDate:
          type: string
          format: date-time
        categoryName:
          type: string
          nullable: true
        affordabilityType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Services.Models.Affordability.AffordabilityType
      additionalProperties: false
    DirectID.Insights.Service.Services.Models.Affordability.AffordabilityType:
      enum:
        - Fixed
        - Flexible
        - DebtFees
        - Savings
      type: string
      format: ''
    DirectID.Insights.Service.Services.Models.CreditDebitIndicator:
      enum:
        - Credit
        - Debit
      type: string
      format: ''
    DirectID.Models.Errors.Error3:
      type: object
      properties:
        code:
          type: string
          description: Error code.
          nullable: true
        description:
          type: string
          description: Error message.
          nullable: true
        details:
          type: string
          description: Error details.
          nullable: true
        correlationId:
          type: string
          description: User transaction tracking Id
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.AdvancedInsights.BusinessAccountFinancialHealth:
      type: object
      properties:
        accountId:
          type: string
          description: Unique identifier for the account at the institution
          nullable: true
        providerName:
          type: string
          description: The name of the provider e.g., Lloyds.
          nullable: true
        countryCode:
          type: string
          description: An ISO 3166-1 alpha-2 Country code for the account.
          nullable: true
        currencyCode:
          type: string
          description: ISO4217 currency code for the account.
          nullable: true
        accountHolderNames:
          type: array
          items:
            type: string
          description: >-
            The AccountHolderNames is the name or names of the account owner(s)
            represented at an account level.
          nullable: true
        identifiers:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.Identifiers
        accountType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.AccountType
        accountSubType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.AccountSubType
        balances:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.Balances
        lastThirtyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
        lastSixtyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
        lastNinetyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
        lastOneEightyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
        lastThreeSixtyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
      additionalProperties: false
    DirectID.Insights.Service.Models.AdvancedInsights.ConsumerAccountFinancialHealth:
      type: object
      properties:
        accountId:
          type: string
          description: Unique identifier for the account at the institution
          nullable: true
        providerName:
          type: string
          description: The name of the provider e.g., Lloyds.
          nullable: true
        countryCode:
          type: string
          description: An ISO 3166-1 alpha-2 Country code for the account.
          nullable: true
        currencyCode:
          type: string
          description: ISO4217 currency code for the account.
          nullable: true
        accountHolderNames:
          type: array
          items:
            type: string
          description: >-
            The AccountHolderNames is the name or names of the account owner(s)
            represented at an account level.
          nullable: true
        identifiers:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.Identifiers
        accountType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.AccountType
        accountSubType:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.AccountSubType
        balances:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.BankData.Balances
        lastThirtyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
        lastSixtyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
        lastNinetyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
        lastOneEightyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
        lastThreeSixtyDays:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary
      additionalProperties: false
    DirectID.Insights.Service.Models.AdvancedInsights.FinancialHealthSummary:
      type: object
      properties:
        totalCreditsCount:
          type: integer
          description: Total number of all credit transactions over the last X days
          format: int32
        totalDebitsCount:
          type: integer
          description: Total number of all debit transactions over the last X days
          format: int32
        totalCreditsAmount:
          type: number
          description: Total amount of all credit transactions over the last X days
          format: double
        totalDebitsAmount:
          type: number
          description: Total amount of all debit transactions over the last X days
          format: double
        averageCreditsMinusDebits:
          type: number
          description: >-
            Average difference between daily credit amount and daily debit
            amount over the last X days
          format: double
        endOfDayBalanceConsistency:
          type: number
          description: >-
            Average end-of-day balance amount over the last X days (the mean
            value)
          format: double
        endOfDayBalanceLowVal:
          type: number
          description: The minimum end-of-day balance amount over the last X days
          format: double
        endOfDayBalanceHighVal:
          type: number
          description: The maximum end-of-day balance amount over the last X days
          format: double
        endOfDayBalanceVariability:
          type: number
          description: >-
            Standard deviation of the end-of-day balance amount over the last X
            days
          format: double
        percentageOfDaysInNegativeBalance:
          type: number
          description: >-
            Percentage of days with negative end-of-day balance amount over the
            last X days
          format: double
        netCashFlow:
          type: number
          description: >-
            Difference between total inflows (credits) and total outflows
            (debits) over a defined period (e.g., 30, 60, 90, 180, or 360 days).
          format: double
          nullable: true
        endOfDayBalanceCoefficientOfVariation:
          type: number
          description: Variability as a percentage of the average balance.
          format: double
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.Paging.PaginatedResponse.DirectID.Insights.Service.Models.AdvancedInsights.BusinessAccountFinancialHealth:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.BusinessAccountFinancialHealth
          description: Primary data of the response.
          nullable: true
        meta:
          $ref: '#/components/schemas/DirectID.Insights.Service.Models.Paging.Meta'
      additionalProperties: false
    DirectID.Insights.Service.Models.Paging.PaginatedResponse.DirectID.Insights.Service.Models.AdvancedInsights.ConsumerAccountFinancialHealth:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: >-
              #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.ConsumerAccountFinancialHealth
          description: Primary data of the response.
          nullable: true
        meta:
          $ref: '#/components/schemas/DirectID.Insights.Service.Models.Paging.Meta'
      additionalProperties: false
    DirectID.Models.Errors.Error4:
      type: object
      properties:
        code:
          type: string
          description: Error code.
          nullable: true
        description:
          type: string
          description: Error message.
          nullable: true
        details:
          type: string
          description: Error details.
          nullable: true
        correlationId:
          type: string
          description: User transaction tracking Id
          nullable: true
      additionalProperties: false
    ConnectInvitation:
      type: object
      properties:
        invitationId:
          type: string
          description: The unique reference for the invitation.
          format: uuid
      additionalProperties: false
    ConnectInvitationRequest:
      required:
        - customerReference
        - recipientEmail
        - recipientName
      type: object
      properties:
        templateId:
          type: string
          description: >-
            Template ID to be used for the email, if not specified the default
            template

            from configuration will be used
          nullable: true
        recipientName:
          minLength: 1
          pattern: ^([\u00c0-\u01ffa-zA-Z'\d_. \+\-\(\)]){1,100}$
          type: string
          description: Name of the recipient (e.g. full name of the person)
        recipientEmail:
          minLength: 1
          pattern: >-
            ^[\u00c0-\u01ffa-zA-Z0-9_\.-]+@([\u00c0-\u01ffa-zA-Z0-9-]+\.)+[a-zA-Z]{2,10}$
          type: string
          description: Email address of the recipient to whom the email is going to be sent
          format: email
        customerReference:
          minLength: 1
          pattern: ^[a-zA-Z\d_. \+\-\(\)]{1,100}$
          type: string
          description: >-
            Customer reference for this recipient, an example would be a unique
            identifier

            of this user in customer's internal systems
      additionalProperties: false
    ConnectInvitationResponse1:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ConnectInvitation'
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    EmailActivity:
      type: object
      properties:
        event:
          $ref: '#/components/schemas/EmailEvent'
        eventDate:
          type: string
          description: The date when the event occured.
          format: date-time
        smtpErrorCode:
          type: string
          description: >-
            Any sort of error code returned by the receiving server that
            describes the type of

            event triggered.
          nullable: true
        smtpErrorMessage:
          type: string
          description: >-
            Any sort of error response returned by the receiving server that
            describes the reason

            this event type was triggered.
          nullable: true
      additionalProperties: false
    EmailEvent:
      enum:
        - Sent
        - Received
        - Opened
        - Clicked
        - Dropped
        - Processed
        - Deferred
        - Bounce
        - SpamReport
        - Unsubscribe
        - Failed
      type: string
    EmailInvitationActivity:
      type: object
      properties:
        invitationId:
          type: string
          description: The unique reference for the email invitation.
          format: uuid
        recipientName:
          type: string
          description: The name of the recipient that the invitation email was sent to.
          nullable: true
        recipientEmail:
          type: string
          description: The recipient's email address.
          nullable: true
        customerReference:
          type: string
          description: Reference for invitation the provided by the client.
          nullable: true
        invitationCreated:
          type: string
          description: Date when the email invitation was created.
          format: date-time
        activities:
          type: array
          items:
            $ref: '#/components/schemas/EmailActivity'
          description: The list of email activities related to this invitation.
          nullable: true
      additionalProperties: false
    EmailInvitationActivityResponse1:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/EmailInvitationActivity'
        meta:
          $ref: '#/components/schemas/Meta'
      additionalProperties: false
    Error:
      type: object
      properties:
        code:
          type: string
          description: Error code.
          nullable: true
        description:
          type: string
          description: Error message.
          nullable: true
        details:
          type: string
          description: Error details.
          nullable: true
        correlationId:
          type: string
          description: User transaction tracking Id
          nullable: true
      additionalProperties: false
    Meta:
      type: object
      properties:
        totalRecords:
          type: integer
          description: The total available records for this paged response.
          format: int32
          nullable: true
      additionalProperties: false
    DirectID.Insights.Service.Models.AdvancedInsights.AttoScore.AttoScoreData:
      type: object
      properties:
        accountId:
          type: string
          description: The unique identifier of the account.
          nullable: true
        attoScore:
          type: integer
          description: The score generated for the account.
          format: int32
        probabilityOfDefault:
          type: number
          description: The probability of default for the account.
          format: double
        dateGenerated:
          type: string
          description: >-
            ISO8601 formatted date string containing the date the score was
            generated.
          nullable: true
        version:
          type: string
          description: The version of the model used to compute the score.
          nullable: true
        range:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.AttoScore.AttoScoreRange
      additionalProperties: false
    DirectID.Insights.Service.Models.AdvancedInsights.AttoScore.AttoScoreRange:
      type: object
      properties:
        minScore:
          type: integer
          description: The Minimum score value.
          format: int32
        maxScore:
          type: integer
          description: The Maximum score value.
          format: int32
      additionalProperties: false
    DirectID.Insights.Service.Models.AdvancedInsights.AttoScore.AttoScoreResponse:
      type: object
      properties:
        data:
          $ref: >-
            #/components/schemas/DirectID.Insights.Service.Models.AdvancedInsights.AttoScore.AttoScoreData
        meta:
          $ref: '#/components/schemas/DirectID.Data.Common.Response.EmptyMetaData'
      additionalProperties: false
    DirectID.Models.Errors.Error5:
      type: object
      properties:
        code:
          type: string
          description: Error code.
          nullable: true
        description:
          type: string
          description: Error message.
          nullable: true
        details:
          type: string
          description: Error details.
          nullable: true
        correlationId:
          type: string
          description: User transaction tracking Id
          nullable: true
      additionalProperties: false
    AccountIdentifierType:
      enum:
        - AccountNumber
        - BankCode
        - IBAN
      type: string
    AccountType:
      enum:
        - Other
        - CurrentAccount
        - CreditCard
        - Mortgage
        - Loan
        - Savings
        - BuyNowPayLater
        - Utilities
      type: string
    ConnectedAccount:
      type: object
      properties:
        accountId:
          type: string
          description: Id of the Open Banking Account Connected
          nullable: true
        providerId:
          type: string
          description: Id of the Open Banking Provider
          nullable: true
        brandId:
          type: string
          description: Id of the Open Banking Brand
          nullable: true
        providerName:
          type: string
          description: Name of the Open Banking Provider
          nullable: true
        creditInformationAccountStatus:
          type: string
          description: Account Status provided by the Credit Information Provider
          nullable: true
        creditInformationAccountType:
          $ref: '#/components/schemas/AccountType'
        currency:
          type: string
          description: Currency of the Account
          nullable: true
        accountIdentifiers:
          type: array
          items:
            $ref: '#/components/schemas/UserAccountIdentifier'
          description: List of Account Identifiers
          nullable: true
        lastUpdated:
          type: string
          description: Account Last Updated Date
          format: date-time
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    StatusMessageResponse:
      type: object
      properties:
        status:
          type: boolean
        message:
          type: string
          nullable: true
      additionalProperties: false
    UnConnectedAccount:
      type: object
      properties:
        brandId:
          type: string
          description: Id of the Open Banking Brand
          nullable: true
        providerId:
          type: string
          description: Id of the Open Banking Provider
          nullable: true
        lenderName:
          type: string
          description: Name of the Credit Information Provider
          nullable: true
        connectionSupported:
          type: boolean
          description: |-
            Flag to indicate if we have matched the Open Banking Provider
            with the Credit Information Provider
        isClosed:
          type: boolean
          description: Flag to indicate if the Credit Information account is closed
        creditInformationAccountStatus:
          type: string
          description: Account Status provided by the Credit Information Provider
          nullable: true
        creditInformationAccountType:
          $ref: '#/components/schemas/AccountType'
        currency:
          type: string
          description: Currency of the Account
          nullable: true
        accountIdentifiers:
          type: array
          items:
            $ref: '#/components/schemas/UserAccountIdentifier'
          description: List of Account Identifiers
          nullable: true
      additionalProperties: false
    UserAccountIdentifier:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/AccountIdentifierType'
        value:
          type: string
          nullable: true
      additionalProperties: false
    UserAccountsResponse:
      type: object
      properties:
        userId:
          type: string
          description: Id of the User
          format: uuid
        connectedAccounts:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedAccount'
          description: List of Credit Accounts Successfully Connected
          nullable: true
        unConnectedAccounts:
          type: array
          items:
            $ref: '#/components/schemas/UnConnectedAccount'
          description: List of Credit Accounts UnConnected
          nullable: true
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: http
      description: "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below.\r\n\r\nExample: \"Bearer token123\""
      scheme: bearer
servers:
  - url: https://uk.api.atto.co
    description: UK Environment (Production)
  - url: https://us.api.atto.co
    description: US Environment (Production)
x-tagGroups:
  - name: Authorization API
    tags:
      - Get Token
  - name: Connect Invitation API
    tags:
      - Connect Invitation
  - name: Consent API
    tags:
      - Get Consents
      - Revoke Consent
  - name: Data API
    tags:
      - Bank Account Verification
      - Bank Data
      - Income Verification
      - Affordability
  - name: Stored Data API
    tags:
      - Bank Data (stored)
      - Income Verification (stored)
      - Payment Account Confirmation
      - Affordability (stored)
  - name: Atto Score API (Beta)
    tags:
      - Atto Score
  - name: Advanced Consumer Insights API
    tags:
      - Consumer Financial Health
  - name: Advanced Business Insights API
    tags:
      - Business Financial Health
  - name: Insights Engine
    tags:
      - Categorisation Engine
      - Income Verification Engine
      - Affordability Engine
  - name: Reporting
    tags:
      - Get Statement
  - name: Credit Information
    tags:
      - Accounts
tags:
  - name: Bank Account Verification
    description: >-
      ### Integration {% #bank-account-verification-integration %}


      In response to your call, you will receive a JSON object containing the
      verification result and optionally a reason of a failed verification.


      We currently support IBAN or a bank code as account identifiers. Given
      below is a list of supported bank codes for a country/region.


      |Bank Code|Region|

      |---|---|

      |Routing Number|US, CA|

      |Sort Code|UK|

      |BIC|Global provided the bank is part of SWIFT. Please note not all banks
      will expose this even if they are part of the SWIFT network.|


      ### Authorization {% #bank-account-verification-authorization %}


      This API requires a bearer token using the `api:data` scope
  - name: Bank Data
    description: >-
      ### Overview {% #data-api-overview %}


      The most common use case is fetching user's bank account data from the
      Atto Data API.


      ### Authorization {% #data-api-authorization %}


      This API requires a bearer token using the `api:data` scope


      ### Deprecated endpoint {% #data-api-deprecated %}


      The endpoint `/data/v1/consents/{consentId}/accounts`, previously returned
      all the data we received from the bank/data provider including all
      transactions along with any data enrichment (if enabled for your
      configuration) we provide at the time of the request.


      ### Latest endpoints {% #data-api-latest %}


      The above endpoint has been split into the following:


      - `/data/v2/consents/{consentId}/accounts`
        _(Returns a list containing all accounts shared for a consent)_

      - `/data/v2/consents/{consentId}/accounts/{accountId}`
        _(Returns a specific account shared for a consent)_

      - `/data/v2/consents/{consentId}/accounts/{accountId}/balances`
        _(Returns the balance information for a specific account)_

      - `/data/v2/consents/{consentId}/accounts/{accountId}/transactions`
        _(Returns a list of transactions tied to a specific account. The data returned by this endpoint is paginated and subsequent calls using the links provided in response body may be required to retrieve the full data set)_

      _It's important to note that when trying to fetch 3 months or more worth
      of data OR if the account has lots of transactions, it is best to use the
      paginated endpoint for this owing to the large volume of data involved._


      The transaction data returned via this endpoint has a sliding date window
      which is dependent upon the time of connection and the configured days of
      historical transactions.

      For instance, if the user connected their account on the 15th of the
      Month, and the client has been configured to return the last 10 days of
      transactions, the transactions fetched will be from the 5th to the 15th.
      If this data is requested 2 days later from the time of initial connection
      (15th), i.e. on the 17th this will return the transactions from the 7th to
      the 17th.


      ### Pagination Strategy {% #data-api-pagination %}


      We have added a `links` component to our responses to easily paginate
      through large volumes of data. The `next` and `prev` links represent
      relative uris. You can append our `baseUrl` to get the next or prev set of
      data if available as indicated below:


      ```javascript

      "links": {
        "prev": "/relativeUri/for_previous_page",
        "next": "/relativeUri/for_next_page"
        }
      ```


      Please note for the UK Banks the SCA rules apply as well in addition to
      the sliding date range, the maximum allowed date range is last 90 days
      after the SCA expiry.


      For Data retention see our [Bank Data Stored
      API](<#tag/Bank-Data-(stored)>).
  - name: Income Verification
    description: >-
      ### Overview {% #income-verification-overview %}


      Verify an individual’s income using Atto Income Verification.


      This solution, which accesses the individual’s bank statements for up to
      12 months, is powered using our own unique algorithms and will return both
      single and multiple income streams to provide an accurate income figure
      along with a confidence score. Benefits can be included or excluded in the
      income calculation. 


      Verified income is up to three main recurring income streams plus all
      benefit streams if present. Only credit transactions with amount > £50 are
      considered in the ranking mechanism, smaller credit transactions are
      ignored.  In addition, all benefit streams will be shown if present,
      regardless the value.

      The main income streams are prioritized by total amount, their rank values
      are `One`, `Two` or `Three` . The benefit streams are returned in any
      case. Benefits aren't ranked, and rank is `null` for them. For example, if
      there are 3 recurring income streams and 2 benefit streams, then 5 income
      streams will be returned in total.


      ### Integration {% #income-verification-integration %}


      If the individual has connected their account using Atto Connect, you can
      use the `GET /income-verification/v1/consents/{consentId}/verifications`
      endpoint to verify an individual's income.


      ### Authorization {% #income-verification-authorization %}


      This API requires a bearer token using the `api:data` scope
  - name: Bank Data (stored)
    description: >-
      ### Overview {% #insights-overview %}


      This set of APIs provides the same functionality as the Data API but the
      data is stored with Atto. 

      There is an an
      [endpoint](#tag/Bank-Data-(stored)/paths/~1stored-data~1v1~1consents~1{consentId}~1refresh/post)
      that refreshes that data as well.

      This set of APIs can be enabled by [contacting
      support](https://www.atto.co/about/contact).


      ### Authorization {% #insights-authorization %}


      This API requires a bearer token using the `api:stored_data` scope
  - name: Income Verification (stored)
    description: >-
      ### Overview {% #stored-income-verification-overview %}


      This set of APIs provides the same functionality as the Income
      Verification endpoint but use the data and calculation that is stored
      instead of fetching it from the banks.


      ### Authorization {% #stored-income-verification-authorization %}


      This API requires a bearer token using the `api:stored_data` scope
  - name: Payment Account Confirmation
    description: >-
      ### Overview {% #payment-confirmation-overview %}


      The Payment Confirmation stage allows a user to select an account which
      they would like to receive payments into. It is an optional stage in Atto
      Connect.

      This endpoint allows the customer to retrieve the information that has
      been submitted by the user.


      ### Authorization {% #payment-confirmation-authorization %}


      This API requires a bearer token using the `api:stored_data` scope
  - name: Get Token
    description: >
      ### Overview {% #authentication-overview %}


      To access our APIs you need to pass your `client_id` and `client_secret`,
      along with the `scope` that you are requesting, to our authentication
      service. If that all goes according to plan then an **access_token** will
      be returned to you, which is valid for one hour.


      ### Integration {% #authentication-integration %}


      A request with the following payload to our endpoint should return an
      access token for use in subsequent calls in any of our Data API endpoints.


      |Key|Value|

      |---|---|

      |`grant_type`|`client_credentials`|

      |`client_id`|The `client_id` that we supplied to you|

      |`client_secret`|The `client_secret` that we supplied to you|

      |`scope`|The scope value for the API that you need access to|


      Please find below the scopes values for our APIs, these values need to be
      specified when requesting a token:


      |API| Scope|

      |---|---|

      |Consent Service|`api:consent`|

      |Data API|`api:data`|

      |Stored Data API|`api:stored_data`|

      |Advanced Insights API|`api:advanced_insights`|

      |Connect Invitation API|`api:connect_invitation`|

      |Credit Information API|`api:cis`|



      {% admonition type="info" %}

      Please note that the request should have a content-type of
      <code>application/x-www-form-urlencoded</code>

      {% /admonition %}


      Assuming the authentication was successful, you should receive a [200
      OK](https://httpstatuses.com/200) response.


      The important fields in the authentication response are:


      |Field|Description|

      |-|-|

      |`expires_in`|The number of seconds before the token expires (defaults to
      3600 seconds)|

      |`token_type`|`Bearer`|

      |`access_token`|The token you will use in subsequent requests|


      If you expect to make repeated and/or delayed calls using this
      `access_token`, you should pay attention to  the `expires_in` field and
      request a new token if you have exceeded the expiration time.


      ### Using the access token {% #authentication-access-token %}


      Once you have the `access_token`, you'll assign it to the `Authorization`
      header with a prefix of `Bearer`. More information can be found
      [**here**](https://oauth.net/2/bearer-tokens/).
  - name: Get Consents
    description: >-
      ### Overview {% #consent-overview %}


      This allows you to retrieve details for consents such as expiry date,
      status, provider, permissions and any other detail about the consent that
      has been stored.  


      ### Authorization {% #consent-authorization %}


      This API requires a bearer token using the `api:consent` scope
  - name: Revoke Consent
    description: >-
      ### Overview {% #consent-revoke-overview %}


      This allows you to revoke an active consent. Please note that this will
      not remove any stored data for the consent. 


      ### Authorization {% #consent-revoke-authorization %}


      This API requires a bearer token using the `api:consent` scope
  - name: Categorisation Engine
    description: >-
      ### Integration {% #categorisation-integration %}


      If you wish to categorise any transactions that you have, you can do so
      using the `POST /insights-engine/v1/enrich-transactions` endpoint. 

      This will be using the data supplied via the endpoint in the request.
      Please ensure that this product is enabled for your app by talking to
      support before using this endpoint. 


      In response to your call, you will receive a JSON object containing the
      original transations with added classes and categories along with
      confidence score, and merchant name.


      ### Authorization {% #categorisation-authorization %}


      This API requires a bearer token using the `api:data` scope
  - name: Income Verification Engine
    description: >-
      ### Integration {% #income-verification-engine-integration %}

      If you wish to verify an individual's income with your own transaction
      data, you can do so using the `POST
      /insights-engine/v1/income-verification` endpoint. 

      This will be using the data supplied via the endpoint in the request.
      Please ensure that this product is enabled for your app by talking to
      support before using this endpoint. 


      There are two additional query parameters that can be specified when
      making a request:


      * `excludeBenefits` that will omit transactions and income streams that
      were identified as benefits (UK only)

      * `includeFlags` that will return an extended response containing all the
      flags used in calculating confidence score rather than just the confidence
      score itself.


      In response to your call, you will receive a JSON object containing
      relevant income streams along with confidence score and estimated salary
      for each one, as well as a total confidence score and estimated salary for
      all income streams combined.


      ### Authorization {% #income-verification-engine-authorization %}


      This API requires a bearer token using the `api:data` scope
  - name: Affordability Engine
    description: >-
      ### Integration {% #affordability-engine-integration %}


      If you wish to calculate affordability with any transactions that you
      have, you can do so using the `POST /insights-engine/v1/affordability`
      endpoint. This will be using the data supplied via the endpoint in the
      request. Please ensure that this product is enabled for your app by
      talking to support before using this endpoint.


      There are one additional request parameters that can be specified when
      making a request:


      * `includeFlexibleCosts`, when `true`, returns transactions marked as
      flexible and will include those transactions in the affordability
      calculation. When this value is `false`, it will still return the
      transactions marked as flexible but will omit those transactions from the
      affordability calculation. Please note that `flexibleCosts` and
      `estimatedFlexibleCosts` values will be still shown in case there have
      been transactions that are associated with flexible costs, but these
      values are not taken into account while calculating
      `estimatedAffordability`. Note, the default value for this parameter is
      `true`


      In response to your call, you will receive a JSON object containing each
      months affordability with an estimated total for the months supplied.


      There is a maximum transaction threshold of 5000 which will return an
      invalid request response if the number of transaction sent is greater than
      this.


      ### Authorization {% #affordability-engine-authorization %}


      This API requires a bearer token using the `api:data` scope
  - name: Affordability
    description: >-
      ### Integration {% #affordability-integration %}


      If you wish to get the affordability for a given consent, you can do so
      using the `GET /affordability/v1/consents/:consentId` endpoint. Please
      ensure that this product is enabled for your app by talking to support
      before using this endpoint.


      There is one additional request parameters that can be specified when
      making a request:


      * `includeFlexibleCosts`, when `true`, returns transactions marked as
      flexible and will include those transactions in the affordability
      calculation. When this value is `false`, it will still return the
      transactions marked as flexible but will omit those transactions from the
      affordability calculation. Please note that `flexibleCosts` and
      `estimatedFlexibleCosts` values will be still shown in case there have
      been transactions that are associated with flexible costs, but these
      values are not taken into account while calculating
      `estimatedAffordability`. Note, the default value for this parameter is
      `true`


      In response to your call, you will receive a JSON object containing each
      months affordability with an estimated total for the months supplied with
      the account details.


      ### Authorization {% #affordability-authorization %}


      This API requires a bearer token using the `api:data` scope
  - name: Affordability (stored)
    description: >-
      ### Overview {% #stored-affordability-overview %}


      This set of APIs provides the same functionality as the Affordability
      endpoint but use the data and calculation that is stored instead of
      fetching it from the banks. After a refresh for a consent has been
      completed the monthly affordabilities data is updated and the estimated
      figures returned by this endpoint are recalculated.


      ### Authorization {% #stored-affordability-authorization %}


      This API requires a bearer token using the `api:stored_data` scope
  - name: Consumer Financial Health
    description: >
      ### Integration {% #consumer-financial-health-integration %}


      If the individual has connected their account using Atto Connect, you can
      use the `GET
      /advanced-insights/v1/consents/{consentId}/consumer-financial-health`
      endpoint to verify an individual's financial health.


      <br />


      ### Authorization {% #consumer-financial-health-authorization %}


      This API requires a bearer token using the `api:advanced_insights` scope.
      Also bear in mind that this API works only when data storage is enabled


      <br />


      ### Details {% #consumer-financial-health-details %}


      We are taking customers' current balance as a basis for the calculation.
      Current balance does not contain any `Pending` transactions and drawn
      Overdraft amount. However our API response contains available balance
      amount, which will include `Pending` transactions and drawn Overdraft
      amount if there are any.


      - In case it is possible to get 365 days worth of data from the bank, then
      the service will return calculations for all available periods:
      `lastThirtyDays`, `lastSixtyDays`, `lastNinetyDays`, `lastOneEightyDays`,
      `lastThreeSixtyDays`.


      - If data period is less than 365 days (for example 90 days), then service
      will return calculations for `lastThirtyDays`, `lastSixtyDays` and
      `lastNinetyDays`. Calculations for all other periods will be equal to
      `lastNinetyDays`.


      - If the account has had no recent activity then some of the calculations
      will likely be zero. For example, if there have been no transactions
      within the past 30 days, then the Total Credit and Total Debit for the
      `lastThirtyDays` would be zero. The remaining values will be calculated
      based on the account balance amount.


      - If data period is more than 365 days, then we will return all available
      periods up to `lastThreeSixtyDays`.


      - To capture the most recent developments and account trends it is
      recommended to analyze each calculation over all time periods.
  - name: Business Financial Health
    description: >
      ### Integration {% #business-financial-health-integration %}


      If the individual has connected their account using Atto Connect, you can
      use the `GET
      /advanced-insights/v1/consents/{consentId}/business-financial-health`
      endpoint to verify a business' financial health.


      <br />


      ### Authorization {% #business-financial-health-authorization %}


      This API requires a bearer token using the `api:advanced_insights` scope.
      Also bear in mind that this API works only when data storage is enabled


      <br />


      ### Details {% #business-financial-health-details %}


      We are taking customers' current balance as a basis for the calculation.
      Current balance does not contain any `Pending` transactions and drawn
      Overdraft amount. However our API response contains available balance
      amount, which will include `Pending` transactions and drawn Overdraft
      amount if there are any.


      - In case it is possible to get 365 days worth of data from the bank, then
      the service will return calculations for all available periods:
      `lastThirtyDays`, `lastSixtyDays`, `lastNinetyDays`, `lastOneEightyDays`,
      `lastThreeSixtyDays`.


      - If data period is less than 365 days (for example 90 days), then service
      will return calculations for `lastThirtyDays`, `lastSixtyDays` and
      `lastNinetyDays`. Calculations for all other periods will be equal to
      `lastNinetyDays`.


      - If the account has had no recent activity then some of the calculations
      will likely be zero. For example, if there have been no transactions
      within the past 30 days, then the Total Credit and Total Debit for the
      `lastThirtyDays` would be zero. The remaining values will be calculated
      based on the account balance amount.


      - If data period is more than 365 days, then we will return all available
      periods up to `lastThreeSixtyDays`.


      - To capture the most recent developments and account trends it is
      recommended to analyze each calculation over all time periods.
  - name: Connect Invitation
    description: >-
      ### Overview {% #connect-invitation-overview %}


      Connect Invitation API offers the capability to effortlessly send Connect
      invitations to your users. It is underpinned by Atto's outbound email
      solution which supports dynamic components that provide flexible email
      content and customisation. The email subject, sender address and message
      will be configured in the email template for you by our support team.


      Get immediate feedback about email delivery using our [v2
      webhooks](/content/docs/guides/platform-integration/notifications#v2-webhooks),
      which will inform you if the invitation email's state has been `Sent`,
      `Received`, `Opened`, `Clicked`, or `Failed`. This provides additional
      tracking possibilities to build more sophisticated workflows based on time
      period and see if the customer has actioned a Connect Invitation email
      during the configured period.


      ### Authorization {% #connect-invitation-authorization %}


      This API requires a bearer token using the `api:connect_invitation` scope.
  - name: Get Statement
    description: >-
      ### Integration {% #atto-statement-integration %}


      If you wish to get the PDF statement of an account for a given consent,
      you can do so using the `GET
      /stored-data/v1/consents/:consentId/accounts/:accountId/statement`
      endpoint.


      ### Authorization {% #atto-statement-authorization %}


      This API requires a bearer token using the `api:stored_data` scope.
  - name: Atto Score
    description: >-
      ### Integration {% #atto-score-integration %}


      If you wish to receive the Atto score, you can do so using the `GET
      /atto-score/v1/consents/{consentId}/accounts/{accountId}` 

      endpoint. 


      In response to your call, you will receive a JSON object containing the
      score. 



      ### Authorization {% #atto-score-authorization %}


      This API requires a bearer token using the `api:advanced_insights` scope


      ### Errors {% #atto-score-errors %}


      Accounts must pass validation before a score can be generated. If
      validation fails, then requests to `GET
      /atto-score/v1/consents/{consentId}/accounts/{accountId}` will produce a
      `422 Unprocessable Entity` response. Only the first validation failure
      encountered will be stored and returned on request.


      ```javascript

      {
          "code": "atto_score_not_generated",
          "description": "Atto Score could not be generated.",
          "details": "<see table below for all possible failure reasons>",
          "correlationId": "string"
      }


      ```


      | Possible Failures                                     |

      | ----------------------------------------------------- |

      | No transactions                                       |

      | Account is not a GBP account                          |

      | Account is not a Personal account                     |

      | Account is not a Current account                      |

      | The minimum transaction period of 90 days was not met |

      | The minimum transaction count of 50 was not met       |

      | Transactions without BookingDate                      |

      | Account balances are null                             |
  - name: Accounts
    description: >-
      ### Integration {% #atto-credit-information-integration %}


      If you wish to get a list of credit information accounts for a user, you
      can do so using the `GET /connect/users/v1/{userId}/accounts` endpoint.


      ### Authorization {% #atto-credit-information-authorization %}


      This API requires a bearer token using the `api:cis` scope.
