class Account { int id; DateTime createdAt; DateTime updatedAt; DateTime? deletedAt; String name; String nick; dynamic avatar; dynamic banner; String description; List? badges; String? emailAddress; int? externalId; Account({ required this.id, required this.createdAt, required this.updatedAt, required this.deletedAt, required this.name, required this.nick, required this.avatar, required this.banner, required this.description, required this.badges, required this.emailAddress, this.externalId, }); factory Account.fromJson(Map json) => Account( id: json['id'], createdAt: DateTime.parse(json['created_at']), updatedAt: DateTime.parse(json['updated_at']), deletedAt: json['deleted_at'], name: json['name'], nick: json['nick'], avatar: json['avatar'], banner: json['banner'], description: json['description'], emailAddress: json['email_address'], badges: json['badges'] ?.map((e) => AccountBadge.fromJson(e)) .toList() .cast(), externalId: json['external_id'], ); Map toJson() => { 'id': id, 'created_at': createdAt.toIso8601String(), 'updated_at': updatedAt.toIso8601String(), 'deleted_at': deletedAt, 'name': name, 'nick': nick, 'avatar': avatar, 'banner': banner, 'description': description, 'email_address': emailAddress, 'badges': badges?.map((e) => e.toJson()).toList(), 'external_id': externalId, }; } class AccountBadge { int id; DateTime createdAt; DateTime updatedAt; DateTime? deletedAt; Map? metadata; String type; int accountId; AccountBadge({ required this.id, required this.accountId, required this.createdAt, required this.updatedAt, required this.deletedAt, required this.metadata, required this.type, }); factory AccountBadge.fromJson(Map json) => AccountBadge( id: json['id'], accountId: json['account_id'], updatedAt: DateTime.parse(json['updated_at']), createdAt: DateTime.parse(json['created_at']), deletedAt: json['deleted_at'] != null ? DateTime.parse(json['deleted_at']) : null, metadata: json['metadata'], type: json['type'], ); Map toJson() => { 'id': id, 'account_id': accountId, 'created_at': createdAt.toIso8601String(), 'updated_at': updatedAt.toIso8601String(), 'deleted_at': deletedAt?.toIso8601String(), 'metadata': metadata, 'type': type, }; }