{"adoption": {"forks": 782, "observed_at": "2026-08-28T04:06:50.446540+00:00", "stars": 2418}, "canonical_url": "https://ross.abutalabs.com/products/apimanager", "card": {"archived": false, "artifact_type": "application", "description": "CRAP - 开源API接口管理平台 | 完全开源、免费使用的API接口管理系统、BUG管理系统：API接口管理、文档管理、数据库表管理、接口调试、浏览器调试插件、导出word&pdf接口…..，采用SpringMVC + MyBatis + Lucene + Bootstrap + Angularjs + Iconfont + Guava Cache ，线上使用地址：http://api.crap.cn", "domain": ["apis", "developer-tools", "documentation", "web-development", "self-hosted"], "enriched": true, "function": ["api-framework", "documentation", "search-engine", "web-framework", "developer-tools"], "health_score": 20, "homepage": "http://api.crap.cn", "language": "Java", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["EhsanTang/ApiManager"], "name": "EhsanTang/ApiManager", "platform": ["jvm", "self-hosted", "browser"], "pushed_at": "2024-03-29T05:39:27+00:00", "repo": "EhsanTang/ApiManager", "stars": 2418, "tags": ["api-management", "api-documentation", "api-debugging", "bug-tracking", "mock", "team-collaboration", "angularjs", "springmvc", "mybatis", "lucene", "web-server"], "topics": ["apimanager", "crapapi", "api", "angularjs"], "urls": [], "use_cases": ["manage and document REST APIs for a team", "self-host an API documentation portal", "debug APIs from the browser", "mock API responses during development", "track bugs alongside API projects", "manage database table dictionaries", "export API docs to Word and PDF", "control team access with roles and permissions"], "what_it_is": "CrapApi is a free, open-source, self-hosted API management platform built with AngularJS, Bootstrap, SpringMVC, and MyBatis. It provides API interface and documentation management, bug tracking, data dictionary management, online API debugging, mocking, and full-text search via Lucene.", "when_to_avoid": ["you need a modern stack (the frontend uses legacy AngularJS)", "you only need lightweight API testing without documentation management", "you require commercial use without checking the AGPL-3.0 license restrictions", "you need active feature development; the project is largely in maintenance"], "when_to_choose": ["you need a free, self-hosted alternative to Postman/Swagger-style API doc platforms", "your team wants combined API management, documentation, and bug tracking in one tool", "you need role-based access control and enterprise-internal deployment", "you want full-text search over API documentation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/apimanager", "repo": "EhsanTang/ApiManager", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.446540+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:33:06.426263+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "014d99eaccd97e0936357981b1832654111aa0bc539f7c6b0ef0c1acbce99edf", "fetched_at": "2026-08-28T04:06:50.446540+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EhsanTang/ApiManager"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3809, "days_push": 887, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}