using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text.Json.Serialization; namespace StellaOps.Concelier.WebService.Contracts; public sealed record LnmLinksetResponse( [property: JsonPropertyName("advisoryId")] string AdvisoryId, [property: JsonPropertyName("source")] string Source, [property: JsonPropertyName("purl")] IReadOnlyList Purl, [property: JsonPropertyName("cpe")] IReadOnlyList Cpe, [property: JsonPropertyName("summary")] string? Summary, [property: JsonPropertyName("publishedAt")] DateTimeOffset? PublishedAt, [property: JsonPropertyName("modifiedAt")] DateTimeOffset? ModifiedAt, [property: JsonPropertyName("severity")] string? Severity, [property: JsonPropertyName("status")] string? Status, [property: JsonPropertyName("provenance")] LnmLinksetProvenance? Provenance, [property: JsonPropertyName("conflicts")] IReadOnlyList Conflicts, [property: JsonPropertyName("timeline")] IReadOnlyList Timeline, [property: JsonPropertyName("normalized")] LnmLinksetNormalized? Normalized, [property: JsonPropertyName("cached")] bool Cached, [property: JsonPropertyName("remarks")] IReadOnlyList Remarks, [property: JsonPropertyName("observations")] IReadOnlyList Observations); public sealed record LnmLinksetPage( [property: JsonPropertyName("items")] IReadOnlyList Items, [property: JsonPropertyName("page")] int Page, [property: JsonPropertyName("pageSize")] int PageSize, [property: JsonPropertyName("total")] int? Total); public sealed record LnmLinksetNormalized( [property: JsonPropertyName("aliases")] IReadOnlyList? Aliases, [property: JsonPropertyName("purl")] IReadOnlyList? Purl, [property: JsonPropertyName("cpe")] IReadOnlyList? Cpe, [property: JsonPropertyName("versions")] IReadOnlyList? Versions, [property: JsonPropertyName("ranges")] IReadOnlyList? Ranges, [property: JsonPropertyName("severities")] IReadOnlyList? Severities); public sealed record LnmLinksetConflict( [property: JsonPropertyName("field")] string Field, [property: JsonPropertyName("reason")] string Reason, [property: JsonPropertyName("observedValue")] string? ObservedValue, [property: JsonPropertyName("observedAt")] DateTimeOffset? ObservedAt, [property: JsonPropertyName("evidenceHash")] string? EvidenceHash); public sealed record LnmLinksetTimeline( [property: JsonPropertyName("event")] string Event, [property: JsonPropertyName("at")] DateTimeOffset? At, [property: JsonPropertyName("evidenceHash")] string? EvidenceHash); public sealed record LnmLinksetProvenance( [property: JsonPropertyName("ingestedAt")] DateTimeOffset? IngestedAt, [property: JsonPropertyName("connectorId")] string? ConnectorId, [property: JsonPropertyName("evidenceHash")] string? EvidenceHash, [property: JsonPropertyName("dsseEnvelopeHash")] string? DsseEnvelopeHash); public sealed record LnmLinksetQuery( [Required] [property: JsonPropertyName("advisoryId")] string AdvisoryId, [property: JsonPropertyName("source")] string? Source = null, [property: JsonPropertyName("includeConflicts")] bool IncludeConflicts = true, [property: JsonPropertyName("includeObservations")] bool IncludeObservations = false); public sealed record LnmLinksetSearchRequest( [property: JsonPropertyName("purl")] IReadOnlyList? Purl, [property: JsonPropertyName("cpe")] IReadOnlyList? Cpe, [property: JsonPropertyName("ghsa")] string? Ghsa, [property: JsonPropertyName("cve")] string? Cve, [property: JsonPropertyName("advisoryId")] string? AdvisoryId, [property: JsonPropertyName("source")] string? Source, [property: JsonPropertyName("severityMin")] double? SeverityMin, [property: JsonPropertyName("severityMax")] double? SeverityMax, [property: JsonPropertyName("publishedSince")] DateTimeOffset? PublishedSince, [property: JsonPropertyName("modifiedSince")] DateTimeOffset? ModifiedSince, [property: JsonPropertyName("includeTimeline")] bool IncludeTimeline = false, [property: JsonPropertyName("includeObservations")] bool IncludeObservations = false, [property: JsonPropertyName("page")] int? Page = null, [property: JsonPropertyName("pageSize")] int? PageSize = null, [property: JsonPropertyName("sort")] string? Sort = null);