API-Referenz

Bestellanforderungen

Was Personen kaufen möchten, bevor es eine Bestellung gibt: Freigabe, Budgetprüfung, dann eine Bestellung.

Mehr zu dieser Ressource

Jedes Mitglied eines Käufer-Workspace kann etwas anfordern, unabhängig von seiner Einkaufsrolle: Eine Anforderung bindet kein Geld, ihre Freigabe ist die Kontrolle. Eine eingereichte Anforderung durchläuft den Freigabeablauf für Bestellanforderungen des Workspace (standardmäßig den für Bestellungen), das Ausgabenlimit der anfordernden Person und, wenn Budgets aktiv sind, das Budget ihrer Kostenstelle. Nach der Freigabe macht eine Person, die Bestellungen auslösen darf, mit ConvertPurchaseRequest eine Bestellung daraus. Die Bestellung behält die Freigabe der Anforderung, wenn sie im freigegebenen Rahmen bleibt, auf derselben Kostenstelle und demselben Sachkonto. Anforderungen gibt es nur auf Käuferseite; Lieferanten sehen sie nie.

Bestellanforderungen auflisten

Listet die Bestellanforderungen auf, die Sie sehen können, die neuesten zuerst.

GET/v1/workspaces/{regionId}/purchase-requests

Parameter

  • status"draft" | "pending_approval" | "approved" | "ordered" | "rejected" | "canceled"

    Nur Anforderungen mit diesem Status.

  • mineboolean

    true: nur die eigenen Anforderungen der aufrufenden Person.

  • awaitingMeboolean

    true: nur die Anforderungen, die auf die Freigabe der aufrufenden Person warten, wie in ihrer Freigabeliste. status und mine werden dann ignoriert.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Listet die eigenen Anforderungen der aufrufenden Person auf; mit 'view'-Zugriff auf Bestellungen die aller anderen außer fremden Entwürfen; und jede Anforderung, deren Freigabekette die aufrufende Person nennt. Die neuesten zuerst.

Antwortfelder

  • statusstring

    draft bis zum Einreichen; pending_approval, solange die Freigabekette läuft; approved, dann ordered, sobald daraus eine Bestellung wurde (poId); oder rejected (rejectionReason) bzw. canceled.

  • amountnumber

    Die Summe der Positionen (qty × unitPrice), in currency.

  • approvalobject

    Die Freigabekette, fehlt bei einem Entwurf. Gebildet aus dem Freigabeablauf für Bestellanforderungen des Workspace (standardmäßig dem für Bestellungen), dem Ausgabenlimit der anfordernden Person und der Budgetprüfung.

  • approvalVersionnumber

    Steigt mit jeder Änderung der Freigabe. Senden Sie den Wert beim Freigeben als expectedVersion.

  • budgetCheckobject

    Die Budgetprüfung der Kostenstelle, wenn Budgets aktiv sind: die letzte, beim Einreichen oder bei der letzten Freigabe. Die Beträge sind in der Währung des Budgets.

Fehler

  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
  • 403 Forbidden - Der Bearer-Token oder API-Schlüssel des Aufrufers gewährt keinen Zugriff auf diesen Workspace (regionId) oder hat nicht die erforderliche Rolle.
GET /v1/workspaces/{regionId}/purchase-requests
Anfrage
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-requests" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
[
   {
      "id": "string",
      "title": "string",
      "description": "string",
      "requesterEmployeeKey": "string",
      "requesterName": "string",
      "costCenter": "string",
      "glCode": "string",
      "supplier": { "name": "string", "supplierConnectionId": "string", "supplierRegionId": "string" },
      "lineItems": [
         { "name": "string", "lineType": "goods" | "service", "qty": number, "unit": "string", "unitPrice": number }
      ],
      "amount": number,
      "currency": "string",
      "neededBy": "string",
      "quoteDocument": { "importId": "string", "fileName": "string", "contentType": "string", "addedAt": "string", "quoteNumber": "string", "validUntil": "string" },
      "notes": "string",
      "status": "draft" | "pending_approval" | "approved" | "ordered" | "rejected" | "canceled",
      "approval": {
         "requester": "string",
         "requesterEmployeeKey": "string",
         "groups": [
           {
             "id": "string",
             "mode": "sequential" | "parallel",
             "label": "string",
             "status": "pending" | "approved" | "rejected",
             "stages": [
               { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
             ]
           }
         ],
         "groupIndex": number,
         "status": "pending" | "approved" | "rejected",
         "history": [
           { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
         ],
         "autonomy": boolean,
         "selfApproved": boolean
       },
      "approvalVersion": number,
      "budgetCheck": { "outcome": "within" | "over" | "no_budget" | "no_rate" | "off", "mode": "off" | "warn" | "block", "costCenter": "string", "currency": "string", "budget": number, "remaining": number, "amount": number, "overBy": number, "checkedAt": "string" },
      "poId": "string",
      "rejectionReason": "string",
      "createdAt": "string",
      "updatedAt": "string",
      "submittedAt": "string",
      "decidedAt": "string",
      "canceledAt": "string",
      "canceledBy": "string"
   }
]

Bestellanforderung erstellen

Fordert etwas an: speichert einen Entwurf oder reicht ihn zur Freigabe ein.

POST/v1/workspaces/{regionId}/purchase-requests

Body

  • titlestringPflicht

    Was benötigt wird, in wenigen Worten. Bis zu 200 Zeichen.

  • descriptionstring

    Warum es benötigt wird: der geschäftliche Grund. Bis zu 4.000 Zeichen. Zum Einreichen erforderlich.

  • costCenterstring

    Code oder Name einer Kostenstelle, gespeichert als ihr Code. Zum Einreichen erforderlich, wenn der Workspace eine Kostenstellenliste führt.

  • glCodestring

    Das Sachkonto (Ausgabenkategorie), wenn es nicht das der Kostenstelle ist. Bis zu 40 Zeichen.

  • supplierobject

    Ein Lieferant, den die anfordernde Person vorschlägt: { name, supplierConnectionId?, supplierRegionId? }. Ein bloßer Name steuert keine Freigabe; ein freigegebener Lieferant aus der Liste des Workspace wird von lieferantenbezogenen Freigabeschritten verwendet.

  • lineItemsArray<{ name, lineType?, qty, unit?, unitPrice }>Pflicht

    Was benötigt wird, 1 bis 50 Positionen: name (bis zu 200 Zeichen), qty (über 0), unit (optional, z. B. each, hour, month), unitPrice (eine Schätzung, 0 oder mehr, in der Währung der Anforderung) und lineType (optional: goods oder service, wird in die Bestellposition übernommen; fehlt es, macht eine Zeiteinheit sie zur Dienstleistung, jede andere zur Ware). Eine Position genügt für eine Schätzung.

  • currencystring

    ISO 4217. Fehlt sie, gilt die Währung des Workspace.

  • neededBystring

    Wann es benötigt wird, YYYY-MM-DD.

  • quoteImportIdstring

    Ein über den Angebotsimport hochgeladenes Angebot, das angehängt wird.

  • notesstring

    Was der Einkauf wissen sollte. Bis zu 2.000 Zeichen.

  • submitboolean

    true reicht sie sofort zur Freigabe ein; sonst wird sie als Entwurf gespeichert.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Erstellt eine Bestellanforderung als Entwurf, mit der aufrufenden Person als anfordernder Person. Mit submit: true wird sie sofort eingereicht, wie bei SubmitPurchaseRequest, und die Antwort zeigt sie als pending_approval oder als approved, wenn Autonomie oder eine Automatisierungsregel sie abdeckt.

Jedes Mitglied des Käufer-Workspace, unabhängig von seiner Einkaufsrolle.

Antwortfelder

  • statusstring

    draft bis zum Einreichen; pending_approval, solange die Freigabekette läuft; approved, dann ordered, sobald daraus eine Bestellung wurde (poId); oder rejected (rejectionReason) bzw. canceled.

  • amountnumber

    Die Summe der Positionen (qty × unitPrice), in currency.

  • approvalobject

    Die Freigabekette, fehlt bei einem Entwurf. Gebildet aus dem Freigabeablauf für Bestellanforderungen des Workspace (standardmäßig dem für Bestellungen), dem Ausgabenlimit der anfordernden Person und der Budgetprüfung.

  • approvalVersionnumber

    Steigt mit jeder Änderung der Freigabe. Senden Sie den Wert beim Freigeben als expectedVersion.

  • budgetCheckobject

    Die Budgetprüfung der Kostenstelle, wenn Budgets aktiv sind: die letzte, beim Einreichen oder bei der letzten Freigabe. Die Beträge sind in der Währung des Budgets.

Fehler

  • 400 Bad Request - Ein Feld fehlt oder ist ungültig. Mit submit: true auch, wenn die Anforderung keine Beschreibung, keinen Betrag über 0 oder in einem Workspace mit Kostenstellenliste keine Kostenstelle hat.
  • 409 Conflict - Code over_budget. Budgets werden durchgesetzt (Sperrmodus), und die Anforderung würde ihre Kostenstelle über das Budget bringen, oder es gibt keinen Wechselkurs, um sie zu prüfen. Das budgetCheck im Body enthält die Beträge. Es wird nichts gespeichert.
  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
  • 403 Forbidden - Der Bearer-Token oder API-Schlüssel des Aufrufers gewährt keinen Zugriff auf diesen Workspace (regionId) oder hat nicht die erforderliche Rolle.
POST /v1/workspaces/{regionId}/purchase-requests
Anfrage
POST /v1/workspaces/reg_01k5x8p9j3q7vn2mhb4tzc6rde.buyer/purchase-requests
{
   "title": "Monitors for the design team",
   "description": "Two new designers start on November 3.",
   "costCenter": "CC-1000",
   "lineItems": [ { "name": "27-inch monitor", "lineType": "goods", "qty": 2, "unit": "each", "unitPrice": 320 } ],
   "neededBy": "2026-11-03",
   "submit": true
}
Antwort · 201 Created
{
   "id": "PR-3F9A1C2E",
   "title": "Monitors for the design team",
   "requesterName": "Priya Shah",
   "costCenter": "CC-1000",
   "amount": 640,
   "currency": "USD",
   "status": "pending_approval",
   "approvalVersion": 1,
   ...
}

Bestellanforderung abrufen

Ruft eine Bestellanforderung ab.

GET/v1/workspaces/{regionId}/purchase-requests/{requestId}

Parameter

  • requestIdstringPflicht

    Die Bestellanforderung, z. B. PR-3F9A1C2E.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Gibt eine Bestellanforderung mit ihrer Freigabekette, ihrer Budgetprüfung und, sobald bestellt, der daraus entstandenen Bestellung (poId) zurück. Sichtbar für dieselben Personen wie bei ListPurchaseRequests.

Antwortfelder

  • statusstring

    draft bis zum Einreichen; pending_approval, solange die Freigabekette läuft; approved, dann ordered, sobald daraus eine Bestellung wurde (poId); oder rejected (rejectionReason) bzw. canceled.

  • amountnumber

    Die Summe der Positionen (qty × unitPrice), in currency.

  • approvalobject

    Die Freigabekette, fehlt bei einem Entwurf. Gebildet aus dem Freigabeablauf für Bestellanforderungen des Workspace (standardmäßig dem für Bestellungen), dem Ausgabenlimit der anfordernden Person und der Budgetprüfung.

  • approvalVersionnumber

    Steigt mit jeder Änderung der Freigabe. Senden Sie den Wert beim Freigeben als expectedVersion.

  • budgetCheckobject

    Die Budgetprüfung der Kostenstelle, wenn Budgets aktiv sind: die letzte, beim Einreichen oder bei der letzten Freigabe. Die Beträge sind in der Währung des Budgets.

Fehler

  • 404 Not Found - Keine Bestellanforderung mit dieser ID, die die aufrufende Person sehen kann. Wer eine Anforderung nicht sehen kann, erfährt nicht, ob es sie gibt.
  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
  • 403 Forbidden - Der Bearer-Token oder API-Schlüssel des Aufrufers gewährt keinen Zugriff auf diesen Workspace (regionId) oder hat nicht die erforderliche Rolle.
GET /v1/workspaces/{regionId}/purchase-requests/{requestId}
Anfrage
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-requests/{requestId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
{
   "id": "string",
   "title": "string",
   "description": "string",
   "requesterEmployeeKey": "string",
   "requesterName": "string",
   "costCenter": "string",
   "glCode": "string",
   "supplier": { "name": "string", "supplierConnectionId": "string", "supplierRegionId": "string" },
   "lineItems": [
      { "name": "string", "lineType": "goods" | "service", "qty": number, "unit": "string", "unitPrice": number }
   ],
   "amount": number,
   "currency": "string",
   "neededBy": "string",
   "quoteDocument": { "importId": "string", "fileName": "string", "contentType": "string", "addedAt": "string", "quoteNumber": "string", "validUntil": "string" },
   "notes": "string",
   "status": "draft" | "pending_approval" | "approved" | "ordered" | "rejected" | "canceled",
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "approvalVersion": number,
   "budgetCheck": { "outcome": "within" | "over" | "no_budget" | "no_rate" | "off", "mode": "off" | "warn" | "block", "costCenter": "string", "currency": "string", "budget": number, "remaining": number, "amount": number, "overBy": number, "checkedAt": "string" },
   "poId": "string",
   "rejectionReason": "string",
   "createdAt": "string",
   "updatedAt": "string",
   "submittedAt": "string",
   "decidedAt": "string",
   "canceledAt": "string",
   "canceledBy": "string"
}

Bestellanforderung ändern

Ändert einen Entwurf oder eine Anforderung, die auf Freigabe wartet.

PATCH/v1/workspaces/{regionId}/purchase-requests/{requestId}

Parameter

  • requestIdstringPflicht

    Die Bestellanforderung, z. B. PR-3F9A1C2E.

Body

  • titlestring

    Was benötigt wird, in wenigen Worten. Bis zu 200 Zeichen.

  • descriptionstring

    Warum es benötigt wird: der geschäftliche Grund. Bis zu 4.000 Zeichen. Zum Einreichen erforderlich.

  • costCenterstring

    Code oder Name einer Kostenstelle, gespeichert als ihr Code. Zum Einreichen erforderlich, wenn der Workspace eine Kostenstellenliste führt.

  • glCodestring

    Das Sachkonto (Ausgabenkategorie), wenn es nicht das der Kostenstelle ist. Bis zu 40 Zeichen.

  • supplierobject

    Ein Lieferant, den die anfordernde Person vorschlägt: { name, supplierConnectionId?, supplierRegionId? }. Ein bloßer Name steuert keine Freigabe; ein freigegebener Lieferant aus der Liste des Workspace wird von lieferantenbezogenen Freigabeschritten verwendet.

  • lineItemsArray<{ name, lineType?, qty, unit?, unitPrice }>

    Was benötigt wird, 1 bis 50 Positionen: name (bis zu 200 Zeichen), qty (über 0), unit (optional, z. B. each, hour, month), unitPrice (eine Schätzung, 0 oder mehr, in der Währung der Anforderung) und lineType (optional: goods oder service, wird in die Bestellposition übernommen; fehlt es, macht eine Zeiteinheit sie zur Dienstleistung, jede andere zur Ware). Eine Position genügt für eine Schätzung.

  • currencystring

    ISO 4217. Fehlt sie, gilt die Währung des Workspace.

  • neededBystring

    Wann es benötigt wird, YYYY-MM-DD.

  • quoteImportIdstring

    Ein über den Angebotsimport hochgeladenes Angebot, das angehängt wird.

  • notesstring

    Was der Einkauf wissen sollte. Bis zu 2.000 Zeichen.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Die anfordernde Person ändert die gesendeten Felder; der Rest bleibt. Das Senden von lineItems ersetzt alle Positionen. Eine Anforderung, die auf Freigabe wartet, durchläuft die Freigabe erneut von vorn, weil ihre Freigaben für den vorherigen Inhalt galten.

Nur die anfordernde Person.

Antwortfelder

  • statusstring

    draft bis zum Einreichen; pending_approval, solange die Freigabekette läuft; approved, dann ordered, sobald daraus eine Bestellung wurde (poId); oder rejected (rejectionReason) bzw. canceled.

  • amountnumber

    Die Summe der Positionen (qty × unitPrice), in currency.

  • approvalobject

    Die Freigabekette, fehlt bei einem Entwurf. Gebildet aus dem Freigabeablauf für Bestellanforderungen des Workspace (standardmäßig dem für Bestellungen), dem Ausgabenlimit der anfordernden Person und der Budgetprüfung.

  • approvalVersionnumber

    Steigt mit jeder Änderung der Freigabe. Senden Sie den Wert beim Freigeben als expectedVersion.

  • budgetCheckobject

    Die Budgetprüfung der Kostenstelle, wenn Budgets aktiv sind: die letzte, beim Einreichen oder bei der letzten Freigabe. Die Beträge sind in der Währung des Budgets.

Fehler

  • 400 Bad Request - Ein Feld ist ungültig, oder die Anforderung ist freigegeben, bestellt, abgelehnt oder storniert und kann nicht geändert werden.
  • 403 Forbidden - Die aufrufende Person ist nicht die anfordernde Person.
  • 404 Not Found - Keine Bestellanforderung mit dieser ID, die die aufrufende Person sehen kann. Wer eine Anforderung nicht sehen kann, erfährt nicht, ob es sie gibt.
  • 409 Conflict - Code over_budget. Budgets werden durchgesetzt (Sperrmodus), und die Anforderung würde ihre Kostenstelle über das Budget bringen, oder es gibt keinen Wechselkurs, um sie zu prüfen. Das budgetCheck im Body enthält die Beträge. Es wird nichts gespeichert.
  • 409 Conflict - Die Anforderung hat sich geändert, während dieser Aufruf sie schrieb. Lesen Sie sie erneut und versuchen Sie es noch einmal.
  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
  • 403 Forbidden - Der Bearer-Token oder API-Schlüssel des Aufrufers gewährt keinen Zugriff auf diesen Workspace (regionId) oder hat nicht die erforderliche Rolle.
PATCH /v1/workspaces/{regionId}/purchase-requests/{requestId}
Anfrage
curl -X PATCH "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-requests/{requestId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
{
   "id": "string",
   "title": "string",
   "description": "string",
   "requesterEmployeeKey": "string",
   "requesterName": "string",
   "costCenter": "string",
   "glCode": "string",
   "supplier": { "name": "string", "supplierConnectionId": "string", "supplierRegionId": "string" },
   "lineItems": [
      { "name": "string", "lineType": "goods" | "service", "qty": number, "unit": "string", "unitPrice": number }
   ],
   "amount": number,
   "currency": "string",
   "neededBy": "string",
   "quoteDocument": { "importId": "string", "fileName": "string", "contentType": "string", "addedAt": "string", "quoteNumber": "string", "validUntil": "string" },
   "notes": "string",
   "status": "draft" | "pending_approval" | "approved" | "ordered" | "rejected" | "canceled",
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "approvalVersion": number,
   "budgetCheck": { "outcome": "within" | "over" | "no_budget" | "no_rate" | "off", "mode": "off" | "warn" | "block", "costCenter": "string", "currency": "string", "budget": number, "remaining": number, "amount": number, "overBy": number, "checkedAt": "string" },
   "poId": "string",
   "rejectionReason": "string",
   "createdAt": "string",
   "updatedAt": "string",
   "submittedAt": "string",
   "decidedAt": "string",
   "canceledAt": "string",
   "canceledBy": "string"
}

Bestellanforderung einreichen

Reicht einen Entwurf zur Freigabe ein.

POST/v1/workspaces/{regionId}/purchase-requests/{requestId}/submit

Parameter

  • requestIdstringPflicht

    Die Bestellanforderung, z. B. PR-3F9A1C2E.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Bildet die Freigabekette der Anforderung und benachrichtigt die erste freigebende Person. Freigabeschritte werden nach Betrag, Lieferant, anfordernder Person, Kostenstelle und Sachkonto gesteuert. Der Status wird pending_approval oder direkt approved, wenn Autonomie oder eine Automatisierungsregel sie abdeckt. Eine Anforderung in einer anderen Währung als der des Workspace wird zum heutigen Wechselkurs gesteuert; ohne Kurs geht sie immer an eine Person. Ohne Body.

Nur die anfordernde Person.

Antwortfelder

  • statusstring

    draft bis zum Einreichen; pending_approval, solange die Freigabekette läuft; approved, dann ordered, sobald daraus eine Bestellung wurde (poId); oder rejected (rejectionReason) bzw. canceled.

  • amountnumber

    Die Summe der Positionen (qty × unitPrice), in currency.

  • approvalobject

    Die Freigabekette, fehlt bei einem Entwurf. Gebildet aus dem Freigabeablauf für Bestellanforderungen des Workspace (standardmäßig dem für Bestellungen), dem Ausgabenlimit der anfordernden Person und der Budgetprüfung.

  • approvalVersionnumber

    Steigt mit jeder Änderung der Freigabe. Senden Sie den Wert beim Freigeben als expectedVersion.

  • budgetCheckobject

    Die Budgetprüfung der Kostenstelle, wenn Budgets aktiv sind: die letzte, beim Einreichen oder bei der letzten Freigabe. Die Beträge sind in der Währung des Budgets.

Fehler

  • 400 Bad Request - Die Anforderung wurde bereits eingereicht, oder sie hat keine Beschreibung, keinen Betrag über 0 oder in einem Workspace mit Kostenstellenliste keine Kostenstelle.
  • 403 Forbidden - Die aufrufende Person ist nicht die anfordernde Person.
  • 404 Not Found - Keine Bestellanforderung mit dieser ID, die die aufrufende Person sehen kann. Wer eine Anforderung nicht sehen kann, erfährt nicht, ob es sie gibt.
  • 409 Conflict - Code over_budget. Budgets werden durchgesetzt (Sperrmodus), und die Anforderung würde ihre Kostenstelle über das Budget bringen, oder es gibt keinen Wechselkurs, um sie zu prüfen. Das budgetCheck im Body enthält die Beträge. Es wird nichts gespeichert.
  • 409 Conflict - Die Anforderung hat sich geändert, während dieser Aufruf sie schrieb. Lesen Sie sie erneut und versuchen Sie es noch einmal.
  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
  • 403 Forbidden - Der Bearer-Token oder API-Schlüssel des Aufrufers gewährt keinen Zugriff auf diesen Workspace (regionId) oder hat nicht die erforderliche Rolle.
POST /v1/workspaces/{regionId}/purchase-requests/{requestId}/submit
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-requests/{requestId}/submit" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
{
   "id": "string",
   "title": "string",
   "description": "string",
   "requesterEmployeeKey": "string",
   "requesterName": "string",
   "costCenter": "string",
   "glCode": "string",
   "supplier": { "name": "string", "supplierConnectionId": "string", "supplierRegionId": "string" },
   "lineItems": [
      { "name": "string", "lineType": "goods" | "service", "qty": number, "unit": "string", "unitPrice": number }
   ],
   "amount": number,
   "currency": "string",
   "neededBy": "string",
   "quoteDocument": { "importId": "string", "fileName": "string", "contentType": "string", "addedAt": "string", "quoteNumber": "string", "validUntil": "string" },
   "notes": "string",
   "status": "draft" | "pending_approval" | "approved" | "ordered" | "rejected" | "canceled",
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "approvalVersion": number,
   "budgetCheck": { "outcome": "within" | "over" | "no_budget" | "no_rate" | "off", "mode": "off" | "warn" | "block", "costCenter": "string", "currency": "string", "budget": number, "remaining": number, "amount": number, "overBy": number, "checkedAt": "string" },
   "poId": "string",
   "rejectionReason": "string",
   "createdAt": "string",
   "updatedAt": "string",
   "submittedAt": "string",
   "decidedAt": "string",
   "canceledAt": "string",
   "canceledBy": "string"
}

Bestellanforderung freigeben

Gibt den aktuellen Freigabeschritt einer Bestellanforderung frei.

POST/v1/workspaces/{regionId}/purchase-requests/{requestId}/approve

Parameter

  • requestIdstringPflicht

    Die Bestellanforderung, z. B. PR-3F9A1C2E.

Body

  • expectedVersionnumber

    Die approvalVersion, die die aufrufende Person gesehen hat. Hat sich die Freigabe der Anforderung seitdem geändert, wird der Aufruf mit 409 APPROVAL_VERSION_CHANGED abgelehnt, statt etwas anderes freizugeben.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Gibt den Schritt frei, der die aufrufende Person nennt. Beim letzten Schritt wird das Budget erneut geprüft, bevor die Anforderung freigegeben ist; die anfordernde Person wird benachrichtigt, ebenso die Personen, die Bestellungen auslösen dürfen. Es gelten dieselben Regeln wie beim Freigeben einer Bestellung, auch dazu, ob jemand die eigene Anforderung freigeben darf.

Nur mit angemeldeter Sitzung und 'edit'-Zugriff auf Bestellungen. Jeder andere Aufrufer, auch ein API-Schlüssel, erhält 403 HUMAN_APPROVAL_REQUIRED, bevor etwas gelesen wird.

Antwortfelder

  • statusstring

    draft bis zum Einreichen; pending_approval, solange die Freigabekette läuft; approved, dann ordered, sobald daraus eine Bestellung wurde (poId); oder rejected (rejectionReason) bzw. canceled.

  • amountnumber

    Die Summe der Positionen (qty × unitPrice), in currency.

  • approvalobject

    Die Freigabekette, fehlt bei einem Entwurf. Gebildet aus dem Freigabeablauf für Bestellanforderungen des Workspace (standardmäßig dem für Bestellungen), dem Ausgabenlimit der anfordernden Person und der Budgetprüfung.

  • approvalVersionnumber

    Steigt mit jeder Änderung der Freigabe. Senden Sie den Wert beim Freigeben als expectedVersion.

  • budgetCheckobject

    Die Budgetprüfung der Kostenstelle, wenn Budgets aktiv sind: die letzte, beim Einreichen oder bei der letzten Freigabe. Die Beträge sind in der Währung des Budgets.

Fehler

  • 400 Bad Request - Die Anforderung wartet nicht auf Freigabe.
  • 403 Forbidden - Code HUMAN_APPROVAL_REQUIRED. Der Aufrufer ist ein API-Schlüssel. Freigabeschritte nennen eine bestimmte Person, und ein Schlüssel kann nie diese Person sein, daher kann ein Schlüssel einen Schritt weder freigeben noch ablehnen. Bitten Sie die im Schritt genannte Person, in Pleaxy zu handeln.
  • 403 Forbidden - Code APPROVER_NOT_ASSIGNED. Dem aktuellen Schritt ist keine freigebende Person zugewiesen, daher kann niemand darauf reagieren. Ein Administrator muss zuerst mit ReassignPurchaseOrderApprovalStage / ReassignInvoiceApprovalStage eine zuweisen.
  • 403 Forbidden - Der Aufrufer ist nicht die Person, die der aktuelle Schritt nennt. Nur diese Person darf ihn freigeben oder ablehnen - keine Rolle oder Berechtigung ersetzt die Benennung.
  • 404 Not Found - Keine Bestellanforderung mit dieser ID, die die aufrufende Person sehen kann. Wer eine Anforderung nicht sehen kann, erfährt nicht, ob es sie gibt.
  • 409 Conflict - Code APPROVAL_VERSION_CHANGED: expectedVersion stimmt nicht mehr. Lesen Sie die Anforderung erneut.
  • 409 Conflict - Code over_budget. Budgets werden durchgesetzt (Sperrmodus), und die Anforderung würde ihre Kostenstelle über das Budget bringen, oder es gibt keinen Wechselkurs, um sie zu prüfen. Das budgetCheck im Body enthält die Beträge. Es wird nichts gespeichert.
  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
  • 403 Forbidden - Der Bearer-Token oder API-Schlüssel des Aufrufers gewährt keinen Zugriff auf diesen Workspace (regionId) oder hat nicht die erforderliche Rolle.
POST /v1/workspaces/{regionId}/purchase-requests/{requestId}/approve
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-requests/{requestId}/approve" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "expectedVersion": number
}
Antwort · 200 OK
{
   "id": "string",
   "title": "string",
   "description": "string",
   "requesterEmployeeKey": "string",
   "requesterName": "string",
   "costCenter": "string",
   "glCode": "string",
   "supplier": { "name": "string", "supplierConnectionId": "string", "supplierRegionId": "string" },
   "lineItems": [
      { "name": "string", "lineType": "goods" | "service", "qty": number, "unit": "string", "unitPrice": number }
   ],
   "amount": number,
   "currency": "string",
   "neededBy": "string",
   "quoteDocument": { "importId": "string", "fileName": "string", "contentType": "string", "addedAt": "string", "quoteNumber": "string", "validUntil": "string" },
   "notes": "string",
   "status": "draft" | "pending_approval" | "approved" | "ordered" | "rejected" | "canceled",
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "approvalVersion": number,
   "budgetCheck": { "outcome": "within" | "over" | "no_budget" | "no_rate" | "off", "mode": "off" | "warn" | "block", "costCenter": "string", "currency": "string", "budget": number, "remaining": number, "amount": number, "overBy": number, "checkedAt": "string" },
   "poId": "string",
   "rejectionReason": "string",
   "createdAt": "string",
   "updatedAt": "string",
   "submittedAt": "string",
   "decidedAt": "string",
   "canceledAt": "string",
   "canceledBy": "string"
}

Bestellanforderung ablehnen

Lehnt eine Bestellanforderung mit Begründung ab.

POST/v1/workspaces/{regionId}/purchase-requests/{requestId}/reject

Parameter

  • requestIdstringPflicht

    Die Bestellanforderung, z. B. PR-3F9A1C2E.

Body

  • reasonstringPflicht

    Warum die Anforderung abgelehnt wird; die anfordernde Person sieht es. Bis zu 1.000 Zeichen.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Lehnt die Anforderung bei dem Schritt ab, der die aufrufende Person nennt. Der Status wird rejected, und die anfordernde Person wird mit der Begründung benachrichtigt. Endgültig: Die anfordernde Person stellt eine neue Anforderung.

Mit 'edit'-Zugriff auf Bestellungen. Nur die Person, die der aktuelle Schritt nennt; ein API-Schlüssel erhält 403 HUMAN_APPROVAL_REQUIRED.

Antwortfelder

  • statusstring

    draft bis zum Einreichen; pending_approval, solange die Freigabekette läuft; approved, dann ordered, sobald daraus eine Bestellung wurde (poId); oder rejected (rejectionReason) bzw. canceled.

  • amountnumber

    Die Summe der Positionen (qty × unitPrice), in currency.

  • approvalobject

    Die Freigabekette, fehlt bei einem Entwurf. Gebildet aus dem Freigabeablauf für Bestellanforderungen des Workspace (standardmäßig dem für Bestellungen), dem Ausgabenlimit der anfordernden Person und der Budgetprüfung.

  • approvalVersionnumber

    Steigt mit jeder Änderung der Freigabe. Senden Sie den Wert beim Freigeben als expectedVersion.

  • budgetCheckobject

    Die Budgetprüfung der Kostenstelle, wenn Budgets aktiv sind: die letzte, beim Einreichen oder bei der letzten Freigabe. Die Beträge sind in der Währung des Budgets.

Fehler

  • 400 Bad Request - Keine Begründung, oder die Anforderung wartet nicht auf Freigabe.
  • 403 Forbidden - Code HUMAN_APPROVAL_REQUIRED. Der Aufrufer ist ein API-Schlüssel. Freigabeschritte nennen eine bestimmte Person, und ein Schlüssel kann nie diese Person sein, daher kann ein Schlüssel einen Schritt weder freigeben noch ablehnen. Bitten Sie die im Schritt genannte Person, in Pleaxy zu handeln.
  • 403 Forbidden - Code APPROVER_NOT_ASSIGNED. Dem aktuellen Schritt ist keine freigebende Person zugewiesen, daher kann niemand darauf reagieren. Ein Administrator muss zuerst mit ReassignPurchaseOrderApprovalStage / ReassignInvoiceApprovalStage eine zuweisen.
  • 403 Forbidden - Der Aufrufer ist nicht die Person, die der aktuelle Schritt nennt. Nur diese Person darf ihn freigeben oder ablehnen - keine Rolle oder Berechtigung ersetzt die Benennung.
  • 404 Not Found - Keine Bestellanforderung mit dieser ID, die die aufrufende Person sehen kann. Wer eine Anforderung nicht sehen kann, erfährt nicht, ob es sie gibt.
  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
  • 403 Forbidden - Der Bearer-Token oder API-Schlüssel des Aufrufers gewährt keinen Zugriff auf diesen Workspace (regionId) oder hat nicht die erforderliche Rolle.
POST /v1/workspaces/{regionId}/purchase-requests/{requestId}/reject
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-requests/{requestId}/reject" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "reason": "string"
}
Antwort · 200 OK
{
   "id": "string",
   "title": "string",
   "description": "string",
   "requesterEmployeeKey": "string",
   "requesterName": "string",
   "costCenter": "string",
   "glCode": "string",
   "supplier": { "name": "string", "supplierConnectionId": "string", "supplierRegionId": "string" },
   "lineItems": [
      { "name": "string", "lineType": "goods" | "service", "qty": number, "unit": "string", "unitPrice": number }
   ],
   "amount": number,
   "currency": "string",
   "neededBy": "string",
   "quoteDocument": { "importId": "string", "fileName": "string", "contentType": "string", "addedAt": "string", "quoteNumber": "string", "validUntil": "string" },
   "notes": "string",
   "status": "draft" | "pending_approval" | "approved" | "ordered" | "rejected" | "canceled",
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "approvalVersion": number,
   "budgetCheck": { "outcome": "within" | "over" | "no_budget" | "no_rate" | "off", "mode": "off" | "warn" | "block", "costCenter": "string", "currency": "string", "budget": number, "remaining": number, "amount": number, "overBy": number, "checkedAt": "string" },
   "poId": "string",
   "rejectionReason": "string",
   "createdAt": "string",
   "updatedAt": "string",
   "submittedAt": "string",
   "decidedAt": "string",
   "canceledAt": "string",
   "canceledBy": "string"
}

Bestellanforderung stornieren

Zieht eine Bestellanforderung zurück, solange sie nicht bestellt ist.

POST/v1/workspaces/{regionId}/purchase-requests/{requestId}/cancel

Parameter

  • requestIdstringPflicht

    Die Bestellanforderung, z. B. PR-3F9A1C2E.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Zieht einen Entwurf, eine Anforderung, die auf Freigabe wartet, oder eine freigegebene, noch nicht bestellte zurück. Der Status wird canceled. Ohne Body.

Die anfordernde Person oder eine Administratorin bzw. ein Administrator des Workspace.

Antwortfelder

  • statusstring

    draft bis zum Einreichen; pending_approval, solange die Freigabekette läuft; approved, dann ordered, sobald daraus eine Bestellung wurde (poId); oder rejected (rejectionReason) bzw. canceled.

  • amountnumber

    Die Summe der Positionen (qty × unitPrice), in currency.

  • approvalobject

    Die Freigabekette, fehlt bei einem Entwurf. Gebildet aus dem Freigabeablauf für Bestellanforderungen des Workspace (standardmäßig dem für Bestellungen), dem Ausgabenlimit der anfordernden Person und der Budgetprüfung.

  • approvalVersionnumber

    Steigt mit jeder Änderung der Freigabe. Senden Sie den Wert beim Freigeben als expectedVersion.

  • budgetCheckobject

    Die Budgetprüfung der Kostenstelle, wenn Budgets aktiv sind: die letzte, beim Einreichen oder bei der letzten Freigabe. Die Beträge sind in der Währung des Budgets.

Fehler

  • 400 Bad Request - Die Anforderung ist bereits bestellt, abgelehnt oder storniert.
  • 403 Forbidden - Die aufrufende Person ist weder die anfordernde Person noch Administrator.
  • 404 Not Found - Keine Bestellanforderung mit dieser ID, die die aufrufende Person sehen kann. Wer eine Anforderung nicht sehen kann, erfährt nicht, ob es sie gibt.
  • 409 Conflict - Die Anforderung hat sich geändert, während dieser Aufruf sie schrieb. Lesen Sie sie erneut und versuchen Sie es noch einmal.
  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
  • 403 Forbidden - Der Bearer-Token oder API-Schlüssel des Aufrufers gewährt keinen Zugriff auf diesen Workspace (regionId) oder hat nicht die erforderliche Rolle.
POST /v1/workspaces/{regionId}/purchase-requests/{requestId}/cancel
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-requests/{requestId}/cancel" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
{
   "id": "string",
   "title": "string",
   "description": "string",
   "requesterEmployeeKey": "string",
   "requesterName": "string",
   "costCenter": "string",
   "glCode": "string",
   "supplier": { "name": "string", "supplierConnectionId": "string", "supplierRegionId": "string" },
   "lineItems": [
      { "name": "string", "lineType": "goods" | "service", "qty": number, "unit": "string", "unitPrice": number }
   ],
   "amount": number,
   "currency": "string",
   "neededBy": "string",
   "quoteDocument": { "importId": "string", "fileName": "string", "contentType": "string", "addedAt": "string", "quoteNumber": "string", "validUntil": "string" },
   "notes": "string",
   "status": "draft" | "pending_approval" | "approved" | "ordered" | "rejected" | "canceled",
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "approvalVersion": number,
   "budgetCheck": { "outcome": "within" | "over" | "no_budget" | "no_rate" | "off", "mode": "off" | "warn" | "block", "costCenter": "string", "currency": "string", "budget": number, "remaining": number, "amount": number, "overBy": number, "checkedAt": "string" },
   "poId": "string",
   "rejectionReason": "string",
   "createdAt": "string",
   "updatedAt": "string",
   "submittedAt": "string",
   "decidedAt": "string",
   "canceledAt": "string",
   "canceledBy": "string"
}

Bestellanforderung umwandeln

Bestellt eine freigegebene Anforderung: erstellt ihre Bestellung.

POST/v1/workspaces/{regionId}/purchase-requests/{requestId}/convert

Parameter

  • requestIdstringPflicht

    Die Bestellanforderung, z. B. PR-3F9A1C2E.

Body

  • any CreatePurchaseOrder fieldobject

    Alle Felder sind optional und übernehmen standardmäßig die Werte der Anforderung. supplier ist nötig, wenn die Anforderung keinen Lieferanten nennt. Das Senden von lineItems ersetzt die Positionen der Anforderung.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Erstellt aus einer freigegebenen Anforderung eine Bestellung, wie CreatePurchaseOrder: die Positionen der Anforderung (je eine benutzerdefinierte Mengenposition), Lieferant, Kostenstelle, Sachkonto, Angebot und Notizen, die der Body jeweils überschreiben kann. Die Bestellung nennt die Anforderung (requestId), und die Anforderung wird in einem Schritt ordered, sodass aus einer Anforderung höchstens eine Bestellung wird. Bucht die Bestellung auf dieselbe Kostenstelle und dasselbe Sachkonto und liegt ihr Betrag in der Währung des Workspace nicht über dem freigegebenen, behält sie die Freigabe der Anforderung; sonst durchläuft sie den Freigabeablauf für Bestellungen. Die anfordernde Person wird benachrichtigt.

Mit 'create'-Zugriff auf Bestellungen.

Fehler

  • 400 Bad Request - Die Anforderung ist nicht freigegeben, oder weder die Anforderung noch der Body nennt einen Lieferanten. Jede Ablehnung von CreatePurchaseOrder gilt ebenfalls.
  • 409 Conflict - Die Anforderung wurde bereits bestellt.
  • 404 Not Found - Keine Bestellanforderung mit dieser ID, die die aufrufende Person sehen kann. Wer eine Anforderung nicht sehen kann, erfährt nicht, ob es sie gibt.
  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
  • 403 Forbidden - Der Bearer-Token oder API-Schlüssel des Aufrufers gewährt keinen Zugriff auf diesen Workspace (regionId) oder hat nicht die erforderliche Rolle.
POST /v1/workspaces/{regionId}/purchase-requests/{requestId}/convert
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-requests/{requestId}/convert" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 201 Created
{
   "request": {
      "id": "string",
      "title": "string",
      "description": "string",
      "requesterEmployeeKey": "string",
      "requesterName": "string",
      "costCenter": "string",
      "glCode": "string",
      "supplier": { "name": "string", "supplierConnectionId": "string", "supplierRegionId": "string" },
      "lineItems": [
         { "name": "string", "lineType": "goods" | "service", "qty": number, "unit": "string", "unitPrice": number }
      ],
      "amount": number,
      "currency": "string",
      "neededBy": "string",
      "quoteDocument": { "importId": "string", "fileName": "string", "contentType": "string", "addedAt": "string", "quoteNumber": "string", "validUntil": "string" },
      "notes": "string",
      "status": "draft" | "pending_approval" | "approved" | "ordered" | "rejected" | "canceled",
      "approval": {
         "requester": "string",
         "requesterEmployeeKey": "string",
         "groups": [
           {
             "id": "string",
             "mode": "sequential" | "parallel",
             "label": "string",
             "status": "pending" | "approved" | "rejected",
             "stages": [
               { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
             ]
           }
         ],
         "groupIndex": number,
         "status": "pending" | "approved" | "rejected",
         "history": [
           { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
         ],
         "autonomy": boolean,
         "selfApproved": boolean
       },
      "approvalVersion": number,
      "budgetCheck": { "outcome": "within" | "over" | "no_budget" | "no_rate" | "off", "mode": "off" | "warn" | "block", "costCenter": "string", "currency": "string", "budget": number, "remaining": number, "amount": number, "overBy": number, "checkedAt": "string" },
      "poId": "string",
      "rejectionReason": "string",
      "createdAt": "string",
      "updatedAt": "string",
      "submittedAt": "string",
      "decidedAt": "string",
      "canceledAt": "string",
      "canceledBy": "string"
   },
   "purchaseOrder": {
      "id": "string",
      "buyerOrgId": "string",
      "supplierOrgId": "string",
      "supplier": "string",
      "amount": number,
      "currency": "string",
      "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
      "invoiceId": "string",
      "provider": "aws" | "gcp" | "azure" | "oci",
      "payerAccounts": [
         { "id": "string", "label": "string", "detail": "string" }
      ],
      "billToParty": {
         "source": "company_profile" | "custom",
         "companyName": "string",
         "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
         "addressText": "string",
         "taxId": "string"
      },
      "costCenter": "string",
      "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
      "budgetOwner": "string",
      "buyerName": "string",
      "supplierSite": "string",
      "notes": "string",
      "requestId": "string",
      "lineItems": [
         {
         "lineNo": number,
         "scopeType": "sku" | "service" | "account" | "custom",
         "scopeId": "string" | null,
         "name": "string",
         "ruleType": "quantity" | "amount",
         "unit": "string",
         "unitPrice": number,
         "qty": number,
         "nteAmount": number,
         "lineType": "goods" | "service",
         "currency": "string",
         "paymentTerms": "string",
         "validFrom": "string",
         "validUntil": "string",
         "consumed": number,
         "customerLineNo": "string",
         "supplierSku": "string",
         "priceSource": "contract" | "list" | "manual"
       }
      ],
      "approval": {
         "requester": "string",
         "requesterEmployeeKey": "string",
         "groups": [
           {
             "id": "string",
             "mode": "sequential" | "parallel",
             "label": "string",
             "status": "pending" | "approved" | "rejected",
             "stages": [
               { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
             ]
           }
         ],
         "groupIndex": number,
         "status": "pending" | "approved" | "rejected",
         "history": [
           { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
         ],
         "autonomy": boolean,
         "selfApproved": boolean
       },
      "supplierEmail": { "to": "string", "at": "string" },
      "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
      "createdAt": "string"
   }
}
Kontakt aufnehmen