---
title: "Purchase Order Update"
method: POST
path: "/PURCHASE_ORDER_UPDATE"
tags: ["Purchase Order Management"]
---

# Purchase Order Update

`POST /PURCHASE_ORDER_UPDATE`

## Request

- Base URL: `https://apidocs.goaugment.com` (the document declares no server; this is the origin it was published from)
- URL: `https://apidocs.goaugment.com/PURCHASE_ORDER_UPDATE`
- Auth: none declared
- TypeScript: <https://skmtc.dev/goaugment/apis/webhooks/docs/PURCHASE_ORDER_UPDATE/post.ts> (a function with typed inputs; its response is checked against the schema)

Sent when a supplier gives us new expected dates for a purchase order, so your system can update the promise dates it holds. One event per update, scoped to the purchase order, with the affected lines nested.

Dates appear at the level the supplier stated them: on the purchase order when the supplier gave one date for the whole order, on `lineItems` when the supplier spoke line by line. Only lines that have a new date appear, and an update that carries no new date sends no event.

`note` carries what the typed fields cannot — the supplier's wording for why a date moved. It is present at both levels.

Failed deliveries are retried with exponential backoff, so the same update can arrive more than once — including after your handler applied it, when the `200` did not reach Augment. `purchaseOrderNumber` plus `collectedAt` identifies one update: treat a repeat of that pair as the delivery you have already applied.

Today this event carries expected dates only. What Augment learns that is not a date — cancellations, no record of the purchase order, shipped and delivered confirmations, tracking numbers — is not sent on this event.

## Request body

- PurchaseOrderUpdate: New expected dates for a purchase order and its lines, as stated by the supplier. Scoped to the purchase order, with the affected lines nested. Apply the dates as updated promise dates on the purchase order. The whole request body, sent without the shared event envelope. Every event carries at least one new date — on the purchase order, on a line, or both. Each date field is individually optional because dates appear only at the level the supplier stated them, so no single field is the one that is always set. That is a guarantee about what Augment sends, not a shape you have to validate.
  - `purchaseOrderNumber` string, required: Your purchase order number, as sent when the purchase order was created.
  - `expectedShipDate` string, date, nullable: New expected ship date for the whole purchase order, as a UTC calendar day. Present only when the supplier stated one date for the order rather than per line. Null otherwise.
  - `expectedArrivalDate` string, date, nullable: New expected arrival date for the whole purchase order, as a UTC calendar day. Present only when the supplier stated one date for the order rather than per line. Null otherwise.
  - `note` string, nullable: What the typed fields cannot carry — the supplier's account of why the dates moved, at purchase order level.
  - `lineItems` PurchaseOrderUpdateLineItem[], required: The lines that have a new date. Lines the supplier said nothing new about are omitted, so this array is empty when the supplier stated dates only at purchase order level.
    - `identifier` string, required: How the supplier referred to the line. Matches the `lineNumber` you sent on the purchase order when Augment can resolve it; otherwise it is the identifier the supplier used, which is often a SKU and sometimes prose such as `Line 2`. Resolve it against your own lines before applying the dates, and route what you cannot match for review — this field is not a guaranteed reference to a line you sent.
    - `expectedShipDate` string, date, nullable: New expected ship date for this line, as a UTC calendar day. Null when the supplier gave no new ship date for the line.
    - `expectedArrivalDate` string, date, nullable: New expected arrival date for this line, as a UTC calendar day. Null when the supplier gave no new arrival date for the line.
    - `note` string, nullable: What the typed fields cannot carry — the supplier's account of why this line's dates moved.
  - `source` 'SUPPLIER_EMAIL', required: Where the dates came from. New values may be added as Augment collects updates over other channels, so treat this as an open set.
  - `collectedAt` string, date-time, required: When Augment collected the update from the supplier, as a UTC ISO 8601 timestamp ending in `Z`. Use it to order updates for the same purchase order — a later `collectedAt` reflects the more recent thing the supplier said.

## Response `200`

Event acknowledged

---

[API](https://skmtc.dev/goaugment/apis/webhooks.md) - [All operations](https://skmtc.dev/goaugment/apis/webhooks/llms.txt) - [OpenAPI document](https://skmtc.dev/goaugment/apis/webhooks/revisions/a074b2ada419?raw)
