Catalog/dev-package-maintenance

Developer

Registry-agnostic package maintenance/abandonment scorer (pure) API

Pure, registry-agnostic maintenance scorer: given last-publish age (days, or an ISO lastPublished date), optional release count, and an optional deprecation flag, returns a verdict (maintained/aging/at-risk/abandoned/deprecated/unknown), a 0-100 health score, and the contributing reasons + band definitions. Free to run, no upstream. Distinct from dev-abandoned (npm-only, joins GitHub commits) — this works for ANY ecosystem from publish metadata alone. Answers 'given this package's last-release date, is it likely abandoned?'.

Price$0.01per request
MethodPOST
Route/v1/dev/package-maintenance
StatusLive
MIME typeapplication/json
Rate limit60/minute
Cache3600s public
devmaintenanceabandonmentpackagesupply-chainscoreregistry-agnosticpure
API URLhttps://x402.hexl.dev/v1/dev/package-maintenance
Integration docs
Example request
{
  "lastPublished": "2026-01-01T00:00:00Z"
}
Example response
{
  "verdict": "maintained",
  "score": 90,
  "daysSinceRelease": 155,
  "reasons": [
    "Released 155d ago (< 6 months) — actively published."
  ],
  "bands": {
    "maintained": "< 180 days since last release",
    "aging": "180-365 days",
    "at-risk": "365-730 days",
    "abandoned": ">= 730 days",
    "deprecated": "registry-flagged deprecated/yanked (overrides age)"
  },
  "note": "Registry-agnostic verdict from last-publish age + release history. For npm specifically, dev-abandoned additionally joins GitHub commit activity."
}
Input schema
{
  "type": "object",
  "properties": {
    "daysSinceRelease": {
      "type": "number",
      "description": "Days since the last release (provide this or lastPublished)."
    },
    "lastPublished": {
      "type": "string",
      "description": "ISO date/timestamp of the last release."
    },
    "releaseCount": {
      "type": "number",
      "description": "Number of published releases (optional, adds credibility weighting)."
    },
    "deprecated": {
      "type": "boolean",
      "description": "Whether the registry flags it deprecated/yanked."
    }
  }
}
Output schema
{
  "type": "object",
  "additionalProperties": true
}