Layout anlegen
Benötigte Berechtigung:layout:write(Layouts und Logo ändern)
Echte Wirkung
/api/layoutsKein Testversand aus der Dokumentation: Dieser Aufruf ist nicht als rein lesend gekennzeichnet. Nutze das Codebeispiel.
Legt ein Layout aus einer Vorlage des Katalogs an, wie „Neues Layout“ im Editor. Mit documentKind gilt es sofort für diese Belegart, auch für ihre offenen Entwürfe; das erste Layout einer Firma gilt für alle Belegarten. Die Version davor hält den bisherigen Stand fest. Idempotency-Key bei Wiederholung unverändert senden.
Benötigt einen Schlüssel mit der Berechtigung layout:write.
AuthentifizierungBearer <bm_…>Empfohlen: Authorization: Bearer bm_…. Der Schlüssel wird nur einmal angezeigt; nie in URLs, Logs oder Frontend-Code ablegen.
Idempotency-Key*stringStabiler Schlüssel für genau diese Änderung: 1–128 druckbare ASCII-Zeichen ohne Leerzeichen. Bei Wiederholungen denselben Schlüssel und unveränderten Inhalt senden; das Ergebnis wird nicht nochmals erzeugt.
^[!-~]+$1 <= length <= 128preset: ID einer Vorlage aus dem Katalog. Optional documentKind (eine Belegart außer *) und operations (höchstens 20, wie bei changeLayout, ohne rename und restore).
application/json- body
Erfolg.
application/json- response
Ein Rechnungslayout.
appliesTo?array<string>|Belegarten, für die das Layout gilt; * für alle ohne eigenes. Leer, wenn es für keine gilt.
archivedAt?|Archiviert seit; null, solange nicht archiviert.
date-timeeditable?booleanFalse für das bisherige Layout classic: Es lässt sich nicht ändern.
id?stringID des Layouts (UUID); standard für das Layout einer Firma ohne eigenes.
module?stringModul mit Version, etwa modern@2. classic@1 ist das bisherige Layout ohne Einstellungen.
name?stringName, etwa „Angebote“.
own?booleanFalse, solange die Firma kein eigenes Layout hat; die erste Änderung legt es an.
spec?Die Gestaltung.
version?|Aktuelle Version; null ohne eigenes Layout.
curl --fail-with-body "https://app.bimetrics.de/api/layouts" \ -H "Authorization: Bearer $BIMETRICS_API_KEY" \ -H "Idempotency-Key: rechnung-2026-001" \ -H "Content-Type: application/json" \ -d '{"documentKind":"proposal","operations":[{"id":"friendly","op":"recipe"}],"preset":"modern"}'{ "appliesTo": [ "proposal" ], "archivedAt": null, "editable": true, "id": "bab564a1-86e9-45aa-98d7-2410bd59ba4b", "module": "modern@2", "name": "Angebote", "own": true, "spec": { "blocks": {}, "brandColor": null, "module": "modern", "preset": "modern", "recipe": "friendly", "schema": 2, "values": { "footer.pageNumber": "auto", "footer.titles": false, "header.rule": false, "items.head.style": "brand", "page.margin.left": 25, "title.brand": true } }, "version": { "actor": { "membershipId": "53cd10a9-c864-4dc3-a777-9860d59efe6c", "name": "Jana Hansen" }, "check": "passed", "createdAt": "2026-11-04T10:15:00Z", "id": "e1c5d5b2-3f0e-4f43-9a7c-2b7f0d5c8a11", "number": 2, "origin": "api", "originRef": null, "parentId": "5b0a3c7e-9d84-4e1f-a6b2-8c3d4e5f6a70", "summary": "Vorlage Modern verwendet, Rezept Freundlich" }}Layouts lesen GET
Liefert die Layouts der Firma mit Gestaltung (`spec`), aktueller Version und den Belegarten, für die sie gelten (`appliesTo`), auch archivierte. Ohne eigenes Layout steht dort eines mit der ID `standard` und `own: false`; die erste Änderung legt daraus ein eigenes an. Benötigt einen Schlüssel mit der Berechtigung `sales:read` oder `read`.
Layouts zuweisen PUT
Legt fest, welches Layout für welche Belegart gilt, wie „Gilt für“ im Editor. Offene Entwürfe einer Belegart drucken danach mit ihrem neuen Layout, ausgestellte behalten ihres. Mit `expected` antwortet die Route mit `409 LayoutVersionConflict`, wenn sich die Zuweisung seit dem Lesen geändert hat. Benötigt einen Schlüssel mit der Berechtigung `layout:write`.