e223adfec5
After reading these docs https://api.youneedabudget.com/v1#/Transactions/createTransaction I successfully made a request to post a transaction to my YNAB account. Hastily created a client.go that doesn't contain much at the moment.
80 lines
2.4 KiB
Text
80 lines
2.4 KiB
Text
################################################################################
|
|
# YNAB
|
|
################################################################################
|
|
:ynab = https://api.youneedabudget.com/v1
|
|
:ynab-access-token := (getenv "ynab_personal_access_token")
|
|
:ynab-budget-id := (getenv "ynab_budget_id")
|
|
:ynab-account-id := (getenv "ynab_account_id")
|
|
|
|
# Test
|
|
GET :ynab/budgets
|
|
Authorization: Bearer :ynab-access-token
|
|
|
|
# List transactions
|
|
GET :ynab/budgets/:ynab-budget-id/transactions
|
|
Authorization: Bearer :ynab-access-token
|
|
|
|
# Post transactions
|
|
POST :ynab/budgets/:ynab-budget-id/transactions
|
|
Authorization: Bearer :ynab-access-token
|
|
Content-Type: application/json
|
|
{
|
|
"transactions": [
|
|
{
|
|
"account_id": ":ynab-account-id",
|
|
"date": "2019-12-30",
|
|
"amount": 10000,
|
|
"payee_name": "Richard Stallman",
|
|
"memo": "Not so free software after all...",
|
|
"cleared": "cleared",
|
|
"approved": true,
|
|
"flag_color": "red",
|
|
"import_id": "xyz-123"
|
|
}
|
|
]
|
|
}
|
|
|
|
################################################################################
|
|
# Monzo
|
|
################################################################################
|
|
:monzo = https://api.monzo.com
|
|
:monzo-access-token := (getenv "monzo_cached_access_token")
|
|
:monzo-refresh-token := (getenv "monzo_cached_refresh_token")
|
|
:monzo-client-id := (getenv "monzo_client_id")
|
|
:monzo-client-secret := (getenv "monzo_client_secret")
|
|
:monzo-account-id := (getenv "monzo_account_id")
|
|
|
|
# List transactions
|
|
GET :monzo/transactions
|
|
Authorization: Bearer :monzo-access-token
|
|
account_id==:monzo-account-id
|
|
|
|
# Refresh access token
|
|
# According from the docs, the access token expires in 6 hours.
|
|
POST :monzo/oauth2/token
|
|
Content-Type: application/x-www-form-urlencoded
|
|
Authorization: Bearer :monzo-access-token
|
|
grant_type=refresh_token&client_id=:monzo-client-id&client_secret=:monzo-client-secret&refresh_token=:monzo-refresh-token
|
|
|
|
################################################################################
|
|
# Tokens server
|
|
################################################################################
|
|
:tokens = http://localhost:4242
|
|
|
|
# Get tokens
|
|
GET :tokens/tokens
|
|
|
|
# Get application state for debugging purposes
|
|
GET :tokens/state
|
|
|
|
# Force refresh tokens
|
|
POST :tokens/refresh-tokens
|
|
|
|
# Set tokens
|
|
POST :tokens/set-tokens
|
|
Content-Type: application/json
|
|
{
|
|
"access_token": "access-token",
|
|
"refresh_token": "refresh-token",
|
|
"expires_in": 120
|
|
}
|