openapi: 3.0.1
info:
title: Envestnet Aggregation APIs Account Token Customer 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 Yodlee API v1.1 - Overview.
You will have to set the header before making the API call. The following headers apply to all the APIs:
- Authorization: This header holds the access token
- Api-Version: 1.1
Note: 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: Customer
paths:
/insights/configs/customerSubscriptions:
get:
tags:
- Customer
summary: Envestnet Provide details of all the insights available to the customer.
description: This API returns only those Insights which the customer has subscribed to, among all the insights provided by Yodlee. If the customer has chosen to use the Insights configuration tool, the same functionality can be achieved through a graphical user interface.
operationId: getCutomerSubscription
responses:
'200':
description: List of insights subscribed by the customer.
content:
application/json:
schema:
$ref: '#/components/schemas/customerSubscriptions'
examples:
objectExample:
$ref: '#/components/examples/getCustomerSubscriptionExample'
'400':
description: bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'Y020 : Invalid token in authorization header
Y023 : Token has expired
Y011 : Invalid cobrand or incorrectly configured cobrand'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
patch:
tags:
- Customer
summary: Envestnet Update details of one or more customer subscribed insights.
description: "This API can be used to make an insight available to their users at any entity level (Account or View). By setting isSubscribed to true or false at an entity level within each insight, the customer can decide what functionality to make available to their end-users/consumers.
Note-\n \n - This is a PATCH API. Only pass the Attributes in the API request body, which you want to update
\n - This API supports updating multiple Insight's details in a single API call
\n - 'insightName' is a mandatory field in the Request body to identify which Insight's details are getting updated
\n - If you pass an attribute that is not editable, you will see an error.
\n
"
operationId: updateCustomerSubscription
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/customerSubscriptions'
examples:
objectExample:
$ref: '#/components/examples/updateCustomerSubscriptionExample'
responses:
'204':
description: Insight for Cobrand Updated.
'400':
description: '
Y806 : Invalid Input
Y800 : Invalid value for insightName
Y800 : Invalid value for insightTitle; special characters ><\\"''%{}|^~[] are not supported
Y801: Invalid length for insightTitle; min 3 and max 100 characters including spaces are allowed.
Y800 : Invalid value for frequency; Supported values are {Frequencies}
Y800 : Invalid value for duration; Supported values are {Durations}
Y800 : Invalid value for type BASETYPE; Only CREDIT, DEBIT are supported
Y800 : Invalid value for {thresholdName} in {insightName} insight Min = {min} and Max = {max}
Y800 : {InsightName} cannot be subscribed without benchmark enabled for the customer
Y800 : Invalid value for isSubscribed. {InsightName} cannot be subscribed without benchmark enabled for the customer
Y802 : Modifying isBenchmarkEnabled is not allowed
Y802 : For insight {InsightName}, passing isBenchmarkEnabled is not allowed
Y800 : Invalid value for isBenchmarkEnabled Supported values are true, false"
Y800 : Invalid value for duration. Supported values of duration for MID_MONTHLY frequency are {Frequencies}
Y802 : For insight {InsightName}, modifying applicableEntity is not allowed
Y802 : For insight {InsightName}, modifying triggerType is not allowed
Y802 : For insight {InsightName}, modifying containers is not allowed
Y802 : For insight {InsightName}, modifying description is not allowed
Y802 : For insight {InsightName}, modifying frequency is not allowed
Y802 : For insight {InsightName}, modifying isSubscribed is not allowed
Y802 : For insight {InsightName}, modifying duration is not allowed
Y800 : Invalid value for isSubscribed; Supported values are true, false
Y825 : Update not allowed without a valid request body
Y803 : Invalid request; Either a valid insightTitle or customerConfiguration is required.
Y802 : Specifying frequency attribute for {InsightName} insight is not allowed
Y802 : Specifying duration attribute for {InsightName} insight is not allowed
Y802 : For {InsightName} insight passing threshold is not allowed
Y812 : Required field/value - insightName missing in the request
Y802 : Modifying InsightType attribute is not allowed
Y813 :entityType should be provided
Y813 : Invalid request. The entire object within threshold should be provided
Y803 :At least one additional attribute is required in addition to entityType.
Y800: Invalid value for customerConfiguration; customerConfiguration is either missing, duplicated, or has insufficient/ incorrect attributes.
Y800: Invalid value for entityType. Supported entityType for {InsightName} insight are - {Entities}
Y802 : For {InsightName} insight, inside the threshold is not allowed
Y802 : For {InsightName} insight, {Invalid String} inside the threshold is either repeated or not allowed'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'Y020 : Invalid token in authorization header
Y023 : Token has expired
Y011 : Invalid cobrand or incorrectly configured cobrand'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
examples:
updateCustomerSubscriptionExample:
value:
customerSubscription:
- insightName: UPCOMING_BILLS
insightTitle: New Title
customerConfiguration:
- entityType: ACCOUNT
isSubscribed: true
threshold:
- name: FUTURE
value: '7'
type: DAYS
- entityType: VIEW
isSubscribed: true
threshold:
- name: FUTURE
value: '7'
type: DAYS
getCustomerSubscriptionExample:
value:
customerSubscription:
- insightName: UPCOMING_BILLS
insightTitle: Upcoming Bills
insightType: OTHER
triggerType: SCHEDULE
containers:
- BANK
- CARD
description: Generates an insight that lists upcoming recurring bills within a configured time period..
applicableEntity:
- ACCOUNT
- VIEW
customerConfiguration:
- entityType: ACCOUNT
isSubscribed: false
frequency: MONTHLY
threshold:
- name: FUTURE
value: '7'
type: DAYS
- entityType: VIEW
isSubscribed: false
frequency: MONTHLY
threshold:
- name: FUTURE
value: '7'
type: DAYS
schemas:
Subscription:
description: Details about the configurations applied for the specific insight.
properties:
insightName:
type: string
description: Unique name of each Insight in the system. 2 Insight can not have same Insight 'name'. If User wants to update his/her Subscription details, then While calling the PATCH Subscription API this 'name' field is mandatory.
Endpoints -- GET insights/configs/customerSubscriptions customer API
- GET insights/configs/userSubscriptions User API
- PATCH /insights/configs/customerSubscriptions cusomter API
- PATCH /insights/configs/userSubscriptions User API
insightTitle:
type: string
description: Title of the Insight. This is an editable field by calling PATCH Subscription APIs.
Endpoints -- GET insights/configs/customerSubscriptions customer API
- GET insights/configs/userSubscriptions User API
- PATCH /insights/configs/customerSubscriptions cusomter API
insightType:
type: string
description: Identifies whether the insight is generated at an entity-level (per account or per view), or if it considers all entities for the user - e.g. all accounts.
Note - Do not pass the insightType attribute when doing a PATCH rquest.
Endpoints -- GET insights/configs/customerSubscriptions customer API
- GET insights/configs/userSubscriptions User API
readOnly: true
enum:
- OTHER
- AGGREGATE
triggerType:
type: string
description: triggerType of an insight defines how an Insight will be triggered in the system.
Currently following triggerType are supported - - SCHDEULE - Insight evaluation and subsequent generation will be triggered based on a pre-defined schedule. This schedule may be editable by the customer depending on the insight.
- REFRESH - Insight evaluation and subsequent generation will be triggered when a user's account gets successfully refreshed.
- EVENT - Insight evaluation and subsequent generation will be triggered based on a system-defined event happening.
Note
If triggerType=SCHEDULE, then the UserSubscription/CobrandSubscription API attribute 'frequency' and 'duration' may be applicable depending on the insight.
Endpoints - GET /insights/config/customerSubscriptions
readOnly: true
example: SCHEDULE
enum:
- SCHEDULE
- REFRESH
- EVENT
containers:
type: array
description: Identifies the containers considered for generating an insight.
Endpoints - GET /insights/config/customerSubscriptions
readOnly: true
items:
type: string
enum:
- BANK
- CARD
- LOAN
- INVESTMENT
- REALESTATE
description:
type: string
description: A simple english description of the Insight.
Endpoints -- GET /insights/config/customerSubscriptions
readOnly: true
applicableEntity:
type: array
description: Identifies which entity (Account or View) the insight is applicable for.
When applicableEntity is provided in the userSubscription or customerSubscription, it identifies all the entities for which the insight is capable of being generated.
When the attribute is present in the feed API, it identifies the entitiy for which the insight was generated. Endpoints -- GET /insights/config/customerSubscriptions
readOnly: true
example:
- ACCOUNT
- VIEW
items:
type: string
enum:
- ACCOUNT
- VIEW
CustomerSubscription:
allOf:
- $ref: '#/components/schemas/Subscription'
properties:
customerConfiguration:
type: array
items:
$ref: '#/components/schemas/CustomerConfiguration'
Threshold:
properties:
name:
type: string
description: Identifies the threshold applicable for an insight. Threshold values impact insight generation.Consider the following example - - name = CHANGE
- type = PERCENT
- value = 3
For the above insight, you can read the configuration as "Generate the insight only if the change is >= 3%"
Note- Threshold is fixed for each insight. Only value is editable.
Endpoints -- GET /insights/configs/customerSubscriptions Cobrand API
- PATCH /insights/configs/customerSubscriptions Cobrand API
- GET /insights/configs/userSubscriptions User API
- PATCH /insights/configs/userSubscriptions User API
example: CHANGE
enum:
- CHANGE
- UPPER_LIMIT
- DAYS_BEFORE
- MINIMUM
- FUTURE
- DELAY
- TOP
- BASETYPE
type:
type: string
description: Identifies the type of threshold. Threshold values impact insight generation.Consider the following example - - name = CHANGE
- type = PERCENT
- value = 3
For the above insight, you can read the configuration as "Generate the insight only if the change is >= 3%".
However, consider changing the configuration to as follows by changing the type - - name = CHANGE
- type = AMOUNT
- value = 300
For the above insight, you can read the configuration as "Generate the insight only if the change is >= $300".
Note- For a single insight, you can have multiple thresholds. If multiple thresholds have values set to a non-zero number, the relationship between the thresholds will be logical AND.
Some insights will have type as AMOUNT and PERCENT. In the above scenario, if you want to generate insight only based on one value, you can set the other to 0.
E.g. if type = AMOUNT is set to 0 and type = PERCENT is set to 3, the insight will be evaluated as "Generate the insight only if the change is >= 3%"
However, if AMOUNT = $300 and PERCENT = 3, the insight will be evaluated as "Generate the insight only if the change % is >= 3% AND change amount >= $300"
Endpoints -- GET config/insights/subscriptions Cobrand API
- PATCH /config/insights/subscriptions Cobrand API
- GET /insights/subscriptions User API
- PATCH /insights/subscriptions User API
example: PERCENT
enum:
- PERCENT
- NUMBER
- DAYS
- AMOUNT
- STRING
value:
type: string
description: The value set for the threshold. 0 is allowed only if there are multiple threshold for the same insight.
Endpoints - - GET /config/insights/subscriptions Cobrand API
- PATCH /config/insights/subscriptions Cobrand API
- GET insights/subscriptions User API
- PATCH /insights/subscriptions User API
example: '10'
CustomerConfiguration:
properties:
entityType:
type: string
description: The entityType identifies which applicableEntity of the insight the configuration will impact.
E.g. if the entityType is ACCOUNT, it means that the configurations will impact the ACCOUNT entity during evaluation.
customerConfiguration, when presented in the userSubscription API, represents the customer preferences. It may or may not match the user preferences. If user preferences differe from customer preferrences in the customerConfiguration, the user preferences will be applied for the insight.
Endpoints -- GET insights/configs/customerSubscriptions customer API
- GET insights/configs/userSubscriptions User API
- PATCH /insights/configs/customerSubscriptions cusomter API
- PATCH /insights/configs/userSubscriptions User API
example: ACCOUNT
enum:
- ACCOUNT
- VIEW
isSubscribed:
type: boolean
description: Insight Subscription APIs allow User to subscribe/unsubscribe at any particular entity level.
If an insight is not subscribed (isSubscribed = false) at the customer level, the insight will not be present in the userSubscription API.
If an insight is subscribed by the customer (isSubscribed = true), the insight will be subscribed automatically by the user and all the default configurations will be inherited.
The user can choose to turn off the insight by setting isSubscribed=false.
Endpoints - - GET /insights/config/customerSubscriptions
- PATCH /insights/config/customerSubscriptions
example: true
enum:
- true
- false
frequency:
type: string
description: Identifies how often the insight will be evaluated.
Note - Evaluation does not mean an insight will be generated. If the conditions for generating an insight are not met, the insight will not get generated even after it being evaluated.
Depending on the insight, it might be editable for customers and users.
Endpoints -- GET /insights/config/customerSubscriptions
- PATCH /insights/config/customerSubscriptions
example: DAILY
enum:
- DAILY
- WEEKLY
- MONTHLY
- MID_MONTHLY
duration:
type: string
description: Identifies the duration for which the data will be considered to generate and insight.
Note - Even if the duration mentioned is ONE_YEAR, the insight can consider only data that exists. If there is data only for one month, the insight will be generated using the available one month data.
- Duration is insight specific. For some insights which are REFRESH based, duration might not be applicable. For certain insights, only a subset of the duration might be applicable.
Endpoints -- GET /insights/config/customerSubscriptions
- PATCH /insights/config/customerSubscriptions
example: THIS_MONTH
enum:
- THIS_MONTH
- LAST_MONTH
- THREE_MONTHS
- SIX_MONTHS
- ONE_YEAR
- LAST_THREE_MONTHS
- LAST_SIX_MONTHS
- LAST_TWELVE_MONTHS
threshold:
type: array
items:
$ref: '#/components/schemas/Threshold'
isBenchmarkEnabled:
type: boolean
description: "Identifies if peer benchmarking is enabled for a particular insight. The attribute will be returned only for insights that are eligible for peer benchmarking data points\n
The default value of this attribute will be based on the global configuration key to enable/disable peer benchmarking. If the global configuration is true, this attribute will be true and if the global configuration is false, this value will be false.\n
If the peer benchmarking is enabled by the customer (isBenchmarkEnabled = true), the benchmarks will be subscribed automatically by the user.\n
The user can choose to turn off the benchmark configuration for the insight by setting isBenchmarkEnabled=false.\n
Note - There are few insights for which the isBenchmarkEnabled attribute cannot be updated since benchmark amount is essential for the insight evaluation.\n
Endpoints - - GET\n/insights/config/customerSubscriptions
- PATCH /insights/config/customerSubscriptions
"
example: true
enum:
- true
- false
customerSubscriptions:
properties:
customerSubscription:
type: array
items:
$ref: '#/components/schemas/CustomerSubscription'
Error:
required:
- errorCode
- referenceCode
- errorMessage
properties:
errorCode:
type: string
referenceCode:
type: string
errorMessage:
type: string