public int Code { get; set; }
public string Message { get; set; }
public abstract class AbstractData
public abstract class AbstractResponse<T> where T : AbstractData
public Status Status { get; set; }
public abstract T Data { get; set; }
public class AuthenticationData: AbstractData
public string Id { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string DbId { get; set; }
public class ServiceData: AbstractData
public string FileName { get; set; }
public string MimeType { get; set; }
public string Metadata { get; set; }
public string Value { get; set; }
public class AuthenticationResponse : AbstractResponse<AuthenticationData>
public override AuthenticationData Data { get; set; }