$r['config_key'], 'value' => $r['config_value'], 'type' => $r['value_type'], 'min' => $r['min_value'], 'max' => $r['max_value'], 'label' => $r['label'], 'labelEasy' => $r['label_easy'], 'help' => $r['help_text'], 'updatedAt' => $r['updated_at'], ]; } v2_response_ok(['groups' => $groups]); } // PATCH $body = v2_request_body_json_required(); v2_validate_required($body, ['key', 'value']); $key = (string) $body['key']; $value = (string) $body['value']; $row = v2_db_one("SELECT value_type, min_value, max_value FROM platform_config_v2 WHERE config_key = :k", [':k' => $key]); if (!$row) v2_response_error(404, 'not_found', "Konfig-Eintrag '$key' nicht gefunden."); // Range-Check if ($row['value_type'] === 'int') { $v = (int) $value; if ($row['min_value'] !== null && $v < (int) $row['min_value']) { v2_response_error(400, 'out_of_range', "Wert < min ({$row['min_value']})"); } if ($row['max_value'] !== null && $v > (int) $row['max_value']) { v2_response_error(400, 'out_of_range', "Wert > max ({$row['max_value']})"); } } v2_db_exec( "UPDATE platform_config_v2 SET config_value = :v, updated_by = :u WHERE config_key = :k", [':v' => $value, ':k' => $key, ':u' => (int) ($auth['sub'] ?? 0)] ); v2_response_ok(['ok' => true]);