openapi: 3.0.1 info: title: Envestnet Aggregation APIs Account Token Associated Details 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: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: Associated Details paths: /insights/entityDetail: get: tags: - Associated Details summary: Envestnet Fetch the details of a insights associated with an entity Id. description: Retrieves details of all insights applicable for a given entity Id (viewId or accountId). operationId: getInsightDetailsBasedOnEntityId parameters: - name: entityId in: query description: The unique identifier of the account or view. required: true style: form explode: false schema: type: string example: 603df517392f983d50925df7 or 10231581 - name: entityType in: query description: The unique identifier of the entity type. required: true style: form explode: false schema: type: string example: ACCOUNT or VIEW - name: insightName in: query description: The unique identifier of insight Name. Comma separated multiple values can be passed. required: false style: form explode: true schema: type: string example: BILL_PAID,NEW_BILL responses: '200': description: Applicable Insights are fetched successfully. content: application/json: schema: $ref: '#/components/schemas/EntityDetailResponse' examples: sampleResponse: $ref: '#/components/examples/getEntityDetailResponseExample' '400': description: 'Bad request. ErrorCode and ErrorMessages below:

Y800: Invalid value for entityId
Y800: Invalid value for insightName
Y800: Invalid value for insightName; one or more insightName requested is not eligible for the entityId passed.
Y800: Invalid value for insightName; It is either invalid, duplicated, or not supported.
Y800: Invalid value for insightName; one or more insightName requested is not enabled for the entityId passed
Y800: Invalid value for entityType
Y800: Invalid value for entityType/entityId combination.
Y803: entityId and entityType is required to process this request.
Y800: Invalid value for entityId/entityType; multiple values are not supported.' 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' /insights/insightDetail/{insightName}: get: tags: - Associated Details summary: Envestnet Fetch the details of entities associated with an insight name. description: Retrieves details of all entity ids applicable for a given insight. operationId: getEntityDetailsBasedOnInsightName parameters: - name: insightName in: path description: The name identifier of the specific insight. required: true style: simple explode: false schema: type: string example: SUGGESTED_SAVING_OPPORTUNITY - name: entityType in: query description: The unique identifier of entity Type. Comma separated multiple values can be passed. required: false style: form explode: true schema: type: string example: ACCOUNT,VIEW responses: '200': description: Applicable entities are fetched successfully. content: application/json: schema: $ref: '#/components/schemas/InsightDetailsResponse' examples: sampleResponse: $ref: '#/components/examples/getInsightDetailResponseExample' '400': description: 'Bad request. ErrorCode and ErrorMessages below:

Y800: Invalid value for entityId
Y800: Invalid value for entityType; only ACCOUNT and VIEW is allowed.
Y800: Invalid value for entityType; one or more entityType requested is not eligible for the insightName passed.
Y800: Invalid value for entityType; It is either invalid, duplicated, or not supported.
Y822: Details cannot be requested for insights that are not enabled for the user.' 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: schemas: EligibleInsight: properties: insightName: type: string description: "Name of the Insight for which this notification is generated.

Endpoints - " readOnly: true example: BILL_NOT_PAID applicableConfiguration: type: array items: $ref: '#/components/schemas/EligibleDetail' userConfiguration: properties: entityId: type: string description: Unique ID which references a specific entityType.

Users can set preferences at s specific entityId level. Note Endpoints - example: '10001453' entityType: type: string description:

Endpoints - example: ACCOUNT 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.\n

>Endpoints -" example: true 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 - example: DAILY enum: - DAILY - WEEKLY - MONTHLY duration: type: string description: Identifies the duration for which the data will be considered to generate and insight.

Note Endpoints - example: THIS_MONTH enum: - THIS_MONTH - LAST_MONTH - THREE_MONTHS - SIX_MONTHS - ONE_YEAR 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

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.

If the peer benchmarking is enabled by the customer (isBenchmarkEnabled = true), the benchmarks will be subscribed automatically by the user.

The user can choose to turn off the benchmark configuration for the insight by setting isBenchmarkEnabled=false.

Note - There are few insights for which the isBenchmarkEnabled attribute cannot be updated since benchmark amount is essential for the insight evaluation.\n

Endpoints -" example: true EntityDetail: properties: entityType: type: string description: The entityType identifies which applicableEntity of the insight the configuration will impact. entityId: type: string description: "Unique ID which references a specific entityType for which the insight is generated. Endpoints - " container: type: string description: "The account's container.

Applicable containers - bank,creditCard,investment,insurance,loan

Endpoints -" readOnly: true example: creditCard enum: - bank - creditCard - investment - insurance - loan - reward - bill - realEstate - otherAssets - otherLiabilities link: allOf: - $ref: '#/components/schemas/Link' readOnly: true eligibleInsight: type: array items: $ref: '#/components/schemas/EligibleInsight' InsightDetailsResponse: properties: insightDetail: type: array items: $ref: '#/components/schemas/InsightDetail' EligibleDetail: allOf: - $ref: '#/components/schemas/userConfiguration' properties: container: type: string description: "The account's container.

Applicable containers - bank,creditCard,investment,insurance,loan

Endpoints - " readOnly: true example: creditCard enum: - bank - creditCard - investment - insurance - loan - reward - bill - realEstate - otherAssets - otherLiabilities link: allOf: - $ref: '#/components/schemas/Link' readOnly: true Threshold: properties: name: type: string description: Identifies the threshold applicable for an insight. Threshold values impact insight generation.Consider the following example - 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 - 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 - 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 - 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 - 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 - example: '10' InsightDetail: properties: insightName: type: string description: Name of the Insight for which this notification is generated.

Endpoints - readOnly: true example: BILL_NOT_PAID insightType: type: string 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).

Endpoints - readOnly: true enum: - OTHER - AGGREGATE triggerType: type: string description: triggerType of an insight defines how an Insight was triggered in the system.

Currently following triggerType are supported - Endpoints - readOnly: true example: SCHEDULE enum: - SCHEDULE - REFRESH - EVENT eligibleEntity: type: array items: $ref: '#/components/schemas/EligibleDetail' Link: description: Reference path link to fetch more information about the specific entity. properties: entityName: type: string description: The name of the entity - ACCOUNT, VIEW, etc. example: ACCOUNT methodType: type: string description: The method to use while calling the URL example: GET url: type: string description: URL to access the endpoint. example: /accounts?accountId=10231749 required: - entityName - url Error: required: - errorCode - referenceCode - errorMessage properties: errorCode: type: string referenceCode: type: string errorMessage: type: string EntityDetailResponse: properties: entityDetail: type: array items: $ref: '#/components/schemas/EntityDetail' examples: getEntityDetailResponseExample: value: entityDetail: - entityType: ACCOUNT entityId: 234213523 container: BANK link: entityName: ACCOUNT url: /accounts?accountId=234213523 eligibleInsight: - insightName: SUGGESTED_SAVING_OPPORTUNITY applicableConfiguration: - entityType: ACCOUNT isSubscribed: true frequency: MID_MONTHLY duration: LAST_THREE_MONTHS threshold: - name: CHANGE value: '100.00' type: AMOUNT - name: CHANGE value: '10.00' type: PERCENT - insightName: SPENDING_BY_MERCHANT_ALL_ACCOUNTS applicableConfiguration: - entityType: ACCOUNT isSubscribed: true frequency: MONTHLY duration: THREE_MONTHS threshold: - name: TOP value: 10 type: NUMBER getInsightDetailResponseExample: value: insightDetail: - insightName: SUGGESTED_SAVING_OPPORTUNITY insightType: OTHER triggerType: SCHEDULE eligibleEntity: - entityType: ACCOUNT entityId: 12312312 container: BANK isSubscribed: true frequency: MID_MONTHLY duration: LAST_THREE_MONTHS threshold: - name: CHANGE value: '100.00' type: AMOUNT - name: CHANGE value: '10.00' type: PERCENT link: entityName: account url: /accounts?accountId=234213523 - entityType: VIEW entityId: 12312312 container: BANK isSubscribed: true frequency: MID_MONTHLY duration: LAST_THREE_MONTHS threshold: - name: CHANGE value: '100.00' type: AMOUNT - name: CHANGE value: '10.00' type: PERCENT link: entityName: view url: /views/234213523