Entwickler
Ein Schlüssel, eine Kopfzeile, Ihre eigenen Zahlen.
Sie legen den Schlüssel in KRONENWERK selbst an und wählen dabei aus, was er darf. Damit lesen Sie Ihre Kunden, Ihre Rechnungen, Ihre Vorgänge und Ihre offenen Posten — und legen Kunden, Vorgänge und Rechnungsentwürfe an. Ereignisse aus dem laufenden Betrieb gehen an eine Adresse, die Sie eintragen: signiert und mit Wiederholung.
Zugang
Zwei Zeilen, und Sie sind verbunden.
Der Schlüssel wird genau einmal angezeigt; gespeichert wird nur sein Hashwert. Ein Testschlüssel und ein Produktivschlüssel sind zwei getrennte Schlüssel mit zwei getrennten Präfixen, und ein Schlüssel kann nie mehr, als die Person durfte, die ihn ausgestellt hat.
| Basisadresse | Kopfzeile |
|---|---|
| https://kronenwerk.org/api/extern/v1 | Authorization: Bearer greif_live_… |
Was Sie lesen
Jede Adresse verlangt ihren eigenen Bereich.
Ein Schlüssel bekommt nur die Rechte, die Sie ihm geben. Fehlt eines, antwortet der Weg mit 403 statt mit Daten — und das gilt auch für Ihren eigenen Schlüssel.
| Pfad | Bereich | Was zurückkommt |
|---|---|---|
| GET /api/extern/v1/me | Der Schlüssel selbst: Firma, Umgebung, Geltungsbereiche, letzte Nutzung. Der erste Aufruf, den man schreibt. |
|
| GET /api/extern/v1/customers | customers:read | Eine Seite Kunden und Lieferanten, neueste zuerst. |
| GET /api/extern/v1/customers/{id} | customers:read | Ein einzelner Kunde mit allen Stammdaten. |
| POST /api/extern/v1/customers | customers:write | Legt einen Kunden an. Die Kundennummer zieht KRONENWERK aus der eigenen Folge des Betriebs. |
| GET /api/extern/v1/invoices | invoices:read | Ausgestellte Rechnungen, filterbar nach Zahlungszustand und Ausstellungsdatum. |
| GET /api/extern/v1/invoices/{number} | invoices:read | Eine ausgestellte Rechnung, so wie das Archiv sie eingefroren hat. |
| POST /api/extern/v1/invoices/drafts | invoices:write customers:read companies:read | Beginnt einen Rechnungsentwurf für einen Kunden. Ausgestellt wird er dadurch nicht. |
| GET /api/extern/v1/transactions | transactions:read | Vorgänge — Aufträge, Projekte, Fertigungslose — mit Stufe und Fälligkeit, neueste zuerst. Mit period, from und to auf einen Zeitraum eingrenzen; gerechnet wird über den Beginn des Vorgangs. |
| POST /api/extern/v1/transactions | transactions:write transactions:read | Legt einen Vorgang an. Nummer, Stufe und Verlauf entstehen wie im Bildschirm des Produkts. |
| PATCH /api/extern/v1/transactions/{id} | transactions:write transactions:read | Ändert einen bestehenden Vorgang. Weggelassene Felder bleiben, wie sie sind; "none" als Kunde entfernt den Kunden. |
| GET /api/extern/v1/reports/outstanding | reports:read | Offene Forderungen und Verbindlichkeiten zum heutigen Tag, getrennt nach Richtung. |
| GET /api/extern/v1/webhooks | webhooks:write | Die Webhook-Ziele dieser Firma. |
| GET /api/extern/v1/webhooks/events | webhooks:write | Die Ereignisse, die ein Ziel abonnieren kann. |
| POST /api/extern/v1/webhooks | webhooks:write | Ein Ziel anlegen; das Signaturgeheimnis steht einmal in der Antwort. |
| DELETE /api/extern/v1/webhooks/{id} | webhooks:write | Ein Ziel abschalten; das Zustellprotokoll bleibt. |
Ein Beispiel
Ein Aufruf, eine Antwort.
Jeder Betrag ist eine ganze Zahl in der kleinsten Einheit seiner Währung, nie ein formatierter Text. Ein Datum ist ein Kalendertag ohne Zeitzone. So kann kein Trennzeichen falsch gelesen und kein Tag um einen verschoben werden.
| Anfrage | Antwort |
|---|---|
| GET https://kronenwerk.org/api/extern/v1/invoices?status=OPEN&size=1 | {"data":[{"number":"R-2026-0001","issuedOn":"2026-04-02","buyer":"Kellermann GmbH","currency":"EUR","gross":{"minor":105910,"currency":"EUR"},"outstanding":{"minor":105910,"currency":"EUR"},"paymentState":"OPEN","overdue":false}],"page":0,"size":1,"total":1,"more":false} |
Webhooks
Sechs Ereignisse, ausgelöst von wirklicher Arbeit.
Sie tragen eine Adresse ein und wählen aus, worüber sie unterrichtet werden soll. Jede Zustellung trägt eine feste Ereigniskennung, die über alle Wiederholungen gleich bleibt — damit ein Empfänger, der sie einmal verarbeitet hat, jede spätere Kopie verwerfen kann.
| Ereignis | Wann es gesendet wird |
|---|---|
| invoice.issued | Eine Rechnung wurde ausgestellt: die Nummer ist vergeben, das Dokument ist archiviert und unveränderlich. |
| invoice.paid | Eine Rechnung ist vollständig ausgeglichen — durch eine Zahlung, gleich auf welchem Weg sie erfasst wurde. |
| invoice.cancelled | Eine Rechnung wurde storniert: es gibt einen Stornobeleg, der sie vollständig aufhebt. Gelöscht wird nichts. |
| purchase.recorded | Eine Eingangsrechnung oder eine Ausgabe wurde erfasst, mit Lieferant, Datum und Beträgen. |
| payment.recorded | Eine Zahlung wurde erfasst, mit Richtung, Betrag, Tag und dem Beleg, den sie ausgleicht. |
| bank.transaction.imported | Ein Bankumsatz wurde eingelesen und steht zur Zuordnung bereit. |
Signatur
Jede Zustellung ist unterschrieben, und die Unterschrift trägt einen Zeitpunkt.
Beim Eintragen der Adresse bekommen Sie ein Geheimnis — einmal. Prüfen Sie damit den Zeitstempel und den Rumpf zusammen, nicht den Rumpf allein: eine Unterschrift ohne Zeitpunkt bleibt für immer gültig und kann Ihnen später erneut untergeschoben werden.
| Kopfzeile | So prüfen Sie sie |
|---|---|
| KRONENWERK-Signature: t=1775462400,v1=… | Bilden Sie HMAC mit SHA-256 über den Zeitstempel, einen Punkt und den unveränderten Rumpf, mit dem Geheimnis als Schlüssel, und vergleichen Sie das Ergebnis mit v1. Weisen Sie eine Zustellung ab, deren Zeitstempel mehr als fünf Minuten von Ihrer Uhr abweicht. |
Die Grenze
Ein Entwurf ist erlaubt. Ein Versand ist es nicht.
Der Unterschied zwischen etwas vorbereiten und etwas auslösen ist der Kern dieses ganzen Vorhabens, und er wird in den Diensten stehen und nicht in einer Oberfläche — was ein Bildschirm verbietet, verbietet nur dieser Bildschirm. Ein KI-System darf nie ein Weg um die finanziellen Kontrollen herum sein.
| Vorbereiten | Auslösen |
|---|---|
| Einen Angebotsentwurf anlegen | Das Angebot verschicken |
| Einen Rechnungsentwurf anlegen | Die Rechnung ausstellen |
| Eine Zahlungszuordnung vorschlagen | Die Zahlung buchen |
| Eine Erstattung vorschlagen | Geld zurückzahlen |