Python implementation of the YNAB API (https://api.youneedabudget.com/)
Use the package manager pip to install ynab-sdk-python
pip install ynab-sdk
Example of use with the default client:
from ynab_sdk import YNAB
ynab = YNAB('some-key')
print(ynab.budgets.get_budgets())
Example of use with the cached client:
from ynab_sdk import YNAB
from ynab_sdk.utils.clients.cached_client import CachedClient
from ynab_sdk.utils.configurations.cached import CachedConfig
ynab_config = CachedConfig(
redis_host='redis-host',
redis_port='redis-port',
redis_db='redis-db',
redis_pass='redis-password',
api_key='some-key',
)
ynab_client = CachedClient(ynab_config)
ynab = YNAB(client=ynab_client)
# clear the cache
ynab_client.clear_cache()
# set the cached data expiration time in seconds
# if set to 0, negative or None, the cached data never expires
# default value is 3600 seconds (1 hour)
ynab_config.redis_ttl = 120
print(ynab.budgets.get_budgets())
See below whats implemented (Not fully updated yet)
Endpoint | Verb | Description | Working | Obs |
---|---|---|---|---|
/user | GET | Returns authenticated user information | NO | |
/budgets | GET | Returns budgets list with summary information | YES | |
/budgets/{budget_id} | GET | Returns a single budget with all related entities. This resource is effectively a full budget export. | YES | |
/budgets/{budget_id}/settings | GET | Returns settings for a budget | YES | |
/budgets/{budget_id}/accounts | GET | Returns all accounts | YES | |
/budgets/{budget_id}/accounts/{account_id} | GET | Returns a single account | YES | |
/budgets/{budget_id}/accounts | POST | Creates a new account | YES | |
/budgets/{budget_id}/categories | GET | Returns all categories grouped by category group. Amounts (budgeted, activity, balance, etc.) are specific to the current budget month (UTC). | ||
/budgets/{budget_id}/categories/{category_id} | GET | Returns a single category. Amounts (budgeted, activity, balance, etc.) are specific to the current budget month (UTC). | ||
/budgets/{budget_id}/months/{month}/categories/{category_id} | GET | Returns a single category for a specific budget month. Amounts (budgeted, activity, balance, etc.) are specific to the current budget month (UTC). | ||
/budgets/{budget_id}/months/{month}/categories/{category_id} | PATCH | Update a category for a specific month | ||
/budgets/{budget_id}/payees | GET | Returns all payees | YES | |
/budgets/{budget_id}/payees/{payee_id} | GET | Returns single payee | YES | |
/budgets/{budget_id}/payee_locations | GET | Returns all payee locations | NO | |
/budgets/{budget_id}/payee_locations/{payee_location_id} | GET | Returns a single payee location | NO | |
/budgets/{budget_id}/payees/{payee_id}/payee_locations | GET | Returns all payee locations for the specified payee | NO | |
/budgets/{budget_id}/months | GET | Returns all budget months | NO | |
/budgets/{budget_id}/months/{month} | GET | Returns a single budget month | NO | |
/budgets/{budget_id}/transactions | GET | Returns budget transactions | YES | |
/budgets/{budget_id}/transactions | POST | Creates a single transaction or multiple transactions. If you provide a body containing a 'transaction' object, a single transaction will be created and if you provide a body containing a 'transactions' array, multiple transactions will be created. | YES | |
/budgets/{budget_id}/transactions | PATCH | Updates multiple transactions, by 'id' or 'import_id'. | NO | |
/budgets/{budget_id}/transactions/{transaction_id} | GET | Returns a single transaction | YES | |
/budgets/{budget_id}/transactions/{transaction_id} | PUT | Updates a transaction | YES | |
/budgets/{budget_id}/transactions/bulk | POST | Creates multiple transactions. Although this endpoint is still supported, it is recommended to use 'POST /budgets/{budget_id}/transactions' to create multiple transactions. | NO | |
/budgets/{budget_id}/accounts/{account_id}/transactions | GET | Returns all transactions for a specified account | YES | |
/budgets/{budget_id}/categories/{category_id}/transactions | GET | Returns all transactions for a specified category | NO | |
/budgets/{budget_id}/payees/{payee_id}/transactions | GET | Returns all transactions for a specified payee | NO | |
/budgets/{budget_id}/scheduled_transactions | GET | Returns all scheduled transactions | NO | |
/budgets/{budget_id}/scheduled_transactions/{scheduled_transaction_id} | GET | Returns a single scheduled transaction | NO |
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.