Audit API
Base URL: /api/v1/audit
Degree auditing, progress tracking, waivers, transfer credit evaluation, and graduation management.
Endpoints Overview
Degree Progress
| Method | Endpoint | Description |
|---|---|---|
| GET | /degree-progress | List degree progress records |
| POST | /degree-progress | Create degree progress record |
| GET | /degree-progress/student/{studentID} | Get progress for a student |
| GET | /degree-progress/{progressID} | Get progress by ID |
Fulfillments
| Method | Endpoint | Description |
|---|---|---|
| POST | /fulfillments | Create a requirement fulfillment |
Waivers
| Method | Endpoint | Description |
|---|---|---|
| GET | /waivers | List waivers |
| POST | /waivers | Create a waiver |
| POST | /waivers/{waiverID}/deactivate | Deactivate a waiver |
| GET | /waivers/{waiverID} | Get waiver by ID |
Transfer Credits
| Method | Endpoint | Description |
|---|---|---|
| GET | /transfer-credits | List transfer credits |
| POST | /transfer-credits | Create transfer credit |
| POST | /transfer-credits/{transferID}/evaluate | Evaluate a transfer credit |
| GET | /transfer-credits/{transferID} | Get transfer credit by ID |
Graduation Applications
| Method | Endpoint | Description |
|---|---|---|
| GET | /graduation-applications | List graduation applications |
| POST | /graduation-applications | Create graduation application |
| POST | /graduation-applications/apply | Apply for graduation |
| POST | /graduation-applications/{applicationID}/review | Review a graduation application |
| GET | /graduation-applications/{applicationID}/history | Get application status history |
| GET | /graduation-applications/{applicationID} | Get graduation application by ID |
Graduation Dates
| Method | Endpoint | Description |
|---|---|---|
| GET | /graduation-dates/active | Get active graduation dates |
| GET | /graduation-dates | List graduation dates |
| POST | /graduation-dates | Create graduation date |
| GET | /graduation-dates/{dateID} | Get graduation date by ID |
| PATCH | /graduation-dates/{dateID} | Update graduation date |
| DELETE | /graduation-dates/{dateID} | Delete graduation date |
Graduation Records
| Method | Endpoint | Description |
|---|---|---|
| GET | /graduation-records | List graduation records |
| POST | /graduation-records | Create graduation record |
| POST | /graduation-records/batch-confirm | Batch confirm graduation records |
| GET | /graduation-records/student/{studentID} | Get graduation records by student |
| GET | /graduation-records/{recordID} | Get graduation record by ID |
| PATCH | /graduation-records/{recordID} | Update graduation record |
Audit Operations
| Method | Endpoint | Description |
|---|---|---|
| POST | /run/{studentID}/{degreeID} | Run audit for student and degree |
| POST | /run | Run audit |
| POST | /what-if | Run what-if analysis |
| GET | /what-if-options | Get available what-if options |
Degree Progress
List Degree Progress
GET /api/v1/audit/degree-progressList all degree progress records. Supports filtering by student, degree, and status.
Create Degree Progress
POST /api/v1/audit/degree-progressCreate a new degree progress tracking record for a student.
Get Student Progress
GET /api/v1/audit/degree-progress/student/{studentID}Get all degree progress records for a specific student. Returns progress across all enrolled programs and degrees.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
studentID | integer | The student ID |
Get Progress by ID
GET /api/v1/audit/degree-progress/{progressID}Get a specific degree progress record.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
progressID | integer | The degree progress ID |
Fulfillments
Create Fulfillment
POST /api/v1/audit/fulfillmentsCreate a requirement fulfillment record, linking a completed course or transfer credit to a specific degree requirement.
Waivers
List Waivers
GET /api/v1/audit/waiversList all requirement waivers. Supports filtering by student, requirement block, and active status.
Create Waiver
POST /api/v1/audit/waiversCreate a new requirement waiver, exempting a student from a specific degree requirement.
Deactivate Waiver
POST /api/v1/audit/waivers/{waiverID}/deactivateDeactivate an existing waiver. The waiver record is preserved but no longer applies to the student's degree audit.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
waiverID | integer | The waiver ID |
Get Waiver
GET /api/v1/audit/waivers/{waiverID}Get a specific waiver by ID.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
waiverID | integer | The waiver ID |
Transfer Credits
List Transfer Credits
GET /api/v1/audit/transfer-creditsList all transfer credit records. Supports filtering by student and evaluation status.
Create Transfer Credit
POST /api/v1/audit/transfer-creditsCreate a new transfer credit record for coursework completed at another institution.
Evaluate Transfer Credit
POST /api/v1/audit/transfer-credits/{transferID}/evaluateEvaluate a transfer credit, determining how it maps to institutional courses and whether it satisfies degree requirements.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
transferID | integer | The transfer credit ID |
Get Transfer Credit
GET /api/v1/audit/transfer-credits/{transferID}Get a specific transfer credit record.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
transferID | integer | The transfer credit ID |
Graduation Applications
List Graduation Applications
GET /api/v1/audit/graduation-applicationsList all graduation applications. Supports filtering by term, status, and student.
Create Graduation Application
POST /api/v1/audit/graduation-applicationsCreate a new graduation application record (administrative).
Apply for Graduation
POST /api/v1/audit/graduation-applications/applySubmit a graduation application on behalf of a student. Validates eligibility and creates the application with a pending status.
Review Graduation Application
POST /api/v1/audit/graduation-applications/{applicationID}/reviewReview and update the status of a graduation application (approve, deny, or request changes).
Path Parameters
| Parameter | Type | Description |
|---|---|---|
applicationID | integer | The graduation application ID |
Get Application Status History
GET /api/v1/audit/graduation-applications/{applicationID}/historyGet the status change history for a graduation application.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
applicationID | integer | The graduation application ID |
Get Graduation Application
GET /api/v1/audit/graduation-applications/{applicationID}Get a specific graduation application by ID.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
applicationID | integer | The graduation application ID |
Graduation Dates
Get Active Graduation Dates
GET /api/v1/audit/graduation-dates/activeGet graduation dates that are currently active and available for applications.
List Graduation Dates
GET /api/v1/audit/graduation-datesList all graduation dates, including past and future ceremonies.
Create Graduation Date
POST /api/v1/audit/graduation-datesCreate a new graduation date entry.
Get Graduation Date
GET /api/v1/audit/graduation-dates/{dateID}Get a specific graduation date by ID.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
dateID | integer | The graduation date ID |
Update Graduation Date
PATCH /api/v1/audit/graduation-dates/{dateID}Update an existing graduation date.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
dateID | integer | The graduation date ID |
Delete Graduation Date
DELETE /api/v1/audit/graduation-dates/{dateID}Delete a graduation date.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
dateID | integer | The graduation date ID |
Graduation Records
List Graduation Records
GET /api/v1/audit/graduation-recordsList all graduation records. Supports filtering by term, degree, and confirmation status.
Create Graduation Record
POST /api/v1/audit/graduation-recordsCreate a new graduation record for a student who has completed their degree.
Batch Confirm Graduation Records
POST /api/v1/audit/graduation-records/batch-confirmConfirm multiple graduation records at once, typically used after commencement to finalize degree conferral.
Get Graduation Records by Student
GET /api/v1/audit/graduation-records/student/{studentID}Get all graduation records for a specific student.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
studentID | integer | The student ID |
Get Graduation Record
GET /api/v1/audit/graduation-records/{recordID}Get a specific graduation record by ID.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
recordID | integer | The graduation record ID |
Update Graduation Record
PATCH /api/v1/audit/graduation-records/{recordID}Update an existing graduation record.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
recordID | integer | The graduation record ID |
Graduation honors
A record carries one Latin honor (honors_id -> lookup_honors_type, plus with_honors), which the nightly Colleague import owns, and any number of other honors in graduation_record_honors (migration 283) -- language, music, leadership -- entered by hand and never touched by the import. The list of other honors is the GRADUATION_HONOR lookup.
Every record in a response has honors (never null):
"honors": [
{ "graduation_honor_id": 3, "code": "MUSIC", "display": "Music Honors", "notes": "Piano" }
]Create, update and batch-confirm accept graduation_honors, a list of { "graduation_honor_id": 3, "notes": "Piano" } (notes max 300):
graduation_honors | Effect |
|---|---|
| omitted | The record's other honors are left alone |
[] | They are cleared |
| a list | It replaces the whole set |
It is not a column on graduation_records, so it takes no part in the PATCH _expected conflict check. GET /graduation-records?graduation_honor_id=3 lists the records carrying that honor.
One record per Colleague credential
Since migration 301, an imported graduation record is keyed on the Colleague credential it came from, graduation_records.colleague_credential_id (ACAD_CREDENTIALS_ID, unique where not NULL). A double major is two credentials for one degree and commencement, so it is two records with the same student_id, degree_id and graduation_date_id and different major_ids. Clients must not assume one record per degree and date.
The old uniqueness, (student_id, degree_id, graduation_date_id), now applies only to rows with no credential, which are the rows created by POST /graduation-records and batch-confirm. It is what refuses a second SIS confirmation of the same degree at the same ceremony. The nightly import adopts such a row when Colleague records its credential.
colleague_credential_id is not returned in the response DTO. What it changes for clients:
| Field | Imported record | Record confirmed in the SIS (confirmed_by set) |
|---|---|---|
confirmed_date | ACAD_DEGREE_DATE, the conferral date; NULL when Colleague has not conferred the degree. No fallback to the credential's add date | The confirmation time; the import never overwrites it |
major_id / major_name | Resolved from the credential's program and major codes. BSN or BSW with no major resolves to Nursing or Social Work; otherwise NULL rather than guessed | As entered, until the credential adopts the row; Colleague's value from then on |
The transcript (GET /grading/transcript) returns major_name on each entry of graduation_records for the same reason, ordered by graduation date, degree code and major.
Test-score requirement rules
Academic policy rules (/policy-rules, ADMIN.ACADEMIC_POLICIES) gained a test-score shape in migration 276: rule_code DEGREE.TEST_SCORE_MIN, value_type SCORE, threshold_value the minimum composite score, and test_type_id naming the test. Both are required for SCORE, and test_type_id is refused on every other value type. Uniqueness is one active rule per code, bulletin, degree level and test, so several tests can be required at one scope.
GET /policy-rules/test-types lists the active standardized test types (test_type_id, code, name, min_score, max_score) for the rule editor; it exists so a policy administrator does not need TESTSCORES.TYPES.
In the audit's institutional requirements the row is MET when the student's counted official score reaches the threshold, and NOT_MET otherwise -- with reason NO_TEST_SCORE when no official score is on file. The counted score follows the test's score policy: MOST_RECENT takes the latest sitting, anything else the highest composite; superscores are not computed. The row carries test_score evidence (test_type_id, test_code, test_name, score, test_date).
Audit Operations
Run Audit for Student and Degree
POST /api/v1/audit/run/{studentID}/{degreeID}Run a degree audit for a specific student and degree combination. Evaluates all requirement blocks and returns fulfillment status.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
studentID | integer | The student ID |
degreeID | integer | The degree ID |
Run Audit
POST /api/v1/audit/runRun a degree audit with parameters provided in the request body.
What-If Analysis
POST /api/v1/audit/what-ifRun a hypothetical degree audit to show what a student's progress would look like under a different major, minor, or degree program.
Get What-If Options
GET /api/v1/audit/what-if-optionsGet available options for what-if analysis, including available degrees, majors, and minors that a student could evaluate against.
Complete endpoint reference
Every route this domain registers, with the permission node that gates it. Generated from the route table, so it is complete by construction — the sections above explain behaviour, this one guarantees nothing is missing.
Paths are relative to /api/v1/audit. A node in italics is an exemption rather than a grant: selfservice acts only on the caller's own record, public needs no session at all, and custom carries its own wrapper.
| Method | Endpoint | Permission node | Description |
|---|---|---|---|
| GET | /degree-progress | ADVISING.AUDIT | Get degree progress |
| POST | /degree-progress | ADVISING.AUDIT | Create degree progress |
| GET | /degree-progress/student/{studentID} | ADVISING.AUDIT | Get one student |
| GET | /degree-progress/{progressID} | ADVISING.AUDIT | Get one degree progress |
| POST | /fulfillments | ADVISING.AUDIT | Create a fulfillment |
| GET | /graduation-applications | GRADUATION.APPLICATIONS | List graduation applications |
| POST | /graduation-applications | GRADUATION.APPLICATIONS | Create a graduation application |
| POST | /graduation-applications/apply | GRADUATION.APPLY | Apply |
| GET | /graduation-applications/{applicationID} | GRADUATION.APPLICATIONS | Get one graduation application |
| GET | /graduation-applications/{applicationID}/history | GRADUATION.APPLICATIONS | Get the graduation application's history |
| POST | /graduation-applications/{applicationID}/review | GRADUATION.REVIEW | Add review to a graduation application |
| GET | /graduation-dates | GRADUATION.DATES | List graduation dates |
| POST | /graduation-dates | GRADUATION.DATES | Create a graduation date |
| GET | /graduation-dates/active | GRADUATION.APPLY | Get active |
| DELETE | /graduation-dates/{dateID} | GRADUATION.DATES | Delete a graduation date |
| GET | /graduation-dates/{dateID} | GRADUATION.DATES | Get one graduation date |
| PATCH | /graduation-dates/{dateID} | GRADUATION.DATES | Update a graduation date |
| GET | /graduation-records | GRADUATION.RECORDS | List graduation records |
| POST | /graduation-records | GRADUATION.RECORDS | Create a graduation record |
| POST | /graduation-records/batch-confirm | GRADUATION.CONFIRM | Create batch confirm |
| GET | /graduation-records/student/{studentID} | GRADUATION.RECORDS | Get one student |
| GET | /graduation-records/{recordID} | GRADUATION.RECORDS | Get one graduation record |
| PATCH | /graduation-records/{recordID} | GRADUATION.RECORDS | Update a graduation record |
| GET | /institution-types | RECORDS.TRANSFER_CREDITS | List institution types |
| POST | /institution-types | ADMIN.INSTITUTION_TYPES | Create institution types |
| GET | /institution-types/{institutionTypeID} | RECORDS.TRANSFER_CREDITS | Get one institution types |
| PATCH | /institution-types/{institutionTypeID} | ADMIN.INSTITUTION_TYPES | Update institution types |
| GET | /institutions | ADMIN.INSTITUTIONS | List institutions |
| POST | /institutions | ADMIN.INSTITUTIONS | Create institutions |
| GET | /institutions/for_evaluation | RECORDS.TRANSFER_CREDITS | List institutions for transfer evaluation |
| DELETE | /institutions/{institutionID} | ADMIN.INSTITUTIONS | Delete institutions |
| GET | /institutions/{institutionID} | ADMIN.INSTITUTIONS | Get one institutions |
| PATCH | /institutions/{institutionID} | ADMIN.INSTITUTIONS | Update institutions |
| GET | /policy-rules | ADMIN.ACADEMIC_POLICIES | List policy rules |
| POST | /policy-rules | ADMIN.ACADEMIC_POLICIES | Create a policy rule |
| GET | /policy-rules/catalog | ADMIN.ACADEMIC_POLICIES | Get catalog |
| GET | /policy-rules/resolve | ADMIN.ACADEMIC_POLICIES | Get resolve |
| GET | /policy-rules/test-types | ADMIN.ACADEMIC_POLICIES | List the test types a test-score rule can name |
| DELETE | /policy-rules/{policyRuleID} | ADMIN.ACADEMIC_POLICIES | Delete a policy rule |
| GET | /policy-rules/{policyRuleID} | ADMIN.ACADEMIC_POLICIES | Get one policy rule |
| PATCH | /policy-rules/{policyRuleID} | ADMIN.ACADEMIC_POLICIES | Update a policy rule |
| POST | /run | ADVISING.AUDIT | Run |
| POST | /run/{studentID}/{degreeID} | ADVISING.AUDIT | Act on a |
| GET | /sequence-policies | ADMIN.SEQUENCE_POLICIES | List sequence policies |
| POST | /sequence-policies | ADMIN.SEQUENCE_POLICIES | Create a sequence policy |
| DELETE | /sequence-policies/{policyID} | ADMIN.SEQUENCE_POLICIES | Delete a sequence policy |
| GET | /sequence-policies/{policyID} | ADMIN.SEQUENCE_POLICIES | Get one sequence policy |
| PATCH | /sequence-policies/{policyID} | ADMIN.SEQUENCE_POLICIES | Update a sequence policy |
| GET | /student/{studentID} | ADVISING.AUDIT | Get one student |
| GET | /transfer-credits | RECORDS.TRANSFER_CREDITS | List transfer credits |
| POST | /transfer-credits | RECORDS.TRANSFER_CREDITS | Create a transfer credit |
| POST | /transfer-credits/batch | RECORDS.TRANSFER_CREDITS | Create several transfer credits |
| POST | /transfer-credits/batch/preview | RECORDS.TRANSFER_CREDITS | Preview a transfer credit batch |
| DELETE | /transfer-credits/{transferID} | RECORDS.TRANSFER_CREDITS | Delete a transfer credit |
| GET | /transfer-credits/{transferID} | RECORDS.TRANSFER_CREDITS | Get one transfer credit |
| PATCH | /transfer-credits/{transferID} | RECORDS.TRANSFER_CREDITS | Update a transfer credit |
| POST | /transfer-credits/{transferID}/evaluate | RECORDS.TRANSFER_CREDITS | Evaluate for a transfer credit |
| POST | /transfer-credits/{transferID}/restore | RECORDS.TRANSFER_CREDITS | Restore for a transfer credit |
| GET | /transfer-equivalencies | RECORDS.TRANSFER_CREDITS | List transfer equivalencies |
| POST | /transfer-equivalencies | RECORDS.TRANSFER_EQUIVALENCIES | Create transfer equivalencies |
| GET | /transfer-equivalencies/lookup | RECORDS.TRANSFER_CREDITS | Look up an equivalency |
| DELETE | /transfer-equivalencies/{equivalencyID} | RECORDS.TRANSFER_EQUIVALENCIES | Delete transfer equivalencies |
| GET | /transfer-equivalencies/{equivalencyID} | RECORDS.TRANSFER_CREDITS | Get one transfer equivalencies |
| PATCH | /transfer-equivalencies/{equivalencyID} | RECORDS.TRANSFER_EQUIVALENCIES | Update transfer equivalencies |
| GET | /waivers | ADVISING.WAIVERS | List waivers |
| POST | /waivers | ADVISING.WAIVERS | Create a waiver |
| GET | /waivers/by_student | ADVISING.AUDIT | List waivers for a student |
| GET | /waivers/{waiverID} | ADVISING.WAIVERS | Get one waiver |
| POST | /waivers/{waiverID}/deactivate | ADVISING.WAIVERS | Deactivate for a waiver |
| POST | /what-if | ADVISING.AUDIT | Create what if |
| GET | /what-if-options | ADVISING.AUDIT | List what if options |