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
yearsfolder and with a file per year.All top level objects may have the following properties
versionAn 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 objectsidid of the accounticonicon name used for the accountnameName string for the accountcolorAccount color in #ARGB format
Categories
categories.json defines a list of all categories.
| |
defaultExpenseis the id (int) of the default expense categorydefaultIncomeis the id (int) of the default income categorycategoriesis a list of category objects explained below
Category object
| |
type: is transaction type, which can beincomeorexpense- Even though there are other transaction types, stored categories can be only the above two types
id:intId of the categoryorderIndexIs an int determining the order index of the category. This is how the categories are ordered for display in settings.iconName of an iconcolorCategory color
Contacts
contacts.json contains a list of contact objects.
| |
list:[]list of all contactsnameName of the contact as entered within the appid:intId of the contactandroidIdAndroid Id of the contact. This associates app contact with a system contact in Android.iosIdiOS 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 currenciescodeCurrency 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.fullNameFull name used for display.symbolCurrency symbol to be used when displaying amounts.symbolLeftIs 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.jsonfiles.
Scheduled
scheduled.json contains a list of scheduled transactions. Basically a list of transaction objects, but with a few additional properties.
| |
list:[]List ofscheduled transactionobjectstransactionobject with the following additional propertiesrepeat: Repat type, can be one of [none,weekly,monthly]nonemeans no repeat, once occurringweeklyrepeats weekly on specific daysmonthlyrepeats monthly on a specific date
- The transaction
timeproperty will determine future date the transaction occurs on ifnonerepeat type, or the day on which it occurs on ifmonthlyrepeat type. repeat_days:bool[]is stored as a list of 7 booleans for each day of week (Monday .. Sunday).truevalues 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_dayTransaction occurs on the set day or next work dayfirst_dayTransaction occurs on first day of the monthlast_dayTransaction occurs on the last day of the monthfirst_work_dayTransaction occurs on the first work day in a monthlast_work_dayTransaction 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 objectstagThe name of the tagcolorColor of the tag in #ARGB formatassociatedTags:string[]Array of all associated tags. OptionalassociatedCategory:intId of the associated category automatically set when this tag is used in a transaction. OptionalassociatedContact:intId 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:
| |
yearis an int indicating what year this file refers tomonths:[]contains a list of month objectsmonthis aninttelling which month of the year this is1..12transactions:Transaction[]is a list of all transactions, look atTransaction objectbelow
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
expenseThis is an expense transactionincomeThis is an income transactiontransferTransfer between two accountsliabilityLiability amountccCurrency conversion from one currency to anothergoalGoal contributionnoteNote- These types of transactions have their own separate storage
- Transactions can be one of the following types
time: Time of the transaction in aISO8601format.categoryCategory Id of the transaction- This is only relevant for
expenseandincometransaction types, as other types cannot have multiple categories.
- This is only relevant for
amount:doubleThe amount value of the transaction.currency:stringCurrency code of the currency used for this transaction. This is also the source currency incurrency conversion/transfertypes.tags:string[]List of tag set for this transaction.finalAmount:doubleFinal amount converted to target currency for the transaction forincomeandexpensetransactions, 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.