Skip to content

ABRA Flexi ​

ABRA Flexi (formerly Flexibee) is a Czech cloud accounting and ERP system. Bruin reads it through the REST API at https://<account>.flexibee.eu/c/<company>/<evidence>.json.

Bruin supports ABRA Flexi as a source for Ingestr assets, and you can use it to ingest data from ABRA Flexi into your data platform.

Unlike most SaaS connectors, this one is schema-driven rather than table-driven. Flexi publishes a machine-readable schema for every register at /<evidence>/properties.json, so the connector derives each table's columns and types from the API at read time. There is no fixed table list: any evidence in the company is a valid source_table.

To set up an ABRA Flexi connection, you must add a configuration item in the .bruin.yml and asset file. You need a Flexi API user and password, plus the company database code.

Follow the steps below to set up ABRA Flexi correctly as a data source and run ingestion.

Configuration ​

Step 1: Add a connection to the .bruin.yml file ​

yaml
connections:
    abraflexi:
        - name: "abraflexi"
          host: "example.flexibee.eu"
          username: "your_api_user"
          password: "your_password"
          company: "acme_s_r_o_"
  • host (required): The Flexi account host, e.g. example.flexibee.eu.
  • path (optional): A URL path prefix in front of the REST API, only needed for self-hosted installs mounted under a sub-path (e.g. /flexi). Leave it empty for cloud Flexi.
  • username (required): The Flexi API user.
  • password (required): That user's password.
  • company (required): The company database code as it appears in the REST path, e.g. acme_s_r_o_. It selects which set of books to read and is never defaulted — one credential typically reaches every company in the account, and pointing the wrong one at a destination loads the wrong set of books with no error. The company codes available to a credential can be listed with GET /c.json.
  • scheme (optional): The transport used to reach the account, https or http. Defaults to https (http is only accepted for loopback hosts).
  • page_size (optional): Rows per request. Defaults to 1000.
  • rate_limit (optional): Requests per second. Defaults to 4.
  • include_expensive (optional): Whether to include properties Flexi flags as expensive to compute. Defaults to true.

Step 2: Create an asset file for data ingestion ​

To ingest data from ABRA Flexi, you need to create an asset configuration file. This file defines the data flow from the source to the destination. Create a YAML file (e.g., abraflexi_ingestion.yml) inside the assets folder and add the following content:

yaml
name: public.abraflexi
type: ingestr

parameters:
  source_connection: abraflexi
  source_table: 'faktura-vydana'

  destination: postgres
  • name: The name of the asset.
  • type: Specifies the asset's type. Set this to ingestr to use the ingestr data pipeline. For ABRA Flexi, it will always be ingestr.
  • source_connection: The name of the ABRA Flexi connection defined in .bruin.yml.
  • source_table: The evidence path in ABRA Flexi to ingest — the same identifier that appears in the REST URL. See the common evidences below.
  • destination: The destination platform/type, for example postgres.

Step 3: Run asset to ingest data ​

bash
bruin run assets/abraflexi_ingestion.yml

As a result of this command, Bruin will ingest data from the given ABRA Flexi evidence into your Postgres database.

Available Source Tables ​

The table name is the evidence path — the same identifier that appears in the REST URL. Common ones:

TablePrimary KeyIncremental KeyIncremental StrategyDetails
faktura-vydana / faktura-vydana-polozkaidlastUpdatemergeIssued invoices and their lines
faktura-prijata / faktura-prijata-polozkaidlastUpdatemergeReceived invoices and their lines
banka / banka-polozkaidlastUpdatemergeBank documents and lines
pokladni-pohybidlastUpdatemergeCash movements
interni-doklad / interni-doklad-polozkaidlastUpdatemergeInternal documents and lines
adresaridlastUpdatemergeAddress book (counterparties)
pohledavka / zavazekidlastUpdatemergeReceivables and liabilities
ucetni-osnovaidlastUpdatemergeChart of accounts
strediskoidlastUpdatemergeCost centres

GET /c/<company>/evidence-list.json lists every evidence in a company.

Incremental behavior and limitations ​

Tables use merge on the primary key id, with lastUpdate as the incremental key pushed to Flexi as a server-side filter. Only the start bound is applied — re-running a wider window costs requests, never correctness, because merge deduplicates on id. Evidences that have an id but no usable lastUpdate are re-read in full on every run and still merge correctly.

  • Not every evidence is a table. Some are derived views — the accounting journal ucetni-denik, the account-movement view pohyb-na-uctech, the VAT ledger podklady-dph and around a dozen report endpoints return rows whose id is -1. They cannot be deduplicated or windowed, so the connector refuses them at plan time with an explanatory error.
  • Some report endpoints require parameters and return HTTP 400 when read as a plain table (stav-skladu-k-datu, kontrolni-hlaseni-dph, souhrnne-hlaseni-dph, and similar). These are not supported.
  • Relation and select fields expand into three columns — for example mena, mena_ref, mena_showAs. Characters outside [A-Za-z0-9_] are replaced with _.