ACLC

ACLC Ormoc

Student Records — sign in to continue

ACLC

Set a new password

For security, please change your password before continuing.

ACLC
ACLC Ormoc Student Records
A

Students

Student No.NameProgram YearSectionStatus Actions
Loading...

Programs

CodeProgramStudentsActiveActions
Loading...

Subjects

CodeTitleUnitsActiveActions
Loading...

Sections

NameProgramYearAdviserStudentsClassesActiveActions
Loading...

Users

New users must change this temporary password on first login.

Temporary password — share it with the user.
NameEmailRoleStatusAddedActions
Loading...

Settings

Delete PIN

Checking…

When enabled, a PIN is required to permanently delete students, programs, or users — an extra safeguard against accidental deletion.

API Keys

API keys let external apps and scripts call the data endpoints (/students, /programs) without logging in — send the key as an X-API-Key header. Keys can't manage users, settings, or other keys.

Copy your new API key now — it won't be shown again.
NameKeyCreatedLast usedActions
Loading...

Audit Log

WhenActorActionRecordIP
Loading...

API Documentation

A REST API returning JSON. Base URL: http://localhost:4000/api. Every /students, /programs and /settings endpoint requires authentication — log in first to get a token (or use the session cookie from a browser). External apps can instead send an API key as X-API-Key: aclc_live_… (create one under API Keys). All examples below use your current server.

Open interactive explorer (Swagger UI) ↗ Download OpenAPI spec (openapi.json) ↗

Playground

Send a request using your current login session — no token needed. Handy for quickly testing endpoints.


            

Authentication

POST/api/auth/login

Returns the user and a token, and sets an httpOnly session cookie. Use the token as Authorization: Bearer <token> for non-browser clients.

curl
curl -X POST http://localhost:4000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"admin@aclc-ormoc.edu.ph","password":"admin123"}'
JavaScript (fetch)
const res = await fetch("http://localhost:4000/api/auth/login", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ email: "admin@aclc-ormoc.edu.ph", password: "admin123" }),
});
const { token } = await res.json();   // save this token

Students

GET/api/students

List students (paginated). Returns { data: [...], pagination: {...} }.

Query paramExampleNotes
search?search=cruzName, student no., or email
program?program=BS Computer ScienceExact program name
status?status=enrolledenrolled/graduated/dropped/loa/transferred
year_level?year_level=31–6
sort?sort=-created_atPrefix - for descending
page?page=2Default 1
limit?limit=50Default 20, max 100
curl (with token)
curl "http://localhost:4000/api/students?status=enrolled&limit=20" \
  -H "Authorization: Bearer YOUR_TOKEN"
JavaScript (fetch)
const res = await fetch("http://localhost:4000/api/students?search=cruz", {
  headers: { "Authorization": `Bearer ${token}` },
});
const { data, pagination } = await res.json();
GET/api/students/:id

Fetch one student by UUID.

POST/api/students

Create a student. Required: student_no, first_name, last_name, program, year_level.

curl -X POST http://localhost:4000/api/students \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "student_no": "2025-01234",
    "first_name": "Jose",
    "last_name": "Rizal",
    "program": "BS Information Technology",
    "year_level": 1,
    "email": "jose.rizal@aclc-ormoc.edu.ph"
  }'
PATCH/api/students/:id

Update a student. Send only the fields you want to change. (PUT works the same way.)

DELETE/api/students/:id

Delete a student. If a delete PIN is set (Settings), include header X-Delete-Pin: 1234 — otherwise returns 403.

curl -X DELETE http://localhost:4000/api/students/THE_ID \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Delete-Pin: 1234"

Programs

GET/api/programs

List programs, each with a live student_count. Params: ?search=, ?active=true.

POST/api/programs

Create a program. Body: { "name": "BS Nursing", "code": "BSN", "active": true } (only name required).

PUT/PATCH/api/programs/:id

Update. Renaming cascades to all students in that program. Send { "active": false } to deactivate.

DELETE/api/programs/:id

Delete a program (blocked with 409 if students are assigned). Honors the delete PIN.

Users & Settings

GET/api/auth/me

The current logged-in user.

GET/api/auth/users

List users. POST /api/auth/users creates one; DELETE /api/auth/users/:id removes one.

GET/api/settings/delete-pin

Returns { enabled }. PUT sets/changes it; POST /api/settings/delete-pin/disable turns it off.

GET/health

Public liveness check (no auth). Returns { status: "ok" }.

Errors

Errors return an HTTP status and a JSON body shaped like this. Common codes: 400 validation, 401 not logged in, 403 wrong/ missing delete PIN, 404 not found, 409 conflict (duplicate / in-use).

{
  "error": {
    "message": "Validation failed",
    "details": [ { "field": "student_no", "message": "Required" } ]
  }
}

Add Student

Change Password

Schedule

–
DayTimeSubjectRoomInstructorActions
Loading...
!

Are you sure?