using System.ComponentModel.DataAnnotations; namespace Api.Models.DTOs { public class AuthenticateRequest { [Required] public string IdToken { get; set; } = string.Empty; [Required] public string Provider { get; set; } = string.Empty; // "Microsoft", "Google", "PocketId" /// /// Optional access token for API calls (e.g., Microsoft Graph) /// public string? AccessToken { get; set; } } public class AuthenticateResponse { public string AccessToken { get; set; } = string.Empty; public DateTime ExpiresAt { get; set; } public UserProfile User { get; set; } = null!; public bool IsNewUser { get; set; } } public class UserProfile { public int Id { get; set; } public string Email { get; set; } = string.Empty; public string? FirstName { get; set; } public string? LastName { get; set; } public string? ProfilePictureUrl { get; set; } public DateTime CreatedAt { get; set; } public DateTime? LastLoginAt { get; set; } public List Providers { get; set; } = new List(); } public class JwtSettings { public string SecretKey { get; set; } = string.Empty; public string Issuer { get; set; } = string.Empty; public string Audience { get; set; } = string.Empty; public int ExpirationMinutes { get; set; } = 60; } public class OAuthProviderSettings { public Dictionary Providers { get; set; } = new Dictionary(); } public class ProviderConfig { public string Authority { get; set; } = string.Empty; public string ClientId { get; set; } = string.Empty; public string? ClientSecret { get; set; } public List ValidAudiences { get; set; } = new List(); } }