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’s 0

Accounts

accounts.json defines a list of all your accounts.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
    "accounts": [
        {
            "id": 0,
            "icon": "wallet",
            "name": "Cash Money",
            "color": "#fff44336"
        }
    ]
}
  • accounts: [] is a list of account objects
    • id id of the account
    • icon icon name used for the account
    • name Name string for the account
    • color Account color in #ARGB format

Categories

categories.json defines a list of all categories.

1
2
3
4
5
6
{
    "version":3,
    "defaultExpense":0,
    "defaultIncome":18,
    "categories":[...]
}
  • defaultExpense is the id (int) of the default expense category
  • defaultIncome is the id (int) of the default income category
  • categories is a list of category objects explained below

Category object

1
2
3
4
5
6
7
8
{
    "type": "expense",
    "id":32,
    "orderIndex":27,
    "icon": "people",
    "name": "People",
    "color": "#ff26c6da"
}
  • type: is transaction type, which can be income or expense
    • Even though there are other transaction types, stored categories can be only the above two types
  • id: int Id of the category
  • orderIndex 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 icon
  • color Category color

Contacts

contacts.json contains a list of contact objects.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
    "list":[
        {
            "name": "Some Person",
            "id": 13,
            "androidId": "123",
            "iosId": "123"
            }
        ]
}
  • list: [] list of all contacts
    • name Name of the contact as entered within the app
    • id: int Id of the contact
    • androidId 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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
    "currencies": [
        {
            "code": "EUR",
            "fullName": "European Union euro",
            "symbol": "€",
            "localExchangeRate": 1.95583
        }
    ]
}
  • currencies: [] A list of user modified currencies
    • code 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.

1
2
3
4
5
6
{
    "years": [
        2021, 2022, 2023
    ],
    "version":1
}
  • years: int[] Is a list of years we have information on. This should match the actual 20xx.json files.

Scheduled

scheduled.json contains a list of scheduled transactions. Basically a list of transaction objects, but with a few additional properties.

1
2
3
{
    "list": [...]
}
  • list: [] List of scheduled transaction objects
    • transaction object with the following additional properties
      • repeat: Repat type, can be one of [none, weekly, monthly]
        • none means no repeat, once occurring
        • weekly repeats weekly on specific days
        • monthly repeats monthly on a specific date
      • The transaction time property will determine future date the transaction occurs on if none repeat type, or the day on which it occurs on if monthly 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 day
        • first_day Transaction occurs on first day of the month
        • last_day Transaction occurs on the last day of the month
        • first_work_day Transaction occurs on the first work day in a month
        • last_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.

1
2
3
4
5
6
7
8
9
{
    "list": [
        {
            "tag": "mlinar",
            "color": "#fff9a825",
            "associatedTags": ["bakery"]
        }
    ]
}
  • list: [] list of all tag objects
    • tag The name of the tag
    • color Color of the tag in #ARGB format
    • associatedTags: string[] Array of all associated tags. Optional
    • associatedCategory: int Id of the associated category automatically set when this tag is used in a transaction. Optional
    • associatedContact: 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:

1
2
3
4
5
6
7
8
9
{
    "year": 2021,
    "months":[
        {
            "month": 2,
            "transactions": [...]
        }
    ]
}
  • year is an int indicating what year this file refers to
  • months: [] contains a list of month objects
    • month is an int telling which month of the year this is 1..12
    • transactions: Transaction[] is a list of all transactions, look at Transaction 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.

1
2
3
4
5
6
7
8
{
  "type": "expense",
  "time": "2021-03-25T19:10:27",
  "category": 5,
  "currency": "BAM",
  "amount": 9.5,
  "tags": ["mcds"]
}
  • type: string
    • Transactions can be one of the following types
      • expense This is an expense transaction
      • income This is an income transaction
      • transfer Transfer between two accounts
      • liability Liability amount
      • cc Currency conversion from one currency to another
      • goal Goal contribution
      • note Note
        • These types of transactions have their own separate storage
  • time: Time of the transaction in a ISO8601 format.
  • category Category Id of the transaction
    • This is only relevant for expense and income transaction types, as other types cannot have multiple categories.
  • 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 in currency conversion/transfer types.
  • tags: string[] List of tag set for this transaction.
  • finalAmount: double Final amount converted to target currency for the transaction for income and expense transactions, or target amount for currency conversion/transfers.
  • targetCurrency: Currency code of the currency related to finalAmount. Target currency in case of transfers/currency conversion. If omitted, it matches currency.