EMS-UGC API Docs
Graduation

Graduation Record

Graduation Management APIs

Base URL: http://192.168.100.250/


Endpoints

MethodEndpointDescription
GET/graduationsList all graduations
GET/graduations/{id}Get single graduation
POST/graduationsCreate graduation
PUT/graduations/{id}Update graduation
DELETE/graduations/{id}Delete graduation
POST/graduations/{id}/approveApprove graduation
POST/graduations/{id}/revokeRevoke approval
POST/graduations/syncAuto-sync eligible students
GET/graduations/{id}/certificateDownload certificate
GET/graduations/{id}/transcriptDownload transcript

List

GET /graduations
Accept: application/json

Response includes graduations, faculties, programs, academic_years, and graduation_years.


View Single

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

Create

POST /graduations
Content-Type: multipart/form-data
FieldRequiredType
student_idYesinteger
degree_awardedYesstring
final_gradeNostring
graduation_dateYesdate
certificateNofile (pdf, jpg, png)
transcriptNofile (pdf, jpg, png)
remarksNostring

Update

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

Request Body: Same as Create.


Delete

DELETE /graduations/{id}

Approve

POST /graduations/{id}/approve

Revoke Approval

POST /graduations/{id}/revoke

Auto-Sync

Bulk graduate eligible students.

POST /graduations/sync

Returns created, skipped, and skipped_reasons in response.


Download Certificate / Transcript

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

Returns 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:

FilterSourceHow populated
Academic YearAcademicYear::orderBy('start_date', 'desc')->get()Server-rendered <option>
FacultyFaculty::all()Server-rendered <option>
ProgramProgram::all()Server-rendered <option>
StatusHardcoded in Bladeapproved, pending, revoked
Pass TypeHardcoded in Bladeregular, partial

How to Use in React

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

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/json

Requires modifying the controller — currently it just does Graduation::with(...)->latest('graduation_date')->get() with no $request->filled() checks.

On this page