using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace StellaOps.Feedser.Source.Vndr.Msrc.Internal;

public sealed record MsrcSummaryResponse
{
    [JsonPropertyName("value")]
    public List<MsrcVulnerabilitySummary> Value { get; init; } = new();

    [JsonPropertyName("@odata.nextLink")]
    public string? NextLink { get; init; }
}

public sealed record MsrcVulnerabilitySummary
{
    [JsonPropertyName("id")]
    public string Id { get; init; } = string.Empty;

    [JsonPropertyName("vulnerabilityId")]
    public string? VulnerabilityId { get; init; }

    [JsonPropertyName("cveNumber")]
    public string? CveNumber { get; init; }

    [JsonPropertyName("cveNumbers")]
    public IReadOnlyList<string> CveNumbers { get; init; } = Array.Empty<string>();

    [JsonPropertyName("title")]
    public string? Title { get; init; }

    [JsonPropertyName("description")]
    public string? Description { get; init; }

    [JsonPropertyName("releaseDate")]
    public DateTimeOffset? ReleaseDate { get; init; }

    [JsonPropertyName("lastModifiedDate")]
    public DateTimeOffset? LastModifiedDate { get; init; }

    [JsonPropertyName("severity")]
    public string? Severity { get; init; }

    [JsonPropertyName("cvrfUrl")]
    public string? CvrfUrl { get; init; }
}
