🏗️ Capture360 API

Building Construction Management System

🔧 Admin Panel

Open Admin Panel

API 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();
};