Skip to content

Waren abrufen ​

Gibt eine paginierte Liste aller Waren und Leistungen des Unternehmens zurück, sortiert nach interner ID aufsteigend. Mit gesetztem term sortiert die Liste stattdessen nach Relevanz.

Request ​

GET /api/oauth/v2/resource/wares

HeaderWert
AuthorizationBearer {access_token}

Query-Parameter ​

ParameterTypPflichtBeschreibung
offsetintegerNeinStartposition (Standard: 0)
limitintegerNeinAnzahl Ergebnisse (Standard: 50, Max: 200)
typestringNeinFiltert auf ware oder service
statusstringNeinFiltert nach Status. Erlaubte Werte: active, archived, deleted, all. Kommagetrennte Mehrfachwerte möglich, Standard all. Siehe Konventionen
categoryIdstring (UUID)NeinNur Waren einer bestimmten Kategorie zurückgeben
termstringNeinFreitextsuche über Name, interne Nummer und Nummer

Hinweis: /wares unterstützt keine inkrementellen Filter (updatedSince, deletedSince o.ä.). Stammdatenänderungen wie Preis, Name oder Kategorie erkennst du nur über einen periodischen Vollabgleich. Für Bestandsänderungen brauchst du keinen Vollabgleich von /wares selbst: Jede Bestandsänderung erzeugt eine Lagerbewegung, und stockNew der jüngsten Bewegung je Ware trägt den aktuellen Bestand. Für die Bestandsverfolgung kannst du /wares/movements mit createdSince/createdUntil inkrementell abfragen.

Response ​

Erfolg (200 OK) ​

Beispiel: mit lizenzierter Lagerverwaltung

json
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "name": "Hyaluronsäure-Serum",
      "description": "30 ml Serum für die tägliche Anwendung",
      "number": "1042",
      "internalNumber": "HYA-030",
      "type": "ware",
      "price": 39.90,
      "vat": 20,
      "color": "#00adba",
      "sellable": true,
      "deliverable": true,
      "invoiceSortIndex": 0,
      "archived": false,
      "deleted": false,
      "category": "d4e5f6a7-b8c9-0123-defa-123456789012",
      "groups": [{ "name": "Aktion" }],
      "storages": ["f6a7b8c9-d0e1-2345-fabc-345678901234"],
      "distributors": ["b2c3d4e5-f6a7-8901-bcde-f12345678901"],
      "tenancies": ["f0e1d2c3-b4a5-6789-fedc-ba9876543210"],
      "stock": {
        "stockEffective": 24,
        "stockAvailable": 22,
        "stockMinimum": 5,
        "stockTarget": 30,
        "purchasingPriceNet": 18.50,
        "sellingPriceNet": 33.25,
        "unit": "Stück",
        "unitBase": 1,
        "unitBaseSign": false,
        "deliveryNotice": null,
        "storageNotice": null,
        "distributorNotice": null
      }
    }
  ],
  "meta": {
    "total": 128,
    "offset": 0,
    "limit": 50
  }
}

Beispiel: ohne lizenzierte Lagerverwaltung

json
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "name": "Hyaluronsäure-Serum",
      "description": "30 ml Serum für die tägliche Anwendung",
      "number": "1042",
      "internalNumber": "HYA-030",
      "type": "ware",
      "price": 39.90,
      "vat": 20,
      "color": "#00adba",
      "sellable": true,
      "deliverable": true,
      "invoiceSortIndex": 0,
      "archived": false,
      "deleted": false,
      "category": "d4e5f6a7-b8c9-0123-defa-123456789012",
      "groups": [],
      "storages": [],
      "distributors": [],
      "tenancies": ["f0e1d2c3-b4a5-6789-fedc-ba9876543210"]
    }
  ],
  "meta": {
    "total": 128,
    "offset": 0,
    "limit": 50
  }
}

Hinweis: Ohne die Lizenz Lagerverwaltung fehlt der Schlüssel stock im Response-Objekt komplett – er ist nicht null. Prüfe in deiner Integration auf das Vorhandensein des Schlüssels, nicht auf seinen Wert.

Hinweis: Der stock-Block enthält kein Feld für offene Bestellungen. Ob für eine Ware eine offene Bestellung existiert, ermittelst du über GET /wares/purchases?wareId={uuid}.

Response-Felder ​

FeldTypBeschreibung
dataArrayListe der Waren
data[].idstring (UUID)Eindeutige ID der Ware
data[].namestringName der Ware
data[].descriptionstring | nullBeschreibungstext
data[].numberstring | nullArtikelnummer
data[].internalNumberstring | nullInterne Nummer
data[].typestringware oder service
data[].pricenumber | nullVerkaufspreis (brutto)
data[].vatnumberUmsatzsteuersatz in Prozent (z.B. 20)
data[].colorstringFarbe als Hex-Code
data[].sellablebooleanOb die Ware verkäuflich ist
data[].deliverablebooleanOb die Ware lieferbar ist
data[].invoiceSortIndexintegerSortierposition auf der Rechnung
data[].archivedbooleanOb die Ware archiviert ist
data[].deletedbooleanOb die Ware gelöscht ist
data[].categorystring (UUID) | nullID der zugeordneten Warenkategorie, nachladbar über Warenkategorie anzeigen
data[].groupsArrayZugeordnete Schnellauswahl-Gruppen
data[].groups[].namestringName der Schnellauswahl-Gruppe (keine id, da Gruppen keine UUID haben)
data[].storagesArray<string (UUID)>IDs der zugeordneten Lagerorte, nachladbar über Lagerort anzeigen
data[].distributorsArray<string (UUID)>IDs der zugeordneten Lieferanten, nachladbar über Lieferant anzeigen
data[].tenanciesArray<string (UUID)>IDs der zugeordneten Mandanten
data[].stockobjectNur vorhanden, wenn die Lizenz Lagerverwaltung aktiv ist und der Besitzer-Benutzer deines API-Zugangs die Berechtigung Lagerverwaltung: Anzeigen hat. Fehlt der Schlüssel sonst komplett
data[].stock.stockEffectivenumberTatsächlicher Bestand
data[].stock.stockAvailablenumberVerfügbarer Bestand (abzüglich Reservierungen)
data[].stock.stockMinimumnumberMindestbestand
data[].stock.stockTargetnumberZielbestand
data[].stock.purchasingPriceNetnumber | nullEinkaufspreis (netto)
data[].stock.sellingPriceNetnumber | nullVerkaufspreis (netto)
data[].stock.unitstring | nullEinheit (z.B. "Stück")
data[].stock.unitBasenumber | nullBasismenge der Einheit
data[].stock.unitBaseSignbooleanKennzeichen der Basiseinheit (Standard: false). Enthält kein Kürzel wie „Stk“
data[].stock.deliveryNoticestring | nullHinweis zur Lieferung
data[].stock.storageNoticestring | nullHinweis zur Lagerung
data[].stock.distributorNoticestring | nullHinweis zum Lieferanten
meta.totalintegerGesamtanzahl der Waren
meta.offsetintegerAktuelle Startposition
meta.limitintegerAnzahl der zurückgegebenen Einträge
Beispiele
bash
curl -X GET "https://my.offisy.at/api/oauth/v2/resource/wares?offset=0&limit=50&type=beispiel&status=beispiel&categoryId=b2c3d4e5-f6a7-8901-bcde-f01234567890&term=Muster" \
  -H "Authorization: Bearer {access_token}"
Parameter
Zuerst Token anfordern

Mögliche Fehler ​

StatusCodeBeschreibung
400validation_errorUngültiger Wert für type oder status, oder categoryId ist kein gültiges UUID-Format
401invalid_clientUngültiger oder fehlender Access Token
403insufficient_scopeScope wares nicht vorhanden

Offisy GmbH