{"id":630,"name":null,"description":"An API focused facade that sits on top of an object model.","url":"https://github.com/ruby-grape/grape-entity","last_synced_at":"2026-04-30T04:03:22.957Z","repository":{"id":6344277,"uuid":"7580484","full_name":"ruby-grape/grape-entity","owner":"ruby-grape","description":"An API focused facade that sits on top of an object model.","archived":false,"fork":false,"pushed_at":"2026-04-13T12:43:34.000Z","size":726,"stargazers_count":730,"open_issues_count":91,"forks_count":153,"subscribers_count":12,"default_branch":"master","last_synced_at":"2026-04-14T22:13:09.629Z","etag":null,"topics":["api","entity","grape","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruby-grape.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-01-12T21:04:19.000Z","updated_at":"2026-04-13T12:43:38.000Z","dependencies_parsed_at":"2023-01-13T13:57:02.701Z","dependency_job_id":"474fb582-bbce-469c-8e89-f29157b906e8","html_url":"https://github.com/ruby-grape/grape-entity","commit_stats":{"total_commits":255,"total_committers":89,"mean_commits":2.865168539325843,"dds":0.7960784313725491,"last_synced_commit":"6267db4e77e8036920d61489abbc559c65fbc9aa"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/ruby-grape/grape-entity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/sbom","scorecard":{"id":788863,"data":{"date":"2025-08-11","repo":{"name":"github.com/ruby-grape/grape-entity","commit":"4d71e0e883100cea394054fec067f3c84491cb74"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":5,"reason":"Found 15/29 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:12","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":3,"reason":"3 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T06:53:04.642Z","repository_id":6344277,"created_at":"2025-08-23T06:53:04.642Z","updated_at":"2025-08-23T06:53:04.642Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31897993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T17:33:00.867Z","status":"ssl_error","status_checked_at":"2026-04-16T17:32:57.401Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"ruby-grape","name":"Ruby Grape","uuid":"13624553","kind":"organization","description":"An opinionated micro-framework for creating REST-like APIs in Ruby.","email":"ruby-grape@googlegroups.com","website":"http://www.ruby-grape.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/13624553?v=4","repositories_count":17,"last_synced_at":"2024-03-25T21:19:03.302Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ruby-grape","funding_links":[],"total_stars":12808,"followers":18,"following":0,"created_at":"2022-11-02T16:44:55.311Z","updated_at":"2024-03-25T21:19:03.671Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape/repositories"},"packages":[{"id":11632733,"name":"github.com/ruby-grape/grape-entity","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/ruby-grape/grape-entity","keywords_array":[],"namespace":null,"versions_count":28,"first_release_published_at":"2013-01-13T04:42:07.000Z","latest_release_published_at":"2024-04-10T13:57:33.000Z","latest_release_number":"v1.0.1","last_synced_at":"2026-04-09T18:02:12.548Z","created_at":"2025-05-13T08:51:31.068Z","updated_at":"2026-04-09T18:02:12.548Z","registry_url":"https://pkg.go.dev/github.com/ruby-grape/grape-entity","install_command":"go get github.com/ruby-grape/grape-entity","documentation_url":"https://pkg.go.dev/github.com/ruby-grape/grape-entity#section-documentation","metadata":{},"repo_metadata":{"id":6344277,"uuid":"7580484","full_name":"ruby-grape/grape-entity","owner":"ruby-grape","description":"An API focused facade that sits on top of an object model.","archived":false,"fork":false,"pushed_at":"2025-11-24T13:38:58.000Z","size":705,"stargazers_count":731,"open_issues_count":90,"forks_count":151,"subscribers_count":13,"default_branch":"master","last_synced_at":"2026-02-14T23:16:52.320Z","etag":null,"topics":["api","entity","grape","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruby-grape.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-01-12T21:04:19.000Z","updated_at":"2026-02-14T04:21:37.000Z","dependencies_parsed_at":"2023-01-13T13:57:02.701Z","dependency_job_id":"474fb582-bbce-469c-8e89-f29157b906e8","html_url":"https://github.com/ruby-grape/grape-entity","commit_stats":{"total_commits":255,"total_committers":89,"mean_commits":2.865168539325843,"dds":0.7960784313725491,"last_synced_commit":"6267db4e77e8036920d61489abbc559c65fbc9aa"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/ruby-grape/grape-entity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/sbom","scorecard":{"id":788863,"data":{"date":"2025-08-11","repo":{"name":"github.com/ruby-grape/grape-entity","commit":"4d71e0e883100cea394054fec067f3c84491cb74"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":5,"reason":"Found 15/29 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:12","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":3,"reason":"3 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T06:53:04.642Z","repository_id":6344277,"created_at":"2025-08-23T06:53:04.642Z","updated_at":"2025-08-23T06:53:04.642Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29469910,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T04:35:06.950Z","status":"ssl_error","status_checked_at":"2026-02-15T04:33:41.357Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"ruby-grape","name":"Ruby Grape","uuid":"13624553","kind":"organization","description":"An opinionated micro-framework for creating REST-like APIs in Ruby.","email":"ruby-grape@googlegroups.com","website":"http://www.ruby-grape.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/13624553?v=4","repositories_count":17,"last_synced_at":"2024-03-25T21:19:03.302Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ruby-grape","funding_links":[],"total_stars":12808,"followers":18,"following":0,"created_at":"2022-11-02T16:44:55.311Z","updated_at":"2024-03-25T21:19:03.671Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape/repositories"},"tags":[{"name":"v1.0.1","sha":"e71e3cd5aa156b9ef0efcadf9641ad895e60f564","kind":"tag","published_at":"2024-04-10T13:58:25.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v1.0.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"6267db4e77e8036920d61489abbc559c65fbc9aa","kind":"tag","published_at":"2023-02-16T19:03:20.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v1.0.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.0/manifests"},{"name":"v0.10.2","sha":"6eac458ddd69117ad979aaab7d1798bb1ba5a349","kind":"tag","published_at":"2022-07-29T06:29:10.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.10.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.10.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.10.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.2/manifests"},{"name":"v0.10.1","sha":"aac8e778f570d02d199320922b18817f35db1009","kind":"tag","published_at":"2021-10-22T06:21:44.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.10.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.10.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.1/manifests"},{"name":"v0.10.0","sha":"061975f0b620c4ecf5709391a8b6259949574243","kind":"tag","published_at":"2021-09-15T08:30:33.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.10.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.0/manifests"},{"name":"v0.9.0","sha":"5238a3d33fd1e5d9cdb18b4a9d9240c40dfbc6ea","kind":"tag","published_at":"2021-03-20T00:17:27.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.9.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.9.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.9.0/manifests"},{"name":"v0.8.2","sha":"bda9756f62867040a0c6d05c5792f9f6d6992f14","kind":"tag","published_at":"2020-11-08T15:45:36.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.8.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.8.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.2/manifests"},{"name":"v0.8.1","sha":"0a8cbb9158fb1c5dafdbcb0371151f139375f593","kind":"tag","published_at":"2020-07-15T18:19:51.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.8.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.8.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.1/manifests"},{"name":"v0.8.0","sha":"71789f68cd5fbed88d67501c67e70923079d0899","kind":"tag","published_at":"2020-02-18T15:55:00.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.8.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.0/manifests"},{"name":"v0.7.1","sha":"1bfa7f34d6e7a3069590caf276556b0ca626fc25","kind":"tag","published_at":"2018-01-30T14:19:34.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.7.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.7.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.1/manifests"},{"name":"v0.7.0","sha":"0890ceb9f9aefb832a5ec918150112f5e664fc12","kind":"tag","published_at":"2018-01-25T16:01:56.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.7.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.0/manifests"},{"name":"v0.6.1","sha":"10923994d8d15c03bdba89df4973e057eaaa0dd5","kind":"tag","published_at":"2017-01-09T22:41:07.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.6.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.1/manifests"},{"name":"v0.6.0","sha":"be0c9773615ba0ae0384d5685b2105e783311121","kind":"tag","published_at":"2016-11-21T03:13:43.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.6.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.0/manifests"},{"name":"v0.5.2","sha":"305dcc944bb009691531bb399ace2e4dd32c07cf","kind":"tag","published_at":"2016-11-14T17:22:08.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.5.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.2/manifests"},{"name":"v0.5.1","sha":"364b68425d6b228b815799487ef6b00e01caab8c","kind":"tag","published_at":"2016-04-04T11:55:24.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.5.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"44f958e90059d7dfd5700d57ceef7eb47ee202d1","kind":"tag","published_at":"2015-12-07T19:48:50.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.5.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.0/manifests"},{"name":"v0.4.8","sha":"6e0bc0550ad9f2980fce15add01386f6054f20bd","kind":"tag","published_at":"2015-08-10T13:24:28.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.8","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.8/manifests"},{"name":"v0.4.7","sha":"7235364952d638488f7997be32bf227139a7ba08","kind":"tag","published_at":"2015-08-03T17:22:14.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.7","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.7/manifests"},{"name":"v0.4.6","sha":"8af8074dba02045fcd79da4ded77d5b258e94e89","kind":"tag","published_at":"2015-08-03T08:46:45.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.6","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.6/manifests"},{"name":"v0.4.5","sha":"50e2a4b3ffedaedf75aca9f348a80e876eda2c63","kind":"tag","published_at":"2015-03-10T14:14:13.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.5","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.5/manifests"},{"name":"v0.4.4","sha":"980933a9cb6e9fc3739f650998a404217a98200a","kind":"tag","published_at":"2014-08-17T11:14:52.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.4","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.4/manifests"},{"name":"v0.4.3","sha":"d6f98a9417a50a46398499872468cde736a5de23","kind":"tag","published_at":"2014-06-12T21:15:15.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.3","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.3/manifests"},{"name":"v0.4.2","sha":"c09ca63a2dc74d8e06450770bb61ce4fe2562720","kind":"tag","published_at":"2014-04-03T11:04:24.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"b72937e398f0aca6ddf249fa3b910429b457130a","kind":"tag","published_at":"2014-02-13T12:16:18.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"28a026b3666140ad9fbb5682220e55beb6ab286a","kind":"tag","published_at":"2014-01-27T23:26:42.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"9d71833a67e0686928afe8b9284276a027bcd624","kind":"tag","published_at":"2013-03-29T07:15:57.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.3.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"c91bff8d39ad700b5b6d678dda9a8d4904b94c4d","kind":"tag","published_at":"2013-01-13T15:59:03.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.2.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"59f46b1651251528be7e7f66760c28e176e8786e","kind":"tag","published_at":"2013-01-13T04:42:36.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.1.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-02-15T05:03:01.493Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.872169551146985,"dependent_packages_count":5.502884480318988,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.687527015732987},"purl":"pkg:golang/github.com/ruby-grape/grape-entity","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/ruby-grape/grape-entity","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/ruby-grape/grape-entity","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/ruby-grape/grape-entity/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-11-24T23:30:38.564Z","issues_count":57,"pull_requests_count":71,"avg_time_to_close_issue":46238606.10526316,"avg_time_to_close_pull_request":16404112.606060605,"issues_closed_count":19,"pull_requests_closed_count":66,"pull_request_authors_count":34,"issue_authors_count":53,"avg_comments_per_issue":2.1578947368421053,"avg_comments_per_pull_request":2.676056338028169,"merged_pull_requests_count":57,"bot_issues_count":0,"bot_pull_requests_count":4,"past_year_issues_count":1,"past_year_pull_requests_count":8,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":670724.5714285715,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":7,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.125,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":6,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/issues","maintainers":[{"login":"LeFnord","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LeFnord"},{"login":"numbata","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/numbata"},{"login":"marshall-lee","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/marshall-lee"},{"login":"dnesteryuk","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dnesteryuk"},{"login":"drn","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/drn"}],"active_maintainers":[{"login":"numbata","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/numbata"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fruby-grape%2Fgrape-entity/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fruby-grape%2Fgrape-entity/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fruby-grape%2Fgrape-entity/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fruby-grape%2Fgrape-entity/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fruby-grape%2Fgrape-entity/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2094652,"maintainers_count":0,"namespaces_count":780333,"keywords_count":112764,"github":"golang","metadata":{"funded_packages_count":53458},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-09T05:03:48.640Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":219022,"name":"grape-entity","ecosystem":"rubygems","description":"Extracted from Grape, A Ruby framework for rapid API development with great conventions.","homepage":"https://github.com/ruby-grape/grape-entity","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ruby-grape/grape-entity","keywords_array":[],"namespace":null,"versions_count":28,"first_release_published_at":"2013-01-13T04:49:58.618Z","latest_release_published_at":"2024-04-10T13:58:48.882Z","latest_release_number":"1.0.1","last_synced_at":"2026-04-11T01:05:12.212Z","created_at":"2022-04-06T00:06:25.015Z","updated_at":"2026-04-11T01:05:12.212Z","registry_url":"https://rubygems.org/gems/grape-entity","install_command":"gem install grape-entity -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/grape-entity/","metadata":{"funding":null},"repo_metadata":{"id":6344277,"uuid":"7580484","full_name":"ruby-grape/grape-entity","owner":"ruby-grape","description":"An API focused facade that sits on top of an object model.","archived":false,"fork":false,"pushed_at":"2024-05-10T10:45:49.000Z","size":679,"stargazers_count":720,"open_issues_count":94,"forks_count":153,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-10-25T04:47:58.692Z","etag":null,"topics":["api","entity","grape","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruby-grape.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-01-12T21:04:19.000Z","updated_at":"2024-10-19T22:45:39.000Z","dependencies_parsed_at":"2023-01-13T13:57:02.701Z","dependency_job_id":"474fb582-bbce-469c-8e89-f29157b906e8","html_url":"https://github.com/ruby-grape/grape-entity","commit_stats":{"total_commits":255,"total_committers":89,"mean_commits":2.865168539325843,"dds":0.7960784313725491,"last_synced_commit":"6267db4e77e8036920d61489abbc559c65fbc9aa"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221435613,"owners_count":16820697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"ruby-grape","name":"Ruby Grape","uuid":"13624553","kind":"organization","description":"An opinionated micro-framework for creating REST-like APIs in Ruby.","email":"ruby-grape@googlegroups.com","website":"http://www.ruby-grape.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/13624553?v=4","repositories_count":17,"last_synced_at":"2024-03-25T21:19:03.302Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ruby-grape","funding_links":[],"total_stars":12808,"followers":18,"following":0,"created_at":"2022-11-02T16:44:55.311Z","updated_at":"2024-03-25T21:19:03.671Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape/repositories"},"tags":[{"name":"v1.0.1","sha":"e71e3cd5aa156b9ef0efcadf9641ad895e60f564","kind":"tag","published_at":"2024-04-10T13:58:25.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v1.0.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"6267db4e77e8036920d61489abbc559c65fbc9aa","kind":"tag","published_at":"2023-02-16T19:03:20.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v1.0.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.0/manifests"},{"name":"v0.10.2","sha":"6eac458ddd69117ad979aaab7d1798bb1ba5a349","kind":"tag","published_at":"2022-07-29T06:29:10.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.10.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.10.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.2/manifests"},{"name":"v0.10.1","sha":"aac8e778f570d02d199320922b18817f35db1009","kind":"tag","published_at":"2021-10-22T06:21:44.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.10.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.1/manifests"},{"name":"v0.10.0","sha":"061975f0b620c4ecf5709391a8b6259949574243","kind":"tag","published_at":"2021-09-15T08:30:33.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.10.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.0/manifests"},{"name":"v0.9.0","sha":"5238a3d33fd1e5d9cdb18b4a9d9240c40dfbc6ea","kind":"tag","published_at":"2021-03-20T00:17:27.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.9.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.9.0/manifests"},{"name":"v0.8.2","sha":"bda9756f62867040a0c6d05c5792f9f6d6992f14","kind":"tag","published_at":"2020-11-08T15:45:36.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.8.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.2/manifests"},{"name":"v0.8.1","sha":"0a8cbb9158fb1c5dafdbcb0371151f139375f593","kind":"tag","published_at":"2020-07-15T18:19:51.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.8.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.1/manifests"},{"name":"v0.8.0","sha":"71789f68cd5fbed88d67501c67e70923079d0899","kind":"tag","published_at":"2020-02-18T15:55:00.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.8.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.0/manifests"},{"name":"v0.7.1","sha":"1bfa7f34d6e7a3069590caf276556b0ca626fc25","kind":"tag","published_at":"2018-01-30T14:19:34.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.7.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.1/manifests"},{"name":"v0.7.0","sha":"0890ceb9f9aefb832a5ec918150112f5e664fc12","kind":"tag","published_at":"2018-01-25T16:01:56.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.7.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.0/manifests"},{"name":"v0.6.1","sha":"10923994d8d15c03bdba89df4973e057eaaa0dd5","kind":"tag","published_at":"2017-01-09T22:41:07.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.6.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.1/manifests"},{"name":"v0.6.0","sha":"be0c9773615ba0ae0384d5685b2105e783311121","kind":"tag","published_at":"2016-11-21T03:13:43.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.6.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.0/manifests"},{"name":"v0.5.2","sha":"305dcc944bb009691531bb399ace2e4dd32c07cf","kind":"tag","published_at":"2016-11-14T17:22:08.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.5.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.2/manifests"},{"name":"v0.5.1","sha":"364b68425d6b228b815799487ef6b00e01caab8c","kind":"tag","published_at":"2016-04-04T11:55:24.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.5.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"44f958e90059d7dfd5700d57ceef7eb47ee202d1","kind":"tag","published_at":"2015-12-07T19:48:50.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.5.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.0/manifests"},{"name":"v0.4.8","sha":"6e0bc0550ad9f2980fce15add01386f6054f20bd","kind":"tag","published_at":"2015-08-10T13:24:28.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.8","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.8/manifests"},{"name":"v0.4.7","sha":"7235364952d638488f7997be32bf227139a7ba08","kind":"tag","published_at":"2015-08-03T17:22:14.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.7","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.7/manifests"},{"name":"v0.4.6","sha":"8af8074dba02045fcd79da4ded77d5b258e94e89","kind":"tag","published_at":"2015-08-03T08:46:45.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.6","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.6/manifests"},{"name":"v0.4.5","sha":"50e2a4b3ffedaedf75aca9f348a80e876eda2c63","kind":"tag","published_at":"2015-03-10T14:14:13.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.5","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.5/manifests"},{"name":"v0.4.4","sha":"980933a9cb6e9fc3739f650998a404217a98200a","kind":"tag","published_at":"2014-08-17T11:14:52.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.4","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.4/manifests"},{"name":"v0.4.3","sha":"d6f98a9417a50a46398499872468cde736a5de23","kind":"tag","published_at":"2014-06-12T21:15:15.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.3","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.3/manifests"},{"name":"v0.4.2","sha":"c09ca63a2dc74d8e06450770bb61ce4fe2562720","kind":"tag","published_at":"2014-04-03T11:04:24.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"b72937e398f0aca6ddf249fa3b910429b457130a","kind":"tag","published_at":"2014-02-13T12:16:18.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"28a026b3666140ad9fbb5682220e55beb6ab286a","kind":"tag","published_at":"2014-01-27T23:26:42.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"9d71833a67e0686928afe8b9284276a027bcd624","kind":"tag","published_at":"2013-03-29T07:15:57.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.3.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"c91bff8d39ad700b5b6d678dda9a8d4904b94c4d","kind":"tag","published_at":"2013-01-13T15:59:03.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.2.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"59f46b1651251528be7e7f66760c28e176e8786e","kind":"tag","published_at":"2013-01-13T04:42:36.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.1.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2024-10-29T22:24:52.138Z","dependent_packages_count":42,"downloads":60535886,"downloads_period":"total","dependent_repos_count":3996,"rankings":{"downloads":0.4844950435432254,"dependent_repos_count":0.49564567745676347,"dependent_packages_count":0.6562148058117104,"stargazers_count":2.186081778749122,"forks_count":2.129771077485755,"docker_downloads_count":0.3083150277093253,"average":1.043420568459317},"purl":"pkg:gem/grape-entity","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/grape-entity","docker_dependents_count":221,"docker_downloads_count":449503177,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/grape-entity","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/grape-entity/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2024-10-29T17:31:11.083Z","issues_count":55,"pull_requests_count":58,"avg_time_to_close_issue":30057203.055555556,"avg_time_to_close_pull_request":7399054.314814814,"issues_closed_count":18,"pull_requests_closed_count":54,"pull_request_authors_count":32,"issue_authors_count":51,"avg_comments_per_issue":2.309090909090909,"avg_comments_per_pull_request":2.9310344827586206,"merged_pull_requests_count":48,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":2,"past_year_pull_requests_count":4,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":139674.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":3,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":3.0,"past_year_avg_comments_per_pull_request":1.25,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":3,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/issues","maintainers":[{"login":"LeFnord","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LeFnord"},{"login":"dnesteryuk","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dnesteryuk"},{"login":"drn","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/drn"}],"active_maintainers":[{"login":"LeFnord","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LeFnord"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/grape-entity/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/grape-entity/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/grape-entity/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/grape-entity/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/grape-entity/codemeta","maintainers":[{"uuid":"49768","login":"dblock","name":null,"email":null,"url":null,"packages_count":90,"html_url":"https://rubygems.org/profiles/dblock","role":null,"created_at":"2022-11-09T09:34:11.044Z","updated_at":"2022-11-09T09:34:11.044Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/dblock/packages"},{"uuid":"223","login":"mbleigh","name":null,"email":null,"url":null,"packages_count":50,"html_url":"https://rubygems.org/profiles/mbleigh","role":null,"created_at":"2022-11-09T09:34:11.063Z","updated_at":"2022-11-09T09:34:11.063Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/mbleigh/packages"},{"uuid":"86261","login":"marshall-lee","name":null,"email":null,"url":null,"packages_count":13,"html_url":"https://rubygems.org/profiles/marshall-lee","role":null,"created_at":"2022-11-09T09:34:11.079Z","updated_at":"2022-11-09T09:34:11.079Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/marshall-lee/packages"},{"uuid":"65119","login":"idyll","name":null,"email":null,"url":null,"packages_count":10,"html_url":"https://rubygems.org/profiles/idyll","role":null,"created_at":"2022-11-09T09:34:11.032Z","updated_at":"2022-11-09T09:34:11.032Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/idyll/packages"},{"uuid":"43178","login":"LeFnord","name":null,"email":null,"url":null,"packages_count":8,"html_url":"https://rubygems.org/profiles/LeFnord","role":null,"created_at":"2022-11-09T09:34:11.106Z","updated_at":"2022-11-09T09:34:11.106Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/LeFnord/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":204952,"maintainers_count":68309,"namespaces_count":0,"keywords_count":0,"github":"rubygems","metadata":{"funded_packages_count":7260},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-04-03T06:42:17.024Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":12240383,"name":"grape-entity","ecosystem":"rubygems","description":"Extracted from Grape, A Ruby framework for rapid API development with great conventions.","homepage":"https://github.com/ruby-grape/grape-entity","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ruby-grape/grape-entity","keywords_array":[],"namespace":null,"versions_count":28,"first_release_published_at":"2013-01-13T04:49:58.618Z","latest_release_published_at":"2024-04-10T13:58:48.882Z","latest_release_number":"1.0.1","last_synced_at":"2026-04-11T17:01:13.532Z","created_at":"2025-10-07T03:18:51.183Z","updated_at":"2026-04-11T17:06:16.427Z","registry_url":"https://gem.coop/gems/grape-entity","install_command":"gem install grape-entity -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/grape-entity/","metadata":{"funding":null},"repo_metadata":{"id":6344277,"uuid":"7580484","full_name":"ruby-grape/grape-entity","owner":"ruby-grape","description":"An API focused facade that sits on top of an object model.","archived":false,"fork":false,"pushed_at":"2025-11-24T13:38:58.000Z","size":705,"stargazers_count":730,"open_issues_count":90,"forks_count":152,"subscribers_count":13,"default_branch":"master","last_synced_at":"2026-04-07T17:02:47.383Z","etag":null,"topics":["api","entity","grape","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruby-grape.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-01-12T21:04:19.000Z","updated_at":"2026-04-07T13:49:02.000Z","dependencies_parsed_at":"2023-01-13T13:57:02.701Z","dependency_job_id":"474fb582-bbce-469c-8e89-f29157b906e8","html_url":"https://github.com/ruby-grape/grape-entity","commit_stats":{"total_commits":255,"total_committers":89,"mean_commits":2.865168539325843,"dds":0.7960784313725491,"last_synced_commit":"6267db4e77e8036920d61489abbc559c65fbc9aa"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/ruby-grape/grape-entity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/sbom","scorecard":{"id":788863,"data":{"date":"2025-08-11","repo":{"name":"github.com/ruby-grape/grape-entity","commit":"4d71e0e883100cea394054fec067f3c84491cb74"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":5,"reason":"Found 15/29 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:12","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ruby-grape/grape-entity/ci.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":3,"reason":"3 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T06:53:04.642Z","repository_id":6344277,"created_at":"2025-08-23T06:53:04.642Z","updated_at":"2025-08-23T06:53:04.642Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31575838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"ruby-grape","name":"Ruby Grape","uuid":"13624553","kind":"organization","description":"An opinionated micro-framework for creating REST-like APIs in Ruby.","email":"ruby-grape@googlegroups.com","website":"http://www.ruby-grape.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/13624553?v=4","repositories_count":17,"last_synced_at":"2024-03-25T21:19:03.302Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ruby-grape","funding_links":[],"total_stars":12808,"followers":18,"following":0,"created_at":"2022-11-02T16:44:55.311Z","updated_at":"2024-03-25T21:19:03.671Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-grape/repositories"},"tags":[{"name":"v1.0.1","sha":"e71e3cd5aa156b9ef0efcadf9641ad895e60f564","kind":"tag","published_at":"2024-04-10T13:58:25.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v1.0.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"6267db4e77e8036920d61489abbc559c65fbc9aa","kind":"tag","published_at":"2023-02-16T19:03:20.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v1.0.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v1.0.0/manifests"},{"name":"v0.10.2","sha":"6eac458ddd69117ad979aaab7d1798bb1ba5a349","kind":"tag","published_at":"2022-07-29T06:29:10.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.10.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.10.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.10.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.2/manifests"},{"name":"v0.10.1","sha":"aac8e778f570d02d199320922b18817f35db1009","kind":"tag","published_at":"2021-10-22T06:21:44.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.10.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.10.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.1/manifests"},{"name":"v0.10.0","sha":"061975f0b620c4ecf5709391a8b6259949574243","kind":"tag","published_at":"2021-09-15T08:30:33.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.10.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.10.0/manifests"},{"name":"v0.9.0","sha":"5238a3d33fd1e5d9cdb18b4a9d9240c40dfbc6ea","kind":"tag","published_at":"2021-03-20T00:17:27.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.9.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.9.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.9.0/manifests"},{"name":"v0.8.2","sha":"bda9756f62867040a0c6d05c5792f9f6d6992f14","kind":"tag","published_at":"2020-11-08T15:45:36.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.8.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.8.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.2/manifests"},{"name":"v0.8.1","sha":"0a8cbb9158fb1c5dafdbcb0371151f139375f593","kind":"tag","published_at":"2020-07-15T18:19:51.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.8.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.8.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.1/manifests"},{"name":"v0.8.0","sha":"71789f68cd5fbed88d67501c67e70923079d0899","kind":"tag","published_at":"2020-02-18T15:55:00.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.8.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.8.0/manifests"},{"name":"v0.7.1","sha":"1bfa7f34d6e7a3069590caf276556b0ca626fc25","kind":"tag","published_at":"2018-01-30T14:19:34.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.7.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.7.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.1/manifests"},{"name":"v0.7.0","sha":"0890ceb9f9aefb832a5ec918150112f5e664fc12","kind":"tag","published_at":"2018-01-25T16:01:56.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.7.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.7.0/manifests"},{"name":"v0.6.1","sha":"10923994d8d15c03bdba89df4973e057eaaa0dd5","kind":"tag","published_at":"2017-01-09T22:41:07.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.6.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.1/manifests"},{"name":"v0.6.0","sha":"be0c9773615ba0ae0384d5685b2105e783311121","kind":"tag","published_at":"2016-11-21T03:13:43.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.6.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.6.0/manifests"},{"name":"v0.5.2","sha":"305dcc944bb009691531bb399ace2e4dd32c07cf","kind":"tag","published_at":"2016-11-14T17:22:08.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.5.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.2/manifests"},{"name":"v0.5.1","sha":"364b68425d6b228b815799487ef6b00e01caab8c","kind":"tag","published_at":"2016-04-04T11:55:24.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.5.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"44f958e90059d7dfd5700d57ceef7eb47ee202d1","kind":"tag","published_at":"2015-12-07T19:48:50.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.5.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.5.0/manifests"},{"name":"v0.4.8","sha":"6e0bc0550ad9f2980fce15add01386f6054f20bd","kind":"tag","published_at":"2015-08-10T13:24:28.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.8","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.8/manifests"},{"name":"v0.4.7","sha":"7235364952d638488f7997be32bf227139a7ba08","kind":"tag","published_at":"2015-08-03T17:22:14.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.7","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.7/manifests"},{"name":"v0.4.6","sha":"8af8074dba02045fcd79da4ded77d5b258e94e89","kind":"tag","published_at":"2015-08-03T08:46:45.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.6","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.6/manifests"},{"name":"v0.4.5","sha":"50e2a4b3ffedaedf75aca9f348a80e876eda2c63","kind":"tag","published_at":"2015-03-10T14:14:13.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.5","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.5/manifests"},{"name":"v0.4.4","sha":"980933a9cb6e9fc3739f650998a404217a98200a","kind":"tag","published_at":"2014-08-17T11:14:52.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.4","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.4/manifests"},{"name":"v0.4.3","sha":"d6f98a9417a50a46398499872468cde736a5de23","kind":"tag","published_at":"2014-06-12T21:15:15.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.3","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.3/manifests"},{"name":"v0.4.2","sha":"c09ca63a2dc74d8e06450770bb61ce4fe2562720","kind":"tag","published_at":"2014-04-03T11:04:24.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.2","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"b72937e398f0aca6ddf249fa3b910429b457130a","kind":"tag","published_at":"2014-02-13T12:16:18.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.1","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"28a026b3666140ad9fbb5682220e55beb6ab286a","kind":"tag","published_at":"2014-01-27T23:26:42.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.4.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"9d71833a67e0686928afe8b9284276a027bcd624","kind":"tag","published_at":"2013-03-29T07:15:57.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.3.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"c91bff8d39ad700b5b6d678dda9a8d4904b94c4d","kind":"tag","published_at":"2013-01-13T15:59:03.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.2.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"59f46b1651251528be7e7f66760c28e176e8786e","kind":"tag","published_at":"2013-01-13T04:42:36.000Z","download_url":"https://codeload.github.com/ruby-grape/grape-entity/tar.gz/v0.1.0","html_url":"https://github.com/ruby-grape/grape-entity/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ruby-grape/grape-entity@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-04-11T17:06:16.427Z","dependent_packages_count":0,"downloads":60539309,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.4574036127316079,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":0.2492471223041031,"average":0.17666268375892774},"purl":"pkg:gem/grape-entity?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/grape-entity","docker_dependents_count":221,"docker_downloads_count":449503177,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/grape-entity","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/grape-entity/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-09T01:02:05.244Z","issues_count":57,"pull_requests_count":71,"avg_time_to_close_issue":46238606.10526316,"avg_time_to_close_pull_request":16404112.606060605,"issues_closed_count":19,"pull_requests_closed_count":66,"pull_request_authors_count":34,"issue_authors_count":53,"avg_comments_per_issue":2.1578947368421053,"avg_comments_per_pull_request":2.676056338028169,"merged_pull_requests_count":57,"bot_issues_count":0,"bot_pull_requests_count":4,"past_year_issues_count":1,"past_year_pull_requests_count":8,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":670724.5714285715,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":7,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.125,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":6,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/issues","maintainers":[{"login":"LeFnord","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LeFnord"},{"login":"numbata","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/numbata"},{"login":"marshall-lee","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/marshall-lee"},{"login":"dnesteryuk","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dnesteryuk"},{"login":"drn","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/drn"}],"active_maintainers":[{"login":"numbata","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/numbata"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/grape-entity/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/grape-entity/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/grape-entity/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/grape-entity/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/grape-entity/codemeta","maintainers":[{"uuid":"49768","login":"dblock","name":null,"email":null,"url":null,"packages_count":90,"html_url":"https://gem.coop/profiles/dblock","role":null,"created_at":"2025-10-07T19:09:56.044Z","updated_at":"2025-10-07T19:09:56.044Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/dblock/packages"},{"uuid":"223","login":"mbleigh","name":null,"email":null,"url":null,"packages_count":49,"html_url":"https://gem.coop/profiles/mbleigh","role":null,"created_at":"2025-10-07T19:09:56.088Z","updated_at":"2025-10-07T19:09:56.088Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/mbleigh/packages"},{"uuid":"86261","login":"marshall-lee","name":null,"email":null,"url":null,"packages_count":13,"html_url":"https://gem.coop/profiles/marshall-lee","role":null,"created_at":"2025-10-07T19:09:56.127Z","updated_at":"2025-10-07T19:09:56.127Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/marshall-lee/packages"},{"uuid":"65119","login":"idyll","name":null,"email":null,"url":null,"packages_count":10,"html_url":"https://gem.coop/profiles/idyll","role":null,"created_at":"2025-10-07T19:09:56.004Z","updated_at":"2025-10-07T19:09:56.004Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/idyll/packages"},{"uuid":"43178","login":"LeFnord","name":null,"email":null,"url":null,"packages_count":8,"html_url":"https://gem.coop/profiles/LeFnord","role":null,"created_at":"2025-10-07T19:09:56.166Z","updated_at":"2025-10-07T19:09:56.166Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/LeFnord/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":189803,"maintainers_count":67318,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}}],"commits":{"id":19179,"full_name":"ruby-grape/grape-entity","default_branch":"master","total_commits":268,"total_committers":93,"total_bot_commits":3,"total_bot_committers":1,"mean_commits":2.881720430107527,"dds":0.8059701492537313,"past_year_total_commits":9,"past_year_total_committers":4,"past_year_total_bot_commits":2,"past_year_total_bot_committers":1,"past_year_mean_commits":2.25,"past_year_dds":0.4444444444444444,"last_synced_at":"2026-04-11T17:10:30.243Z","last_synced_commit":"28eebabaca897f176e8bf9cfe0c92891e001e894","created_at":"2023-03-07T11:40:21.012Z","updated_at":"2026-04-11T17:08:18.682Z","committers":[{"name":"dblock","email":"dblock@dblock.org","login":"dblock","count":52},{"name":"peter scholz","email":"pscholz.le@gmail.com","login":"LeFnord","count":34},{"name":"Vladimir Kochnev","email":"hashtable@yandex.ru","login":"marshall-lee","count":11},{"name":"Konstantin Shabanov","email":"etehtsea@gmail.com","login":"etehtsea","count":10},{"name":"justfalter","email":"falter@gmail.com","login":"justfalter","count":8},{"name":"Michael Bleigh","email":"mbleigh@mbleigh.com","login":"mbleigh","count":8},{"name":"Mark Madsen","email":"mark@agileanimal.com","login":"idyll","count":8},{"name":"Malte Rohde","email":"malte.rohde@plugintheworld.com","login":null,"count":6},{"name":"Andrey Subbota","email":"subbota@gmail.com","login":"numbata","count":5},{"name":"Joel Van Horn","email":"joel@joelvanhorn.com","login":"joelvh","count":5},{"name":"Olle Jonsson","email":"olle.jonsson@gmail.com","login":"olleolleolle","count":4},{"name":"Jared Wyatt","email":"j@wyatt.co","login":"wyattisimo","count":4},{"name":"Dmitry Tsepelev","email":"dmitry.a.tsepelev@gmail.com","login":"DmitryTsepelev","count":4},{"name":"Yannis Zhang","email":"zhangyaning1985@gmail.com","login":"u2","count":3},{"name":"AMar4enko","email":"amar4enko@gmail.com","login":"AMar4enko","count":3},{"name":"fahchen","email":"dev.fah@gmail.com","login":"fahchen","count":3},{"name":"Alexander Yunin","email":"use.skills@gmail.com","login":"sagebomb","count":3},{"name":"Joakim Antman","email":"antmanj@gmail.com","login":"anakinj","count":3},{"name":"Kenichi Kamiya","email":"kachick1@gmail.com","login":"kachick","count":3},{"name":"Sergey Malyshev","email":"job.malyshev@gmail.com","login":"fixme","count":3},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":3},{"name":"aj0strow","email":"alexander.ostrow@gmail.com","login":"aj0strow","count":2},{"name":"Ryunosuke SATO","email":"tricknotes.rs@gmail.com","login":"tricknotes","count":2},{"name":"Nerian","email":"siotopo@gmail.com","login":"Nerian","count":2},{"name":"James McCarthy","email":"james2mccarthy@gmail.com","login":"james2m","count":2},{"name":"Estevão Mascarenhas","email":"estevao.am@gmail.com","login":"estevaoam","count":2},{"name":"Drakula2k","email":"drakula2k@gmail.com","login":"Drakula2k","count":2},{"name":"David Castillo","email":"castillobg","login":"castillobg","count":2},{"name":"Cedric Röck","email":"git@roecky.net","login":"croeck","count":2},{"name":"Clinton Blackburn","email":"cblackburn@kyru.us","login":null,"count":2},{"name":"Tobias Bielohlawek","email":"tobias.bielohlawek@hitfoxgroup.com","login":null,"count":2},{"name":"Dan Corneanu","email":"dan.corneanu@gmail.com","login":"dan-corneanu","count":2},{"name":"Dmitriy Budnik","email":"dmitriy.budnik@gmail.com","login":"budnik","count":2},{"name":"Paul Padier","email":"paul.padier@outlook.com","login":"magni-","count":2},{"name":"Michael-Keith Bernard","email":"mkbernard.dev@gmail.com","login":"SegFaultAX","count":1},{"name":"Ahmed Naguib","email":"ahmed.naguib@live.com","login":"ahmednaguib","count":1},{"name":"Alan Fung-Schwarz","email":"alan.jcfs@gmail.com","login":"alanjcfs","count":1},{"name":"Anton Chuchkalov","email":"a2new@yandex.ru","login":"hedgesky","count":1},{"name":"Brian van de Boogaard","email":"brian.boogaard@gmail.com","login":"b-boogaard","count":1},{"name":"Brooks Swinnerton","email":"bswinnerton@gmail.com","login":"bswinnerton","count":1},{"name":"Andrew Rempe","email":"arempe@k2p-ed.com","login":null,"count":1},{"name":"Batykov Stepan","email":"batykov@robotct.ru","login":null,"count":1},{"name":"Christoph Petschnig","email":"christoph.petschnig@sage.com","login":null,"count":1},{"name":"Dan Draper","email":"daniel@codefire.com","login":null,"count":1},{"name":"Dieter Späth","email":"d.spaeth@faber.de","login":null,"count":1},{"name":"Trung Lê","email":"trung.le@ruby-journal.com","login":null,"count":1},{"name":"Zachary Belzer","email":"zbelzer@clearstorydata.com","login":null,"count":1},{"name":"Larry Zhao","email":"thehiddendepth@gmail.com","login":"larryzhao","count":1},{"name":"Martin","email":"hongzeqin@gmail.com","login":"Martin91","count":1},{"name":"Mehmet Emin İNAÇ","email":"mehmetemininac@gmail.com","login":"meinac","count":1},{"name":"Michael Mior","email":"michael.mior@gmail.com","login":"michaelmior","count":1},{"name":"Michael Xavier","email":"michael@michaelxavier.net","login":"MichaelXavier","count":1},{"name":"Mihai Ionescu","email":"blueicedeliverman@gmail.com","login":"mihaiionescu","count":1},{"name":"Mikael Henriksson","email":"mikael@mhenrixon.com","login":"mhenrixon","count":1},{"name":"Mitsutaka Mimura","email":"takkanm@gmail.com","login":"takkanm","count":1},{"name":"Peter Leitzen","email":"splattael","login":"splattael","count":1},{"name":"Pirate Praveen Arimbrathodiyil","email":"praveen@debian.org","login":"pravi","count":1},{"name":"Reyes Yang","email":"reyes.yang@gmail.com","login":"reyesyang","count":1},{"name":"Roberto Zanon","email":"roberto.zanon.01@gmail.com","login":"robertoz-01","count":1},{"name":"Tatsuya Hoshino","email":"tatsuya7.hoshino7@gmail.com","login":"tatsuyafw","count":1},{"name":"Ujjwal Thaakar","email":"ujjwalthaakar@gmail.com","login":"ujjwalt","count":1},{"name":"Vladimir","email":"serbiant@gmail.com","login":"serbiant","count":1},{"name":"Waynn Lue","email":"WLGades@gmail.com","login":"waynn","count":1},{"name":"Yaroslav Rodnin","email":"begotten63@gmail.com","login":"begotten63","count":1},{"name":"kfukai23","email":"36021748+kfukai23","login":"kfukai23","count":1},{"name":"luotao","email":"luotao.ruby@gmail.com","login":"ya-luotao","count":1},{"name":"ouyangjinting","email":"2729877005@qq.com","login":"Davinderx","count":1},{"name":"ouyangjinting","email":"Ou.Yang.Jin.Ting.X@gmail.com","login":"OuYangJinTing","count":1},{"name":"sbatykov","email":"sbatykov","login":"sbatykov","count":1},{"name":"yeonhoyoon","email":"yeonhoyoon@gmail.com","login":"yeonhoyoon","count":1},{"name":"variousred","email":"michaelmitchell@hush.com","login":null,"count":1},{"name":"Chris Maddox","email":"tyre77@gmail.com","login":"tyre","count":1},{"name":"Daniel Dao","email":"danielvdao","login":"danielvdao","count":1},{"name":"Darren Cheng","email":"darren@thanx.com","login":"drn","count":1},{"name":"David Castillo","email":"castillobgr@gmail.com","login":"0x5d","count":1},{"name":"38elements","email":"mh19820223@gmail.com","login":"38elements","count":1},{"name":"Dmitriy Nesteryuk","email":"dmitriy.nesteryuk@gmail.com","login":"dnesteryuk","count":1},{"name":"Eito Katagiri","email":"eitoball@gmail.com","login":"eitoball","count":1},{"name":"Eric Proulx","email":"eproulx@petalmd.com","login":"ericproulx","count":1},{"name":"Eric Schultz","email":"eric@wwahammy.com","login":"wwahammy","count":1},{"name":"Fabien Loup","email":"info@norydev.com","login":"norydev","count":1},{"name":"Feng Ce","email":"kalelfc@gmail.com","login":"fcce","count":1},{"name":"Frank Showalter","email":"fshowalter@gmail.com","login":"fshowalter","count":1},{"name":"Glauco Custódio","email":"glauco.custodio@gmail.com","login":"glaucocustodio","count":1},{"name":"Greg Kerzhner","email":"gregkerzhner@gmail.com","login":"tburglar","count":1},{"name":"Grey Baker","email":"greysteil@gmail.com","login":"greysteil","count":1},{"name":"Hemslo Wang","email":"hemslo.wang@gmail.com","login":"hemslo","count":1},{"name":"Ian Young","email":"ian@iangreenleaf.com","login":"iangreenleaf","count":1},{"name":"Jake Kelly","email":"jake.kelly10@gmail.com","login":"cakejelly","count":1},{"name":"Ji Zhou","email":"calf.zhou@gmail.com","login":"calfzhou","count":1},{"name":"Johan Brissmyr","email":"brissmyr@gmail.com","login":"brissmyr","count":1},{"name":"Jonathan Chan","email":"jc@jmccc.com","login":"jonmchan","count":1},{"name":"Jordan Hollinger","email":"jordan.hollinger@gmail.com","login":"jhollinger","count":1}],"past_year_committers":[{"name":"Andrey Subbota","email":"subbota@gmail.com","login":"numbata","count":5},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"ouyangjinting","email":"Ou.Yang.Jin.Ting.X@gmail.com","login":"OuYangJinTing","count":1},{"name":"Feng Ce","email":"kalelfc@gmail.com","login":"fcce","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:23.197Z","repositories_count":6212731,"commits_count":905230214,"contributors_count":34959447,"owners_count":1143725,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"ruby-grape/grape-entity","html_url":"https://github.com/ruby-grape/grape-entity","last_synced_at":"2026-04-11T17:19:34.000Z","status":null,"issues_count":57,"pull_requests_count":72,"avg_time_to_close_issue":46238606.10526316,"avg_time_to_close_pull_request":16162680.865671642,"issues_closed_count":19,"pull_requests_closed_count":67,"pull_request_authors_count":34,"issue_authors_count":53,"avg_comments_per_issue":2.1578947368421053,"avg_comments_per_pull_request":2.638888888888889,"merged_pull_requests_count":58,"bot_issues_count":0,"bot_pull_requests_count":4,"past_year_issues_count":1,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":615407.25,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":7,"created_at":"2023-05-12T11:39:40.560Z","updated_at":"2026-04-11T17:19:34.000Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-grape%2Fgrape-entity/issues","issue_labels_count":{"question":8,"bug?":5,"feature":4,"bug":1},"pull_request_labels_count":{"dependencies":4,"github_actions":3,"bug?":1},"issue_author_associations_count":{"NONE":48,"CONTRIBUTOR":9},"pull_request_author_associations_count":{"CONTRIBUTOR":33,"MEMBER":24,"NONE":10,"COLLABORATOR":5},"issue_authors":{"glaucocustodio":2,"hay-wtag":2,"Kukunin":2,"dccmmtop":2,"yilangmok-gusto":1,"tmornini":1,"Razer6":1,"bobbytables":1,"sharkey11":1,"qiuxiaoj":1,"MoroZvlg":1,"vitoravelino":1,"kris":1,"olbrich":1,"danielvdao":1,"rahul404":1,"keithpitty":1,"TangMonk":1,"magni-":1,"dnguyenchevy":1,"hubertjakubiak":1,"stanleyyuenyiu":1,"hsw15192617273":1,"tscholz":1,"wedgex":1,"chigginsiii":1,"jaman1020":1,"wwahammy":1,"IlyaBeliaev":1,"pavelbabin":1,"GuangChenPidouki":1,"synth":1,"bogdan":1,"brahamshakti":1,"waynn":1,"wyattisimo":1,"j-boers-13":1,"zverok":1,"mttkay":1,"dhruvCW":1,"leods92":1,"linhmtran168":1,"renatolond":1,"yuuu":1,"sardaukar":1,"DamienCompere":1,"lazybios":1,"jonmchan":1,"aaronchi":1,"u2":1,"ghost":1,"danielricecodes":1,"al":1},"pull_request_authors":{"LeFnord":20,"numbata":5,"olleolleolle":4,"dependabot[bot]":4,"OuYangJinTing":3,"budnik":2,"linhchauatx":2,"magni-":2,"fcce":2,"ericproulx":2,"anakinj":2,"marshall-lee":2,"Linell":1,"eitoball":1,"dnesteryuk":1,"yeonhoyoon":1,"fangzhu19880123":1,"ahmednaguib":1,"mhenrixon":1,"norydev":1,"pravi":1,"robertoz-01":1,"wwahammy":1,"nbulaj":1,"drn":1,"meinac":1,"serbiant":1,"ka8725":1,"tatsuyafw":1,"danielvdao":1,"begotten63":1,"kfukai23":1,"jnardone":1,"splattael":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:10.509Z","repositories_count":14210836,"issues_count":34657220,"pull_requests_count":113242396,"authors_count":11232570,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{"dependencies":2,"github_actions":2},"past_year_issue_author_associations_count":{"NONE":1},"past_year_pull_request_author_associations_count":{"COLLABORATOR":5,"CONTRIBUTOR":4},"past_year_issue_authors":{"bogdan":1},"past_year_pull_request_authors":{"numbata":5,"dependabot[bot]":2,"OuYangJinTing":2},"maintainers":[{"login":"LeFnord","count":20,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LeFnord"},{"login":"numbata","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/numbata"},{"login":"marshall-lee","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/marshall-lee"},{"login":"dnesteryuk","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dnesteryuk"},{"login":"drn","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/drn"}],"active_maintainers":[{"login":"numbata","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/numbata"}]},"events":{"total":{"DeleteEvent":2,"MemberEvent":1,"PullRequestEvent":6,"ForkEvent":3,"IssuesEvent":3,"WatchEvent":17,"IssueCommentEvent":13,"PushEvent":4,"PullRequestReviewCommentEvent":3,"PullRequestReviewEvent":7,"CreateEvent":1},"last_year":{"DeleteEvent":2,"MemberEvent":1,"PullRequestEvent":6,"ForkEvent":1,"IssuesEvent":2,"WatchEvent":6,"IssueCommentEvent":13,"PushEvent":4,"PullRequestReviewCommentEvent":3,"PullRequestReviewEvent":7,"CreateEvent":1}},"keywords":["api","entity","grape","ruby"],"dependencies":[{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2022-08-01T08:09:23.816Z","updated_at":"2022-08-01T08:09:23.816Z","repository_link":"https://github.com/ruby-grape/grape-entity/blob/master/Gemfile","dependencies":[{"id":536157045,"package_name":"rubocop","ecosystem":"rubygems","requirements":"~\u003e 1.0","direct":true,"kind":"development","optional":false},{"id":536157046,"package_name":"coveralls_reborn","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157047,"package_name":"growl","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157048,"package_name":"guard","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157049,"package_name":"guard-bundler","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157050,"package_name":"guard-rspec","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157051,"package_name":"rb-fsevent","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157052,"package_name":"ruby-grape-danger","ecosystem":"rubygems","requirements":"~\u003e 0.2","direct":true,"kind":"development","optional":false},{"id":536157053,"package_name":"simplecov","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"rubygems","filepath":"grape-entity.gemspec","sha":null,"kind":"manifest","created_at":"2022-08-01T08:09:23.969Z","updated_at":"2022-08-01T08:09:23.969Z","repository_link":"https://github.com/ruby-grape/grape-entity/blob/master/grape-entity.gemspec","dependencies":[{"id":536157301,"package_name":"activesupport","ecosystem":"rubygems","requirements":"\u003e= 3.0.0","direct":true,"kind":"runtime","optional":false},{"id":536157302,"package_name":"multi_json","ecosystem":"rubygems","requirements":"\u003e= 1.3.2","direct":true,"kind":"runtime","optional":false},{"id":536157303,"package_name":"bundler","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157304,"package_name":"maruku","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157305,"package_name":"rack-test","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157306,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":536157307,"package_name":"rspec","ecosystem":"rubygems","requirements":"~\u003e 3.9","direct":true,"kind":"development","optional":false},{"id":536157308,"package_name":"yard","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ci.yml","sha":null,"kind":"manifest","created_at":"2023-01-13T13:57:02.664Z","updated_at":"2023-01-13T13:57:02.664Z","repository_link":"https://github.com/ruby-grape/grape-entity/blob/master/.github/workflows/ci.yml","dependencies":[{"id":6876175615,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":6876175616,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]}],"score":31.986275410350085,"created_at":"2024-12-15T21:38:08.572Z","updated_at":"2026-04-30T04:03:22.960Z","avatar_url":"https://github.com/ruby-grape.png","language":"Ruby","monthly_downloads":0,"readme":"[![Gem Version](http://img.shields.io/gem/v/grape-entity.svg)](http://badge.fury.io/rb/grape-entity)\n![Ruby](https://github.com/ruby-grape/grape-entity/workflows/Ruby/badge.svg)\n[![Coverage Status](https://coveralls.io/repos/github/ruby-grape/grape-entity/badge.svg?branch=master)](https://coveralls.io/github/ruby-grape/grape-entity?branch=master)\n[![Code Climate](https://codeclimate.com/github/ruby-grape/grape-entity.svg)](https://codeclimate.com/github/ruby-grape/grape-entity)\n\n# Table of Contents\n\n- [Grape::Entity](#grapeentity)\n  - [Introduction](#introduction)\n    - [Example](#example)\n  - [Reusable Responses with Entities](#reusable-responses-with-entities)\n    - [Defining Entities](#defining-entities)\n      - [Basic Exposure](#basic-exposure)\n      - [Exposing with a Presenter](#exposing-with-a-presenter)\n      - [Conditional Exposure](#conditional-exposure)\n      - [Safe Exposure](#safe-exposure)\n      - [Nested Exposure](#nested-exposure)\n      - [Collection Exposure](#collection-exposure)\n      - [Merge Fields](#merge-fields)\n      - [Runtime Exposure](#runtime-exposure)\n      - [Unexpose](#unexpose)\n      - [Overriding exposures](#overriding-exposures)\n      - [Returning only the fields you want](#returning-only-the-fields-you-want)\n      - [Aliases](#aliases)\n      - [Format Before Exposing](#format-before-exposing)\n      - [Expose Nil](#expose-nil)\n      - [Default Value](#default-value)\n      - [Documentation](#documentation)\n    - [Options Hash](#options-hash)\n      - [Passing Additional Option To Nested Exposure](#passing-additional-option-to-nested-exposure)\n      - [Attribute Path Tracking](#attribute-path-tracking)\n    - [Using the Exposure DSL](#using-the-exposure-dsl)\n    - [Using Entities](#using-entities)\n    - [Entity Organization](#entity-organization)\n    - [Caveats](#caveats)\n    - [Preloading Associations](#preloading-associations)\n  - [Installation](#installation)\n  - [Testing with Entities](#testing-with-entities)\n  - [Project Resources](#project-resources)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Copyright](#copyright)\n\n# Grape::Entity\n\n## Introduction\n\nThis gem adds Entity support to API frameworks, such as [Grape](https://github.com/ruby-grape/grape). Grape's Entity is an API focused facade that sits on top of an object model.\n\n### Example\n\n```ruby\nmodule API\n  module Entities\n    class Status \u003c Grape::Entity\n      format_with(:iso_timestamp) { |dt| dt.iso8601 }\n\n      expose :user_name\n      expose :text, documentation: { type: \"String\", desc: \"Status update text.\" }\n      expose :ip, if: { type: :full }\n      expose :user_type, :user_id, if: lambda { |status, options| status.user.public? }\n      expose :location, merge: true\n      expose :contact_info do\n        expose :phone\n        expose :address, merge: true, using: API::Entities::Address\n      end\n      expose :digest do |status, options|\n        Digest::MD5.hexdigest status.txt\n      end\n      expose :replies, using: API::Entities::Status, as: :responses\n      expose :last_reply, using: API::Entities::Status do |status, options|\n        status.replies.last\n      end\n\n      with_options(format_with: :iso_timestamp) do\n        expose :created_at\n        expose :updated_at\n      end\n    end\n  end\nend\n\nmodule API\n  module Entities\n    class StatusDetailed \u003c API::Entities::Status\n      expose :internal_id\n    end\n  end\nend\n```\n\n## Reusable Responses with Entities\n\nEntities are a reusable means for converting Ruby objects to API responses. Entities can be used to conditionally include fields, nest other entities, and build ever larger responses, using inheritance.\n\n### Defining Entities\n\nEntities inherit from Grape::Entity, and define a simple DSL. Exposures can use runtime options to determine which fields should be visible, these options are available to `:if`, `:unless`, and `:proc`.\n\n#### Basic Exposure\n\nDefine a list of fields that will always be exposed.\n\n```ruby\nexpose :user_name, :ip\n```\n\nThe field lookup takes several steps\n\n* first try `entity-instance.exposure`\n* next try `object.exposure`\n* next try `object.fetch(exposure)`\n* last raise an Exception\n\n`exposure` is a Symbol by default. If `object` is a Hash with stringified keys, you can set the hash accessor at the entity-class level to properly expose its members:\n\n```ruby\nclass Status \u003c GrapeEntity\n  self.hash_access = :to_s\n\n  expose :code\n  expose :message\nend\n\nStatus.represent({ 'code' =\u003e 418, 'message' =\u003e \"I'm a teapot\" }).as_json\n#=\u003e { code: 418, message: \"I'm a teapot\" }\n```\n\n#### Exposing with a Presenter\n\nDon't derive your model classes from `Grape::Entity`, expose them using a presenter.\n\n```ruby\nexpose :replies, using: API::Entities::Status, as: :responses\n```\n\nPresenter classes can also be specified in string format, which helps with circular dependencies.\n\n```ruby\nexpose :replies, using: \"API::Entities::Status\", as: :responses\n```\n\n#### Conditional Exposure\n\nUse `:if` or `:unless` to expose fields conditionally.\n\n```ruby\nexpose :ip, if: { type: :full }\n\nexpose :ip, if: lambda { |instance, options| options[:type] == :full } # exposed if the function evaluates to true\nexpose :ip, if: :type # exposed if :type is available in the options hash\nexpose :ip, if: { type: :full } # exposed if options :type has a value of :full\n\nexpose :ip, unless: ... # the opposite of :if\n```\n\n#### Safe Exposure\n\nDon't raise an exception and expose as nil, even if the :x cannot be evaluated.\n\n```ruby\nexpose :ip, safe: true\n```\n\n#### Nested Exposure\n\nSupply a block to define a hash using nested exposures.\n\n```ruby\nexpose :contact_info do\n  expose :phone\n  expose :address, using: API::Entities::Address\nend\n```\n\nYou can also conditionally expose attributes in nested exposures:\n```ruby\nexpose :contact_info do\n  expose :phone\n  expose :address, using: API::Entities::Address\n  expose :email, if: lambda { |instance, options| options[:type] == :full }\nend\n```\n\n\n#### Collection Exposure\n\nUse `root(plural, singular = nil)` to expose an object or a collection of objects with a root key.\n\n```ruby\nroot 'users', 'user'\nexpose :id, :name, ...\n```\n\nBy default every object of a collection is wrapped into an instance of your `Entity` class.\nYou can override this behavior and wrap the whole collection into one instance of your `Entity`\nclass.\n\nAs example:\n\n```ruby\n\n present_collection true, :collection_name  # `collection_name` is optional and defaults to `items`\n expose :collection_name, using: API::Entities::Items\n\n\n```\n\n#### Merge Fields\n\nUse `:merge` option to merge fields into the hash or into the root:\n\n```ruby\nexpose :contact_info do\n  expose :phone\n  expose :address, merge: true, using: API::Entities::Address\nend\n\nexpose :status, merge: true\n```\n\nThis will return something like:\n\n```ruby\n{ contact_info: { phone: \"88002000700\", city: 'City 17', address_line: 'Block C' }, text: 'HL3', likes: 19 }\n```\n\nIt also works with collections:\n\n```ruby\nexpose :profiles do\n  expose :users, merge: true, using: API::Entities::User\n  expose :admins, merge: true, using: API::Entities::Admin\nend\n```\n\nProvide lambda to solve collisions:\n\n```ruby\nexpose :status, merge: -\u003e(key, old_val, new_val) { old_val + new_val if old_val \u0026\u0026 new_val }\n```\n\n#### Runtime Exposure\n\nUse a block or a `Proc` to evaluate exposure at runtime. The supplied block or\n`Proc` will be called with two parameters: the represented object and runtime options.\n\n**NOTE:** A block supplied with no parameters will be evaluated as a nested exposure (see above).\n\n```ruby\nexpose :digest do |status, options|\n  Digest::MD5.hexdigest status.txt\nend\n```\n\n```ruby\nexpose :digest, proc: ... # equivalent to a block\n```\n\nYou can also define a method on the entity and it will try that before trying\non the object the entity wraps.\n\n```ruby\nclass ExampleEntity \u003c Grape::Entity\n  expose :attr_not_on_wrapped_object\n  # ...\n  private\n\n  def attr_not_on_wrapped_object\n    42\n  end\nend\n```\n\nYou always have access to the presented instance (`object`) and the top-level\nentity options (`options`).\n\n```ruby\nclass ExampleEntity \u003c Grape::Entity\n  expose :formatted_value\n  # ...\n  private\n\n  def formatted_value\n    \"+ X #{object.value} #{options[:y]}\"\n  end\nend\n```\n\n#### Unexpose\n\nTo undefine an exposed field, use the ```.unexpose``` method. Useful for modifying inherited entities.\n\n```ruby\nclass UserData \u003c Grape::Entity\n  expose :name\n  expose :address1\n  expose :address2\n  expose :address_state\n  expose :address_city\n  expose :email\n  expose :phone\nend\n\nclass MailingAddress \u003c UserData\n  unexpose :email\n  unexpose :phone\nend\n```\n\n#### Overriding exposures\n\nIf you want to add one more exposure for the field but don't want the first one to be fired (for instance, when using inheritance), you can use the `override` flag. For instance:\n\n```ruby\nclass User \u003c Grape::Entity\n  expose :name\nend\n\nclass Employee \u003c User\n  expose :name, as: :employee_name, override: true\nend\n```\n\n`User` will return something like this `{ \"name\" : \"John\" }` while `Employee` will present the same data as `{ \"employee_name\" : \"John\" }` instead of `{ \"name\" : \"John\", \"employee_name\" : \"John\" }`.\n\n#### Returning only the fields you want\n\nAfter exposing the desired attributes, you can choose which one you need when representing some object or collection by using the only: and except: options. See the example:\n\n```ruby\nclass UserEntity\n  expose :id\n  expose :name\n  expose :email\nend\n\nclass Entity\n  expose :id\n  expose :title\n  expose :user, using: UserEntity\nend\n\ndata = Entity.represent(model, only: [:title, { user: [:name, :email] }])\ndata.as_json\n```\n\nThis will return something like this:\n\n```ruby\n{\n  title: 'grape-entity is awesome!',\n  user: {\n    name: 'John Applet',\n    email: 'john@example.com'\n  }\n}\n```\n\nInstead of returning all the exposed attributes.\n\n\nThe same result can be achieved with the following exposure:\n\n```ruby\ndata = Entity.represent(model, except: [:id, { user: [:id] }])\ndata.as_json\n```\n\n#### Aliases\n\nExpose under a different name with `:as`.\n\n```ruby\nexpose :replies, using: API::Entities::Status, as: :responses\n```\n\n#### Format Before Exposing\n\nApply a formatter before exposing a value.\n\n```ruby\nmodule Entities\n  class MyModel \u003c Grape::Entity\n    format_with(:iso_timestamp) do |date|\n      date.iso8601\n    end\n\n    with_options(format_with: :iso_timestamp) do\n      expose :created_at\n      expose :updated_at\n    end\n  end\nend\n```\n\nDefining a reusable formatter between multiples entities:\n\n```ruby\nmodule ApiHelpers\n  extend Grape::API::Helpers\n\n  Grape::Entity.format_with :utc do |date|\n    date.utc if date\n  end\nend\n```\n\n```ruby\nmodule Entities\n  class MyModel \u003c Grape::Entity\n    expose :updated_at, format_with: :utc\n  end\n\n  class AnotherModel \u003c Grape::Entity\n    expose :created_at, format_with: :utc\n  end\nend\n```\n\n#### Expose Nil\n\nBy default, exposures that contain `nil` values will be represented in the resulting JSON as `null`.\n\nAs an example, a hash with the following values:\n\n```ruby\n{\n  name: nil,\n  age: 100\n}\n```\n\nwill result in a JSON object that looks like:\n\n```javascript\n{\n  \"name\": null,\n  \"age\": 100\n}\n```\n\nThere are also times when, rather than displaying an attribute with a `null` value, it is more desirable to not display the attribute at all. Using the hash from above the desired JSON would look like:\n\n```javascript\n{\n  \"age\": 100\n}\n```\n\nIn order to turn on this behavior for an as-exposure basis, the option `expose_nil` can be used. By default, `expose_nil` is considered to be `true`, meaning that `nil` values will be represented in JSON as `null`. If `false` is provided, then attributes with `nil` values will be omitted from the resulting JSON completely.\n\n```ruby\nmodule  Entities\n  class MyModel \u003c Grape::Entity\n    expose :name, expose_nil: false\n    expose :age, expose_nil: false\n  end\nend\n```\n\n`expose_nil` is per exposure, so you can suppress exposures from resulting in `null` or express `null` values on a per exposure basis as you need:\n\n```ruby\nmodule  Entities\n  class MyModel \u003c Grape::Entity\n    expose :name, expose_nil: false\n    expose :age # since expose_nil is omitted nil values will be rendered as null\n  end\nend\n```\n\nIt is also possible to use `expose_nil` with `with_options` if you want to add the configuration to multiple exposures at once.\n\n```ruby\nmodule  Entities\n  class MyModel \u003c Grape::Entity\n    # None of the exposures in the with_options block will render nil values as null\n    with_options(expose_nil: false) do\n      expose :name\n      expose :age\n    end\n  end\nend\n```\n\nWhen using `with_options`, it is possible to again override which exposures will render `nil` as `null` by adding the option on a specific exposure.\n\n```ruby\nmodule  Entities\n  class MyModel \u003c Grape::Entity\n    # None of the exposures in the with_options block will render nil values as null\n    with_options(expose_nil: false) do\n      expose :name\n      expose :age, expose_nil: true # nil values would be rendered as null in the JSON\n    end\n  end\nend\n```\n\n#### Default Value\n\nThis option can be used to provide a default value in case the return value is nil or empty.\n\n```ruby\nmodule  Entities\n  class MyModel \u003c Grape::Entity\n    expose :name, default: ''\n    expose :age, default: 60\n  end\nend\n```\n\n#### Documentation\n\nExpose documentation with the field. Gets bubbled up when used with Grape and various API documentation systems.\n\n```ruby\nexpose :text, documentation: { type: \"String\", desc: \"Status update text.\" }\n```\n\n### Options Hash\n\nThe option keys `:version` and `:collection` are always defined. The `:version` key is defined as `api.version`. The `:collection` key is boolean, and defined as `true` if the object presented is an array. The options also contain the runtime environment in `:env`, which includes request parameters in `options[:env]['grape.request.params']`.\n\nAny additional options defined on the entity exposure are included as is. In the following example `user` is set to the value of `current_user`.\n\n```ruby\nclass Status \u003c Grape::Entity\n  expose :user, if: lambda { |instance, options| options[:user] } do |instance, options|\n    # examine available environment keys with `p options[:env].keys`\n    options[:user]\n  end\nend\n```\n\n```\npresent s, with: Status, user: current_user\n```\n\n#### Passing Additional Option To Nested Exposure\nSometimes you want to pass additional options or parameters to nested a exposure. For example, let's say that you need to expose an address for a contact info and it has two different formats: **full** and **simple**. You can pass an additional `full_format` option to specify which format to render.\n\n```ruby\n# api/contact.rb\nexpose :contact_info do\n  expose :phone\n  expose :address do |instance, options|\n    # use `#merge` to extend options and then pass the new version of options to the nested entity\n    API::Entities::Address.represent instance.address, options.merge(full_format: instance.need_full_format?)\n  end\n  expose :email, if: lambda { |instance, options| options[:type] == :full }\nend\n\n# api/address.rb\nexpose :state, if: lambda {|instance, options| !!options[:full_format]}      # the new option could be retrieved in options hash for conditional exposure\nexpose :city, if: lambda {|instance, options| !!options[:full_format]}\nexpose :street do |instance, options|\n  # the new option could be retrieved in options hash for runtime exposure\n  !!options[:full_format] ? instance.full_street_name : instance.simple_street_name\nend\n```\n**Notice**: In the above code, you should pay attention to [**Safe Exposure**](#safe-exposure) yourself. For example, `instance.address` might be `nil`  and it is better to expose it as nil directly.\n\n#### Attribute Path Tracking\n\nSometimes, especially when there are nested attributes, you might want to know which attribute\nis being exposed. For example, some APIs allow users to provide a parameter to control which fields\nwill be included in (or excluded from) the response.\n\nGrapeEntity can track the path of each attribute, which you can access during conditions checking\nor runtime exposure via `options[:attr_path]`.\n\nThe attribute path is an array. The last item of this array is the name (alias) of current attribute.\nIf the attribute is nested, the former items are names (aliases) of its ancestor attributes.\n\nExample:\n\n```ruby\nclass Status \u003c Grape::Entity\n  expose :user  # path is [:user]\n  expose :foo, as: :bar  # path is [:bar]\n  expose :a do\n    expose :b, as: :xx do\n      expose :c  # path is [:a, :xx, :c]\n    end\n  end\nend\n```\n\n### Using the Exposure DSL\n\nGrape ships with a DSL to easily define entities within the context of an existing class:\n\n```ruby\nclass Status\n  include Grape::Entity::DSL\n\n  entity :text, :user_id do\n    expose :detailed, if: :conditional\n  end\nend\n```\n\nThe above will automatically create a `Status::Entity` class and define properties on it according to the same rules as above. If you only want to define simple exposures you don't have to supply a block and can instead simply supply a list of comma-separated symbols.\n\n### Using Entities\n\nWith Grape, once an entity is defined, it can be used within endpoints, by calling `present`. The `present` method accepts two arguments, the `object` to be presented and the `options` associated with it. The options hash must always include `:with`, which defines the entity to expose (unless namespaced entity classes are used, see [next section](#entity-organization)).\nIf the entity includes documentation it can be included in an endpoint's description.\n\n```ruby\nmodule API\n  class Statuses \u003c Grape::API\n    version 'v1'\n\n    desc 'Statuses.', {\n      params: API::Entities::Status.documentation\n    }\n    get '/statuses' do\n      statuses = Status.all\n      type = current_user.admin? ? :full : :default\n      present statuses, with: API::Entities::Status, type: type\n    end\n  end\nend\n```\n\n### Entity Organization\n\nIn addition to separately organizing entities, it may be useful to put them as namespaced classes underneath the model they represent.\n\n```ruby\nclass Status\n  def entity\n    Entity.new(self)\n  end\n\n  class Entity \u003c Grape::Entity\n    expose :text, :user_id\n  end\nend\n```\n\nIf you organize your entities this way, Grape will automatically detect the `Entity` class and use it to present your models. In this example, if you added `present Status.new` to your endpoint, Grape would automatically detect that there is a `Status::Entity` class and use that as the representative entity. This can still be overridden by using the `:with` option or an explicit `represents` call.\n\n### Caveats\n\nEntities with duplicate exposure names and conditions will silently overwrite one another. In the following example, when `object.check` equals \"foo\", only `field_a` will be exposed. However, when `object.check` equals \"bar\" both `field_b` and `foo` will be exposed.\n\n```ruby\nmodule API\n  module Entities\n    class Status \u003c Grape::Entity\n      expose :field_a, :foo, if: lambda { |object, options| object.check == \"foo\" }\n      expose :field_b, :foo, if: lambda { |object, options| object.check == \"bar\" }\n    end\n  end\nend\n```\n\nThis can be problematic, when you have mixed collections. Using `respond_to?` is safer.\n\n```ruby\nmodule API\n  module Entities\n    class Status \u003c Grape::Entity\n      expose :field_a, if: lambda { |object, options| object.check == \"foo\" }\n      expose :field_b, if: lambda { |object, options| object.check == \"bar\" }\n      expose :foo, if: lambda { |object, options| object.respond_to?(:foo) }\n    end\n  end\nend\n```\n\nAlso note that an `ArgumentError` is raised when unknown options are passed to either `expose` or `with_options`.\n\n### Preloading Associations\n\nUse [Grape::Entity::Preloader](https://github.com/OuYangJinTing/grape-entity-preloader) to preload associations and callbacks and avoid N+1 operations.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n    gem 'grape-entity'\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install grape-entity\n\n## Testing with Entities\n\nTest API request/response as usual.\n\nAlso see [Grape Entity Matchers](https://github.com/agileanimal/grape-entity-matchers).\n\n## Project Resources\n\n* Need help? [Grape Google Group](http://groups.google.com/group/ruby-grape)\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\n## Copyright\n\nCopyright (c) 2010-2016 Michael Bleigh, Intridea, Inc., ruby-grape and Contributors.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activerecord","activejob","mvc","crash-reporting","rubygem","rubocop","code-formatter","static-code-analysis","error-handler","rspec"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/630","html_url":"https://ruby.ecosyste.ms/projects/630"}