17 lines
934 B
Markdown
17 lines
934 B
Markdown
# API Instructions
|
|
|
|
## Scope
|
|
- Applies to Fiber handlers and route registration under `internal/handlers` and `internal/server/routes.go`.
|
|
|
|
## Rules
|
|
- Keep API contracts stable; if changing request/response shape, document backward compatibility in PR notes.
|
|
- Prefer snake_case JSON request fields for backend payloads and accept legacy aliases only when needed.
|
|
- Validate required fields explicitly in handlers and return clear `400` errors with actionable messages.
|
|
- Return `404` for missing resources, `500` only for unexpected server/database failures.
|
|
- Keep route naming consistent (`/resource`, `/resource/:id`) and group related routes in `routes.go`.
|
|
|
|
## Implementation Notes
|
|
- Use `database.DB()` directly in handlers unless a service layer exists for that feature.
|
|
- Preload only required relations for performance-sensitive list endpoints.
|
|
- Keep list endpoints sorted deterministically (e.g., `position asc, id asc`).
|