The scattered scan-settings JSON routes are superseded by the new admin-only /api/system/settings pair backed by the SettingsRegistry (introduced in885f6d8/bc47450). - Rewrite system/settings.md around GET/PUT /api/system/settings: SettingEntry metadata shape (type, min/max, requires_restart, category, group, is_default), type-aware validation rules, and the full tunable-setting catalog (scanner, general, security, api, sync, performance) with defaults, ranges, and restart requirements - Note the legacy /api/libraries/scan-settings routes as back-compat only (they now refresh the registry cache on write) - Add system/config.md for GET/PUT /api/system/config: raw key/value system configuration (e.g. base_url), including validation notes and guidance to prefer the typed settings endpoint for registry keys
2.2 KiB
System Config API
Overview
Raw key/value system configuration storage (backed by the system_config table). Unlike the typed System Settings API, this endpoint reads and writes arbitrary config keys as plain strings — including keys without registry metadata, such as base_url.
Base URL: /api/system
Authentication: Admin JWT token required
Content-Type: application/json
Endpoints
Get System Configuration
Retrieve all system configuration entries as a flat key/value map.
Endpoint: GET /api/system/config
Authentication: Admin role required
Response: 200 OK
{
"base_url": "http://192.168.1.100:8765",
"default_timezone": "America/New_York"
}
Example:
curl -X GET https://bookhoard.example.com/api/system/config \
-H "Authorization: Bearer <admin_token>"
Update System Configuration
Update one or more config values.
Endpoint: PUT /api/system/config
Authentication: Admin role required
Request Body: a flat map of keys to string values. Only the supplied keys are updated.
{
"base_url": "https://bookhoard.example.com"
}
Validation: values for known keys are validated where applicable — for example, default_timezone must be a valid IANA timezone (time.LoadLocation); invalid values return 400 without persisting.
Response: 200 OK on success; 400 (invalid value/format), 401, 403, 500 on failure.
Example:
curl -X PUT https://bookhoard.example.com/api/system/config \
-H "Authorization: Bearer <admin_token>" \
-H "Content-Type: application/json" \
-d '{"base_url": "https://bookhoard.example.com"}'
Note: settings that appear in the typed settings registry (e.g.
default_timezone) are better managed throughPUT /api/system/settings, which also returns metadata and reload hints. Writes through either endpoint refresh the shared registry cache.
Related Endpoints
- System Settings API — typed, validated tunable settings with metadata
GET /api/devices/:id/sidecar— device setup config derived from system config (see Devices API)