Lagerbewegungen abrufen
Gibt eine paginierte Liste aller Lagerbewegungen des Unternehmens zurück.
Benötigte Lizenz
Dieser Endpoint erfordert die Lizenz Lagerverwaltung.
Request
GET /api/oauth/v2/resource/wares/movements
Header
| Header | Wert |
|---|---|
Authorization | Bearer {access_token} |
Query-Parameter
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
offset | integer | Nein | Startposition (Standard: 0) |
limit | integer | Nein | Anzahl Ergebnisse (Standard: 50, Max: 200) |
wareId | string (UUID) | Nein | Nur Bewegungen einer bestimmten Ware zurückgeben |
type | string | Nein | Kommaseparierte Liste von Bewegungstypen |
direction | string | Nein | in oder out |
from | string (ISO 8601) | Nein | Nur Bewegungen ab diesem Bewegungsdatum |
until | string (ISO 8601) | Nein | Nur Bewegungen bis zu diesem Bewegungsdatum. Ein reines Datum (z.B. 2026-06-30) gilt bis Tagesende (23:59:59) |
createdSince | string (ISO 8601) | Nein | Inkrementelles Abgleich-Fenster, Startgrenze |
createdUntil | string (ISO 8601) | Nein | Inkrementelles Abgleich-Fenster, Endgrenze |
Hinweis:
from/untilgrenzen den fachlichen Zeitraum einer Bewegung ein,createdSince/createdUntildas Fenster eines inkrementellen Abgleichs. Beide Namenspaare filtern technisch auf dasselbe Bewegungsdatum, bleiben aber unabhängig nutzbar und lassen sich kombinieren: Sie werden UND-verknüpft, es gilt also immer die engste Grenze.fromnachuntilliefert400 validation_error.updatedSince,updatedUntilunddeletedSincewerden auf diesem Endpoint nicht unterstützt und ohne Fehler ignoriert.
Response
Erfolg (200 OK)
Beispiel: Abgang durch Rechnung
{
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"date": "2026-06-01T09:15:00+01:00",
"type": "out_invoice",
"customTypeName": null,
"direction": "out",
"amount": -3,
"stockOld": 25,
"stockNew": 22,
"notice": null,
"ware": "c3d4e5f6-a7b8-9012-cdef-012345678901",
"consumer": null,
"createdBy": "d4e5f6a7-b8c9-0123-defa-123456789012"
}
],
"meta": {
"total": 340,
"offset": 0,
"limit": 50
}
}Beispiel: Abgang mit Verbraucher
{
"data": [
{
"id": "e5f6a7b8-c9d0-1234-efab-234567890123",
"date": "2026-06-02T11:00:00+01:00",
"type": "out_customer",
"customTypeName": null,
"direction": "out",
"amount": -1,
"stockOld": 5,
"stockNew": 4,
"notice": null,
"ware": "c3d4e5f6-a7b8-9012-cdef-012345678901",
"consumer": "f0e1d2c3-b4a5-6789-fedc-ba9876543210",
"createdBy": null
}
],
"meta": {
"total": 340,
"offset": 0,
"limit": 50
}
}Response-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
data | Array | Liste der Lagerbewegungen |
data[].id | string (UUID) | Eindeutige ID der Bewegung |
data[].date | string (ISO 8601) | Zeitpunkt der Bewegung |
data[].type | string | Bewegungstyp, siehe Tabelle unten |
data[].customTypeName | string | null | Anzeigename, nur befüllt bei in_custom/out_custom |
data[].direction | string | in oder out |
data[].amount | number | Bestandsänderung, vorzeichenbehaftet (stockNew - stockOld). Abgänge sind negativ |
data[].stockOld | number | Bestand vor der Bewegung |
data[].stockNew | number | Bestand nach der Bewegung |
data[].notice | string | null | Notiz zur Bewegung |
data[].ware | string (UUID) | null | ID der betroffenen Ware, nachladbar über Ware anzeigen |
data[].consumer | string (UUID) | null | ID des Verbrauchers (z.B. bei Materialverbrauch), sofern vorhanden |
data[].createdBy | string (UUID) | null | ID des Mitarbeiters, der die Bewegung ausgelöst hat |
meta.total | integer | Gesamtanzahl der Lagerbewegungen |
meta.offset | integer | Aktuelle Startposition |
meta.limit | integer | Anzahl der zurückgegebenen Einträge |
Hinweis:
amountist vorzeichenbehaftet. Wer Zu- und Abgänge über mehrere Bewegungen aufsummiert, ohne das zu berücksichtigen, rechnet den Bestand falsch.
Bewegungstypen
| Wert | Bedeutung |
|---|---|
in | Zugang |
in_invoice_storno | Zugang durch Rechnungsstorno |
in_custom | Firmeneigener Zugangstyp, Anzeigename in customTypeName |
in_purchase | Zugang durch Wareneingang einer Bestellung |
inventory | Inventurkorrektur |
out_invoice | Abgang durch Verrechnung auf einer Rechnung |
out_customer | Abgang, einem Kunden zugeordnet |
out_loss | Abgang durch Schwund |
out_other | Sonstiger Abgang |
out_custom | Firmeneigener Abgangstyp, Anzeigename in customTypeName |
Hinweis zu
inventory: Die Richtung ergibt sich aus dem Vergleich vonstockNewgegenstockOld, nicht aus dem Typnamen. Eine Inventurkorrektur kann sowohl einen Zugang als auch einen Abgang darstellen.
curl -X GET "https://my.offisy.at/api/oauth/v2/resource/wares/movements?offset=0&limit=50&wareId=b2c3d4e5-f6a7-8901-bcde-f01234567890&type=beispiel&direction=beispiel&from=beispiel&until=beispiel&createdSince=beispiel&createdUntil=beispiel" \
-H "Authorization: Bearer {access_token}"Mögliche Fehler
| Status | Code | Beschreibung |
|---|---|---|
| 400 | validation_error | Ungültiger type/direction/wareId |
| 400 | validation_error | from, until, createdSince oder createdUntil ist kein gültiges ISO-8601-Datum bzw. keine gültige Datum/Zeit-Angabe |
| 400 | validation_error | from liegt nach until |
| 401 | invalid_client | Ungültiger oder fehlender Access Token |
| 403 | insufficient_scope | Scope wares nicht vorhanden |
| 403 | insufficient_scope | Lizenz Lagerverwaltung nicht vorhanden |
| 404 | not_found | Ware zu wareId nicht gefunden oder keine Berechtigung |