Updates the singleton application settings with a partial payload. Only the fields provided in the request body are modified — omitted fields retain their current values. This endpoint performs an upsert: if no settings record exists yet, one is created from defaults and then the provided fields are applied.
The three top-level sections (jiraConnection, jiraFieldMappings, pageToggles) are independently mergeable:
jiraConnection — Shallow-merged with the existing connection settings. You can update individual fields (e.g. just enabled: true) without resending the entire object.
jiraFieldMappings — Replaced entirely when provided. If you send this field, the entire array is overwritten. To add a mapping, include all existing mappings plus the new one.
pageToggles — Shallow-merged with the existing toggles using mergePageToggles(). You can toggle individual pages without affecting others.
jiraFieldMappings is a full replacement, not a merge. Always include all desired mappings when updating this field. Omitting existing mappings will remove them.
jiraConnection and pageToggles are shallow-merged. You can send just the fields you want to change.
The updatedAt timestamp is set server-side on every update. It cannot be specified in the request.
The id field is always "app_settings" and cannot be changed.
Disabling a page toggle immediately hides it from the sidebar for all users. The route middleware will redirect any direct navigation attempts to the homepage.
Certain routes (/parts/step/*) are defined in ALWAYS_ENABLED_ROUTES and remain accessible regardless of the parts toggle state.
Changing Jira connection settings does not test the connection. Use the List Jira Tickets endpoint to verify connectivity after updating credentials.