jfrux / ynab-api

Generated Python API for YNAB

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ynab-api

Our API uses a REST based design, leverages the JSON data format, and relies upon HTTPS for transport. We respond with meaningful HTTP response codes and if an error occurs, we include error details in the response body. API Documentation is at https://api.youneedabudget.com

This Python package is automatically generated by the OpenAPI Generator project:

  • API version: 1.0.0
  • Package version: 1.0.0
  • Build package: org.openapitools.codegen.languages.PythonClientCodegen

Requirements.

Python >= 3.6

Installation & Usage

pip install

pip install git+https://github.com/dmlerner/ynab-api.git

NOTE: If you get issues about nullability or things being not set, consider installed the "nullfix" branch:

pip install git+https://github.com/dmlerner/ynab-api.git@nullfix

(you may need to run pip with root permission: sudo pip install git+https://github.com/dmlerner/ynab-api.git)

Then import the package:

import ynab_api

NOTE: the pip package ynab_api is an old, non-working version of this. I am working to get it updated, but am locked out of that account.

Setuptools

Install via Setuptools.

python setup.py install --user

(or sudo python setup.py install to install the package for all users)

Then import the package:

import ynab_api

Getting Started

Please follow the installation procedure and then run the following:

python ynabdemo.py

Sample usage (ynabdemo.py)

import json
import ynab_api
from pprint import pprint
from ynab_api.api import accounts_api
'''
secrets.json should be manually generated as:

{
   "budget_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
   "api_key":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

To get an api_key:
Sign in to the YNAB web app
and go to the "Account Settings" page
and then to the "Developer Settings" page.
Under the "Personal Access Tokens" section,
click "New Token", enter your password
and click "Generate" to get an access token.

To get your budget_id:
Sign in to the YNAB web app and go the budget of interest.
Copy YOUR_BUDGET_ID from the url:
https://app.youneedabudget.com/YOUR_BUDGET_ID/budget

Or, populate the fields directly in your code.
'''

with open('secrets.json') as f:
    secrets = json.load(f)
budget_id = secrets['budget_id']
api_key = secrets['api_key']

configuration = ynab_api.Configuration(
    host="https://api.youneedabudget.com/v1")
configuration.api_key['bearer'] = api_key
configuration.api_key_prefix['bearer'] = 'Bearer'

with ynab_api.ApiClient(configuration) as api_client:
    api_instance = accounts_api.AccountsApi(api_client)

    try:
        api_response = api_instance.get_accounts(budget_id)
        pprint(api_response)
    except ynab_api.ApiException as e:
        print("Exception: %s\n" % e)

Documentation for API Endpoints

All URIs are relative to https://api.youneedabudget.com/v1

Class Method HTTP request Description
AccountsApi create_account POST /budgets/{budget_id}/accounts Create a new account
AccountsApi get_account_by_id GET /budgets/{budget_id}/accounts/{account_id} Single account
AccountsApi get_accounts GET /budgets/{budget_id}/accounts Account list
BudgetsApi get_budget_by_id GET /budgets/{budget_id} Single budget
BudgetsApi get_budget_settings_by_id GET /budgets/{budget_id}/settings Budget Settings
BudgetsApi get_budgets GET /budgets List budgets
CategoriesApi get_categories GET /budgets/{budget_id}/categories List categories
CategoriesApi get_category_by_id GET /budgets/{budget_id}/categories/{category_id} Single category
CategoriesApi get_month_category_by_id GET /budgets/{budget_id}/months/{month}/categories/{category_id} Single category for a specific budget month
CategoriesApi update_month_category PATCH /budgets/{budget_id}/months/{month}/categories/{category_id} Update a category for a specific month
DeprecatedApi bulk_create_transactions POST /budgets/{budget_id}/transactions/bulk Bulk create transactions
MonthsApi get_budget_month GET /budgets/{budget_id}/months/{month} Single budget month
MonthsApi get_budget_months GET /budgets/{budget_id}/months List budget months
PayeeLocationsApi get_payee_location_by_id GET /budgets/{budget_id}/payee_locations/{payee_location_id} Single payee location
PayeeLocationsApi get_payee_locations GET /budgets/{budget_id}/payee_locations List payee locations
PayeeLocationsApi get_payee_locations_by_payee GET /budgets/{budget_id}/payees/{payee_id}/payee_locations List locations for a payee
PayeesApi get_payee_by_id GET /budgets/{budget_id}/payees/{payee_id} Single payee
PayeesApi get_payees GET /budgets/{budget_id}/payees List payees
ScheduledTransactionsApi get_scheduled_transaction_by_id GET /budgets/{budget_id}/scheduled_transactions/{scheduled_transaction_id} Single scheduled transaction
ScheduledTransactionsApi get_scheduled_transactions GET /budgets/{budget_id}/scheduled_transactions List scheduled transactions
TransactionsApi create_transaction POST /budgets/{budget_id}/transactions Create a single transaction or multiple transactions
TransactionsApi get_transaction_by_id GET /budgets/{budget_id}/transactions/{transaction_id} Single transaction
TransactionsApi get_transactions GET /budgets/{budget_id}/transactions List transactions
TransactionsApi get_transactions_by_account GET /budgets/{budget_id}/accounts/{account_id}/transactions List account transactions
TransactionsApi get_transactions_by_category GET /budgets/{budget_id}/categories/{category_id}/transactions List category transactions
TransactionsApi get_transactions_by_payee GET /budgets/{budget_id}/payees/{payee_id}/transactions List payee transactions
TransactionsApi import_transactions POST /budgets/{budget_id}/transactions/import Import transactions
TransactionsApi update_transaction PUT /budgets/{budget_id}/transactions/{transaction_id} Updates an existing transaction
TransactionsApi update_transactions PATCH /budgets/{budget_id}/transactions Update multiple transactions
UserApi get_user GET /user User info

Documentation For Models

Documentation For Authorization

bearer

  • Type: API key
  • API key parameter name: Authorization
  • Location: HTTP header

Author

David Lerner

Notes for Large OpenAPI documents

If the OpenAPI document is large, imports in ynab_api.apis and ynab_api.models may fail with a RecursionError indicating the maximum recursion limit has been exceeded. In that case, there are a couple of solutions:

Solution 1: Use specific imports for apis and models like:

  • from ynab_api.api.default_api import DefaultApi
  • from ynab_api.model.pet import Pet

Solution 2: Before importing the package, adjust the maximum recursion limit as shown below:

import sys
sys.setrecursionlimit(1500)
import ynab_api
from ynab_api.apis import *
from ynab_api.models import *

About

Generated Python API for YNAB


Languages

Language:Python 99.9%Language:Shell 0.1%