app_settings table). Reads (List, Get) are open to MANAGER and above;
writes (Put, Delete) require OWNER or ADMIN.
Sensitive-value redaction. Values under these key patterns always read
back as ***, even on the same request that set them (write-only on read):
smtp.password*oauth.*.client_secretwebhook.*.secret
DELETE returns
403 (with application/problem+json) for:
instance.bootstrap_atinstance.first_user_idschema.version
List Settings
key ascending. Sensitive values are
redacted.
Auth: OWNER, ADMIN, or MANAGER role (create tier)
Response: 200 OK
Response Fields
Get Setting
OWNER, ADMIN, or MANAGER role
Response:
200 OK — a single setting object (same shape as a List item).
Set Setting
key. An empty string is a valid value (e.g. clearing a
banner); only an absent value field is rejected.
Auth: OWNER or ADMIN role (manage tier)
Request Body:
200 OK — the stored row, with redaction applied if the key is sensitive.
WebSocket event:
instance_setting.updated
Delete Setting
403 is returned even if the row does not
exist (a probing client cannot tell whether the marker was ever set).
Auth: OWNER or ADMIN role
Response: 204 No Content
WebSocket event:
instance_setting.deleted