// -----------------------------------------------------------------------------
// LineageExportModels.cs
// Sprint: SPRINT_20251229_005_001_BE_sbom_lineage_api (LIN-010)
// Task: Evidence pack export models
// -----------------------------------------------------------------------------
namespace StellaOps.SbomService.Models;
///
/// Request to export an evidence pack for a lineage comparison.
///
internal sealed record LineageExportRequest
{
public required string FromDigest { get; init; }
public required string ToDigest { get; init; }
public required string TenantId { get; init; }
public bool IncludeSbomDiff { get; init; } = true;
public bool IncludeVexDeltas { get; init; } = true;
public bool IncludeReachabilityDiff { get; init; } = false;
public bool IncludeAttestations { get; init; } = true;
public bool SignWithKeyless { get; init; } = false;
}
///
/// Response containing evidence pack download URL.
///
internal sealed record LineageExportResponse
{
public required string ExportId { get; init; }
public required string DownloadUrl { get; init; }
public required DateTimeOffset ExpiresAt { get; init; }
public required long SizeBytes { get; init; }
public string? SignatureDigest { get; init; }
}
///
/// Evidence pack structure (NDJSON format).
///
internal sealed record EvidencePack
{
public required string Version { get; init; }
public required string FromDigest { get; init; }
public required string ToDigest { get; init; }
public required DateTimeOffset GeneratedAt { get; init; }
public required string ReplayHash { get; init; }
public SbomDiffSummary? SbomDiff { get; init; }
public IReadOnlyList? VexDeltas { get; init; }
public object? ReachabilityDiff { get; init; }
public IReadOnlyList? AttestationDigests { get; init; }
}