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
/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"
}
}
}
/auth/logout
Logout
Revoke current access token
Response Example
{
"success": true,
"message": "Logged out successfully"
}
/auth/me
Get Current User
Get authenticated user details
Response Example
{
"success": true,
"data": {
"id": 1,
"name": "John Doe",
"email": "student@example.com",
"user_type": "student"
}
}
/auth/refresh-token
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
/auth/profile
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"
}
}
}
}
/auth/profile
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"
}
/auth/change-password
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"
}
/auth/profile-image
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
/dashboard
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
}
}
}
/dashboard/stats
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
/attendance
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
}
}
}
/attendance/today
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
}
}
/attendance/stats
Attendance Stats
Get attendance statistics
Response Example
{
"success": true,
"data": {
"this_month": {
"present": 20,
"absent": 2,
"late": 1
},
"attendance_percentage": 87
}
}
/attendance/scan
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
/tasks
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
}
}
}
/tasks/stats
Task Stats
Get task statistics
Response Example
{
"success": true,
"data": {
"total": 25,
"pending": 3,
"in_progress": 2,
"completed": 18,
"overdue": 2
}
}
/tasks/{task}/submit
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
/leaves
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"
}
]
}
}
/leaves
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
/fees
List Fees
Get fee information
Response Example
{
"success": true,
"data": {
"total_fee": 50000,
"amount_paid": 30000,
"remaining_balance": 20000
}
}
/fees/summary
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
/notifications
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
}
]
}
}
/notifications/unread-count
Unread Count
Get unread notifications count
Response Example
{
"success": true,
"data": {
"unread_count": 5
}
}
/notifications/circulars
Get Circulars
Get circulars and announcements
Response Example
{
"success": true,
"data": {
"circulars": [
{
"id": 1,
"title": "Holiday Notice",
"priority": "high"
}
]
}
}