# VTL Endpoints Verification ## ✅ Implementation Status The VTL endpoints **ARE implemented** in the codebase. The routes are registered in the router. ## 🔍 Verification Steps ### 1. Check if Server Needs Restart The server must be restarted after code changes. Check if you're running the latest build: ```bash # Rebuild the server cd backend go build -o bin/calypso-api ./cmd/calypso-api # Restart the server (stop old process, start new one) # If using systemd: sudo systemctl restart calypso-api # Or if running manually: pkill calypso-api ./bin/calypso-api -config config.yaml.example ``` ### 2. Verify Routes are Registered The routes are defined in `backend/internal/common/router/router.go` lines 106-120: ```go // Virtual Tape Libraries vtlHandler := tape_vtl.NewHandler(db, log) vtlGroup := protected.Group("/tape/vtl") vtlGroup.Use(requirePermission("tape", "read")) { vtlGroup.GET("/libraries", vtlHandler.ListLibraries) vtlGroup.POST("/libraries", vtlHandler.CreateLibrary) vtlGroup.GET("/libraries/:id", vtlHandler.GetLibrary) vtlGroup.DELETE("/libraries/:id", vtlHandler.DeleteLibrary) vtlGroup.GET("/libraries/:id/drives", vtlHandler.GetLibraryDrives) vtlGroup.GET("/libraries/:id/tapes", vtlHandler.GetLibraryTapes) vtlGroup.POST("/libraries/:id/tapes", vtlHandler.CreateTape) vtlGroup.POST("/libraries/:id/load", vtlHandler.LoadTape) vtlGroup.POST("/libraries/:id/unload", vtlHandler.UnloadTape) } ``` ### 3. Test Endpoint Registration After restarting, test if routes are accessible: ```bash # This should return 401 (unauthorized) not 404 (not found) curl http://localhost:8080/api/v1/tape/vtl/libraries # With auth, should return 200 with empty array curl http://localhost:8080/api/v1/tape/vtl/libraries \ -H "Authorization: Bearer $TOKEN" ``` **If you get 404:** - Server is running old code → Restart required - Routes not compiled → Rebuild required **If you get 401:** - Routes are working! → Just need authentication **If you get 403:** - Routes are working! → Permission issue (check user has `tape:read`) ### 4. Check Handler Implementation Verify handlers exist: - ✅ `backend/internal/tape_vtl/handler.go` - All handlers implemented - ✅ `backend/internal/tape_vtl/service.go` - All services implemented ## 🚀 Quick Fix If endpoints return 404: 1. **Stop the current server** 2. **Rebuild**: ```bash cd backend go build -o bin/calypso-api ./cmd/calypso-api ``` 3. **Restart**: ```bash ./bin/calypso-api -config config.yaml.example ``` ## 📋 Expected Endpoints All these endpoints should be available after restart: | Method | Endpoint | Handler | |--------|----------|---------| | GET | `/api/v1/tape/vtl/libraries` | ListLibraries | | POST | `/api/v1/tape/vtl/libraries` | CreateLibrary | | GET | `/api/v1/tape/vtl/libraries/:id` | GetLibrary | | DELETE | `/api/v1/tape/vtl/libraries/:id` | DeleteLibrary | | GET | `/api/v1/tape/vtl/libraries/:id/drives` | GetLibraryDrives | | GET | `/api/v1/tape/vtl/libraries/:id/tapes` | GetLibraryTapes | | POST | `/api/v1/tape/vtl/libraries/:id/tapes` | CreateTape | | POST | `/api/v1/tape/vtl/libraries/:id/load` | LoadTape | | POST | `/api/v1/tape/vtl/libraries/:id/unload` | UnloadTape | ## 🔧 Debugging If still getting 404 after restart: 1. **Check server logs** for route registration 2. **Verify compilation** succeeded (no errors) 3. **Check router.go** is being used (not cached) 4. **Test with curl** to see exact error: ```bash curl -v http://localhost:8080/api/v1/tape/vtl/libraries \ -H "Authorization: Bearer $TOKEN" ``` The `-v` flag will show the full HTTP response including headers.