Skip to content

Instantly share code, notes, and snippets.

@jafin
Created January 27, 2022 14:13
Show Gist options
  • Save jafin/5b06f1a09e8a8c983bf25d61c47c1f4e to your computer and use it in GitHub Desktop.
Save jafin/5b06f1a09e8a8c983bf25d61c47c1f4e to your computer and use it in GitHub Desktop.
Firefly-iii API 1.5.5
openapi: 3.0.0
servers:
- description: Firefly III demo site
url: https://demo.firefly-iii.org
info:
title: Firefly III API v1.5.5
description: |
This is the documentation of the Firefly III API. You can find accompanying documentation on the website of Firefly III itself (see below). Please report any bugs or issues. You may use the "Authorize" button to try the API below. This file was last generated on 2022-01-26T17:41:44+11:00
version: "1.5.5"
contact:
name: James Cole
email: [email protected]
url: https://firefly-iii.org
license:
name: AGPLv3
url: 'https://www.gnu.org/licenses/agpl-3.0.en.html'
tags:
- name: about
description: These endpoints deliver general system information, version- and meta
information.
- name: configuration
description: These endpoints allow you to manage and update the Firefly III configuration.
You need to have the "owner" role to update configuration.
- name: users
description: Use these endpoints to manage the users registered within Firefly III.
You need to have the "owner" role to access these endpoints.
- name: autocomplete
description: Auto-complete endpoints show basic information about Firefly III models,
like the name and maybe some amounts. They all support a search query and can
be used to autocomplete data in forms. Autocomplete return values always have
a "name"-field.
- name: charts
description: The "charts" endpoints deliver optimised data for charts and graphs.
- name: data
description: The "data"-endpoints manage generic Firefly III and user-specific data.
- name: insight
description: The "insight" endpoints try to deliver sums, balances and insightful
information in the broadest sense of the word.
- name: summary
description: These endpoints deliver summaries, like sums, lists of numbers and
other processed information. Mainly used for the main dashboard and pretty specific
for Firefly III itself.
- name: search
description: Endpoints that allow you to search through the user's financial data.
Different from the autocomplete endpoints, the search accepts more advanced arguments.
- name: preferences
description: These endpoints can be used to manage the user's preferences, including
some hidden ones.
- name: webhooks
description: These endpoints can be used to manage the user's webhooks and triggers
them if necessary.
- name: accounts
description: Endpoints that deliver all of the user's asset, expense and other accounts
(and the metadata) together with related transactions, piggy banks and other objects.
Also delivers endpoints for CRUD operations for accounts.
- name: attachments
description: Endpoints to manage the attachments of the authenticated user, including
up- and downloading of the files.
- name: available_budgets
description: Endpoints to manage the total available amount that the user has made
available to themselves. Used in periodic budgeting.
- name: bills
description: Endpoints to manage a user's bills and all related objects.
- name: budgets
description: Endpoints to manage a user's budgets and get info on the related objects,
like limits.
- name: categories
description: Endpoints to manage a user's categories and get information on transactions
and other related objects.
- name: object_groups
description: Endpoints to control and manage all of the user's object groups. Can
only be created in conjunction with another object (for example a piggy bank)
and will auto-delete when no other items are linked to it.
- name: piggy_banks
description: Endpoints to control and manage all of the user's piggy banks and related
objects and information.
- name: recurrences
description: Use these endpoints to manage the user's recurring transactions, trigger
the creation of transactions and manage the settings.
- name: rules
description: These endpoints can be used to manage all of the user's rules. Also
includes triggers to execute or test rules and individual triggers.
- name: rule_groups
description: Manage all of the user's groups of rules and trigger the execution
of entire groups.
- name: tags
description: This endpoint manages all of the user's tags.
- name: transactions
description: The most-used endpoints in Firefly III, these endpoints are used to
manage the user's transactions.
- name: currencies
description: Endpoints to manage the currencies in Firefly III. Depending on the
user's role you can also disable and enable them, or add new ones.
- name: links
description: Endpoints to manage links between transactions, and manage the type
of links available.
paths:
/api/v1/autocomplete/accounts:
get:
tags:
- autocomplete
operationId: getAccountsAC
parameters:
- in: query
name: query
description: The autocomplete search query for accounts.
required: false
schema:
type: string
format: string
example: "query-string"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
- in: query
name: date
required: false
schema:
type: string
format: string
example: "2020-09-17"
description: If the account is an asset account or a liability, the autocomplete will also return the balance of the account on this date.
- in: query
name: type
description: Optional filter on the account type(s) used in the autocomplete.
required: false
schema:
$ref: '#/components/schemas/AccountTypeFilter'
summary: Returns all accounts of the user returned in a basic auto-complete array.
responses:
200:
description: A list of accounts with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteAccountArray'
/api/v1/autocomplete/bills:
get:
tags:
- autocomplete
operationId: getBillsAC
parameters:
- in: query
name: query
description: The autocomplete search query for bills.
required: false
schema:
type: string
format: string
example: "query-string"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all bills of the user returned in a basic auto-complete array.
responses:
200:
description: A list of bills with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteBillArray'
/api/v1/autocomplete/budgets:
get:
tags:
- autocomplete
operationId: getBudgetsAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all budgets of the user returned in a basic auto-complete array.
responses:
200:
description: A list of budgets with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteBudgetArray'
/api/v1/autocomplete/categories:
get:
tags:
- autocomplete
operationId: getCategoriesAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all categories of the user returned in a basic auto-complete array.
responses:
200:
description: A list of categories with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteCategoryArray'
/api/v1/autocomplete/currencies:
get:
tags:
- autocomplete
operationId: getCurrenciesAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all currencies of the user returned in a basic auto-complete array.
responses:
200:
description: A list of currencies with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteCurrencyArray'
/api/v1/autocomplete/currencies-with-code:
get:
tags:
- autocomplete
operationId: getCurrenciesCodeAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all currencies of the user returned in a basic auto-complete array. This endpoint is DEPRECATED and I suggest you DO NOT use it.
responses:
200:
description: A list of currencies with very basic information and the currency code between brackets. This endpoint is DEPRECATED and I suggest you DO NOT use it.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteCurrencyCodeArray'
/api/v1/autocomplete/object-groups:
get:
tags:
- autocomplete
operationId: getObjectGroupsAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all object groups of the user returned in a basic auto-complete array.
responses:
200:
description: A list of object groups with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteObjectGroupArray'
/api/v1/autocomplete/piggy-banks:
get:
tags:
- autocomplete
operationId: getPiggiesAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all piggy banks of the user returned in a basic auto-complete array.
responses:
200:
description: A list of piggy banks with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompletePiggyArray'
/api/v1/autocomplete/piggy-banks-with-balance:
get:
tags:
- autocomplete
operationId: getPiggiesBalanceAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all piggy banks of the user returned in a basic auto-complete array complemented with balance information.
responses:
200:
description: A list of piggy banks with very basic balance information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompletePiggyBalanceArray'
/api/v1/autocomplete/recurring:
get:
tags:
- autocomplete
operationId: getRecurringAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all recurring transactions of the user returned in a basic auto-complete array.
responses:
200:
description: A list of recurring transactions with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteRecurrenceArray'
/api/v1/autocomplete/rule-groups:
get:
tags:
- autocomplete
operationId: getRuleGroupsAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all rule groups of the user returned in a basic auto-complete array.
responses:
200:
description: A list of rule groups with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteRuleGroupArray'
/api/v1/autocomplete/rules:
get:
tags:
- autocomplete
operationId: getRulesAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all rules of the user returned in a basic auto-complete array.
responses:
200:
description: A list of rules with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteRuleArray'
/api/v1/autocomplete/tags:
get:
tags:
- autocomplete
operationId: getTagAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all tags of the user returned in a basic auto-complete array.
responses:
200:
description: A list of tags with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteTagArray'
/api/v1/autocomplete/transaction-types:
get:
tags:
- autocomplete
operationId: getTransactionTypesAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all transaction types returned in a basic auto-complete array. English only.
responses:
200:
description: A list of transaction types with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteTransactionTypeArray'
/api/v1/autocomplete/transactions:
get:
tags:
- autocomplete
operationId: getTransactionsAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all transaction descriptions of the user returned in a basic auto-complete array.
responses:
200:
description: A list of transaction descriptions with very basic information.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteTransactionArray'
/api/v1/autocomplete/transactions-with-id:
get:
tags:
- autocomplete
operationId: getTransactionsIDAC
parameters:
- in: query
name: query
description: The autocomplete search query.
required: false
schema:
type: string
format: string
example: "str"
- in: query
name: limit
description: The number of items returned.
required: false
schema:
type: integer
format: int32
example: 10
summary: Returns all transactions, complemented with their ID, of the user returned in a basic auto-complete array. This endpoint is DEPRECATED and I suggest you DO NOT use it.
responses:
200:
description: A list of transactions with very basic information. This endpoint is DEPRECATED and I suggest you DO NOT use it.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteTransactionIDArray'
/api/v1/chart/account/overview:
get:
tags:
- charts
summary: Dashboard chart with asset account balance information.
description: |
This endpoint returns the data required to generate a chart with basic asset account balance information.
operationId: getChartAccountOverview
parameters:
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
responses:
200:
description: Line chart oriented chart information. Check out the model for more details. Each entry is a line (or bar) in the chart.
content:
application/json:
schema:
$ref: '#/components/schemas/ChartLine'
/api/v1/data/bulk/transactions:
post:
summary: Bulk update transaction properties. For more information, see https://docs.firefly-iii.org/firefly-iii/api/specials
description: |
Allows you to update transactions in bulk.
operationId: bulkUpdateTransactions
tags:
- data
parameters:
- in: query
name: query
description: The JSON query.
required: true
schema:
type: string
format: json
responses:
204:
description: Empty response when the update was successful. A future improvement is to include the changed transactions.
'500':
description: Internal error.
/api/v1/data/destroy:
delete:
tags:
- data
operationId: destroyData
summary: Endpoint to destroy user data
description: |
A call to this endpoint permanently destroys the requested data type. Use it with care and always with user permission.
The demo user is incapable of using this endpoint.
responses:
204:
description: Empty response when data has been destroyed.
'500':
description: Internal error, or user is unauthorized to destroy data.
parameters:
- in: query
name: objects
description: The type of data that you wish to destroy. You can only use one at a time.
required: true
schema:
$ref: '#/components/schemas/DataDestroyObject'
/api/v1/data/export/accounts:
get:
summary: Export account data from Firefly III
description: |
This endpoint allows you to export your accounts from Firefly III into a file. Currently supports CSV exports only.
operationId: exportAccounts
tags:
- data
parameters:
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
$ref: '#/components/schemas/ExportFileFilter'
responses:
200:
description: 'The exported transaction in a file.'
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/data/export/bills:
get:
summary: Export bills from Firefly III
description: |
This endpoint allows you to export your bills from Firefly III into a file. Currently supports CSV exports only.
operationId: exportBills
tags:
- data
parameters:
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
$ref: '#/components/schemas/ExportFileFilter'
responses:
200:
description: 'The exported transaction in a file.'
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/data/export/budgets:
get:
summary: Export budgets and budget amount data from Firefly III
description: |
This endpoint allows you to export your budgets and associated budget data from Firefly III into a file. Currently supports CSV exports only.
operationId: exportBudgets
tags:
- data
parameters:
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
$ref: '#/components/schemas/ExportFileFilter'
responses:
200:
description: 'The exported transaction in a file.'
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/data/export/categories:
get:
summary: Export category data from Firefly III
description: |
This endpoint allows you to export your categories from Firefly III into a file. Currently supports CSV exports only.
operationId: exportCategories
tags:
- data
parameters:
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
$ref: '#/components/schemas/ExportFileFilter'
responses:
200:
description: 'The exported transaction in a file.'
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/data/export/piggy-banks:
get:
summary: Export piggy banks from Firefly III
description: |
This endpoint allows you to export your piggy banks from Firefly III into a file. Currently supports CSV exports only.
operationId: exportPiggies
tags:
- data
parameters:
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
$ref: '#/components/schemas/ExportFileFilter'
responses:
200:
description: 'The exported transaction in a file.'
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/data/export/recurring:
get:
summary: Export recurring transaction data from Firefly III
description: |
This endpoint allows you to export your recurring transactions from Firefly III into a file. Currently supports CSV exports only.
operationId: exportRecurring
tags:
- data
parameters:
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
$ref: '#/components/schemas/ExportFileFilter'
responses:
200:
description: 'The exported transaction in a file.'
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/data/export/rules:
get:
summary: Export rule groups and rule data from Firefly III
description: |
This endpoint allows you to export your rules and rule groups from Firefly III into a file. Currently supports CSV exports only.
operationId: exportRules
tags:
- data
parameters:
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
$ref: '#/components/schemas/ExportFileFilter'
responses:
200:
description: 'The exported transaction in a file.'
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/data/export/tags:
get:
summary: Export tag data from Firefly III
description: |
This endpoint allows you to export your tags from Firefly III into a file. Currently supports CSV exports only.
operationId: exportTags
tags:
- data
parameters:
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
$ref: '#/components/schemas/ExportFileFilter'
responses:
200:
description: 'The exported transaction in a file.'
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/data/export/transactions:
get:
summary: Export transaction data from Firefly III
description: |
This endpoint allows you to export transactions from Firefly III into a file. Currently supports CSV exports only.
operationId: exportTransactions
tags:
- data
parameters:
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts
explode: false
description: |
Limit the export of transactions to these accounts only. Only asset accounts will be accepted. Other types will be silently dropped.
required: false
example: "1,2,3"
schema:
type: string
format: string
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
$ref: '#/components/schemas/ExportFileFilter'
responses:
200:
description: 'The exported transaction in a file.'
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/insight/expense/expense:
get:
summary: Insight into expenses, grouped by expense account.
description: |
This endpoint gives a summary of the expenses made by the user, grouped by expense account.
operationId: insightExpenseExpense
tags:
- insight
parameters:
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: true
example: "2021-01-01"
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you add the accounts ID's of expense accounts, only those accounts
are included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. You can combine both asset / liability and expense account ID's.
Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of expense accounts and expense details. Each expense acccount has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/expense/asset:
get:
summary: Insight into expenses, grouped by asset account.
description: |
This endpoint gives a summary of the expenses made by the user, grouped by asset account.
operationId: insightExpenseAsset
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of asset accounts and expense details. Each asset account has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/income/revenue:
get:
summary: Insight into income, grouped by revenue account.
description: |
This endpoint gives a summary of the income received by the user, grouped by revenue account.
operationId: insightIncomeRevenue
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you add the accounts ID's of revenue accounts, only those accounts
are included in the results. If you include ID's of asset accounts or liabilities, only deposits to those
asset accounts / liabilities will be included. You can combine both asset / liability and deposit account ID's.
Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of revenue accounts and income details. Each revenue acccount has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/income/asset:
get:
summary: Insight into income, grouped by asset account.
description: |
This endpoint gives a summary of the income received by the user, grouped by asset account.
operationId: insightIncomeAsset
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only deposits to those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of asset accounts and income details. Each asset account has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/transfer/asset:
get:
summary: Insight into transfers, grouped by account.
description: |
This endpoint gives a summary of the transfers made by the user, grouped by asset account or lability.
operationId: insightTransfers
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only transfers between those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of asset accounts and transfer details. Each asset account has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTransfer'
/api/v1/insight/expense/bill:
get:
summary: Insight into expenses, grouped by bill.
description: |
This endpoint gives a summary of the expenses made by the user, grouped by (any) bill.
operationId: insightExpenseBill
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: bills[]
description: |
The bills to be included in the results.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of budget and expense details. Each budget has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/expense/no-bill:
get:
summary: Insight into expenses, without bill.
description: |
This endpoint gives a summary of the expenses made by the user, including only expenses with no bill.
operationId: insightExpenseNoBill
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of expense details. One row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/expense/budget:
get:
summary: Insight into expenses, grouped by budget.
description: |
This endpoint gives a summary of the expenses made by the user, grouped by (any) budget.
operationId: insightExpenseBudget
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: budgets[]
description: |
The budgets to be included in the results.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of budget and expense details. Each budget has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/expense/no-budget:
get:
summary: Insight into expenses, without budget.
description: |
This endpoint gives a summary of the expenses made by the user, including only expenses with no budget.
operationId: insightExpenseNoBudget
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of expense details. One row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/expense/category:
get:
summary: Insight into expenses, grouped by category.
description: |
This endpoint gives a summary of the expenses made by the user, grouped by (any) category.
operationId: insightExpenseCategory
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: categories[]
description: |
The categories to be included in the results.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of category and expense details. Each category has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/expense/no-category:
get:
summary: Insight into expenses, without category.
description: |
This endpoint gives a summary of the expenses made by the user, including only expenses with no category.
operationId: insightExpenseNoCategory
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of expense details. One row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/income/category:
get:
summary: Insight into income, grouped by category.
description: |
This endpoint gives a summary of the income received by the user, grouped by (any) category.
operationId: insightIncomeCategory
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: categories[]
description: |
The categories to be included in the results.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only deposits to those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of category and income details. Each category has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/income/no-category:
get:
summary: Insight into income, without category.
description: |
This endpoint gives a summary of the income received by the user, including only income with no category.
operationId: insightIncomeNoCategory
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only deposits to those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of income details. One row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/transfer/category:
get:
summary: Insight into transfers, grouped by category.
description: |
This endpoint gives a summary of the transfers made by the user, grouped by (any) category.
operationId: insightTransferCategory
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: categories[]
description: |
The categories to be included in the results.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only transfers between those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of category and transfer details. Each category has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/transfer/no-category:
get:
summary: Insight into transfers, without category.
description: |
This endpoint gives a summary of the transfers made by the user, including only transfers with no category.
operationId: insightTransferNoCategory
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only transfers between those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of transfer details. One row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/expense/tag:
get:
summary: Insight into expenses, grouped by tag.
description: |
This endpoint gives a summary of the expenses made by the user, grouped by (any) tag.
operationId: insightExpenseTag
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: tags[]
description: |
The tags to be included in the results.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of tag and expense details. Each tag has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/expense/no-tag:
get:
summary: Insight into expenses, without tag.
description: |
This endpoint gives a summary of the expenses made by the user, including only expenses with no tag.
operationId: insightExpenseNoTag
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of expense details. One row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/income/tag:
get:
summary: Insight into income, grouped by tag.
description: |
This endpoint gives a summary of the income received by the user, grouped by (any) tag.
operationId: insightIncomeTag
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: tags[]
description: |
The tags to be included in the results.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only deposits to those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of tag and income details. Each tag has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/income/no-tag:
get:
summary: Insight into income, without tag.
description: |
This endpoint gives a summary of the income received by the user, including only income with no tag.
operationId: insightIncomeNoTag
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only deposits to those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of income details. One row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/transfer/tag:
get:
summary: Insight into transfers, grouped by tag.
description: |
This endpoint gives a summary of the transfers created by the user, grouped by (any) tag.
operationId: insightTransferTag
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: tags[]
description: |
The tags to be included in the results.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only transfers between those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of tag and transfer details. Each tag has one row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightGroup'
/api/v1/insight/transfer/no-tag:
get:
summary: Insight into expenses, without tag.
description: |
This endpoint gives a summary of the transfers made by the user, including only transfers with no tag.
operationId: insightTransferNoTag
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only transfers from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of transfer details. One row per currency.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/expense/total:
get:
summary: Insight into total expenses.
description: |
This endpoint gives a sum of the total expenses made by the user.
operationId: insightExpenseTotal
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only withdrawals from those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of sums in different currencies.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/income/total:
get:
summary: Insight into total income.
description: |
This endpoint gives a sum of the total income received by the user.
operationId: insightIncomeTotal
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only deposits to those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of sums in different currencies.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/insight/transfer/total:
get:
summary: Insight into total transfers.
description: |
This endpoint gives a sum of the total amount transfers made by the user.
operationId: insightTransferTotal
tags:
- insight
parameters:
- in: query
name: start
example: "2021-01-01"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
example: "2021-01-31"
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: accounts[]
description: |
The accounts to be included in the results. If you include ID's of asset accounts or liabilities, only transfers between those
asset accounts / liabilities will be included. Other account ID's will be ignored.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: 'A list of sums in different currencies.'
content:
application/json:
schema:
$ref: '#/components/schemas/InsightTotal'
/api/v1/summary/basic:
get:
tags:
- summary
operationId: getBasicSummary
summary: Returns basic sums of the users data.
parameters:
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: end
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
- in: query
name: currency_code
description: |
A currency code like EUR or USD, to filter the result.
required: false
schema:
type: string
format: string
description: |
Returns basic sums of the users data, like the net worth, spent and earned amounts. It is multi-currency, and is used in Firefly III to populate the dashboard.
responses:
'200':
description: An array of sums. It depends on the user what you can expect to get back, so please try this out on the demo site.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BasicSummary'
/api/v1/accounts/{id}/transactions:
get:
tags:
- accounts
summary: List all transactions related to the account.
description: |
This endpoint returns a list of all the transactions connected to the account.
operationId: listTransactionByAccount
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the account.
- in: query
name: page
description: Page number. The default pagination is per 50 items.
required: false
schema:
type: integer
example: 1
- in: query
name: limit
description: Limits the number of results on one page.
required: false
schema:
type: integer
example: 5
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: type
description: Optional filter on the transaction type(s) returned.
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/accounts/{id}/attachments:
get:
summary: Lists all attachments.
description: Lists all attachments.
operationId: listAttachmentByAccount
tags:
- accounts
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the account.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of attachments
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentArray'
404:
description: No such account.
/api/v1/accounts/{id}/piggy_banks:
get:
tags:
- accounts
summary: List all piggy banks related to the account.
description: |
This endpoint returns a list of all the piggy banks connected to the account.
operationId: listPiggyBankByAccount
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the account.
- in: query
name: page
description: Page number. The default pagination is per 50 items.
required: false
schema:
type: integer
responses:
200:
description: A list of piggy banks
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PiggyBankArray'
/api/v1/accounts:
get:
tags:
- accounts
summary: List all accounts.
description: |
This endpoint returns a list of all the accounts owned by the authenticated user.
operationId: listAccount
parameters:
- in: query
name: page
description: Page number. The default pagination is per 50 items.
required: false
schema:
type: integer
format: int32
example: 1
- in: query
name: date
description: |
A date formatted YYYY-MM-DD. When added to the request, Firefly III will show the account's balance on that day.
required: false
schema:
type: string
format: date
- in: query
name: type
description: Optional filter on the account type(s) returned
required: false
schema:
$ref: '#/components/schemas/AccountTypeFilter'
responses:
200:
description: A list of accounts
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AccountArray'
post:
tags:
- accounts
summary: Create new account.
operationId: storeAccount
description: Creates a new account. The data required can be submitted as a JSON body or as a list of parameters (in key=value pairs, like a webform).
responses:
200:
description: 'New account stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AccountSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AccountStore'
description: JSON array with the necessary account information or key=value pairs. See the model for the exact specifications.
required: true
/api/v1/accounts/{id}:
get:
tags:
- accounts
summary: Get single account.
description: |
Returns a single account by its ID.
operationId: getAccount
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the account.
- in: query
name: date
description: |
A date formatted YYYY-MM-DD. When added to the request, Firefly III will show the account's balance on that day.
required: false
schema:
type: string
format: date
responses:
200:
description: 'The requested account'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AccountSingle'
404:
description: Account not found
put:
summary: Update existing account.
description: |
Used to update a single account. All fields that are not submitted will be cleared (set to NULL). The model will tell you which fields are mandatory.
operationId: updateAccount
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the account.
tags:
- accounts
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AccountUpdate'
description: JSON array or formdata with updated account information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated account stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AccountSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
summary: Permanently delete account.
description: |
Will permanently delete an account. Any associated transactions and piggy banks are ALSO deleted. Cannot be recovered from.
operationId: deleteAccount
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the account.
tags:
- accounts
responses:
204:
description: Account deleted
404:
description: No such account
/api/v1/attachments:
get:
summary: List all attachments.
description: |
This endpoint lists all attachments.
operationId: listAttachment
tags:
- attachments
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of attachments.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentArray'
post:
summary: Store a new attachment.
description: |
Creates a new attachment. The data required can be submitted as a JSON body or as a list of parameters. You cannot use this endpoint to upload the actual file data (see below). This endpoint only creates the attachment object.
operationId: storeAttachment
tags:
- attachments
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AttachmentStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AttachmentStore'
description: "JSON array or key=value pairs with the necessary attachment information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New attachment stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/attachments/{id}:
get:
summary: Get a single attachment.
description: |
Get a single attachment. This endpoint only returns the available metadata for the attachment. Actual file data is handled in two other endpoints (see below).
operationId: getAttachment
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the attachment.
tags:
- attachments
responses:
200:
description: 'The requested attachment'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentSingle'
404:
description: Attachment not found
put:
operationId: updateAttachment
tags:
- attachments
summary: Update existing attachment.
description: |
Update the meta data for an existing attachment. This endpoint does not allow you to upload or download data. For that, see below.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the attachment.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AttachmentUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AttachmentUpdate'
description: JSON array with updated attachment information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated attachment stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteAttachment
summary: Delete an attachment.
description: |
With this endpoint you delete an attachment, including any stored file data.
tags:
- attachments
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the single.
responses:
204:
description: Attachment deleted.
404:
description: No such attachment
/api/v1/attachments/{id}/download:
get:
summary: Download a single attachment.
description: |
This endpoint allows you to download the binary content of a transaction. It will be sent to you as a download, using the content type "application/octet-stream" and content disposition "attachment; filename=example.pdf".
operationId: downloadAttachment
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the attachment.
tags:
- attachments
responses:
200:
description: 'The requested attachment'
content:
application/octet-stream:
schema:
type: string
format: binary
404:
description: File not found
/api/v1/attachments/{id}/upload:
post:
summary: Upload an attachment.
description: |
Use this endpoint to upload (and possible overwrite) the file contents of an attachment. Simply put the entire file in the body as binary data.
operationId: uploadAttachment
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the attachment.
tags:
- attachments
responses:
204:
description: 'Upload was a success'
404:
description: File not found
422:
description: Upload invalid or empty file.
requestBody:
content:
application/octet-stream:
schema:
type: string
format: binary
/api/v1/available_budgets:
get:
summary: List all available budget amounts.
description: |
Firefly III allows users to set the amount that is available to be budgeted in so-called "available budgets". For example, the user could have 1200,- available to be divided during the coming month. This amount is used on the /budgets page. This endpoint returns all of these amounts and the periods for which they are set.
operationId: listAvailableBudget
tags:
- available_budgets
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-12-31"
responses:
200:
description: A list of available budget amounts.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AvailableBudgetArray'
post:
summary: Store a new available budget
description: |
Creates a new available budget for a specified period. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeAvailableBudget
tags:
- available_budgets
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AvailableBudgetStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AvailableBudgetStore'
description: "JSON array or key=value pairs with the necessary available budget information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New available budget stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AvailableBudgetSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/available_budgets/{id}:
get:
summary: Get a single available budget.
description: Get a single available budget, by ID.
operationId: getAvailableBudget
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the available budget.
tags:
- available_budgets
responses:
200:
description: 'The requested available budget'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AvailableBudgetSingle'
404:
description: AvailableBudget not found
put:
operationId: updateAvailableBudget
tags:
- available_budgets
description: Update existing available budget.
summary: Update existing available budget, to change for example the date range of the amount or the amount itself.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the object.X
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AvailableBudgetUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AvailableBudgetUpdate'
description: JSON array or form value with updated available budget information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated available budget stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AvailableBudgetSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteAvailableBudget
description: Delete an available budget. Not much more to say.
summary: Delete an available budget.
tags:
- available_budgets
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the available budget.
responses:
204:
description: Available budget deleted.
404:
description: No such available budget.
/api/v1/bills/{id}/attachments:
get:
summary: List all attachments uploaded to the bill.
description: This endpoint will list all attachments linked to the bill.
operationId: listAttachmentByBill
tags:
- bills
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the bill.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of attachments
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentArray'
/api/v1/bills/{id}/rules:
get:
summary: List all rules associated with the bill.
description: This endpoint will list all rules that have an action to set the bill to this bill.
operationId: listRuleByBill
tags:
- bills
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the bill.
responses:
200:
description: A list of rules
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleArray'
/api/v1/bills/{id}/transactions:
get:
summary: List all transactions associated with the bill.
description: This endpoint will list all transactions linked to this bill.
operationId: listTransactionByBill
tags:
- bills
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the bill.
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-12-31"
- in: query
name: type
description: Optional filter on the transaction type(s) returned
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/bills:
get:
summary: List all bills.
description: This endpoint will list all the user's bills.
operationId: listBill
tags:
- bills
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD. If it is are added to the request, Firefly III will calculate the appropriate payment and paid dates.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD. If it is added to the request, Firefly III will calculate the appropriate payment and paid dates.
required: false
schema:
type: string
format: date
example: "2018-12-31"
responses:
200:
description: A list of bills
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BillArray'
post:
summary: Store a new bill
description: Creates a new bill. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeBill
tags:
- bills
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BillStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BillStore'
description: "JSON array or key=value pairs with the necessary bill information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New bill stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BillSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/bills/{id}:
get:
summary: Get a single bill.
description: Get a single bill.
operationId: getBill
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the bill.
- in: query
name: start
description: |
A date formatted YYYY-MM-DD. If it is are added to the request, Firefly III will calculate the appropriate payment and paid dates.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD. If it is added to the request, Firefly III will calculate the appropriate payment and paid dates.
required: false
schema:
type: string
format: date
example: "2018-12-31"
tags:
- bills
responses:
200:
description: 'The requested bill'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BillSingle'
404:
description: Bill not found
put:
operationId: updateBill
tags:
- bills
description: Update existing bill.
summary: Update existing bill.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the bill.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BillUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BillUpdate'
description: JSON array or key=value pairs with updated bill information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated bill stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BillSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteBill
description: Delete a bill. This will not delete any associated rules. Will not remove associated transactions. WILL remove all associated attachments.
summary: Delete a bill.
tags:
- bills
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the bill.
responses:
204:
description: Bill deleted.
404:
description: No such bill
/api/v1/budgets/{id}/limits/{limitId}/transactions:
get:
summary: List all transactions by a budget limit ID.
description: List all the transactions within one budget limit. The start and end date are dictated by the budget limit.
operationId: listTransactionByBudgetLimit
tags:
- budgets
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the budget. The budget limit MUST be associated to the budget ID.
- in: path
name: limitId
required: true
schema:
type: string
example: "123"
description: The ID of the budget limit. The budget limit MUST be associated to the budget ID.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: type
description: Optional filter on the transaction type(s) returned
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/budgets/{id}/limits:
get:
operationId: listBudgetLimitByBudget
description: |
Get all budget limits for this budget and the money spent, and money left. You can limit the list by submitting a date range as well. The "spent" array for each budget limit is NOT influenced by the start and end date of your query, but by the start and end date of the budget limit itself.
summary: Get all limits for a budget.
tags:
- budgets
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the requested budget.
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-12-31"
responses:
200:
description: A list of budget limits applicable to this budget.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetLimitArray'
post:
operationId: storeBudgetLimit
description: Store a new budget limit under this budget.
summary: Store new budget limit.
tags:
- budgets
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the budget.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BudgetLimitStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BudgetLimitStore'
description: "JSON array or key=value pairs with the necessary budget information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New budget limit stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetLimitSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/budgets/{id}/limits/{limitId}:
get:
summary: Get single budget limit.
operationId: getBudgetLimit
tags:
- budgets
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the budget. The budget limit MUST be associated to the budget ID.
- in: path
name: limitId
required: true
schema:
type: integer
minimum: 1
example: 1
description: The ID of the budget limit. The budget limit MUST be associated to the budget ID.
responses:
200:
description: 'The requested budget limit'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetLimitSingle'
404:
description: Budget limit not found.
put:
operationId: updateBudgetLimit
tags:
- budgets
description: Update existing budget limit.
summary: Update existing budget limit.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the budget. The budget limit MUST be associated to the budget ID.
- in: path
name: limitId
required: true
schema:
type: string
example: "123"
description: The ID of the budget limit. The budget limit MUST be associated to the budget ID.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BudgetLimit'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BudgetLimit'
description: JSON array with updated budget limit information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated budget limit stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetLimitSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteBudgetLimit
description: Delete a budget limit.
summary: Delete a budget limit.
tags:
- budgets
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the budget. The budget limit MUST be associated to the budget ID.
- in: path
name: limitId
required: true
schema:
type: string
example: "123"
description: The ID of the budget limit. The budget limit MUST be associated to the budget ID.
responses:
204:
description: Budget limit deleted.
404:
description: No such budget limit
/api/v1/budget-limits:
get:
operationId: listBudgetLimit
summary: Get list of budget limits by date
description: |
Get all budget limits for for this date range.
tags:
- budgets
parameters:
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD.
required: true
schema:
type: string
format: date
example: "2018-12-31"
responses:
200:
description: A list of budget limits.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetLimitArray'
/api/v1/budgets/{id}/transactions:
get:
summary: All transactions to a budget.
description: Get all transactions linked to a budget, possibly limited by start and end
operationId: listTransactionByBudget
tags:
- budgets
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the budget.
- in: query
name: limit
description: Limits the number of results on one page.
required: false
schema:
type: integer
example: 5
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD.
required: false
schema:
type: string
format: date
example: "2018-12-31"
- in: query
name: type
description: Optional filter on the transaction type(s) returned
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/budgets/{id}/attachments:
get:
summary: Lists all attachments of a budget.
description: Lists all attachments.
operationId: listAttachmentByBudget
tags:
- budgets
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the budget.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of attachments
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentArray'
404:
description: No such budget.
/api/v1/budgets:
get:
summary: List all budgets.
description: List all the budgets the user has made. If the start date and end date are submitted as well, the "spent" array will be updated accordingly.
operationId: listBudget
tags:
- budgets
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to get info on how much the user has spent. You must submit both start and end.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to get info on how much the user has spent. You must submit both start and end.
required: false
schema:
type: string
format: date
example: "2018-12-31"
responses:
200:
description: A list of budgets.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetArray'
post:
summary: Store a new budget
description: Creates a new budget. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeBudget
tags:
- budgets
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BudgetStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BudgetStore'
description: "JSON array or key=value pairs with the necessary budget information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New budget stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/budgets/{id}:
get:
summary: Get a single budget.
description: Get a single budget. If the start date and end date are submitted as well, the "spent" array will be updated accordingly.
operationId: getBudget
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the requested budget.
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to get info on how much the user has spent.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to get info on how much the user has spent.
required: false
schema:
type: string
format: date
example: "2018-12-31"
tags:
- budgets
responses:
200:
description: 'The requested budget'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetSingle'
404:
description: Budget not found.
put:
operationId: updateBudget
tags:
- budgets
description: Update existing budget. This endpoint cannot be used to set budget amount limits.
summary: Update existing budget.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the budget.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BudgetUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BudgetUpdate'
description: JSON array with updated budget information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated budget stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteBudget
description: Delete a budget. Transactions will not be deleted.
summary: Delete a budget.
tags:
- budgets
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the budget.
responses:
204:
description: Budget deleted.
404:
description: No such budget
/api/v1/categories/{id}/transactions:
get:
summary: List all transactions in a category.
description: List all transactions in a category, optionally limited to the date ranges specified.
operationId: listTransactionByCategory
tags:
- categories
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the category.
- in: query
name: page
description: Page number. The default pagination is per 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to limit the result list.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to limit the result list.
required: false
schema:
type: string
format: date
example: "2018-12-31"
- in: query
name: type
description: Optional filter on the transaction type(s) returned
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/categories/{id}/attachments:
get:
summary: Lists all attachments.
description: Lists all attachments.
operationId: listAttachmentByCategory
tags:
- categories
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the category.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of attachments
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentArray'
404:
description: No such category.
/api/v1/categories:
get:
summary: List all categories.
description: List all categories.
operationId: listCategory
tags:
- categories
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of categories.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CategoryArray'
post:
summary: Store a new category
description: Creates a new category. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeCategory
tags:
- categories
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Category'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Category'
description: "JSON array or key=value pairs with the necessary category information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New category stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CategorySingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/categories/{id}:
get:
summary: Get a single category.
description: Get a single category.
operationId: getCategory
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the category.
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to show spent and earned info.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to show spent and earned info.
required: false
schema:
type: string
format: date
example: "2018-12-31"
tags:
- categories
responses:
200:
description: 'The requested category'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CategorySingle'
404:
description: Category not found
put:
operationId: updateCategory
tags:
- categories
description: Update existing category.
summary: Update existing category.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the category.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CategoryUpdate'
description: JSON array with updated category information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated category stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CategorySingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteCategory
description: Delete a category. Transactions will not be removed.
summary: Delete a category.
tags:
- categories
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the category.
responses:
204:
description: Category deleted.
404:
description: No such category.
/api/v1/link_types/{id}/transactions:
get:
tags:
- links
summary: List all transactions under this link type.
description: |
List all transactions under this link type, both the inward and outward transactions.
operationId: listTransactionByLinkType
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the link type.
- in: query
name: page
description: Page number. The default pagination is per 50 items.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to limit the results.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to limit the results.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: type
description: Optional filter on the transaction type(s) returned.
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/link_types:
get:
tags:
- links
summary: List all types of links.
description: |
List all the link types the system has. These include the default ones as well as any new ones.
operationId: listLinkType
parameters:
- in: query
name: page
description: Page number. The default pagination is 50 items.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of link types.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/LinkTypeArray'
post:
tags:
- links
summary: Create a new link type
operationId: storeLinkType
description: Creates a new link type. The data required can be submitted as a JSON body or as a list of parameters (in key=value pairs, like a webform).
responses:
200:
description: 'New link type stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/LinkTypeSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LinkType'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/LinkType'
description: JSON array with the necessary link type information or key=value pairs. See the model for the exact specifications.
required: true
/api/v1/link_types/{id}:
get:
tags:
- links
summary: Get single a link type.
description: |
Returns a single link type by its ID.
operationId: getLinkType
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the link type.
responses:
200:
description: 'The requested link type'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/LinkTypeSingle'
404:
description: Link type not found.
put:
summary: Update existing link type.
description: |
Used to update a single link type. All fields that are not submitted will be cleared (set to NULL). The model will tell you which fields are mandatory. You cannot update some of the system provided link types, indicated by the editable=false flag when you list it.
operationId: updateLinkType
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the link type.
tags:
- links
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LinkTypeUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/LinkTypeUpdate'
description: JSON array or formdata with updated link type information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated link type stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/LinkTypeSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
'500':
description: Cannot delete this link type.
delete:
summary: Permanently delete link type.
description: |
Will permanently delete a link type. The links between transactions will be removed. The transactions themselves remain. You cannot delete some of the system provided link types, indicated by the editable=false flag when you list it.
operationId: deleteLinkType
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the link type.
tags:
- links
responses:
204:
description: Link type deleted
404:
description: No such link type
'500':
description: Cannot delete this link type.
/api/v1/transaction_links:
get:
tags:
- links
summary: List all transaction links.
description: |
List all the transaction links.
operationId: listTransactionLink
parameters:
- in: query
name: page
description: Page number. The default pagination is per 50 items.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of transaction links
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionLinkArray'
post:
tags:
- links
summary: Create a new link between transactions
operationId: storeTransactionLink
description: Store a new link between two transactions. For this end point you need the journal_id from a transaction.
responses:
200:
description: 'New transaction link stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionLinkSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionLinkStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TransactionLinkStore'
description: JSON array with the necessary link type information or key=value pairs. See the model for the exact specifications.
required: true
/api/v1/transaction_links/{id}:
get:
tags:
- links
summary: Get a single link.
description: |
Returns a single link by its ID.
operationId: getTransactionLink
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction link.
responses:
200:
description: 'The requested link'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionLinkSingle'
404:
description: No such transaction link.
delete:
summary: Permanently delete link between transactions.
description: |
Will permanently delete link. Transactions remain.
operationId: deleteTransactionLink
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction link.
tags:
- links
responses:
204:
description: Transaction link deleted
404:
description: No such transaction link
put:
summary: Update an existing link between transactions.
description: |
Used to update a single existing link.
operationId: updateTransactionLink
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction link.
tags:
- links
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionLinkUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TransactionLinkUpdate'
description: JSON array or formdata with updated link type information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated link type stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionLinkSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/object_groups/{id}/piggy_banks:
get:
tags:
- object_groups
summary: List all piggy banks related to the object group.
description: |
This endpoint returns a list of all the piggy banks connected to the object group.
operationId: listPiggyBankByObjectGroup
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the account.
- in: query
name: page
description: Page number. The default pagination is per 50 items.
required: false
schema:
type: integer
responses:
200:
description: A list of piggy banks
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PiggyBankArray'
/api/v1/object_groups/{id}/bills:
get:
summary: List all bills with this object group.
description: List all bills with this object group.
operationId: listBillByObjectGroup
tags:
- object_groups
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the account.
- in: query
name: page
description: Page number. The default pagination is per 50 items.
required: false
schema:
type: integer
responses:
200:
description: A list of bills.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BillArray'
/api/v1/object_groups:
get:
summary: List all oject groups.
description: List all oject groups.
operationId: listObjectGroups
tags:
- object_groups
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of object groups
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ObjectGroupArray'
/api/v1/object_groups/{id}:
get:
summary: Get a single object group.
description: Get a single object group.
operationId: getObjectGroup
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the object group.
tags:
- object_groups
responses:
200:
description: The requested object group
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ObjectGroupSingle'
404:
description: Object group not found
put:
operationId: updateObjectGroup
tags:
- object_groups
description: Update existing object group.
summary: Update existing object group.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the object group
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ObjectGroupUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/ObjectGroupUpdate'
description: JSON array with updated piggy bank information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated object group stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ObjectGroupSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteObjectGroup
description: Delete a object group.
summary: Delete a object group.
tags:
- object_groups
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the object group.
responses:
204:
description: Object group deleted.
404:
description: No such object group
/api/v1/piggy_banks/{id}/events:
get:
summary: List all events linked to a piggy bank.
description: List all events linked to a piggy bank (adding and removing money).
operationId: listEventByPiggyBank
tags:
- piggy_banks
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the piggy bank
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of piggy bank related events
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PiggyBankEventArray'
/api/v1/piggy_banks/{id}/attachments:
get:
summary: Lists all attachments.
description: Lists all attachments.
operationId: listAttachmentByPiggyBank
tags:
- piggy_banks
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the piggy bank.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of attachments
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentArray'
404:
description: No such piggy bank.
/api/v1/piggy_banks:
get:
summary: List all piggy banks.
description: List all piggy banks.
operationId: listPiggyBank
tags:
- piggy_banks
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of piggy banks
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PiggyBankArray'
post:
summary: Store a new piggy bank
description: Creates a new piggy bank. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storePiggyBank
tags:
- piggy_banks
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PiggyBankStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PiggyBankStore'
description: "JSON array or key=value pairs with the necessary piggy bank information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New piggy bank stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PiggyBankSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/piggy_banks/{id}:
get:
summary: Get a single piggy bank.
description: Get a single piggy bank.
operationId: getPiggyBank
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the piggy bank.
tags:
- piggy_banks
responses:
200:
description: 'The requested piggy bank'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PiggyBankSingle'
404:
description: Piggy bank not found
put:
operationId: updatePiggyBank
tags:
- piggy_banks
description: Update existing piggy bank.
summary: Update existing piggy bank.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the piggy bank
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PiggyBankUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PiggyBankUpdate'
description: JSON array with updated piggy bank information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated piggy bank stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PiggyBankSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deletePiggyBank
description: Delete a piggy bank.
summary: Delete a piggy bank.
tags:
- piggy_banks
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the piggy bank.
responses:
204:
description: Piggy bank deleted.
404:
description: No such piggy bank
/api/v1/recurrences/{id}/transactions:
get:
summary: List all transactions created by a recurring transaction.
description: List all transactions created by a recurring transaction, optionally limited to the date ranges specified.
operationId: listTransactionByRecurrence
tags:
- recurrences
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the recurring transaction.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD. Both the start and end date must be present.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD. Both the start and end date must be present.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: type
description: Optional filter on the transaction type(s) returned
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/recurrences:
get:
summary: List all recurring transactions.
description: List all recurring transactions.
operationId: listRecurrence
tags:
- recurrences
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of recurring transactions.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RecurrenceArray'
post:
summary: Store a new recurring transaction
description: Creates a new recurring transaction. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeRecurrence
tags:
- recurrences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RecurrenceStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/RecurrenceStore'
description: "JSON array or key=value pairs with the necessary recurring transaction information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New recurring transaction stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RecurrenceSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/recurrences/{id}:
get:
summary: Get a single recurring transaction.
description: Get a single recurring transaction.
operationId: getRecurrence
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the recurring transaction.
tags:
- recurrences
responses:
200:
description: 'The requested recurring transaction'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RecurrenceSingle'
404:
description: Recurring transaction not found
put:
operationId: updateRecurrence
tags:
- recurrences
description: Update existing recurring transaction.
summary: Update existing recurring transaction.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the recurring transaction.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RecurrenceUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/RecurrenceUpdate'
description: JSON array with updated recurring transaction information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated recurring transaction stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RecurrenceSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteRecurrence
description: Delete a recurring transaction. Transactions created by the recurring transaction will not be deleted.
summary: Delete a recurring transaction.
tags:
- recurrences
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the recurring transaction.
responses:
204:
description: Recurring transaction deleted.
404:
description: No such recurring transaction
/api/v1/rule_groups/{id}/rules:
get:
summary: List rules in this rule group.
description: List rules in this rule group.
operationId: listRuleByGroup
tags:
- rule_groups
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the rule group.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of rules.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleArray'
/api/v1/rule_groups/{id}/test:
get:
summary: Test which transactions would be hit by the rule group. No changes will be made.
description: Test which transactions would be hit by the rule group. No changes will be made. Limit the result if you want to.
operationId: testRuleGroup
tags:
- rule_groups
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the rule group.
- in: query
name: page
description: Page number. The default pagination is 50 items.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to limit the transactions the test will be applied to. Both the start date and the end date must be present.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to limit the transactions the test will be applied to. Both the start date and the end date must be present.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: search_limit
description: |
Maximum number of transactions Firefly III will try. Don't set this too high, or it will take Firefly III very long to run the test. I suggest a max of 200.
required: false
schema:
type: integer
- in: query
name: triggered_limit
description: |
Maximum number of transactions the rule group can actually trigger on, before Firefly III stops. I would suggest setting this to 10 or 15. Don't go above the user's page size, because browsing to page 2 or 3 of a test result would fire the test again, making any navigation efforts very slow.
required: false
schema:
type: integer
- in: query
name: accounts[]
description: |
Limit the testing of the rule group to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: A list of transactions that would be changed by any of the rules of the rule group. No changes will be made.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/rule_groups/{id}/trigger:
post:
summary: Fire the rule group on your transactions.
description: Fire the rule group on your transactions. Changes will be made by the rules in the rule group! Limit the result if you want to.
operationId: fireRuleGroup
tags:
- rule_groups
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the rule group.
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. Both the start date and the end date must be present.
required: false
schema:
type: string
example: "2018-09-17"
format: date
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. Both the start date and the end date must be present.
required: false
schema:
type: string
example: "2018-09-17"
format: date
- in: query
name: accounts[]
description: |
Limit the triggering of the rule group to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
204:
description: "The rules in the group are executed. Due to the setup of this function (asynchronous job execution) the result cannot be displayed."
/api/v1/rule_groups:
get:
summary: List all rule groups.
description: List all rule groups.
operationId: listRuleGroup
tags:
- rule_groups
parameters:
- in: query
name: page
description: Page number. The default pagination is 50
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of rule groups.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleGroupArray'
post:
summary: Store a new rule group.
description: Creates a new rule group. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeRuleGroup
tags:
- rule_groups
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RuleGroupStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/RuleGroupStore'
description: "JSON array or key=value pairs with the necessary rule group information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New rule group stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleGroupSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/rule_groups/{id}:
get:
summary: Get a single rule group.
description: Get a single rule group. This does not include the rules. For that, see below.
operationId: getRuleGroup
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the rule group.
tags:
- rule_groups
responses:
200:
description: 'The requested rule group'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleGroupSingle'
404:
description: Rule group not found.
put:
operationId: updateRuleGroup
tags:
- rule_groups
description: Update existing rule group.
summary: Update existing rule group.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the rule group.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RuleGroupUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/RuleGroupUpdate'
description: JSON array with updated rule group information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated rule group stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleGroupSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteRuleGroup
description: Delete a rule group.
summary: Delete a rule group.
tags:
- rule_groups
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the rule group.
responses:
204:
description: Rule group deleted.
404:
description: No such rule group
/api/v1/rules/{id}/test:
get:
summary: Test which transactions would be hit by the rule. No changes will be made.
description: Test which transactions would be hit by the rule. No changes will be made. Limit the result if you want to.
operationId: testRule
tags:
- rules
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the rule.
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to limit the transactions the test will be applied to. Both the start date and the end date must be present.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to limit the transactions the test will be applied to. Both the start date and the end date must be present.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: accounts[]
description: |
Limit the testing of the rule to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
200:
description: A list of transactions that would be changed by the rule. No changes will be made.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/rules/{id}/trigger:
post:
summary: Fire the rule on your transactions.
description: Fire the rule group on your transactions. Changes will be made by the rules in the group! Limit the result if you want to.
operationId: fireRule
tags:
- rules
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the rule.
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. If the start date is not present, it will be set to one year ago. If you use this field, both the start date and the end date must be present.
required: false
schema:
type: string
example: "2018-09-17"
format: date
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. If the end date is not present, it will be set to today. If you use this field, both the start date and the end date must be present.
required: false
schema:
type: string
example: "2018-09-17"
format: date
- in: query
name: accounts[]
description: |
Limit the triggering of the rule to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
required: false
explode: true
schema:
type: array
items:
type: integer
format: int64
example: [ 1, 2, 3 ]
responses:
204:
description: "The rules in the group are executed. Due to the setup of this function (asynchronous job execution) the result cannot be displayed."
/api/v1/rules:
get:
summary: List all rules.
description: List all rules.
operationId: listRule
tags:
- rules
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of rules
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleArray'
post:
summary: Store a new rule
description: Creates a new rule. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeRule
tags:
- rules
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RuleStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/RuleStore'
description: "JSON array or key=value pairs with the necessary rule information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New rule stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/rules/{id}:
get:
summary: Get a single rule.
description: Get a single rule.
operationId: getRule
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the object.X
tags:
- rules
responses:
200:
description: 'The requested rule'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleSingle'
404:
description: Rule not found
put:
operationId: updateRule
tags:
- rules
description: Update existing rule.
summary: Update existing rule.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the object.X
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RuleUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/RuleUpdate'
description: JSON array with updated rule information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated rule stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteRule
description: Delete an rule.
summary: Delete an rule.
tags:
- rules
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the rule.
responses:
204:
description: Rule deleted.
404:
description: No such rule
/api/v1/tags/{tag}/attachments:
get:
summary: Lists all attachments.
description: Lists all attachments.
operationId: listAttachmentByTag
tags:
- tags
parameters:
- in: path
name: tag
description: Either the tag itself or the tag ID.
required: true
schema:
type: string
format: string
example: groceries
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of attachments
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentArray'
404:
description: No such tag.
/api/v1/tags/{tag}/transactions:
get:
summary: "List all transactions with this tag."
description: "List all transactions with this tag."
operationId: listTransactionByTag
tags:
- tags
parameters:
- in: path
name: tag
description: Either the tag itself or the tag ID.
required: true
schema:
type: string
format: string
example: groceries
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD. This is the start date of the selected range (inclusive).
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD. This is the end date of the selected range (inclusive).
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: type
description: Optional filter on the transaction type(s) returned.
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/tags:
get:
summary: List all tags.
description: List all of the user's tags.
operationId: listTag
tags:
- tags
parameters:
- in: query
name: page
description: Page number
required: false
schema:
type: integer
responses:
200:
description: A list of tags
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TagArray'
post:
summary: Store a new tag
description: Creates a new tag. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeTag
tags:
- tags
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TagModelStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TagModelStore'
description: "JSON array or key=value pairs with the necessary tag information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New tag stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TagSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/tags/{tag}:
get:
summary: Get a single tag.
description: Get a single tag.
operationId: getTag
parameters:
- in: path
name: tag
description: Either the tag itself or the tag ID. If you use the tag itself, and it contains international (non-ASCII) characters, your milage may vary.
required: true
schema:
type: string
format: string
example: groceries
- in: query
name: page
description: Page number
required: false
schema:
type: integer
tags:
- tags
responses:
200:
description: 'The requested tag'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TagSingle'
404:
description: Tag not found
put:
operationId: updateTag
tags:
- tags
description: Update existing tag.
summary: Update existing tag.
parameters:
- in: path
name: tag
description: Either the tag itself or the tag ID. If you use the tag itself, and it contains international (non-ASCII) characters, your milage may vary.
required: true
schema:
type: string
format: string
example: groceries
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TagModelUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TagModelUpdate'
description: JSON array with updated tag information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated tag stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TagSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteTag
description: Delete an tag.
summary: Delete an tag.
tags:
- tags
parameters:
- in: path
name: tag
description: Either the tag itself or the tag ID. If you use the tag itself, and it contains international (non-ASCII) characters, your milage may vary.
required: true
schema:
type: string
format: string
example: groceries
responses:
204:
description: Tag deleted.
404:
description: "No such tag"
/api/v1/currencies/{code}/accounts:
get:
summary: List all accounts with this currency.
description: List all accounts with this currency.
operationId: listAccountByCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: USD
description: The currency code.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: date
description: |
A date formatted YYYY-MM-DD. When added to the request, Firefly III will show the account's balance on that day.
required: false
schema:
type: string
format: date
- in: query
name: type
description: Optional filter on the account type(s) returned
required: false
schema:
$ref: '#/components/schemas/AccountTypeFilter'
responses:
200:
description: A list of accounts
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AccountArray'
/api/v1/currencies/{code}/available_budgets:
get:
summary: List all available budgets with this currency.
description: List all available budgets with this currency.
operationId: listAvailableBudgetByCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: EUR
description: The currency code.
- in: query
name: page
description: Page number. The default pagination is 50
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of available budgets
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AvailableBudgetArray'
/api/v1/currencies/{code}/bills:
get:
summary: List all bills with this currency.
description: List all bills with this currency.
operationId: listBillByCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: USD
description: The currency code.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of bills.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BillArray'
/api/v1/currencies/{code}/budget_limits:
get:
summary: List all budget limits with this currency
description: List all budget limits with this currency
operationId: listBudgetLimitByCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: USD
description: The currency code.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: Start date for the budget limit list.
required: false
schema:
type: string
format: date
example: "2018-01-01"
- in: query
name: end
description: End date for the budget limit list.
required: false
schema:
type: string
format: date
example: "2018-01-31"
responses:
200:
description: A list of budget limits.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/BudgetLimitArray'
/api/v1/currencies/{code}/recurrences:
get:
summary: List all recurring transactions with this currency.
description: List all recurring transactions with this currency.
operationId: listRecurrenceByCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: EUR
description: The currency code.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of recurring transactions
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RecurrenceArray'
/api/v1/currencies/{code}/rules:
get:
summary: List all rules with this currency.
description: List all rules with this currency.
operationId: listRuleByCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: USD
description: The currency code.
- in: query
name: page
description: Page number. The default pagination per 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of rules
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/RuleArray'
/api/v1/currencies/{code}/transactions:
get:
summary: List all transactions with this currency.
description: List all transactions with this currency.
operationId: listTransactionByCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: USD
description: The currency code.
- in: query
name: page
description: Page number. The default pagination is per 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD, to limit the list of transactions.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD, to limit the list of transactions.
required: false
schema:
type: string
format: date
example: "2018-12-31"
- in: query
name: type
description: Optional filter on the transaction type(s) returned
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/currencies:
get:
summary: List all currencies.
description: List all currencies.
operationId: listCurrency
tags:
- currencies
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of currencies.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CurrencyArray'
post:
summary: Store a new currency
description: Creates a new currency. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeCurrency
tags:
- currencies
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CurrencyStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CurrencyStore'
description: "JSON array or key=value pairs with the necessary currency information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New currency stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CurrencySingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/currencies/{code}/enable:
post:
summary: Enable a single currency.
description: Enable a single currency.
operationId: enableCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: USD
description: The currency code.
responses:
204:
description: Currency was enabled.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CurrencySingle'
/api/v1/currencies/{code}/disable:
post:
summary: Disable a currency.
description: Disable a currency.
operationId: disableCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: integer
example: GBP
description: The currency code.
responses:
204:
description: Currency was disabled.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CurrencySingle'
409:
description: Currency cannot be disabled, because it is still in use.
/api/v1/currencies/{code}/default:
post:
summary: Make currency default currency.
description: Make this currency the default currency for the user. If the currency is not enabled, it will be enabled as well.
operationId: defaultCurrency
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: USD
description: The currency code.
responses:
204:
description: Currency has been made the default currency.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CurrencySingle'
/api/v1/currencies/{code}:
get:
summary: Get a single currency.
description: Get a single currency.
operationId: getCurrency
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: USD
description: The currency code.
tags:
- currencies
responses:
200:
description: 'The requested currency'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CurrencySingle'
404:
description: Currency not found
put:
operationId: updateCurrency
tags:
- currencies
description: Update existing currency.
summary: Update existing currency.
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: EUR
description: The currency code.
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CurrencyUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CurrencyUpdate'
description: JSON array with updated currency information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated currency stored, result in response'
content:
application/json:
schema:
$ref: '#/components/schemas/CurrencySingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteCurrency
description: Delete a currency.
summary: Delete a currency.
tags:
- currencies
parameters:
- in: path
name: code
required: true
schema:
type: string
format: string
example: GBP
description: The currency code.
responses:
204:
description: Currency deleted.
404:
description: No such currency
/api/v1/currencies/default:
get:
summary: Get the user's default currency.
description: Get the user's default currency.
operationId: getDefaultCurrency
tags:
- currencies
responses:
200:
description: 'The default currency'
content:
application/json:
schema:
$ref: '#/components/schemas/CurrencySingle'
/api/v1/transaction-journals/{id}/links:
get:
summary: Lists all the transaction links for an individual journal (individual split).
description: Lists all the transaction links for an individual journal (a split). Don't use the group ID, you need the actual underlying journal (the split).
operationId: listLinksByJournal
tags:
- transactions
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction journal / the split.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of transaction links.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionLinkArray'
404:
description: No such transaction journal (transaction split).
/api/v1/transaction-journals/{id}:
get:
summary: Get a single transaction, based on one of the underlying transaction journals (transaction splits).
description: Get a single transaction by underlying journal (split).
operationId: getTransactionByJournal
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction journal (split).
tags:
- transactions
responses:
200:
description: 'The requested transaction.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionSingle'
404:
description: Transaction not found.
delete:
operationId: deleteTransactionJournal
description: Delete an individual journal (split) from a transaction.
summary: Delete split from transaction
tags:
- transactions
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction journal (the split) you wish to delete.
responses:
204:
description: Transaction journal (split) deleted.
404:
description: No such transaction.
/api/v1/transactions/{id}/attachments:
get:
summary: Lists all attachments.
description: Lists all attachments.
operationId: listAttachmentByTransaction
tags:
- transactions
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of attachments
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AttachmentArray'
404:
description: No such transaction.
/api/v1/transactions/{id}/piggy_bank_events:
get:
summary: Lists all piggy bank events.
description: Lists all piggy bank events.
operationId: listEventByTransaction
tags:
- transactions
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction.
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of piggy bank events.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PiggyBankEventArray'
404:
description: No such transaction.
/api/v1/transactions:
get:
summary: |
List all the user's transactions.
description: List all the user's transactions.
operationId: listTransaction
tags:
- transactions
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
- in: query
name: start
description: |
A date formatted YYYY-MM-DD. This is the start date of the selected range (inclusive).
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: end
description: |
A date formatted YYYY-MM-DD. This is the end date of the selected range (inclusive).
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: type
description: Optional filter on the transaction type(s) returned.
required: false
schema:
$ref: '#/components/schemas/TransactionTypeFilter'
responses:
200:
description: A list of transactions.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
post:
summary: Store a new transaction
description: Creates a new transaction. The data required can be submitted as a JSON body or as a list of parameters.
operationId: storeTransaction
tags:
- transactions
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TransactionStore'
description: "JSON array or key=value pairs with the necessary transaction information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New transaction stored(s), result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/transactions/{id}:
get:
summary: Get a single transaction.
description: Get a single transaction.
operationId: getTransaction
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction.
tags:
- transactions
responses:
200:
description: 'The requested transaction.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionSingle'
404:
description: Transaction not found.
put:
operationId: updateTransaction
tags:
- transactions
description: Update an existing transaction.
summary: Update existing transaction.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TransactionUpdate'
description: JSON array with updated transaction information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated transaction stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteTransaction
description: Delete a transaction.
summary: Delete a transaction.
tags:
- transactions
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The ID of the transaction.
responses:
204:
description: Transaction deleted.
404:
description: No such transaction.
/api/v1/search/accounts:
get:
summary: Search for accounts
description: Search for accounts
operationId: searchAccounts
tags:
- search
parameters:
- in: query
name: page
description: Page number. The default pagination is 50
required: false
schema:
type: integer
example: 1
- in: query
name: query
description: The query you wish to search for.
required: true
schema:
type: string
example: "checking"
- in: query
name: type
description: The type of accounts you wish to limit the search to.
required: false
schema:
$ref: '#/components/schemas/AccountTypeFilter'
- in: query
name: field
description: The account field(s) you want to search in.
required: true
schema:
$ref: '#/components/schemas/AccountSearchFieldFilter'
responses:
200:
description: A list of accounts.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AccountArray'
/api/v1/search/transactions:
get:
summary: Search for transactions
description: Searches through the users transactions.
externalDocs:
description: Search Documentation
url: https://docs.firefly-iii.org/firefly-iii/pages-and-features/search/
operationId: searchTransactions
tags:
- search
parameters:
- in: query
name: query
description: The query you wish to search for.
required: true
schema:
type: string
example: "groceries"
- in: query
name: page
description: Page number. The default pagination is 50
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of transactions.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/TransactionArray'
/api/v1/about:
get:
tags:
- about
operationId: getAbout
summary: System information end point.
description: |
Returns general system information and versions of the (supporting) software.
responses:
200:
description: The available system information
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SystemInfo'
/api/v1/about/user:
get:
tags:
- about
summary: Currently authenticated user endpoint.
operationId: getCurrentUser
description: |
Returns the currently authenticated user.
responses:
200:
description: The user
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/UserSingle'
/api/v1/configuration:
get:
summary: Get Firefly III system configuration values.
description: Returns all editable and not-editable configuration values for this Firefly III installation
operationId: getConfiguration
tags:
- configuration
responses:
200:
description: System configuration values
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationArray'
/api/v1/configuration/{name}:
get:
summary: Get a single Firefly III system configuration value
description: Returns one configuration variable for this Firefly III installation
operationId: getSingleConfiguration
tags:
- configuration
parameters:
- in: path
name: name
required: true
schema:
$ref: '#/components/schemas/ConfigValueFilter'
description: The name of the configuration value you want to know.
responses:
200:
description: One system configuration value
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationSingle'
put:
tags:
- configuration
summary: Update configuration value
operationId: setConfiguration
description: Set a single configuration value. Not all configuration values can be updated so the list of accepted configuration variables is small.
parameters:
- in: path
name: name
required: true
schema:
$ref: '#/components/schemas/ConfigValueUpdateFilter'
description: The name of the configuration value you want to update.
responses:
200:
description: 'New configuration value stored, result in response.'
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
requestBody:
description: JSON array with the necessary account information or key=value pairs. See the model for the exact specifications.
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/ConfigurationUpdate'
application/json:
schema:
$ref: '#/components/schemas/ConfigurationUpdate'
required: true
/api/v1/cron/{cliToken}:
get:
tags:
- about
parameters:
- in: path
name: cliToken
required: true
schema:
type: string
format: string
example: d5ea6b5fb774618dd6ad6ba6e0a7f55c
description: The CLI token of any user in Firefly III, required to run the cron job.
- in: query
name: date
description: |
A date formatted YYYY-MM-DD. This can be used to make the cron job pretend it's running
on another day.
required: false
schema:
type: string
format: date
example: "2018-09-17"
- in: query
name: force
description: |
Forces the cron job to fire, regardless of whether it has fired before. This may result
in double transactions or weird budgets, so be careful.
required: false
schema:
type: boolean
format: boolean
example: false
operationId: getCron
summary: Cron job endpoint
description: |
Firefly III has one endpoint for its various cron related tasks. Send a GET to this endpoint
to run the cron. The cron requires the CLI token to be present. The cron job will fire for all
users.
responses:
200:
description: The result of the cron job(s) firing.
content:
application/json:
schema:
$ref: '#/components/schemas/CronResult'
/api/v1/users:
get:
summary: List all users.
description: List all the users in this instance of Firefly III.
operationId: listUser
tags:
- users
parameters:
- in: query
name: page
description: The page number, if necessary. The default pagination is 50, so 50 users per page.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of users.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/UserArray'
post:
summary: Store a new user
description: |
Creates a new user. The data required can be submitted as a JSON body or as a list of parameters. The user will be given a random password, which they can reset using the "forgot password" function.
operationId: storeUser
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/User'
description: "JSON array or key=value pairs with the necessary user information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New user stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/UserSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/users/{id}:
get:
summary: Get a single user.
description: Gets all info of a single user.
operationId: getUser
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The user ID.
tags:
- users
responses:
200:
description: 'The requested user.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/UserSingle'
404:
description: User not found.
put:
operationId: updateUser
tags:
- users
description: Update existing user.
summary: Update an existing user's information.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The user ID.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/User'
description: JSON array with updated user information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated user stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/UserSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteUser
description: Delete a user. You cannot delete the user you're authenticated with. This cannot be undone. Be careful!
summary: Delete a user.
tags:
- users
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The user ID.
responses:
204:
description: User deleted.
404:
description: No such user.
'500':
description: Error when deleting, or when you're trying to delete the currently authenticated user.
/api/v1/preferences:
get:
summary: List all users preferences.
description: List all of the preferences of the user.
operationId: listPreference
tags:
- preferences
parameters:
- in: query
name: page
description: Page number. The default pagination is 50.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of preferences.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PreferenceArray'
post:
tags:
- preferences
summary: Store a new preference for this user.
operationId: storePreference
description: This endpoint creates a new preference. The name and data are free-format, and entirely up to you. If the preference is not used in Firefly III itself it may not be configurable through the user interface, but you can use this endpoint to persist custom data for your own app.
responses:
200:
description: 'New account stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PreferenceSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Preference'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Preference'
description: JSON array with the necessary preference information or key=value pairs. See the model for the exact specifications.
required: true
/api/v1/preferences/{name}:
get:
summary: Return a single preference.
description: Return a single preference and the value.
operationId: getPreference
parameters:
- in: path
name: name
required: true
schema:
type: string
format: string
example: currencyPreference
description: The name of the preference.
tags:
- preferences
responses:
200:
description: A single preference.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PreferenceSingle'
put:
summary: Update preference
description: Update a user's preference.
operationId: updatePreference
parameters:
- in: path
name: name
required: true
schema:
type: string
format: string
example: currencyPreference
description: The name of the preference. Will always overwrite. Will be created if it does not exist.
tags:
- preferences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PreferenceUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PreferenceUpdate'
description: "JSON array or key=value pairs with the necessary preference information. See the model for the exact specifications."
required: true
responses:
200:
description: 'Updated preference.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PreferenceSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/webhooks/{id}/messages:
get:
summary: Get all the messages of a single webhook.
description: When a webhook is triggered the actual message that will be send is stored in a "message". You can view and analyse these messages.
operationId: getWebhookMessages
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
tags:
- webhooks
responses:
200:
description: A list of webhook messages.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/WebhookMessageArray'
404:
description: Webhook not found.
/api/v1/webhooks/{id}/messages/{messageId}:
get:
summary: Get a single message from a webhook.
description: When a webhook is triggered it will store the actual content of the webhook in a webhook message. You can view and analyse a single one using this endpoint.
operationId: getSingleWebhookMessage
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
- in: path
name: messageId
required: true
schema:
type: integer
example: 1
description: The webhook message ID.
tags:
- webhooks
responses:
200:
description: 'A single webhook message.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/WebhookMessageSingle'
404:
description: Webhook message not found.
delete:
operationId: deleteWebhookMessage
summary: Delete a webhook message.
description: Delete a webhook message. Any time a webhook is triggered the message is stored before it's sent. You can delete them before or after sending.
tags:
- webhooks
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
- in: path
name: messageId
required: true
schema:
type: integer
example: 1
description: The webhook message ID.
responses:
204:
description: Webhook message deleted.
404:
description: No such webhook or webhook message.
'500':
description: Error when deleting.
/api/v1/webhooks/{id}/messages/{messageId}/attempts:
get:
summary: Get all the failed attempts of a single webhook message.
description: When a webhook message fails to send it will store the failure in an "attempt". You can view and analyse these. Webhook messages that receive too many attempts (failures) will not be sent again. You must first clear out old attempts before the message can go out again.
operationId: getWebhookMessageAttempts
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
- in: path
name: messageId
required: true
schema:
type: integer
example: 1
description: The webhook message ID.
- in: query
name: page
description: Page number. The default pagination is per 50 items.
required: false
schema:
type: integer
format: int32
example: 1
tags:
- webhooks
responses:
200:
description: A list of webhook attempts.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/WebhookAttemptArray'
404:
description: Webhook or webhook message not found.
/api/v1/webhooks/{id}/messages/{messageId}/attempts/{attemptId}:
get:
summary: Get a single failed attempt from a single webhook message.
description: When a webhook message fails to send it will store the failure in an "attempt". You can view and analyse these. Webhooks messages that receive too many attempts (failures) will not be fired. You must first clear out old attempts and try again. This endpoint shows you the details of a single attempt. The ID of the attempt must match the corresponding webhook and webhook message.
operationId: getSingleWebhookMessageAttempt
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
- in: path
name: messageId
required: true
schema:
type: integer
example: 1
description: The webhook message ID.
- in: path
name: attemptId
required: true
schema:
type: integer
example: 1
description: The webhook attempt ID.
tags:
- webhooks
responses:
200:
description: 'A single webhook attempt.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/WebhookAttemptSingle'
404:
description: Webhook message attempt not found.
delete:
operationId: deleteWebhookMessageAttempt
summary: Delete a webhook attempt.
description: Delete a webhook message attempt. If you delete all attempts for a webhook message, Firefly III will (once again) assume all is well with the webhook message and will try to send it again.
tags:
- webhooks
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
- in: path
name: messageId
required: true
schema:
type: integer
example: 1
description: The webhook message ID.
- in: path
name: attemptId
required: true
schema:
type: integer
example: 1
description: The webhook message attempt ID.
responses:
204:
description: Webhook message attempt deleted.
404:
description: No such webhook, webhook message or webhook attempt.
'500':
description: Error when deleting.
/api/v1/webhooks/{id}/submit:
post:
summary: Submit messages for a webhook.
description: This endpoint will submit any open messages for this webhook. This is an asynchronous operation, so you can't see the result. Refresh the webhook message and/or the webhook message attempts to see the results. This may take some time if the webhook receiver is slow.
operationId: submitWebook
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
tags:
- webhooks
responses:
200:
description: OK!
204:
description: No messages to send, so did nothing.
404:
description: Webhook not found.
500:
description: Error while sending.
/api/v1/webhooks:
get:
summary: List all webhooks.
description: List all the user's webhooks.
operationId: listWebhook
tags:
- webhooks
parameters:
- in: query
name: page
description: The page number, if necessary. The default pagination is 50, so 50 webhooks per page.
required: false
schema:
type: integer
example: 1
responses:
200:
description: A list of webhooks.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/WebhookArray'
post:
summary: Store a new webhook
description: |
Creates a new webhook. The data required can be submitted as a JSON body or as a list of parameters. The webhook will be given a random secret.
operationId: storeWebhook
tags:
- webhooks
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookStore'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/WebhookStore'
description: "JSON array or key=value pairs with the necessary webhook information. See the model for the exact specifications."
required: true
responses:
200:
description: 'New webhook stored, result in response.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/WebhookSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
/api/v1/webhooks/{id}:
get:
summary: Get a single webhook.
description: Gets all info of a single webhook.
operationId: getWebhook
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
tags:
- webhooks
responses:
200:
description: 'The requested webhook.'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/WebhookSingle'
404:
description: Webhook not found.
put:
operationId: updateWebhook
tags:
- webhooks
summary: Update existing webhook.
description: Update an existing webhook's information. If you wish to reset the secret, submit any value as the "secret". Firefly III will take this as a hint and reset the secret of the webhook.
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookUpdate'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/WebhookUpdate'
description: JSON array with updated webhook information. See the model for the exact specifications.
required: true
responses:
200:
description: 'Updated webhook stored, result in response'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/WebhookSingle'
422:
description: 'Validation errors (see body)'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
delete:
operationId: deleteWebhook
description: Delete a webhook.
summary: Delete a webhook.
tags:
- webhooks
parameters:
- in: path
name: id
required: true
schema:
type: string
example: "123"
description: The webhook ID.
responses:
204:
description: Webhook deleted.
404:
description: No such webhook.
'500':
description: Error when deleting.
components:
schemas:
AccountArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/AccountRead'
meta:
$ref: '#/components/schemas/Meta'
AttachmentArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/AttachmentRead'
meta:
$ref: '#/components/schemas/Meta'
AutocompleteAccountArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteAccount'
AutocompleteBillArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteBill'
AutocompleteBudgetArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteBudget'
AutocompleteCategoryArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteCategory'
AutocompleteCurrencyArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteCurrency'
AutocompleteCurrencyCodeArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteCurrencyCode'
AutocompleteObjectGroupArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteObjectGroup'
AutocompletePiggyArray:
type: array
items:
$ref: '#/components/schemas/AutocompletePiggy'
AutocompletePiggyBalanceArray:
type: array
items:
$ref: '#/components/schemas/AutocompletePiggyBalance'
AutocompleteRecurrenceArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteRecurrence'
AutocompleteRuleArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteRule'
AutocompleteRuleGroupArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteRuleGroup'
AutocompleteTagArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteTag'
AutocompleteTransactionArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteTransaction'
AutocompleteTransactionIDArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteTransactionID'
AutocompleteTransactionTypeArray:
type: array
items:
$ref: '#/components/schemas/AutocompleteTransactionType'
AvailableBudgetArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/AvailableBudgetRead'
meta:
$ref: '#/components/schemas/Meta'
BillArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/BillRead'
meta:
$ref: '#/components/schemas/Meta'
BudgetArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/BudgetRead'
meta:
$ref: '#/components/schemas/Meta'
BudgetLimitArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/BudgetLimitRead'
meta:
$ref: '#/components/schemas/Meta'
CategoryArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/CategoryRead'
meta:
$ref: '#/components/schemas/Meta'
ConfigurationArray:
type: array
items:
$ref: '#/components/schemas/Configuration'
CurrencyArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/CurrencyRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
LinkTypeArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/LinkTypeRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
ObjectGroupArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/ObjectGroupRead'
meta:
$ref: '#/components/schemas/Meta'
PiggyBankArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/PiggyBankRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
PiggyBankEventArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/PiggyBankEventRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
PreferenceArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/PreferenceRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
RecurrenceArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/RecurrenceRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
RuleArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/RuleRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
RuleGroupArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/RuleGroupRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
TagArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/TagRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
TransactionArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/TransactionRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
TransactionLinkArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/TransactionLinkRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
UserArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/UserRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
WebhookArray:
type: object
required:
- data
- meta
- links
properties:
data:
type: array
items:
$ref: '#/components/schemas/WebhookRead'
meta:
$ref: '#/components/schemas/Meta'
links:
$ref: '#/components/schemas/PageLink'
WebhookAttemptArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/WebhookAttemptRead'
meta:
$ref: '#/components/schemas/Meta'
WebhookMessageArray:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/WebhookMessageRead'
meta:
$ref: '#/components/schemas/Meta'
AccountSearchFieldFilter:
type: string
enum:
- all
- iban
- name
- number
- id
AccountTypeFilter:
type: string
enum:
- all
- asset
- cash
- expense
- revenue
- special
- hidden
- liability
- liabilities
- Default account
- Cash account
- Asset account
- Expense account
- Revenue account
- Initial balance account
- Beneficiary account
- Import account
- Reconciliation account
- Loan
- Debt
- Mortgage
ConfigValueFilter:
type: string
enum:
- configuration.is_demo_site
- configuration.permission_update_check
- configuration.last_update_check
- configuration.single_user_mode
- firefly.version
- firefly.api_version
- firefly.default_location
- firefly.account_to_transaction
- firefly.allowed_opposing_types
- firefly.accountRoles
- firefly.valid_liabilities
- firefly.interest_periods
- firefly.enable_external_map
- firefly.expected_source_types
- app.timezone
ConfigValueUpdateFilter:
type: string
enum:
- configuration.is_demo_site
- configuration.permission_update_check
- configuration.last_update_check
- configuration.single_user_mode
ExportFileFilter:
type: string
enum:
- csv
TransactionTypeFilter:
type: string
enum:
- all
- withdrawal
- withdrawals
- expense
- deposit
- deposits
- income
- transfer
- transfers
- opening_balance
- reconciliation
- special
- specials
- default
AccountRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "accounts"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Account'
AccountSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/AccountRead'
AttachmentRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "attachments"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Attachment'
links:
$ref: '#/components/schemas/ObjectLink'
AttachmentSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/AttachmentRead'
AvailableBudgetRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "available_budgets"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/AvailableBudget'
AvailableBudgetSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/AvailableBudgetRead'
BillRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "bills"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Bill'
BillSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/BillRead'
BudgetLimitRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "budget_limits"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/BudgetLimit'
BudgetLimitSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/BudgetLimitRead'
BudgetRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "budgets"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Budget'
BudgetSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/BudgetRead'
CategoryRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "categories"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Category'
CategorySingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/CategoryRead'
ConfigurationSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Configuration'
CurrencyRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "currencies"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Currency'
CurrencySingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/CurrencyRead'
LinkTypeRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "link_types"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/LinkType'
links:
$ref: '#/components/schemas/ObjectLink'
LinkTypeSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/LinkTypeRead'
ObjectGroupRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "object_groups"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/ObjectGroup'
ObjectGroupSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/ObjectGroupRead'
PiggyBankEventRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "piggy_bank_eventss"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/PiggyBankEvent'
links:
$ref: '#/components/schemas/ObjectLink'
PiggyBankRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "piggy_banks"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/PiggyBank'
links:
$ref: '#/components/schemas/ObjectLink'
PiggyBankSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/PiggyBankRead'
PreferenceRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "preferences"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Preference'
PreferenceSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/PreferenceRead'
RecurrenceRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "recurrences"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Recurrence'
links:
$ref: '#/components/schemas/ObjectLink'
RecurrenceSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/RecurrenceRead'
RuleGroupRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "rules_group"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/RuleGroup'
links:
$ref: '#/components/schemas/ObjectLink'
RuleGroupSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/RuleGroupRead'
RuleRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "rules"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Rule'
links:
$ref: '#/components/schemas/ObjectLink'
RuleSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/RuleRead'
TagRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "tags"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/TagModel'
links:
$ref: '#/components/schemas/ObjectLink'
TagSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/TagRead'
TransactionLinkRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "transactionLinks"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/TransactionLink'
links:
$ref: '#/components/schemas/ObjectLink'
TransactionLinkSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/TransactionLinkRead'
TransactionRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "transactions"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Transaction'
links:
$ref: '#/components/schemas/ObjectLink'
TransactionSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/TransactionRead'
UserRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "users"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/User'
links:
$ref: '#/components/schemas/ObjectLink'
WebhookAttemptRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "webhook_attempts"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/WebhookAttempt'
WebhookAttemptSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/WebhookAttemptRead'
WebhookMessageRead:
type: object
required:
- type
- id
- attributes
properties:
type:
type: string
format: string
example: "webhook_messages"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/WebhookMessage'
WebhookMessageSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/WebhookMessageRead'
WebhookRead:
type: object
required:
- type
- id
- attributes
- links
properties:
type:
type: string
format: string
example: "webhooks"
description: "Immutable value"
id:
type: string
format: string
example: "2"
attributes:
$ref: '#/components/schemas/Webhook'
links:
$ref: '#/components/schemas/ObjectLink'
WebhookSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/WebhookRead'
AccountRoleProperty:
type: string
format: string
example: "defaultAsset"
description: "Is only mandatory when the type is asset."
nullable: true
enum:
- defaultAsset
- sharedAsset
- savingAsset
- ccAsset
- cashWalletAsset
- null
AccountTypeProperty:
type: string
format: string
example: "Asset account"
readOnly: true
enum:
- Default account
- Cash account
- Asset account
- Expense account
- Revenue account
- Initial balance account
- Beneficiary account
- Import account
- Reconciliation account
- Loan
- Debt
- Mortgage
AttachableType:
type: string
format: string
example: "Bill"
description: The object class to which the attachment must be linked.
enum:
- Account
- Budget
- Bill
- TransactionJournal
- PiggyBank
- Tag
AutoBudgetPeriod:
type: string
format: string
example: "monthly"
nullable: true
description: "Period for the auto budget"
enum:
- daily
- weekly
- monthly
- quarterly
- "half-year"
- yearly
- null
AutoBudgetType:
type: string
format: string
example: reset
nullable: true
description: "The type of auto-budget that Firefly III must create."
enum:
- reset
- rollover
- none
- null
BillRepeatFrequency:
type: string
format: string
example: "monthly"
description: How often the bill must be paid.
enum:
- weekly
- monthly
- quarterly
- "half-year"
- yearly
CreditCardType:
type: string
format: string
example: monthlyFull
description: "Mandatory when the account_role is ccAsset. Can only be monthlyFull or null."
nullable: true
enum:
- monthlyFull
- null
InterestPeriod:
type: string
format: string
example: monthly
description: "Mandatory when type is liability. Period over which the interest is calculated."
nullable: true
enum:
- weekly
- monthly
- quarterly
- half-year
- yearly
- null
LiabilityDirection:
type: string
format: string
example: credit
description: "'credit' indicates somebody owes you the liability. 'debit' Indicates you owe this debt yourself. Works only for liabiltiies."
nullable: true
enum:
- credit
- debit
- null
LiabilityType:
type: string
format: string
example: "loan"
description: "Mandatory when type is liability. Specifies the exact type."
nullable: true
enum:
- loan
- debt
- mortgage
- null
PolymorphicProperty:
oneOf:
- type: boolean
- type: string
- type: object
- type: array
items:
$ref: '#/components/schemas/StringArrayItem'
RecurrenceRepetitionType:
type: string
format: string
example: "weekly"
description: "The type of the repetition. ndom means: the n-th weekday of the month, where you can also specify which day of the week."
enum:
- daily
- weekly
- ndom
- monthly
- yearly
RecurrenceTransactionType:
type: string
format: string
example: "withdrawal"
enum:
- withdrawal
- transfer
- deposit
RuleActionKeyword:
type: string
format: string
example: "set_category"
description: The type of thing this action will do. A limited set is possible.
enum:
- user_action
- set_category
- clear_category
- set_budget
- clear_budget
- add_tag
- remove_tag
- remove_all_tags
- set_description
- append_description
- prepend_description
- set_source_account
- set_destination_account
- set_notes
- append_notes
- prepend_notes
- clear_notes
- link_to_bill
- convert_withdrawal
- convert_deposit
- convert_transfer
- delete_transaction
RuleTriggerKeyword:
type: string
format: string
example: "user_action"
description: The type of thing this trigger responds to. A limited set is possible
enum:
- from_account_starts
- from_account_ends
- from_account_is
- from_account_contains
- to_account_starts
- to_account_ends
- to_account_is
- to_account_contains
- amount_less
- amount_exactly
- amount_more
- description_starts
- description_ends
- description_contains
- description_is
- transaction_type
- category_is
- budget_is
- tag_is
- currency_is
- has_attachments
- has_no_category
- has_any_category
- has_no_budget
- has_any_budget
- has_no_tag
- has_any_tag
- notes_contain
- notes_start
- notes_end
- notes_are
- no_notes
- any_notes
- source_account_is
- destination_account_is
- source_account_starts
RuleTriggerType:
type: string
format: string
example: store-journal
description: Which action is necessary for the rule to fire? Use either store-journal or update-journal.
enum:
- "store-journal"
- "update-journal"
ShortAccountTypeProperty:
type: string
format: string
example: "asset"
description: "Can only be one one these account types. import, initial-balance and reconciliation cannot be set manually."
enum:
- asset
- expense
- import
- revenue
- cash
- liability
- liabilities
- "initial-balance"
- reconciliation
StringArray:
type: array
items:
$ref: '#/components/schemas/StringArrayItem'
StringArrayItem:
type: string
format: string
TransactionTypeProperty:
type: string
format: string
example: "withdrawal"
enum:
- withdrawal
- deposit
- transfer
- reconciliation
- opening balance
UserBlockedCodeProperty:
type: string
format: string
example: "email_changed"
description: If you say the user must be blocked, this will be the reason code.
enum:
- email_changed
- null
UserRoleProperty:
type: string
format: string
example: "owner"
description: Role for the user. Can be empty or omitted.
enum:
- owner
- demo
- null
WebhookDelivery:
type: string
format: string
nullable: false
example: "DELIVERY_JSON"
description: Format of the delivered response.
enum:
- DELIVERY_JSON
WebhookResponse:
type: string
format: string
nullable: false
example: "RESPONSE_TRANSACTIONS"
description: Indicator for what Firefly III will deliver to the webhook URL.
enum:
- RESPONSE_TRANSACTIONS
- RESPONSE_ACCOUNTS
- RESPONSE_NONE
WebhookTrigger:
type: string
format: string
nullable: false
example: "TRIGGER_DESTROY_TRANSACTION"
description: The trigger for the webhook.
enum:
- TRIGGER_STORE_TRANSACTION
- TRIGGER_UPDATE_TRANSACTION
- TRIGGER_DESTROY_TRANSACTION
AutocompleteAccount:
type: object
required:
- id
- name
- name_with_balance
- type
- currency_id
- currency_name
- currency_code
- currency_symbol
- currency_decimal_places
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Checking Account"
description: Name of the account found by an auto-complete search.
name_with_balance:
type: string
format: string
example: "Checking Account ($123.45)"
description: Asset accounts and liabilities have a second field with the given date's account balance.
type:
type: string
format: string
example: "Asset account"
description: Account type of the account found by the auto-complete search.
currency_id:
type: string
format: string
example: "12"
description: ID for the currency used by this account.
currency_name:
type: string
format: string
example: "Euro"
description: Currency name for the currency used by this account.
currency_code:
type: string
format: string
example: "EUR"
description: Currency code for the currency used by this account.
currency_symbol:
type: string
format: string
example: "$"
description: Currency symbol for the currency used by this account.
currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimal places for the currency used by this account.
AutocompleteBill:
type: object
required:
- id
- name
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Yearly bill"
description: Name of the bill found by an auto-complete search.
AutocompleteBudget:
type: object
required:
- id
- name
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Groceries"
description: Name of the budget found by an auto-complete search.
AutocompleteCategory:
type: object
required:
- id
- name
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Category X"
description: Name of the category found by an auto-complete search.
AutocompleteCurrency:
type: object
required:
- id
- name
- code
- symbol
- decimal_places
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Currency name"
description: Currency name.
code:
type: string
format: string
example: "EUR"
description: Currency code.
symbol:
type: string
format: string
example: "$"
decimal_places:
type: integer
format: int32
example: 2
AutocompleteCurrencyCode:
type: object
required:
- id
- name
- code
- symbol
- decimal_places
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Currency name (XCN)"
description: Currency name with the code between brackets.
code:
type: string
format: string
example: "EUR"
description: Currency code.
symbol:
type: string
format: string
example: "$"
decimal_places:
type: integer
format: int32
example: 2
AutocompleteObjectGroup:
type: object
required:
- id
- title
- name
properties:
id:
type: string
format: string
example: "2"
title:
type: string
format: string
example: "Object Group one"
description: Title of the object group found by an auto-complete search.
name:
type: string
format: string
example: "Object Group one"
description: Title of the object group found by an auto-complete search.
AutocompletePiggy:
type: object
required:
- id
- name
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "New couch"
description: Name of the piggy bank found by an auto-complete search.
currency_id:
type: string
format: string
example: "12"
description: Currency ID for this piggy bank.
currency_code:
type: string
format: string
example: "EUR"
description: Currency code for this piggy bank.
currency_symbol:
type: string
format: string
example: "$"
currency_name:
type: string
format: string
example: "Euro"
description: Currency name for the currency used by this account.
currency_decimal_places:
type: integer
format: int32
example: 2
object_group_id:
type: string
format: string
example: "5"
nullable: true
description: The group ID of the group this object is part of. NULL if no group.
object_group_title:
type: string
format: string
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
AutocompletePiggyBalance:
type: object
required:
- id
- name
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "New couch"
description: Name of the piggy bank found by an auto-complete search.
name_with_balance:
type: string
format: string
example: "New couch ($ 12.34)"
description: Name of the piggy bank found by an auto-complete search with the current balance formatted nicely.
object_group_id:
type: string
format: string
example: "5"
nullable: true
description: The group ID of the group this object is part of. NULL if no group.
object_group_title:
type: string
format: string
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
currency_id:
type: string
format: string
example: "12"
description: Currency ID for this piggy bank.
currency_code:
type: string
format: string
example: "EUR"
description: Currency code for this piggy bank.
currency_symbol:
type: string
format: string
example: "$"
currency_decimal_places:
type: integer
format: int32
example: 2
AutocompleteRecurrence:
type: object
required:
- id
- name
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Yearly bill"
description: Name of the recurrence found by an auto-complete search.
description:
type: string
format: string
example: "Should trigger daily."
description: Description of the recurrence found by auto-complete.
AutocompleteRule:
type: object
required:
- id
- name
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Rule one"
description: Name of the rule found by an auto-complete search.
description:
type: string
format: string
example: "Useful rule."
description: Description of the rule found by auto-complete.
AutocompleteRuleGroup:
type: object
required:
- id
- name
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Rule group one"
description: Name of the rule group found by an auto-complete search.
description:
type: string
format: string
example: "Some rule group."
description: Description of the rule group found by auto-complete.
AutocompleteTag:
type: object
required:
- id
- name
- tag
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "too-expensive-tag-example"
description: Name of the tag found by an auto-complete search.
tag:
type: string
format: string
example: "too-expensive-tag-example"
description: Name of the tag found by an auto-complete search.
AutocompleteTransaction:
type: object
required:
- id
- name
- description
properties:
id:
type: string
format: string
example: "2"
description: The ID of a transaction journal (basically a single split).
transaction_group_id:
type: string
format: string
example: "2"
description: The ID of the underlying transaction group.
name:
type: string
format: string
example: "Transaction"
description: Transaction description
description:
type: string
format: string
example: "Transaction"
description: Transaction description
AutocompleteTransactionID:
type: object
required:
- id
- name
- description
properties:
id:
type: string
format: string
example: "2"
description: The ID of a transaction journal (basically a single split).
transaction_group_id:
type: string
format: string
example: "2"
description: The ID of the underlying transaction group.
name:
type: string
format: string
example: "#12: Transaction"
description: Transaction description with ID in the name.
description:
type: string
format: string
example: "#12: Transaction"
description: Transaction description with ID in the name.
AutocompleteTransactionType:
type: object
required:
- id
- name
- type
properties:
id:
type: string
format: string
example: "2"
name:
type: string
format: string
example: "Withdrawal"
description: Type of the object found by an auto-complete search.
type:
type: string
format: string
example: "Withdrawal"
description: Name of the object found by an auto-complete search.
ChartDataPoint:
type: object
properties:
key:
type: string
format: string
example: "value"
description: "The key is the label of the value, so for example: '2018-01-01' => 13 or 'Groceries' => -123."
ChartDataSet:
type: object
properties:
label:
type: string
format: string
example: "Checking account"
description: "This is the title of the current set. It can refer to an account, a budget or another object (by name)."
currency_id:
type: string
format: string
example: "5"
description: "The currency ID of the currency associated to the data in the entries."
currency_code:
type: string
format: string
example: "EUR"
currency_symbol:
type: string
format: string
example: "$"
currency_decimal_places:
type: integer
format: int32
example: 2
description: "Number of decimals for the currency associated to the data in the entries."
start_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
end_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
type:
type: string
format: string
example: "line"
description: "Indicated the type of chart that is expected to be rendered. You can safely ignore this if you want."
yAxisID:
type: integer
format: int32
example: 0
description: "Used to indicate the Y axis for this data set. Is usually between 0 and 1 (left and right side of the chart)."
entries:
type: object
description: "The actual entries for this data set. They 'key' value is the label for the data point. The value is the actual (numerical) value."
items:
$ref: '#/components/schemas/ChartDataPoint'
ChartLine:
type: array
items:
$ref: '#/components/schemas/ChartDataSet'
DataDestroyObject:
type: string
enum:
- budgets
- bills
- piggy_banks
- rules
- recurring
- categories
- tags
- object_groups
- accounts
- asset_accounts
- expense_accounts
- revenue_accounts
- liabilities
- transactions
- withdrawals
- deposits
- transfers
InsightGroup:
type: array
items:
$ref: '#/components/schemas/InsightGroupEntry'
InsightGroupEntry:
type: object
properties:
id:
type: string
format: string
example: "123"
description: "This ID is a reference to the original object."
name:
type: string
format: string
example: "Land lord"
description: "This is the name of the object."
difference:
type: string
format: string
example: "-123.45"
description: "The amount spent or earned between start date and end date, a number defined as a string, for this object and all asset accounts."
difference_float:
type: number
format: double
example: -123.45
description: "The amount spent or earned between start date and end date, a number as a float, for this object and all asset accounts. May have rounding errors."
currency_id:
type: string
format: string
example: "5"
description: "The currency ID of the expenses listed for this account."
currency_code:
type: string
format: string
example: "EUR"
description: "The currency code of the expenses listed for this account."
InsightTotal:
type: array
items:
$ref: '#/components/schemas/InsightTotalEntry'
InsightTotalEntry:
type: object
properties:
difference:
type: string
format: string
example: "123.45"
description: "The amount spent between start date and end date, defined as a string, for this expense account and all asset accounts."
difference_float:
type: number
format: double
example: 123.45
description: "The amount spent between start date and end date, defined as a string, for this expense account and all asset accounts. This number is a float (double) and may have rounding errors."
currency_id:
type: string
format: string
example: "5"
description: "The currency ID of the expenses listed for this expense account."
currency_code:
type: string
format: string
example: "EUR"
description: "The currency code of the expenses listed for this expense account."
InsightTransfer:
type: array
items:
$ref: '#/components/schemas/InsightTransferEntry'
InsightTransferEntry:
type: object
properties:
id:
type: string
format: string
example: "123"
description: "This ID is a reference to the original object."
name:
type: string
format: string
example: "Land lord"
description: "This is the name of the object."
difference:
type: string
format: string
example: "-123.45"
description: "The total amount transferred between start date and end date, a number defined as a string, for this asset account."
difference_float:
type: number
format: double
example: -123.45
description: "The total amount transferred between start date and end date, a number as a float, for this asset account. May have rounding errors."
in:
type: string
format: string
example: "123.45"
description: "The total amount transferred TO this account between start date and end date, a number defined as a string, for this asset account."
in_float:
type: number
format: double
example: 123.45
description: "The total amount transferred FROM this account between start date and end date, a number as a float, for this asset account. May have rounding errors."
out:
type: string
format: string
example: "123.45"
description: "The total amount transferred FROM this account between start date and end date, a number defined as a string, for this asset account."
out_float:
type: number
format: double
example: 123.45
description: "The total amount transferred TO this account between start date and end date, a number as a float, for this asset account. May have rounding errors."
currency_id:
type: string
format: string
example: "5"
description: "The currency ID of the expenses listed for this account."
currency_code:
type: string
format: string
example: "EUR"
description: "The currency code of the expenses listed for this account."
BasicSummary:
type: object
items:
$ref: '#/components/schemas/BasicSummaryEntry'
BasicSummaryEntry:
type: object
properties:
key:
type: string
format: string
example: "balance-in-EUR"
description: "This is a reference to the type of info shared, not influenced by translations or user preferences. The EUR value is a reference to the currency code. Possibilities are: balance-in-ABC, spent-in-ABC, earned-in-ABC, bills-paid-in-ABC, bills-unpaid-in-ABC, left-to-spend-in-ABC and net-worth-in-ABC."
title:
type: string
format: string
example: "Balance ($)"
description: "A translated title for the information shared."
monetary_value:
type: number
format: double
example: 123.45
description: "The amount as a float."
currency_id:
type: string
format: string
example: "5"
description: "The currency ID of the associated currency."
currency_code:
type: string
format: string
example: "EUR"
currency_symbol:
type: string
format: string
example: "$"
currency_decimal_places:
type: integer
format: int32
example: 2
description: "Number of decimals for the associated currency."
value_parsed:
type: string
format: string
example: "$ 12.45"
description: "The amount formatted according to the users locale"
local_icon:
type: string
format: string
example: "balance-scale"
description: "Reference to a font-awesome icon without the fa- part."
sub_title:
type: string
format: string
example: "$20 + $-40"
description: "A short explanation of the amounts origin. Already formatted according to the locale of the user or translated, if relevant."
Configuration:
type: object
required:
- title
- value
- editable
properties:
title:
example: "configuration.is_demo_site"
description: "Title of the configuration value."
$ref: '#/components/schemas/ConfigValueFilter'
value:
$ref: '#/components/schemas/PolymorphicProperty'
example: "some-variable"
description: "Content of the configuration variable. Is very dynamic and can be anything from booleans to arrays."
editable:
type: boolean
format: boolean
example: true
readOnly: false
description: "If this config variable can be edited by the user"
ConfigurationUpdate:
type: object
required:
- value
properties:
value:
$ref: '#/components/schemas/PolymorphicProperty'
example: "Some-new-config var"
description: Can be a number, a string, boolean or object. This depends on the actual configuration value.
CronResult:
type: object
properties:
recurring_transactions:
$ref: '#/components/schemas/CronResultRow'
auto_budgets:
$ref: '#/components/schemas/CronResultRow'
telemetry:
$ref: '#/components/schemas/CronResultRow'
CronResultRow:
type: object
properties:
job_fired:
type: boolean
format: boolean
example: true
nullable: true
description: |
This value tells you if this specific cron job actually fired. It may not fire. Some cron jobs
only fire every 24 hours, for example.
job_succeeded:
type: boolean
format: boolean
example: true
nullable: true
description: |
This value tells you if this specific cron job actually did something. The job may fire but not
change anything.
job_errored:
type: boolean
format: boolean
example: false
nullable: true
description: If the cron job ran into some kind of an error, this value will be true.
message:
type: string
format: string
example: "Cron result message"
nullable: true
description: |
If the cron job ran into some kind of an error, this value will be the error message. The success message
if the job actually ran OK.
SystemInfo:
type: object
required:
- data
properties:
data:
required:
- version
- api_version
- php_version
- os
- driver
properties:
version:
type: string
format: semver
example: 4.8.0
api_version:
type: string
format: semver
example: '0.10.0'
php_version:
type: string
format: semver
example: "7.2"
os:
type: string
format: string
example: Linux vagrant-ubuntu-trusty-64
driver:
type: string
format: string
example: mysql
type: object
UserSingle:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/UserRead'
Account:
type: object
required:
- name
- type
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
active:
type: boolean
format: boolean
example: false
description: "If omitted, defaults to true."
order:
type: integer
format: int32
example: 1
nullable: true
description: "Order of the account. Is NULL if account is not asset or liability."
name:
type: string
format: string
example: "My checking account"
type:
$ref: '#/components/schemas/ShortAccountTypeProperty'
account_role:
$ref: '#/components/schemas/AccountRoleProperty'
currency_id:
type: string
format: string
example: "12"
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
currency_code:
type: string
format: string
example: "EUR"
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
currency_symbol:
type: string
format: string
example: "$"
readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
current_balance:
type: string
format: amount
example: "123.45"
readOnly: true
current_balance_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
iban:
type: string
format: iban
example: "GB98MIDL07009312345678"
nullable: true
bic:
type: string
format: string
example: "BOFAUS3N"
nullable: true
account_number:
type: string
format: string
nullable: true
example: "7009312345678"
opening_balance:
type: string
format: amount
example: "-1012.12"
description: Represents the opening balance, the initial amount this account holds.
current_debt:
type: string
format: amount
example: "1012.12"
description: Represents the current debt for liabilities.
opening_balance_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
nullable: true
description: Represents the date of the opening balance.
virtual_balance:
type: string
format: amount
example: "123.45"
include_net_worth:
type: boolean
format: boolean
example: true
description: "If omitted, defaults to true."
credit_card_type:
$ref: '#/components/schemas/CreditCardType'
monthly_payment_date:
nullable: true
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "Mandatory when the account_role is ccAsset. Moment at which CC payment installments are asked for by the bank."
liability_type:
$ref: '#/components/schemas/LiabilityType'
liability_direction:
$ref: '#/components/schemas/LiabilityDirection'
interest:
type: string
format: string
example: "5.3"
description: "Mandatory when type is liability. Interest percentage."
nullable: true
interest_period:
$ref: '#/components/schemas/LiabilityDirection'
notes:
type: string
format: string
nullable: true
example: "Some example notes"
latitude:
type: number
format: double
example: 51.983333
nullable: true
description: Latitude of the accounts's location, if applicable. Can be used to draw a map.
longitude:
type: number
format: double
example: 5.916667
nullable: true
description: Latitude of the accounts's location, if applicable. Can be used to draw a map.
zoom_level:
type: integer
format: int32
example: 6
nullable: true
description: "Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels."
AccountStore:
type: object
required:
- name
- type
properties:
name:
type: string
format: string
example: "My checking account"
type:
$ref: '#/components/schemas/ShortAccountTypeProperty'
iban:
type: string
format: iban
example: "GB98MIDL07009312345678"
nullable: true
bic:
type: string
format: string
example: "BOFAUS3N"
nullable: true
account_number:
type: string
format: string
nullable: true
example: "7009312345678"
opening_balance:
type: string
format: amount
example: "-1012.12"
description: Represents the opening balance, the initial amount this account holds.
opening_balance_date:
type: string
format: date
example: "2018-09-17"
nullable: true
description: Represents the date of the opening balance.
virtual_balance:
type: string
format: amount
example: "123.45"
currency_id:
type: string
format: string
example: "12"
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
currency_code:
type: string
format: string
example: "EUR"
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
active:
type: boolean
format: boolean
example: false
description: "If omitted, defaults to true."
order:
type: integer
format: int32
example: 1
description: "Order of the account"
include_net_worth:
type: boolean
format: boolean
example: true
description: "If omitted, defaults to true."
account_role:
$ref: '#/components/schemas/AccountRoleProperty'
credit_card_type:
$ref: '#/components/schemas/CreditCardType'
monthly_payment_date:
nullable: true
type: string
format: date
example: "2018-09-17"
description: "Mandatory when the account_role is ccAsset. Moment at which CC payment installments are asked for by the bank."
liability_type:
$ref: '#/components/schemas/LiabilityType'
liability_direction:
$ref: '#/components/schemas/LiabilityDirection'
interest:
type: string
format: string
example: "5.3"
default: "0"
description: "Mandatory when type is liability. Interest percentage."
nullable: true
interest_period:
$ref: '#/components/schemas/InterestPeriod'
notes:
type: string
format: string
nullable: true
example: "Some example notes"
latitude:
type: number
format: double
example: 51.983333
nullable: true
description: Latitude of the accounts's location, if applicable. Can be used to draw a map.
longitude:
type: number
format: double
example: 5.916667
nullable: true
description: Latitude of the accounts's location, if applicable. Can be used to draw a map.
zoom_level:
type: integer
format: int32
example: 6
nullable: true
description: "Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels."
AccountUpdate:
type: object
required:
- name
- type
properties:
name:
type: string
format: string
example: "My checking account"
iban:
type: string
format: iban
example: "GB98MIDL07009312345678"
nullable: true
bic:
type: string
format: string
example: "BOFAUS3N"
nullable: true
account_number:
type: string
format: string
nullable: true
example: "7009312345678"
opening_balance:
type: string
format: amount
example: "-1012.12"
opening_balance_date:
type: string
format: date
example: "2018-09-17"
nullable: true
virtual_balance:
type: string
format: amount
example: "123.45"
currency_id:
type: string
format: string
example: "12"
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
currency_code:
type: string
format: string
example: "EUR"
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
active:
type: boolean
format: boolean
example: false
description: "If omitted, defaults to true."
order:
type: integer
format: int32
example: 1
description: "Order of the account"
include_net_worth:
type: boolean
format: boolean
example: true
description: "If omitted, defaults to true."
account_role:
$ref: '#/components/schemas/AccountRoleProperty'
credit_card_type:
$ref: '#/components/schemas/CreditCardType'
monthly_payment_date:
nullable: true
type: string
format: date
example: "2018-09-17"
description: "Mandatory when the account_role is ccAsset. Moment at which CC payment installments are asked for by the bank."
liability_type:
$ref: '#/components/schemas/LiabilityType'
interest:
type: string
format: string
example: "5.3"
description: "Mandatory when type is liability. Interest percentage."
nullable: true
interest_period:
$ref: '#/components/schemas/InterestPeriod'
notes:
type: string
format: string
nullable: true
example: "Some example notes"
latitude:
type: number
format: double
example: 51.983333
nullable: true
description: Latitude of the account's location, if applicable. Can be used to draw a map. If omitted, the existing location will be kept. If submitted as NULL, the current location will be removed.
longitude:
type: number
format: double
example: 5.916667
nullable: true
description: Latitude of the account's location, if applicable. Can be used to draw a map. If omitted, the existing location will be kept. If submitted as NULL, the current location will be removed.
zoom_level:
type: integer
format: int32
example: 6
nullable: true
description: Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels. If omitted, the existing location will be kept. If submitted as NULL, the current location will be removed.
Attachment:
type: object
required:
- filename
- attachable_type
- attachable_id
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
attachable_type:
$ref: '#/components/schemas/AttachableType'
attachable_id:
type: string
format: string
example: "134"
description: ID of the model this attachment is linked to.
md5:
type: string
format: string
example: "0c3f95f34370baa88f9fd9a671fea305"
description: MD5 hash of the file for basic duplicate detection.
filename:
type: string
format: string
example: "file.pdf"
download_url:
type: string
format: string
example: "https://demo.firefly-iii.org/api/v1/attachments/191/download"
upload_url:
type: string
format: string
example: "https://demo.firefly-iii.org/api/v1/attachments/191/download"
title:
type: string
format: string
example: "Some PDF file"
notes:
type: string
format: string
example: "Some notes"
nullable: true
mime:
type: string
format: string
example: "application/pdf"
readOnly: true
size:
type: integer
format: int32
example: 48211
readOnly: true
AttachmentStore:
type: object
required:
- filename
- attachable_type
- attachable_id
properties:
filename:
type: string
format: string
example: "file.pdf"
attachable_type:
$ref: '#/components/schemas/AttachableType'
attachable_id:
type: string
format: string
example: "134"
description: ID of the model this attachment is linked to.
title:
type: string
format: string
example: "Some PDF file"
notes:
type: string
format: string
example: "Some notes"
nullable: true
AttachmentUpdate:
type: object
properties:
filename:
type: string
format: string
example: "file.pdf"
title:
type: string
format: string
example: "Some PDF file"
notes:
type: string
format: string
example: "Some notes"
nullable: true
AvailableBudget:
type: object
required:
- amount
- start
- end
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
currency_id:
type: string
format: string
example: "5"
description: Use either currency_id or currency_code.
currency_code:
type: string
format: string
example: EUR
description: Use either currency_id or currency_code.
currency_symbol:
type: string
format: string
example: "$"
readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
amount:
type: string
format: amount
example: "123.45"
start:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: Start date of the available budget.
end:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: End date of the available budget.
spent_in_budgets:
type: array
items:
$ref: '#/components/schemas/BudgetSpent'
readOnly: true
spent_outside_budget:
type: array
items:
$ref: '#/components/schemas/BudgetSpent'
readOnly: true
AvailableBudgetStore:
type: object
required:
- amount
- start
- end
properties:
currency_id:
type: string
format: string
example: "5"
description: Use either currency_id or currency_code.
currency_code:
type: string
format: string
example: EUR
description: Use either currency_id or currency_code.
amount:
type: string
format: amount
example: "123.45"
start:
type: string
format: date
example: "2017-09-17"
description: Start date of the available budget.
end:
type: string
format: date
example: "2017-09-17"
description: End date of the available budget.
AvailableBudgetUpdate:
type: object
properties:
currency_id:
type: string
format: string
example: "5"
description: Use either currency_id or currency_code.
currency_code:
type: string
format: string
example: EUR
description: Use either currency_id or currency_code.
amount:
type: string
format: amount
example: "123.45"
start:
type: string
format: date
example: "2017-09-17"
description: Start date of the available budget.
end:
type: string
format: date
example: "2017-09-17"
description: End date of the available budget.
Bill:
type: object
required:
- name
- amount_min
- amount_max
- date
- repeat_freq
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
currency_id:
type: string
format: string
example: "5"
description: Use either currency_id or currency_code
currency_code:
type: string
format: string
example: EUR
description: Use either currency_id or currency_code
currency_symbol:
type: string
format: string
example: "$"
readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
name:
type: string
format: string
example: "Rent"
amount_min:
type: string
format: amount
example: "123.45"
amount_max:
type: string
format: amount
example: "123.45"
date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
end_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "The date after which this bill is no longer valid or applicable"
extension_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "The date before which the bill must be renewed (or cancelled)"
repeat_freq:
$ref: '#/components/schemas/BillRepeatFrequency'
skip:
type: integer
format: int32
example: 0
description: How often the bill must be skipped. 1 means a bi-monthly bill.
active:
type: boolean
format: boolean
example: true
description: If the bill is active.
order:
type: integer
format: int32
example: 1
description: "Order of the bill."
notes:
type: string
format: string
example: "Some example notes"
nullable: true
next_expected_match:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "When the bill is expected to be due."
nullable: true
readOnly: true
next_expected_match_diff:
type: string
format: string
example: "today"
description: "Formatted (locally) when the bill is due."
nullable: true
readOnly: true
object_group_id:
type: string
format: string
example: "5"
nullable: true
description: The group ID of the group this object is part of. NULL if no group.
object_group_order:
type: integer
format: int32
example: 5
nullable: true
readOnly: true
description: The order of the group. At least 1, for the highest sorting.
object_group_title:
type: string
format: string
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
pay_dates:
type: array
description: "Array of future dates when the bill is expected to be paid. Autogenerated."
readOnly: true
items:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
paid_dates:
type: array
description: "Array of past transactions when the bill was paid."
readOnly: true
items:
type: object
readOnly: true
properties:
transaction_group_id:
type: string
format: string
example: "123"
description: "Transaction group ID of the paid bill."
readOnly: true
transaction_journal_id:
type: string
format: string
example: "123"
description: "Transaction journal ID of the paid bill."
readOnly: true
date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "Date the bill was paid."
readOnly: true
BillStore:
type: object
required:
- name
- amount_min
- amount_max
- date
- repeat_freq
properties:
currency_id:
type: string
format: string
example: "5"
description: Use either currency_id or currency_code
currency_code:
type: string
format: string
example: EUR
description: Use either currency_id or currency_code
name:
type: string
format: string
example: "Rent"
amount_min:
type: string
format: amount
example: "123.45"
amount_max:
type: string
format: amount
example: "123.45"
date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
end_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "The date after which this bill is no longer valid or applicable"
extension_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "The date before which the bill must be renewed (or cancelled)"
repeat_freq:
$ref: '#/components/schemas/BillRepeatFrequency'
skip:
type: integer
format: int32
example: 0
description: How often the bill must be skipped. 1 means a bi-monthly bill.
active:
type: boolean
format: boolean
example: true
description: If the bill is active.
notes:
type: string
format: string
example: "Some example notes"
nullable: true
object_group_id:
type: string
format: string
example: "5"
nullable: true
description: The group ID of the group this object is part of. NULL if no group.
object_group_title:
type: string
format: string
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
BillUpdate:
type: object
properties:
currency_id:
type: string
format: string
example: "5"
description: Use either currency_id or currency_code
currency_code:
type: string
format: string
example: EUR
description: Use either currency_id or currency_code
name:
type: string
format: string
example: "Rent"
amount_min:
type: string
format: amount
example: "123.45"
amount_max:
type: string
format: amount
example: "123.45"
date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
end_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "The date after which this bill is no longer valid or applicable"
extension_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "The date before which the bill must be renewed (or cancelled)"
repeat_freq:
$ref: '#/components/schemas/BillRepeatFrequency'
skip:
type: integer
format: int32
example: 0
description: How often the bill must be skipped. 1 means a bi-monthly bill.
active:
type: boolean
format: boolean
example: true
description: If the bill is active.
notes:
type: string
format: string
example: "Some example notes"
nullable: true
object_group_id:
type: string
format: string
example: "5"
nullable: true
description: The group ID of the group this object is part of. NULL if no group.
object_group_title:
type: string
format: string
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
Budget:
type: object
required:
- name
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
name:
type: string
format: string
example: "Bills"
active:
type: boolean
format: boolean
example: false
order:
type: integer
format: int32
example: 5
readOnly: true
auto_budget_type:
$ref: '#/components/schemas/AutoBudgetType'
auto_budget_currency_id:
type: string
format: string
example: "12"
nullable: true
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
auto_budget_currency_code:
type: string
format: string
example: "EUR"
nullable: true
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
auto_budget_amount:
type: string
format: amount
example: "-1012.12"
nullable: true
auto_budget_period:
$ref: '#/components/schemas/AutoBudgetPeriod'
spent:
description: "Information on how much was spent in this budget. Is only filled in when the start and end date are submitted."
type: array
readOnly: true
items:
$ref: '#/components/schemas/BudgetSpent'
BudgetStore:
type: object
required:
- name
properties:
name:
type: string
format: string
example: "Bills"
active:
type: boolean
format: boolean
example: false
order:
type: integer
format: int32
example: 5
readOnly: true
auto_budget_type:
$ref: '#/components/schemas/AutoBudgetType'
auto_budget_currency_id:
type: string
format: string
example: "12"
nullable: true
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
auto_budget_currency_code:
type: string
format: string
example: "EUR"
nullable: true
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
auto_budget_amount:
type: string
format: amount
example: "-1012.12"
nullable: true
auto_budget_period:
$ref: '#/components/schemas/AutoBudgetPeriod'
BudgetUpdate:
type: object
properties:
name:
type: string
format: string
example: "Bills"
active:
type: boolean
format: boolean
example: false
order:
type: integer
format: int32
example: 5
auto_budget_type:
$ref: '#/components/schemas/AutoBudgetType'
auto_budget_currency_id:
type: string
format: string
example: "12"
nullable: true
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
auto_budget_currency_code:
type: string
format: string
example: "EUR"
nullable: true
description: "Use either currency_id or currency_code. Defaults to the user's default currency."
auto_budget_amount:
type: string
format: amount
example: "-1012.12"
nullable: true
auto_budget_period:
$ref: '#/components/schemas/AutoBudgetPeriod'
BudgetLimit:
type: object
required:
- amount
- start
- end
- budget_id
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
start:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: Start date of the budget limit.
end:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: End date of the budget limit.
currency_id:
type: string
format: string
example: "5"
description: Use either currency_id or currency_code. Defaults to the user's default currency.
currency_code:
type: string
format: string
example: EUR
description: Use either currency_id or currency_code. Defaults to the user's default currency.
currency_name:
type: string
format: string
example: "Euro"
readOnly: true
currency_symbol:
type: string
format: string
example: "$"
readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
budget_id:
type: string
format: string
example: "23"
description: The budget ID of the associated budget.
readOnly: true
period:
type: string
format: string
example: "monthly"
nullable: true
readOnly: true
description: Period of the budget limit. Only used when auto-generated by auto-budget.
amount:
type: string
format: amount
example: "123.45"
spent:
type: string
format: amount
example: "-1012.12"
nullable: true
readOnly: true
BudgetLimitStore:
type: object
required:
- amount
- start
- end
- budget_id
properties:
currency_id:
type: string
format: string
example: "5"
description: Use either currency_id or currency_code. Defaults to the user's default currency.
currency_code:
type: string
format: string
example: EUR
description: Use either currency_id or currency_code. Defaults to the user's default currency.
budget_id:
type: string
format: string
example: "23"
description: The budget ID of the associated budget.
readOnly: true
start:
type: string
format: date
example: "2017-09-17"
description: Start date of the budget limit.
period:
type: string
format: string
example: "monthly"
nullable: true
readOnly: true
description: Period of the budget limit. Only used when auto-generated by auto-budget.
end:
type: string
format: date
example: "2017-09-17"
description: End date of the budget limit.
amount:
type: string
format: amount
example: "123.45"
BudgetSpent:
type: object
properties:
sum:
type: string
format: amount
example: "123.45"
description: The amount spent.
currency_id:
type: string
format: string
example: "5"
currency_code:
type: string
format: string
example: "USD"
currency_symbol:
type: string
format: string
example: "$"
currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals supported by the currency
Category:
type: object
required:
- name
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
name:
type: string
format: string
example: "Lunch"
notes:
type: string
format: string
nullable: true
example: "Some example notes"
spent:
type: array
readOnly: true
items:
$ref: '#/components/schemas/CategorySpent'
earned:
type: array
readOnly: true
items:
$ref: '#/components/schemas/CategoryEarned'
CategoryStore:
type: object
required:
- name
properties:
name:
type: string
format: string
example: "Lunch"
notes:
type: string
format: string
nullable: true
example: "Some example notes"
CategoryUpdate:
type: object
properties:
name:
type: string
format: string
example: "Lunch"
notes:
type: string
format: string
nullable: true
example: "Some example notes"
CategoryEarned:
type: object
properties:
currency_id:
type: string
format: string
example: "5"
currency_code:
type: string
format: string
example: "USD"
currency_symbol:
type: string
format: string
example: "$"
currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals supported by the currency
sum:
type: string
format: amount
example: "123.45"
description: The amount earned.
CategorySpent:
type: object
properties:
currency_id:
type: string
format: string
example: "5"
currency_code:
type: string
format: string
example: "USD"
currency_symbol:
type: string
format: string
example: "$"
currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals supported by the currency
sum:
type: string
format: amount
example: "-12423.45"
description: The amount spent.
Meta:
type: object
properties:
pagination:
type: object
properties:
total:
type: integer
example: 3
count:
type: integer
example: 20
per_page:
type: integer
example: 100
current_page:
type: integer
example: 1
total_pages:
type: integer
example: 1
ObjectGroup:
type: object
required:
- title
- order
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
title:
type: string
format: string
example: "My object group"
order:
type: integer
format: int32
example: 1
description: "Order of the object group"
ObjectGroupUpdate:
type: object
properties:
title:
type: string
format: string
example: "My object group"
order:
type: integer
format: int32
example: 1
description: "Order of the object group"
ObjectLink:
type: object
properties:
0:
type: object
properties:
rel:
type: string
format: string
example: "self"
uri:
type: string
format: string
example: "/OBJECTS/1"
self:
type: string
format: uri
example: "https://demo.firefly-iii.org/api/v1/OBJECTS/1"
PageLink:
type: object
properties:
self:
type: string
format: uri
example: "https://demo.firefly-iii.org/api/v1/OBJECT?&page=4"
first:
type: string
format: uri
example: "https://demo.firefly-iii.org/api/v1/OBJECT?&page=1"
last:
type: string
format: uri
example: "https://demo.firefly-iii.org/api/v1/OBJECT?&page=12"
PiggyBank:
type: object
required:
- name
- account_id
- target_amount
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
account_id:
type: string
format: string
example: 13
description: The ID of the asset account this piggy bank is connected to.
account_name:
type: string
format: string
example: "Savings account"
description: The name of the asset account this piggy bank is connected to.
readOnly: true
name:
type: string
format: string
example: "New digital camera"
currency_id:
type: string
format: string
example: "5"
readOnly: true
currency_code:
type: string
format: string
example: "USD"
readOnly: true
currency_symbol:
type: string
format: string
example: "$"
readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals supported by the currency
readOnly: true
target_amount:
type: string
format: amount
example: "123.45"
percentage:
type: number
format: float
example: 12.5
readOnly: true
current_amount:
type: string
format: amount
example: "123.45"
left_to_save:
type: string
format: string
example: "700.00"
readOnly: true
save_per_month:
type: string
format: string
example: "12.45"
readOnly: true
start_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: The date you started with this piggy bank.
target_date:
type: string
format: date-time
nullable: true
example: "2018-09-17T12:46:47+01:00"
description: The date you intend to finish saving money.
order:
type: integer
format: int32
example: 5
active:
type: boolean
format: boolean
example: true
readOnly: true
notes:
type: string
format: string
nullable: true
example: "Some notes"
object_group_id:
type: string
format: string
example: "5"
nullable: true
description: The group ID of the group this object is part of. NULL if no group.
object_group_order:
type: integer
format: int32
example: 5
readOnly: true
nullable: true
description: The order of the group. At least 1, for the highest sorting.
object_group_title:
type: string
format: string
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
PiggyBankStore:
type: object
required:
- name
- account_id
- target_amount
properties:
name:
type: string
format: string
example: "New digital camera"
account_id:
type: string
format: string
example: 13
description: The ID of the asset account this piggy bank is connected to.
target_amount:
type: string
format: amount
example: "123.45"
current_amount:
type: string
format: amount
example: "123.45"
start_date:
type: string
format: date
example: "2018-09-17"
description: The date you started with this piggy bank.
target_date:
type: string
format: date
nullable: true
example: "2020-09-17"
description: The date you intend to finish saving money.
order:
type: integer
format: int32
example: 5
active:
type: boolean
format: boolean
example: true
readOnly: true
notes:
type: string
format: string
nullable: true
example: "Some notes"
object_group_id:
type: string
format: string
example: "5"
nullable: true
description: The group ID of the group this object is part of. NULL if no group.
object_group_title:
type: string
format: string
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
PiggyBankUpdate:
type: object
properties:
name:
type: string
format: string
example: "New digital camera"
account_id:
type: string
format: string
example: 13
description: The ID of the asset account this piggy bank is connected to.
currency_id:
type: string
format: string
example: "5"
readOnly: true
currency_code:
type: string
format: string
example: "USD"
readOnly: true
target_amount:
type: string
format: amount
example: "123.45"
current_amount:
type: string
format: amount
example: "123.45"
start_date:
type: string
format: date
example: "2018-09-17"
description: The date you started with this piggy bank.
target_date:
type: string
format: date
nullable: true
example: "2020-09-17"
description: The date you intend to finish saving money.
order:
type: integer
format: int32
example: 5
active:
type: boolean
format: boolean
example: true
readOnly: true
notes:
type: string
format: string
nullable: true
example: "Some notes"
object_group_id:
type: string
format: string
example: "5"
nullable: true
description: The group ID of the group this object is part of. NULL if no group.
object_group_title:
type: string
format: string
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
PiggyBankEvent:
type: object
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
currency_id:
type: string
format: string
example: "5"
currency_code:
type: string
format: string
example: EUR
currency_symbol:
type: string
format: string
example: "$"
currency_decimal_places:
type: integer
format: int32
example: 2
amount:
type: string
format: amount
example: "123.45"
transaction_journal_id:
type: string
format: string
example: "4291"
description: The journal associated with the event.
transaction_group_id:
type: string
format: string
example: "4291"
description: The transaction group associated with the event.
Preference:
type: object
required:
- name
- data
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
name:
type: string
format: string
example: currencyPreference
data:
$ref: '#/components/schemas/PolymorphicProperty'
example: "EUR"
description: "The actual preference content."
PreferenceUpdate:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/PolymorphicProperty'
example: "EUR"
description: "The actual preference content."
Recurrence:
type: object
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
type:
$ref: '#/components/schemas/RecurrenceTransactionType'
title:
type: string
format: string
example: "Rent"
description:
type: string
format: string
example: "Recurring transaction for the monthly rent"
description: Not to be confused with the description of the actual transaction(s) being created.
first_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "First time the recurring transaction will fire. Must be after today."
latest_date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "Last time the recurring transaction has fired."
nullable: true
readOnly: true
repeat_until:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "Date until the recurring transaction can fire. Use either this field or repetitions."
nullable: true
nr_of_repetitions:
type: integer
format: int32
example: 5
description: Max number of created transactions. Use either this field or repeat_until.
nullable: true
apply_rules:
type: boolean
format: boolean
example: true
description: "Whether or not to fire the rules after the creation of a transaction."
active:
type: boolean
format: boolean
example: true
description: If the recurrence is even active.
notes:
type: string
format: string
example: "Some notes"
nullable: true
repetitions:
type: array
items:
$ref: '#/components/schemas/RecurrenceRepetition'
transactions:
type: array
items:
$ref: '#/components/schemas/RecurrenceTransaction'
RecurrenceStore:
type: object
required:
- type
- title
- first_date
- repeat_until
- repetitions
- transactions
properties:
type:
$ref: '#/components/schemas/RecurrenceTransactionType'
title:
type: string
format: string
example: "Rent"
description:
type: string
format: string
example: "Recurring transaction for the monthly rent"
description: Not to be confused with the description of the actual transaction(s) being created.
first_date:
type: string
format: date
example: "2017-09-17"
description: "First time the recurring transaction will fire. Must be after today."
repeat_until:
type: string
format: date
example: "2018-09-17"
description: "Date until the recurring transaction can fire. Use either this field or repetitions."
nullable: true
nr_of_repetitions:
type: integer
format: int32
example: 5
description: Max number of created transactions. Use either this field or repeat_until.
nullable: true
apply_rules:
type: boolean
format: boolean
example: true
description: "Whether or not to fire the rules after the creation of a transaction."
active:
type: boolean
format: boolean
example: true
description: If the recurrence is even active.
notes:
type: string
format: string
example: "Some notes"
nullable: true
repetitions:
type: array
items:
$ref: '#/components/schemas/RecurrenceRepetitionStore'
transactions:
type: array
items:
$ref: '#/components/schemas/RecurrenceTransactionStore'
RecurrenceUpdate:
type: object
properties:
title:
type: string
format: string
example: "Rent"
description:
type: string
format: string
example: "Recurring transaction for the monthly rent"
description: Not to be confused with the description of the actual transaction(s) being created.
first_date:
type: string
format: date
example: "2017-09-17"
description: "First time the recurring transaction will fire."
repeat_until:
type: string
format: date
example: "2018-09-17"
description: Date until the recurring transaction can fire. After that date, it's basically inactive. Use either this field or repetitions.
nullable: true
nr_of_repetitions:
type: integer
format: int32
example: 5
description: Max number of created transactions. Use either this field or repeat_until.
nullable: true
apply_rules:
type: boolean
format: boolean
example: true
description: "Whether or not to fire the rules after the creation of a transaction."
active:
type: boolean
format: boolean
example: true
description: If the recurrence is even active.
notes:
type: string
format: string
example: "Some notes"
nullable: true
repetitions:
type: array
items:
$ref: '#/components/schemas/RecurrenceRepetitionUpdate'
transactions:
type: array
items:
$ref: '#/components/schemas/RecurrenceTransactionUpdate'
RecurrenceRepetition:
type: object
required:
- type
- moment
properties:
id:
type: string
format: string
example: "2"
readOnly: true
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
type:
$ref: '#/components/schemas/RecurrenceRepetitionType'
moment:
type: string
format: string
example: "3"
description: |
Information that defined the type of repetition.
- For 'daily', this is empty.
- For 'weekly', it is day of the week between 1 and 7 (Monday - Sunday).
- For 'ndom', it is '1,2' or '4,5' or something else, where the first number is the week in the month, and the second number is the day in the week (between 1 and 7). '2,3' means: the 2nd Wednesday of the month
- For 'monthly' it is the day of the month (1 - 31)
- For yearly, it is a full date, ie '2018-09-17'. The year you use does not matter.
skip:
type: integer
format: int32
example: 0
description: How many occurrences to skip. 0 means skip nothing. 1 means every other.
weekend:
type: integer
format: int32
example: 1
description: |
How to respond when the recurring transaction falls in the weekend. Possible values:
1. Do nothing, just create it
2. Create no transaction.
3. Skip to the previous Friday.
4. Skip to the next Monday.
description:
type: string
format: string
example: "Every week on Friday"
description: Auto-generated repetition description.
readOnly: true
occurrences:
type: array
description: "Array of future dates when the repetition will apply to. Auto generated."
readOnly: true
items:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
RecurrenceRepetitionStore:
type: object
required:
- type
- moment
properties:
type:
$ref: '#/components/schemas/RecurrenceRepetitionType'
moment:
type: string
format: string
example: "3"
description: |
Information that defined the type of repetition.
- For 'daily', this is empty.
- For 'weekly', it is day of the week between 1 and 7 (Monday - Sunday).
- For 'ndom', it is '1,2' or '4,5' or something else, where the first number is the week in the month, and the second number is the day in the week (between 1 and 7). '2,3' means: the 2nd Wednesday of the month
- For 'monthly' it is the day of the month (1 - 31)
- For yearly, it is a full date, ie '2018-09-17'. The year you use does not matter.
skip:
type: integer
format: int32
example: 0
description: How many occurrences to skip. 0 means skip nothing. 1 means every other.
weekend:
type: integer
format: int32
example: 1
description: |
How to respond when the recurring transaction falls in the weekend. Possible values:
1. Do nothing, just create it
2. Create no transaction.
3. Skip to the previous Friday.
4. Skip to the next Monday.
RecurrenceRepetitionUpdate:
type: object
properties:
type:
$ref: '#/components/schemas/RecurrenceRepetitionType'
moment:
type: string
format: string
example: "3"
description: |
Information that defined the type of repetition.
- For 'daily', this is empty.
- For 'weekly', it is day of the week between 1 and 7 (Monday - Sunday).
- For 'ndom', it is '1,2' or '4,5' or something else, where the first number is the week in the month, and the second number is the day in the week (between 1 and 7). '2,3' means: the 2nd Wednesday of the month
- For 'monthly' it is the day of the month (1 - 31)
- For yearly, it is a full date, ie '2018-09-17'. The year you use does not matter.
skip:
type: integer
format: int32
example: 0
description: How many occurrences to skip. 0 means skip nothing. 1 means every other.
weekend:
type: integer
format: int32
example: 1
description: |
How to respond when the recurring transaction falls in the weekend. Possible values:
1. Do nothing, just create it
2. Create no transaction.
3. Skip to the previous Friday.
4. Skip to the next Monday.
RecurrenceTransaction:
type: object
required:
- description
- amount
properties:
description:
type: string
format: string
example: "Rent for the current month"
amount:
type: string
format: amount
example: "123.45"
description: Amount of the transaction.
foreign_amount:
type: string
format: amount
example: "123.45"
description: Foreign amount of the transaction.
nullable: true
currency_id:
type: string
format: string
example: "3"
description: Submit either a currency_id or a currency_code.
currency_code:
type: string
format: string
example: "EUR"
description: Submit either a currency_id or a currency_code.
currency_symbol:
type: string
format: string
example: "€"
readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals in the currency
readOnly: true
foreign_currency_id:
type: string
format: string
example: "17"
nullable: true
description: Submit either a foreign_currency_id or a foreign_currency_code, or neither.
foreign_currency_code:
type: string
format: string
example: "GBP"
nullable: true
description: Submit either a foreign_currency_id or a foreign_currency_code, or neither.
foreign_currency_symbol:
type: string
format: string
example: "$"
nullable: true
readOnly: true
foreign_currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals in the currency
nullable: true
readOnly: true
budget_id:
type: string
format: string
example: "4"
description: The budget ID for this transaction.
budget_name:
type: string
format: string
example: Groceries
description: The name of the budget to be used. If the budget name is unknown, the ID will be used or the value will be ignored.
nullable: true
readOnly: true
category_id:
type: string
format: string
description: Category ID for this transaction.
example: "211"
category_name:
type: string
format: string
description: Category name for this transaction.
example: "Bills"
source_id:
type: string
format: string
example: "913"
description: ID of the source account. Submit either this or source_name.
source_name:
type: string
format: string
example: "Checking account"
description: Name of the source account. Submit either this or source_id.
source_iban:
type: string
format: string
example: "NL02ABNA0123456789"
nullable: true
readOnly: true
source_type:
$ref: '#/components/schemas/AccountTypeProperty'
destination_id:
type: string
format: string
example: "258"
description: ID of the destination account. Submit either this or destination_name.
destination_name:
type: string
format: string
example: "Buy and Large"
description: Name of the destination account. Submit either this or destination_id.
destination_iban:
type: string
format: string
example: "NL02ABNA0123456789"
nullable: true
readOnly: true
destination_type:
$ref: '#/components/schemas/AccountTypeProperty'
tags:
type: array
nullable: true
example:
description: Array of tags.
items:
type: string
format: string
description: Tag.
example: Barbecue preparation
piggy_bank_id:
type: string
format: string
example: "123"
nullable: true
description: Optional. Use either this or the piggy_bank_name
piggy_bank_name:
type: string
format: string
nullable: true
description: Optional. Use either this or the piggy_bank_id
RecurrenceTransactionStore:
type: object
required:
- description
- amount
- source_id
- destination_id
properties:
description:
type: string
format: string
example: "Rent for the current month"
amount:
type: string
format: amount
example: "123.45"
description: Amount of the transaction.
foreign_amount:
type: string
format: amount
example: "123.45"
description: Foreign amount of the transaction.
nullable: true
currency_id:
type: string
format: string
example: "3"
description: Submit either a currency_id or a currency_code.
currency_code:
type: string
format: string
example: "EUR"
description: Submit either a currency_id or a currency_code.
foreign_currency_id:
type: string
format: string
example: "17"
nullable: true
description: Submit either a foreign_currency_id or a foreign_currency_code, or neither.
foreign_currency_code:
type: string
format: string
example: "GBP"
nullable: true
description: Submit either a foreign_currency_id or a foreign_currency_code, or neither.
budget_id:
type: string
format: string
example: "4"
description: The budget ID for this transaction.
category_id:
type: string
format: string
description: Category ID for this transaction.
example: "211"
source_id:
type: string
format: string
example: "913"
description: ID of the source account.
destination_id:
type: string
format: string
example: "258"
description: ID of the destination account.
tags:
type: array
nullable: true
example:
description: Array of tags.
items:
type: string
format: string
description: Tag.
example: Barbecue preparation
piggy_bank_id:
type: string
format: string
example: "123"
nullable: true
description: Optional.
RecurrenceTransactionUpdate:
type: object
properties:
description:
type: string
format: string
example: "Rent for the current month"
amount:
type: string
format: amount
example: "123.45"
description: Amount of the transaction.
foreign_amount:
type: string
format: amount
example: "123.45"
description: Foreign amount of the transaction.
nullable: true
currency_id:
type: string
format: string
example: "3"
description: Submit either a currency_id or a currency_code.
currency_code:
type: string
format: string
example: "EUR"
description: Submit either a currency_id or a currency_code.
foreign_currency_id:
type: string
format: string
example: "17"
nullable: true
description: Submit either a foreign_currency_id or a foreign_currency_code, or neither.
budget_id:
type: string
format: string
example: "4"
description: The budget ID for this transaction.
category_id:
type: string
format: string
description: Category ID for this transaction.
example: "211"
source_id:
type: string
format: string
example: "913"
description: ID of the source account. Submit either this or source_name.
destination_id:
type: string
format: string
example: "258"
description: ID of the destination account. Submit either this or destination_name.
tags:
type: array
nullable: true
example:
description: Array of tags.
items:
type: string
format: string
description: Tag.
example: Barbecue preparation
piggy_bank_id:
type: string
format: string
example: "123"
nullable: true
Rule:
type: object
required:
- title
- rule_group_id
- trigger
- triggers
- actions
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
title:
type: string
format: string
example: "First rule title."
description:
type: string
format: string
example: "First rule description"
rule_group_id:
type: string
format: string
example: "81"
description: "ID of the rule group under which the rule must be stored. Either this field or rule_group_title is mandatory."
rule_group_title:
type: string
format: string
example: "New rule group"
description: "Title of the rule group under which the rule must be stored. Either this field or rule_group_id is mandatory."
order:
type: integer
format: int32
example: 5
readOnly: true
trigger:
$ref: '#/components/schemas/RuleTriggerType'
active:
type: boolean
format: boolean
example: true
description: Whether or not the rule is even active. Default is true.
strict:
type: boolean
format: boolean
example: true
description: If the rule is set to be strict, ALL triggers must hit in order for the rule to fire. Otherwise, just one is enough. Default value is true.
stop_processing:
type: boolean
format: boolean
example: false
description: If this value is true and the rule is triggered, other rules after this one in the group will be skipped. Default value is false.
triggers:
type: array
items:
$ref: '#/components/schemas/RuleTrigger'
actions:
type: array
items:
$ref: '#/components/schemas/RuleAction'
RuleStore:
type: object
required:
- title
- rule_group_id
- trigger
- triggers
- actions
properties:
title:
type: string
format: string
example: "First rule title."
description:
type: string
format: string
example: "First rule description"
rule_group_id:
type: string
format: string
example: "81"
description: "ID of the rule group under which the rule must be stored. Either this field or rule_group_title is mandatory."
rule_group_title:
type: string
format: string
example: "New rule group"
description: "Title of the rule group under which the rule must be stored. Either this field or rule_group_id is mandatory."
order:
type: integer
format: int32
example: 5
trigger:
$ref: '#/components/schemas/RuleTriggerType'
active:
type: boolean
format: boolean
example: true
description: Whether or not the rule is even active. Default is true.
strict:
type: boolean
format: boolean
example: true
description: If the rule is set to be strict, ALL triggers must hit in order for the rule to fire. Otherwise, just one is enough. Default value is true.
stop_processing:
type: boolean
format: boolean
example: false
description: If this value is true and the rule is triggered, other rules after this one in the group will be skipped. Default value is false.
triggers:
type: array
items:
$ref: '#/components/schemas/RuleTriggerStore'
actions:
type: array
items:
$ref: '#/components/schemas/RuleActionStore'
RuleUpdate:
type: object
properties:
title:
type: string
format: string
example: "First rule title."
description:
type: string
format: string
example: "First rule description"
rule_group_id:
type: string
format: string
example: "81"
description: "ID of the rule group under which the rule must be stored. Either this field or rule_group_title is mandatory."
order:
type: integer
format: int32
example: 5
trigger:
$ref: '#/components/schemas/RuleTriggerType'
active:
type: boolean
format: boolean
example: true
description: Whether or not the rule is even active. Default is true.
strict:
type: boolean
format: boolean
example: true
description: If the rule is set to be strict, ALL triggers must hit in order for the rule to fire. Otherwise, just one is enough. Default value is true.
stop_processing:
type: boolean
format: boolean
example: false
description: If this value is true and the rule is triggered, other rules after this one in the group will be skipped. Default value is false.
triggers:
type: array
items:
$ref: '#/components/schemas/RuleTriggerUpdate'
actions:
type: array
items:
$ref: '#/components/schemas/RuleActionUpdate'
RuleAction:
type: object
required:
- type
- value
properties:
id:
type: string
format: string
example: "2"
readOnly: true
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
type:
$ref: '#/components/schemas/RuleActionKeyword'
value:
type: string
format: string
example: "Daily groceries"
nullable: true
description: "The accompanying value the action will set, change or update. Can be empty, but for some types this value is mandatory."
order:
type: integer
format: int32
example: 5
description: "Order of the action"
active:
type: boolean
format: boolean
example: true
description: If the action is active. Defaults to true.
stop_processing:
type: boolean
format: boolean
example: false
description: When true, other actions will not be fired after this action has fired. Defaults to false.
RuleActionStore:
type: object
required:
- type
- value
properties:
type:
$ref: '#/components/schemas/RuleActionKeyword'
value:
type: string
format: string
example: "Daily groceries"
nullable: true
description: "The accompanying value the action will set, change or update. Can be empty, but for some types this value is mandatory."
order:
type: integer
format: int32
example: 5
description: "Order of the action"
active:
type: boolean
format: boolean
example: true
description: If the action is active. Defaults to true.
stop_processing:
type: boolean
format: boolean
example: false
description: When true, other actions will not be fired after this action has fired. Defaults to false.
RuleActionUpdate:
type: object
properties:
type:
$ref: '#/components/schemas/RuleActionKeyword'
value:
type: string
format: string
example: "Daily groceries"
nullable: true
description: "The accompanying value the action will set, change or update. Can be empty, but for some types this value is mandatory."
order:
type: integer
format: int32
example: 5
description: "Order of the action"
active:
type: boolean
format: boolean
example: true
description: If the action is active.
stop_processing:
type: boolean
format: boolean
example: false
description: When true, other actions will not be fired after this action has fired.
RuleGroup:
type: object
required:
- title
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
title:
type: string
format: string
example: "Default rule group"
description:
type: string
format: string
example: "Description of this rule group"
nullable: true
order:
type: integer
format: int32
example: 4
readOnly: true
active:
type: boolean
format: boolean
example: true
RuleGroupStore:
type: object
required:
- title
properties:
title:
type: string
format: string
example: "Default rule group"
description:
type: string
format: string
example: "Description of this rule group"
nullable: true
order:
type: integer
format: int32
example: 4
active:
type: boolean
format: boolean
example: true
RuleGroupUpdate:
type: object
properties:
title:
type: string
format: string
example: "Default rule group"
description:
type: string
format: string
example: "Description of this rule group"
nullable: true
order:
type: integer
format: int32
example: 4
active:
type: boolean
format: boolean
example: true
RuleTrigger:
type: object
required:
- type
- value
properties:
id:
type: string
format: string
example: "2"
readOnly: true
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
type:
$ref: '#/components/schemas/RuleTriggerKeyword'
value:
type: string
format: string
example: "tag1"
description: "The accompanying value the trigger responds to. This value is often mandatory, but this depends on the trigger."
order:
type: integer
format: int32
example: 5
description: "Order of the trigger"
readOnly: true
active:
type: boolean
format: boolean
example: true
description: If the trigger is active. Defaults to true.
stop_processing:
type: boolean
format: boolean
example: false
description: When true, other triggers will not be checked if this trigger was triggered. Defaults to false.
RuleTriggerStore:
type: object
required:
- type
- value
properties:
type:
$ref: '#/components/schemas/RuleTriggerKeyword'
value:
type: string
format: string
example: "tag1"
description: "The accompanying value the trigger responds to. This value is often mandatory, but this depends on the trigger."
order:
type: integer
format: int32
example: 5
description: "Order of the trigger"
active:
type: boolean
format: boolean
example: true
description: If the trigger is active. Defaults to true.
stop_processing:
type: boolean
format: boolean
example: false
description: When true, other triggers will not be checked if this trigger was triggered. Defaults to false.
RuleTriggerUpdate:
type: object
properties:
type:
$ref: '#/components/schemas/RuleTriggerKeyword'
value:
type: string
format: string
example: "tag1"
description: "The accompanying value the trigger responds to. This value is often mandatory, but this depends on the trigger."
order:
type: integer
format: int32
example: 5
description: "Order of the trigger"
active:
type: boolean
format: boolean
example: true
description: If the trigger is active.
stop_processing:
type: boolean
format: boolean
example: false
description: When true, other triggers will not be checked if this trigger was triggered.
TagModel:
title: A single tag
type: object
required:
- tag
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
tag:
type: string
format: string
example: "expensive"
description: The tag
date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: The date to which the tag is applicable.
nullable: true
description:
type: string
format: string
example: "Tag for expensive stuff"
nullable: true
latitude:
type: number
format: double
example: 51.983333
nullable: true
description: Latitude of the tag's location, if applicable. Can be used to draw a map.
longitude:
type: number
format: double
example: 5.916667
nullable: true
description: Latitude of the tag's location, if applicable. Can be used to draw a map.
zoom_level:
type: integer
format: int32
example: 6
nullable: true
description: "Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels."
TagModelStore:
title: A single tag
type: object
required:
- tag
properties:
tag:
type: string
format: string
example: "expensive"
description: The tag
date:
type: string
format: date
example: "2018-09-17"
description: The date to which the tag is applicable.
nullable: true
description:
type: string
format: string
example: "Tag for expensive stuff"
nullable: true
latitude:
type: number
format: double
example: 51.983333
nullable: true
description: Latitude of the tag's location, if applicable. Can be used to draw a map.
longitude:
type: number
format: double
example: 5.916667
nullable: true
description: Latitude of the tag's location, if applicable. Can be used to draw a map.
zoom_level:
type: integer
format: int32
example: 6
nullable: true
description: "Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels."
TagModelUpdate:
title: A single tag
type: object
properties:
tag:
type: string
format: string
example: "expensive"
description: The tag
date:
type: string
format: date
example: "2018-09-17"
description: The date to which the tag is applicable.
nullable: true
description:
type: string
format: string
example: "Tag for expensive stuff"
nullable: true
latitude:
type: number
format: double
example: 51.983333
nullable: true
description: Latitude of the tag's location, if applicable. Can be used to draw a map.
longitude:
type: number
format: double
example: 5.916667
nullable: true
description: Latitude of the tag's location, if applicable. Can be used to draw a map.
zoom_level:
type: integer
format: int32
example: 6
nullable: true
description: "Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels."
Currency:
type: object
required:
- code
- name
- symbol
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
enabled:
type: boolean
format: boolean
example: true
description: Defaults to true
default:
type: boolean
format: boolean
example: false
description: Make this currency the default currency.
code:
type: string
format: string
example: AMS
name:
type: string
format: string
example: Ankh-Morpork dollar
symbol:
type: string
format: string
example: "AM$"
decimal_places:
type: integer
format: int32
example: 2
description: Supports 0-16 decimals.
CurrencyStore:
type: object
required:
- code
- name
- symbol
properties:
enabled:
type: boolean
format: boolean
example: true
description: Defaults to true
default:
type: boolean
format: boolean
example: false
description: Make this currency the default currency.
code:
type: string
format: string
example: AMS
name:
type: string
format: string
example: Ankh-Morpork dollar
symbol:
type: string
format: string
example: "AM$"
decimal_places:
type: integer
format: int32
example: 2
description: Supports 0-16 decimals.
CurrencyUpdate:
type: object
properties:
enabled:
type: boolean
format: boolean
example: true
description: "If the currency is enabled"
default:
type: boolean
format: boolean
example: true
description: "If the currency must be the default for the user. You can only submit TRUE."
enum:
- true
code:
type: string
format: string
example: AMS
description: "The currency code"
name:
type: string
format: string
example: Ankh-Morpork dollar
description: "The currency name"
symbol:
type: string
format: string
example: "AM$"
description: "The currency symbol"
decimal_places:
type: integer
format: int32
example: 2
description: "How many decimals to use when displaying this currency. Between 0 and 16."
Transaction:
type: object
required:
- transactions
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
user:
type: string
format: string
example: "3"
description: "User ID"
readOnly: true
group_title:
type: string
format: string
description: "Title of the transaction if it has been split in more than one piece. Empty otherwise."
example: "Split transaction title."
readOnly: false
nullable: true
transactions:
type: array
items:
$ref: '#/components/schemas/TransactionSplit'
TransactionStore:
type: object
required:
- transactions
properties:
error_if_duplicate_hash:
type: boolean
format: boolean
example: false
description: "Break if the submitted transaction exists already."
apply_rules:
type: boolean
format: boolean
example: false
description: "Whether or not to apply rules when submitting transaction."
fire_webhooks:
type: boolean
format: boolean
example: true
default: true
description: "Whether or not to fire the webhooks that are related to this event."
group_title:
type: string
format: string
description: "Title of the transaction if it has been split in more than one piece. Empty otherwise."
example: "Split transaction title."
nullable: true
transactions:
type: array
items:
$ref: '#/components/schemas/TransactionSplitStore'
TransactionUpdate:
type: object
properties:
apply_rules:
type: boolean
format: boolean
example: false
description: "Whether or not to apply rules when submitting transaction."
fire_webhooks:
type: boolean
format: boolean
example: true
default: true
description: "Whether or not to fire the webhooks that are related to this event."
group_title:
type: string
format: string
description: "Title of the transaction if it has been split in more than one piece. Empty otherwise."
example: "Split transaction title."
nullable: true
transactions:
type: array
items:
$ref: '#/components/schemas/TransactionSplitUpdate'
TransactionLink:
type: object
required:
- link_type_id
- inward_id
- outward_id
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
link_type_id:
type: string
format: string
example: "5"
description: The link type ID to use. You can also use the link_type_name field.
writeOnly: true
link_type_name:
type: string
format: string
example: "Is paid by"
description: The link type name to use. You can also use the link_type_id field.
writeOnly: true
inward_id:
type: string
format: string
example: "131"
description: "The inward transaction transaction_journal_id for the link. This becomes the 'is paid by' transaction of the set."
outward_id:
type: string
format: string
example: "131"
description: "The outward transaction transaction_journal_id for the link. This becomes the 'pays for' transaction of the set."
notes:
type: string
format: string
example: "Some example notes"
nullable: true
description: Optional. Some notes.
TransactionLinkStore:
type: object
required:
- link_type_id
- inward_id
- outward_id
properties:
link_type_id:
type: string
format: string
example: "5"
description: The link type ID to use. You can also use the link_type_name field.
writeOnly: true
link_type_name:
type: string
format: string
example: "Is paid by"
description: The link type name to use. You can also use the link_type_id field.
writeOnly: true
inward_id:
type: string
format: string
example: "131"
description: "The inward transaction transaction_journal_id for the link. This becomes the 'is paid by' transaction of the set."
outward_id:
type: string
format: string
example: "131"
description: "The outward transaction transaction_journal_id for the link. This becomes the 'pays for' transaction of the set."
notes:
type: string
format: string
example: "Some example notes"
nullable: true
description: Optional. Some notes.
TransactionLinkUpdate:
type: object
properties:
link_type_id:
type: string
format: string
example: "5"
description: The link type ID to use. Use this field OR use the link_type_name field.
writeOnly: true
link_type_name:
type: string
format: string
example: "Is paid by"
description: The link type name to use. Use this field OR use the link_type_id field.
writeOnly: true
inward_id:
type: string
format: string
example: "131"
description: "The inward transaction transaction_journal_id for the link. This becomes the 'is paid by' transaction of the set."
outward_id:
type: string
format: string
example: "131"
description: "The outward transaction transaction_journal_id for the link. This becomes the 'pays for' transaction of the set."
notes:
type: string
format: string
example: "Some example notes"
nullable: true
description: "Optional. Some notes. If you submit an empty string the current notes will be removed"
LinkType:
type: object
required:
- name
- inward
- outward
properties:
name:
type: string
format: string
example: "Paid"
inward:
type: string
format: string
example: "is (partially) paid for by"
outward:
type: string
format: string
example: "(partially) pays for"
editable:
type: boolean
format: boolean
example: false
readOnly: true
LinkTypeStore:
type: object
required:
- name
- inward
- outward
properties:
name:
type: string
format: string
example: "Paid"
inward:
type: string
format: string
example: "is (partially) paid for by"
outward:
type: string
format: string
example: "(partially) pays for"
LinkTypeUpdate:
type: object
properties:
name:
type: string
format: string
example: "Paid"
inward:
type: string
format: string
example: "is (partially) paid for by"
outward:
type: string
format: string
example: "(partially) pays for"
TransactionSplit:
type: object
required:
- amount
- source_id
- destination_id
- date
- description
- type
properties:
user:
type: string
format: string
example: "3"
description: "User ID"
readOnly: true
transaction_journal_id:
type: string
format: string
example: "10421"
description: |
ID of the underlying transaction journal. Each transaction consists of a transaction group (see the top ID) and one or more journals
making up the splits of the transaction.
readOnly: true
type:
$ref: '#/components/schemas/TransactionTypeProperty'
date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "Date of the transaction"
order:
type: integer
format: int32
example: 0
nullable: true
description: "Order of this entry in the list of transactions."
currency_id:
type: string
format: string
example: "12"
nullable: true
description: Currency ID. Default is the source account's currency, or the user's default currency. Can be used instead of currency_code.
currency_code:
type: string
format: string
example: EUR
nullable: true
description: Currency code. Default is the source account's currency, or the user's default currency. Can be used instead of currency_id.
currency_symbol:
type: string
format: string
example: "$"
readOnly: true
currency_name:
type: string
format: string
example: "Euro"
readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals used in this currency.
readOnly: true
foreign_currency_id:
type: string
format: string
example: "17"
nullable: true
description: Currency ID of the foreign currency. Default is null. Is required when you submit a foreign amount.
foreign_currency_code:
type: string
format: string
example: USD
description: Currency code of the foreign currency. Default is NULL. Can be used instead of the foreign_currency_id, but this or the ID is required when submitting a foreign amount.
nullable: true
foreign_currency_symbol:
type: string
format: string
example: "$"
nullable: true
readOnly: true
foreign_currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals in the currency
nullable: true
readOnly: true
amount:
type: string
format: amount
example: "123.45"
description: "Amount of the transaction."
foreign_amount:
type: string
format: amount
example: "123.45"
nullable: true
description: The amount in a foreign currency.
description:
type: string
format: string
example: "Vegetables"
description: "Description of the transaction."
source_id:
type: string
format: string
example: "2"
nullable: true
description: "ID of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account."
source_name:
type: string
format: string
example: "Checking account"
nullable: true
description: "Name of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account. Can be used instead of the source_id. If the transaction is a deposit, the source_name can be filled in freely: the account will be created based on the name."
source_iban:
type: string
format: string
example: "NL02ABNA0123456789"
nullable: true
readOnly: true
source_type:
$ref: '#/components/schemas/AccountTypeProperty'
destination_id:
type: string
format: string
example: "2"
nullable: true
description: "ID of the destination account. For a deposit or a transfer, this must always be an asset account. For withdrawals this must be an expense account."
destination_name:
type: string
format: string
example: "Buy and Large"
nullable: true
description: "Name of the destination account. You can submit the name instead of the ID. For everything except transfers, the account will be auto-generated if unknown, so submitting a name is enough."
destination_iban:
type: string
format: string
example: "NL02ABNA0123456789"
nullable: true
readOnly: true
destination_type:
$ref: '#/components/schemas/AccountTypeProperty'
budget_id:
type: string
format: string
nullable: true
example: "4"
description: The budget ID for this transaction.
budget_name:
type: string
format: string
example: Groceries
description: The name of the budget to be used. If the budget name is unknown, the ID will be used or the value will be ignored.
nullable: true
readOnly: true
category_id:
type: string
format: string
nullable: true
example: "43"
description: The category ID for this transaction.
category_name:
type: string
format: string
example: Groceries
nullable: true
description: "The name of the category to be used. If the category is unknown, it will be created. If the ID and the name point to different categories, the ID overrules the name."
bill_id:
type: string
format: string
nullable: true
example: "111"
description: Optional. Use either this or the bill_name
bill_name:
type: string
format: string
example: "Monthly rent"
nullable: true
description: Optional. Use either this or the bill_id
reconciled:
type: boolean
format: boolean
example: false
description: "If the transaction has been reconciled already. When you set this, the amount can no longer be edited by the user."
notes:
type: string
format: string
example: "Some example notes"
nullable: true
tags:
type: array
nullable: true
example:
description: Array of tags.
items:
type: string
format: string
description: Tag.
example: Barbecue preparation
internal_reference:
type: string
format: string
nullable: true
description: Reference to internal reference of other systems.
external_id:
type: string
nullable: true
format: string
description: Reference to external ID in other systems.
external_url:
type: string
format: string
nullable: true
description: External, custom URL for this transaction.
original_source:
type: string
nullable: true
format: string
description: System generated identifier for original creator of transaction.
readOnly: true
recurrence_id:
type: integer
nullable: true
format: int32
description: Reference to recurrence that made the transaction.
readOnly: true
recurrence_total:
type: integer
format: int32
example: 0
description: "Total number of transactions expected to be created by this recurrence repetition. Will be 0 if infinite."
readOnly: true
nullable: true
recurrence_count:
type: integer
format: int32
example: 12
description: "The # of the current transaction created under this recurrence."
readOnly: true
nullable: true
bunq_payment_id:
type: string
nullable: true
format: string
description: Internal ID of bunq transaction. DEPRECATED
import_hash_v2:
type: string
nullable: true
format: string
description: Hash value of original import transaction (for duplicate detection).
readOnly: true
sepa_cc:
type: string
format: string
nullable: true
description: SEPA Clearing Code
sepa_ct_op:
type: string
format: string
description: SEPA Opposing Account Identifier
nullable: true
sepa_ct_id:
type: string
format: string
nullable: true
description: SEPA end-to-end Identifier
sepa_db:
type: string
format: string
nullable: true
description: SEPA mandate identifier
sepa_country:
type: string
nullable: true
format: string
description: SEPA Country
sepa_ep:
type: string
nullable: true
format: string
description: SEPA External Purpose indicator
sepa_ci:
type: string
format: string
nullable: true
description: SEPA Creditor Identifier
sepa_batch_id:
type: string
format: string
nullable: true
description: SEPA Batch ID
interest_date:
type: string
format: date-time
nullable: true
book_date:
type: string
format: date-time
nullable: true
process_date:
type: string
format: date-time
nullable: true
due_date:
type: string
format: date-time
nullable: true
payment_date:
type: string
format: date-time
nullable: true
invoice_date:
type: string
format: date-time
nullable: true
latitude:
type: number
format: double
example: 51.983333
nullable: true
description: Latitude of the transaction's location, if applicable. Can be used to draw a map.
longitude:
type: number
format: double
example: 5.916667
nullable: true
description: Latitude of the transaction's location, if applicable. Can be used to draw a map.
zoom_level:
type: integer
format: int32
example: 6
nullable: true
description: "Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels."
has_attachments:
type: boolean
format: boolean
example: false
description: "If the transaction has attachments."
TransactionSplitStore:
type: object
required:
- amount
- date
- description
- type
properties:
type:
$ref: '#/components/schemas/TransactionTypeProperty'
date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "Date of the transaction"
amount:
type: string
format: amount
example: "123.45"
description: "Amount of the transaction."
description:
type: string
format: string
example: "Vegetables"
description: "Description of the transaction."
order:
type: integer
format: int32
example: 0
nullable: true
description: "Order of this entry in the list of transactions."
currency_id:
type: string
format: string
example: "12"
nullable: true
description: Currency ID. Default is the source account's currency, or the user's default currency. The value you submit may be overruled by the source or destination account.
currency_code:
type: string
format: string
example: EUR
nullable: true
description: Currency code. Default is the source account's currency, or the user's default currency. The value you submit may be overruled by the source or destination account.
foreign_amount:
type: string
format: amount
example: "123.45"
nullable: true
description: The amount in a foreign currency.
foreign_currency_id:
type: string
format: string
example: "17"
nullable: true
description: Currency ID of the foreign currency. Default is null. Is required when you submit a foreign amount.
foreign_currency_code:
type: string
format: string
example: USD
description: Currency code of the foreign currency. Default is NULL. Can be used instead of the foreign_currency_id, but this or the ID is required when submitting a foreign amount.
nullable: true
budget_id:
type: string
format: string
nullable: true
example: "4"
description: The budget ID for this transaction.
budget_name:
type: string
format: string
example: Groceries
description: The name of the budget to be used. If the budget name is unknown, the ID will be used or the value will be ignored.
nullable: true
readOnly: true
category_id:
type: string
format: string
nullable: true
example: "43"
description: The category ID for this transaction.
category_name:
type: string
format: string
example: Groceries
nullable: true
description: "The name of the category to be used. If the category is unknown, it will be created. If the ID and the name point to different categories, the ID overrules the name."
source_id:
type: string
format: string
example: "2"
nullable: true
description: "ID of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account."
source_name:
type: string
format: string
example: "Checking account"
nullable: true
description: "Name of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account. Can be used instead of the source_id. If the transaction is a deposit, the source_name can be filled in freely: the account will be created based on the name."
destination_id:
type: string
format: string
example: "2"
nullable: true
description: "ID of the destination account. For a deposit or a transfer, this must always be an asset account. For withdrawals this must be an expense account."
destination_name:
type: string
format: string
example: "Buy and Large"
nullable: true
description: "Name of the destination account. You can submit the name instead of the ID. For everything except transfers, the account will be auto-generated if unknown, so submitting a name is enough."
reconciled:
type: boolean
format: boolean
example: false
description: "If the transaction has been reconciled already. When you set this, the amount can no longer be edited by the user."
piggy_bank_id:
type: integer
format: int32
description: Optional. Use either this or the piggy_bank_name
writeOnly: true
piggy_bank_name:
type: string
format: string
description: Optional. Use either this or the piggy_bank_id
writeOnly: true
bill_id:
type: string
format: string
nullable: true
example: "112"
description: Optional. Use either this or the bill_name
bill_name:
type: string
format: string
example: "Monthly rent"
nullable: true
description: Optional. Use either this or the bill_id
tags:
type: array
nullable: true
example:
description: Array of tags.
items:
type: string
format: string
description: Tag.
example: Barbecue preparation
notes:
type: string
format: string
example: "Some example notes"
nullable: true
internal_reference:
type: string
format: string
nullable: true
description: Reference to internal reference of other systems.
external_id:
type: string
nullable: true
format: string
description: Reference to external ID in other systems.
external_url:
type: string
format: string
nullable: true
description: External, custom URL for this transaction.
bunq_payment_id:
type: string
nullable: true
format: string
description: Internal ID of bunq transaction. Field is no longer used but still works.
sepa_cc:
type: string
format: string
nullable: true
description: SEPA Clearing Code
sepa_ct_op:
type: string
format: string
description: SEPA Opposing Account Identifier
nullable: true
sepa_ct_id:
type: string
format: string
nullable: true
description: SEPA end-to-end Identifier
sepa_db:
type: string
format: string
nullable: true
description: SEPA mandate identifier
sepa_country:
type: string
nullable: true
format: string
description: SEPA Country
sepa_ep:
type: string
nullable: true
format: string
description: SEPA External Purpose indicator
sepa_ci:
type: string
format: string
nullable: true
description: SEPA Creditor Identifier
sepa_batch_id:
type: string
format: string
nullable: true
description: SEPA Batch ID
interest_date:
type: string
format: date-time
nullable: true
book_date:
type: string
format: date-time
nullable: true
process_date:
type: string
format: date-time
nullable: true
due_date:
type: string
format: date-time
nullable: true
payment_date:
type: string
format: date-time
nullable: true
invoice_date:
type: string
format: date-time
nullable: true
TransactionSplitUpdate:
type: object
properties:
date:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
description: "Date of the transaction"
amount:
type: string
format: amount
example: "123.45"
description: "Amount of the transaction."
description:
type: string
format: string
example: "Vegetables"
description: "Description of the transaction."
order:
type: integer
format: int32
example: 0
nullable: true
description: "Order of this entry in the list of transactions."
currency_id:
type: string
format: string
example: "12"
nullable: true
description: Currency ID. Default is the source account's currency, or the user's default currency. Can be used instead of currency_code.
currency_code:
type: string
format: string
example: EUR
nullable: true
description: Currency code. Default is the source account's currency, or the user's default currency. Can be used instead of currency_id.
currency_symbol:
type: string
format: string
example: "$"
readOnly: true
currency_name:
type: string
format: string
example: "Euro"
readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals used in this currency.
readOnly: true
foreign_amount:
type: string
format: amount
example: "123.45"
nullable: true
description: The amount in a foreign currency.
foreign_currency_id:
type: string
format: string
example: "17"
nullable: true
description: Currency ID of the foreign currency. Default is null. Is required when you submit a foreign amount.
foreign_currency_code:
type: string
format: string
example: USD
description: Currency code of the foreign currency. Default is NULL. Can be used instead of the foreign_currency_id, but this or the ID is required when submitting a foreign amount.
nullable: true
foreign_currency_symbol:
type: string
format: string
example: "$"
nullable: true
readOnly: true
foreign_currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals in the currency
nullable: true
readOnly: true
budget_id:
type: string
format: string
nullable: true
example: "4"
description: The budget ID for this transaction.
budget_name:
type: string
format: string
example: Groceries
description: The name of the budget to be used. If the budget name is unknown, the ID will be used or the value will be ignored.
nullable: true
readOnly: true
category_id:
type: string
format: string
nullable: true
example: "43"
description: The category ID for this transaction.
category_name:
type: string
format: string
example: Groceries
nullable: true
description: "The name of the category to be used. If the category is unknown, it will be created. If the ID and the name point to different categories, the ID overrules the name."
source_id:
type: string
format: string
example: "2"
nullable: true
description: "ID of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account."
source_name:
type: string
format: string
example: "Checking account"
nullable: true
description: "Name of the source account. For a withdrawal or a transfer, this must always be an asset account. For deposits, this must be a revenue account. Can be used instead of the source_id. If the transaction is a deposit, the source_name can be filled in freely: the account will be created based on the name."
source_iban:
type: string
format: string
example: "NL02ABNA0123456789"
nullable: true
destination_id:
type: string
format: string
example: "2"
nullable: true
description: "ID of the destination account. For a deposit or a transfer, this must always be an asset account. For withdrawals this must be an expense account."
destination_name:
type: string
format: string
example: "Buy and Large"
nullable: true
description: "Name of the destination account. You can submit the name instead of the ID. For everything except transfers, the account will be auto-generated if unknown, so submitting a name is enough."
destination_iban:
type: string
format: string
example: "NL02ABNA0123456789"
nullable: true
reconciled:
type: boolean
format: boolean
example: false
description: "If the transaction has been reconciled already. When you set this, the amount can no longer be edited by the user."
bill_id:
type: string
format: string
nullable: true
example: "111"
description: Optional. Use either this or the bill_name
bill_name:
type: string
format: string
example: "Monthly rent"
nullable: true
description: Optional. Use either this or the bill_id
tags:
type: array
nullable: true
example:
description: Array of tags.
items:
type: string
format: string
description: Tag.
example: Barbecue preparation
notes:
type: string
format: string
example: "Some example notes"
nullable: true
internal_reference:
type: string
format: string
nullable: true
description: Reference to internal reference of other systems.
external_id:
type: string
nullable: true
format: string
description: Reference to external ID in other systems.
external_url:
type: string
format: string
nullable: true
description: External, custom URL for this transaction.
bunq_payment_id:
type: string
nullable: true
format: string
description: Internal ID of bunq transaction.
sepa_cc:
type: string
format: string
nullable: true
description: SEPA Clearing Code
sepa_ct_op:
type: string
format: string
description: SEPA Opposing Account Identifier
nullable: true
sepa_ct_id:
type: string
format: string
nullable: true
description: SEPA end-to-end Identifier
sepa_db:
type: string
format: string
nullable: true
description: SEPA mandate identifier
sepa_country:
type: string
nullable: true
format: string
description: SEPA Country
sepa_ep:
type: string
nullable: true
format: string
description: SEPA External Purpose indicator
sepa_ci:
type: string
format: string
nullable: true
description: SEPA Creditor Identifier
sepa_batch_id:
type: string
format: string
nullable: true
description: SEPA Batch ID
interest_date:
type: string
format: date-time
nullable: true
book_date:
type: string
format: date-time
nullable: true
process_date:
type: string
format: date-time
nullable: true
due_date:
type: string
format: date-time
nullable: true
payment_date:
type: string
format: date-time
nullable: true
invoice_date:
type: string
format: date-time
nullable: true
User:
title: A single user
type: object
required:
- email
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
email:
type: string
format: email
example: "[email protected]"
description: The new users email address.
blocked:
type: boolean
format: boolean
example: false
description: Boolean to indicate if the user is blocked.
blocked_code:
$ref: '#/components/schemas/UserBlockedCodeProperty'
role:
$ref: '#/components/schemas/UserRoleProperty'
ValidationError:
type: object
properties:
message:
type: string
format: string
example: "The given data was invalid."
errors:
type: object
properties:
field1:
type: array
items:
type: string
format: string
field2:
type: array
items:
type: string
format: string
Webhook:
title: A single webhook
type: object
required:
- title
- trigger
- response
- delivery
- url
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
active:
type: boolean
format: boolean
example: false
description: Boolean to indicate if the webhook is active
title:
type: string
format: string
example: "Update magic mirror on new transaction"
description: A title for the webhook for easy recognition.
secret:
type: string
format: string
example: "iMLZLtLx2JHWhK9Dtyuoqyir"
readOnly: true
description: A 24-character secret for the webhook. It's generated by Firefly III when saving a new webhook. If you submit a new secret through the PUT endpoint it will generate a new secret for the selected webhook, a new secret bearing no relation to whatever you just submitted.
trigger:
$ref: '#/components/schemas/WebhookTrigger'
response:
$ref: '#/components/schemas/WebhookResponse'
delivery:
$ref: '#/components/schemas/WebhookDelivery'
url:
type: string
format: string
example: "https://example.com"
readOnly: false
description: The URL of the webhook. Has to start with `https`.
WebhookStore:
title: A single webhook
type: object
required:
- title
- trigger
- response
- delivery
- url
properties:
active:
type: boolean
format: boolean
example: false
description: Boolean to indicate if the webhook is active
title:
type: string
format: string
example: "Update magic mirror on new transaction"
description: A title for the webhook for easy recognition.
trigger:
$ref: '#/components/schemas/WebhookTrigger'
response:
$ref: '#/components/schemas/WebhookResponse'
delivery:
$ref: '#/components/schemas/WebhookDelivery'
url:
type: string
format: string
example: "https://example.com"
readOnly: false
description: The URL of the webhook. Has to start with `https`.
WebhookUpdate:
title: A single webhook
type: object
properties:
active:
type: boolean
format: boolean
example: false
description: Boolean to indicate if the webhook is active
title:
type: string
format: string
example: "Update magic mirror on new transaction"
description: A title for the webhook for easy recognition.
secret:
type: string
format: string
example: "iMLZLtLx2JHWhK9Dtyuoqyir"
description: A 24-character secret for the webhook. It's generated by Firefly III when saving a new webhook. If you submit a new secret through the PUT endpoint it will generate a new secret for the selected webhook, a new secret bearing no relation to whatever you just submitted.
trigger:
$ref: '#/components/schemas/WebhookTrigger'
response:
$ref: '#/components/schemas/WebhookResponse'
delivery:
$ref: '#/components/schemas/WebhookDelivery'
url:
type: string
format: string
example: "https://example.com"
readOnly: false
description: The URL of the webhook. Has to start with `https`.
WebhookAttempt:
type: object
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
webhook_message_id:
type: string
format: string
example: "5"
description: "The ID of the webhook message this attempt belongs to."
status_code:
type: integer
format: int32
example: 404
nullable: true
description: "The HTTP status code of the error, if any."
logs:
type: string
format: string
example: "Page not found"
nullable: true
description: "Internal log for this attempt. May contain sensitive user data."
response:
type: string
format: amount
example: "Page not found"
nullable: true
description: "Webhook receiver response for this attempt, if any. May contain sensitive user data."
WebhookMessage:
type: object
properties:
created_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
updated_at:
type: string
format: date-time
example: "2018-09-17T12:46:47+01:00"
readOnly: true
sent:
type: boolean
format: boolean
example: false
description: If this message is sent yet.
errored:
type: boolean
format: boolean
example: false
description: If this message has errored out.
webhook_id:
type: string
format: string
example: "5"
description: "The ID of the webhook this message belongs to."
uuid:
type: string
format: string
example: "7a344c02-5b52-46b1-90e6-a437431dcf07"
description: "Long UUID string for identification of this webhook message."
string:
type: string
format: string
example: "{some:message}"
nullable: true
description: "The actual message that is sent or will be sent as JSON string."
securitySchemes:
firefly_iii_auth:
type: oauth2
description: Default OAuth2 flow
flows:
authorizationCode:
authorizationUrl: https://demo.firefly-iii.org/oauth/authorize
tokenUrl: https://demo.firefly-iii.org/oauth/token
refreshUrl: https://demo.firefly-iii.org/oauth/token
scopes: {}
local_bearer_auth:
description: Optional Bearer token flow
type: http
scheme: bearer
security:
- firefly_iii_auth: []
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment