# Cable Connections API Routes - Updated ## Base Path: `/cable-connections` ### πŸ”΅ Basic CRUD Operations | Method | Endpoint | Description | Auth Required | |--------|----------|-------------|---------------| | POST | `/search` | Search cable connections with filters | βœ… | | GET | `/:id` | Get single cable connection by ID | βœ… | | POST | `/` | Create single cable connection | βœ… | | PUT | `/:id` | Update single cable connection | βœ… | | DELETE | `/:id` | Delete single cable connection | βœ… | --- ### 🟒 Bulk Operations (NEW!) | Method | Endpoint | Description | Max Items | Auth Required | |--------|----------|-------------|-----------|---------------| | POST | `/bulk/create` | Create multiple cable connections | 100 | βœ… | | PUT | `/bulk/update` | Update multiple cable connections | 100 | βœ… | | DELETE | `/bulk/delete` | Delete multiple cable connections | 100 | βœ… | --- ### πŸ“Š Analytics & Reporting | Method | Endpoint | Description | Auth Required | |--------|----------|-------------|---------------| | GET | `/device/:deviceId` | Get all connections for a device | βœ… | | GET | `/analytics/length-distribution` | Cable length distribution stats | βœ… | | GET | `/analytics/cable-types` | Cable type analytics | βœ… | | POST | `/calculate-route` | Calculate optimal route between devices | βœ… | --- ### πŸ”§ Maintenance & Monitoring | Method | Endpoint | Description | Auth Required | |--------|----------|-------------|---------------| | GET | `/status/summary` | Cable status summary | βœ… | | PUT | `/:id/status` | Update cable connection status | βœ… | | GET | `/maintenance/due` | Get connections due for maintenance | βœ… | --- ### πŸ—ΊοΈ Network Analysis | Method | Endpoint | Description | Auth Required | |--------|----------|-------------|---------------| | POST | `/path/trace` | Trace cable path between devices | βœ… | | GET | `/network-map` | Get network map of connections | βœ… | --- ## Authorization Requirements All endpoints require authentication with one of these roles: - **Teknisi** - **Admin** - **Super Admin** --- ## New Bulk Operation Details ### 1. POST `/cable-connections/bulk/create` **Request Body:** ```json { "connections": [ { "from_device_id": "uuid", "to_device_id": "uuid", "cable_length": 150.5, "cable_type": "fiber_optic", "branching_type": "direct", "installation_date": "2024-01-15T00:00:00Z", "status": "active", "notes": "Optional notes" } ] } ``` **Response:** ```json { "message": "Bulk create completed: 1 successful, 0 failed out of 1 requested", "data": { "total_requested": 1, "successful": 1, "failed": 0, "errors": [], "results": [/* created connections with full details */], "execution_time": "120ms" } } ``` --- ### 2. PUT `/cable-connections/bulk/update` **Request Body:** ```json { "connection_ids": ["uuid1", "uuid2", "uuid3"], "updates": { "status": "maintenance", "cable_type": "fiber_optic", "cable_length": 200.0, "notes": "Updated notes" } } ``` **Response:** ```json { "message": "Bulk update completed: 3 successful, 0 failed out of 3 requested", "data": { "total_requested": 3, "successful": 3, "failed": 0, "errors": [], "results": [/* updated connections */], "execution_time": "80ms" } } ``` **Note:** All fields in `updates` are optional. Only provided fields will be updated. --- ### 3. DELETE `/cable-connections/bulk/delete` **Request Body:** ```json { "connection_ids": ["uuid1", "uuid2", "uuid3"] } ``` **Response:** ```json { "message": "Bulk delete completed: 3 successful, 0 failed out of 3 requested", "data": { "total_requested": 3, "successful": 3, "failed": 0, "errors": [], "execution_time": "60ms" } } ``` --- ## Error Handling ### Partial Failures When some items fail during bulk operations: ```json { "message": "Bulk create completed: 2 successful, 1 failed out of 3 requested", "data": { "total_requested": 3, "successful": 2, "failed": 1, "errors": [ { "index": 1, "error": "From device not found", "details": "device with id uuid-999 does not exist" } ], "results": [/* successfully created items */], "execution_time": "150ms" } } ``` ### Common Error Messages | Error | Cause | Solution | |-------|-------|----------| | "From device not found" | Device ID doesn't exist | Verify device ID exists | | "To device not found" | Device ID doesn't exist | Verify device ID exists | | "Validation failed" | Invalid field value | Check cable_type, status values | | "Connection not found" | ID doesn't exist (update/delete) | Verify connection ID | | "cable_length must be at least 0.1" | Cable length too small | Use minimum 0.1m | --- ## Performance Comparison | Operation | Individual (10 items) | Bulk (10 items) | Time Saved | |-----------|----------------------|-----------------|------------| | Create | 500ms (50ms Γ— 10) | 120ms | 76% faster | | Update | 300ms (30ms Γ— 10) | 80ms | 73% faster | | Delete | 200ms (20ms Γ— 10) | 60ms | 70% faster | --- ## Best Practices 1. **Batch Size**: Use 20-50 items per request for optimal performance 2. **Validation**: Pre-validate device IDs before bulk operations 3. **Error Handling**: Check `errors` array in response for failed items 4. **Retries**: Retry failed items from `errors` array 5. **Monitoring**: Track `execution_time` to monitor performance --- ## Migration from Individual to Bulk Operations **Before (Individual Requests):** ```javascript for (let connection of connections) { await fetch('/cable-connections', { method: 'POST', body: JSON.stringify(connection) }); } // Total time: ~500ms for 10 items ``` **After (Bulk Request):** ```javascript await fetch('/cable-connections/bulk/create', { method: 'POST', body: JSON.stringify({ connections }) }); // Total time: ~120ms for 10 items ``` --- ## Related Documentation - πŸ“– [Bulk Operations Guide](./BULK_OPERATIONS_GUIDE.md) - πŸ“‹ [Implementation Summary](./BULK_OPERATIONS_SUMMARY.md) - ⚑ [Quick Reference](./BULK_OPERATIONS_QUICK_REF.md) - πŸ§ͺ [Test Examples](./test_data/cable_connections_bulk_test_examples.js) --- **Updated:** October 10, 2025 **Version:** 2.0 (with Bulk Operations)