The feed serves only active campaigns. Once SafeDep archives or withdraws a campaign, it drops out of the feed.
ListCampaigns to discover. Use GetCampaign for the details. Use GetCampaignPackageReports for the paged members.
ListCampaigns
A paginated list of active campaigns. Each one has a member count (packageCount), an indicator count (iocCount), and its own indicators.
Request: pagination, and optional filters.since (a strict greater-than on lastActivityAt, for incremental pull). Response: campaigns (an array of Campaign) and pagination.
GetCampaign
Fetch one active campaign’s details.packageCount is the member count. The member reports come from GetCampaignPackageReports.
Request: campaignId (string). Response: campaign (a Campaign). A hidden or unknown id returns not_found.
GetCampaignPackageReports
The paginated member reports of one campaign. They use the same cursor and shape asListPackageReports.
Request: campaignId (string) and pagination. Response: packageReports (an array of PackageReport) and pagination. A hidden or unknown campaign returns not_found rather than an empty page.

