{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/envestnet/json-schema/envestnet-updated-provider-account-response-schema.json",
  "title": "UpdatedProviderAccountResponse",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/envestnet-provider-accounts-api-openapi.yml#/components/schemas/UpdatedProviderAccountResponse",
  "type": "object",
  "properties": {
    "providerAccount": {
      "type": "array",
      "readOnly": true,
      "items": {
        "$ref": "#/$defs/UpdatedProviderAccount"
      }
    }
  },
  "$defs": {
    "AccountDataset": {
      "title": "AccountDataset",
      "type": "object",
      "properties": {
        "lastUpdated": {
          "type": "string",
          "description": "Indicate when the dataset is last updated successfully for the given provider account.<br><br><b>Account Type</b>: Aggregated<br><b>Endpoints</b>:<ul><li>GET accounts</li><li>GET accounts/{accountId}</li><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li></ul>",
          "readOnly": true
        },
        "updateEligibility": {
          "type": "string",
          "description": "Indicate whether the dataset is eligible for update or not.<br><br><b>Account Type</b>: Aggregated<br><b>Endpoints</b>:<ul><li>GET accounts</li><li>GET accounts/{accountId}</li><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li></ul><b>Applicable Values</b><br>",
          "readOnly": true,
          "enum": [
            "ALLOW_UPDATE",
            "ALLOW_UPDATE_WITH_CREDENTIALS",
            "DISALLOW_UPDATE"
          ]
        },
        "additionalStatus": {
          "type": "string",
          "description": "The status of last update attempted for the dataset. <br><br><b>Account Type</b>: Aggregated<br><b>Endpoints</b>:<ul><li>GET accounts</li><li>GET accounts/{accountId}</li><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li></ul><b>Applicable Values</b><br>",
          "readOnly": true,
          "enum": [
            "LOGIN_IN_PROGRESS",
            "DATA_RETRIEVAL_IN_PROGRESS",
            "ACCT_SUMMARY_RECEIVED",
            "AVAILABLE_DATA_RETRIEVED",
            "PARTIAL_DATA_RETRIEVED",
            "DATA_RETRIEVAL_FAILED",
            "DATA_NOT_AVAILABLE",
            "ACCOUNT_LOCKED",
            "ADDL_AUTHENTICATION_REQUIRED",
            "BETA_SITE_DEV_IN_PROGRESS",
            "CREDENTIALS_UPDATE_NEEDED",
            "INCORRECT_CREDENTIALS",
            "PROPERTY_VALUE_NOT_AVAILABLE",
            "INVALID_ADDL_INFO_PROVIDED",
            "REQUEST_TIME_OUT",
            "SITE_BLOCKING_ERROR",
            "UNEXPECTED_SITE_ERROR",
            "SITE_NOT_SUPPORTED",
            "SITE_UNAVAILABLE",
            "TECH_ERROR",
            "USER_ACTION_NEEDED_AT_SITE",
            "SITE_SESSION_INVALIDATED",
            "NEW_AUTHENTICATION_REQUIRED",
            "DATASET_NOT_SUPPORTED",
            "ENROLLMENT_REQUIRED_FOR_DATASET",
            "CONSENT_REQUIRED",
            "CONSENT_EXPIRED",
            "CONSENT_REVOKED",
            "INCORRECT_OAUTH_TOKEN",
            "MIGRATION_IN_PROGRESS"
          ]
        },
        "nextUpdateScheduled": {
          "type": "string",
          "description": "Indicates when the next attempt to update the dataset is scheduled.<br><br><b>Account Type</b>: Aggregated<br><b>Endpoints</b>:<ul><li>GET accounts</li><li>GET accounts/{accountId}</li><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li></ul>",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The name of the dataset requested from the provider site<br><br><b>Account Type</b>: Manual<br><b>Endpoints</b>:<ul><li>GET accounts</li><li>GET accounts/{accountId}</li><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li><li>GET providers</li></ul><b>Applicable Values</b><br>",
          "enum": [
            "BASIC_AGG_DATA",
            "ADVANCE_AGG_DATA",
            "ACCT_PROFILE",
            "DOCUMENT"
          ]
        },
        "lastUpdateAttempt": {
          "type": "string",
          "description": "Indicate when the last attempt was performed to update the dataset for the given provider account<br><br><b>Account Type</b>: Aggregated<br><b>Endpoints</b>:<ul><li>GET accounts</li><li>GET accounts/{accountId}</li><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li></ul>",
          "readOnly": true
        }
      }
    },
    "Field": {
      "title": "Field",
      "type": "object",
      "properties": {
        "image": {
          "type": "string",
          "description": "Image displayed at the endsite.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li></ul>"
        },
        "prefix": {
          "type": "string",
          "description": "The prefix string that has to be displayed before the field value.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "readOnly": true
        },
        "minLength": {
          "type": "integer",
          "description": "The minimum length of the login form field.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "format": "int64",
          "readOnly": true
        },
        "valueEditable": {
          "type": "string",
          "description": "Indicates whether the field is editable or not.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "readOnly": true
        },
        "isOptional": {
          "type": "boolean",
          "description": "Indicates if a field is an optional field or a mandatory field.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "readOnly": true
        },
        "suffix": {
          "type": "string",
          "description": "The suffix string that has to be displayed next to the field value.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "This indicates the display type of the field. For example, text box, image, etc. <br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul><b>Applicable Values</b><br>",
          "readOnly": true,
          "enum": [
            "text",
            "password",
            "options",
            "checkbox",
            "radio",
            "image",
            "option"
          ]
        },
        "isValueProvided": {
          "type": "boolean",
          "description": "Indicates that the answer to the security question already exists in the Yodlee system.Persuading the user to provide the answer to the security question again during the edit-credential flow can be avoided.<br><br><br><b>Endpoints</b>:<ul><li>GET providerAccounts?include=questions</li><li>GET providerAccounts/{providerAccountId}? include=questions</li></ul>",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Name of the field.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "readOnly": true
        },
        "id": {
          "maxLength": 2147483647,
          "minLength": 1,
          "type": "string",
          "description": "Identifier for the field.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        },
        "value": {
          "type": "string",
          "description": "Value expected from the user for the field. This will be blank and is expected to be filled and sent back when submitting the login or MFA information.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        },
        "maxLength": {
          "type": "integer",
          "description": "The maximum length of the login form field.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "format": "int64",
          "readOnly": true
        },
        "option": {
          "type": "array",
          "description": "Provides the different values that are available for the user to choose. This field is applicable for drop-down or radio field types.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "readOnly": true,
          "items": {
            "$ref": "#/$defs/Option"
          }
        }
      }
    },
    "LoginForm": {
      "title": "LoginForm",
      "type": "object",
      "properties": {
        "mfaInfoTitle": {
          "type": "string",
          "description": "The title for the MFA information demanded from the user.This is the title displayed in the provider site.This field is applicable for MFA form types only. <br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li></ul>",
          "readOnly": true
        },
        "help": {
          "type": "string",
          "description": "The help that can be displayed to the customer in the login form.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "readOnly": true
        },
        "forgetPasswordURL": {
          "type": "string",
          "description": "The forget password URL of the provider site.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        },
        "formType": {
          "type": "string",
          "description": "The type of the forms for which the user information is required.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul><b>Applicable Values</b><br>",
          "enum": [
            "login",
            "questionAndAnswer",
            "token",
            "image"
          ]
        },
        "mfaInfoText": {
          "type": "string",
          "description": "The text displayed in the provider site while requesting the user's MFA information. This field is applicable for MFA form types only. <br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li></ul>",
          "readOnly": true
        },
        "loginHelp": {
          "type": "string",
          "description": "The help that can be displayed to the customer in the login form.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "readOnly": true
        },
        "mfaTimeout": {
          "type": "integer",
          "description": "The amount of time before which the user is expected to provide MFA information. This field is applicable for MFA form types only. This would be an useful information that could be displayed to the users. <br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "format": "int64",
          "readOnly": true
        },
        "id": {
          "type": "integer",
          "description": "The identifier of the login form.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "format": "int64"
        },
        "row": {
          "type": "array",
          "description": "This indicates one row in the form. The row will have one label. But it may have single or multiple fields.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "items": {
            "$ref": "#/$defs/Row"
          }
        }
      }
    },
    "Option": {
      "title": "Option",
      "type": "object",
      "properties": {
        "displayText": {
          "type": "string",
          "description": "The text that is displayed to the user for that option in the provider site.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        },
        "optionValue": {
          "type": "string",
          "description": "The value that is associated with the option.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        },
        "isSelected": {
          "type": "boolean",
          "description": "The option that is selected by default in the provider site.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        }
      }
    },
    "Row": {
      "title": "Row",
      "type": "object",
      "properties": {
        "fieldRowChoice": {
          "type": "string",
          "description": "Fields that belong to a particular choice are collected together using this field.<br><b>Recommendations</b>: All the field row choices label to be grouped and displayed as options to the customer. On choosing a particular choice field, we recommend displaying the fields relevant to them. First field choice could be selected by default.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        },
        "field": {
          "type": "array",
          "description": "Details of fields that belong to the row.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>",
          "items": {
            "$ref": "#/$defs/Field"
          }
        },
        "form": {
          "type": "string",
          "description": "Form denotes the set of the fields that are related. <br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        },
        "id": {
          "type": "string",
          "description": "Unique identifier of the row.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        },
        "label": {
          "type": "string",
          "description": "The label text displayed for a row in the form.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts/{providerAccountId}</li><li>GET providers/{providerId}</li></ul>"
        }
      }
    },
    "UpdatedProviderAccount": {
      "title": "UpdatedProviderAccount",
      "type": "object",
      "properties": {
        "lastUpdated": {
          "type": "string",
          "description": "Indicate when the providerAccount is last updated successfully.<br><br><b>Account Type</b>: Aggregated<br><b>Endpoints</b>:<ul><li>GET dataExtracts/userData</li></ul>",
          "readOnly": true
        },
        "loginForm": {
          "type": "array",
          "description": "This entity gets returned in the response for only MFA based provider accounts during the add/update account polling process. This indicates that the MFA information is expected from the user to complete the process. This represents the structure of MFA form that is displayed to the user in the provider site.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li></ul>",
          "readOnly": true,
          "items": {
            "$ref": "#/$defs/LoginForm"
          }
        },
        "createdDate": {
          "type": "string",
          "description": "The date on when the provider account is created in the system.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li><li>GET dataExtracts/userData</li></ul>",
          "readOnly": true
        },
        "aggregationSource": {
          "type": "string",
          "description": "The source through which the providerAccount is added in the system.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li><li>GET dataExtracts/userData</li></ul><b>Applicable Values</b><br>",
          "readOnly": true,
          "enum": [
            "SYSTEM",
            "USER"
          ]
        },
        "oauthMigrationStatus": {
          "type": "string",
          "description": "Indicates the migration status of the provider account from screen-scraping provider to the Open Banking provider. <br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>GET providerAccounts/{providerAccountId}</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET dataExtracts/userData</li></ul>",
          "readOnly": true,
          "enum": [
            "IN_PROGRESS",
            "TO_BE_MIGRATED",
            "COMPLETED",
            "MIGRATED"
          ]
        },
        "providerId": {
          "type": "integer",
          "description": "Unique identifier for the provider resource. This denotes the provider for which the provider account id is generated by the user.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li><li>GET dataExtracts/userData</li></ul>",
          "format": "int64",
          "readOnly": true
        },
        "requestId": {
          "type": "string",
          "description": "Unique id generated to indicate the request.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li></ul>",
          "readOnly": true
        },
        "isManual": {
          "type": "boolean",
          "description": "Indicates whether account is a manual or aggregated provider account.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li><li>GET dataExtracts/userData</li></ul>",
          "readOnly": true
        },
        "id": {
          "type": "integer",
          "description": "Unique identifier for the provider account resource. This is created during account addition.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li><li>GET dataExtracts/userData</li></ul>",
          "format": "int64",
          "readOnly": true
        },
        "authType": {
          "type": "string",
          "description": "The authentication type enabled at the provider site. <br><br><b>Endpoints</b>:<ul><li>GET providers/{providerId}</li><li>GET providers</li></ul><b>Applicable Values</b><br>",
          "readOnly": true,
          "enum": [
            "OAUTH",
            "CREDENTIALS",
            "MFA_CREDENTIALS"
          ]
        },
        "dataset": {
          "type": "array",
          "description": "Logical grouping of dataset attributes into datasets such as Basic Aggregation Data, Account Profile and Documents.<br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li><li>GET dataExtracts/userData</li></ul>",
          "readOnly": true,
          "items": {
            "$ref": "#/$defs/AccountDataset"
          }
        },
        "status": {
          "type": "string",
          "description": "The status of last update attempted for the account. <br><br><b>Endpoints</b>:<ul><li>GET providerAccounts</li><li>POST providerAccounts</li><li>PUT providerAccounts/{providerAccountId}</li><li>GET providerAccounts/{providerAccountId}</li><li>GET dataExtracts/userData</li></ul><b>Applicable Values</b><br>",
          "readOnly": true,
          "enum": [
            "LOGIN_IN_PROGRESS",
            "USER_INPUT_REQUIRED",
            "IN_PROGRESS",
            "PARTIAL_SUCCESS",
            "SUCCESS",
            "FAILED",
            "MIGRATION_IN_PROGRESS",
            "DATA_RETRIEVAL_FAILED"
          ]
        }
      }
    }
  }
}