{"adoption": {"forks": 446, "observed_at": "2026-08-28T04:06:17.616237+00:00", "stars": 2136}, "canonical_url": "https://ross.abutalabs.com/products/webapiclient", "card": {"archived": false, "artifact_type": "library", "description": "A REST API library with better functionality, performance, and scalability than refit", "domain": ["web-development", "apis", "developer-tools", "backend"], "enriched": true, "function": ["http-client", "serialization", "auth", "middleware"], "health_score": 96, "homepage": "https://webapiclient.github.io/", "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["dotnetcore/WebApiClient"], "name": "dotnetcore/WebApiClient", "platform": ["dotnet", "cross-platform"], "pushed_at": "2026-07-17T00:52:43+00:00", "repo": "dotnetcore/WebApiClient", "stars": 2136, "tags": ["rest-client", "declarative-http", "refit-alternative", "openapi-codegen", "aot", "oauth2", "retrofit-style", "code-generation"], "topics": ["webapi", "retrofit", "client", "restful", "httpclient", "webclient", "json", "xml", "form", "json-rpc-client", "oauth2-client", "openapi", "swagger", "refit"], "urls": [], "use_cases": ["generate typed HTTP clients from OpenAPI/Swagger documents", "declare REST API clients as C# interfaces instead of writing HttpClient boilerplate", "call REST APIs with JSON, XML, or form serialization in .NET", "handle OAuth2 token management for API authentication", "add retries, logging, and caching to HTTP requests via interceptors", "publish trimmed/AOT .NET apps that consume web APIs"], "what_it_is": "WebApiClient is a declarative REST API client library for .NET where developers define HTTP clients by declaring C# interfaces. It supports JSON, XML, and form serialization, AOP features like interceptors, retries, and caching, OAuth2 extensions, and OpenAPI-to-code generation, claiming 2x better performance than Refit.", "when_to_avoid": ["you're not on the .NET platform", "you prefer Refit's ecosystem or community size", "you need a low-level HTTP client with full manual control", "you need a server-side framework rather than a client library"], "when_to_choose": ["you're on .NET and want a fast declarative HTTP client library", "you want to auto-generate client code from OpenAPI documents", "you need built-in OAuth2/token management extensions", "you need AOT/trimming support for your API clients"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/webapiclient", "repo": "dotnetcore/WebApiClient", "role": "main", "score": 82}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "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:17.616237+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.616237+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:51:52.507916+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e37edec48fc68b6b7c4bac054b89bc06355b78f32a18fd7900468596caa14800", "fetched_at": "2026-08-28T04:06:17.616237+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dotnetcore/WebApiClient"}, {"content_hash": "d8825407c8d13dc667760b6220c8c040480dad743945cc9051c421ca6c7fed74", "fetched_at": "2026-08-29T10:31:48.089871+00:00", "kind": "homepage", "missing": false, "url": "https://webapiclient.github.io/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 92, "longevity": 100, "rhythm": 60}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3445, "days_push": 48, "days_rel": 56, "gap_med": null, "n_releases_24m": 1}, "score": 82, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}