diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md
index ed5b754012..07de945714 100644
--- a/mobile/openapi/README.md
+++ b/mobile/openapi/README.md
@@ -320,6 +320,7 @@ Class | Method | HTTP request | Description
  - [CLIPConfig](doc//CLIPConfig.md)
  - [CQMode](doc//CQMode.md)
  - [CastResponse](doc//CastResponse.md)
+ - [CastUpdate](doc//CastUpdate.md)
  - [ChangePasswordDto](doc//ChangePasswordDto.md)
  - [CheckExistingAssetsDto](doc//CheckExistingAssetsDto.md)
  - [CheckExistingAssetsResponseDto](doc//CheckExistingAssetsResponseDto.md)
diff --git a/mobile/openapi/lib/api.dart b/mobile/openapi/lib/api.dart
index 81ec46d9af..d30a3bb81c 100644
--- a/mobile/openapi/lib/api.dart
+++ b/mobile/openapi/lib/api.dart
@@ -115,6 +115,7 @@ part 'model/bulk_ids_dto.dart';
 part 'model/clip_config.dart';
 part 'model/cq_mode.dart';
 part 'model/cast_response.dart';
+part 'model/cast_update.dart';
 part 'model/change_password_dto.dart';
 part 'model/check_existing_assets_dto.dart';
 part 'model/check_existing_assets_response_dto.dart';
diff --git a/mobile/openapi/lib/api_client.dart b/mobile/openapi/lib/api_client.dart
index 544a13879e..ddb71711aa 100644
--- a/mobile/openapi/lib/api_client.dart
+++ b/mobile/openapi/lib/api_client.dart
@@ -286,6 +286,8 @@ class ApiClient {
           return CQModeTypeTransformer().decode(value);
         case 'CastResponse':
           return CastResponse.fromJson(value);
+        case 'CastUpdate':
+          return CastUpdate.fromJson(value);
         case 'ChangePasswordDto':
           return ChangePasswordDto.fromJson(value);
         case 'CheckExistingAssetsDto':
diff --git a/mobile/openapi/lib/model/cast_update.dart b/mobile/openapi/lib/model/cast_update.dart
new file mode 100644
index 0000000000..8707639132
--- /dev/null
+++ b/mobile/openapi/lib/model/cast_update.dart
@@ -0,0 +1,108 @@
+//
+// AUTO-GENERATED FILE, DO NOT MODIFY!
+//
+// @dart=2.18
+
+// ignore_for_file: unused_element, unused_import
+// ignore_for_file: always_put_required_named_parameters_first
+// ignore_for_file: constant_identifier_names
+// ignore_for_file: lines_longer_than_80_chars
+
+part of openapi.api;
+
+class CastUpdate {
+  /// Returns a new [CastUpdate] instance.
+  CastUpdate({
+    this.gCastEnabled,
+  });
+
+  ///
+  /// Please note: This property should have been non-nullable! Since the specification file
+  /// does not include a default value (using the "default:" property), however, the generated
+  /// source code must fall back to having a nullable type.
+  /// Consider adding a "default:" property in the specification file to hide this note.
+  ///
+  bool? gCastEnabled;
+
+  @override
+  bool operator ==(Object other) => identical(this, other) || other is CastUpdate &&
+    other.gCastEnabled == gCastEnabled;
+
+  @override
+  int get hashCode =>
+    // ignore: unnecessary_parenthesis
+    (gCastEnabled == null ? 0 : gCastEnabled!.hashCode);
+
+  @override
+  String toString() => 'CastUpdate[gCastEnabled=$gCastEnabled]';
+
+  Map<String, dynamic> toJson() {
+    final json = <String, dynamic>{};
+    if (this.gCastEnabled != null) {
+      json[r'gCastEnabled'] = this.gCastEnabled;
+    } else {
+    //  json[r'gCastEnabled'] = null;
+    }
+    return json;
+  }
+
+  /// Returns a new [CastUpdate] instance and imports its values from
+  /// [value] if it's a [Map], null otherwise.
+  // ignore: prefer_constructors_over_static_methods
+  static CastUpdate? fromJson(dynamic value) {
+    upgradeDto(value, "CastUpdate");
+    if (value is Map) {
+      final json = value.cast<String, dynamic>();
+
+      return CastUpdate(
+        gCastEnabled: mapValueOfType<bool>(json, r'gCastEnabled'),
+      );
+    }
+    return null;
+  }
+
+  static List<CastUpdate> listFromJson(dynamic json, {bool growable = false,}) {
+    final result = <CastUpdate>[];
+    if (json is List && json.isNotEmpty) {
+      for (final row in json) {
+        final value = CastUpdate.fromJson(row);
+        if (value != null) {
+          result.add(value);
+        }
+      }
+    }
+    return result.toList(growable: growable);
+  }
+
+  static Map<String, CastUpdate> mapFromJson(dynamic json) {
+    final map = <String, CastUpdate>{};
+    if (json is Map && json.isNotEmpty) {
+      json = json.cast<String, dynamic>(); // ignore: parameter_assignments
+      for (final entry in json.entries) {
+        final value = CastUpdate.fromJson(entry.value);
+        if (value != null) {
+          map[entry.key] = value;
+        }
+      }
+    }
+    return map;
+  }
+
+  // maps a json object with a list of CastUpdate-objects as value to a dart map
+  static Map<String, List<CastUpdate>> mapListFromJson(dynamic json, {bool growable = false,}) {
+    final map = <String, List<CastUpdate>>{};
+    if (json is Map && json.isNotEmpty) {
+      // ignore: parameter_assignments
+      json = json.cast<String, dynamic>();
+      for (final entry in json.entries) {
+        map[entry.key] = CastUpdate.listFromJson(entry.value, growable: growable,);
+      }
+    }
+    return map;
+  }
+
+  /// The list of required keys that must be present in a JSON.
+  static const requiredKeys = <String>{
+  };
+}
+
diff --git a/mobile/openapi/lib/model/user_preferences_update_dto.dart b/mobile/openapi/lib/model/user_preferences_update_dto.dart
index 3e420df119..73e3cac9ff 100644
--- a/mobile/openapi/lib/model/user_preferences_update_dto.dart
+++ b/mobile/openapi/lib/model/user_preferences_update_dto.dart
@@ -14,6 +14,7 @@ class UserPreferencesUpdateDto {
   /// Returns a new [UserPreferencesUpdateDto] instance.
   UserPreferencesUpdateDto({
     this.avatar,
+    this.cast,
     this.download,
     this.emailNotifications,
     this.folders,
@@ -33,6 +34,14 @@ class UserPreferencesUpdateDto {
   ///
   AvatarUpdate? avatar;
 
+  ///
+  /// Please note: This property should have been non-nullable! Since the specification file
+  /// does not include a default value (using the "default:" property), however, the generated
+  /// source code must fall back to having a nullable type.
+  /// Consider adding a "default:" property in the specification file to hide this note.
+  ///
+  CastUpdate? cast;
+
   ///
   /// Please note: This property should have been non-nullable! Since the specification file
   /// does not include a default value (using the "default:" property), however, the generated
@@ -108,6 +117,7 @@ class UserPreferencesUpdateDto {
   @override
   bool operator ==(Object other) => identical(this, other) || other is UserPreferencesUpdateDto &&
     other.avatar == avatar &&
+    other.cast == cast &&
     other.download == download &&
     other.emailNotifications == emailNotifications &&
     other.folders == folders &&
@@ -122,6 +132,7 @@ class UserPreferencesUpdateDto {
   int get hashCode =>
     // ignore: unnecessary_parenthesis
     (avatar == null ? 0 : avatar!.hashCode) +
+    (cast == null ? 0 : cast!.hashCode) +
     (download == null ? 0 : download!.hashCode) +
     (emailNotifications == null ? 0 : emailNotifications!.hashCode) +
     (folders == null ? 0 : folders!.hashCode) +
@@ -133,7 +144,7 @@ class UserPreferencesUpdateDto {
     (tags == null ? 0 : tags!.hashCode);
 
   @override
-  String toString() => 'UserPreferencesUpdateDto[avatar=$avatar, download=$download, emailNotifications=$emailNotifications, folders=$folders, memories=$memories, people=$people, purchase=$purchase, ratings=$ratings, sharedLinks=$sharedLinks, tags=$tags]';
+  String toString() => 'UserPreferencesUpdateDto[avatar=$avatar, cast=$cast, download=$download, emailNotifications=$emailNotifications, folders=$folders, memories=$memories, people=$people, purchase=$purchase, ratings=$ratings, sharedLinks=$sharedLinks, tags=$tags]';
 
   Map<String, dynamic> toJson() {
     final json = <String, dynamic>{};
@@ -142,6 +153,11 @@ class UserPreferencesUpdateDto {
     } else {
     //  json[r'avatar'] = null;
     }
+    if (this.cast != null) {
+      json[r'cast'] = this.cast;
+    } else {
+    //  json[r'cast'] = null;
+    }
     if (this.download != null) {
       json[r'download'] = this.download;
     } else {
@@ -200,6 +216,7 @@ class UserPreferencesUpdateDto {
 
       return UserPreferencesUpdateDto(
         avatar: AvatarUpdate.fromJson(json[r'avatar']),
+        cast: CastUpdate.fromJson(json[r'cast']),
         download: DownloadUpdate.fromJson(json[r'download']),
         emailNotifications: EmailNotificationsUpdate.fromJson(json[r'emailNotifications']),
         folders: FoldersUpdate.fromJson(json[r'folders']),