Graduation Record
Graduation Management APIs
Base URL: http://192.168.100.250/
Endpoints
| 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 |
List
GET /graduations
Accept: application/jsonResponse includes graduations, faculties, programs, academic_years, and graduation_years.
View Single
GET /graduations/{id}
Accept: application/jsonCreate
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 |
Update
PUT /graduations/{id}
Content-Type: multipart/form-dataRequest Body: Same as Create.
Delete
DELETE /graduations/{id}Approve
POST /graduations/{id}/approveRevoke Approval
POST /graduations/{id}/revokeAuto-Sync
Bulk graduate eligible students.
POST /graduations/syncReturns created, skipped, and skipped_reasons in response.
Download Certificate / Transcript
GET /graduations/{id}/certificate
GET /graduations/{id}/transcriptReturns file download stream.
Notes: Filtering
The graduation page uses client-side filtering only. Filter values come from server-side in the same GET /graduations response — not a separate API.
Filter Data Source
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 |
How to Use in React
Step 1: Get filter options + graduation data
GET /graduations
Accept: application/jsonReturns everything in one go — filter options + all graduation records.
Step 2: Filter client-side
There is no server-side filter endpoint for graduations.
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/jsonRequires modifying the controller — currently it just does Graduation::with(...)->latest('graduation_date')->get() with no $request->filled() checks.