Skill: Add Admin REST Endpoints
Feature ID:
TR-F012| Milestone: M2 and others
When to use
When adding a group of REST endpoints to the management backend.
Pre-research
view internal/adminapi/adminapi.go # Init() registration entry
view internal/adminapi/nodes.go # standard CRUD reference
view internal/adminapi/helpers.go # parsePagination / filter helpers
view internal/adminapi/responses.go # unified responses
view internal/adminapi/authz.go # requireAdmin() and other authz
Implementation steps
- New file
internal/adminapi/<feature>.go, packageadminapi. - Request structs: define the payload with
validatetags (referencenodePayload). - register function:
func register<Feature>Routes() { webserver.ApiGET("/<path>", list<Feature>) webserver.ApiPOST("/<path>", create<Feature>, requireAdmin()) webserver.ApiPUT("/<path>/:id", update<Feature>, requireAdmin()) webserver.ApiDELETE("/<path>/:id", delete<Feature>, requireAdmin()) } - Register in Init: add
register<Feature>Routes()toInit()inadminapi.go. - Data access: always use
app.GDB(); never inject*gorm.DB. - Shared conventions: reuse pagination, filtering, validation, authz, unified responses, and error handling.
Acceptance
- Add
<feature>_test.gocovering CRUD and authz failure -
go test ./internal/adminapi/...passes -
golangci-lint runpasses - If the frontend is involved, pair with
../add-react-admin-resource/SKILL.md - PR references
TR-F012and the milestone ID