Credit outcomes
Submitting an application starts a credit assessment. The result is a list of credit, each piece saying what prior study earned it, what it counts towards, and what it is worth.
Read it from:
Applications submitted through this API are not yet picked up for assessment automatically.
They stay at assessed: false until that is released.
Build your polling against this endpoint now — it will start returning outcomes with no change on your side.
Read assessed before anything else
The trap in this response is that two completely different situations produce an identical
credits list. Compare these:
Both have no credit and a total of zero. assessed is the only thing separating “we have not
looked yet” from “we looked, and none of this prior study earns credit here” — which is the
difference between waiting and telling the applicant.
So: poll until finalOutcome is true. An application can sit at assessed: true with
finalOutcome: false for days while a credit officer reviews it, and the figures move during
that time.
What one piece of credit looks like
sources is everything that earned it. One decision can require several subjects together —
a credit mapping with four source courses, or an internal rule that consumes two subjects for one
unit — and every one of them is listed, each with its own type so a subject, a whole
qualification and a period of employment stay distinguishable.
targetUnitCode is what it counts towards, and is null for block credit — granted against a
category (core, elective, employment) rather than a named unit.
One decision can award several units
id identifies one piece of credit. decisionId identifies the decision it came from, and
several credits share one when a single decision awarded several units:
That is one decision worth 12 UOC across two units, not two independent awards — and both carry
the same four sources. Group on decisionId if you want to show what was decided together;
ignore it and sum uoc if you only need the total. Credits that stand alone have a decisionId
of their own.
Because a decision’s sources apply to the whole decision, they are repeated on each of its credits. Four sources across two units means the same four entries appear twice — that is intentional, not duplication in the underlying record.
origin says where the credit came from:
uoc is always what the credit is worth now
A credit officer can overrule the pipeline: reject a grant, re-price it, or mark it exempt.
uoc already reflects that, so totalCreditUoc is a plain sum of the column and you never
have to do per-status arithmetic.
Rejected credit stays in the list. Dropping it would leave you unable to tell “this was never considered” from “this was considered and refused”, which is the question an applicant asks first.
Credit the applicant does not have yet
provisional: true marks credit that is approved but conditional: the applicant receives it
once they have completed the further study note describes, typically a year later.
It is granted credit. status is granted, uoc is what it is worth, and it counts
towards totalCreditUoc — because it stands unless the condition is not met. What is
conditional is when the applicant gets it, not whether.
So if you are telling an applicant what credit they hold today, read provisional and say
so. If you are reconciling totals, ignore it — the number is already right.
provisional is a separate field rather than a fourth status value on purpose: this
credit reads as granted to anything that was written before the field existed, which is
what it has always been.
assessedUoc appears only when an officer changed the number, and carries what the
pipeline originally said. Its presence is how you tell an override from an ordinary grant:
Six units were assessed; none are awarded. If you are reconciling against your own records,
assessedUoc is what explains the difference.
decidedAt follows the same idea: it is when the officer decided, if one did, and
otherwise when the pipeline awarded it.
What the application record shows
GET /institution/applications/{id} returns the application and its qualifications — what we
hold, in the field names you sent, validated against the schemas at
GET /institution/qualification-types. It carries no credit and never changes to reflect an
outcome.
The credit decision only ever lives on the outcome endpoint above. If you integrated against an
earlier version of this API, note that the applicationData object has been removed from that
response: it was an internal projection of the same qualifications, renamed into our assessment
engine’s vocabulary, and it told you nothing qualifications does not.
Polling
- Submit the application and keep the
id. - Poll
GET /institution/applications/{id}/outcome. - Stop when
finalOutcomeistrue.
Assessment is not instant and it is not uniform — one application clears in seconds, another
waits on a person. Poll on the order of minutes rather than seconds, and treat assessed: true
with finalOutcome: false as progress rather than an answer.
