{
  "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.\nThe result can be one of the following four statuses:\n* Pass - Account identifiers were found and name(s) were matched.\n* Fail - Account identifiers were found and name(s) were not matched.\n* Partial - Account identifiers were not found and name(s) were matched.\n* 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.\n\n\nDoes 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.\n\n\nDoes 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.\n\n\nDoes 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.\n\n\nDoes 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.\n\n\nThe 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.\n\n\nDoes 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.\nIf 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.\nIf 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, CounterPartyName].",
            "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"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "Optional from date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "Optional to date",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "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.\nIf 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:\n* Incorrect templateId\n* 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/Atto.ConnectAPI.Service.Services.Models.CIS.StatusMessageResponse"
                }
              }
            }
          },
          "204": {
            "description": "Successfully deleted"
          },
          "401": {
            "description": "Client is not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "User with Id not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "A state conflict exists for the resource that prevents operation completing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Atto.ConnectAPI.Service.Services.Models.CIS.StatusMessageResponse"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occurred"
          }
        },
        "security": [
          {
            "Bearer": [
              "api:cis"
            ]
          }
        ]
      },
      "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/Atto.ConnectAPI.Service.Models.User.Accounts.UserAccountsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Client is not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occurred"
          }
        },
        "security": [
          {
            "Bearer": [
              "api:cis"
            ]
          }
        ]
      }
    }
  },
  "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",
          "UserSupplied"
        ],
        "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\nIf 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\nthe 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\nthe 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\nautomated 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\nby 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\nby 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\nto facilitate the communication and processing of cross border transactions with a reduced \nrisk of transcription errors.",
            "nullable": true
          },
          "bic": {
            "type": "string",
            "description": "BIC (Business Identifier Code) is an ISO 9362 standard for routing business transactions\nand 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\nby 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\nis present for this group ( > 0)"
          },
          "varianceTolerance5Percent": {
            "type": "boolean",
            "description": "Boolean flag for determining whether the difference between estimated income and each\nof the last three months incomes is >= -5%"
          },
          "varianceTolerance10Percent": {
            "type": "boolean",
            "description": "Boolean flag for determining whether the difference between estimated income and each\nof the last three months incomes is >= -10%"
          },
          "mostRecentCheckValue": {
            "type": "boolean",
            "description": "Boolean flag for determining whether the most recent recorded income is higher than\nor 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\nby 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\nby 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.\nBIC is needed when transferring money between banks,\nin particular for international wire transfers.\nBIC 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,\ne.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\nmerchant 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.\nThis 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\nthe 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\nby 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\nby 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.\nBIC is needed when transferring money between banks,\nin particular for international wire transfers.\nBIC code is interchangeably used with SWIFT code",
            "nullable": true
          },
          "secondaryIdentification": {
            "type": "string",
            "description": "Additional information for identifying the account in the institution,\ne.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\nmerchant 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.\nThis 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\nthe date and time the consent will expire.",
            "nullable": true
          },
          "connectedDate": {
            "type": "string",
            "description": "ISO 8601 (UTC) encoded date time string containing\nthe 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\nthe 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
          },
          "counterPartyName": {
            "type": "string",
            "description": "Name of the counterparty involved in the transaction (if available) — the creditor for debits and the debtor for credits.",
            "nullable": true
          },
          "merchantDetails": {
            "$ref": "#/components/schemas/DirectID.Insights.Service.Models.BankData.MerchantDetails"
          },
          "enrichedData": {
            "$ref": "#/components/schemas/DirectID.Insights.Service.Models.BankData.EnrichedData"
          },
          "transfer": {
            "$ref": "#/components/schemas/DirectID.Insights.Service.Services.Models.TransferTransaction"
          }
        },
        "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\nby 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\nis present for this group ( > 0)"
          },
          "varianceTolerance5Percent": {
            "type": "boolean",
            "description": "Boolean flag for determining whether the difference between estimated income and each\nof the last three months incomes is >= -5%"
          },
          "varianceTolerance10Percent": {
            "type": "boolean",
            "description": "Boolean flag for determining whether the difference between estimated income and each\nof the last three months incomes is >= -10%"
          },
          "mostRecentCheckValue": {
            "type": "boolean",
            "description": "Boolean flag for determining whether the most recent recorded income is higher than\nor 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\nby 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.Insights.Service.Services.Models.TransferTransaction": {
        "type": "object",
        "properties": {
          "pairId": {
            "type": "integer",
            "description": "The Id which both the transaction out and transaction in will share",
            "format": "int64"
          },
          "associatedAccountId": {
            "type": "string",
            "description": "Account ID that the transfer has either gone to or come from, depending on whether this is a debit or credit",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a transfer transaction between two associated accounts."
      },
      "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\nfrom configuration will be used",
            "nullable": true
          },
          "configName": {
            "type": "string",
            "description": "Customer Configuration to be used for the invite, important where customer config\ndictates which sort of connect flow the user will be thrown into",
            "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\nof 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\nevent triggered.",
            "nullable": true
          },
          "smtpErrorMessage": {
            "type": "string",
            "description": "Any sort of error response returned by the receiving server that describes the reason\nthis 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
          },
          "configName": {
            "type": "string",
            "description": "The customer configuration to be used for the email invitation",
            "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
      },
      "Atto.ConnectAPI.Service.Models.Common.Enums.AccountIdentifierType": {
        "enum": [
          "AccountNumber",
          "BankCode",
          "IBAN"
        ],
        "type": "string"
      },
      "Atto.ConnectAPI.Service.Models.Common.Enums.AccountType": {
        "enum": [
          "Other",
          "CurrentAccount",
          "CreditCard",
          "Mortgage",
          "Loan",
          "Savings",
          "BuyNowPayLater",
          "Utilities"
        ],
        "type": "string"
      },
      "Atto.ConnectAPI.Service.Models.User.Accounts.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/Atto.ConnectAPI.Service.Models.Common.Enums.AccountType"
          },
          "currency": {
            "type": "string",
            "description": "Currency of the Account",
            "nullable": true
          },
          "accountIdentifiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Atto.ConnectAPI.Service.Models.User.Accounts.UserAccountIdentifier"
            },
            "description": "List of Account Identifiers",
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "description": "Account Last Updated Date",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "Atto.ConnectAPI.Service.Models.User.Accounts.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\nwith 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/Atto.ConnectAPI.Service.Models.Common.Enums.AccountType"
          },
          "currency": {
            "type": "string",
            "description": "Currency of the Account",
            "nullable": true
          },
          "accountIdentifiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Atto.ConnectAPI.Service.Models.User.Accounts.UserAccountIdentifier"
            },
            "description": "List of Account Identifiers",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Atto.ConnectAPI.Service.Models.User.Accounts.UserAccountIdentifier": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/Atto.ConnectAPI.Service.Models.Common.Enums.AccountIdentifierType"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Atto.ConnectAPI.Service.Models.User.Accounts.UserAccountsResponse": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Id of the User",
            "format": "uuid"
          },
          "connectedAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Atto.ConnectAPI.Service.Models.User.Accounts.ConnectedAccount"
            },
            "description": "List of Credit Accounts Successfully Connected",
            "nullable": true
          },
          "unConnectedAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Atto.ConnectAPI.Service.Models.User.Accounts.UnConnectedAccount"
            },
            "description": "List of Credit Accounts UnConnected",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Atto.ConnectAPI.Service.Services.Models.CIS.StatusMessageResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Microsoft.AspNetCore.Mvc.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": {}
      }
    },
    "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 %}\n\nIn response to your call, you will receive a JSON object containing the verification result and optionally a reason of a failed verification.\n\nWe currently support IBAN or a bank code as account identifiers. Given below is a list of supported bank codes for a country/region.\n\n|Bank Code|Region|\n|---|---|\n|Routing Number|US, CA|\n|Sort Code|UK|\n|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.|\n\n### Authorization {% #bank-account-verification-authorization %}\n\nThis API requires a bearer token using the `api:data` scope"
    },
    {
      "name": "Bank Data",
      "description": "### Overview {% #data-api-overview %}\n\nThe most common use case is fetching user's bank account data from the Atto Data API.\n\n### Authorization {% #data-api-authorization %}\n\nThis API requires a bearer token using the `api:data` scope\n\n### Deprecated endpoint {% #data-api-deprecated %}\n\nThe 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.\n\n### Latest endpoints {% #data-api-latest %}\n\nThe above endpoint has been split into the following:\n\n- `/data/v2/consents/{consentId}/accounts`\n  _(Returns a list containing all accounts shared for a consent)_\n\n- `/data/v2/consents/{consentId}/accounts/{accountId}`\n  _(Returns a specific account shared for a consent)_\n\n- `/data/v2/consents/{consentId}/accounts/{accountId}/balances`\n  _(Returns the balance information for a specific account)_\n\n- `/data/v2/consents/{consentId}/accounts/{accountId}/transactions`\n  _(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)_\n\n_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._\n\nThe 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.\nFor 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.\n\n### Pagination Strategy {% #data-api-pagination %}\n\nWe 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:\n\n```javascript\n\"links\": {\n  \"prev\": \"/relativeUri/for_previous_page\",\n  \"next\": \"/relativeUri/for_next_page\"\n  }\n```\n\nPlease 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.\n\nFor Data retention see our [Bank Data Stored API](<#tag/Bank-Data-(stored)>)."
    },
    {
      "name": "Income Verification",
      "description": "### Overview {% #income-verification-overview %}\n\nVerify an individual’s income using Atto Income Verification.\n\nThis 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. \n\nVerified 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.\nThe 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.\n\n### Integration {% #income-verification-integration %}\n\nIf 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.\n\n### Authorization {% #income-verification-authorization %}\n\nThis API requires a bearer token using the `api:data` scope"
    },
    {
      "name": "Bank Data (stored)",
      "description": "### Overview {% #insights-overview %}\n\nThis set of APIs provides the same functionality as the Data API but the data is stored with Atto. \nThere is an an [endpoint](#tag/Bank-Data-(stored)/paths/~1stored-data~1v1~1consents~1{consentId}~1refresh/post) that refreshes that data as well.\nThis set of APIs can be enabled by [contacting support](https://www.atto.co/about/contact).\n\n### Authorization {% #insights-authorization %}\n\nThis API requires a bearer token using the `api:stored_data` scope"
    },
    {
      "name": "Income Verification (stored)",
      "description": "### Overview {% #stored-income-verification-overview %}\n\nThis 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.\n\n### Authorization {% #stored-income-verification-authorization %}\n\nThis API requires a bearer token using the `api:stored_data` scope"
    },
    {
      "name": "Payment Account Confirmation",
      "description": "### Overview {% #payment-confirmation-overview %}\n\nThe 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.\nThis endpoint allows the customer to retrieve the information that has been submitted by the user.\n\n### Authorization {% #payment-confirmation-authorization %}\n\nThis API requires a bearer token using the `api:stored_data` scope"
    },
    {
      "name": "Get Token",
      "description": "### Overview {% #authentication-overview %}\n\nTo 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.\n\n### Integration {% #authentication-integration %}\n\nA 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.\n\n|Key|Value|\n|---|---|\n|`grant_type`|`client_credentials`|\n|`client_id`|The `client_id` that we supplied to you|\n|`client_secret`|The `client_secret` that we supplied to you|\n|`scope`|The scope value for the API that you need access to|\n\nPlease find below the scopes values for our APIs, these values need to be specified when requesting a token:\n\n|API| Scope|\n|---|---|\n|Consent Service|`api:consent`|\n|Data API|`api:data`|\n|Stored Data API|`api:stored_data`|\n|Advanced Insights API|`api:advanced_insights`|\n|Connect Invitation API|`api:connect_invitation`|\n|Credit Information API|`api:cis`|\n\n\n{% admonition type=\"info\" %}\nPlease note that the request should have a content-type of <code>application/x-www-form-urlencoded</code>\n{% /admonition %}\n\nAssuming the authentication was successful, you should receive a [200 OK](https://httpstatuses.com/200) response.\n\nThe important fields in the authentication response are:\n\n|Field|Description|\n|-|-|\n|`expires_in`|The number of seconds before the token expires (defaults to 3600 seconds)|\n|`token_type`|`Bearer`|\n|`access_token`|The token you will use in subsequent requests|\n\nIf 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.\n\n### Using the access token {% #authentication-access-token %}\n\nOnce 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/).\n"
    },
    {
      "name": "Get Consents",
      "description": "### Overview {% #consent-overview %}\n\nThis 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.  \n\n### Authorization {% #consent-authorization %}\n\nThis API requires a bearer token using the `api:consent` scope"
    },
    {
      "name": "Revoke Consent",
      "description": "### Overview {% #consent-revoke-overview %}\n\nThis allows you to revoke an active consent. Please note that this will not remove any stored data for the consent. \n\n### Authorization {% #consent-revoke-authorization %}\n\nThis API requires a bearer token using the `api:consent` scope"
    },
    {
      "name": "Categorisation Engine",
      "description": "### Integration {% #categorisation-integration %}\n\nIf you wish to categorise any transactions that you have, you can do so using the `POST /insights-engine/v1/enrich-transactions` endpoint. \nThis 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. \n\nIn 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.\n\n### Authorization {% #categorisation-authorization %}\n\nThis API requires a bearer token using the `api:data` scope"
    },
    {
      "name": "Income Verification Engine",
      "description": "### Integration {% #income-verification-engine-integration %}\nIf 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. \nThis 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. \n\nThere are two additional query parameters that can be specified when making a request:\n\n* `excludeBenefits` that will omit transactions and income streams that were identified as benefits (UK only)\n* `includeFlags` that will return an extended response containing all the flags used in calculating confidence score rather than just the confidence score itself.\n\nIn 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.\n\n### Authorization {% #income-verification-engine-authorization %}\n\nThis API requires a bearer token using the `api:data` scope"
    },
    {
      "name": "Affordability Engine",
      "description": "### Integration {% #affordability-engine-integration %}\n\nIf 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.\n\nThere are one additional request parameters that can be specified when making a request:\n\n* `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`\n\nIn response to your call, you will receive a JSON object containing each months affordability with an estimated total for the months supplied.\n\nThere is a maximum transaction threshold of 5000 which will return an invalid request response if the number of transaction sent is greater than this.\n\n### Authorization {% #affordability-engine-authorization %}\n\nThis API requires a bearer token using the `api:data` scope"
    },
    {
      "name": "Affordability",
      "description": "### Integration {% #affordability-integration %}\n\nIf 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.\n\nThere is one additional request parameters that can be specified when making a request:\n\n* `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`\n\nIn 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.\n\n### Authorization {% #affordability-authorization %}\n\nThis API requires a bearer token using the `api:data` scope"
    },
    {
      "name": "Affordability (stored)",
      "description": "### Overview {% #stored-affordability-overview %}\n\nThis 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.\n\n### Authorization {% #stored-affordability-authorization %}\n\nThis API requires a bearer token using the `api:stored_data` scope"
    },
    {
      "name": "Consumer Financial Health",
      "description": "### Integration {% #consumer-financial-health-integration %}\n\nIf 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.\n\n<br />\n\n### Authorization {% #consumer-financial-health-authorization %}\n\nThis 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\n\n<br />\n\n### Details {% #consumer-financial-health-details %}\n\nWe 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.\n\n- 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`.\n\n- 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`.\n\n- 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.\n\n- If data period is more than 365 days, then we will return all available periods up to `lastThreeSixtyDays`.\n\n- To capture the most recent developments and account trends it is recommended to analyze each calculation over all time periods.\n"
    },
    {
      "name": "Business Financial Health",
      "description": "### Integration {% #business-financial-health-integration %}\n\nIf 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.\n\n<br />\n\n### Authorization {% #business-financial-health-authorization %}\n\nThis 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\n\n<br />\n\n### Details {% #business-financial-health-details %}\n\nWe 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.\n\n- 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`.\n\n- 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`.\n\n- 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.\n\n- If data period is more than 365 days, then we will return all available periods up to `lastThreeSixtyDays`.\n\n- To capture the most recent developments and account trends it is recommended to analyze each calculation over all time periods.\n"
    },
    {
      "name": "Connect Invitation",
      "description": "### Overview {% #connect-invitation-overview %}\n\nConnect 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.\n\nGet 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.\n\n### Authorization {% #connect-invitation-authorization %}\n\nThis API requires a bearer token using the `api:connect_invitation` scope."
    },
    {
      "name": "Get Statement",
      "description": "### Integration {% #atto-statement-integration %}\n\nIf 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.\n\n### Authorization {% #atto-statement-authorization %}\n\nThis API requires a bearer token using the `api:stored_data` scope."
    },
    {
      "name": "Atto Score",
      "description": "### Integration {% #atto-score-integration %}\n\nIf you wish to receive the Atto score, you can do so using the `GET /atto-score/v1/consents/{consentId}/accounts/{accountId}` \nendpoint. \n\nIn response to your call, you will receive a JSON object containing the score. \n\n\n### Authorization {% #atto-score-authorization %}\n\nThis API requires a bearer token using the `api:advanced_insights` scope\n\n### Errors {% #atto-score-errors %}\n\nAccounts 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.\n\n```javascript\n{\n    \"code\": \"atto_score_not_generated\",\n    \"description\": \"Atto Score could not be generated.\",\n    \"details\": \"<see table below for all possible failure reasons>\",\n    \"correlationId\": \"string\"\n}\n\n```\n\n| Possible Failures                                     |\n| ----------------------------------------------------- |\n| No transactions                                       |\n| Account is not a GBP account                          |\n| Account is not a Personal account                     |\n| Account is not a Current account                      |\n| The minimum transaction period of 90 days was not met |\n| The minimum transaction count of 50 was not met       |\n| Transactions without BookingDate                      |\n| Account balances are null                             |"
    },
    {
      "name": "Accounts",
      "description": "### Integration {% #atto-credit-information-integration %}\n\nIf 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.\n\n### Authorization {% #atto-credit-information-authorization %}\n\nThis API requires a bearer token using the `api:cis` scope."
    }
  ]
}