openapi: 3.0.1
info:
title: Envestnet Aggregation APIs Account Token User API
description: 'This file describes the Yodlee Aggregation product APIs using the swagger notation that you can use to build your financial application. You can generate the client SDK in Python, JavaScript, PHP, or any other languages according to your development needs. For more details about the APIs, refer to <a href="https://developer.envestnet.com/resources/yodlee/yodlee-api-overview/docs">Yodlee API v1.1 - Overview</a>.<br><br>You will have to set the header before making the API call. The following headers apply to all the APIs:<ul><li>Authorization: This header holds the access token</li> <li> Api-Version: 1.1</li></ul><b>Note</b>: If there are any API-specific headers, they are mentioned explicitly in the respective API''s description.'
termsOfService: https://developer.yodlee.com/terms/condition
contact:
email: developer@yodlee.com
license:
name: Yodlee Developer License
url: https://developer.yodlee.com/terms/condition#_Services_1
version: 1.1.0
servers:
- url: /
tags:
- name: User
description: Users API
paths:
/user/samlLogin:
post:
tags:
- User
summary: Envestnet Saml Login
description: The SAML login service is used to authenticate system users with a SAML response.<br>A new user will be created with the input provided if that user isn't already in the system.<br>For existing users, the system will make updates based on changes or new information.<br>When authentication is successful, a user session token is returned.<br><br><b>Note:</b> <li>The content type has to be passed as application/x-www-form-urlencoded. <li>issuer, source and samlResponse should be passed as body parameters.</li>
operationId: samlLogin
parameters:
- name: issuer
in: query
description: issuer
required: true
schema:
type: string
- name: samlResponse
in: query
description: samlResponse
required: true
schema:
type: string
- name: source
in: query
description: source
schema:
type: string
responses:
200:
description: OK
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/UserResponse'
400:
description: 'Y013 : Invalid value for samlResponse<br>Y013 : Invalid value for issuer'
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/YodleeError'
401:
description: Unauthorized
content: {}
404:
description: Not Found
content: {}
deprecated: false
/user/register:
post:
tags:
- User
summary: Envestnet Register User
description: The register user service is used to register a user in Yodlee.<br>The loginName cannot include spaces and must be between 3 and 150 characters.<br>locale passed must be one of the supported locales for the customer. <br>Currency provided in the input will be respected in the derived services and the amount fields in the response will be provided in the preferred currency.<br>userParam is accepted as a body parameter. <br><br><b>Note:</b> <li>The content type has to be passed as application/json for the body parameter.</li> <li>We recommend you to not use special characters in loginName other than "@", "#", "_" & "-"</li>.
operationId: registerUser
requestBody:
description: userRequest
content:
application/json:
schema:
$ref: '#/components/schemas/UserRequest'
required: true
responses:
200:
description: Login Successful
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/UserResponse'
400:
description: 'Y800 : Invalid value for loginName<br>Y800 : Invalid value for email<br>Y801 : Invalid length for loginName<br>Y800 : Invalid value for phoneNumber<br>'
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/YodleeError'
401:
description: Unauthorized
content: {}
404:
description: Not Found
content: {}
deprecated: false
/user/accessTokens:
get:
tags:
- User
summary: Envestnet Get Access Tokens
description: The Get Access Tokens service is used to retrieve the access tokens for the application id(s) provided.<br>URL in the response can be used to launch the application for which token is requested.<br><br><b>Note:</b> <li>This endpoint is deprecated for customers using the API Key-based authentication and is applicable only to customers who use the SAML-based authentication.<br>
operationId: getAccessTokens
parameters:
- name: appIds
in: query
description: appIds
required: true
schema:
type: string
responses:
200:
description: OK
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/UserAccessTokensResponse'
401:
description: Unauthorized
content: {}
404:
description: Not Found
content: {}
deprecated: false
/user:
get:
tags:
- User
summary: Envestnet Get User Details
description: The get user details service is used to get the user profile information and the application preferences set at the time of user registration.<br>
operationId: getUser
responses:
200:
description: OK
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/UserDetailResponse'
401:
description: Unauthorized
content: {}
404:
description: Not Found
content: {}
deprecated: false
put:
tags:
- User
summary: Envestnet Update User Details
description: The update user details service is used to update user details like name, address, currency preference, etc.<br>Currency provided in the input will be respected in the <a href="https://developer.envestnet.com/products/yodlee/account-aggregation/docs/api-reference#yodlee-aggregation-derivedtransactionsummary-get">Derived</a> services and the amount fields in the response will be provided in the preferred currency.<br>The HTTP response code is 204 (Success without content). <br><br> <b>Login Name Change Feature:</b> loginName can be passed to update the user's login name. Once the loginName is updated, to access the user's data, a token with the changed loginName must be created. This feature is supported only Client Credentials authentication methods.<br><b>Note:</b> <li>We strongly recommend to immediately delete the old access token once the user's loginName is successfully changed to avoid misuse.</li> <li>After updating the login name, the already sent data extract events with the old login name will no more be functional. Replace the loginName with new loginName or try polling method to retrieve the data.</li><br>
operationId: updateUser
requestBody:
description: userRequest
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUserRequest'
required: true
responses:
204:
description: No Content
content: {}
401:
description: Unauthorized
content: {}
404:
description: Not Found
content: {}
deprecated: false
/user/logout:
post:
tags:
- User
summary: Envestnet User Logout
description: '<b>Deprecated</b>: This endpoint is deprecated for API Key-based authentication. The user logout service allows the user to log out of the application.<br>The service does not return a response body. The HTTP response code is 204 (Success with no content).<br>'
operationId: userLogout
responses:
204:
description: Logout successful
content: {}
401:
description: Unauthorized
content: {}
404:
description: Not Found
content: {}
deprecated: false
/user/unregister:
delete:
tags:
- User
summary: Envestnet Delete User
description: The delete user service is used to delete or unregister a user from Yodlee. <br>Once deleted, the information related to the users cannot be retrieved. <br>The HTTP response code is 204 (Success without content)<br>
operationId: unregister
responses:
204:
description: No Content
content: {}
401:
description: Unauthorized
content: {}
404:
description: Not Found
content: {}
deprecated: false
/insights/configs/userSubscriptions:
get:
tags:
- User
summary: Envestnet Provides user-level preferences for each insight.
description: This API returns the details of all the Insights which are subscribed by the customer. If any of the insight has been turned off by setting isSubscribed = false at the customerSubscription level, those insights will not be shown in the userSubscription API.<br /><br />Each Insight details contain attributes such as Insight Frequency, Threshold, etc. By default, all the configurations set by the customer will be inherited by the user. Using a separate PATCH API, consumers can override customer preferences and set their own preferences - wherever applicable.<br /><br />In addition to setting prepoferences at an insight entity level, the consumer will also be able to set preferences at an entity ID level. E.g. LOW_BALANCE_WARNING insight can have a BALANCE threshold of $1,000 set by the customer. However, the user can set a different threshold for each of the accounts the user has aggregated.<br /><br />The customerConfiguration object for each insight mirrors the preferences set by the customer for each insight at the customerSubscription level.
operationId: getUserSubscriptions
parameters:
- name: insightName
in: query
description: Insight name
required: false
style: form
explode: true
schema:
type: string
example: LOW_BALANCE_WARNING
- name: entityId
in: query
description: Comma separated list of entity Ids it could be a account id or view id
required: false
style: form
explode: true
schema:
type: string
example: 1001,5e7885993cd8e328288522f7
responses:
'200':
description: A list of subscribed Insight details.
content:
application/json:
schema:
$ref: '#/components/schemas/UserSubscriptions'
examples:
objectExample:
$ref: '#/components/examples/getUserSubscriptionExample'
'400':
description: 'Bad request. ErrorCode and ErrorMessages below:<br> <br>Y800 : Invalid value for entityId <br>Y824 : The maximum number of entityId permitted is 100 <br>Y800 : Invalid value for insightName'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'Y020 : Invalid token in authorization header<br>Y023 : Token has expired<br> Y011 : Invalid cobrand or incorrectly configured cobrand'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
patch:
tags:
- User
summary: Envestnet Update user-level preferences for each insight.
description: "This API can be used to modify user-level preferences for each insight. <br /><br />Each Insight details contain attributes such as Insight Frequency, Threshold, etc. By default, all the configurations set by the customer will be inherited by the user. Using a separate PATCH API, users can override custom preferences and set their own preferences - wherever applicable.<br /><br />In addition to setting preferences at an insight entity level, the consumer will also be able to set preferences at an entity ID level. E.g. LOW_BALANCE_WARNING insight - the user can set a different threshold for each of the accounts the user has aggregated.<br /><br />Note -\n <ul>\n <li>As this API is a PATCH API, therefore caller must not pass all the available attributes in request JSON. Only pass the Attributes which need to be updated, in the API request body</li>\n <li>A single PATCH request can update multiple insights in a single request</li>\n </ul>"
operationId: updateUserSubscription
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserSubscriptions'
examples:
objectExample:
$ref: '#/components/examples/updateUserSubscriptionExample'
responses:
'204':
description: Insight for User Updated.
'400':
description: 'Bad request. ErrorCode and ErrorMessages below:<br> Y806 : Invalid input <br> Y800 : Invalid value for insightName <br> Y800 : Invalid value for input param in {InsightName} insight <br> Y800 : Invalid value for frequency; Supported values are {Frequencies} <br> Y800 : Invalid value for duration; Supported values are {Durations} <br> Y800 : Invalid value for threshold data in {InsightName} insight <br> Y800 : Invalid value for type BASETYPE; Only CREDIT, DEBIT are supported <br> Y800 : Invalid value for {thresholdName} in {insightName} insight Min = {min} and Max = {max} <br> Y813 : Invalid request. The entire object within threshold should be provided <br> Y800 : {InsightName} cannot be subscribed without benchmark enabled for the customer <br> Y800 : Invalid value for isSubscribed. {InsightName} cannot be subscribed without benchmark enabled for the customer <br> Y802 : Modifying isBenchmarkEnabled is not allowed <br> Y802 : For insight {InsightName}, passing isBenchmarkEnabled is not allowed <br> Y800 : Invalid value for isBenchmarkEnabled Supported values are true, false" <br> Y800 : Invalid value for duration. Supported values of duration for MID_MONTHLY frequency are {Frequencies} <br> Y802 : Modifying insightTitle using this API is not allowed <br> Y802 : For insight {InsightName}, modifying applicableEntity is not allowed <br> Y802 : For insight {InsightName}, modifying triggerType is not allowed <br> Y802 : For insight {InsightName}, modifying containers is not allowed <br> Y802 : For insight {InsightName}, modifying description is not allowed <br> Y802 : Duplicate entityId entries within userConfiguration is not allowed <br> Y802 : Specifying frequency attribute for {InsightName} insight is not allowed <br> Y802 : Specifying duration attribute for {InsightName} insight is not allowed <br> Y802 : For insight {InsightName}, modifying frequency is not allowed <br> Y802 : For insight {InsightName}, modifying duration is not allowed <br> Y825 : Update not allowed without a valid request body <br> Y802 : For {InsightName} insight passing threshold is not allowed <br> Y812 : Required field/value - insightName missing in the request <br> Y800 : Invalid value for userConfiguration; entityId should be provided. <br> Y802 : Modifying InsightType attribute is not allowed <br> Y813: entityType should be provided <br> Y813 : Invalid request. The entire object within threshold should be provided <br> Y803: At least one additional attribute is required in addition to entityType. <br> Y800 : Invalid value for userConfiguration; userConfiguration is either missing, duplicated, or has insufficient/ incorrect attributes <br> Y802 : For insight {InsightName}, configurations at an entityId level are not allowed <br> Y800: Invalid value for entityType. Supported entityType for {InsightName} insight are - {Entities} <br> Y800 : Invalid value for entityId; This id is either invalid or not supported for this insight. <br> Y802 : Duplicate entityId entries is not allowed'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'Y020 : Invalid token in authorization header<br>Y023 : Token has expired<br> Y011 : Invalid cobrand or incorrectly configured cobrand'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
tags:
- User
summary: Envestnet Delete an existing entity-level insight configuration
description: The DELETE API lets users delete one or more of the existing entityId level configurations for an insight. This can be account level or view level. By deleting all entity ID level configuration, user's insight evaluation defaults to the values specified by the customer for an insight.
operationId: deleteUserSubscriptions
parameters:
- name: insightName
in: query
description: Comma separated list of Insight name
required: true
style: form
explode: true
schema:
type: string
example: LARGE_PURCHAGE
- name: entityId
in: query
description: Comma separated list of entity ids
style: form
explode: true
schema:
type: string
example: 123absce
- name: entityType
in: query
description: Comma separated list of entity
required: false
style: form
explode: true
schema:
type: string
example: account,view
responses:
'204':
description: User subscription deleted sucessfully.
'400':
description: "Bad request. ErrorCode and ErrorMessages below:<br> <br>Y800 : Invalid value for insightName <br>Y805 : Multiple entities not supported <br> Y802: Delete operation for disabled insights is not allowed <br> Y822: Deletion cannot be requested for entity IDs that are not currently part of the consumer API for the requested insight <br> Y822: Deletion cannot be requested for entityNames that are not currently part of the consumer API for the requested insight\n <br> Y802: Duplicate values is not allowed\n<br> Y802: Combining multiple values for insightName and other filters is not allowed <br> Y802: Deleting configurations for all insights using a single API call is not allowed <br> Y802: Combining \"entity\" and other filters is not allowed <br>Y802 : Delete operation on insights without any custom consumer subscription is not allowed <br>Y800: invalid value for entityId, id is either invalid or not supported for this insight."
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'Y020 : Invalid token in authorization header<br>Y023 : Token has expired<br> Y011 : Invalid cobrand or incorrectly configured cobrand'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/insights/feed:
get:
tags:
- User
summary: Envestnet Fetch all the insights generated for a user.
description: The API allows you to fetch all or a subset of the insights generated for a specific user. The insights are returned in the descending order of the insight generation time. By default, the API returns all the insights generated in the last 31 days.
operationId: getUserFeed
parameters:
- name: insightName
in: query
description: Insight name
required: false
style: form
explode: true
schema:
type: string
example: LOW_BALANCE_WARNING
- name: fromDate
in: query
required: false
description: fromDate
schema:
type: string
example: '2020-04-26T12:00:00Z'
- name: toDate
in: query
required: false
description: toDate
schema:
type: string
example: '2020-05-25T12:00:00Z'
- name: entityId
in: query
description: Comma separated list of entity Ids, it could be a view Id or account Id
required: false
style: form
explode: true
schema:
type: string
example: 10001,5e7885993cd8e328288522f7
- name: skip
in: query
description: skip (Min 0)
required: false
style: form
explode: true
schema:
type: integer
example: '100'
- name: top
in: query
description: top (Max 50)
required: false
style: form
explode: true
schema:
type: integer
example: '10'
- name: entityType
in: query
description: Comma separated list of entity
required: false
style: form
explode: true
schema:
type: string
example: ACCOUNT
- name: triggerType
in: query
description: triggerType of an insight defines how an Insight was triggered in the system. <br><br>Currently following triggerType are supported - <ul> <li><b>SCHDEULE</b> - Insight evaluation and subsequent generation triggered based on a pre-defined schedule.</li> <li><b>REFRESH</b> - Insight evaluation and subsequent generation triggered when a user's account gets successfully refreshed.</li> <li><b>EVENT</b> - Insight evaluation and subsequent generation triggered based on a system-defined event happening.</li> </ul>
required: false
style: form
explode: true
schema:
type: string
example: SCHEDULE
- name: insightType
in: query
description: Identifies whether the insight is generated at an entity-level - per account or per view (OTHER), or if it considers all entities for the user - e.g. all accounts (AGGREGATE).<br><br>
required: false
style: form
explode: true
schema:
type: string
example: AGGREGATE
responses:
'200':
description: A list of subscribed Insight details.
content:
application/json:
schema:
$ref: '#/components/schemas/feeds'
examples:
objectExample:
$ref: '#/components/examples/getFeedExample'
'400':
description: "Bad request. ErrorCode and ErrorMessages below:<br> <br>Y800: Invalid value for insightName; Insight name requested not found <br>Y800: Invalid value for entityId <br>Y805: Multiple entities not supported<br>Y800: Invalid value for fromDate/toDate. Both fromDate and toDate needs to be of the same format - yyyy-MM-dd or yyyy-MM-ddTHH:mm:ssZ <br>Y802: Value for fromDate or toDate beyond the last 1 year is not allowed <br>Y813: Both fromDate and toDate parameter should be provided <br>Y802: Difference greater than 31 days between fromDate and toDate is not allowed <br>Y802: Combining insightName and entityId filters for AGGREGATE insights is not allowed <br>Y802: Duplicate values for entity id are not allowed <br>Y800: Invalid value for skip\n <br>Y800: Invalid value for top\n <br>Y800: Invalid value for triggerType; allowed values are REFRESH, EVENT, SCHEDULE\n <br>Y800: Invalid value for entityType; allowed values are ACCOUNT, VIEW\n <br>Y800: Invalid value for insightType; allowed values are OTHER, AGGREGATE\n <br>Y802: Duplicate values for entityType are not allowed\n <br>Y802: Duplicate values for insightType are not allowed\n <br>Y802: Duplicate values for triggerType are not allowed"
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'Y020 : Invalid token in authorization header<br>Y023 : Token has expired<br> Y011 : Invalid cobrand or incorrectly configured cobrand'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/insights/feedExtracts:
get:
tags:
- User
summary: Envestnet Fetch all the insights generated for a user.
description: The API allows you to fetch all or a subset of the insights generated for a specific user. The insights are returned in the descending order of the insight generation time. By default, the API returns all the insights generated in the last 31 days.
operationId: getUserFeedWebHook
parameters:
- name: insightName
in: query
description: Insight name
required: false
style: form
explode: true
schema:
type: string
example: LOW_BALANCE_WARNING
- name: fromDate
in: query
required: false
description: fromDate
schema:
type: string
example: '2020-04-26T12:00:00Z'
- name: toDate
in: query
required: false
description: toDate
schema:
type: string
example: '2020-05-25T12:00:00Z'
- name: entityId
in: query
description: Comma separated list of entity Ids, it could be a view Id or account Id
required: false
style: form
explode: true
schema:
type: string
example: 10001,5e7885993cd8e328288522f7
- name: skip
in: query
description: skip (Min 0)
required: false
style: form
explode: true
schema:
type: integer
example: '100'
- name: top
in: query
description: top (Max 50)
required: false
style: form
explode: true
schema:
type: integer
example: '10'
- name: entityType
in: query
description: Comma separated list of entity
required: false
style: form
explode: true
schema:
type: string
example: ACCOUNT
- name: triggerType
in: query
description: triggerType of an insight defines how an Insight was triggered in the system. <br><br>Currently following triggerType are supported - <ul> <li><b>SCHDEULE</b> - Insight evaluation and subsequent generation triggered based on a pre-defined schedule.</li> <li><b>REFRESH</b> - Insight evaluation and subsequent generation triggered when a user's account gets successfully refreshed.</li> <li><b>EVENT</b> - Insight evaluation and subsequent generation triggered based on a system-defined event happening.</li> </ul>
required: false
style: form
explode: true
schema:
type: string
example: SCHEDULE
- name: insightType
in: query
description: Identifies whether the insight is generated at an entity-level - per account or per view (OTHER), or if it considers all entities for the user - e.g. all accounts (AGGREGATE).<br><br>
required: false
style: form
explode: true
schema:
type: string
example: AGGREGATE
- name: loginName
in: query
description: Name of the User.
required: true
style: form
explode: true
schema:
type: string
example: insightsUser
responses:
'200':
description: A list of subscribed Insight details.
content:
application/json:
schema:
$ref: '#/components/schemas/feeds'
examples:
objectExample:
$ref: '#/components/examples/getFeedExample'
'400':
description: "Bad request. ErrorCode and ErrorMessages below:<br> <br>Y803: loginName required.<br>Y800: Invalid value for loginName<br>Y800: Invalid value for insightName; Insight name requested not found <br>Y800: Invalid value for entityId <br>Y805: Multiple entities not supported<br>Y800: Invalid value for fromDate/toDate. Both fromDate and toDate needs to be of the same format - yyyy-MM-dd or yyyy-MM-ddTHH:mm:ssZ <br>Y802: Value for fromDate or toDate beyond the last 1 year is not allowed <br>Y813: Both fromDate and toDate parameter should be provided <br>Y802: Difference greater than 31 days between fromDate and toDate is not allowed <br>Y802: Combining insightName and entityId filters for AGGREGATE insights is not allowed <br>Y802: Duplicate values for entity id are not allowed <br>Y800: Invalid value for skip\n <br>Y800: Invalid value for top\n <br>Y800: Invalid value for triggerType; allowed values are REFRESH, EVENT, SCHEDULE\n <br>Y800: Invalid value for entityType; allowed values are ACCOUNT, VIEW\n <br>Y800: Invalid value for insightType; allowed values are OTHER, AGGREGATE\n <br>Y802: Duplicate values for entityType are not allowed\n <br>Y802: Duplicate values for insightType are not allowed\n <br>Y802: Duplicate values for triggerType are not allowed"
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'Y020 : Invalid token in authorization header<br>Y023 : Token has expired<br> Y011 : Invalid cobrand or incorrectly configured cobrand'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/insights/feed/count:
get:
tags:
- User
summary: Envestnet Fetch the count of generated insight for a user.
description: This API provides the count of the insights generated for the user. By default, the API provides the count of the insights generated in last 31 days.
operationId: getUserFeedCount
parameters:
- name: insightName
in: query
description: Insight name
required: false
style: form
explode: true
schema:
type: string
example: LOW_BALANCE_WARNING
- name: fromDate
in: query
required: false
description: fromDate
schema:
type: string
example: '2020-04-26T12:00:00Z'
- name: toDate
in: query
required: false
description: toDate
schema:
type: string
example: '2020-05-25T12:00:00Z'
- name: entityId
in: query
description: Comma separated list of entity Ids, it could be a view Id or account Id
required: false
style: form
explode: true
schema:
type: string
example: 10001,5e7885993cd8e328288522f7
- name: entityType
in: query
description: Comma separated list of entity
required: false
style: form
explode: true
schema:
type: string
example: ACCOUNT
- name: triggerType
in: query
description: triggerType of an insight defines how an Insight was triggered in the system. <br><br>Currently following triggerType are supported - <ul> <li><b>SCHDEULE</b> - Insight evaluation and subsequent generation triggered based on a pre-defined schedule.</li> <li><b>REFRESH</b> - Insight evaluation and subsequent generation triggered when a user's account gets successfully refreshed.</li> <li><b>EVENT</b> - Insight evaluation and subsequent generation triggered based on a system-defined event happening.</li> </ul>
required: false
style: form
explode: true
schema:
type: string
example: SCHEDULE
- name: insightType
in: query
description: Identifies whether the insight is generated at an entity-level - per account or per view (OTHER), or if it considers all entities for the user - e.g. all accounts (AGGREGATE).<br><br>
required: false
style: form
explode: true
schema:
type: string
example: AGGREGATE
responses:
'200':
description: A list of subscribed Insight details.
content:
application/json:
schema:
$ref: '#/components/schemas/feedsCount'
examples:
objectExample:
$ref: '#/components/examples/getFeedCountExample'
'400':
description: "Bad request
# --- truncated at 32 KB (146 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/envestnet/refs/heads/main/openapi/envestnet-user-api-openapi.yml