API Documentation

Integrate QuickMark's rule-driven presence engine into your own applications.

Base URL
https://yourdomain.com/api

All API requests must include the `Accept: application/json` header. Stateful requests like `POST` and `DELETE` from the browser must also include the `X-CSRF-TOKEN` header if relying on session cookies.

1. Authentication

POST /login

Authenticate a user and initialize a session. This is an API-first endpoint that uses web middleware for secure cookie-based session persistence.

Request Body
{
  "email": "user@example.com",
  "password": "yourpassword"
}
                        
POST /register

Create a new user account.

{
  "name": "Jane Doe",
  "email": "jane@example.com",
  "password": "securepassword",
  "password_confirmation": "securepassword"
}
                        

2. List Management

Lists are isolated containers for people (students, team members, etc.). Users can only access and modify their own lists.

GET /api/lists

Retrieve all lists belonging to the authenticated user.

Response
{
  "data": [
    { "id": 1, "name": "BCA 3rd Semester", "created_at": "..." },
    { "id": 2, "name": "Cricket Team", "created_at": "..." }
  ],
  "total": 2
}
                        
POST /api/lists

Create a new list.

{
  "name": "Weekend Workshop"
}
                        

3. People & Roster

Manage the roster of individuals inside a specific list.

POST /api/lists/{list_id}/people/bulk

Add multiple people to a list at once. Limited to 100 people per request.

{
  "names": [
    "Alice Smith",
    "Bob Johnson",
    "Charlie Davis"
  ]
}
                        
DELETE /api/lists/{list_id}/people/{person_id}

Remove a person from the list. This operation cascades and nullifies their presence history in past sessions to maintain aggregate data integrity.

4. Session Tracking

The core tracking engine. You initialize a session, mark presences, and then finalize and save the record.

POST /api/lists/{list_id}/sessions

Start a new attendance tracking session for today.

{
  "title": "DBMS Lecture 5"
}
                        
POST /api/sessions/{session_id}/presence

Record presence for an individual within an active session. When `final_save` is passed as `1`, the session state is locked and marked as completed.

Parameter Type Description
person_id Integer The ID of the person being marked.
is_present Boolean/Int 1 for Present, 0 for Absent.
final_save Boolean/Int Send 1 on the last sync to close the session.
{
  "person_id": 142,
  "is_present": 1,
  "final_save": 0
}