bimetricsEntwickler

Filtern und Paginieren

Suchanfragen für Belege, Kontakte, Bankkonten, Umsätze und Buchungen.

Als Markdown ansehen

Listen fragst du mit POST an eine Filterroute ab, zum Beispiel POST /api/document/filter. Der Body ist JSON und enthält einen Filterausdruck, die Sortierung und die Seite.

Beispiel für POST /api/document/filter:

{
  "kind": "and",
  "children": [
    {
      "kind": "range",
      "attribute": "invoiceDate",
      "lower": "2026-01-01",
      "upper": "2026-12-31"
    }
  ],
  "limit": 50,
  "offset": 0,
  "sort": [
    "invoiceDate"
  ],
  "direction": [
    "desc"
  ]
}

Welche Attribute es je Route gibt, steht weiter unten, jeweils mit einem Beispiel.

Filterausdruck

Ein Ausdruck hat eine Art (kind). Ausdrücke mit and, or und not enthalten weitere Ausdrücke in children und lassen sich verschachteln.

Art (kind)Bedeutung
andAlle Teilausdrücke in children treffen zu. Ein leeres children liefert alle Einträge.
orMindestens ein Teilausdruck in children trifft zu.
eqattribute hat genau den Wert value.
notVerneint den Teilausdruck in children. Verwende genau einen Teilausdruck.
inattribute enthält den Text value. Groß- und Kleinschreibung spielen keine Rolle.
rangeattribute liegt zwischen lower und upper, beide Grenzen inklusive. Eine Grenze genügt.
oneofattribute hat einen der Werte im Array value.
  • Werte sind Strings, Zahlen oder Wahrheitswerte. Datumswerte schreibst du als String, JJJJ-MM-TT oder mit Uhrzeit nach RFC 3339.
  • { "kind": "and", "children": [] } liefert alle Einträge.
  • not braucht mindestens einen Ausdruck in children. Mehrere verneint es gemeinsam, wie ein not um ein and.
  • Eine unbekannte Art (kind) oder ein unbekanntes Attribut ergibt 400.
  • Ein Wert, der nicht zum Typ des Attributs passt, ergibt ebenfalls 400, zum Beispiel Text für eine Ganzzahl oder eine UUID, eine Zahl mit Nachkommastellen für eine Ganzzahl oder ein Datum in anderer Schreibweise.

Sortieren

sort enthält ein oder mehrere Attribute, direction die Richtung je Attribut: asc (Standard) oder desc. Beide Felder nehmen auch einen einzelnen String an.

Für sort sind nur die Attribute dokumentiert, die weiter unten als sortierbar markiert sind. Ein Attribut, das dort als nicht sortierbar markiert ist, etwa uploadDocument.ocrStatus bei Belegen, ergibt in sort den Status 400.

Ohne sort ist die Reihenfolge nicht festgelegt. Sortiere immer, wenn du mehrere Seiten abrufst.

Seitenweise abrufen

FeldBedeutung
limitTreffer je Seite, höchstens 1.000. Größere Werte werden auf den Höchstwert gesetzt. Ohne limit gilt der Höchstwert.
offsetAnzahl der Treffer, die übersprungen werden, höchstens 1.000.000. Größere oder negative Werte ergeben 400.

Die Antwort nennt die Gesamtzahl und die gelieferte Seite:

{
  "total": 1234,
  "limit": 100,
  "offset": 0,
  "items": []
}

Für die nächste Seite erhöhst du offset um limit, bis offset die Zahl total erreicht. Wenn sich die Daten zwischen zwei Abrufen ändern, können sich Seiten verschieben. Für einen vollständigen Abgleich grenzt du deshalb am besten über ein Datumsattribut ein, sortierst danach und rufst die Seiten zügig nacheinander ab.

Attribute je Route

Dokumentiert sind nur die hier aufgeführten Attribute, in sort nur die als sortierbar markierten. Andere Attribute können funktionieren, gehören aber nicht zum dokumentierten Umfang (siehe Stabilität und Änderungen) und können sich ohne Ankündigung ändern.

Buchungen suchen

POST /api/accounting/booking/filter · Referenz

AttributTypSortierbarBeschreibung
bookingDatedatejaBuchungsdatum.
accountintegerjaKonto.
accountContraintegerjaGegenkonto.
amountdecimaljaBetrag.
refDocumentIduuidjaID des gebuchten Belegs.
refBankTransactionIduuidjaID des gebuchten Umsatzes.
finalizeddate-timejaZeitpunkt der Festschreibung; null bei nicht festgeschriebenen Buchungen.
updatedAtdate-timejaZeitpunkt der letzten Änderung.
{
  "kind": "and",
  "children": [
    {
      "kind": "range",
      "attribute": "bookingDate",
      "lower": "2026-01-01",
      "upper": "2026-12-31"
    }
  ],
  "limit": 50,
  "offset": 0,
  "sort": [
    "bookingDate"
  ],
  "direction": [
    "desc"
  ]
}

Bankkonten suchen

POST /api/bankaccount/filter · Referenz

AttributTypSortierbarBeschreibung
ibanstringjaIBAN des Kontos.
bankNamestringjaName der Bank.
ownerNamestringjaName des Kontoinhabers laut Bank.
currencystringjaKontowährung (ISO 4217).
disabledbooleanjaKonto ist deaktiviert.
updatedAtdate-timejaZeitpunkt der letzten Änderung.
{
  "kind": "and",
  "children": [
    {
      "kind": "range",
      "attribute": "updatedAt",
      "lower": "2026-01-01T00:00:00Z",
      "upper": "2026-12-31T23:59:59Z"
    }
  ],
  "limit": 50,
  "offset": 0,
  "sort": [
    "updatedAt"
  ],
  "direction": [
    "desc"
  ]
}

Umsätze suchen

POST /api/banktransaction/filter · Referenz

AttributTypSortierbarBeschreibung
bankAccountIduuidjaID des Bankkontos.
bookingDatedatejaBuchungstag.
valueDatedatejaWertstellung.
transactionAmountintegerjaBetrag in Cent, negativ bei Ausgängen.
otherPartyNamestringjaName der Gegenseite.
remittanceInformationstringjaVerwendungszweck.
statusstringjabooked (gebucht) oder pending (vorgemerkt).
updatedAtdate-timejaZeitpunkt der letzten Änderung.
{
  "kind": "and",
  "children": [
    {
      "kind": "range",
      "attribute": "bookingDate",
      "lower": "2026-01-01",
      "upper": "2026-12-31"
    }
  ],
  "limit": 50,
  "offset": 0,
  "sort": [
    "bookingDate"
  ],
  "direction": [
    "desc"
  ]
}

Kontakte suchen

POST /api/contact/filter · Referenz

AttributTypSortierbarBeschreibung
companyNamestringjaName des Kontakts.
customerNumberintegerjaKunden- bzw. Lieferantennummer.
typestringjaArt: customer (Kunde), supplier (Lieferant) oder partner.
customerKindstringjaSteuerlich: business (Unternehmen) oder private (Privatperson); leer, wenn unbekannt.
contactInfo.emailstringjaE-Mail-Adresse.
paymentInfo.ibanstringjaIBAN.
paymentInfo.vatIdstringjaUSt-IdNr.
updatedAtdate-timejaZeitpunkt der letzten Änderung.
{
  "kind": "and",
  "children": [
    {
      "kind": "range",
      "attribute": "updatedAt",
      "lower": "2026-01-01T00:00:00Z",
      "upper": "2026-12-31T23:59:59Z"
    }
  ],
  "limit": 50,
  "offset": 0,
  "sort": [
    "updatedAt"
  ],
  "direction": [
    "desc"
  ]
}

Belege suchen

POST /api/document/filter · Referenz

AttributTypSortierbarBeschreibung
kindstringjaBelegart: invoice (Ausgangsrechnung) oder receipt (Eingangsbeleg).
invoiceDatedatejaRechnungsdatum.
invoiceNumberstringjaRechnungsnummer.
issuer.namestringjaName des Ausstellers.
recipient.namestringjaName des Empfängers.
uploadDocument.ocrStatusstringneinStand der Erkennung: pending, processing, success, failed oder quota_paused.
createdAtdate-timejaZeitpunkt der Anlage in bimetrics.
updatedAtdate-timejaZeitpunkt der letzten Änderung. Für Abgleiche per Polling: range mit lower = Zeitpunkt des letzten Abrufs.
{
  "kind": "and",
  "children": [
    {
      "kind": "range",
      "attribute": "invoiceDate",
      "lower": "2026-01-01",
      "upper": "2026-12-31"
    }
  ],
  "limit": 50,
  "offset": 0,
  "sort": [
    "invoiceDate"
  ],
  "direction": [
    "desc"
  ]
}

Auf dieser Seite