Swagger Documentation
Locky provides comprehensive API documentation via Swagger/OpenAPI specification.
Accessing Swagger UI
GitHub Pages (Recommended)
View the interactive Swagger UI online:
📖 Open Swagger UI (Opens in new window)
Or use the relative link when browsing documentation: 📖 Open Swagger UI
Local Development
When running Locky locally, Swagger UI is available at:
http://localhost:8080/swagger/index.html
Swagger Files
The Swagger specification is maintained in:
- Source:
docs/swagger/swagger.yaml - Online: swagger.yaml
- Generated: Auto-generated from code annotations
Swagger Specification Overview
The Swagger specification includes:
API Information
- Title: Locky API
- Version: 1.0.0
- Base Path:
/v1 - Schemes: HTTP, HTTPS
- Consumes:
application/json - Produces:
application/json
Endpoints Documented
Public Endpoints
POST /v1/public/users/register- User registrationPOST /v1/public/users/login- User authenticationGET /v1/public/health- Health check
Internal Endpoints
GET /v1/internal/users- List usersGET /v1/internal/users/count- Count usersGET /v1/internal/users/{id}- Get user detailsGET /v1/internal/groups- List groupsGET /v1/internal/groups/count- Count groupsGET /v1/internal/members- List membersGET /v1/internal/roles- List roles
Private Endpoints
PUT /v1/private/users/{id}- Update userDELETE /v1/private/users/{id}- Delete userPOST /v1/private/groups- Create groupPUT /v1/private/groups/{id}- Update groupDELETE /v1/private/groups/{id}- Delete groupPOST /v1/private/members- Add memberDELETE /v1/private/members/{id}- Remove memberPOST /v1/private/roles- Create rolePUT /v1/private/roles/{id}- Update roleDELETE /v1/private/roles/{id}- Delete role
Data Models
The specification includes complete schemas for:
Request Models
UserRequest- User registration/updateGroupRequest- Group creation/updateMemberRequest- Member additionRoleRequest- Role creation/update
Response Models
User- User objectGroup- Group objectMember- Member objectRole- Role objectCount- Count response
Common Properties
All models include:
id- Unique identifier (uint64)uuid- UUID stringcreated_at- Creation timestampupdated_at- Last update timestampdeleted_at- Soft delete timestamp (nullable)
Using Swagger UI
Try Out API Endpoints
- Open Swagger UI in browser
- Click on an endpoint to expand
- Click "Try it out"
- Fill in parameters
- Click "Execute"
- View response
Authentication
For protected endpoints:
- Get JWT token via
/v1/public/users/login - Click "Authorize" button in Swagger UI
- Enter token in format:
Bearer <token> - Click "Authorize"
- Try protected endpoints
Generating Swagger Documentation
From Code Annotations
Locky uses swaggo/swag for generating Swagger docs from code comments:
# Install swag CLI
go install github.com/swaggo/swag/cmd/swag@latest
# Generate documentation
swag init -g cmd/server/main.go -o docs/swagger
# Documentation will be generated in docs/swagger/
Swagger Annotations Example
// @Summary Register a new user
// @Description Create a new user account
// @Tags users
// @Accept json
// @Produce json
// @Param request body entity.UserRequest true "User registration request"
// @Success 201 {object} entity.User
// @Failure 400 {object} map[string]string
// @Router /v1/public/users/register [post]
func (c *userController) Register(ctx *gin.Context) {
// Implementation
}
Swagger vs OpenAPI
- OpenAPI 3.0: Modern specification format
- Swagger 2.0: Legacy format (currently used by Locky)
- Migration: Consider upgrading to OpenAPI 3.0
Interactive Documentation
Swagger Editor
Edit the specification online:
- Visit Swagger Editor
- Paste contents of
docs/swagger/swagger.yaml - View formatted documentation
- Validate specification
Postman Integration
Import Swagger spec into Postman:
- Open Postman
- Click "Import"
- Select
docs/swagger/swagger.yaml - Use generated collection for testing
API Testing with Swagger
Swagger UI provides built-in testing:
- Authentication: Test login flow
- CRUD Operations: Test all endpoints
- Validation: Verify request/response schemas
- Error Handling: Test error scenarios
Best Practices
Maintaining Documentation
- Update Swagger annotations when changing APIs
- Regenerate docs after code changes
- Validate specification regularly
- Keep examples up-to-date
Documentation Quality
- Clear descriptions for all endpoints
- Comprehensive parameter documentation
- Example request/response bodies
- Document all error codes
Swagger Tools
CLI Tools
# Validate Swagger spec
swagger validate docs/swagger/swagger.yaml
# Generate client SDKs
swagger generate client -f docs/swagger/swagger.yaml
# Generate server code
swagger generate server -f docs/swagger/swagger.yaml