All Broque backups are plain zip archives containing a bunch of json files.
Disclaimers
- Not every file and property is documented. Some contain settings which are only relevant for the app.
- The format is subject to change in future versions, but we always strive to maintain backwards compatibility.
- WARNING: First make a backup of the original backup file. We can’t guarantee the app working if you change these files and then restore the modified backup.
Basic Structure
The root folder contains basic information such as
accounts.json
,categories.json
, …Transactions are stored in the
years
folder and with a file per year.All top level objects may have the following properties
version
An int indicating version of the format, if not present it’s0
Accounts
accounts.json
defines a list of all your accounts.
|
|
accounts
:[]
is a list of account objectsid
id of the accounticon
icon name used for the accountname
Name string for the accountcolor
Account color in #ARGB format
Categories
categories.json
defines a list of all categories.
|
|
defaultExpense
is the id (int
) of the default expense categorydefaultIncome
is the id (int
) of the default income categorycategories
is a list of category objects explained below
Category object
|
|
type
: is transaction type, which can beincome
orexpense
- Even though there are other transaction types, stored categories can be only the above two types
id
:int
Id of the categoryorderIndex
Is an int determining the order index of the category. This is how the categories are ordered for display in settings.icon
Name of an iconcolor
Category color
Contacts
contacts.json
contains a list of contact objects.
|
|
list
:[]
list of all contactsname
Name of the contact as entered within the appid
:int
Id of the contactandroidId
Android Id of the contact. This associates app contact with a system contact in Android.iosId
iOS Id of the contact. This associates app contact with a system contact in iOS/iPhone.
Currencies
currencies.json
contains a list of currency objects.
|
|
currencies
:[]
A list of user modified currenciescode
Currency code. This is used to match with the built-in list of currencies to update it from this configuration. Should match the actual currency code used.fullName
Full name used for display.symbol
Currency symbol to be used when displaying amounts.symbolLeft
Is the symbol on the left side of the currency in the relevant language.
Data
The data.json
file defines some basic data.
|
|
years
:int[]
Is a list of years we have information on. This should match the actual20xx.json
files.
Scheduled
scheduled.json
contains a list of scheduled transactions. Basically a list of transaction
objects, but with a few additional properties.
|
|
list
:[]
List ofscheduled transaction
objectstransaction
object with the following additional propertiesrepeat
: Repat type, can be one of [none
,weekly
,monthly
]none
means no repeat, once occurringweekly
repeats weekly on specific daysmonthly
repeats monthly on a specific date
- The transaction
time
property will determine future date the transaction occurs on ifnone
repeat type, or the day on which it occurs on ifmonthly
repeat type. repeat_days
:bool[]
is stored as a list of 7 booleans for each day of week (Monday .. Sunday).true
values indicate the transaction occurs on that day of week.sub_repeat
: String that determines a sub repeat type. Can be one of [next_work_day
,first_day
,last_day
,first_work_day
,last_work_day
]next_work_day
Transaction occurs on the set day or next work dayfirst_day
Transaction occurs on first day of the monthlast_day
Transaction occurs on the last day of the monthfirst_work_day
Transaction occurs on the first work day in a monthlast_work_day
Transaction occurs on the last work day in a month
Tags
tags.json
is a list of all unique tags used by transactions and other places.
|
|
list
:[]
list of all tag objectstag
The name of the tagcolor
Color of the tag in #ARGB formatassociatedTags
:string[]
Array of all associated tags. OptionalassociatedCategory
:int
Id of the associated category automatically set when this tag is used in a transaction. OptionalassociatedContact
:int
Id of the associated contact automatically set when this tag is used in a transaction. Optional
Years
- File per individual year we have transactions for.
2022.json
,2023.json
, … - Each file contains a list of months, and transactions within
Base structure:
|
|
year
is an int indicating what year this file refers tomonths
:[]
contains a list of month objectsmonth
is anint
telling which month of the year this is1..12
transactions
:Transaction[]
is a list of all transactions, look atTransaction object
below
Transaction object
Transaction have some properties common to all of them. Type, time, category, currency, amount. Everything else depends on options used in the transaction editor and type of transaction.
|
|
type
:string
- Transactions can be one of the following types
expense
This is an expense transactionincome
This is an income transactiontransfer
Transfer between two accountsliability
Liability amountcc
Currency conversion from one currency to anothergoal
Goal contributionnote
Note- These types of transactions have their own separate storage
- Transactions can be one of the following types
time
: Time of the transaction in aISO8601
format.category
Category Id of the transaction- This is only relevant for
expense
andincome
transaction types, as other types cannot have multiple categories.
- This is only relevant for
amount
:double
The amount value of the transaction.currency
:string
Currency code of the currency used for this transaction. This is also the source currency incurrency conversion
/transfer
types.tags
:string[]
List of tag set for this transaction.finalAmount
:double
Final amount converted to target currency for the transaction forincome
andexpense
transactions, or target amount for currency conversion/transfers.targetCurrency
: Currency code of the currency related tofinalAmount
. Target currency in case of transfers/currency conversion. If omitted, it matchescurrency
.