@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Yodlee Core APIs
@base /
@version 1.1.0
@endpoints 70
@hint download_for_search
@toc transactions(13), cobrand(7), dataExtracts(2), providers(3), configs(5), derived(3), user(7), documents(3), providerAccounts(6), auth(5), accounts(7), holdings(4), verifyAccount(1), verification(3), statements(1)

@group transactions
@endpoint GET /transactions
@optional {accountId: str, baseType: str, categoryId: str, categoryType: str, container: str, detailCategoryId: str, fromDate: str, highLevelCategoryId: str, keyword: str, skip: int(int32), toDate: str, top: int(int32), type: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group cobrand
@endpoint POST /cobrand/login
@required {cobrand: map{cobrandLogin!: str, cobrandPassword!: str, locale: str}}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group dataExtracts
@endpoint GET /dataExtracts/userData
@required {fromDate: str, loginName: str, toDate: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group providers
@endpoint GET /providers
@optional {capability: str, dataset$filter: str, fullAccountNumberFields: str, institutionId: int(int64), name: str, priority: str, providerId: str, skip: int(int32), top: int(int32)}
@returns(200)
@errors {400, 401, 404}

@endpoint GET /providers/{providerId}
@required {providerId: int(int64)}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group cobrand
@endpoint PUT /cobrand/config/notifications/events/{eventName}
@required {eventName: str(REFRESH/DATA_UPDATES/AUTO_REFRESH_UPDATES), event: map{callbackUrl: str}}
@returns(204)
@errors {400, 401, 404}

@endpoint POST /cobrand/config/notifications/events/{eventName}
@required {eventName: str(REFRESH/DATA_UPDATES/AUTO_REFRESH_UPDATES), event: map{callbackUrl: str}}
@returns(201)
@errors {400, 401, 404}

@endpoint DELETE /cobrand/config/notifications/events/{eventName}
@required {eventName: str(REFRESH/DATA_UPDATES/AUTO_REFRESH_UPDATES)}
@returns(204)
@errors {400, 401, 404}

@endgroup

@group configs
@endpoint GET /configs/notifications/events
@optional {eventName: str(REFRESH/DATA_UPDATES/AUTO_REFRESH_UPDATES)}
@returns(200)
@errors {401, 404}

@endgroup

@group providers
@endpoint GET /providers/count
@optional {capability: str, dataset$filter: str, fullAccountNumberFields: str, name: str, priority: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group derived
@endpoint GET /derived/networth
@optional {accountIds: str, container: str, fromDate: str, include: str, interval: str, skip: int(int32), toDate: str, top: int(int32)}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group user
@endpoint POST /user/samlLogin
@required {issuer: str, samlResponse: str}
@optional {source: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group transactions
@endpoint PUT /transactions/categories/rules/{ruleId}
@required {ruleId: int(int64), rule: map{ruleClause!: [map], source: str, priority: int(int32), categoryId!: int(int32)}}
@returns(204)
@errors {400, 401, 404}

@endpoint POST /transactions/categories/rules/{ruleId}
@required {action: str=run, ruleId: int(int64)}
@returns(204)
@errors {400, 401, 404}

@endpoint DELETE /transactions/categories/rules/{ruleId}
@required {ruleId: int(int64)}
@returns(204)
@errors {400, 401, 404}

@endgroup

@group documents
@endpoint GET /documents/{documentId}
@required {documentId: str}
@returns(200)
@errors {400, 401, 404}

@endpoint DELETE /documents/{documentId}
@required {documentId: str}
@returns(204)
@errors {400, 401, 404}

@endgroup

@group user
@endpoint GET /user/accessTokens
@required {appIds: str}
@returns(200)
@errors {401, 404}

@endgroup

@group cobrand
@endpoint POST /cobrand/logout
@returns(204)
@errors {401, 404}

@endgroup

@group providerAccounts
@endpoint PUT /providerAccounts/{providerAccountId}/preferences
@required {providerAccountId: int(int64)}
@optional {preferences: map{isDataExtractsEnabled: bool, linkedProviderAccountId: int(int64), isAutoRefreshEnabled: bool}}
@returns(204)
@errors {400, 401, 404}

@endgroup

@group auth
@endpoint POST /auth/token
@returns(201)
@errors {400, 401, 404}

@endpoint DELETE /auth/token
@returns(204)
@errors {401, 404}

@endgroup

@group user
@endpoint GET /user
@returns(200)
@errors {401, 404}

@endpoint PUT /user
@required {user: map{preferences: map, address: map, name: map, email: str, segmentName: str}}
@returns(204)
@errors {401, 404}

@endgroup

@group providerAccounts
@endpoint GET /providerAccounts/{providerAccountId}
@required {providerAccountId: int(int64)}
@optional {include: str, requestId: str}
@returns(200)
@errors {400, 401, 404}

@endpoint DELETE /providerAccounts/{providerAccountId}
@required {providerAccountId: int(int64)}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group accounts
@endpoint GET /accounts
@optional {accountId: str, container: str, include: str, providerAccountId: str, requestId: str, status: str}
@returns(200)
@errors {400, 401, 404}

@endpoint POST /accounts
@required {account: map{includeInNetWorth: str, address: map, accountName!: str, accountType!: str, dueDate: str, memo: str, homeValue: map, accountNumber: str, frequency: str, amountDue: map, balance: map, nickname: str, valuationType: str}}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group user
@endpoint DELETE /user/unregister
@returns(204)
@errors {401, 404}

@endgroup

@group holdings
@endpoint GET /holdings/assetClassificationList
@returns(200)
@errors {401, 404}

@endgroup

@group verifyAccount
@endpoint POST /verifyAccount/{providerAccountId}
@required {providerAccountId: str, transactionCriteria: [map{date!: str, amount!: num(double), verifiedTransaction: [map], matched: str, keyword: str, dateVariance: str, baseType: str}]}
@optional {container: str(bank/creditCard/investment/insurance/loan/reward/realEstate/otherAssets/otherLiabilities), accountId: int(int64)}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group configs
@endpoint GET /configs/publicKey
@returns(200)
@errors {401, 404}

@endgroup

@group auth
@endpoint DELETE /auth/apiKey/{key}
@required {key: str}
@returns(201)
@returns(204)
@errors {400, 401, 404}

@endgroup

@group providerAccounts
@endpoint GET /providerAccounts
@optional {include: str, providerIds: str}
@returns(200)
@errors {401, 404}

@endpoint PUT /providerAccounts
@required {providerAccountIds: str, field: [map{image: str, prefix: str, minLength: int(int64), valueEditable: str, isOptional: bool, suffix: str, type: str, isValueProvided: bool, name: str, id: str, value: str, maxLength: int(int64), option: [map]}]}
@optional {consentId: int(int64), preferences: map{isDataExtractsEnabled: bool, linkedProviderAccountId: int(int64), isAutoRefreshEnabled: bool}, aggregationSource: str(SYSTEM/USER), datasetName: [str], dataset: [map{name: str, attribute: [map]}]}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group transactions
@endpoint GET /transactions/count
@optional {accountId: str, baseType: str, categoryId: str, categoryType: str, container: str, detailCategoryId: str, fromDate: str, highLevelCategoryId: str, keyword: str, toDate: str, type: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group derived
@endpoint GET /derived/transactionSummary
@required {groupBy: str}
@optional {accountId: str, categoryId: str, categoryType: str, fromDate: str, include: str, includeUserCategory: bool, interval: str, toDate: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group transactions
@endpoint GET /transactions/categories/txnRules
@returns(200)
@errors {401, 404}

@endpoint DELETE /transactions/categories/{categoryId}
@required {categoryId: int(int64)}
@returns(204)
@errors {400, 401, 404}

@endgroup

@group documents
@endpoint GET /documents
@optional {Keyword: str, accountId: str, docType: str, fromDate: str, toDate: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group accounts
@endpoint POST /accounts/evaluateAddress
@required {address: map{zip: str, country: str, address3: str, address2: str, city: str, sourceType: str, address1: str, street!: str, state: str, type: str}}
@returns(200)
@errors {400, 401, 404}

@endpoint GET /accounts/{accountId}
@required {accountId: int(int64)}
@optional {include: str}
@returns(200)
@errors {401, 404}

@endpoint PUT /accounts/{accountId}
@required {accountId: int(int64), account: map{container: str, includeInNetWorth: str, address: map, accountName: str, dueDate: str, memo: str, homeValue: map, accountNumber: str, frequency: str, accountStatus: str, amountDue: map, balance: map, isEbillEnrolled: str, nickname: str}}
@returns(204)
@errors {400, 401, 404}

@endpoint DELETE /accounts/{accountId}
@required {accountId: int(int64)}
@returns(204)
@errors {400, 401, 404}

@endpoint GET /accounts/historicalBalances
@optional {accountId: str, fromDate: str, includeCF: bool, interval: str, skip: int(int32), toDate: str, top: int(int32)}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group user
@endpoint POST /user/register
@required {user: map{preferences: map, address: map, loginName!: str, name: map, email: str, segmentName: str}}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group providerAccounts
@endpoint GET /providerAccounts/profile
@optional {providerAccountId: str}
@returns(200)
@errors {401, 404}

@endgroup

@group verification
@endpoint GET /verification
@optional {accountId: str, providerAccountId: str, verificationType: str}
@returns(200)
@errors {400, 401, 404}

@endpoint PUT /verification
@optional {verification: map{accountId: int(int64), reason: str, verificationStatus: str, providerAccountId: int(int64), verificationType: str, account: map, transaction!: [map], verificationDate: str, verificationId: int(int64)}}
@returns(200)
@errors {400, 401, 404}

@endpoint POST /verification
@required {verification: map{accountId: int(int64), reason: str, verificationStatus: str, providerAccountId: int(int64), verificationType: str, account: map, verificationDate: str, verificationId: int(int64)}}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group holdings
@endpoint GET /holdings/securities
@optional {holdingId: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group configs
@endpoint PUT /configs/notifications/events/{eventName}
@required {eventName: str(REFRESH/DATA_UPDATES/AUTO_REFRESH_UPDATES), event: map{callbackUrl: str}}
@returns(204)
@errors {400, 401, 404}

@endpoint POST /configs/notifications/events/{eventName}
@required {eventName: str(REFRESH/DATA_UPDATES/AUTO_REFRESH_UPDATES), event: map{callbackUrl: str}}
@returns(201)
@errors {400, 401, 404}

@endpoint DELETE /configs/notifications/events/{eventName}
@required {eventName: str(REFRESH/DATA_UPDATES/AUTO_REFRESH_UPDATES)}
@returns(204)
@errors {400, 401, 404}

@endgroup

@group holdings
@endpoint GET /holdings
@optional {accountId: str, assetClassification.classificationType: str, classificationValue: str, include: str, providerAccountId: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group cobrand
@endpoint GET /cobrand/config/notifications/events
@optional {eventName: str(REFRESH/DATA_UPDATES/AUTO_REFRESH_UPDATES)}
@returns(200)
@errors {401, 404}

@endgroup

@group auth
@endpoint GET /auth/apiKey
@returns(200)
@errors {401, 404}

@endpoint POST /auth/apiKey
@optional {publicKey: str}
@returns(201)
@errors {400, 401, 404}

@endgroup

@group cobrand
@endpoint GET /cobrand/publicKey
@returns(200)
@errors {401, 404}

@endgroup

@group transactions
@endpoint GET /transactions/categories
@returns(200)
@errors {401, 404}

@endpoint PUT /transactions/categories
@required {id: int(int64), source: str(SYSTEM/USER)}
@optional {highLevelCategoryName: str, categoryName: str}
@returns(204)
@errors {400, 401, 404}

@endpoint POST /transactions/categories
@required {parentCategoryId: int(int32)}
@optional {source: str, categoryName: str}
@returns(201)
@errors {400, 401, 404}

@endpoint GET /transactions/categories/rules
@returns(200)
@errors {401, 404}

@endpoint POST /transactions/categories/rules
@optional {action: str, ruleParam: str}
@returns(201)
@returns(204)
@errors {400, 401, 404}

@endgroup

@group statements
@endpoint GET /statements
@optional {accountId: str, container: str, fromDate: str, isLatest: str, status: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group holdings
@endpoint GET /holdings/holdingTypeList
@returns(200)
@errors {401, 404}

@endgroup

@group user
@endpoint POST /user/logout
@returns(204)
@errors {401, 404}

@endgroup

@group transactions
@endpoint PUT /transactions/{transactionId}
@required {transactionId: int(int64), transaction: map{categorySource!: str, container!: str, description: map, memo: str, categoryId!: int(int64)}}
@returns(204)
@errors {400, 401, 404}

@endgroup

@group dataExtracts
@endpoint GET /dataExtracts/events
@required {eventName: str, fromDate: str, toDate: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@group derived
@endpoint GET /derived/holdingSummary
@optional {accountIds: str, classificationType: str, include: str}
@returns(200)
@errors {400, 401, 404}

@endgroup

@end
