feat: admin settings API — GET/PUT settings, test connectivity #104
Reference in New Issue
Block a user
Delete Branch "feat-admin-settings-api"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds four admin-only API endpoints for reading and modifying server settings at runtime.
Endpoints
GET /api/admin/settings— full config grouped by module, secrets redactedGET /api/admin/settings/{module}— single module config blockPUT /api/admin/settings/{module}— toggle modules + persist config overridesPOST /api/admin/settings/{module}/test— test external connectivity (database, storage)Key behaviors
****{"enabled": false}disables a module via registry + DB persistencesettings_overridestable for future hot-reload; changes to database/storage/server/schemas returnrestart_required: truesettings.changedevent published on every PUTNew files
internal/db/settings.go— SettingsRepository (module_state + settings_overrides CRUD)internal/api/settings_handlers.go— 4 handlers + config build helpersinternal/api/settings_handlers_test.go— 8 integration testsModified files
internal/api/handlers.go— addsettingsfield, wire in NewServerinternal/api/routes.go— add/api/admin/settingsroute groupCloses #99
Depends on #102 (module system)
Add four admin-only endpoints under /api/admin/settings: - GET / — full config (secrets redacted) - GET /{module} — single module config - PUT /{module} — toggle modules + persist config overrides - POST /{module}/test — test external connectivity (database, storage) PUT publishes a settings.changed SSE event. Config overrides are persisted for future hot-reload support; changes to database/storage/ server/schemas namespaces return restart_required: true. Wires SettingsRepository into Server struct. Closes #99