Skip to main content

1. API Purpose

The Attendance API allows parents to monitor their child’s daily presence and enables teachers/admins to record and update attendance records. It ensures transparency and accurate record-keeping for the school.

2. Endpoint Definition

MethodRouteAuthDescription
GET/parent-app/attendance🔐 JWTView student attendance history
GET/teachers-app/attendance🔐 JWTView class/student attendance
POST/teachers-app/attendance🔐 JWTRecord student attendance
PUT/teachers-app/attendance/:id🔐 JWTUpdate specific attendance record
GET/web-app/view-attendance🔐 JWTAdmin: attendance reports

3. Authentication Flow

  1. Token Validation: Every request must include a Bearer JWT.
  2. Context Extraction: The API extracts skole_id and user_role from the token.
  3. Data Scoping:
    • Parents can only access records for their linked children (student_id check).
    • Teachers can only access records for assigned grades/students.
    • Admins have full read/write access within their skole_id.

4. Request Structure

GET /parent-app/attendance

Query Parameters:
FieldTypeRequiredDescription
roll_nostringYesUnique student identifier.
Headers:
Authorization: Bearer <JWT_TOKEN>

GET /teachers-app/attendance

Query Parameters:
FieldTypeRequiredDescription
skole_idstringYesSchool identifier.
student_idnumberNoFilter by specific student.
datestringNoFilter by date (YYYY-MM-DD).
gradestringNoFilter by grade/class.

POST /teachers-app/attendance

Request Body:
{
  "skole_id": "SKL001",
  "student_id": 45,
  "attendance_status": "Present",
  "availability_status": "In",
  "date": "2024-03-16"
}

PUT /teachers-app/attendance/:id

URL Parameters:
FieldTypeDescription
idnumberUnique ID of the attendance record.
Request Body:
{
  "skole_id": "SKL001",
  "student_id": 45,
  "attendance_status": "Absent",
  "availability_status": "OUT",
  "date": "2024-03-16"
}

GET /web-app/view-attendance

Query Parameters:
FieldTypeRequiredDescription
skole_idstringYesSchool identifier.
start_datestringNoFilter from (YYYY-MM-DD).
end_datestringNoFilter to (YYYY-MM-DD).
gradestringNoFilter by grade/class.

5. Response Structure

Success: Student Attendance History (200 OK)

Route: GET /parent-app/attendance
{
  "success": true,
  "message": "Attendance records retrieved",
  "data": [
    {
      "date": "2024-03-16",
      "attendance_status": "Present",
      "availability_status": "In"
    },
    {
      "date": "2024-03-15",
      "attendance_status": "Absent",
      "availability_status": "OUT"
    }
  ]
}

Success: Class Attendance View (200 OK)

Route: GET /teachers-app/attendance
{
  "success": true,
  "data": [
    {
      "student_id": 45,
      "student_name": "Aarav Sharma",
      "attendance_status": "Present",
      "date": "2024-03-16"
    }
  ]
}

Success: Attendance Recorded (201 Created)

Route: POST /teachers-app/attendance
{
  "success": true,
  "message": "Attendance marked successfully",
  "data": {
    "id": 1024,
    "student_id": 45,
    "attendance_status": "Present",
    "date": "2024-03-16"
  }
}

Success: Attendance Updated (200 OK)

Route: PUT /teachers-app/attendance/:id
{
  "success": true,
  "message": "Attendance record updated",
  "data": {
    "id": 1024,
    "attendance_status": "Absent"
  }
}

Success: Attendance Report (200 OK)

Route: GET /web-app/view-attendance
{
  "success": true,
  "data": {
    "statistics": {
      "total_students": 500,
      "present_today": 485,
      "absent_today": 15
    },
    "monthly_percentage": "97%"
  }
}

6. Error Responses

HTTP CodeError CodeDescription
400INVALID_PARAMSMissing roll_no or invalid date format
404NOT_FOUNDStudent not found or no records for date

7. Security Considerations

  • Scoping: Data isolation is enforced via skole_id.
  • Role-Based Access: Standard staff can view; only staff with attendance.mark perms can record.

8. Token Usage

GET /parent-app/attendance?roll_no=A001
Authorization: Bearer <JWT_TOKEN>

9. Token Refresh

Attendance endpoints do not trigger token refresh. Standard JWT rotation at the auth layer applies.

10. Logout / Session Invalidation

Not directly handled in this module.

11. Usage Example (cURL)

curl -H "Authorization: Bearer <TOKEN>" \
"http://localhost:3000/parent-app/attendance?roll_no=A001"

12. Notes / Special Behaviors

  • Availability: availability_status indicates if the student is currently on premises.
  • Bulk Imports: The Web Admin app supports bulk attendance imports via CSV/Excel through a dedicated multipart endpoint.