ThinkCode IT Solutions

Introduction

Complete API reference for ThinkCode CRM Mobile Application. This API is designed for both Students and Interns using the same mobile application.

Base URL

http://localhost/api/v1

Authentication

Laravel Sanctum

Response Format

JSON

Authentication

All API requests (except login) require a Bearer token in the Authorization header.

# Request Header

Authorization: Bearer your_token_here

Mobile App Access Only

This API is designed for Students and Interns accessing via the mobile application. Admins and Teachers cannot authenticate through this API.

Error Handling

All errors follow a consistent format with appropriate HTTP status codes.

{
    "success": false,
    "message": "Error description",
    "errors": {
        "field_name": ["Validation error message"]
    }
}
Code Status Description
200 OK Request successful
201 Created Resource created successfully
400 Bad Request Invalid request format
401 Unauthorized Authentication required
403 Forbidden Access denied
404 Not Found Resource not found
422 Unprocessable Entity Validation failed
429 Too Many Requests Rate limit exceeded
500 Server Error Internal server error

Authentication

User authentication and session management

POST /auth/login

Login

Authenticate user and receive access token

Request Parameters
Parameter Type Required Description
email string Yes User email address
password string Yes User password (min: 6 characters)
device_name string Yes Device identifier
device_token string No FCM token for push notifications
Response Example
{
    "success": true,
    "message": "Login successful",
    "data": {
        "token": "1|abc123xyz...",
        "token_type": "Bearer",
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "student@example.com",
            "user_type": "student"
        }
    }
}
POST /auth/logout
Auth Required

Logout

Revoke current access token

Response Example
{
    "success": true,
    "message": "Logged out successfully"
}
GET /auth/me
Auth Required

Get Current User

Get authenticated user details

Response Example
{
    "success": true,
    "data": {
        "id": 1,
        "name": "John Doe",
        "email": "student@example.com",
        "user_type": "student"
    }
}
POST /auth/refresh-token
Auth Required

Refresh Token

Get new access token

Request Parameters
Parameter Type Required Description
device_name string Yes Device identifier
Response Example
{
    "success": true,
    "message": "Token refreshed successfully",
    "data": {
        "token": "new_token...",
        "token_type": "Bearer"
    }
}

Profile

User profile management

GET /auth/profile
Auth Required

Get Profile

Get user profile details

Response Example
{
    "success": true,
    "data": {
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "student@example.com"
        },
        "profile": {
            "student_id": "STU001",
            "batch": {
                "id": 1,
                "name": "Batch A"
            }
        }
    }
}
PUT /auth/profile
Auth Required

Update Profile

Update user profile information

Request Parameters
Parameter Type Required Description
name string No User name
phone string No Phone number
address string No Address
Response Example
{
    "success": true,
    "message": "Profile updated successfully"
}
POST /auth/change-password
Auth Required

Change Password

Change user password

Request Parameters
Parameter Type Required Description
current_password string Yes Current password
password string Yes New password (min: 8 characters)
password_confirmation string Yes Confirm new password
Response Example
{
    "success": true,
    "message": "Password updated successfully"
}
POST /auth/profile-image
Auth Required

Upload Profile Image

Upload profile avatar

Request Parameters
Parameter Type Required Description
avatar file Yes Image file (jpeg, png, jpg, gif, webp - max 5MB)
Response Example
{
    "success": true,
    "message": "Profile image updated successfully",
    "data": {
        "profile_image": "https:\/\/..."
    }
}

Dashboard

Dashboard data and statistics

GET /dashboard
Auth Required

Get Dashboard

Get comprehensive dashboard data for authenticated user

Response Example
{
    "success": true,
    "data": {
        "user": {
            "id": 1,
            "name": "John Doe"
        },
        "profile": {
            "student_id": "STU001"
        },
        "attendance": {
            "today": {
                "status": "present"
            },
            "this_month": {
                "present": 20
            }
        },
        "tasks": {
            "pending": 3,
            "completed": 15
        },
        "leaves": {
            "pending": 1,
            "approved": 3
        },
        "notifications": {
            "unread_count": 5
        }
    }
}
GET /dashboard/stats
Auth Required

Get Dashboard Stats

Get dashboard statistics

Response Example
{
    "success": true,
    "data": {
        "attendance": {
            "total_present": 20,
            "total_absent": 2
        },
        "tasks": {
            "total": 25,
            "completed": 15
        }
    }
}

Attendance

Attendance tracking and management

GET /attendance
Auth Required

List Attendance

Get attendance records with pagination

Request Parameters
Parameter Type Required Description
page integer No Page number
per_page integer No Items per page (default: 15)
Response Example
{
    "success": true,
    "data": {
        "attendance": [
            {
                "id": 1,
                "date": "2026-01-02",
                "status": "present"
            }
        ],
        "pagination": {
            "current_page": 1,
            "total": 50
        }
    }
}
GET /attendance/today
Auth Required

Today's Attendance

Get today's attendance status

Response Example
{
    "success": true,
    "data": {
        "date": "2026-01-02",
        "status": "present",
        "check_in": "09:00 AM",
        "check_out": null
    }
}
GET /attendance/stats
Auth Required

Attendance Stats

Get attendance statistics

Response Example
{
    "success": true,
    "data": {
        "this_month": {
            "present": 20,
            "absent": 2,
            "late": 1
        },
        "attendance_percentage": 87
    }
}
POST /attendance/scan
Auth Required

Scan QR Code

Scan QR code for attendance

Request Parameters
Parameter Type Required Description
qr_code string Yes QR code data
latitude number No GPS latitude
longitude number No GPS longitude
Response Example
{
    "success": true,
    "message": "Attendance marked successfully"
}

Tasks

Task assignments and submissions

GET /tasks
Auth Required

List Tasks

Get all tasks assigned to user

Request Parameters
Parameter Type Required Description
status string No Filter by status (pending, in_progress, completed)
priority string No Filter by priority (low, medium, high)
Response Example
{
    "success": true,
    "data": {
        "tasks": [
            {
                "id": 1,
                "title": "Build REST API",
                "status": "pending"
            }
        ],
        "pagination": {
            "current_page": 1,
            "total": 25
        }
    }
}
GET /tasks/stats
Auth Required

Task Stats

Get task statistics

Response Example
{
    "success": true,
    "data": {
        "total": 25,
        "pending": 3,
        "in_progress": 2,
        "completed": 18,
        "overdue": 2
    }
}
POST /tasks/{task}/submit
Auth Required

Submit Task

Submit task with files or links

Request Parameters
Parameter Type Required Description
submission_text string No Submission description
github_link string No GitHub repository URL
live_demo_link string No Live demo URL
files[] file No Submission files (max 5, 10MB each)
Response Example
{
    "success": true,
    "message": "Task submitted successfully!",
    "data": {
        "submission": {
            "id": 1,
            "attempt_number": 1
        }
    }
}

Leaves

Leave request management

GET /leaves
Auth Required

List Leaves

Get leave requests

Request Parameters
Parameter Type Required Description
status string No Filter by status
Response Example
{
    "success": true,
    "data": {
        "leaves": [
            {
                "id": 1,
                "start_date": "2026-01-05",
                "status": "pending"
            }
        ]
    }
}
POST /leaves
Auth Required

Create Leave

Submit leave request

Request Parameters
Parameter Type Required Description
start_date date Yes Start date (Y-m-d)
end_date date Yes End date (Y-m-d)
leave_type string Yes Type: sick, casual, emergency, other
reason string Yes Reason for leave
Response Example
{
    "success": true,
    "message": "Leave request submitted successfully"
}

Fees (Students Only)

Fee information and payment history

These endpoints are only accessible by students

GET /fees
Auth Required

List Fees

Get fee information

Response Example
{
    "success": true,
    "data": {
        "total_fee": 50000,
        "amount_paid": 30000,
        "remaining_balance": 20000
    }
}
GET /fees/summary
Auth Required

Fee Summary

Get fee summary with payment history

Response Example
{
    "success": true,
    "data": {
        "summary": {
            "total": 50000,
            "paid": 30000
        },
        "payments": [
            {
                "id": 1,
                "amount": 10000,
                "date": "2026-01-01"
            }
        ]
    }
}

Notifications

Push notifications and circulars

GET /notifications
Auth Required

List Notifications

Get all notifications

Request Parameters
Parameter Type Required Description
type string No Filter by type
read boolean No Filter by read status
Response Example
{
    "success": true,
    "data": {
        "notifications": [
            {
                "id": 1,
                "title": "New Task",
                "is_read": false
            }
        ]
    }
}
GET /notifications/unread-count
Auth Required

Unread Count

Get unread notifications count

Response Example
{
    "success": true,
    "data": {
        "unread_count": 5
    }
}
GET /notifications/circulars
Auth Required

Get Circulars

Get circulars and announcements

Response Example
{
    "success": true,
    "data": {
        "circulars": [
            {
                "id": 1,
                "title": "Holiday Notice",
                "priority": "high"
            }
        ]
    }
}