Skip to content

Graduation Record

Base URL: http://192.168.100.250/


Method Endpoint Description
GET /graduations List all graduations
GET /graduations/{id} Get single graduation
POST /graduations Create graduation
PUT /graduations/{id} Update graduation
DELETE /graduations/{id} Delete graduation
POST /graduations/{id}/approve Approve graduation
POST /graduations/{id}/revoke Revoke approval
POST /graduations/sync Auto-sync eligible students
GET /graduations/{id}/certificate Download certificate
GET /graduations/{id}/transcript Download transcript

GET /graduations
Accept: application/json

GET /graduations/{id}
Accept: application/json

POST /graduations
Content-Type: multipart/form-data
Field Required Type
student_id Yes integer
degree_awarded Yes string
final_grade No string
graduation_date Yes date
certificate No file (pdf, jpg, png)
transcript No file (pdf, jpg, png)
remarks No string

PUT /graduations/{id}
Content-Type: multipart/form-data

Request Body: Same as Create.


DELETE /graduations/{id}

POST /graduations/{id}/approve

POST /graduations/{id}/revoke

Bulk graduate eligible students.

POST /graduations/sync

GET /graduations/{id}/certificate
GET /graduations/{id}/transcript

The graduation page uses client-side filtering only. Filter values come from server-side in the same GET /graduations response — not a separate API.

All delivered in one response at GET /graduations:

Filter Source How populated
Academic Year AcademicYear::orderBy('start_date', 'desc')->get() Server-rendered <option>
Faculty Faculty::all() Server-rendered <option>
Program Program::all() Server-rendered <option>
Status Hardcoded in Blade approved, pending, revoked
Pass Type Hardcoded in Blade regular, partial

Step 1: Get filter options + graduation data

GET /graduations
Accept: application/json

Returns everything in one go — filter options + all graduation records.

Step 2: Filter client-side

Option A — Client-side filter (mirrors current behavior):

const filtered = graduations.filter(g =>
(!faculty || g.student.currentAcademicRecord.faculty.name === faculty) &&
(!program || g.student.currentAcademicRecord.program.name === program) &&
(!status || getStatus(g) === status) &&
(!passType || g.pass_type === passType)
);

Option B — Add server-side filtering (recommended for large datasets):

GET /graduations?faculty=Management&program=BBS&status=approved&pass_type=regular&academic_year_id=10
Accept: application/json