using System; using System.Collections.Generic; using System.Text.Json.Serialization; namespace StellaOps.Excititor.WebService.Contracts; public sealed record VexObservationProjectionResponse( [property: JsonPropertyName("vulnerabilityId")] string VulnerabilityId, [property: JsonPropertyName("productKey")] string ProductKey, [property: JsonPropertyName("generatedAt") ] DateTimeOffset GeneratedAt, [property: JsonPropertyName("totalCount")] int TotalCount, [property: JsonPropertyName("truncated")] bool Truncated, [property: JsonPropertyName("statements")] IReadOnlyList Statements); public sealed record VexObservationStatementResponse( [property: JsonPropertyName("observationId")] string ObservationId, [property: JsonPropertyName("providerId")] string ProviderId, [property: JsonPropertyName("status")] string Status, [property: JsonPropertyName("justification")] string? Justification, [property: JsonPropertyName("detail")] string? Detail, [property: JsonPropertyName("firstSeen")] DateTimeOffset FirstSeen, [property: JsonPropertyName("lastSeen")] DateTimeOffset LastSeen, [property: JsonPropertyName("scope")] VexObservationScopeResponse Scope, [property: JsonPropertyName("anchors")] IReadOnlyList Anchors, [property: JsonPropertyName("document")] VexObservationDocumentResponse Document, [property: JsonPropertyName("signature")] VexObservationSignatureResponse? Signature); public sealed record VexObservationScopeResponse( [property: JsonPropertyName("key")] string Key, [property: JsonPropertyName("name")] string? Name, [property: JsonPropertyName("version")] string? Version, [property: JsonPropertyName("purl")] string? Purl, [property: JsonPropertyName("cpe")] string? Cpe, [property: JsonPropertyName("componentIdentifiers")] IReadOnlyList ComponentIdentifiers); public sealed record VexObservationDocumentResponse( [property: JsonPropertyName("digest")] string Digest, [property: JsonPropertyName("format")] string Format, [property: JsonPropertyName("revision")] string? Revision, [property: JsonPropertyName("sourceUri")] string SourceUri); public sealed record VexObservationSignatureResponse( [property: JsonPropertyName("type")] string Type, [property: JsonPropertyName("keyId")] string? KeyId, [property: JsonPropertyName("issuer")] string? Issuer, [property: JsonPropertyName("verifiedAt")] DateTimeOffset? VerifiedAtUtc);