po.list
List purchase orders for the shop, or for one job or supplier, newest first. Owner or office.
| |
|---|
| Who | Agents can call this |
| REST | GET /v1/purchase-orders |
| MCP tool | po_list |
| Writes | no |
| Area | Shop |
When to use it
List purchase orders for the shop, or for one job or supplier, newest first. Owner or office.
What to tell the owner
Tell them what you found in plain words. Don't read back raw fields.
| Field | Type | Required |
|---|
shop_id | string (uuid) | yes |
job_id | string (uuid) | no |
vendor_id | string (uuid) | no |
limit | integer | no |
Example
GET https://doingwork.work/v1/purchase-orders?shop_id=00000000-0000-4000-8000-000000000000
Output
| Field | Type | Always there |
|---|
data | array | yes |
data[].po_id | string (uuid) | yes |
data[].shop_id | string (uuid) | yes |
data[].number | integer | yes |
data[].vendor_id | string (uuid) | yes |
data[].vendor_name | string | yes |
data[].job_id | string (uuid) | yes |
data[].status | string (one of draft, ordered, partial, received, cancelled) | yes |
data[].note | ['string', 'null'] | yes |
data[].ordered_at | ['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')'] | yes |
data[].total_minor | integer | yes |
data[].received_cost_minor | integer | yes |
data[].bill_minor | ['integer', 'null'] | yes |
data[].bill_ref | ['string', 'null'] | yes |
data[].bill_difference_minor | ['integer', 'null'] | yes |
data[].lines | array | yes |
data[].lines[].line_id | string (uuid) | yes |
data[].lines[].line_no | integer | yes |
data[].lines[].name | string | yes |
data[].lines[].unit | string | yes |
data[].lines[].quantity | number | yes |
data[].lines[].unit_cost_minor | integer | yes |
data[].lines[].unit_price_minor | ['integer', 'null'] | yes |
data[].lines[].taxable | boolean | yes |
data[].lines[].received_quantity | number | yes |
data[].lines[].cost_minor | integer | yes |
data[].lines[].received_cost_minor | integer | yes |
data[].created_at | string (date-time) | yes |
{
"data": [
{
"po_id": "00000000-0000-4000-8000-000000000000",
"shop_id": "00000000-0000-4000-8000-000000000000",
"number": 1,
"vendor_id": "00000000-0000-4000-8000-000000000000",
"vendor_name": "...",
"job_id": "00000000-0000-4000-8000-000000000000",
"status": "draft",
"note": "...",
"ordered_at": "...",
"total_minor": 50000,
"received_cost_minor": 50000,
"bill_minor": "...",
"bill_ref": "...",
"bill_difference_minor": "...",
"lines": [
{
"line_id": "00000000-0000-4000-8000-000000000000",
"line_no": 1,
"name": "Ruiz Plumbing",
"unit": "...",
"quantity": "...",
"unit_cost_minor": 50000,
"unit_price_minor": "...",
"taxable": true,
"received_quantity": "...",
"cost_minor": 50000,
"received_cost_minor": 50000
}
],
"created_at": "..."
}
]
}
Errors
| Code | Status | What to do |
|---|
invalid_input, invalid_token, rate_limited | | Can happen on any call. See errors. |