Products API
Produkte auflisten
GET /products
| Parameter | Typ | Beschreibung |
|---|---|---|
search | string | Volltextsuche (Name, Barcode) |
category_id | UUID | Nach Kategorie filtern |
page | int | Seitennummer (default: 1) |
page_size | int | Einträge pro Seite (default: 50, max: 200) |
Response 200:
{
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Vollmilch 3.5%",
"barcode": "4014500513003",
"category": { "id": "...", "name": "Milchprodukte", "icon": "🧀", "color": "#fbbf24" },
"default_quantity_unit": "Stück",
"min_stock_amount": 2,
"total_stock": 5
}
],
"total": 42,
"page": 1,
"page_size": 50,
"pages": 1
}
Produkt abrufen
GET /products/{id}
Response 200: Vollständiges Produkt-Objekt mit Kategorie und Timestamps.
Produkt erstellen
POST /products
{
"name": "Vollmilch 3.5%",
"barcode": "4014500513003",
"category_id": "550e8400-...",
"default_quantity_unit": "Stück",
"min_stock_amount": 2
}
| Feld | Pflicht | Validierung |
|---|---|---|
name | ✅ | 1–300 Zeichen |
barcode | ❌ | Max. 100 Zeichen |
category_id | ❌ | Gültige UUID |
description | ❌ | Max. 5000 Zeichen |
min_stock_amount | ❌ | ≥ 0 |
default_quantity_unit | ❌ | Max. 50 Zeichen, default "Stück" |
default_best_before_days | ❌ | 0–36500 |
Response 201: Erstelltes Produkt.
Produkt aktualisieren
PATCH /products/{id}
Partial Update — nur die mitgesendeten Felder werden aktualisiert.
Response 200: Aktualisiertes Produkt.
Produkt löschen
DELETE /products/{id}
Löscht das Produkt und alle zugehörigen Bestandseinträge.
Response 204: Kein Body.