Skip to content

API: core-business-entities

Ort: work7_laendletech/docs/api/api-core-business-entities.md

Überblick

  • Base-URL / Prefix: /api/projects, /api/customers, /api/offers, /api/invoices, /api/rapport, /api/rapports, /api/appointments, /api/leave
  • Auth: Session via NextAuth
  • Format: JSON

Endpoint(s)

GET /api/projects

Zweck:

Listet Projekte mit Pagination und Filterung.

Request

FeldTypPflichtBeschreibung
pagequery numberneinSeitennummer
pageSizequery numberneinSeitengroesse
companyquery stringneinFirmenkontext
qquery stringneinSuche nach Nummer, Name, Kunde

Response 200

json
{
  "projects": [
    {
      "id": 1,
      "project_number": "PR-1234-0001",
      "name": "Sanierung Schule",
      "status": "active"
    }
  ],
  "pageInfo": {
    "page": 1,
    "pageSize": 50,
    "total": 1,
    "totalPages": 1,
    "hasNext": false,
    "hasPrev": false
  }
}

Fehler

HTTPBedeutungBody-Hinweis
500ServerfehlerStandard-Error-Response

POST /api/projects

Zweck:

Erstellt ein Projekt und generiert bei Bedarf automatisch eine Projektnummer.

PATCH /api/projects

Zweck:

Aktualisiert erlaubte Projektfelder auf Basis von id und updates.

GET|POST|PATCH /api/customers

Zweck:

Kundenlisten abrufen, Kunden anlegen und aktualisieren.

GET|POST|PATCH|DELETE /api/offers

Zweck:

Angebote listen, anlegen, aktualisieren und loeschen; Loeschung nur in bestimmten Statuspfaden.

GET /api/offers/[id]

Zweck:

Einzelnes Angebot laden.

GET|POST /api/offers/[id]/items

Zweck:

Positionsverwaltung pro Angebot.

POST /api/offers/[id]/send-email

Zweck:

Versendet ein Angebot per E-Mail.

GET|POST|DELETE /api/invoices

Zweck:

Rechnungen listen, anlegen und Draft-Rechnungen loeschen.

GET|PATCH|DELETE /api/invoices/[id]

Zweck:

Einzelne Rechnung abrufen, aktualisieren oder loeschen.

GET|POST|PATCH|DELETE /api/invoices/[id]/items

Zweck:

Rechnungspositionen verwalten.

POST /api/invoices/[id]/send

Zweck:

Rechnung versenden.

POST /api/invoices/[id]/pay

Zweck:

Zahlung oder Zahlungsstatus verarbeiten.

POST /api/invoices/from-offer

Zweck:

Erzeugt Rechnung aus Angebot.

POST /api/invoices/from-rapports

Zweck:

Erzeugt Rechnung aus Rapporten.

GET|POST|PUT|DELETE /api/rapport

Zweck:

Hauptendpunkt fuer Rapporte.

GET /api/rapports/[id]

Zweck:

Rapportdetails abrufen.

GET|POST|PUT /api/rapports/[id]/entries

Zweck:

Rapport-Eintraege listen und verwalten.

PUT|DELETE /api/rapports/[id]/entries/[entryId]

Zweck:

Spezifischen Eintrag aendern oder entfernen.

GET|POST|PUT /api/rapports/[id]/materials

Zweck:

Materialien pro Rapport verwalten.

PUT|DELETE /api/rapports/[id]/materials/[materialId]

Zweck:

Spezifisches Material aktualisieren oder loeschen.

POST /api/rapports/[id]/send-email

Zweck:

Rapport per E-Mail versenden.

GET|POST|PATCH /api/appointments

Zweck:

Termine listen, anlegen und aendern.

POST /api/appointments/[id]/status

Zweck:

Terminstatus aktualisieren.

POST /api/appointments/[id]/notifications

Zweck:

Termin-Benachrichtigungen ausloesen.

GET /api/appointments/capacity

Zweck:

Verfuegbarkeiten oder Kapazitaet berechnen.

GET|POST /api/leave/requests

Zweck:

Abwesenheitsantraege listen und einreichen.

POST /api/leave/requests/[id]/decision

Zweck:

Antrag genehmigen oder ablehnen.

Rate Limiting / Limits

  • Max Requests: Nicht durchgaengig dokumentiert; Business-Endpunkte nutzen Standard-Sessionschutz
  • Timeout: Standard Next.js Route Handler
  • Max Payload: JSON, je nach Entitaet mittelgross

Breaking Changes / Versionierung

  • Kein explizites API-Versioning; Aenderungen an Feldnamen oder Statuswerten sind potentiell breaking.

Beispiel (curl)

bash
curl -sS "http://localhost:3000/api/projects?page=1&pageSize=20" \
  -H "Cookie: next-auth.session-token=..."

Verwandte Notes

  • Feature-Spec: work7
  • OpenAPI/Schema: /api/swagger

Follow-ups

  • [ ] Postman Collection prüfen: passt es in bestehende Collection? Sonst neu anlegen → work7_laendletech/src/postman/ 📅 2026-04-16
  • [ ] In Feature-Spec verlinken falls zugehörig 📅 2026-04-16

Work7 · Software für Handwerksbetriebe