Skip to main content

System Settings API

Key-value store for global system configuration. Settings with isPublic: true are accessible without authentication.

GraphQL

Queries

List All Settings (auth required)

query { systemSettings { key value description isPublic createdAt updatedAt } }

Get Single Setting (auth required)

query { systemSetting(key: "registration_enabled") { key value description isPublic } }

Public Settings (no auth)

query { publicSettings { key value } }

Mutations

All mutations require settings:write permission.

Create Setting

mutation {
createSystemSetting(input: {
key: "maintenance_mode"
value: "false"
description: "Enable maintenance mode"
isPublic: false
}) { key value }
}

Update Setting

mutation {
updateSystemSetting(key: "registration_enabled", input: { value: "false" }) { key value }
}

Delete Setting

Requires settings:delete permission.

mutation { deleteSystemSetting(key: "maintenance_mode") }

REST API

Endpoints

MethodPathAuthDescription
GET/v1/settingsBearerList all settings
GET/v1/settings/publicNoList public settings
GET/v1/settings/{key}BearerGet setting by key
POST/v1/settingssettings:writeCreate setting
PUT/v1/settings/{key}settings:writeUpdate setting
DELETE/v1/settings/{key}settings:deleteDelete setting

Example

# Get public settings (no auth)
curl http://localhost:3000/v1/settings/public

# Update a setting
curl -X PUT http://localhost:3000/v1/settings/registration_enabled \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"value": "false"}'

Built-in Settings

KeyDefaultPublicDescription
registration_enabledtrueYesGlobal registration toggle. When false, no new accounts can be created regardless of per-platform settings.

Audit Events

EventLogged When
system_setting_createdNew setting created
system_setting_updatedSetting value changed (logs old + new value)
system_setting_deletedSetting removed