{"info":{"_postman_id":"agraronline-partner-api-v1-0-0","name":"agrar online Partner-API v1.0.0","description":"Die agrar online Partner-API ermöglicht externen Systemen (DMS, CRM, ERP etc.) den kontrollierten Zugriff auf Ihre Daten.\n\n**Auth:** X-API-Key Header. Verwaltung unter Optionen → API-Zugänge.\n\n**Mandantentrennung:** Jeder Key ist exklusiv einer Firma zugeordnet.\n\n**Rate Limit:** 10.000 Anfragen/Tag.\n\n**Verwendung:**\n1. Collection in Postman importieren.\n2. Variable `api_key` mit dem persoenlichen API-Key (Format `ak_...`) befuellen.\n3. Optional: `base_url` an die richtige Umgebung anpassen (Default: https://api.agrar.online).\n4. Requests aus den Ordnern feuern.\n\nDer API-Key wird in jeder Request automatisch als `X-API-Key`-Header mitgeschickt.","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json","version":{"major":1,"minor":0,"patch":0,"identifier":"1.0.0"}},"auth":{"type":"apikey","apikey":[{"key":"key","value":"X-API-Key","type":"string"},{"key":"value","value":"{{api_key}}","type":"string"},{"key":"in","value":"header","type":"string"}]},"variable":[{"key":"base_url","value":"https://api.agrar.online","type":"string","description":"Basis-URL der API (PROD/DEV umschalten)"},{"key":"api_key","value":"","type":"string","description":"API-Key aus Optionen -> API-Zugaenge (Format: ak_...)"}],"item":[{"name":"Artikel","description":"Artikel-Endpoints","item":[{"name":"Artikel abrufen","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/artikel","host":["{{base_url}}"],"path":["api","v1","artikel"],"query":[{"key":"suche","value":"","disabled":true},{"key":"gruppe_id","value":"","disabled":true},{"key":"limit","value":"100","disabled":true}],"variable":[]},"description":"Scope: artikel:read"},"response":[]},{"name":"Artikelgruppen","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/artikelgruppen","host":["{{base_url}}"],"path":["api","v1","artikelgruppen"],"query":[],"variable":[]},"description":"Scope: artikelgruppen:read"},"response":[]}]},{"name":"Belege","description":"Belege-Endpoints","item":[{"name":"Archiviertes PDF holen (DMS)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/belege/:id/pdf","host":["{{base_url}}"],"path":["api","v1","belege",":id","pdf"],"query":[],"variable":[{"key":"id","value":"","description":"Pfad-Parameter"}]},"description":"Scope: belege:read — liefert das aktuellste archivierte PDF (datei_base64) eines finalisierten Belegs."},"response":[]},{"name":"Beleg + Positionen","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/belege/:id","host":["{{base_url}}"],"path":["api","v1","belege",":id"],"query":[],"variable":[{"key":"id","value":"","description":"Pfad-Parameter"}]},"description":"Scope: belege:read"},"response":[]},{"name":"Beleg aktualisieren","request":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/belege/:id","host":["{{base_url}}"],"path":["api","v1","belege",":id"],"query":[],"variable":[{"key":"id","value":"","description":"Pfad-Parameter"}]},"description":"Scope: belege:write — Body siehe POST","body":{"mode":"raw","raw":"{\n  \"status\": \"Fertig\",\n  \"notizen\": \"Aktualisiert via Partner-API\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Beleg anlegen (z.B. EK-Lieferschein, VK-Lieferschein aus Jira-Push)","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/belege","host":["{{base_url}}"],"path":["api","v1","belege"],"query":[],"variable":[]},"description":"Scope: belege:write — Routet via intern geroutet auf /belege, alle Hooks (Charge-Anlage, Lager-Buchung, Steuer-Logik) greifen automatisch.\n\n**Dashboard-Modus (Jira-Integration etc.)**: statt interner IDs koennen `kundennummer` + pro Position `artikelnr` mitgegeben werden — beide werden auf die internen IDs aufgeloest, bei unbekannten Werten kommt 400 (`KUNDE_NICHT_GEFUNDEN` / `ARTIKEL_NICHT_GEFUNDEN`).\n\n**Auto-Pricing**: wenn `ep_netto` pro Position nicht gesetzt ist, wird der Preis aus dem Artikel-Stamm gezogen — bei `staffelpreise_aktiv=true` aus der passenden Staffel (groesste `ab_menge` <= position.menge). `mwst_satz` wird genauso aus dem Stamm uebernommen wenn nicht gesetzt. Mit `auto_price: false` im Body abschaltbar.\n\n**Idempotenz**: mit `external_ref` (z.B. Jira-Issue-Key) liefert ein zweiter Aufruf den bestehenden Beleg zurueck (Antwort enthaelt `idempotent: true`).\n\nPro Position koennen optional `fremde_charge_nr`, `mhd`, `herkunftsland`, `biozertifikat_id` mitgegeben werden — bei chargenpflichtigen Artikeln wird die Charge mit diesen Infos angelegt.","body":{"mode":"raw","raw":"{\n  \"beleg_typ\": \"LS\",\n  \"kundennummer\": \"K-2001\",\n  \"external_ref\": \"JIRA-1234\",\n  \"auto_price\": true,\n  \"beleg_datum\": \"2026-05-19\",\n  \"notizen\": \"Beleg via Partner-API angelegt\",\n  \"items\": [\n    {\n      \"artikelnr\": \"ART-100\",\n      \"menge\": 5,\n      \"einheit\": \"kg\",\n      \"ep_netto\": 12.5,\n      \"mwst_satz\": 7,\n      \"bezeichnung\": \"Beispiel-Artikel\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Belege abrufen","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/belege","host":["{{base_url}}"],"path":["api","v1","belege"],"query":[{"key":"typ","value":"","disabled":true,"description":"(AN|AU|LS|RE|BS|EL|ER)"},{"key":"status","value":"","disabled":true},{"key":"von","value":"","disabled":true},{"key":"bis","value":"","disabled":true},{"key":"kunden_id","value":"","disabled":true},{"key":"limit","value":"50","disabled":true}],"variable":[]},"description":"Scope: belege:read"},"response":[]},{"name":"Liste aller neuen Dokumente seit Datum (DMS)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/dokumente","host":["{{base_url}}"],"path":["api","v1","dokumente"],"query":[{"key":"since","value":"","disabled":true,"description":"Stichdatum YYYY-MM-DD"},{"key":"typen","value":"","disabled":true,"description":"Komma-separierte Beleg-Typen, z.B. RE,GS"},{"key":"status","value":"","disabled":true,"description":"Optionaler Status-Filter"}],"variable":[]},"description":"Scope: belege:read — typischer DMS-Polling-Endpunkt: liefert finalisierte Belege seit `since` mit pdf_url-Verweis."},"response":[]}]},{"name":"Chargen","description":"Chargen-Endpoints","item":[{"name":"Charge anlegen (Stand-Alone)","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/chargen","host":["{{base_url}}"],"path":["api","v1","chargen"],"query":[],"variable":[]},"description":"Scope: chargen:write — fuer Daten-Migration (Anfangs-Bestaende). Fuer echte Wareneingaenge besser POST /api/v1/belege (EL/ER) verwenden — der legt die Charge inline an UND bucht den Lager-Zugang.","body":{"mode":"raw","raw":"{\n  \"artikel_id\": 47,\n  \"charge_nr\": \"CH-2026-001\",\n  \"fremde_charge_nr\": \"L-987654\",\n  \"mhd\": \"2027-12-31\",\n  \"herkunftsland\": \"DE\",\n  \"eingang_menge\": 1000,\n  \"eingang_ep\": 12.5,\n  \"einheit\": \"kg\",\n  \"niederlassung_id\": 1,\n  \"lagerhalle_id\": 1,\n  \"eingang_quelle\": \"manuell\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Chargen abrufen","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/chargen","host":["{{base_url}}"],"path":["api","v1","chargen"],"query":[{"key":"artikel_id","value":"","disabled":true},{"key":"partner_id","value":"","disabled":true},{"key":"mit_bestand","value":"","disabled":true,"description":"Wenn true, nur Chargen mit Bestand>0"},{"key":"limit","value":"200","disabled":true}],"variable":[]},"description":"Scope: chargen:read — Liste aller Chargen mit aktuellem Bestand."},"response":[]}]},{"name":"Info","description":"Info-Endpoints","item":[{"name":"API-Info","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1","host":["{{base_url}}"],"path":["api","v1"],"query":[],"variable":[]},"description":"Gibt API-Version, Endpunkte und Docs-URL zurück (kein Auth nötig)"},"response":[]}]},{"name":"Kontrakte","description":"Kontrakte-Endpoints","item":[{"name":"Kontrakte","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/kontrakte","host":["{{base_url}}"],"path":["api","v1","kontrakte"],"query":[],"variable":[]},"description":"Scope: kontrakte:read"},"response":[]}]},{"name":"Kunden","description":"Kunden-Endpoints","item":[{"name":"Dokument hochladen","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/kunden/:id/dokumente","host":["{{base_url}}"],"path":["api","v1","kunden",":id","dokumente"],"query":[],"variable":[{"key":"id","value":"","description":"Pfad-Parameter"}]},"description":"Scope: dokumente:write — Base64-codiert","body":{"mode":"raw","raw":"{\n  \"dateiname\": \"lieferschein-2026-001.pdf\",\n  \"inhalt_base64\": \"JVBERi0xLjQKJ... (Base64 des PDFs hier einfuegen)\",\n  \"beschreibung\": \"Eingangs-Lieferschein vom Lieferanten\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Kunden abrufen","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/kunden","host":["{{base_url}}"],"path":["api","v1","kunden"],"query":[{"key":"suche","value":"","disabled":true,"description":"Freitextsuche nach Name/E-Mail"},{"key":"typ","value":"","disabled":true,"description":"(VK|EK|BEIDE)"},{"key":"limit","value":"100","disabled":true},{"key":"offset","value":"0","disabled":true}],"variable":[]},"description":"Scope: kunden:read"},"response":[]},{"name":"Kunden abrufen (Einzeln)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/kunden/:id","host":["{{base_url}}"],"path":["api","v1","kunden",":id"],"query":[],"variable":[{"key":"id","value":"","description":"Pfad-Parameter"}]},"description":"Scope: kunden:read"},"response":[]},{"name":"Kunden aktualisieren","request":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/kunden/:id","host":["{{base_url}}"],"path":["api","v1","kunden",":id"],"query":[],"variable":[{"key":"id","value":"","description":"Pfad-Parameter"}]},"description":"Scope: kunden:write","body":{"mode":"raw","raw":"{\n  \"telefon\": \"+49 30 9876543\",\n  \"notizen\": \"Aktualisiert via Partner-API\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Kunden anlegen","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/kunden","host":["{{base_url}}"],"path":["api","v1","kunden"],"query":[],"variable":[]},"description":"Scope: kunden:write — Routet via intern geroutet auf /kunden, alle Defaults (kundennr-Generierung, staat='DE', zahlungsziel_tage=30, partner_typen=['kunde']) greifen. Mit `kundennr` im Body kann eine manuelle Nummer vergeben werden — bei Duplikat in der Firma kommt 409 KUNDENNR_BEREITS_VERGEBEN.","body":{"mode":"raw","raw":"{\n  \"kundennr\": \"K-2001\",\n  \"nachname_firma\": \"Mustermann AG\",\n  \"anrede\": \"Firma\",\n  \"vorname\": \"\",\n  \"strasse\": \"Hauptstr. 12\",\n  \"plz\": \"12345\",\n  \"ort\": \"Musterstadt\",\n  \"staat\": \"DE\",\n  \"email\": \"kontakt@mustermann.example\",\n  \"telefon\": \"+49 30 1234567\",\n  \"zahlungsziel_tage\": 30,\n  \"steuernummer\": \"123/456/78901\",\n  \"ust_id\": \"DE123456789\",\n  \"partner_typen\": [\n    \"kunde\"\n  ],\n  \"notizen\": \"Erfasst via Partner-API\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"Produktion","description":"Produktion-Endpoints","item":[{"name":"PA Detail (mit Inputs/Outputs)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/produktionsauftraege/:id","host":["{{base_url}}"],"path":["api","v1","produktionsauftraege",":id"],"query":[],"variable":[{"key":"id","value":"","description":"Pfad-Parameter"}]},"description":"Scope: produktion:read"},"response":[]},{"name":"PA abrufen","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/produktionsauftraege","host":["{{base_url}}"],"path":["api","v1","produktionsauftraege"],"query":[{"key":"status","value":"","disabled":true,"description":"(schwebend|geplant|in_bearbeitung|erledigt|storniert)"},{"key":"datum_von","value":"","disabled":true},{"key":"datum_bis","value":"","disabled":true},{"key":"artikel_id","value":"","disabled":true}],"variable":[]},"description":"Scope: produktion:read"},"response":[]},{"name":"PA anlegen","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/produktionsauftraege","host":["{{base_url}}"],"path":["api","v1","produktionsauftraege"],"query":[],"variable":[]},"description":"Scope: produktion:write — Body wird an internen /produktionsauftraege weitergeleitet.","body":{"mode":"raw","raw":"{\n  \"rezeptur_id\": 1,\n  \"faktor\": 1,\n  \"produktions_datum\": \"2026-05-19\",\n  \"niederlassung_id\": 1,\n  \"lagerhalle_id\": 1,\n  \"bezeichnung\": \"Produktionsauftrag via Partner-API\",\n  \"bemerkung\": \"\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"Rohwaren","description":"Rohwaren-Endpoints","item":[{"name":"Annahmescheine","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/annahmescheine","host":["{{base_url}}"],"path":["api","v1","annahmescheine"],"query":[{"key":"status","value":"","disabled":true},{"key":"von","value":"","disabled":true},{"key":"bis","value":"","disabled":true}],"variable":[]},"description":"Scope: rohwaren:read"},"response":[]}]},{"name":"Sonstiges","description":"Sonstiges-Endpoints","item":[{"name":"Länderliste","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/laender","host":["{{base_url}}"],"path":["api","v1","laender"],"query":[],"variable":[]},"description":"Kein Scope erforderlich — nur gültiger API-Key"},"response":[]}]},{"name":"Waage","description":"Waage-Endpoints","item":[{"name":"Erstwiegung anlegen","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/wiegungen","host":["{{base_url}}"],"path":["api","v1","wiegungen"],"query":[],"variable":[]},"description":"Scope: waage:write — externe Waagen-Software pusht eine Erstwiegung rein. Fields: waage_id, gewicht_erst_kg, kennzeichen, fahrer, partner_id, richtung, artikel_id, niederlassung_id, lagerhalle_id, charge_id, kontrakt_id, kontrakt_position_id, fremdwiegung, bemerkung.","body":{"mode":"raw","raw":"{\n  \"waage_id\": 1,\n  \"gewicht_erst_kg\": 25400,\n  \"kennzeichen\": \"B-AG 1234\",\n  \"fahrer\": \"Max Mustermann\",\n  \"partner_id\": 42,\n  \"artikel_id\": 47,\n  \"richtung\": \"eingang\",\n  \"niederlassung_id\": 1,\n  \"lagerhalle_id\": 1,\n  \"fremdwiegung\": false,\n  \"bemerkung\": \"Anlieferung via Partner-API erfasst\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Wiegung Detail","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/wiegungen/:id","host":["{{base_url}}"],"path":["api","v1","wiegungen",":id"],"query":[],"variable":[{"key":"id","value":"","description":"Pfad-Parameter"}]},"description":"Scope: waage:read"},"response":[]},{"name":"Wiegungen abrufen","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/wiegungen","host":["{{base_url}}"],"path":["api","v1","wiegungen"],"query":[{"key":"status","value":"","disabled":true,"description":"(offen|fertig|storno)"},{"key":"von","value":"","disabled":true},{"key":"bis","value":"","disabled":true},{"key":"partner_id","value":"","disabled":true},{"key":"limit","value":"100","disabled":true}],"variable":[]},"description":"Scope: waage:read"},"response":[]},{"name":"Zweitwiegung abschliessen","request":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/wiegungen/:id/zweitwiegung","host":["{{base_url}}"],"path":["api","v1","wiegungen",":id","zweitwiegung"],"query":[],"variable":[{"key":"id","value":"","description":"Pfad-Parameter"}]},"description":"Scope: waage:write — schliesst eine offene Wiegung mit Endgewicht ab. Auto-Richtung wird ermittelt aus Erst-/Zweitwiegung-Differenz wenn nicht explizit gesetzt.","body":{"mode":"raw","raw":"{\n  \"gewicht_zweit_kg\": 12300,\n  \"richtung\": \"eingang\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]}]}