🔧 Admin Panel
Open Admin PanelAPI Endpoints
🔐 Authentication
Create User
/building/create_user/
User Login
/building/login/
Total Users
/building/total-users/
JWT Authentication
/auth/jwt/
📁 Project Management
Create Project
/building/post/
Get Projects
/building/project/
Create Project List
/building/create_project_list/
Get Project List
/building/projectlist/
🏗️ Floor Plans
Plan Details
/building/plan_details/
Get Plans
/building/plans/
Upload Floor Plan
/building/upload-floor-plan/
Get Floor Plan by ID
/building/get-floor-plan/<plan_id>/
📹 Video Processing
Upload Video
/building/upload-video/
Video Processing
/building/video_processing/
API Video Upload
/building/api/video/upload/
Get Video Frames
/building/video/<video_id>/frames/
📍 Location Tracking
Location Tracker
/building/location_tracker/
Add Location
/building/add-location/
Calculate Distance
/building/calculate_distance_and_steps/
📹 Offline Media Sync (Videos/Images)
1. Register Offline Media
/building/api/media/register/
Register media captured offline (no network)
2. Upload Media File
/building/api/media/upload/<media_id>/
Upload actual file when network available
3. Get Sync Status
/building/api/media/status/
Check upload progress and status
4. Get Synced Media (Manager)
/building/api/media/synced/
View all uploaded media files
🔔 Push Notifications
Get Notifications
/building/api/notifications/
Get user notifications
Mark Notification Read
/building/api/notifications/<id>/read/
Mark notification as delivered
Send Test Notification
/building/api/notifications/test/
Send test notification to user
🚀 SLAM Integration (Multi-User & Multi-Device)
1. Register Device
/building/api/devices/register/
Register new device for SLAM tracking (requires user_id)
2. List Devices
/building/api/devices/?user_id=xxx
Get all devices for a user (filter by user_id)
3. Get User Devices
/building/api/devices/user_devices/?user_id=xxx
Get all devices with stats for a specific user
4. Upload SLAM Data
/building/api/slam-data/upload_pose_data/
Upload pose data (position, orientation)
5. Get Device Trajectory
/building/api/slam-data/trajectory/?device_id=xxx&user_id=xxx
Retrieve trajectory data (filter by user and device)
6. Get Device Statistics
/building/api/slam-data/stats/?device_id=xxx&user_id=xxx
Get device analytics (distance, confidence, etc.)
7. Get User Statistics
/building/api/slam-data/user_stats/?user_id=xxx
Get comprehensive stats for all user devices
8. Upload SLAM Map
/building/api/slam-maps/upload_map/
Upload point cloud/map files
9. List SLAM Maps
/building/api/slam-maps/?user_id=xxx
Get all maps for a user (filter by user_id)
10. Process SLAM Map
/building/api/slam-maps/{id}/process_map/
Process uploaded map file
🔧 Other Endpoints
Get Markers
/building/markers/
Get All Details
/building/get_all_details/
Create Customer
/building/api/create-customer/
Send Notification
/building/notification/
📚 SLAM API Usage Examples
1. Register Device Example (Multi-User)
POST /building/api/devices/register/
Content-Type: application/json
{
"user": 1,
"device_id": "mobile_001",
"device_type": "MOBILE",
"os_version": "Android 13",
"app_version": "1.0.0",
"device_model": "Samsung Galaxy S23",
"manufacturer": "Samsung",
"capabilities": {
"slam_algorithm": "ORB-SLAM3",
"sensors": ["accelerometer", "gyroscope", "magnetometer"]
}
}
2. Get User Devices Example
GET /building/api/devices/user_devices/?user_id=1
Response:
{
"user_id": 1,
"devices": [
{
"id": 1,
"device_id": "mobile_001",
"device_type": "MOBILE",
"device_model": "Samsung Galaxy S23",
"slam_data_count": 1250,
"last_slam_data": "2024-01-15T11:45:00Z",
"is_active": true
},
{
"id": 2,
"device_id": "tablet_001",
"device_type": "TABLET",
"device_model": "iPad Pro",
"slam_data_count": 850,
"last_slam_data": "2024-01-15T10:30:00Z",
"is_active": true
}
],
"total_devices": 2
}
3. Upload SLAM Data Example
POST /building/api/slam-data/upload_pose_data/
Content-Type: application/json
{
"device": 1,
"position_x": 1.5,
"position_y": 2.3,
"position_z": 0.8,
"orientation": [0.0, 0.0, 0.0, 1.0],
"confidence": 0.95,
"imu_data": {
"acceleration": [0.1, 0.2, 9.8],
"gyroscope": [0.01, 0.02, 0.03]
},
"keyframe_id": 42
}
4. Get User Statistics Example
GET /building/api/slam-data/user_stats/?user_id=1
Response:
{
"user_id": 1,
"username": "john_doe",
"email": "john@example.com",
"total_devices": 2,
"active_devices": 2,
"total_slam_points": 2100,
"total_distance_traveled": 89.45,
"total_maps": 3,
"last_activity": "2024-01-15T11:45:00Z",
"devices": [
{
"device_id": "mobile_001",
"device_type": "MOBILE",
"device_model": "Samsung Galaxy S23",
"total_points": 1250,
"distance_traveled": 45.67,
"last_seen": "2024-01-15T11:45:00Z",
"is_active": true
},
{
"device_id": "tablet_001",
"device_type": "TABLET",
"device_model": "iPad Pro",
"total_points": 850,
"distance_traveled": 43.78,
"last_seen": "2024-01-15T10:30:00Z",
"is_active": true
}
]
}
5. JavaScript Integration (Multi-User)
// Register Device for User
const registerDevice = async (userId, deviceData) => {
const response = await fetch('/building/api/devices/register/', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
user: userId,
device_id: deviceData.deviceId,
device_type: deviceData.deviceType,
os_version: deviceData.osVersion,
app_version: deviceData.appVersion,
device_model: deviceData.deviceModel,
manufacturer: deviceData.manufacturer
})
});
return await response.json();
};
// Get User Devices
const getUserDevices = async (userId) => {
const response = await fetch(`/building/api/devices/user_devices/?user_id=${userId}`);
return await response.json();
};
// Upload SLAM Data
const uploadSLAMData = async (deviceId, poseData) => {
const response = await fetch('/building/api/slam-data/upload_pose_data/', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
device: deviceId,
position_x: poseData.x,
position_y: poseData.y,
position_z: poseData.z,
orientation: poseData.orientation,
confidence: poseData.confidence
})
});
return await response.json();
};
// Get User Statistics
const getUserStats = async (userId) => {
const response = await fetch(`/building/api/slam-data/user_stats/?user_id=${userId}`);
return await response.json();
};