api-endpoint-pattern
SKILL.md
API Endpoint Pattern Skill
Use this skill when adding or modifying HTTP endpoints in the API.
Scope
- Creating new API endpoints
- Adding new domain routers
- Modifying handler logic
Router Structure
Main Router (internal/router/router.go)
Initializes Echo, sets up middleware, and groups routes by domain.
Sub-Routers (internal/router/[domain]/router.go)
Each domain has its own sub-router with a Bind function that receives an *echo.Group and dependencies.
func Bind(e *echo.Group, db *sql.DB) *echo.Group {
e.GET("/list", func(c echo.Context) error {
// handler logic
})
return e
}
Adding a New Endpoint
- If introducing a new domain, create
internal/router/[domain]/router.go. - Implement a
Bind(e *echo.Group, db *sql.DB) *echo.Groupfunction. - Register the sub-router in
internal/router/router.go:domainrouter.Bind(api.Group("/domain"), config.DB.Conn) - Implement data access logic in
internal/models/if needed.
Handler Guidelines
- Parameter Parsing: Use helper functions for complex query params (e.g., trader levels).
- Dependency Injection: Pass
*sql.DBintoBind, then into handlers. Avoid globals. - Response Handling:
- Success:
c.JSON(200, data)orc.String(200, "OK") - Error:
c.String(code, err.Error())— log significant errors with zerolog.
- Success:
- Business Logic: Keep handlers thin. Move complex logic to
internal/models/or other internal packages.
Conventions
- Use
e.Group()for logical route separation. - Use plural names for collections (
/items,/weapons). - Use query parameters for filtering and optional configuration.
- Prefer HTTP status constants for consistency, but be consistent either way.
Weekly Installs
3
Repository
sjtw/tarkov-bui…ptimiserGitHub Stars
1
First Seen
Feb 11, 2026
Security Audits
Installed on
amp3
gemini-cli3
github-copilot3
codex3
kimi-cli3
opencode3