bimetricsEntwickler
Vorlagen und Dauerbuchungen

Dauerbuchungen suchen

Als Markdown ansehen

Benötigte Berechtigung:read(Daten lesen)

POST
/api/document/collection/contract/filter

Sucht die Dauerbuchungen der Firma: ein fester Betrag im festen Rhythmus ohne eigene Rechnung, etwa die Büromiete. Gelöschte fehlen, auch wenn ihre Belege bleiben.

Benötigt einen Schlüssel mit der Berechtigung read.

Authentifizierung

headerAuthentifizierungBearer <bm_…>

Empfohlen: Authorization: Bearer bm_…. Der Schlüssel wird nur einmal angezeigt; nie in URLs, Logs oder Frontend-Code ablegen.

Request-Body

Filter, Sortierung und Seite. Dokumentierte Filterattribute: x-bimetrics-filter.

application/json
  1. body

Suche mit Filter, Sortierung und Seiten. Der Filterausdruck steht auf oberster Ebene; {} liefert alle Einträge.

attribute?string

Filterattribut für eq, in, range und oneof, siehe x-bimetrics-filter der Operation. Groß-/Kleinschreibung und Punkte werden ignoriert.

children?array<>

Teilfilter für and, or und not.

direction?|array<>

Richtung je Eintrag in sort; Standard asc.

includeDeleted?boolean

true liefert auch gelöschte Einträge, erkennbar an deletedAt, aber nur bei Belegen, Kontakten, Bankkonten, Umsätzen und Buchungen; die übrigen Suchrouten ignorieren das Feld. Ohne das Feld oder mit false nur Einträge, die nicht gelöscht sind. Für Abgleiche von Löschungen mit range auf deletedAt, siehe Delta-Sync.

Standardfalse
kind?string

Art des Filters: and/or verknüpfen children, not verneint children, eq vergleicht attribute mit value (null prüft auf leer), in sucht value als Text im Attribut (enthält, ohne Groß-/Kleinschreibung), range prüft lower ≤ Attribut ≤ upper (eine Grenze genügt), oneof prüft, ob das Attribut einem Wert der Liste value entspricht. Leer: alle Einträge.

Wert in"""and""or""eq""not""in""range""oneof"
limit?integer

Treffer je Seite. Standard und Höchstwert 1000; größere Werte werden auf 1000 begrenzt.

Bereich0 <= value
Standard1000
lower?unknown

Untergrenze für range, einschließlich.

offset?integer

Anzahl übersprungener Treffer. Haben mehrere Treffer dieselben Werte in sort, ist ihre Reihenfolge nicht festgelegt, und sie können zwischen zwei Seiten doppelt kommen oder fehlen; id als letztes Attribut in sort oder ein Abgleich mit Überlappung (Delta-Sync) hilft dagegen.

Bereich0 <= value <= 1000000
Standard0
sort?|array<string>

Attribute, nach denen sortiert wird; nur sortierbare Attribute (sortable in x-bimetrics-filter). Ein Attribut mit sortable: false ergibt 400.

upper?unknown

Obergrenze für range, einschließlich.

value?unknown

Vergleichswert: für eq ein Wert oder null, für in ein Text, für oneof eine Liste.

Filterattribute

Dokumentiert sind diese Attribute für attribute; für sort nur die als sortierbar markierten. Aufbau des Filters: Filtern und Paginieren.

AttributTypSortierbarBeschreibung
iduuidjaID der Dauerbuchung.
friendlyNamestringjaBezeichnung.
collectionNumberstringjaNummer der Dauerbuchung.
kindstringjaArt der erzeugten Belege: `receipt` (Eingangsbeleg) oder `invoice` (Ausgangsrechnung).
issuer.namestringjaName des Ausstellers der erzeugten Belege.
recipient.namestringjaName des Empfängers der erzeugten Belege.
updatedAtdate-timejaZeitpunkt der letzten Änderung.

Antworten

Eine Seite der Treffer.

application/json
  1. response

Eine Seite gefundener Dauerbuchungen.

items?array<>|

Die Treffer dieser Seite.

limit?|

Verwendetes limit.

offset?integer

Verwendetes offset.

total?integer

Anzahl aller Treffer des Filters.

Beispielanfrage
curl --fail-with-body "https://app.bimetrics.de/api/document/collection/contract/filter" \  -H "Authorization: Bearer $BIMETRICS_API_KEY" \  -H "Content-Type: application/json" \  -d '{"direction":["asc","asc"],"limit":100,"offset":0,"sort":["friendlyName","id"]}'
Beispielantwort
{  "items": [    {      "collectionNumber": "MIETE",      "companyId": "9c388e1f-04a6-4770-80bd-66cd98dd00d5",      "createdAt": "2026-01-05T09:00:00Z",      "documentContractRepetitionFixed": {        "end": null,        "repetitionPeriodDays": 0,        "repetitionPeriodMonth": 1,        "start": {          "day": 1,          "month": 1,          "year": 2026        }      },      "friendlyName": "Büromiete",      "id": "6d0e3f52-81a4-4b7c-9f26-2a7e5c1d4b83",      "issuer": {        "address": "",        "customerNumber": null,        "iban": "",        "name": "Muster Immobilien GmbH",        "taxId": ""      },      "kind": "receipt",      "positionTemplate": [        {          "additionalInfo": {            "freeOfVat": false,            "reverseCharge": false          },          "category": "rent_payment",          "label": "Miete",          "totalFixed": 120000,          "totalRatio": null,          "vatPercentage": "19"        }      ],      "recipient": {        "address": "",        "customerNumber": null,        "iban": "",        "name": "",        "taxId": ""      },      "updatedAt": "2026-01-05T09:00:00Z",      "uploadDocument": null,      "uploadDocumentId": null    }  ],  "limit": 100,  "offset": 0,  "total": 1}

Dauerbuchung anlegen POST

Legt eine Dauerbuchung an, wie in der App: Für jede Periode entsteht sofort ein Beleg mit Buchung, auch für vergangene. `POST /api/document/collection/contract/preview` zeigt das vorher. Der Rhythmus ist 1, 3, 6 oder 12 Monate, `end` gilt ausschließlich und liegt nach `start`. Zeilen haben einen festen Betrag. Geprüft wird wie im Formular der App: Bezeichnung, Art `invoice` oder `receipt`, 1 bis 100 Zeilen mit Betrag oder Anteil, Kategorie passend zu Art, Verwendung und Kontenrahmen, Steuersatz 19, 7 oder 0 %, auf Eingangsbelegen auch 9 oder 5,5 %, soweit die Kategorie ihn zulässt, Steuerfall bei 0 % auf Eingangsbelegen und die Gegenpartei der Art, außer alle Kategorien werden direkt gebucht. Verstöße ergeben `400 InvalidBookkeepingChange` mit `context.field`. Bezeichnung, Kategorie und Steuersatz werden nur geprüft, wenn sie neu sind. Eine Wiederholung mit gleichem Idempotency-Key wirkt nicht doppelt. Benötigt einen Schlüssel mit der Berechtigung `collections:write`.

Änderung einer Dauerbuchung prüfen POST

Sagt, was Anlegen, Ändern, Beenden oder Löschen mit den Periodenbelegen täte, und ändert nichts. Gerechnet wird wie beim Speichern, Ablehnungen sind dieselben. `action` ist `create`, `update`, `end` oder `delete`; außer bei `create` nennt `id` die Dauerbuchung. `end` nennt bei `action` `end` das neue Ende: Es darf nie verlängern (`422 DocumentContractEndExtends`). `pastDocuments` gilt bei `delete`. Benötigt einen Schlüssel mit der Berechtigung `collections:write`.