namespace ColaFlow.Modules.Mcp.Application.DTOs;

/// <summary>
/// Request DTO for creating a new API Key
/// </summary>
public class CreateApiKeyRequest
{
    /// <summary>
    /// Friendly name for the API key
    /// </summary>
    public required string Name { get; set; }

    /// <summary>
    /// Optional description
    /// </summary>
    public string? Description { get; set; }

    /// <summary>
    /// Tenant ID
    /// </summary>
    public required Guid TenantId { get; set; }

    /// <summary>
    /// User ID who creates the key
    /// </summary>
    public required Guid UserId { get; set; }

    /// <summary>
    /// Allow read access
    /// </summary>
    public bool Read { get; set; } = true;

    /// <summary>
    /// Allow write access
    /// </summary>
    public bool Write { get; set; } = false;

    /// <summary>
    /// List of allowed resource URIs (empty = all allowed)
    /// </summary>
    public List<string>? AllowedResources { get; set; }

    /// <summary>
    /// List of allowed tool names (empty = all allowed)
    /// </summary>
    public List<string>? AllowedTools { get; set; }

    /// <summary>
    /// Optional IP whitelist
    /// </summary>
    public List<string>? IpWhitelist { get; set; }

    /// <summary>
    /// Number of days until expiration (default: 90)
    /// </summary>
    public int ExpirationDays { get; set; } = 90;
}
