Files
multitenetsaas/docs/api/logistics
AHMET YILMAZ b3fff546e9
Some checks failed
System Monitoring / Health Checks (push) Has been cancelled
System Monitoring / Performance Monitoring (push) Has been cancelled
System Monitoring / Database Monitoring (push) Has been cancelled
System Monitoring / Cache Monitoring (push) Has been cancelled
System Monitoring / Log Monitoring (push) Has been cancelled
System Monitoring / Resource Monitoring (push) Has been cancelled
System Monitoring / Uptime Monitoring (push) Has been cancelled
System Monitoring / Backup Monitoring (push) Has been cancelled
System Monitoring / Security Monitoring (push) Has been cancelled
System Monitoring / Monitoring Dashboard (push) Has been cancelled
System Monitoring / Alerting (push) Has been cancelled
Security Scanning / Dependency Scanning (push) Has been cancelled
Security Scanning / Code Security Scanning (push) Has been cancelled
Security Scanning / Secrets Scanning (push) Has been cancelled
Security Scanning / Container Security Scanning (push) Has been cancelled
Security Scanning / Compliance Checking (push) Has been cancelled
Security Scanning / Security Dashboard (push) Has been cancelled
Security Scanning / Security Remediation (push) Has been cancelled
project initialization
2025-10-05 02:37:33 +08:00
..
2025-10-05 02:37:33 +08:00

Logistics Module API Documentation

Overview

The Logistics Module API provides comprehensive functionality for logistics management including shipment tracking, vehicle management, delivery scheduling, and Malaysian logistics compliance.

Shipments

Create Shipment

POST /api/v1/logistics/shipments/

Request Body:

{
  "tracking_number": "MYL-2024-001",
  "origin": {
    "company_name": "Warehouse A",
    "address": {
      "street": "123 Warehouse Street",
      "city": "Port Klang",
      "state": "Selangor",
      "postal_code": "42000",
      "country": "Malaysia"
    },
    "contact_person": "Mr. Lee",
    "phone_number": "+60312345678"
  },
  "destination": {
    "company_name": "Customer B",
    "address": {
      "street": "456 Customer Street",
      "city": "Johor Bahru",
      "state": "Johor",
      "postal_code": "80000",
      "country": "Malaysia"
    },
    "contact_person": "Ms. Aminah",
    "phone_number": "+60712345678"
  },
  "package_details": {
    "weight_kg": 5.5,
    "dimensions_cm": {
      "length": 30,
      "width": 20,
      "height": 15
    },
    "package_type": "box",
    "description": "Electronics equipment",
    "value_myr": 1500.00,
    "is_fragile": true,
    "special_instructions": "Handle with care"
  },
  "service_type": "express",
  "delivery_date": "2024-01-15",
  "delivery_time_window": {
    "start": "09:00:00",
    "end": "17:00:00"
  },
  "customer_reference": "PO-2024-001",
  "insurance_required": true,
  "insurance_amount": 1500.00,
  "payment_method": "cash_on_delivery",
  "payment_amount": 1850.00,
  "notes": "Urgent delivery - customer waiting"
}

Response:

{
  "success": true,
  "data": {
    "id": "shp_123456",
    "tracking_number": "MYL-2024-001",
    "status": "pending",
    "origin": {
      "company_name": "Warehouse A",
      "address": {
        "street": "123 Warehouse Street",
        "city": "Port Klang",
        "state": "Selangor",
        "postal_code": "42000",
        "country": "Malaysia"
      },
      "contact_person": "Mr. Lee",
      "phone_number": "+60312345678"
    },
    "destination": {
      "company_name": "Customer B",
      "address": {
        "street": "456 Customer Street",
        "city": "Johor Bahru",
        "state": "Johor",
        "postal_code": "80000",
        "country": "Malaysia"
      },
      "contact_person": "Ms. Aminah",
      "phone_number": "+60712345678"
    },
    "package_details": {
      "weight_kg": 5.5,
      "dimensions_cm": {
        "length": 30,
        "width": 20,
        "height": 15
      },
      "package_type": "box",
      "description": "Electronics equipment",
      "value_myr": 1500.00,
      "is_fragile": true,
      "special_instructions": "Handle with care"
    },
    "service_type": "express",
    "delivery_date": "2024-01-15",
    "delivery_time_window": {
      "start": "09:00:00",
      "end": "17:00:00"
    },
    "customer_reference": "PO-2024-001",
    "insurance_required": true,
    "insurance_amount": 1500.00,
    "payment_method": "cash_on_delivery",
    "payment_amount": 1850.00,
    "total_distance_km": 350.5,
    "estimated_delivery_time": "4 hours",
    "actual_delivery_time": null,
    "driver_id": null,
    "vehicle_id": null,
    "notes": "Urgent delivery - customer waiting",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}

Get Shipment

GET /api/v1/logistics/shipments/{shipment_id}/

Update Shipment

PUT /api/v1/logistics/shipments/{shipment_id}/

List Shipments

GET /api/v1/logistics/shipments/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • status - Filter by status (pending, in_transit, delivered, cancelled, returned)
  • service_type - Filter by service type (express, standard, economy)
  • date_from - Filter by date (YYYY-MM-DD)
  • date_to - Filter by date (YYYY-MM-DD)
  • origin_state - Filter by origin state
  • destination_state - Filter by destination state

Track Shipment

GET /api/v1/logistics/shipments/tracking/{tracking_number}/

Update Shipment Status

POST /api/v1/logistics/shipments/{shipment_id}/update-status/

Request Body:

{
  "status": "in_transit",
  "location": {
    "latitude": 3.1390,
    "longitude": 101.6869,
    "address": "Kuala Lumpur, Malaysia",
    "timestamp": "2024-01-15T10:00:00Z"
  },
  "notes": "Shipment picked up from warehouse",
  "driver_id": "drv_123456",
  "vehicle_id": "veh_123456"
}

Vehicles

Create Vehicle

POST /api/v1/logistics/vehicles/

Request Body:

{
  "registration_number": "WXY 1234",
  "vehicle_type": "van",
  "make": "Toyota",
  "model": "Hiace",
  "year": 2022,
  "color": "white",
  "chassis_number": "MR0HE3CD100123456",
  "engine_number": "2TR1234567",
  "capacity_kg": 1000,
  "dimensions_cm": {
    "length": 400,
    "width": 170,
    "height": 180
  },
    "features": ["air_conditioning", "gps_tracking", "refrigeration"],
  "fuel_type": "diesel",
  "current_mileage": 45000,
  "insurance_policy": "Great Eastern Policy #GE-123456",
  "insurance_expiry": "2024-12-31",
  "road_tax_expiry": "2024-06-30",
  "inspection_expiry": "2024-09-30",
  "puspakom_expiry": "2024-03-31",
  "status": "active",
  "assigned_driver_id": "drv_123456",
  "location": {
    "latitude": 3.1390,
    "longitude": 101.6869,
    "last_updated": "2024-01-15T10:00:00Z"
  },
  "maintenance_schedule": {
    "next_service_date": "2024-02-15",
    "next_service_mileage": 50000,
    "service_type": "major"
  },
  "notes": "Company van for local deliveries"
}

Response:

{
  "success": true,
  "data": {
    "id": "veh_123456",
    "registration_number": "WXY 1234",
    "vehicle_type": "van",
    "make": "Toyota",
    "model": "Hiace",
    "year": 2022,
    "color": "white",
    "chassis_number": "MR0HE3CD100123456",
    "engine_number": "2TR1234567",
    "capacity_kg": 1000,
    "dimensions_cm": {
      "length": 400,
      "width": 170,
      "height": 180
    },
    "features": ["air_conditioning", "gps_tracking", "refrigeration"],
    "fuel_type": "diesel",
    "current_mileage": 45000,
    "insurance_policy": "Great Eastern Policy #GE-123456",
    "insurance_expiry": "2024-12-31",
    "road_tax_expiry": "2024-06-30",
    "inspection_expiry": "2024-09-30",
    "puspakom_expiry": "2024-03-31",
    "status": "active",
    "assigned_driver_id": "drv_123456",
    "location": {
      "latitude": 3.1390,
      "longitude": 101.6869,
      "last_updated": "2024-01-15T10:00:00Z"
    },
    "maintenance_schedule": {
      "next_service_date": "2024-02-15",
      "next_service_mileage": 50000,
      "service_type": "major"
    },
    "notes": "Company van for local deliveries",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}

Get Vehicle

GET /api/v1/logistics/vehicles/{vehicle_id}/

Update Vehicle

PUT /api/v1/logistics/vehicles/{vehicle_id}/

List Vehicles

GET /api/v1/logistics/vehicles/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • vehicle_type - Filter by vehicle type
  • status - Filter by status (active, maintenance, retired)
  • "make" - Filter by make
  • model - Filter by model
  • assigned_driver_id - Filter by assigned driver

Delete Vehicle

DELETE /api/v1/logistics/vehicles/{vehicle_id}/

Update Vehicle Location

POST /api/v1/logistics/vehicles/{vehicle_id}/update-location/

Request Body:

{
  "latitude": 3.1390,
  "longitude": 101.6869,
  "address": "Kuala Lumpur, Malaysia",
  "timestamp": "2024-01-15T10:00:00Z",
  "mileage": 45050
}

Get Vehicle Maintenance History

GET /api/v1/logistics/vehicles/{vehicle_id}/maintenance-history/

Drivers

Create Driver

POST /api/v1/logistics/drivers/

Request Body:

{
  "first_name": "Mohamed",
  "last_name": "Ibrahim",
  "ic_number": "850101-01-1234",
  "date_of_birth": "1985-01-01",
  "gender": "male",
  "email": "mohamed.ibrahim@example.com",
  "phone_number": "+60123456789",
  "address": {
    "street": "123 Driver Street",
    "city": "Shah Alam",
    "state": "Selangor",
    "postal_code": "40000",
    "country": "Malaysia"
  },
  "license_number": "123456789012",
  "license_class": "GDL",
  "license_expiry": "2025-12-31",
  "license_type": "professional",
  "psv_license": "PSV123456",
  "psv_expiry": "2025-06-30",
  "experience_years": 8,
  "employment_status": "full_time",
  "hourly_rate": 25.00,
  "monthly_salary": 3500.00,
  "emergency_contact": {
    "name": "Fatimah Ibrahim",
    "relationship": "spouse",
    "phone_number": "+60123456788"
  },
  "medical_checkup_date": "2024-01-01",
  "medical_checkup_expiry": "2025-01-01",
  "status": "active",
  "notes": "Experienced driver with good safety record"
}

Get Driver

GET /api/v1/logistics/drivers/{driver_id}/

Update Driver

PUT /api/v1/logistics/drivers/{driver_id}/

List Drivers

GET /api/v1/logistics/drivers/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • status - Filter by status (active, inactive, suspended)
  • license_class - Filter by license class
  • employment_status - Filter by employment status
  • search - Search in name, IC number, email

Delete Driver

DELETE /api/v1/logistics/drivers/{driver_id}/

Assign Vehicle to Driver

POST /api/v1/logistics/drivers/{driver_id}/assign-vehicle/

Request Body:

{
  "vehicle_id": "veh_123456",
  "assignment_date": "2024-01-15",
  "notes": "Regular delivery route assignment"
}

Routes

Create Route

POST /api/v1/logistics/routes/

Request Body:

{
  "name": "KL to JB Express Route",
  "description": "Daily express delivery from Kuala Lumpur to Johor Bahru",
  "origin": {
    "address": "123 Warehouse Street, Port Klang, Selangor",
    "latitude": 3.0000,
    "longitude": 101.4000
  },
  "destination": {
    "address": "456 Customer Street, Johor Bahru, Johor",
    "latitude": 1.4927,
    "longitude": 103.7414
  },
  "waypoints": [
    {
      "address": "Transit Point A, Seremban, Negeri Sembilan",
      "latitude": 2.7253,
      "longitude": 101.9380,
      "stop_duration_minutes": 15
    },
    {
      "address": "Transit Point B, Melaka Tengah, Melaka",
      "latitude": 2.1892,
      "longitude": 102.2501,
      "stop_duration_minutes": 20
    }
  ],
  "estimated_distance_km": 350.5,
  "estimated_duration_minutes": 240,
  "vehicle_type": "van",
  "driver_requirements": ["GDL license", "experience_2_years"],
  "operating_hours": {
    "start": "08:00:00",
    "end": "18:00:00"
  },
  "frequency": "daily",
  "active_days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
  "priority": "high",
  "notes": "Priority route for urgent deliveries"
}

Get Route

GET /api/v1/logistics/routes/{route_id}/

Update Route

PUT /api/v1/logistics/routes/{route_id}/

List Routes

GET /api/v1/logistics/routes/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • origin_state - Filter by origin state
  • destination_state - Filter by destination state
  • "vehicle_type" - Filter by vehicle type
  • priority - Filter by priority
  • frequency - Filter by frequency

Optimize Route

POST /api/v1/logistics/routes/{route_id}/optimize/

Request Body:

{
  "shipments": ["shp_123456", "shp_789012"],
  "vehicle_id": "veh_123456",
  "optimization_criteria": ["distance", "time", "fuel"]
}

Delivery Schedule

Create Delivery Schedule

POST /api/v1/logistics/schedules/

Request Body:

{
  "shipment_id": "shp_123456",
  "driver_id": "drv_123456",
  "vehicle_id": "veh_123456",
  "route_id": "route_123456",
  "scheduled_date": "2024-01-15",
  "scheduled_time": "09:00:00",
  "estimated_duration_minutes": 240,
  "priority": "high",
  "status": "scheduled",
  "special_instructions": "Customer requires morning delivery",
  "contact_preferences": {
    "phone": true,
    "sms": true,
    "email": false
  }
}

Get Delivery Schedule

GET /api/v1/logistics/schedules/{schedule_id}/

Update Delivery Schedule

PUT /api/v1/logistics/schedules/{schedule_id}/

List Delivery Schedules

GET /api/v1/logistics/schedules/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • driver_id - Filter by driver
  • vehicle_id - Filter by vehicle
  • date_from - Filter by start date (YYYY-MM-DD)
  • date_to - Filter by end date (YYYY-MM-DD)
  • status - Filter by status (scheduled, in_progress, completed, cancelled)

Reports and Analytics

Shipment Analytics

GET /api/v1/logistics/reports/shipments/

Query Parameters:

  • date_from - Filter by start date (YYYY-MM-DD)
  • date_to - Filter by end date (YYYY-MM-DD)
  • group_by - Group by (status, service_type, origin_state, destination_state)
  • format - Output format (json, csv, pdf)

Vehicle Performance

GET /api/v1/logistics/reports/vehicle-performance/

Query Parameters:

  • vehicle_id - Filter by vehicle
  • date_from - Filter by start date (YYYY-MM-DD)
  • date_to - Filter by end date (YYYY-MM-DD)
  • format - Output format (json, csv, pdf)

Driver Performance

GET /api/v1/logistics/reports/driver-performance/

Query Parameters:

  • driver_id - Filter by driver
  • date_from - Filter by start date (YYYY-MM-DD)
  • date_to - Filter by end date (YYYY-MM-DD)
  • format - Output format (json, csv, pdf)

Route Efficiency

GET /api/v1/logistics/reports/route-efficiency/

Query Parameters:

  • route_id - Filter by route
  • date_from - Filter by start date (YYYY-MM-DD)
  • date_to - Filter by end date (YYYY-MM-DD)
  • format - Output format (json, csv, pdf)

Malaysian Logistics Features

Malaysian Registration Plates

Support for Malaysian vehicle registration plates:

{
  "registration_number": "WXY 1234",
  "plate_type": "private",
  "state_code": "W",  // Kuala Lumpur
  "registration_details": {
    "jpj_reference": "JPJ-W-123456",
    "registration_date": "2022-01-01"
  }
}

Malaysian Driver Licenses

Support for Malaysian driver license validation:

  • Competent Driving License (CDL)
  • Professional Driving License (PDL)
  • Public Service Vehicle (PSV) License

PUSPAKOM Compliance

Integration with PUSPAKOM inspection requirements:

{
  "puspakom_compliance": {
    "last_inspection_date": "2024-01-01",
    "next_inspection_date": "2025-01-01",
    "inspection_center": "PUSPAKOM Shah Alam",
    "inspection_result": "pass",
    "certificate_number": "PC202401123456"
  }
}

Malaysian Road Tax

Support for Malaysian road tax calculation and renewal:

{
  "road_tax_details": {
    "amount": 350.00,
    "expiry_date": "2024-12-31",
    "vehicle_category": "private_vehicle",
    "engine_capacity_cc": 2500
  }
}

Malaysian Fuel Prices

Integration with Malaysian fuel pricing:

{
  "fuel_consumption": {
    "fuel_type": "diesel",
    "current_price_per_liter": 2.15,
    "average_consumption_l_per_100km": 12.5,
    "monthly_fuel_cost": 750.00
  }
}

Toll Integration

Support for Malaysian toll calculation:

{
  "toll_information": {
    "route": "PLUS Highway KL-JB",
    "total_toll_cost": 45.50,
    "toll_plazas": ["Sungai Besi", "Nilai", "Seremban", "Ayer Keroh"],
    "electronic_toll": true,
    "touch_n_go_card": "1234567890"
  }
}

Malaysian Time Zones

All scheduling uses Malaysian time zone (UTC+8).

Malaysian Public Holidays

Integration with Malaysian public holidays for scheduling:

{
  "holiday_aware_scheduling": {
    "excludes_public_holidays": true,
    "regional_holidays": ["hari_raya", "chinese_new_year", "deepavali"],
    "operating_hours_adjustment": true
  }
}

Weather Integration

Integration with Malaysian weather services:

{
  "weather_considerations": {
    "monsoon_season": true,
    "flood_prone_areas": ["Kuala Lumpur", "Johor Bahru"],
    "weather_alerts": true,
    "alternative_routes": true
  }
}

Malaysian States Support

Full support for all Malaysian states and territories:

{
  "malaysian_states": [
    "Johor", "Kedah", "Kelantan", "Melaka", "Negeri Sembilan",
    "Pahang", "Perak", "Perlis", "Pulau Pinang", "Sabah",
    "Sarawak", "Selangor", "Terengganu", "Wilayah Persekutuan"
  ]
}