Filtered paginated package list
Changed onReturns a paginated, filtered, sorted list of critical packages with their stewardship state and risk signals.
Used by three tabs:
-
Queue tab — full table with all filters
-
Triage Board — one request per status column, fired in parallel (?status=X&pageSize=50)
-
Summary panel — click-through navigates to Queue with pre-filled filter
The response always includes statusCounts — per-status counts computed without the active status filter, used to drive the tab bar badge numbers.
Request
- Base URLhttps://cm.lfx.dev/api/v1
- URLhttps://cm.lfx.dev/api/v1/ossprey/packages
- AuthHTTP bearer
Query parameters
Case-insensitive substring search on package name.
Filter by package ecosystem. Not validated server-side — any ecosystem stored in the DB is accepted.
Filter by stewardship status. unassigned includes packages with no stewardship row (s.id IS NULL).
Tinybird band when enriched (excellent ≥85, healthy 70–84, fair 50–69, concerning 30–49, critical <30). Falls back to scorecard thresholds: null or < 3.0 → critical · < 5.0 → concerning · < 7.0 → fair · ≥ 7.0 → healthy.
any = at least one open advisory · high = worst rank ≥ HIGH · critical = worst rank = CRITICAL · none = zero advisories.
Return only packages with no release in ≥ 18 months.
Return only packages with status = unassigned or no stewardship row.
Return only packages with exactly one maintainer.
Response
Paginated package list.
Example response
{
"rows": [
{
"purl": "pkg:npm/lodash@4.17.21",
"name": "lodash",
"ecosystem": "npm",
"stewardshipId": "4501",
"openVulns": 3,
"maintainerCount": 2,
"criticalityScore": 0.94,
"impact": 94,
"scorecardScore": 5.2,
"health": {
"score": 52,
"label": "fair"
},
"lifecycle": "active",
"lastActivity": {
"type": "state_changed",
"content": "Moved to active stewardship"
},
"stewards": [
{
"userId": "auth0|abc123"
}
]
}
],
"total": 1842,
"page": 1,
"pageSize": 25
}Changes
- breaking
removed the required property
//from the response with the status - info
added the new enum value
archivedto thequeryrequest parameterlifecycle - info
added the new enum value
excellentto thequeryrequest parameterhealthBand - info
added the optional property
//to the response with the status - info
added the optional property
//to the response with the status - info
added the required property
//to the response with the status
- breaking
- breaking
removed the enum value
archivedfrom thequeryrequest parameterlifecycle - breaking
removed the enum value
excellentfrom thequeryrequest parameterhealthBand - breaking
removed the required property
//from the response with the status - warning
removed the optional property
//from the response with the status - warning
removed the optional property
//from the response with the status - info
added the required property
//to the response with the status
- breaking