# Swagger Documentation This document explains how to access and update the Swagger documentation for the Time Tracker API. ## Accessing Swagger UI After starting the backend server, access the Swagger UI at: ``` http://localhost:8080/swagger/index.html ``` This interactive interface allows you to: - Browse all available API endpoints - See request parameters and response formats - Test API calls directly from the browser ## Updating Swagger Documentation To update the Swagger documentation for the Time Tracker API, follow these steps: 1. **Add or update Swagger annotations in your code** - Annotations should be added as comments above handler functions - Use the correct types in annotations (e.g., `dto.ActivityDto` instead of `utils.ActivityResponse`) - Make sure all parameters, responses, and types are properly documented 2. **Run the Swagger generation command** ```bash cd backend && swag init -g cmd/api/main.go --output docs ``` This command: - Uses `swag` CLI tool to parse your code - Looks for the main entry point in `cmd/api/main.go` - Outputs the generated files to the `docs` directory 3. **Verify the generated files** The command will generate or update three files: - `docs/docs.go` - Go code for the Swagger documentation - `docs/swagger.json` - JSON representation of the API - `docs/swagger.yaml` - YAML representation of the API 4. **Common issues and solutions** - If you encounter "cannot find type definition" errors, check that you're using the correct type names in your annotations - If endpoints are missing, ensure they have proper Swagger annotations - If you change the base path or other global settings, update them in the `main.go` file annotations ## Swagger Annotation Examples ### Main API Information In `main.go`: ```go // @title Time Tracker API // @version 1.0 // @description This is a simple time tracker API. // @host localhost:8080 // @BasePath /api // @securityDefinitions.apikey BearerAuth // @in header // @name Authorization ``` ### Endpoint Documentation Example from a handler function: ```go // GetActivities handles GET /activities // // @Summary Get all activities // @Description Get a list of all activities // @Tags activities // @Accept json // @Produce json // @Security BearerAuth // @Success 200 {object} utils.Response{data=[]dto.ActivityDto} // @Failure 401 {object} utils.Response{error=utils.ErrorInfo} // @Failure 500 {object} utils.Response{error=utils.ErrorInfo} // @Router /activities [get] func (h *ActivityHandler) GetActivities(c *gin.Context) { // Function implementation } ``` Remember that the Swagger documentation is generated from the annotations in your code, so keeping these annotations up-to-date is essential for accurate API documentation.