API-Landkarte
#
Alle Endpunkte der REST-API auf einer Seite: erst die Prozesse als
kompakte Ablauf-Diagramme, dann die Referenz - gruppiert nach der Art
der Daten (Konstanten, Stammdaten, Bewegungsdaten, Transfer und
Aktionen, Auswertungen). Über das Untermenü rechts springt man direkt
in jede Gruppe. Pfade sind ohne das Präfix /api/v1 notiert.
Prozesse im Überblick
#
Verkaufs-Belegfluss
#
Angebot .......... POST /quotes (+ /items)
│ Angebot → Auftrag:
│ POST /quotes/{id}/actions/convert-to-order
v
Auftrag .......... POST /sales-orders (+ /items)
│ buchen (reserviert): POST .../actions/book
│ wieder öffnen: POST .../actions/reopen
v
Lieferschein ..... POST /sales-orders/{id}/delivery-notes
│ Teillieferung über items im Body
│ SN/Chargen: GET+POST .../stock-details (nach 409)
│ buchen (Lager ab): POST .../actions/book
v
Rechnung ......... POST /delivery-notes/{id}/invoices
│ Sammelrechnung: POST /invoices/from-delivery-notes
│
├─ PDF ........ GET /invoices/{id}/pdf
├─ Zahlung .... POST /invoices/{id}/payments
├─ Gutschrift . POST /invoices/{id}/actions/credit
└─ Storno ..... POST /invoices/{id}/actions/cancel (löscht!)
PDF und Formulare (/reports, /{id}/pdf) gibt es genauso für
Angebote, Aufträge und Lieferscheine. Die drei Gutschriftsfälle
steuert mode (newOrder, reopenDeliveryNotes, reopenOrder).
Einkauf und Lager
#
Auftrag
│ Bestellvorschlag: GET /sales-orders/{id}/purchase-proposal
│ je Lieferant: POST /sales-orders/{id}/purchase-orders
v
Bestellung ....... POST /purchase-orders (+ /items)
│ buchen: POST .../actions/book
│ zurück: POST .../actions/cancel-booking
v
Wareneingang ..... POST /purchase-orders/{id}/goods-receipts
│ buchen (Bestand zu):
│ POST /warehouse/documents/{id}/actions/book
v
Bestand .......... GET /articles/{id}/stock/locations | movements
Weitere Wege in den Bestand (alles Buchungen, nie Setzen):
├─ Bestand setzen . POST /articles/{id}/stock/actions/set-quantity
├─ Umlagerung ..... POST /warehouse/bookings
├─ Inventur ....... POST /warehouse/inventories (+ Aktionen)
└─ Produktion ..... POST /articles/{id}/parts-list/actions/produce
Kasse: der Tageszyklus
#
Anmelden ......... POST /cash-registers/{id}/actions/login
│ PIN-Gate, wenn am Kassierer hinterlegt
│ Einlage (Wechselgeld): POST .../actions/deposit
v
Bon .............. POST /cash-registers/{id}/receipts
│ Positionen: POST /cash-receipts/{id}/items
│ Kunde: POST .../actions/set-customer
│ verwerfen: DELETE /cash-receipts/{id}
v
Kassieren ........ POST /cash-receipts/{id}/actions/pay
│ bucht Lager, schreibt fest, wartet auf die TSE
│ Bon-QR: GET /cash-receipts/{id}/tse
│ Retoure: POST .../actions/cancel (Storno-Bon)
v
Tagesende
│ Entnahme: POST .../actions/withdraw (Grund Pflicht)
v
Z-Abschluss ...... POST /cash-registers/{id}/actions/close
(counted = Zählung, bucht Differenzen)
Zahlungen und Offene Posten
#
Rechnung ......... paidAmount / balance direkt am Beleg
│ Zahlung erfassen: POST /invoices/{id}/payments
│ (Zahlungseingang = negativer amount)
│ Zahlung löschen: DELETE .../payments/{paymentId}
v
OP-Liste ......... GET /open-items?asOf= (Skonto zum Stichtag)
│ Mahn-Sicht: GET /open-items?view=dunning
│ Rest ausbuchen: POST /invoices/{id}/actions/write-off
v
Saldo 0 => OP verschwindet (grossTotal + Summe amounts = 0)
Konstanten und Kataloge
#
Nachschlagedaten, die sich selten ändern - typisch einmal beim
Client-Start laden.
Lookups
#
| Endpunkt | Zweck |
|---|
GET /lookups | Alle Kataloge (Mengeneinheiten, Länder, Warengruppen, …) |
GET /lookups/{name} | Einzelner Katalog als value/label-Liste |
Kassen-Stamm
#
| Endpunkt | Zweck |
|---|
GET /cash-registers | Kassen mit Zustand (offener Bon, hasTse) |
GET /cashiers | Kassierer für die Anmelde-Auswahl (hasPin) |
GET /cash-payment-methods | Buchbare Zahlarten (isCash für Rückgeld) |
Lager-Stamm
#
| Endpunkt | Zweck |
|---|
GET /warehouse/groups | Lagergruppen (Standorte) |
GET /warehouse/locations | Physische Lagerorte |
| Endpunkt | Zweck |
|---|
GET /{beleg}/reports | Formulare je Belegart mit isDefault (quotes, sales-orders, delivery-notes, invoices) |
Stammdaten
#
Datensätze mit Lebenszyklus: anlegen, ändern, synchronisieren
(changedSince + /ids), löschen.
Adressen und Kontakte
#
| Endpunkt | Zweck |
|---|
GET/POST /addresses, GET/PATCH/DELETE /addresses/{id} | Adressen (CRUD) |
GET /addresses/ids, GET /addresses/by-match/{match} | Sync-Abgleich, Zugriff über Match |
GET/POST /addresses/{id}/contacts (+PATCH/DELETE .../{id}) | Ansprechpartner |
Artikel
#
| Endpunkt | Zweck |
|---|
GET/POST /articles, GET/PATCH/DELETE /articles/{id} | Artikel (CRUD) |
GET /articles/ids, GET /articles/by-number/{number} | Sync-Abgleich, Zugriff über Artikelnummer |
GET /articles/{id}/price | Preisfindung (Kunde/Menge) |
GET/POST/DELETE /articles/{id}/parts-list (+items, recalc) | Stückliste (Jumbo) pflegen |
Lieferanten und Mitarbeiter
#
| Endpunkt | Zweck |
|---|
GET/POST /suppliers, GET/PATCH/DELETE /suppliers/{id} | Lieferanten (CRUD) |
GET/POST/PATCH/DELETE /suppliers/{id}/articles | Lieferantenartikel mit EK-Preisen |
GET /employees, GET /employees/{id} | Mitarbeiter (lesend) |
Serviceartikel (Geräte)
#
| Endpunkt | Zweck |
|---|
GET/POST /service-articles, GET/PATCH/DELETE .../{id} | Geräte (CRUD), plus ids und by-number |
GET /addresses/{id}/service-articles | Geräte eines Kunden |
GET /articles/{id}/service-articles | Geräte eines Stamm-Artikels |
Merkmale (categories)
#
Für Artikel, Adressen und Serviceartikel:
| Endpunkt | Zweck |
|---|
GET /{entity}/categories | Merkmalbaum (folder/manual/smart) |
GET/PUT/PATCH /{entity}/{id}/categories | Zuordnungen lesen / ersetzen / ändern |
POST /{entity}/categories, PATCH/DELETE .../categories/{nodeId} | Baumpflege (Scope categories:manage) |
Listen-Filter ?categoryAnd/Or/Not= | auf allen Listen der drei Entitäten |
Bilder und DMS-Dateien
#
| Endpunkt | Zweck |
|---|
GET/PUT/DELETE /{entity}/{id}/image (+/preview) | Bilder: Adressen, Artikel, Serviceartikel |
GET/POST/DELETE /{entity}/{id}/files, GET .../files/download | DMS: Adressen, Artikel, alle 4 Belegarten, Lieferanten, Serviceartikel |
Bewegungsdaten
#
Belege und Buchungssätze - entstehen im Tagesgeschäft.
Angebote und Aufträge
#
| Endpunkt | Zweck |
|---|
GET/POST /quotes, GET/PATCH /quotes/{id}, GET/POST .../items | Angebote, plus by-number |
GET/POST /sales-orders, GET/PATCH /sales-orders/{id}, GET/POST .../items | Aufträge, plus by-number |
Lieferscheine und Rechnungen
#
| Endpunkt | Zweck |
|---|
GET /delivery-notes, GET .../{id}, GET .../{id}/items, by-number | Lieferscheine (lesend; entstehen per Transfer) |
GET/POST /delivery-notes/{id}/stock-details | SN-/Chargen-Erfassung |
GET /invoices, GET .../{id}, GET .../{id}/items, by-number | Rechnungen (lesend; entstehen per Transfer) |
Bestellungen und Wareneingang
#
| Endpunkt | Zweck |
|---|
GET/POST /purchase-orders, GET .../{id}, by-number | Bestellungen |
GET/POST .../{id}/items, PATCH .../items/{itemId} | Positionen |
Kassenbons
#
| Endpunkt | Zweck |
|---|
POST /cash-registers/{id}/receipts | Bon eröffnen (Lazy-Modell: offener Bon wird fortgesetzt) |
POST/DELETE /cash-receipts/{id}/items(/{itemId}) | Positionen erfassen / stornieren |
POST /cash-receipts/{id}/actions/set-customer | Kunde zuordnen (zieht Preisliste) |
DELETE /cash-receipts/{id} | Offenen Bon verwerfen |
GET /cash-receipts (+/items), GET /cash-closings | Bons und Z-Berichte (lesend) |
GET /cash-receipts/{id}/tse | TSE-Daten + QR (Nachdruck) |
Zahlungen und Offene Posten
#
| Endpunkt | Zweck |
|---|
GET/POST /invoices/{id}/payments | Zahlungen lesen / erfassen (Eingang negativ) |
DELETE /invoices/{id}/payments/{paymentId} | Zahlung löschen (Kasse/SEPA geschützt) |
GET /open-items | OP-Liste (asOf, paymentTerms, customerId, view=dunning) |
Lagerbewegungen und Inventur
#
| Endpunkt | Zweck |
|---|
GET /articles/{id}/stock | Bestands-Kurzinfo |
GET /articles/{id}/stock/locations / movements | Bestand je Ort, Bewegungen |
POST /articles/{id}/stock/actions/set-quantity | Bestand setzen (Differenzbuchung mit Kommentar) |
POST /warehouse/bookings | Warenbewegung / Umlagerung |
GET/POST /warehouse/inventories | Inventuren |
Transfer und Aktionen
#
Die Wandlungen zwischen Belegarten und alles, was bucht, storniert
oder wieder öffnet - jeweils über die originalen EULANDA-SP-Ketten.
Wandlungen (Transfer)
#
| Endpunkt | Zweck |
|---|
POST /quotes/{id}/actions/convert-to-order | Angebot → Auftrag |
POST /sales-orders/{id}/delivery-notes | Auftrag → Lieferschein (Teillieferung via items) |
POST /delivery-notes/{id}/invoices | Lieferschein → Rechnung |
POST /invoices/from-delivery-notes | Mehrere Lieferscheine → Sammelrechnung |
POST /sales-orders/{id}/purchase-orders | Auftrag → Bestellungen je Lieferant |
POST /purchase-orders/{id}/goods-receipts | Bestellung → Wareneingang |
POST /service-articles/{id}/actions/create-order / create-quote | Gerät → Auftrag/Angebot |
Buchen und Wiedereröffnen
#
| Endpunkt | Zweck |
|---|
POST /sales-orders/{id}/actions/book / reopen | Auftrag buchen (reserviert) / wieder öffnen |
POST /delivery-notes/{id}/actions/book | Lieferschein buchen (Lager ab) |
POST /purchase-orders/{id}/actions/book / cancel-booking | Bestellung buchen / Buchung stornieren |
POST /warehouse/documents/{id}/actions/book | Lagerbeleg (z.B. Wareneingang) buchen |
POST /articles/{id}/parts-list/actions/produce | Stückliste fertigen / zerlegen |
POST /warehouse/inventories/{id}/actions/take-over-stock / complete / cancel | Inventur-Ablauf |
Storno und Gutschrift
#
| Endpunkt | Zweck |
|---|
POST /invoices/{id}/actions/credit | Direktgutschrift (mode: newOrder, reopenDeliveryNotes, reopenOrder) |
POST /invoices/{id}/actions/cancel | Rechnung stornieren (löscht!) |
POST /invoices/{id}/actions/write-off | Restbetrag ausbuchen |
POST /cash-receipts/{id}/actions/cancel | Storno-Bon zu kassiertem Beleg (TSE inklusive) |
Kassen-Aktionen
#
| Endpunkt | Zweck |
|---|
POST /cash-registers/{id}/actions/login / logout | An-/Abmelden (PIN-Gate) |
POST .../actions/deposit / withdraw | Einlage / Entnahme |
POST /cash-receipts/{id}/actions/pay | Kassieren (bucht Lager, TSE, Rückgeld) |
POST /cash-registers/{id}/actions/close | Z-Abschluss mit Zählung |
PDF-Ausgabe
#
| Endpunkt | Zweck |
|---|
GET /{beleg}/{id}/pdf | Beleg als PDF (?form= wählt das Formular, sonst Standard) |
Auswertungen
#
Statistik
#
| Endpunkt | Zweck |
|---|
GET /statistics/revenue | Umsatz-/Ertrags-Cube (groupBy month/customer/article/…) |
GET /statistics/kpi | Kennzahlen Jahr/Vorjahr/Monat/Vormonat (Rechnung + Kasse) |
GET /statistics/product-groups | Warengruppen-Monatsstatistik |
Historien und Rückverfolgung
#
| Endpunkt | Zweck |
|---|
GET /service-articles/{id}/history | Gerätehistorie über alle Belegarten |
GET /articles/{id}/idents | Verfügbare Seriennummern/Chargen |
GET /idents/{id}/history | Rückverfolgung einer SN/Charge |
GET /open-items?view=dunning | Mahn-Sicht (Mahnstufe, Überfälligkeit) |
System und Infrastruktur
#
| Endpunkt | Zweck |
|---|
GET /health | Lebenszeichen + DB-Check (anonym) |
GET /info | Produkt- und Versionsinfo (anonym) |
GET /openapi.json | Maschinenlesbare Spezifikation (anonym) |
GET/PUT/DELETE /registry/value, GET /registry/subtree | SQL-Registry (Pfad-Allowlist je Client) |
Die Details zu jedem Bereich - Feld-Glossare, Beispiele in PowerShell
und curl, Fehlercodes - stehen auf den jeweiligen Unterseiten (siehe
Einleitung).