You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.4 KiB
Dart

/// Response model for the [POST api/Auth/login] endpoint.
///
/// Example JSON:
/// ```json
/// {
/// "success": true,
/// "message": "Login successful",
/// "data": {
/// "token": "eyJhbGci…",
/// "expiresAt": "2026-06-22T11:43:12.071Z"
/// },
/// "errors": []
/// }
/// ```
class LoginResponseModel {
final bool success;
final String message;
final LoginDataModel? data;
final List<String> errors;
const LoginResponseModel({
required this.success,
required this.message,
this.data,
this.errors = const [],
});
factory LoginResponseModel.fromJson(Map<String, dynamic> json) {
return LoginResponseModel(
success: json['success'] as bool? ?? false,
message: json['message'] as String? ?? '',
data: json['data'] != null
? LoginDataModel.fromJson(json['data'] as Map<String, dynamic>)
: null,
errors: (json['errors'] as List<dynamic>?)
?.map((e) => e.toString())
.toList() ??
const [],
);
}
}
/// Token payload returned inside [LoginResponseModel.data].
class LoginDataModel {
final String token;
final String expiresAt;
const LoginDataModel({
required this.token,
required this.expiresAt,
});
factory LoginDataModel.fromJson(Map<String, dynamic> json) {
return LoginDataModel(
token: json['token'] as String? ?? '',
expiresAt: json['expiresAt'] as String? ?? '',
);
}
}