{"adoption": {"forks": 472, "observed_at": "2026-08-28T04:03:33.134775+00:00", "stars": 1091}, "canonical_url": "https://ross.abutalabs.com/products/spring-hateoas", "card": {"archived": false, "artifact_type": "library", "description": "Spring HATEOAS - Library to support implementing representations for hyper-text driven REST web services.", "domain": ["web-development", "backend", "apis"], "enriched": true, "function": ["api-framework", "middleware", "serialization", "http-server"], "health_score": 99, "homepage": "https://spring.io/projects/spring-hateoas", "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["spring-projects/spring-hateoas"], "name": "spring-projects/spring-hateoas", "platform": ["jvm"], "pushed_at": "2026-08-21T12:18:35+00:00", "repo": "spring-projects/spring-hateoas", "stars": 1091, "tags": ["hateoas", "hypermedia", "rest", "hal", "spring-boot", "link-builder", "spring"], "topics": [], "urls": [], "use_cases": ["add hypermedia links to spring rest api responses", "build hateoas rest services in java", "serve hal-formatted json from spring mvc controllers", "create links pointing to spring mvc controller methods", "support multiple hypermedia media types like hal and collection+json", "assemble resource representations with representation model assemblers"], "what_it_is": "Spring HATEOAS is a Java library that helps create REST representations following the HATEOAS principle, addressing link creation and representation assembly for Spring MVC and WebFlux applications. It provides model classes for links and resources, a link builder API pointing to controller methods, and support for hypermedia formats like HAL, HAL-FORMS, Collection+JSON, and UBER.", "when_to_avoid": ["you're building plain REST APIs without hypermedia links", "you're not using the Spring ecosystem", "you need a non-JVM language", "you prefer OpenAPI/Swagger-first API design without HATEOAS"], "when_to_choose": ["you're building REST APIs with Spring MVC or WebFlux and want HATEOAS/hypermedia support", "you need HAL, HAL-FORMS, or other hypermedia media type rendering", "you want type-safe link building from controller methods", "you're on the Spring stack and want Spring Boot auto-configuration for hypermedia"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/spring-hateoas", "repo": "spring-projects/spring-hateoas", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "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:03:33.134775+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.134775+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:49:10.160107+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ca6efe137ab93ea92fa7635b69322f5a97b1d4832304d335ff4e22c9707ec01", "fetched_at": "2026-08-29T12:51:20.514342+00:00", "kind": "homepage", "missing": false, "url": "https://spring.io/projects/spring-hateoas"}, {"content_hash": "fc64dd950363a4f7d15398407bbba748c61041f08a9468a0b9922bb957997ce1", "fetched_at": "2026-08-29T12:51:20.525635+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/quickstart"}, {"content_hash": "1e2a101b77d3dc53488e4859171d8820d9cb2d07dfc1cac2f60f7007c84e227d", "fetched_at": "2026-08-29T12:51:20.529772+00:00", "kind": "site_page", "missing": false, "url": "https://spring.io/projects/spring-restdocs"}, {"content_hash": "cd4e4abb7efca31d474707c6bc4f59448d67c648edbc382f8c2aa43412e1d4ac", "fetched_at": "2026-08-29T12:51:20.531690+00:00", "kind": "site_page", "missing": false, "url": "https://docs.spring.io/spring-hateoas/docs/current/reference/html"}, {"content_hash": "85ac7d6d51142e18decf96fb4e963203e50ac822f8bcaddb6371f7c81f2e55b6", "fetched_at": "2026-08-29T12:51:20.523379+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io"}, {"content_hash": "3251cc8760b62399f4b0f57b7b1f16c5cddaee78a88466eb8096cbf4a50122ef", "fetched_at": "2026-08-29T12:51:20.527757+00:00", "kind": "site_page", "missing": false, "url": "https://enterprise.spring.io/lts-releases"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 98}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_readme"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5231, "days_push": 12, "days_rel": 12, "gap_med": 26, "n_releases_24m": 18}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}