Documentation
Documentation
https://developer.yodlee.com/resources/yodlee/yodlee-api-overview/docs/overview
GettingStarted
https://developer.yodlee.com/docs/getting-started
swagger: '2.0'
info:
license:
name: Yodlee Developer License
url: https://developer.yodlee.com/terms/condition#_Services_1
contact:
email: developer@yodlee.com
description: 'This file describes the Yodlee Platform APIs using the swagger notation. You can use this swagger file to generate client side SDKs to the Yodlee Platform APIs for many different programming languages. 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
title: Yodlee Core APIs Account Token Transactions API
version: 1.1.0
basePath: /
tags:
- name: Transactions
description: Transactions API
paths:
/transactions:
get:
summary: Get Transactions
deprecated: false
produces:
- application/json;charset=UTF-8
description: 'The Transaction service is used to get a list of transactions for a user.<br>By default, this service returns the last 30 days of transactions from today''s date when fromDate and toDate are not passed.<br>When fromDate and toDate are passed, the API will only return up to 2 years of transaction history. If the difference between fromDate and toDate is more than 2 years, API will return only last 2 years from the toDate.<br>The keyword parameter performs a contains search on the original, consumer, and simple description attributes, replace the special characters #, &, and + with percent-encoding values %23, %26, and %2B respectively. Eg: for -Debit# , pass the input as -Debit%23.<br>Values for categoryId parameter can be fetched from get transaction category list service.<br> The categoryId is used to filter transactions based on system-defined category as well as user-defined category.<br>User-defined categoryIds should be provided in the filter with the prefix ''''U''''. E.g. U10002<br>The skip and top parameters are used for pagination. In the skip and top parameters pass the number of records to be skipped and retrieved, respectively. The response header provides the links to retrieve the next and previous set of transactions.<br>Double quotes in the merchant name will be prefixed by backslashes (\) in the response, e.g. Toys "R" Us. <br>sourceId is a unique ID that the provider site has assigned to the transaction. The source ID is only available for the pre-populated accounts. Pre-populated accounts are the accounts that the FI customers shares with Yodlee, so that the user does not have to add or aggregate those accounts.<br><br><b>Note</b><ul><li><a href="https://developer.yodlee.com/resources/yodlee/transaction-data-enrichment/docs/overview">Transaction Data Enrichment</a> is made available for bank and card accounts. The address field in the response is available only when the Transaction Data Enrichment key is turned ON.</li><li>The pagination feature is available by default. If no values are passed in the skip and top parameters, the API will only return the first 500 transactions.</li><li>This service supports the localization feature and accepts locale as a header parameter.</li></ul>'
operationId: getTransactions
responses:
200:
schema:
$ref: '#/definitions/TransactionResponse'
description: OK
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y800 : Invalid value for baseType<br>Y800 : Invalid value for fromDate<br>Y800 : Invalid value for category<br>Y800 : Invalid value for toDate<br>Y800 : Invalid value for container<br>Y809 : Invalid date range<br>Y804 : Permitted values of top between 1 - 500<br>Y805 : Multiple containers not supported<br>Y800 : Invalid value for transaction type<br>Y824 : The maximum number of accountIds permitted is 100<br>Y824 : The maximum number of categoryIds permitted is 100<br>Y824 : The maximum number of highLevelCategoryIds permitted is 100<br>Y848 : detailCategoryId cannot be provided as input, as the detailedCategory feature is not enabled<br>Y823 : detailCategoryId is not for applicable containers other than bank and card<br>Y824 : The maximum number of detailCategoryIds permitted is 100<br>Y800 : Invalid value for detailCategoryId<br>Y800 : Invalid value for convertToCurrency<br>Y820 : The currency value is not supported for convertToCurrency<br>'
401:
description: Unauthorized
404:
description: Not Found
parameters:
- in: query
allowEmptyValue: false
name: accountId
description: Comma separated accountIds
type: string
required: false
- in: query
allowEmptyValue: false
name: baseType
description: DEBIT/CREDIT
type: string
required: false
- in: query
allowEmptyValue: false
name: categoryId
description: Comma separated categoryIds
type: string
required: false
- in: query
allowEmptyValue: false
name: categoryType
description: Transaction Category Type(LOAN, UNCATEGORIZE, INCOME, TRANSFER, EXPENSE or DEFERRED_COMPENSATION)
type: string
required: false
- in: query
allowEmptyValue: false
name: container
description: bank/creditCard/investment/insurance/loan
type: string
required: false
- in: query
allowEmptyValue: false
name: convertToCurrency
description: On-demand currency conversion parameter
type: string
required: false
- in: query
allowEmptyValue: false
name: detailCategoryId
description: Comma separated detailCategoryIds. The id of the detail category that is assigned to the transaction. This is a premium attribute which will be returned in the response only if the Detail Category feature is enabled. The supported values are provided by GET transactions/categories.
type: string
required: false
- in: query
allowEmptyValue: false
name: fromDate
description: Transaction from date(YYYY-MM-DD)
type: string
required: false
- in: query
allowEmptyValue: false
name: highLevelCategoryId
description: Comma separated highLevelCategoryIds
type: string
required: false
- in: query
allowEmptyValue: false
name: keyword
description: Transaction search text
type: string
required: false
- in: query
allowEmptyValue: false
name: skip
format: int32
description: skip (Min 0)
type: integer
required: false
- in: query
allowEmptyValue: false
name: toDate
description: Transaction end date (YYYY-MM-DD)
type: string
required: false
- in: query
allowEmptyValue: false
name: top
format: int32
description: top (Max 500)
type: integer
required: false
- in: query
allowEmptyValue: false
name: transactionSourceId
description: A unique ID that the provider site has assigned to the transaction
type: string
required: false
- in: query
allowEmptyValue: false
name: type
description: Transaction Type(SELL,SWEEP, etc.) for bank/creditCard/investment
type: string
required: false
tags:
- Transactions
put:
summary: Update Transaction for Transaction Source ID
deprecated: false
produces:
- application/json;charset=UTF-8
description: Update the category, consumer description, memo, isPhysical, merchantType, and detailCategory for a transaction by filtering it using the Transaction Source ID.<br>The HTTP response code is 204 (Success without content).<br>
operationId: updateTransaction
responses:
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y812 : Required field -transactionSourceId missing in the transaction <br>Y812 : Required field -container missing in the transactionParam parameter input<br>Y800 : Invalid value for transactionId<br>Y800 : Invalid value for merchantType<br>Y800 : Invalid value for detailCategoryId<br>Y800 : Invalid value for categoryId<br>Y868 : No action is allowed, as the data is being migrated to the Open Banking provider<br>Y800 : Invalid value for transactionSourceId<br>Y800 : Invalid value for transactionSourceId. Muiltiple transactionId found for given transactionSourceId<br>'
401:
description: Unauthorized
204:
description: Updated Successfully
404:
description: Not Found
parameters:
- schema:
$ref: '#/definitions/TransactionRequest'
in: body
name: transactionRequest
description: transactionRequest
required: true
tags:
- Transactions
consumes:
- application/json
/transactions/categories/rules/{ruleId}:
post:
summary: Run Transaction Categorization Rule
deprecated: false
produces:
- application/json;charset=UTF-8
description: The run transaction categorization rule service is used to run a rule on transactions, to categorize the transactions.<br>The HTTP response code is 204 (Success with no content).<br>
operationId: runTransactionCategorizationRule
responses:
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y800 : Invalid value for ruleId<br>Y400 : Categorization already in progress'
401:
description: Unauthorized
204:
description: Run Successfully
404:
description: Not Found
parameters:
- default: run
in: query
name: action
type: string
required: true
enum:
- run
- in: path
name: ruleId
format: int64
description: Unique id of the categorization rule
type: integer
required: true
tags:
- Transactions
consumes:
- application/json
delete:
summary: Delete Transaction Categorization Rule
deprecated: false
produces:
- application/json;charset=UTF-8
description: The delete transaction categorization rule service is used to delete the given user-defined transaction categorization rule for both system-defined category as well as user-defined category.<br>This will delete all the corresponding rule clauses associated with the rule.<br>The HTTP response code is 204 (Success without content).<br>
operationId: deleteTransactionCategorizationRule
responses:
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y800 : Invalid value for ruleId'
401:
description: Unauthorized
204:
description: Deleted Successfully
404:
description: Not Found
parameters:
- in: path
name: ruleId
format: int64
description: ruleId
type: integer
required: true
tags:
- Transactions
put:
summary: Update Transaction Categorization Rule
deprecated: false
produces:
- application/json;charset=UTF-8
description: The update transaction categorization rule service is used to update a categorization rule for both system-defined category as well as user-defined category.<br>ruleParam JSON input should be as explained in the create transaction categorization rule service.<br>The HTTP response code is 204 (Success without content).<br>
operationId: updateTransactionCategorizationRule
responses:
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y800 : Invalid value for ruleId<br>Y806 : Invalid input'
401:
description: Unauthorized
204:
description: Updated Successfully
404:
description: Not Found
parameters:
- in: path
name: ruleId
format: int64
description: ruleId
type: integer
required: true
- schema:
$ref: '#/definitions/TransactionCategorizationRuleRequest'
in: body
name: transactionCategoriesRuleRequest
description: transactionCategoriesRuleRequest
required: true
tags:
- Transactions
consumes:
- application/json
/transactions/count:
get:
summary: Get Transactions Count
deprecated: false
produces:
- application/json;charset=UTF-8
description: The count service provides the total number of transactions for a specific user depending on the input parameters passed.<br>If you are implementing pagination for transactions, call this endpoint before calling GET /transactions to know the number of transactions that are returned for the input parameters passed.<br>The functionality of the input parameters remains the same as that of the GET /transactions endpoint.<br>If the difference between fromDate and toDate is more than 2 years, API will return the count of last 2 years from the toDate.<br>
operationId: getTransactionsCount
responses:
200:
schema:
$ref: '#/definitions/TransactionCountResponse'
description: OK
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y800 : Invalid value for detailCategoryId<br>Y848 : detailCategoryId cannot be provided as input, as the detailedCategory feature is not enabled<br>Y823 : detailCategoryId is not applicable for containers other than bank and card<br>Y824 : The maximum number of detailCategoryIds permitted is 100<br>'
401:
description: Unauthorized
404:
description: Not Found
parameters:
- in: query
allowEmptyValue: false
name: accountId
description: "Comma separated accountIds\t"
type: string
required: false
- in: query
allowEmptyValue: false
name: baseType
description: DEBIT/CREDIT
type: string
required: false
- in: query
allowEmptyValue: false
name: categoryId
description: Comma separated categoryIds
type: string
required: false
- in: query
allowEmptyValue: false
name: categoryType
description: Transaction Category Type(LOAN, UNCATEGORIZE, INCOME, TRANSFER, EXPENSE or DEFERRED_COMPENSATION)
type: string
required: false
- in: query
allowEmptyValue: false
name: container
description: bank/creditCard/investment/insurance/loan
type: string
required: false
- in: query
allowEmptyValue: false
name: detailCategoryId
description: Comma separated detailCategoryIds. The id of the detail category that is assigned to the transaction. This is a premium attribute which will be returned in the response only if the Detail Category feature is enabled. The supported values are provided by GET transactions/categories.
type: string
required: false
- in: query
allowEmptyValue: false
name: fromDate
description: Transaction from date(YYYY-MM-DD)
type: string
required: false
- in: query
allowEmptyValue: false
name: highLevelCategoryId
description: Comma separated highLevelCategoryIds
type: string
required: false
- in: query
allowEmptyValue: false
name: keyword
description: "Transaction search text\t"
type: string
required: false
- in: query
allowEmptyValue: false
name: toDate
description: Transaction end date (YYYY-MM-DD)
type: string
required: false
- in: query
allowEmptyValue: false
name: type
description: Transaction Type(SELL,SWEEP, etc.)
type: string
required: false
tags:
- Transactions
/transactions/categories/txnRules:
get:
summary: Get Transaction Categorization Rules
deprecated: false
produces:
- application/json;charset=UTF-8
description: The get transaction categorization rule service is used to get all the categorization rules.<br>
operationId: getTransactionCategorizationRules
responses:
200:
schema:
$ref: '#/definitions/TransactionCategorizationRuleResponse'
description: OK
401:
description: Unauthorized
404:
description: Not Found
tags:
- Transactions
/transactions/categories/{categoryId}:
delete:
summary: Delete Category
deprecated: false
produces:
- application/json;charset=UTF-8
description: The delete transaction categories service is used to delete the given user-defined category.<br>The HTTP response code is 204 (Success without content).<br>
operationId: deleteTransactionCategory
responses:
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y800 : Invalid value for categoryId'
401:
description: Unauthorized
204:
description: Deleted Successfully
404:
description: Not Found
parameters:
- in: path
name: categoryId
format: int64
description: categoryId
type: integer
required: true
tags:
- Transactions
/transactions/categories:
post:
summary: Create Category
deprecated: false
produces:
- application/json;charset=UTF-8
description: The create transaction categories service is used to create user-defined categories for a system-defined category.<br>The parentCategoryId is the system-defined category id.This can be retrieved using get transaction categories service.<br>The categoryName can accept minimum of 1, maximum of 50 alphanumeric or special characters.<br>The HTTP response code is 201 (Created successfully).<br>
operationId: createTransactionCategory
responses:
201:
description: Created Successfully
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y800 : Invalid value for categoryParam<br>Y800 : Invalid value for source<br>Y801 : Invalid length for categoryName. Min 1 and max 50 is required<br>Y803 : parentCategoryId required<br>Y811 : categoryName value already exists'
401:
description: Unauthorized
404:
description: Not Found
parameters:
- schema:
$ref: '#/definitions/TransactionCategoryRequest'
in: body
name: transactionCategoryRequest
description: User Transaction Category in JSON format
required: true
tags:
- Transactions
consumes:
- application/json
get:
summary: Get Transaction Category List
deprecated: false
produces:
- application/json;charset=UTF-8
description: The categories service returns the list of available transaction categories.<br>High level category is returned in the response only if it is opted by the customer.<br>When invoked by passing the cobrand session or admin access token, this service returns the supported transaction categories at the cobrand level. <br>When invoked by passing the cobrand session and the user session or user access token, this service returns the transaction categories <br>along with user-defined categories.<br>Double quotes in the user-defined category name will be prefixed by backslashes (\) in the response, <br>e.g. Toys "R" Us.<br/>Source and id are the primary attributes of the category entity.<br><br><b>Note:</b><li>This service supports the localization feature and accepts locale as a header parameter.</li>
operationId: getTransactionCategories
responses:
200:
schema:
$ref: '#/definitions/TransactionCategoryResponse'
description: OK
401:
description: Unauthorized
404:
description: Not Found
tags:
- Transactions
put:
summary: Update Category
deprecated: false
produces:
- application/json;charset=UTF-8
description: The update transaction categories service is used to update the transaction category name<br>for a high level category, a system-defined category and a user-defined category.<br>The renamed category can be set back to the original name by passing an empty string for categoryName.<br>The categoryName can accept minimum of 1, maximum of 50 alphanumeric or special characters.<br>The HTTP response code is 204 (Success without content).<br>
operationId: updateTransactionCategory
responses:
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y800 : Invalid value for categoryParam<br>Y800 : Invalid value for source<br>Y801 : Invalid length for categoryName. Min 1 and max 50 is required<br>Y803 : id required<br>Y811 : categoryName value already exists'
401:
description: Unauthorized
204:
description: Updated Successfully
404:
description: Not Found
parameters:
- schema:
$ref: '#/definitions/UpdateCategoryRequest'
in: body
name: updateCategoryRequest
description: updateCategoryRequest
required: true
tags:
- Transactions
consumes:
- application/json
/transactions/categories/rules:
post:
summary: Create or Run Transaction Categorization Rule
deprecated: false
produces:
- application/json;charset=UTF-8
description: 'The Create or Run Transaction Categorization Rule endpoint is used to: <br>Create transaction categorization rules for both system and user-defined categories.<br>Run all the transaction categorization rules to categorize transactions by calling the endpoint with action=run as the query parameter. <br><br>The input body parameters to create transaction categorization rules follow:<br> categoryId - This field is mandatory and numeric<br> priority - This field is optional and numeric. Priority decides the order in which the rule gets applied on transactions.<br> ruleClause - This field is mandatory and should contain at least one rule<br> field - The value can be description or amount<br><br> If the field value is description then,<br> 1. operation - value can be stringEquals or stringContains<br> 2. value - value should be min of 3 and max of 50 characters<br><br> If the field value is amount then, <br> 1. operation - value can be numberEquals, numberLessThan, numberLessThanEquals, numberGreaterThan or numberGreaterThanEquals<br> 2. value - min value 0 and a max value of 99999999999.99 is allowed<br>The HTTP response code is 201 (Created Successfully).'
operationId: createOrRunTransactionCategorizationRules
responses:
201:
description: Created Successfully
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y806 : Invalid input<br>Y400 : Rule already exists. Rule should be unique in terms of combination of description and amount'
401:
description: Unauthorized
204:
description: No Content
404:
description: Not Found
parameters:
- in: query
allowEmptyValue: false
name: action
description: To run rules, pass action=run. Only value run is supported
type: string
required: false
- in: query
allowEmptyValue: false
name: ruleParam
description: rules(JSON format) to categorize the transactions
type: string
required: false
tags:
- Transactions
consumes:
- application/json
get:
summary: Get Transaction Categorization Rules
deprecated: true
produces:
- application/json;charset=UTF-8
description: The get transaction categorization rule service is used to get all the categorization rules.<br>
operationId: getTransactionCategorizationRulesDeprecated
responses:
200:
schema:
type: array
items:
$ref: '#/definitions/TransactionCategorizationRule'
description: OK
401:
description: Unauthorized
404:
description: Not Found
tags:
- Transactions
/transactions/{transactionId}:
get:
summary: Get Transactions using Transaction ID
deprecated: false
produces:
- application/json;charset=UTF-8
description: The Transaction service is used to get a list of transactions for a user using Transaction ID.<br>
operationId: getTransactionsByTransactionID
responses:
200:
schema:
$ref: '#/definitions/TransactionResponse'
description: OK
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y800 : Invalid value for baseType<br>Y800 : Invalid value for fromDate<br>Y800 : Invalid value for category<br>Y800 : Invalid value for toDate<br>Y800 : Invalid value for container<br>Y809 : Invalid date range<br>Y804 : Permitted values of top between 1 - 500<br>Y805 : Multiple containers not supported<br>Y800 : Invalid value for transaction type<br>Y824 : The maximum number of accountIds permitted is 100<br>Y824 : The maximum number of categoryIds permitted is 100<br>Y824 : The maximum number of highLevelCategoryIds permitted is 100<br>Y848 : detailCategoryId cannot be provided as input, as the detailedCategory feature is not enabled<br>Y823 : detailCategoryId is not for applicable containers other than bank and card<br>Y824 : The maximum number of detailCategoryIds permitted is 100<br>Y800 : Invalid value for detailCategoryId<br>Y800 : Invalid value for convertToCurrency<br>Y820 : The currency value is not supported for convertToCurrency<br>'
401:
description: Unauthorized
404:
description: Not Found
parameters:
- in: query
allowEmptyValue: false
name: container
description: bank/creditCard/investment/insurance/loan
type: string
required: true
- in: query
allowEmptyValue: false
name: convertToCurrency
description: On-demand currency conversion parameter
type: string
required: false
- in: path
name: transactionId
format: int64
description: An unique identifier for the transaction. The combination of the id and account container are unique in the system.
type: integer
required: true
tags:
- Transactions
put:
summary: Update Transaction
deprecated: false
produces:
- application/json;charset=UTF-8
description: The update transaction service is used to update the category,consumer description, memo, isPhysical, merchantType, detailCategory for a transaction.<br>The HTTP response code is 204 (Success without content).<br>
operationId: updateTransaction_1
responses:
400:
schema:
$ref: '#/definitions/YodleeError'
description: 'Y812 : Required field -container missing in the transactionParam parameter input<br>Y800 : Invalid value for transactionId<br>Y800 : Invalid value for merchantType<br>Y800 : Invalid value for detailCategoryId<br>Y800 : Invalid value for categoryId<br>Y868 : No action is allowed, as the data is being migrated to the Open Banking provider<br>'
401:
description: Unauthorized
204:
description: Updated Successfully
404:
description: Not Found
parameters:
- in: path
name: transactionId
format: int64
description: transactionId
type: integer
required: true
- schema:
$ref: '#/definitions/TransactionRequest'
in: body
name: transactionRequest
description: transactionRequest
required: true
tags:
- Transactions
consumes:
- application/json
definitions:
BusinessCategory:
type: object
title: BusinessCategory
properties:
categoryName:
description: 'The name of the category assigned to the transaction. This is the category field of the transaction category resource. The supported values are provided by the GET transactions/categories.<br><br><b>Applicable containers</b>: bank,creditCard,investment,insurance,loan<br>'
readOnly: true
type: string
categoryId:
format: int64
description: 'The id of the category assigned to the transaction. This is the id field of the transaction category resource. The supported values are provided by the GET transactions/categories.<br><br><b>Applicable containers</b>: bank,creditCard,investment,insurance,loan<br>'
readOnly: true
type: integer
TransactionCountResponse:
type: object
title: TransactionCountResponse
properties:
transaction:
readOnly: true
$ref: '#/definitions/TransactionCount'
UpdateTransaction:
type: object
title: UpdateTransaction
required:
- categoryId
- categorySource
- container
- transactionSourceId
properties:
categorySource:
type: string
enum:
- SYSTEM
- USER
container:
type: string
enum:
- bank
- creditCard
- investment
- insurance
- loan
- reward
- bill
- realEstate
- otherAssets
- otherLiabilities
isPhysical:
type: boolean
detailCategoryId:
format: int64
type: integer
memo:
type: string
transactionSourceId:
type: string
merchantType:
type: string
enum:
- BILLERS
- SUBSCRIPTION
- BNPL
- OTHERS
categoryId:
format: int64
type: integer
TransactionCategorizationRuleResponse:
type: object
title: TransactionCategorizationRuleResponse
properties:
txnRules:
readOnly: true
type: array
items:
$ref: '#/definitions/TransactionCategorizationRule'
TransactionCategorizationRuleRequest:
type: object
title: TransactionCategorizationRuleRequest
required:
- rule
properties:
rule:
$ref: '#/definitions/TransactionCategorizationRuleInfo'
DetailCategory:
type: object
title: DetailCategory
properties:
name:
description: 'The name of the detail category<br><br><b>Applicable containers</b>: creditCard, investment, insurance, loan<br>'
readOnly: true
type: string
id:
format: int64
description: 'The unique identifier of the detail category.<br><br><b>Applicable containers</b>: creditCard, investment, insurance, loan<br>'
readOnly: true
type: integer
LogoURLs:
type: object
title: LogoURLs
properties:
type:
description: 'The merchant type of the logo url (SVG/PNG)<br><br><b>Applicable containers</b>: bank,creditCard,investment,loan<br>'
readOnly: true
type: string
url:
description: 'The logo url of the merchant<br><br><b>Applicable containers</b>: bank,creditCard,investment,loan<br>'
readOnly: true
type: string
Merchant:
type: object
title: Merchant
properties:
website:
description: 'The website of the merchant.<br><br><b>Applicable containers</b>: bank,creditCard,investment,loan<br>'
readOnly: true
type: string
address:
description: 'The address of the merchant associated with the transaction is populated in the merchant address field.<br><b>Note</b>: The merchant address field is not available by default and customers will have to specifically request the merchant''s address (that includes city, state, and ZIP of the merchant). The merchant address field is available only for merchants in the United States.<br><br><b>Applicable c
# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/yodlee/refs/heads/main/openapi/yodlee-transactions-api-openapi.yml