Report
A package report is the feed’s record of one malicious package. It carries the verdict, the affected versions, the indicators, and any campaign the package belongs to. A group of related packages is a campaign, not a report. Each report has a permanentreportId. SafeDep updates the same report as it learns more (a verdict upgrade, new indicators, or a withdrawal) and never deletes it, so its reportId tracks one threat over time.
Verdict and confidence
The verdict is what SafeDep believes about the package. The confidence is who decided it.
A suspicious report can become malicious later. This is a change, so the report comes back on the change feed.
Withdrawn
SafeDep can retract a report, for example a false positive or a report dropped after review. The fieldwithdrawn: true marks it. SafeDep does not delete a withdrawn report, so you see the retraction and can remove it on your side too.
Indicator of compromise
An indicator (IOC) is a typed observable on a report or a campaign. For example, a command-and-control domain, a file hash, a maintainer handle, or a wallet address. Its identity is the pair(type, value). See the schema reference for the IndicatorType values.
Today, indicators travel inside each report (iocs) and each campaign. A direct pull of indicators is planned but not available yet.
Campaign
A campaign is a named group of related reports that share an actor, a technique, or one coordinated intent. SafeDep researchers curate campaigns, each with its own indicators, counts, and actor attribution. The feed serves only active campaigns. Once a campaign is archived or withdrawn, it drops out of the feed.Change feed and cursor
Reports and campaigns come back when they change. A change cursor orders them. This is how you keep a local mirror in sync.- A report comes back when its verdict, indicators, or campaign links change. Its cursor is
(updatedAt, reportId).updatedAtmoves only on a real change, never on a no-op refresh. - A campaign comes back when it changes, for example when a member report is added or removed. Its cursor is
(lastActivityAt, campaignId).
reportId. See Pagination & sync.
