################################################################################
# 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
}
