API-Referenz

Bestellungen

Bestellungen, die ein Käufer bei einem Lieferanten aufgibt: ihre Positionen, Beträge, ihr Status und ihre Freigabe.

Mehr zu dieser Ressource

Eine Bestellung verpflichtet einen Käufer gegenüber einem Lieferanten zu einer oder mehreren Positionen. Beim Anlegen startet eine Freigabekette; nach der Freigabe lässt sie sich in eine Rechnung umwandeln. Jeder Betrag lautet auf die Regionswährung - die Währung eines Workspace ist die seiner Region, festgelegt im Unternehmensprofil -, und Pleaxy rechnet keine Währungen um.

Bestellungen auflisten

Listet die Bestellungen im Workspace auf, optional in einem Datumsbereich.

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

Parameter

  • fromstring

    ISO-8601-Datum/Zeitstempel - nur Einträge, die zu oder nach diesem Zeitpunkt angelegt wurden, werden zurückgegeben.

  • tostring

    ISO-8601-Datum/Zeitstempel - nur Einträge, die zu oder vor diesem Zeitpunkt angelegt wurden, werden zurückgegeben.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Listet alle Bestellungen im Workspace in keiner bestimmten Reihenfolge auf. Optional per from/to auf einen createdAt-Bereich eingeschränkt - übergeben Sie die Grenzen eines Kalendermonats, um eine Monatsansicht zu erhalten. Ein Aufrufer mit Lieferantenrolle erhält von jeder PO eine reduzierte Ansicht (siehe GetPurchaseOrder) - käuferinterne Buchungsangaben und der vollständige Freigabeablauf werden nicht ausgegeben.

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-orders
Anfrage
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
[
   {
      "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"
   }
]

Bestellung abrufen

Ruft eine einzelne Bestellung ab.

GET/v1/workspaces/{regionId}/purchase-orders/{poId}

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

  • buyerstring

    Nur für Aufrufer mit Lieferantenrolle und nur nach einem 409 *_ID_AMBIGUOUS nötig: die Workspace-ID des Käufers (endet auf .buyer) oder die Regions-ID aus der buyers-Liste der 409-Antwort. Berücksichtigt wird nur das Dokument dieses Käufers; gibt es dort keines, folgt 404. Eine .supplier-Workspace-ID ergibt 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Für einen Aufrufer mit Käuferrolle wird der Parameter ignoriert.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Ruft eine einzelne Bestellung anhand ihrer ID ab. Für einen Aufrufer mit Käuferrolle ist regionId der eigene Workspace der PO. Für einen Aufrufer mit Lieferantenrolle ist regionId der eigene Workspace des Lieferanten, und die PO wird unter den eingehenden Bestellungen der Organisation gesucht, unabhängig davon, welcher Käufer-Workspace sie ausgestellt hat.

Antwortfelder

  • priorInvoicedobject

    Nur bei einer PO, die per Listenimport angelegt wurde und einen Betrag enthielt, den das bisherige System des Käufers bereits in Rechnung gestellt hatte. amount (in der Währung der PO) zählt zur bereits berechneten Summe der PO, damit ihr Restbetrag stimmt. basis gibt an, ob die Datei den berechneten Betrag oder den Restbetrag enthielt, aus dem er ermittelt wurde, und sourceSystem, als welcher Export die Liste gelesen wurde. importId, fileName und importedBy werden nur an den Käufer zurückgegeben.

  • billToPartyobject

    An wen der Lieferant die Rechnung stellt: companyName, die Adresse als einzelne Felder (address) oder, bei einer einzeiligen Adresse, addressText, sowie taxId. Eine Kopie, keine Verknüpfung: source "company_profile" sind die Rechnungsangaben aus dem Unternehmensprofil des Käufers zum Zeitpunkt der Bestellanlage, sodass die Bestellung die Adresse behält, mit der sie ausgestellt wurde, auch wenn sich das Profil später ändert; "custom" wurde in der Bestellung eingegeben. Eine Rechnung zur Bestellung übernimmt ihre Käuferangaben von hier. Fehlt bei Bestellungen, die vor Einführung dieses Felds angelegt wurden; diese haben stattdessen das Freitextfeld billTo.

  • supplierEmailobject

    Wann und an welche Adresse die ausgestellte Bestellung dem Lieferanten als PDF per E-Mail gesendet wurde. Wird einmal gesetzt; fehlt, wenn sie nicht per E-Mail versendet wurde (keine Kontakt-E-Mail, ein Cloud-Anbieter oder die Bestellung ist noch nicht ausgestellt).

  • costCenterChangesArray

    Nur für Käufer. Jede Änderung an costCenter nach Abschluss der Bestellung, älteste zuerst: from (fehlt, wenn es keine gab), to, reason, wer (by, byName) und wann. Siehe ChangeFinishedPurchaseOrderCostCenter.

Fehler

  • 404 Not Found - Im Workspace des Aufrufers gibt es keine PO mit dieser ID.
  • 409 Conflict - Nur für Aufrufer mit Lieferantenrolle. Code PO_ID_AMBIGUOUS: Mehr als einer Ihrer Käufer hat eine Bestellung mit dieser ID ausgestellt (IDs sind nur innerhalb eines Käufers eindeutig), daher rät Pleaxy nicht, welche gemeint ist. Es wird nichts gelesen oder geändert. Das Feld buyers im Body listet Workspace-ID und Namen jedes Käufers auf: Wiederholen Sie den Aufruf mit ?buyer=<diese Workspace-ID>.
  • 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-orders/{poId}
Anfrage
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
{
   "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"
}

Bestellung als PDF abrufen

Lädt eine Bestellung als PDF herunter.

GET/v1/workspaces/{regionId}/purchase-orders/{poId}/pdf

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

  • buyerstring

    Nur für Aufrufer mit Lieferantenrolle und nur nach einem 409 *_ID_AMBIGUOUS nötig: die Workspace-ID des Käufers (endet auf .buyer) oder die Regions-ID aus der buyers-Liste der 409-Antwort. Berücksichtigt wird nur das Dokument dieses Käufers; gibt es dort keines, folgt 404. Eine .supplier-Workspace-ID ergibt 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Für einen Aufrufer mit Käuferrolle wird der Parameter ignoriert.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Die Bestellung als PDF zum Herunterladen, Drucken oder Weiterleiten: Ihr Logo, der Rechnungsempfänger (billToParty, mit Adresse und Steuernummer), der Lieferant, Bestelldatum, Währung, Zahlungsbedingungen, die Angebotsnummer des Lieferanten, die Positionen und die Summe sowie Hinweise zur Rechnungsstellung. Es ist immer die Lieferantenkopie, gleich wer sie anfordert - ohne Kostenstelle, Budgetverantwortlichen, Notizen oder Freigaben -, und bei einer Bestellung im Entwurf, in Freigabe, abgelehnt oder storniert steht deutlich darauf, dass sie nicht auszuführen ist. Dasselbe PDF hängt an der E-Mail, die der Lieferant erhält, wenn die Bestellung ausgestellt wird. Senden Sie Accept: application/pdf, sonst kommt der Body base64-kodiert zurück.

Fehler

  • 404 Not Found - Im Workspace des Aufrufers gibt es keine PO mit dieser ID.
  • 409 Conflict - Nur für Aufrufer mit Lieferantenrolle. Code PO_ID_AMBIGUOUS: Mehr als einer Ihrer Käufer hat eine Bestellung mit dieser ID ausgestellt (IDs sind nur innerhalb eines Käufers eindeutig), daher rät Pleaxy nicht, welche gemeint ist. Es wird nichts gelesen oder geändert. Das Feld buyers im Body listet Workspace-ID und Namen jedes Käufers auf: Wiederholen Sie den Aufruf mit ?buyer=<diese Workspace-ID>.
  • 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-orders/{poId}/pdf
Anfrage
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/pdf" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
application/pdf

Bestellung anlegen

Legt eine Bestellung an oder speichert sie als Entwurf.

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

Body

  • poNumberstring

    Ihre eigene Bestellnummer, die statt einer generierten als ID dieser PO dient, z. B. PO-2026-0042. Buchstaben, Ziffern, '.', '_' und '-', bis zu 40 Zeichen, eindeutig innerhalb der Region.

  • supplierstringPflicht

    Anzeigename des Lieferanten bzw. der Gegenpartei.

  • supplierRegionIdstring

    regionId der angebundenen Lieferantenorganisation, an die diese PO geht, sofern bekannt. Sie brauchen eine freigegebene Lieferantenverbindung zu ihr; jede andere Region wird abgelehnt. Verknüpft die PO mit dem tatsächlichen Lieferanten-Workspace dieser Organisation statt nur mit einem Freitextnamen.

  • currencystring

    ISO 4217: die Währung, in der die Bestellung bepreist ist. Bei einem Lieferanten auf Pleaxy (supplierRegionId) eine, in der seine Region Preise anbietet, standardmäßig seine Hauptwährung (sonst 400 PO_CURRENCY_NOT_OFFERED). Bei einem Cloud-Anbieter oder einem Lieferanten außerhalb von Pleaxy jeder Code; standardmäßig die "Rechnungswährung", die Sie für diesen Lieferanten festgelegt haben (SetSupplierCurrencies), sonst die Ihres Workspace. Jede Position lautet auf diese Währung. Eine Bestellung in einer anderen Währung als der Ihres Workspace durchläuft jeden Freigabeschritt und wird nie automatisch freigegeben, weil Freigabelimits in der Währung Ihres Workspace gelten.

  • supplierContactEmailstring

    Nur für einen Lieferanten außerhalb von Pleaxy (ohne supplierRegionId oder provider): seine Kontakt-E-Mail. Wenn die PO gesendet wird, sofort oder beim Einreichen eines Entwurfs, lädt Pleaxy ihn ein oder verknüpft den Lieferanten, den dieser Workspace bereits hat.

  • provider"aws" | "gcp" | "azure" | "oci"

    Cloud-Anbieter, den diese PO abdeckt, falls vorhanden.

  • payerAccountsArray<{ id, label, detail }>

    Nur mit provider: die Cloud-Verbindungen dieser Region zu diesem Anbieter, für die die PO gilt, per ID. Eine Verbindung, die noch eingerichtet wird, wird abgelehnt. Die PO speichert Bezeichnung und Detail jeder Verbindung selbst; die von Ihnen gesendeten werden ignoriert, müssen aber Strings sein.

  • billToParty{ companyName?, address, taxId? }

    An wen der Lieferant die Rechnung stellt, wenn es nicht die Rechnungsangaben Ihres Unternehmensprofils sind. companyName (bis zu 200 Zeichen) ist standardmäßig Ihr Unternehmensname; address nimmt dieselben Felder und länderspezifischen Regeln wie billingAddressParts in UpdateOrgProfile; taxId hat bis zu 64 Zeichen. Ohne Angabe übernimmt die Bestellung Namen, Rechnungsadresse und Steuernummer Ihres Unternehmensprofils in ihrem aktuellen Stand.

  • billTostring

    Veraltet: Verwenden Sie billToParty. Eine einzeilige Rechnungsadresse Ihres Unternehmens mit bis zu 500 Zeichen, so gespeichert wie eingegeben. Wird ignoriert, wenn billToParty gesendet wird.

  • costCenterstring

    Interner Kostenstellencode.

  • budgetOwnerstring

    Name des Budgetverantwortlichen.

  • buyerNamestring

    Name des Ansprechpartners beim Käufer; wird, falls gesetzt, auch als Anforderer der Freigabekette verwendet.

  • supplierSitestring

    Kennung des Lieferantenstandorts.

  • notesstring

    Freitextnotizen.

  • contractIdstring

    Ihr aktiver Vertrag mit diesem Lieferanten, unter den die Bestellung fällt. Positionen ohne paymentTerms übernehmen seine Standard-Zahlungsbedingungen, und Rechnungen zur Bestellung werden gegen ihn geprüft.

  • draftboolean

    Als Entwurf speichern, statt zur Freigabe einzureichen. Reichen Sie ihn später mit SubmitPurchaseOrderDraft ein.

  • lineItemsArray<LineItem>Pflicht

    Mindestens eine Position. Jede Position: scopeType ("sku" | "service" | "account" | "custom"), scopeId, name, ruleType ("quantity" | "amount"), unit, unitPrice, qty, nteAmount, currency (optional), paymentTerms (optional, bis zu 40 Zeichen: ohne Angabe übernimmt die Position die Standard-Zahlungsbedingungen des Vertrags, aus dem sie bepreist wurde, oder des Vertrags, den die Bestellung in contractId nennt, sonst die des Katalogartikels, sonst "Net 30"), validFrom, validUntil, customerLineNo (optional: Ihre eigene Nummer für die Position, bis zu 40 Zeichen, angezeigt neben der lineNo des Servers), lineType (optional: "goods", Ware, die versendet und mit einem Wareneingang angenommen wird, oder "service", Arbeit wie Support oder Schulung, die mit einem Leistungserfassungsblatt bestätigt und nie versendet wird; ohne Angabe übernimmt die Position die Art ihres Katalogartikels, sonst ist sie eine Leistung, wenn ihre Einheit eine Zeiteinheit wie hr, day oder month ist, und andernfalls Ware). Jede Position lautet auf die Regionswährung, die der Server einträgt - lassen Sie currency weg oder senden Sie die Regionswährung (Groß-/Kleinschreibung egal). Pleaxy rechnet keine Währungen um, daher wird jede andere Währung abgelehnt.

  • lineItems[].ai{ invoicer, vendor, model, meter, region? }

    Eine KI-Position (KI-Ausgabenkontrollen): wer sie abrechnet, der Modellanbieter, die Modell-ID wie abgerechnet, der Zähler (input_tokens, output_tokens, cached_input_tokens, batch_input_tokens, gpu_hours, ... oder prepaid_credit für einen Kauf von Prepaid-Credits) und die Region, wo nach Region bepreist wird. Eine Mengenposition in der Einheit des Zählers (Millionen Tokens, Stunden). Die KI-Positionen einer Rechnung werden diesen über den Umfang zugeordnet, nie über die Beschreibung. SuggestAiPoLines füllt sie vor.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Legt eine Bestellung aus einer oder mehreren Positionen an oder speichert sie als Entwurf. Der Gesamtbetrag ist die Summe der Positionsbeträge (qty × unitPrice bei einer Position mit Mengenregel bzw. nteAmount bei einer Position mit Betragsregel). Sofern es kein Entwurf ist, wird ihre Freigabekette sofort aus dem Bestell-Freigabeablauf, den Autonomie-Einstellungen, den Automatisierungsregeln und den Ausgabenlimits der Region aufgebaut. Wird sie automatisch freigegeben, entsteht die PO direkt im Status awaiting_fulfillment statt pending_approval. Sobald eine PO ausgestellt ist (awaiting_fulfillment, sofort oder bei ihrer letzten Freigabe), wird der Lieferant benachrichtigt und erhält die Bestellung, sofern er kein Cloud-Anbieter ist, als PDF per E-Mail (siehe GetPurchaseOrderPdf) - an supplierContactEmail, sonst an den Kontakt in Ihrem Lieferantendatensatz -, mit dem Anforderer als Reply-To. Wird einmal pro Bestellung gesendet und als supplierEmail festgehalten; eine fehlgeschlagene E-Mail lässt die Bestellung nie fehlschlagen.

Antwortfelder

  • idstring

    ID der PO, z. B. "PO-AB12CD34".

  • statusstring

    "pending_approval" oder "awaiting_fulfillment", wenn der Betrag automatisch freigegeben wurde.

  • amountnumber

    Summe aller Positionsbeträge.

  • currencystring

    ISO-4217-Code, auf den die PO und jede Position lauten - die Regionswährung, vom Server gesetzt.

  • approvalApprovalChain

    Die für diese PO aufgebaute Freigabekette.

  • lineItemsArray<LineItem>

    Jede Position wie gespeichert, zusätzlich lineNo und consumed (beginnt bei 0).

Fehler

  • 400 Bad Request - Die Validierung ist fehlgeschlagen (auch wenn einer billToParty-Adresse ein Bestandteil fehlt, den ihr Land verlangt), die Währung einer Position ist nicht die Regionswährung ("Line items must be in this region's currency (EUR). Pleaxy doesn't convert currencies."), oder der Plan der Region hat sein Limit an Bestellungen für rollierende 30 Tage erreicht (Free-Plan: 10 pro rollierende 30 Tage).
  • 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-orders
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/reg_01k5x8p9j3q7vn2mhb4tzc6rde.buyer/purchase-orders" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "supplier": "Amazon Web Services",
    "provider": "aws",
    "lineItems": [
      {
        "scopeType": "sku",
        "scopeId": "AWS-EC2-M5LG",
        "name": "EC2 m5.large",
        "ruleType": "quantity",
        "unit": "hr",
        "unitPrice": 0.096,
        "qty": 5000,
        "nteAmount": 0,
        "paymentTerms": "Net 30",
        "validFrom": "2026-01-01",
        "validUntil": "2026-12-31"
      }
    ]
  }'
Antwort · 201 Created
{
  "id": "PO-AB12CD34",
  "buyerOrgId": "org_buyer_us-east-1",
  "supplier": "Amazon Web Services",
  "amount": 480,
  "currency": "USD",
  "status": "pending_approval",
  "provider": "aws",
  "lineItems": [
    {
      "lineNo": 1,
      "scopeType": "sku",
      "scopeId": "AWS-EC2-M5LG",
      "name": "EC2 m5.large",
      "ruleType": "quantity",
      "unit": "hr",
      "unitPrice": 0.096,
      "qty": 5000,
      "nteAmount": 0,
      "currency": "USD",
      "paymentTerms": "Net 30",
      "validFrom": "2026-01-01",
      "validUntil": "2026-12-31",
      "consumed": 0
    }
  ],
  "approval": {
    "requester": "Amazon Web Services",
    "groups": [
      {
        "id": "g1",
        "mode": "sequential",
        "status": "pending",
        "stages": [
          { "id": "cost-owner", "label": "Cost owner", "approverEmployeeKey": "us-east-1a2b3c4d", "approverName": "Jamie Rivera", "status": "pending" }
        ]
      },
      {
        "id": "g2",
        "mode": "sequential",
        "status": "pending",
        "stages": [
          { "id": "finance", "label": "Finance", "approverEmployeeKey": "us-east-1e5f6g7h", "approverName": "Priya Nair", "status": "pending" }
        ]
      }
    ],
    "groupIndex": 0,
    "status": "pending",
    "history": []
  },
  "createdAt": "2026-01-15T18:04:22.000Z"
}

Bestellung aktualisieren

Aktualisiert die Angaben oder Positionen einer Bestellung.

PATCH/v1/workspaces/{regionId}/purchase-orders/{poId}

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

Body

  • lineItemsArray<LineItem>

    Ersetzt alle Positionen, in derselben Form wie bei CreatePurchaseOrder. Mindestens eine.

  • billToParty{ companyName?, address, taxId? } | null

    An wen der Lieferant die Rechnung stellt, wie bei CreatePurchaseOrder. null übernimmt die Rechnungsangaben Ihres Unternehmensprofils in ihrem aktuellen Stand. Buchungsangabe: schickt die PO nie erneut in die Freigabe.

  • billTostring

    Veraltet: Verwenden Sie billToParty. Eine einzeilige Rechnungsadresse mit bis zu 500 Zeichen; ein leerer String übernimmt die des Unternehmensprofils. Wird ignoriert, wenn billToParty gesendet wird.

  • costCenterstring

    Interner Kostenstellencode.

  • budgetOwnerstring

    Name des Budgetverantwortlichen.

  • buyerNamestring

    Name des Ansprechpartners beim Käufer.

  • notesstring

    Freitextnotizen.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Aktualisiert die Buchungsfelder einer Bestellung oder ersetzt ihre Positionen. Nicht mehr möglich, sobald sie geschlossen, storniert oder bezahlt ist. Das Senden von lineItems ersetzt alle Positionen, berechnet den Betrag neu und baut die Freigabekette von Grund auf neu auf, wobei bereits eingeholte Freigaben verworfen werden: Ein Entwurf bleibt ein Entwurf, ansonsten wird die PO awaiting_fulfillment, wenn die neue Kette automatisch freigibt, oder pending_approval, wenn sie eine Person braucht. Eine Erhöhung der Summe einer freigegebenen PO kann sie also erneut in die Freigabe schicken. Ausgabenlimits werden sowohl für den Anforderer der PO als auch für die bearbeitende Person geprüft. Um eine geschlossene, stornierte oder bezahlte PO auf eine andere Kostenstelle umzubuchen, verwenden Sie ChangeFinishedPurchaseOrderCostCenter.

Fehler

  • 400 Bad Request - Die Validierung ist fehlgeschlagen; die PO ist geschlossen, storniert oder bezahlt ("PO '{poId}' can't be edited once it's {status}"); oder die Währung einer Position ist nicht die Regionswährung.
  • 404 Not Found - Im Workspace gibt es keine PO mit dieser ID.
  • 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-orders/{poId}
Anfrage
curl -X PATCH "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
{
   "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"
}

Bestellentwurf einreichen

Reicht einen Bestellentwurf zur Freigabe ein.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/submit

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Reicht einen Entwurf zur Freigabe ein. Die Freigabekette wird jetzt aufgebaut, aus dem aktuellen Freigabeablauf, den aktuellen Autonomie-Einstellungen und Ausgabenlimits, nicht aus denen beim Speichern des Entwurfs, und die Positionen übernehmen die aktuelle Währung der Region. Ausgabenlimits werden sowohl für den Anforderer des Entwurfs als auch für die einreichende Person geprüft. Ein Lieferant außerhalb von Pleaxy mit supplierContactEmail wird jetzt eingeladen. Erwartet keinen Body.

Fehler

  • 400 Bad Request - Die PO ist kein Entwurf ("PO '{poId}' isn't a draft"), oder sie überschreitet ein Ausgabenlimit, das die einreichende Person als freigebende Person nennt, sodass niemand sie freigeben könnte ("Not submitted. This draft is over a spend limit that names you as its approver…").
  • 404 Not Found - Im Workspace gibt es keine PO mit dieser ID.
  • 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-orders/{poId}/submit
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/submit" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 201 Created
{
   "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"
}

Bestellung stornieren

Storniert eine noch nicht ausgeführte Bestellung.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/cancel

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

Body

  • reasonstring

    Bis zu 500 Zeichen. Der Lieferant sieht sie genau so, wie sie geschrieben ist.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Storniert eine Bestellung, die ein Entwurf ist, auf Freigabe oder Ausführung wartet oder abgelaufen ist. Damit stoppt der Käufer die Bestellung; es ist keine Ablehnung durch eine freigebende Person. Der Lieferant wird informiert, mit Ihrer Begründung, falls Sie eine angeben.

Fehler

  • 400 Bad Request - Die PO hat einen Status, in dem sie nicht storniert werden kann ("PO '{poId}' can't be canceled once it's {status}"), oder reason ist länger als 500 Zeichen.
  • 404 Not Found - Im Workspace gibt es keine PO mit dieser ID.
  • 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-orders/{poId}/cancel
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/cancel" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "reason": "string"
}
Antwort · 201 Created
{
   "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"
}

Bestellung schließen

Schließt eine Bestellung, bei der nichts mehr in Rechnung zu stellen ist.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/close

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Schließt eine Bestellung ab, die auf Ausführung wartet, berechnet, bezahlt oder abgelaufen ist, etwa eine vollständig ausgeschöpfte, bei der nichts mehr in Rechnung zu stellen ist. Eine geschlossene PO kann nicht bearbeitet werden. Erwartet keinen Body.

Fehler

  • 400 Bad Request - Die PO hat einen Status, in dem sie nicht geschlossen werden kann ("PO '{poId}' can't be closed while it's {status}").
  • 404 Not Found - Im Workspace gibt es keine PO mit dieser ID.
  • 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-orders/{poId}/close
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/close" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 201 Created
{
   "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"
}

Kostenstelle einer abgeschlossenen Bestellung ändern

Bucht eine abgeschlossene Bestellung auf eine andere Kostenstelle um.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/cost-center

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

Body

  • costCenterstringPflicht

    Die Kostenstelle, auf die die Bestellung gebucht wird, bis zu 100 Zeichen. Wird ohne Beachtung der Groß-/Kleinschreibung mit der Liste des Workspace abgeglichen und so gespeichert, wie sie in der Liste steht.

  • reasonstringPflicht

    Grund der Umbuchung, bis zu 500 Zeichen. Wird an der Bestellung gespeichert.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Bucht eine geschlossene, stornierte oder bezahlte Bestellung mit einer Begründung auf eine andere Kostenstelle um - etwa nach einer Umstrukturierung oder bei einer falschen Zuordnung, die beim Monatsabschluss auffällt. Nur costCenter ändert sich: Positionen, Betrag und Freigaben bleiben wie freigegeben, und nichts geht erneut in die Freigabe. Die Änderung wird an der Bestellung in costCenterChanges festgehalten, mit Urheber und Zeitpunkt. Führt der Workspace eine Kostenstellenliste, muss die neue Kostenstelle eine aktive aus dieser Liste sein. Bei einer offenen PO ändern Sie die Kostenstelle stattdessen mit UpdatePurchaseOrder.

Nur für Workspace-Administratoren: ein angemeldeter Administrator oder ein mit der Administratorrolle erzeugter API-Schlüssel.

Antwortfelder

  • costCenterChangesArray

    Jede auf diesem Weg vorgenommene Änderung, älteste zuerst: { from?, to, reason, by, byName, at }.

Fehler

  • 400 Bad Request - Keine Begründung ("Say why the cost center is changing."); die PO ist noch offen ("PO '{poId}' is still open. Change its cost center by editing the order."); die Kostenstelle ist keine aktive in der Liste des Workspace ("'{costCenter}' isn't an active cost center in this workspace. Pick one from the cost centers list."); es ist die Kostenstelle, die die PO bereits hat; oder ein Feld besteht die Validierung nicht.
  • 403 Forbidden - Der Aufrufer ist kein Administrator dieses Käufer-Workspace ("Only an administrator of this workspace can add or change cost centers.").
  • 404 Not Found - Im Workspace gibt es keine PO mit dieser ID.
  • 409 Conflict - Die PO hat sich während des Speicherns geändert ("PO '{poId}' changed while you were editing it. Refresh and try again.").
  • 401 Unauthorized - Es wurden keine Zugangsdaten übermittelt, oder der Bearer-Token bzw. der X-Api-Key-Wert fehlt, ist ungültig, abgelaufen oder widerrufen.
POST /v1/workspaces/{regionId}/purchase-orders/{poId}/cost-center
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/cost-center" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "costCenter": "string",
   "reason": "string"
}
Antwort · 201 Created
{
   "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"
}

Bestellung freigeben

Gibt den aktuellen Freigabeschritt einer Bestellung frei.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/approve

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Bringt die Freigabekette der PO um eine Stufe weiter. Nur die Person, die der aktuelle Schritt nennt, darf dies aufrufen - keine Rolle, Berechtigung und keine Administratorrechte ersetzen die Benennung, und ein API-Schlüssel kann nie benannt werden. Nach der Freigabe der letzten Stufe wechselt der Status der PO zu awaiting_fulfillment, der Lieferant erhält eine po_approved-Benachrichtigung, und die Bestellung wird ihm als PDF per E-Mail gesendet (siehe CreatePurchaseOrder). Erwartet keinen Body und handelt als der authentifizierte Aufrufer (ein API-Schlüssel handelt als apikey:<keyId>).

Nur angemeldete Sitzung. Jeder andere Aufrufer, auch ein API-Schlüssel, erhält 403 HUMAN_APPROVAL_REQUIRED, bevor etwas gelesen wird.

Fehler

  • 400 Bad Request - Die Freigabekette der PO hat keine offene Stufe (bereits freigegeben oder abgelehnt).
  • 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 - Im Workspace gibt es keine PO mit dieser ID.
  • 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-orders/{poId}/approve
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/approve" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 201 Created
{
   "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"
}

Bestellung ablehnen

Lehnt eine Bestellung in ihrem aktuellen Freigabeschritt ab.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/reject

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Lehnt die PO in ihrer aktuellen Freigabestufe ab. Nur die Person, die der aktuelle Schritt nennt, darf dies aufrufen - für das Ablehnen gilt dieselbe Regel wie für das Freigeben. Der Status wird rejected, und der Lieferant erhält eine po_rejected-Benachrichtigung. Endgültig - eine abgelehnte PO kann nicht erneut eingereicht werden. Erwartet keinen Body und handelt als der authentifizierte Aufrufer (ein API-Schlüssel handelt als apikey:<keyId>).

Fehler

  • 400 Bad Request - Die Freigabekette der PO hat keine offene Stufe.
  • 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 - Im Workspace gibt es keine PO mit dieser ID.
  • 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-orders/{poId}/reject
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/reject" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 201 Created
{
   "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"
}

Freigabestufe einer Bestellung neu zuweisen

Weist einen offenen Freigabeschritt einer anderen Person zu.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/approval/reassign

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

Body

  • stageIdstringPflicht

    ID des offenen Schritts, der neu zugewiesen wird. Er kann in jeder Gruppe der Kette liegen, nicht nur in der aktuellen.

  • approverEmployeeKeystringPflicht

    Mitarbeiterschlüssel (Cognito sub) der neuen freigebenden Person. Muss ein Käufermitglied dieses Workspace sein und nicht der handelnde Administrator.

  • reasonstring

    Grund der Neuzuweisung, bis zu 280 Zeichen. Wird im Freigabeverlauf angezeigt.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Richtet einen offenen Schritt der Freigabekette dieser Bestellung auf eine andere namentlich genannte Person aus. Nur für Administratoren (approvalSettings:edit) und nur in angemeldeten Sitzungen. Da ein Schritt ausschließlich von der Person bearbeitet werden kann, die er nennt, ist dies der einzige Weg, einen Schritt zu verschieben, dessen freigebende Person ausgeschieden ist oder nie zugewiesen wurde - es gibt keine Ersatzperson. Es ändert nur die Kette dieses Dokuments: Die in den Einstellungen konfigurierte Kette der Organisation bleibt unberührt, und die Änderung wird im Freigabeverlauf als reassigned-Eintrag festgehalten.

Fehler

  • 400 Bad Request - Die Kette ist bereits freigegeben oder abgelehnt; der Schritt wurde bereits freigegeben oder abgelehnt; die neue freigebende Person ist keine Mitarbeiterin bzw. kein Mitarbeiter dieses Workspace; die neue freigebende Person hat die Bestellung angefordert bzw. die Rechnung erfasst, ist durch Funktionstrennung ausgeschlossen, hat das Ausgabenlimit bereits mit eigener Befugnis freigegeben oder besetzt bereits einen anderen Platz im selben Schritt; oder der Schritt ist die Ausgabenlimit-Prüfung, deren freigebende Person ein festgeschriebener Prüfungsnachweis ist (ändern Sie sie unter Einstellungen › Ausgabenlimits).
  • 403 Forbidden - Dem Aufrufer fehlt approvalSettings:edit (Administrator), oder er hat sich selbst als neue freigebende Person benannt - wer sich einen aktiven Schritt selbst zuweist, macht eine Person zur gesamten Kette, ohne dass eine Richtlinie erkennbar ist. Code HUMAN_APPROVAL_REQUIRED, wenn der Aufrufer ein API-Schlüssel ist: Nur ein angemeldeter Administrator kann einen Freigabeschritt neu zuweisen.
  • 404 Not Found - Im Workspace gibt es kein Dokument mit dieser ID, oder die Kette hat keinen Schritt mit dieser stageId.
  • 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-orders/{poId}/approval/reassign
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/approval/reassign" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "stageId": "string",
   "approverEmployeeKey": "string",
   "reason": "string"
}
Antwort · 201 Created
{
   "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"
}

Kommentare zu einer Bestellung auflisten

Listet die Kommentare zu einer Bestellung auf.

GET/v1/workspaces/{regionId}/purchase-orders/{poId}/comments

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

  • buyerstring

    Nur für Aufrufer mit Lieferantenrolle und nur nach einem 409 *_ID_AMBIGUOUS nötig: die Workspace-ID des Käufers (endet auf .buyer) oder die Regions-ID aus der buyers-Liste der 409-Antwort. Berücksichtigt wird nur das Dokument dieses Käufers; gibt es dort keines, folgt 404. Eine .supplier-Workspace-ID ergibt 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Für einen Aufrufer mit Käuferrolle wird der Parameter ignoriert.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Die Kommentare zu einer Bestellung, älteste zuerst: die internen Ihrer eigenen Seite und alle geteilten. Ein vom Verfasser gelöschter Kommentar bleibt mit leerem Text im Verlauf, sodass weiterhin erkennbar ist, dass und wann etwas gesagt wurde. Gleiche Suche wie bei GetPurchaseOrder, sodass ein Lieferant die an ihn ausgestellten POs erreicht.

Antwortfelder

  • visibilitystring

    internal: nur die eigene Seite des Verfassers. shared: Käufer und Lieferant lesen ihn beide.

  • authorKey, mentionsstring, Array

    Nur bei Kommentaren Ihrer eigenen Seite: wer ihn geschrieben hat, per Mitarbeiterschlüssel, und wen er erwähnt hat. Die andere Seite sieht authorName und authorOrgName.

  • bodystring

    Klartext mit seinen Zeilenumbrüchen. Leer, sobald der Verfasser ihn gelöscht hat; deletedAt gibt dann an, wann.

  • viewerIsAuthorboolean

    Ob der Aufrufer ihn geschrieben hat und ihn daher löschen darf. Für einen API-Schlüssel immer false.

Fehler

  • 404 Not Found - Im Workspace des Aufrufers gibt es keine PO mit dieser ID.
  • 409 Conflict - Nur für Aufrufer mit Lieferantenrolle. Code PO_ID_AMBIGUOUS: Mehr als einer Ihrer Käufer hat eine Bestellung mit dieser ID ausgestellt (IDs sind nur innerhalb eines Käufers eindeutig), daher rät Pleaxy nicht, welche gemeint ist. Es wird nichts gelesen oder geändert. Das Feld buyers im Body listet Workspace-ID und Namen jedes Käufers auf: Wiederholen Sie den Aufruf mit ?buyer=<diese Workspace-ID>.
  • 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-orders/{poId}/comments
Anfrage
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/comments" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
{
   "comments": [
      {
         "id": "string",
         "documentKind": "invoice" | "purchase_order",
         "documentId": "string",
         "body": "string",
         "visibility": "internal" | "shared",
         "authorSide": "buyer" | "supplier",
         "authorKey": "string",
         "authorName": "string",
         "authorOrgName": "string",
         "mentions": [ { "employeeKey": "string", "name": "string" } ],
         "createdAt": "string",
         "deletedAt": "string",
         "viewerIsAuthor": boolean
      }
   ]
}

Kommentar zu einer Bestellung hinzufügen

Fügt einer Bestellung einen Kommentar hinzu.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/comments

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

  • buyerstring

    Nur für Aufrufer mit Lieferantenrolle und nur nach einem 409 *_ID_AMBIGUOUS nötig: die Workspace-ID des Käufers (endet auf .buyer) oder die Regions-ID aus der buyers-Liste der 409-Antwort. Berücksichtigt wird nur das Dokument dieses Käufers; gibt es dort keines, folgt 404. Eine .supplier-Workspace-ID ergibt 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Für einen Aufrufer mit Käuferrolle wird der Parameter ignoriert.

Body

  • bodystringPflicht

    Klartext, bis zu 2.000 Zeichen. Zeilenumbrüche bleiben erhalten; Steuerzeichen, Zeichen für bidirektionalen Text und unsichtbare Zeichen werden entfernt.

  • visibility"internal" | "shared"Pflicht

    internal: nur Ihr eigenes Team. shared: Auch die andere Seite liest und beantwortet ihn. Kommentare eines Lieferanten sind immer geteilt.

  • mentionsstring[]

    Bis zu 10 Mitarbeiterschlüssel von Personen in Ihrem eigenen Workspace, die benachrichtigt werden (siehe ListEmployees). Die Benachrichtigung enthält nie den Text des Kommentars.

Rückgabe

201 Created mit dem in der Antwort gezeigten Objekt.

Weitere Details

Kommentare zu einer Bestellung: intern für Ihr Team oder mit der anderen Seite geteilt. Kommentare werden nie bearbeitet. Die von Ihnen erwähnten Personen, frühere Kommentierende Ihrer Seite und bei einem geteilten Kommentar die andere Seite werden benachrichtigt (po_comment); die Benachrichtigung enthält nie den Text.

Nur angemeldete Sitzung. Ein API-Schlüssel erhält 403 HUMAN_SESSION_REQUIRED.

Fehler

  • 400 Bad Request - Ein leerer Text ("Write something before you post the comment."), mehr als 2.000 Zeichen, mehr als 10 Erwähnungen, eine Erwähnung einer Person außerhalb Ihres Workspace, eine andere Sichtbarkeit als internal oder shared, ein interner Kommentar eines Lieferanten ("A supplier's comments are always shared with the buyer.") oder ein geteilter Kommentar zu einem Dokument, dessen Lieferant nicht auf Pleaxy ist (posten Sie ihn stattdessen als internal).
  • 403 Forbidden - Code HUMAN_SESSION_REQUIRED: Der Aufrufer ist ein API-Schlüssel ("Comments are written by people. Sign in to Pleaxy to post one.").
  • 404 Not Found - Im Workspace des Aufrufers gibt es keine PO mit dieser ID.
  • 409 Conflict - Nur für Aufrufer mit Lieferantenrolle. Code PO_ID_AMBIGUOUS: Mehr als einer Ihrer Käufer hat eine Bestellung mit dieser ID ausgestellt (IDs sind nur innerhalb eines Käufers eindeutig), daher rät Pleaxy nicht, welche gemeint ist. Es wird nichts gelesen oder geändert. Das Feld buyers im Body listet Workspace-ID und Namen jedes Käufers auf: Wiederholen Sie den Aufruf mit ?buyer=<diese Workspace-ID>.
  • 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-orders/{poId}/comments
Anfrage
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/comments" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "body": "string",
   "visibility": "internal" | "shared",
   "mentions": [ "string" ]
}
Antwort · 201 Created
{
   "id": "string",
   "documentKind": "invoice" | "purchase_order",
   "documentId": "string",
   "body": "string",
   "visibility": "internal" | "shared",
   "authorSide": "buyer" | "supplier",
   "authorKey": "string",
   "authorName": "string",
   "authorOrgName": "string",
   "mentions": [ { "employeeKey": "string", "name": "string" } ],
   "createdAt": "string",
   "deletedAt": "string",
   "viewerIsAuthor": boolean
}

Kommentar zu einer Bestellung löschen

Löscht einen Ihrer Kommentare zu einer Bestellung.

DELETE/v1/workspaces/{regionId}/purchase-orders/{poId}/comments/{commentId}

Parameter

  • poIdstringPflicht

    Die ID der Bestellung.

  • commentIdstringPflicht

    Der Kommentar, z. B. "CMT-1760313600000-3f9a1c2e".

  • buyerstring

    Nur für Aufrufer mit Lieferantenrolle und nur nach einem 409 *_ID_AMBIGUOUS nötig: die Workspace-ID des Käufers (endet auf .buyer) oder die Regions-ID aus der buyers-Liste der 409-Antwort. Berücksichtigt wird nur das Dokument dieses Käufers; gibt es dort keines, folgt 404. Eine .supplier-Workspace-ID ergibt 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Für einen Aufrufer mit Käuferrolle wird der Parameter ignoriert.

Rückgabe

200 OK mit dem in der Antwort gezeigten Objekt.

Weitere Details

Zieht Ihren eigenen Kommentar zurück: Sein Text wird entfernt, und der Verlauf behält, dass ein Kommentar abgegeben wurde. Erneutes Löschen ändert nichts.

Nur angemeldete Sitzung. Ein API-Schlüssel erhält 403 HUMAN_SESSION_REQUIRED.

Fehler

  • 403 Forbidden - Code HUMAN_SESSION_REQUIRED: Der Aufrufer ist ein API-Schlüssel ("Comments are written by people. Sign in to Pleaxy to post one.").
  • 403 Forbidden - Der Kommentar stammt nicht von Ihnen ("Only the person who wrote a comment can delete it.").
  • 404 Not Found - Zu diesem Dokument gibt es keinen für Sie sichtbaren Kommentar mit dieser ID ("Comment {commentId} not found."), oder das Dokument existiert nicht.
  • 409 Conflict - Nur für Aufrufer mit Lieferantenrolle. Code PO_ID_AMBIGUOUS: Mehr als einer Ihrer Käufer hat eine Bestellung mit dieser ID ausgestellt (IDs sind nur innerhalb eines Käufers eindeutig), daher rät Pleaxy nicht, welche gemeint ist. Es wird nichts gelesen oder geändert. Das Feld buyers im Body listet Workspace-ID und Namen jedes Käufers auf: Wiederholen Sie den Aufruf mit ?buyer=<diese Workspace-ID>.
  • 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.
DELETE /v1/workspaces/{regionId}/purchase-orders/{poId}/comments/{commentId}
Anfrage
curl -X DELETE "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/comments/{commentId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Antwort · 200 OK
{
   "id": "string",
   "documentKind": "invoice" | "purchase_order",
   "documentId": "string",
   "body": "string",
   "visibility": "internal" | "shared",
   "authorSide": "buyer" | "supplier",
   "authorKey": "string",
   "authorName": "string",
   "authorOrgName": "string",
   "mentions": [ { "employeeKey": "string", "name": "string" } ],
   "createdAt": "string",
   "deletedAt": "string",
   "viewerIsAuthor": boolean
}
Kontakt aufnehmen