Versions in this module Expand all Collapse all v0 v0.1.9 Apr 15, 2026 v0.1.8 Apr 15, 2026 v0.1.7 Apr 15, 2026 v0.1.6 Apr 14, 2026 v0.1.5 Apr 9, 2026 v0.1.4 Apr 7, 2026 v0.1.3 Apr 7, 2026 v0.1.2 Mar 17, 2026 v0.1.1 Feb 12, 2026 v0.1.0 Feb 12, 2026 Changes in this version + const APIKeyPrefixLive + const APIKeyPrefixTest + var ErrAPIKeyExpired = errors.New("API key has expired") + var ErrAPIKeyRequired = errors.New("API key is required for this source type") + var ErrAssetSourceNotFound = errors.New("asset source not found") + var ErrCannotAcceptData = errors.New("data source cannot accept data in current state") + var ErrDataSourceExists = errors.New("data source with this name already exists") + var ErrDataSourceNotFound = errors.New("data source not found") + var ErrInvalidAPIKey = errors.New("invalid API key") + var ErrInvalidSourceType = errors.New("invalid source type") + var ErrInvalidStatus = errors.New("invalid source status") + var ErrNameRequired = errors.New("name is required") + var ErrSourceDisabled = errors.New("data source is disabled") + var ErrSourceInactive = errors.New("data source is inactive") + var ErrTenantIDRequired = errors.New("tenant ID is required") + func AlreadyExistsError(name string) error + func GenerateAPIKeyPrefix(key string) string + func NotFoundError(id string) error + func ValidationError(msg string) error + type AssetSource struct + func NewAssetSource(assetID shared.ID, sourceType SourceType, sourceID *shared.ID) (*AssetSource, error) + func ReconstructAssetSource(id shared.ID, assetID shared.ID, sourceType SourceType, sourceID *shared.ID, ...) *AssetSource + func (as *AssetSource) AssetID() shared.ID + func (as *AssetSource) Confidence() int + func (as *AssetSource) ContributedData() map[string]any + func (as *AssetSource) CreatedAt() time.Time + func (as *AssetSource) DaysSinceLastSeen() int + func (as *AssetSource) FirstSeenAt() time.Time + func (as *AssetSource) ID() shared.ID + func (as *AssetSource) IsPrimary() bool + func (as *AssetSource) IsStale(threshold time.Duration) bool + func (as *AssetSource) LastSeenAt() time.Time + func (as *AssetSource) MergeContributedData(data map[string]any) + func (as *AssetSource) RecordSighting() + func (as *AssetSource) RecordSightingWithData(data map[string]any, sourceRef string) + func (as *AssetSource) SeenCount() int + func (as *AssetSource) SetConfidence(confidence int) + func (as *AssetSource) SetContributedData(data map[string]any) + func (as *AssetSource) SetPrimary(primary bool) + func (as *AssetSource) SetSourceRef(ref string) + func (as *AssetSource) SourceID() *shared.ID + func (as *AssetSource) SourceRef() string + func (as *AssetSource) SourceType() SourceType + func (as *AssetSource) ToSummary(sourceName string) AssetSourceSummary + func (as *AssetSource) UpdatedAt() time.Time + type AssetSourceFilter struct + AssetID shared.ID + IsPrimary *bool + SourceID shared.ID + SourceType SourceType + type AssetSourceListOptions struct + Page int + PerPage int + SortBy string + SortOrder string + type AssetSourceListResult struct + Data []*AssetSource + Page int + PerPage int + Total int64 + TotalPages int + type AssetSourceRepository interface + CountBySource func(ctx context.Context, sourceID shared.ID) (int64, error) + Create func(ctx context.Context, as *AssetSource) error + Delete func(ctx context.Context, id shared.ID) error + DeleteByAsset func(ctx context.Context, assetID shared.ID) error + DeleteBySource func(ctx context.Context, sourceID shared.ID) error + GetByAsset func(ctx context.Context, assetID shared.ID) ([]*AssetSource, error) + GetByAssetAndSource func(ctx context.Context, assetID shared.ID, sourceType SourceType, ...) (*AssetSource, error) + GetByID func(ctx context.Context, id shared.ID) (*AssetSource, error) + GetPrimaryByAsset func(ctx context.Context, assetID shared.ID) (*AssetSource, error) + List func(ctx context.Context, filter AssetSourceFilter, opts AssetSourceListOptions) (AssetSourceListResult, error) + SetPrimary func(ctx context.Context, assetSourceID shared.ID) error + Update func(ctx context.Context, as *AssetSource) error + Upsert func(ctx context.Context, as *AssetSource) error + type AssetSourceSummary struct + Confidence int + ContributedData map[string]any + FirstSeenAt time.Time + IsPrimary bool + LastSeenAt time.Time + SeenCount int + SourceID *string + SourceName string + SourceRef string + SourceType SourceType + type Capabilities []Capability + func ParseCapabilities(ss []string) Capabilities + func (c Capabilities) Contains(cap Capability) bool + func (c Capabilities) Strings() []string + type Capability string + const CapabilityCertificate + const CapabilityCloudAccount + const CapabilityCompliance + const CapabilityCompute + const CapabilityContainer + const CapabilityDatabase + const CapabilityDomain + const CapabilityIPAddress + const CapabilityKubernetes + const CapabilityMisconfiguration + const CapabilityNetwork + const CapabilityRepository + const CapabilitySecret + const CapabilityService + const CapabilityStorage + const CapabilitySubdomain + const CapabilityVulnerability + func (c Capability) String() string + type DataSource struct + func NewDataSource(tenantID shared.ID, name string, typ SourceType) (*DataSource, error) + func Reconstruct(id shared.ID, tenantID shared.ID, name string, typ SourceType, ...) *DataSource + func (d *DataSource) APIKeyHash() string + func (d *DataSource) APIKeyLastUsedAt() *time.Time + func (d *DataSource) APIKeyPrefix() string + func (d *DataSource) AssetsCollected() int64 + func (d *DataSource) CanAcceptData() bool + func (d *DataSource) Capabilities() Capabilities + func (d *DataSource) Config() map[string]any + func (d *DataSource) CreatedAt() time.Time + func (d *DataSource) Description() string + func (d *DataSource) Enable() + func (d *DataSource) ErrorCount() int + func (d *DataSource) FindingsReported() int64 + func (d *DataSource) HasCapability(cap Capability) bool + func (d *DataSource) Hostname() string + func (d *DataSource) ID() shared.ID + func (d *DataSource) IPAddress() net.IP + func (d *DataSource) IncrementAssets(count int) + func (d *DataSource) IncrementFindings(count int) + func (d *DataSource) IsStale(threshold time.Duration) bool + func (d *DataSource) LastError() string + func (d *DataSource) LastSeenAt() *time.Time + func (d *DataSource) LastSyncAssets() int + func (d *DataSource) LastSyncAt() *time.Time + func (d *DataSource) LastSyncDurationMs() int + func (d *DataSource) LastSyncFindings() int + func (d *DataSource) MarkActive() + func (d *DataSource) MarkDisabled() + func (d *DataSource) MarkError(errMsg string) + func (d *DataSource) MarkInactive() + func (d *DataSource) Metadata() map[string]any + func (d *DataSource) Name() string + func (d *DataSource) RecordAPIKeyUsage() + func (d *DataSource) RecordHeartbeat(version, hostname string, ip net.IP) + func (d *DataSource) RecordSync(durationMs, assetsCount, findingsCount int) + func (d *DataSource) SetAPIKey(hash, prefix string) + func (d *DataSource) SetCapabilities(caps Capabilities) + func (d *DataSource) SetConfig(config map[string]any) + func (d *DataSource) SetDescription(description string) + func (d *DataSource) SetHostname(hostname string) + func (d *DataSource) SetIPAddress(ip net.IP) + func (d *DataSource) SetMetadata(metadata map[string]any) + func (d *DataSource) SetVersion(version string) + func (d *DataSource) Status() SourceStatus + func (d *DataSource) TenantID() shared.ID + func (d *DataSource) Type() SourceType + func (d *DataSource) UpdatedAt() time.Time + func (d *DataSource) Version() string + type Filter struct + Capabilities []Capability + Search string + Status SourceStatus + Statuses []SourceStatus + TenantID string + Type SourceType + Types []SourceType + type FindingDataSource struct + func NewFindingDataSource(findingID shared.ID, sourceType SourceType, sourceID *shared.ID) (*FindingDataSource, error) + func ReconstructFindingDataSource(id shared.ID, findingID shared.ID, sourceType SourceType, sourceID *shared.ID, ...) *FindingDataSource + func (fs *FindingDataSource) Confidence() int + func (fs *FindingDataSource) ContributedData() map[string]any + func (fs *FindingDataSource) CreatedAt() time.Time + func (fs *FindingDataSource) DaysSinceLastSeen() int + func (fs *FindingDataSource) FindingID() shared.ID + func (fs *FindingDataSource) FirstSeenAt() time.Time + func (fs *FindingDataSource) ID() shared.ID + func (fs *FindingDataSource) IsPrimary() bool + func (fs *FindingDataSource) IsStale(threshold time.Duration) bool + func (fs *FindingDataSource) LastSeenAt() time.Time + func (fs *FindingDataSource) MergeContributedData(data map[string]any) + func (fs *FindingDataSource) RecordSighting() + func (fs *FindingDataSource) RecordSightingWithData(data map[string]any, sourceRef, scanID string) + func (fs *FindingDataSource) ScanID() string + func (fs *FindingDataSource) SeenCount() int + func (fs *FindingDataSource) SetConfidence(confidence int) + func (fs *FindingDataSource) SetContributedData(data map[string]any) + func (fs *FindingDataSource) SetPrimary(primary bool) + func (fs *FindingDataSource) SetScanID(scanID string) + func (fs *FindingDataSource) SetSourceRef(ref string) + func (fs *FindingDataSource) SourceID() *shared.ID + func (fs *FindingDataSource) SourceRef() string + func (fs *FindingDataSource) SourceType() SourceType + func (fs *FindingDataSource) ToSummary(sourceName string) FindingDataSourceSummary + func (fs *FindingDataSource) UpdatedAt() time.Time + type FindingDataSourceFilter struct + FindingID shared.ID + IsPrimary *bool + SourceID shared.ID + SourceType SourceType + type FindingDataSourceListOptions struct + Page int + PerPage int + SortBy string + SortOrder string + type FindingDataSourceListResult struct + Data []*FindingDataSource + Page int + PerPage int + Total int64 + TotalPages int + type FindingDataSourceRepository interface + CountBySource func(ctx context.Context, sourceID shared.ID) (int64, error) + Create func(ctx context.Context, fs *FindingDataSource) error + Delete func(ctx context.Context, id shared.ID) error + DeleteByFinding func(ctx context.Context, findingID shared.ID) error + DeleteBySource func(ctx context.Context, sourceID shared.ID) error + GetByFinding func(ctx context.Context, findingID shared.ID) ([]*FindingDataSource, error) + GetByFindingAndSource func(ctx context.Context, findingID shared.ID, sourceType SourceType, ...) (*FindingDataSource, error) + GetByID func(ctx context.Context, id shared.ID) (*FindingDataSource, error) + GetPrimaryByFinding func(ctx context.Context, findingID shared.ID) (*FindingDataSource, error) + List func(ctx context.Context, filter FindingDataSourceFilter, ...) (FindingDataSourceListResult, error) + SetPrimary func(ctx context.Context, findingDataSourceID shared.ID) error + Update func(ctx context.Context, fs *FindingDataSource) error + Upsert func(ctx context.Context, fs *FindingDataSource) error + type FindingDataSourceSummary struct + Confidence int + ContributedData map[string]any + FirstSeenAt time.Time + IsPrimary bool + LastSeenAt time.Time + ScanID string + SeenCount int + SourceID *string + SourceName string + SourceRef string + SourceType SourceType + type ListOptions struct + Page int + PerPage int + SortBy string + SortOrder string + type ListResult struct + Data []*DataSource + Page int + PerPage int + Total int64 + TotalPages int + type Repository interface + Count func(ctx context.Context, filter Filter) (int64, error) + Create func(ctx context.Context, ds *DataSource) error + Delete func(ctx context.Context, id shared.ID) error + GetActiveByTenant func(ctx context.Context, tenantID shared.ID) ([]*DataSource, error) + GetByAPIKeyPrefix func(ctx context.Context, prefix string) (*DataSource, error) + GetByID func(ctx context.Context, id shared.ID) (*DataSource, error) + GetByTenantAndName func(ctx context.Context, tenantID shared.ID, name string) (*DataSource, error) + List func(ctx context.Context, filter Filter, opts ListOptions) (ListResult, error) + MarkStaleAsInactive func(ctx context.Context, tenantID shared.ID, staleThresholdMinutes int) (int, error) + Update func(ctx context.Context, ds *DataSource) error + type SourceStatus string + const SourceStatusActive + const SourceStatusDisabled + const SourceStatusError + const SourceStatusInactive + const SourceStatusPending + func AllSourceStatuses() []SourceStatus + func ParseSourceStatus(s string) (SourceStatus, error) + func (s SourceStatus) CanReceiveData() bool + func (s SourceStatus) IsOperational() bool + func (s SourceStatus) IsValid() bool + func (s SourceStatus) String() string + type SourceType string + const SourceTypeCollector + const SourceTypeIntegration + const SourceTypeManual + const SourceTypeScanner + func AllSourceTypes() []SourceType + func ParseSourceType(s string) (SourceType, error) + func (t SourceType) IsPull() bool + func (t SourceType) IsPush() bool + func (t SourceType) IsValid() bool + func (t SourceType) RequiresAPIKey() bool + func (t SourceType) String() string