---
title: "Get PO State Transitions"
method: GET
path: "/v2/po/{poID}/state/transitions"
tags: ["Routes", "Purchase Orders", "State"]
---

# Get PO State Transitions

`GET /v2/po/{poID}/state/transitions`

Returns the list of valid next states for the specified PO.

Parameters:

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| poID | integer | yes |  | Purchase Order identifier |

Return data:  
  
Array of JSON objects listing possible next state transitions for the selected PO.

## Response `200`

200 OK

- object
  - `currentState` object
    - `number` integer
    - `name` string
    - `label` string
  - `validNextStates` object[]
    - `number` integer
    - `name` string
    - `label` string
  - `requirements` object
    - `ready_to_receive` object
      - `vendorRequired` boolean
    - `disapproved` object

## Other responses

- `400` — The request was malformed — either invalid JSON syntax or a validation failure (missing required field, wrong type, etc.).
- `401` — No `Authorization` header was provided on the request.
- `403` — The supplied credentials are invalid, the customer account is inactive, or the credentials do not have permission to perform this action.
- `404` — The referenced resource does not exist or is not visible to the authenticated customer.
- `429` — The per-minute or per-hour rate limit for this credential and method has been exhausted. Inspect the `X-RateLimit-*` headers to determine when to retry.
- `500` — An unhandled server-side error. The body message is generic (`System unavailable...`) when the underlying cause is a database fault; otherwise it reflects the raised error.

---

[API](https://skmtc.net/limblecmms/apis/limble-api-v2.md) · [All operations](https://skmtc.net/limblecmms/apis/limble-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/limblecmms/limble-api-v2/revisions/20801e23f7f2/schema)
