> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs-unsw-v6.advance-uac.com/workflows/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs-unsw-v6.advance-uac.com/_mcp/server. # Assessment workflows Every application is assessed by a **workflow** — an ordered set of steps it moves through, from submission to a decision. Which workflow applies is decided by the program, its cohort year and its stream. You will want this for two reasons: to show an applicant where their application has got to, and to know which of your programs can accept applications at all. ``` GET /institution/workflows GET /institution/workflows/{id} ``` ## What "available" means A workflow is listed if **at least one of your programs is attached to it**. A workflow no program of yours uses is not yours to see, and returns `404`. The list carries a count of each one's steps and of your programs using it: ```json [ { "id": "76f509b0-0d63-49a8-bfcd-616ebea9d033", "name": "Generic Credit Assessment Workflow", "version": 1, "status": "PUBLISHED", "programCount": 4, "stepCount": 8 } ] ``` > **Note** > > `programCount` counts distinct programs, not attachments. One program attached for three > cohort years is one program. ## Steps, and where an application sits `GET /institution/workflows/{id}` returns the steps in the order they run: ```json { "name": "Generic Credit Assessment Workflow", "steps": [ { "code": "SUBMITTED", "label": "Submitted", "automatic": false, "initial": true, "terminal": false }, { "code": "ARTICULATION_MATCH", "label": "Articulation match", "automatic": true, "initial": false, "terminal": false }, { "code": "PRECEDENT_MATCH", "label": "Precedent match", "automatic": true, "initial": false, "terminal": false }, { "code": "CREDIT_MATCH", "label": "RPL credit match", "automatic": true, "initial": false, "terminal": false }, { "code": "ASSESSOR_ROUTING", "label": "Assessor routing", "automatic": true, "initial": false, "terminal": false }, { "code": "CREDIT_TEAM_REVIEW", "label": "Credit Team review", "automatic": false, "initial": false, "terminal": false }, { "code": "DECIDED", "label": "Decided", "automatic": false, "initial": false, "terminal": true } ], "programs": [ { "code": "8429", "name": "Master of Applied Economics", "cohortYear": 2026, "stream": "DOMESTIC_FP" } ] } ``` **`code` is the same value as `workflowStatus`** on the [outcome endpoint](/credit-outcomes). That is what makes this useful: read the outcome, find its `workflowStatus` in this list, and you know how far through the process the application is and what is left. `label` is written for people — show that, not the code. ### `automatic` tells you whether waiting is normal ### `automatic: true` The system performs the step and moves on by itself. An application does not rest here, so seeing one of these in `workflowStatus` means you have caught it mid-assessment — poll again shortly. ### `automatic: false` The step waits for a person. An application can legitimately sit here for days. `CREDIT_TEAM_REVIEW` is the one to expect. `terminal: true` marks an end state. Reaching one is what sets `finalOutcome` on the outcome response — with [one caveat about academic approval](/academic-approval). ## Which programs accept applications `programs` on the detail response is the authoritative list of your programs on that workflow, per cohort year and stream. Submit against a `code` + `year` pair that appears on some workflow. For the flat answer across every workflow, use `GET /institution/programs/accepting-applications` — a program with no workflow attached cannot be assessed, and submitting against it is rejected during processing. > **Note** > > This is read-only. Which workflow a program uses, and what steps it has, are UAC > configuration decisions. Tell us if a program is on the wrong one. > The process an application goes through, and which of your programs use it