// Package schema defines the HardwareIngestRequest types compatible with // core/internal/ingest/parser_hardware.go. No import dependency on core. package schema // HardwareIngestRequest is the top-level output document produced by the audit binary. // It is accepted as-is by the core /api/ingest/hardware endpoint. type HardwareIngestRequest struct { Filename *string `json:"filename"` SourceType *string `json:"source_type"` Protocol *string `json:"protocol"` TargetHost string `json:"target_host"` CollectedAt string `json:"collected_at"` Hardware HardwareSnapshot `json:"hardware"` } type HardwareSnapshot struct { Board HardwareBoard `json:"board"` Firmware []HardwareFirmwareRecord `json:"firmware,omitempty"` CPUs []HardwareCPU `json:"cpus,omitempty"` Memory []HardwareMemory `json:"memory,omitempty"` Storage []HardwareStorage `json:"storage,omitempty"` PCIeDevices []HardwarePCIeDevice `json:"pcie_devices,omitempty"` PowerSupplies []HardwarePowerSupply `json:"power_supplies,omitempty"` } type HardwareBoard struct { Manufacturer *string `json:"manufacturer"` ProductName *string `json:"product_name"` SerialNumber string `json:"serial_number"` PartNumber *string `json:"part_number"` UUID *string `json:"uuid"` } type HardwareFirmwareRecord struct { DeviceName string `json:"device_name"` Version string `json:"version"` } type HardwareCPU struct { Socket *int `json:"socket"` Model *string `json:"model"` Manufacturer *string `json:"manufacturer"` Status *string `json:"status"` SerialNumber *string `json:"serial_number"` Firmware *string `json:"firmware"` Cores *int `json:"cores"` Threads *int `json:"threads"` FrequencyMHz *int `json:"frequency_mhz"` MaxFrequencyMHz *int `json:"max_frequency_mhz"` } type HardwareMemory struct { Slot *string `json:"slot"` Location *string `json:"location"` Present *bool `json:"present"` SizeMB *int `json:"size_mb"` Type *string `json:"type"` MaxSpeedMHz *int `json:"max_speed_mhz"` CurrentSpeedMHz *int `json:"current_speed_mhz"` Manufacturer *string `json:"manufacturer"` SerialNumber *string `json:"serial_number"` PartNumber *string `json:"part_number"` Status *string `json:"status"` } type HardwareStorage struct { Slot *string `json:"slot"` Type *string `json:"type"` Model *string `json:"model"` SizeGB *int `json:"size_gb"` SerialNumber *string `json:"serial_number"` Manufacturer *string `json:"manufacturer"` Firmware *string `json:"firmware"` Interface *string `json:"interface"` Present *bool `json:"present"` Status *string `json:"status"` Telemetry map[string]any `json:"telemetry,omitempty"` } type HardwarePCIeDevice struct { Slot *string `json:"slot"` VendorID *int `json:"vendor_id"` DeviceID *int `json:"device_id"` BDF *string `json:"bdf"` DeviceClass *string `json:"device_class"` Manufacturer *string `json:"manufacturer"` Model *string `json:"model"` LinkWidth *int `json:"link_width"` LinkSpeed *string `json:"link_speed"` MaxLinkWidth *int `json:"max_link_width"` MaxLinkSpeed *string `json:"max_link_speed"` SerialNumber *string `json:"serial_number"` Firmware *string `json:"firmware"` Present *bool `json:"present"` Status *string `json:"status"` Telemetry map[string]any `json:"telemetry,omitempty"` } type HardwarePowerSupply struct { Slot *string `json:"slot"` Present *bool `json:"present"` Model *string `json:"model"` Vendor *string `json:"vendor"` WattageW *int `json:"wattage_w"` SerialNumber *string `json:"serial_number"` PartNumber *string `json:"part_number"` Firmware *string `json:"firmware"` Status *string `json:"status"` InputType *string `json:"input_type"` InputPowerW *float64 `json:"input_power_w"` OutputPowerW *float64 `json:"output_power_w"` InputVoltage *float64 `json:"input_voltage"` }