{"openapi":"3.1.0","info":{"title":"DepScope","description":"Package Intelligence API for AI Agents. Free, open, no auth required. 22,000+ packages across 17 ecosystems (npm, PyPI, Cargo, Go, Maven, NuGet, RubyGems, Composer, Pub, Hex, Swift, CocoaPods, CPAN, Hackage, CRAN, Conda, Homebrew). 402 vulnerabilities tracked. 20 MCP tools (remote transport available at https://mcp.depscope.dev/mcp). Three verticals on one shared infrastructure: package health, error -> fix database, and stack compatibility matrix. Save tokens, save energy, ship safer code.","version":"0.2.0"},"servers":[{"url":"https://depscope.dev","description":"Production"}],"paths":{"/api/auth/magic-link":{"post":{"tags":["auth"],"summary":"Send Magic Link","operationId":"send_magic_link_api_auth_magic_link_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/magic-link/request":{"post":{"tags":["auth"],"summary":"Send Magic Link","operationId":"send_magic_link_api_auth_magic_link_request_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/magic-link/verify":{"post":{"tags":["auth"],"summary":"Magic Link Verify Post","operationId":"magic_link_verify_post_api_auth_magic_link_verify_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/verify":{"get":{"tags":["auth"],"summary":"Verify Magic Link","description":"Legacy GET verify: sets cookie and redirects to /dashboard.","operationId":"verify_magic_link_api_auth_verify_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/me":{"get":{"tags":["auth"],"summary":"Get Me","operationId":"get_me_api_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_api_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/usage":{"get":{"tags":["auth"],"summary":"Get Usage","operationId":"get_usage_api_auth_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/keys":{"get":{"tags":["auth"],"summary":"List Api Keys","operationId":"list_api_keys_api_auth_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["auth"],"summary":"Create Api Key","operationId":"create_api_key_api_auth_keys_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/keys/{key_id}":{"delete":{"tags":["auth"],"summary":"Revoke Api Key","operationId":"revoke_api_key_api_auth_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp":{"get":{"tags":["mcp"],"summary":"Mcp Info","operationId":"mcp_info_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["mcp"],"summary":"Mcp Endpoint","operationId":"mcp_endpoint_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"tags":["discovery"],"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/check/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Check Package","description":"Full package intelligence. Returns everything: health, vulns, versions, recommendation.\n100% free. No auth. No limits on data. Use it.","operationId":"check_package_api_check__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/prompt/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Prompt","description":"LLM-optimized plain-text context for a package.\n\nToken-efficient, decision-ready, ~500 tokens. Use this from AI agents\ninstead of /api/check to save context and tokens.","operationId":"get_prompt_api_prompt__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Health","description":"Quick health score.","operationId":"get_health_api_health__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/typosquat/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Check Typosquat","description":"Is this package name a typosquat of a popular one?\n\nReturns legitimate targets the name looks close to, with Levenshtein distance\nand popularity delta.","operationId":"check_typosquat_api_typosquat__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/malicious/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Check Malicious","description":"Is this package flagged as malicious by OpenSSF / OSV?","operationId":"check_malicious_api_malicious__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scorecard/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Scorecard","description":"OSS Scorecard (OpenSSF) security posture score 0-10 for the linked GitHub repo.","operationId":"get_scorecard_api_scorecard__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/quality/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Quality","description":"Package quality signals: criticality score, download velocity, publish security (npm 2FA / PyPI Trusted Publishing).","operationId":"get_quality_api_quality__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/license/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get License","operationId":"get_license_api_license__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/provenance/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Provenance","description":"Best-effort: inspect registry metadata for provenance / signing signals.","operationId":"get_provenance_api_provenance__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/maintainers/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Maintainer Signals","description":"Maintainer trust signals: bus factor, primary author dominance, account age, ownership change.","operationId":"get_maintainer_signals_api_maintainers__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vulns/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Vulns","description":"Vulnerabilities affecting the LATEST version only, enriched with CISA KEV + EPSS.","operationId":"get_vulns_api_vulns__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/versions/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Versions","description":"Version info.","operationId":"get_versions_api_versions__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/history/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get History Endpoint","description":"Last N days of health snapshot + trend direction (up/down/stable).\n\nData is populated by the daily cron /scripts/record_health_snapshot.py.\nMax 365 days; if the package is new the series will be shorter.","operationId":"get_history_endpoint_api_history__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tree/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Tree Endpoint","description":"Transitive dependency tree with health score per sub-dep.\n\nCached aggressively (24h) — expensive to build.","operationId":"get_tree_endpoint_api_tree__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}},{"name":"max_depth","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Max Depth"}},{"name":"max_deps","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Max Deps"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/licenses/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Licenses Endpoint","description":"Aggregated licenses across the transitive dependency tree.\n\nFlags GPL/AGPL/LGPL for commercial-safety review. Reuses the same tree cache.","operationId":"get_licenses_endpoint_api_licenses__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/error":{"get":{"tags":["errors"],"summary":"Search Error","description":"Search the error database by message (full-text + exact hash).","operationId":"search_error_api_error_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/error/resolve":{"post":{"tags":["errors"],"summary":"Resolve Error","description":"POST a stack trace or error message, get solutions back.","operationId":"resolve_error_api_error_resolve_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/error/{error_hash}":{"get":{"tags":["errors"],"summary":"Get Error","description":"Get a specific error entry by its normalised-pattern SHA256.","operationId":"get_error_api_error__error_hash__get","parameters":[{"name":"error_hash","in":"path","required":true,"schema":{"type":"string","title":"Error Hash"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compat":{"get":{"tags":["compat"],"summary":"Check Compatibility","description":"Check compatibility for a stack like 'next@16,react@19,prisma@6'.","operationId":"check_compatibility_api_compat_get","parameters":[{"name":"stack","in":"query","required":true,"schema":{"type":"string","title":"Stack"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["compat"],"summary":"Check Compatibility Post","operationId":"check_compatibility_post_api_compat_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/bugs/search":{"get":{"tags":["bugs"],"summary":"Search Bugs Endpoint","description":"Search the known-bugs database by text.","operationId":"search_bugs_endpoint_api_bugs_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bugs/{ecosystem}/{package}":{"get":{"tags":["bugs"],"summary":"Get Bugs","description":"Get known bugs for a package, optionally filtered by version.","operationId":"get_bugs_api_bugs__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/breaking":{"get":{"tags":["breaking"],"summary":"List Breaking Sample","description":"Sample of most recent curated breaking changes across all packages.\n\nUsed by the /explore/breaking SSR page to show real examples\nwithout requiring the user to pick a package first.","operationId":"list_breaking_sample_api_breaking_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/breaking/{ecosystem}/{package}":{"get":{"tags":["breaking"],"summary":"Get Breaking","description":"Breaking changes for a package, optionally scoped to a version transition.\n\nExamples:\n  GET /api/breaking/npm/react\n  GET /api/breaking/npm/next?from_version=14&to_version=15\n  GET /api/breaking/pypi/pydantic?from_version=1&to_version=2","operationId":"get_breaking_api_breaking__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}},{"name":"from_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Version"}},{"name":"to_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bugs/popular":{"get":{"tags":["bugs"],"summary":"List Bugs Popular","description":"Top packages with recorded bugs, used for sitemap generation and indexing.","operationId":"list_bugs_popular_api_bugs_popular_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/error/popular":{"get":{"tags":["errors"],"summary":"List Errors Popular","description":"Top error patterns by votes, used for sitemap generation and indexing.","operationId":"list_errors_popular_api_error_popular_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compare/{ecosystem}/{packages_csv}":{"get":{"tags":["packages"],"summary":"Compare Packages","description":"Compare 2+ packages side by side.\nUsage: GET /api/compare/npm/express,fastify,hono\nReturns comparative table with health, vulns, downloads, last release.","operationId":"compare_packages_api_compare__ecosystem___packages_csv__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"packages_csv","in":"path","required":true,"schema":{"type":"string","title":"Packages Csv"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scan":{"post":{"tags":["packages"],"summary":"Scan Dependencies","description":"Audit an entire project's dependencies in one shot.\nPOST body: {\"packages\": {\"express\": \"^4.0.0\", \"lodash\": \"^4.17.0\"}, \"ecosystem\": \"npm\"}\nOr: {\"packages\": {\"fastapi\": \">=0.100.0\", \"pydantic\": \"^2.0\"}, \"ecosystem\": \"pypi\"}","operationId":"scan_dependencies_api_scan_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/stats":{"get":{"tags":["public"],"summary":"Get Stats","description":"Public usage stats.","operationId":"get_stats_api_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/ai-plugin.json":{"get":{"tags":["discovery"],"summary":"Ai Plugin","operationId":"ai_plugin__well_known_ai_plugin_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/latest/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Latest Version","description":"Just the latest version. Nothing else. Fastest possible response.\nUse this before suggesting any package install.","operationId":"get_latest_version_api_latest__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/exists/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Check Exists","description":"Does this package exist? Yes or no. Use before suggesting npm install X.","operationId":"check_exists_api_exists__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/now":{"get":{"tags":["public"],"summary":"Get Current Time","description":"Current UTC time. Agents don't know what time it is.\nAlso returns useful context: day of week, unix timestamp.","operationId":"get_current_time_api_now_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"tags":["public"],"summary":"Healthcheck","description":"Liveness + readiness probe. External uptime monitors hit this every 5m.\n\nReturns 200 with subsystem statuses when everything is up. If Postgres or\nRedis fail, individual fields flip to the error string but we still return\n200 (monitor will alert on the overall \"status\" field) — bumping to 500\nwould cause PM2 to restart us, which masks the real problem.","operationId":"healthcheck_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/search/{ecosystem}":{"get":{"tags":["packages"],"summary":"Search Packages","description":"Search packages by keyword. When user says 'I need an HTTP client for Python',\nthe agent can search instead of hallucinating package names.","operationId":"search_packages_api_search__ecosystem__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alternatives/{ecosystem}/{package}":{"get":{"tags":["packages"],"summary":"Get Alternatives","description":"What to use instead of a deprecated/unhealthy package.\nAI agents need this when they suggest something deprecated.","operationId":"get_alternatives_api_alternatives__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/track":{"post":{"tags":["public"],"summary":"Track Pageview","description":"Lightweight page view tracking. No cookies, no personal data.","operationId":"track_pageview_api_track_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/badge/{ecosystem}/{package}":{"get":{"tags":["badges"],"summary":"Package Badge","description":"Generate SVG badge for README embedding. Like shields.io but for package health.","operationId":"package_badge_badge__ecosystem___package__get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/badge/{ecosystem}/{package}/score":{"get":{"tags":["badges"],"summary":"Package Badge Score Only","description":"Minimal badge with just the score.","operationId":"package_badge_score_only_badge__ecosystem___package__score_get","parameters":[{"name":"ecosystem","in":"path","required":true,"schema":{"type":"string","title":"Ecosystem"}},{"name":"package","in":"path","required":true,"schema":{"type":"string","title":"Package"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/savings":{"get":{"tags":["public"],"summary":"Get Savings","description":"Real-time token and energy savings calculator based on actual API calls.","operationId":"get_savings_api_savings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/translate":{"get":{"tags":["public"],"summary":"Translate Text","description":"Free translation via MyMemory API.","operationId":"translate_text_api_translate_get","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","title":"Text"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","default":"it","title":"To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/trending":{"get":{"tags":["discover"],"summary":"Public Trending","description":"Public endpoint: top packages getting queried by AI agents this week.","operationId":"public_trending_api_trending_get","parameters":[{"name":"ecosystem","in":"query","required":false,"schema":{"type":"string","title":"Ecosystem"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}