Map<String, dynamic> toJson() { return {'metadata': metadata}..removeWhere((key, value) => value == null); }