{"id":231,"name":null,"description":"Map incoming controller parameters to named scopes in your resources","url":"https://github.com/heartcombo/has_scope","last_synced_at":"2026-04-30T16:30:27.559Z","repository":{"id":743900,"uuid":"395276","full_name":"heartcombo/has_scope","owner":"heartcombo","description":"Map incoming controller parameters to named scopes in your resources","archived":false,"fork":false,"pushed_at":"2026-03-27T12:50:52.000Z","size":183,"stargazers_count":1728,"open_issues_count":3,"forks_count":87,"subscribers_count":21,"default_branch":"main","last_synced_at":"2026-04-23T13:04:57.830Z","etag":null,"topics":[],"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/heartcombo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-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":"2009-12-04T11:45:59.000Z","updated_at":"2026-04-23T09:16:28.000Z","dependencies_parsed_at":"2026-02-27T10:02:59.855Z","dependency_job_id":null,"html_url":"https://github.com/heartcombo/has_scope","commit_stats":{"total_commits":188,"total_committers":39,"mean_commits":4.82051282051282,"dds":0.5851063829787234,"last_synced_commit":"7cb25ad9b9e2ed343a4f17adb1f8158c9792be1d"},"previous_names":["plataformatec/has_scope"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/heartcombo/has_scope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/sbom","scorecard":{"id":459127,"data":{"date":"2025-08-11","repo":{"name":"github.com/heartcombo/has_scope","commit":"823c5c48dc0c26897178865e2fd92460794f7ef5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","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":"Code-Review","score":0,"reason":"Found 2/26 approved changesets -- score normalized to 0","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","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/test.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/heartcombo/has_scope/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/heartcombo/has_scope/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 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":"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":"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: MIT-LICENSE:0","Info: FSF or OSI recognized license: MIT License: MIT-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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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 7 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"}},{"name":"Vulnerabilities","score":0,"reason":"19 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-fwhr-88qx-h9g7","Warn: Project is vulnerable to: GHSA-vfg9-r3fq-jvx4","Warn: Project is vulnerable to: GHSA-vfm5-rmrh-j26v","Warn: Project is vulnerable to: GHSA-x76w-6vjr-8xgj","Warn: Project is vulnerable to: GHSA-353f-x4gh-cqq8","Warn: Project is vulnerable to: GHSA-5w6v-399v-w3cc","Warn: Project is vulnerable to: GHSA-mrxw-mxhj-p664","Warn: Project is vulnerable to: GHSA-r95h-9x8f-r3f7","Warn: Project is vulnerable to: GHSA-vvfq-8hwr-qm4m","Warn: Project is vulnerable to: GHSA-7g2v-jj9q-g3rg","Warn: Project is vulnerable to: GHSA-7wqh-767x-r66v","Warn: Project is vulnerable to: GHSA-8cgq-6mh2-7j6v","Warn: Project is vulnerable to: GHSA-gjh7-p2fx-99vx","Warn: Project is vulnerable to: GHSA-9j94-67jr-4cqj","Warn: Project is vulnerable to: GHSA-2x5m-9ch4-qgrr","Warn: Project is vulnerable to: GHSA-638j-pmjw-jq48","Warn: Project is vulnerable to: GHSA-cfjx-w229-hgx5","Warn: Project is vulnerable to: GHSA-rxv5-gxqc-xx8g","Warn: Project is vulnerable to: GHSA-w8gc-x259-rc7x"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T10:37:29.975Z","repository_id":743900,"created_at":"2025-08-19T10:37:29.975Z","updated_at":"2025-08-19T10:37:29.975Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32240613,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: 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":"heartcombo","name":"heartcombo","uuid":"59584037","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":"heartcombo","company":null,"icon_url":"https://avatars.githubusercontent.com/u/59584037?v=4","repositories_count":8,"last_synced_at":"2024-03-25T22:26:04.657Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/heartcombo","funding_links":[],"total_stars":37785,"followers":118,"following":0,"created_at":"2022-11-02T19:09:08.288Z","updated_at":"2024-03-25T22:26:05.889Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo/repositories"},"packages":[{"id":10430386,"name":"github.com/heartcombo/has_scope","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/heartcombo/has_scope","keywords_array":[],"namespace":null,"versions_count":12,"first_release_published_at":"2010-01-29T18:08:37.000Z","latest_release_published_at":"2025-10-03T13:50:31.000Z","latest_release_number":"v0.9.0","last_synced_at":"2026-04-23T13:56:59.933Z","created_at":"2024-06-23T04:45:26.183Z","updated_at":"2026-04-23T13:56:59.934Z","registry_url":"https://pkg.go.dev/github.com/heartcombo/has_scope","install_command":"go get github.com/heartcombo/has_scope","documentation_url":"https://pkg.go.dev/github.com/heartcombo/has_scope#section-documentation","metadata":{},"repo_metadata":{"id":743900,"uuid":"395276","full_name":"heartcombo/has_scope","owner":"heartcombo","description":"Map incoming controller parameters to named scopes in your resources","archived":false,"fork":false,"pushed_at":"2025-10-24T14:21:21.000Z","size":187,"stargazers_count":1694,"open_issues_count":3,"forks_count":88,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-10-27T22:04:16.629Z","etag":null,"topics":[],"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/heartcombo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-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":"2009-12-04T11:45:59.000Z","updated_at":"2025-10-27T12:03:14.000Z","dependencies_parsed_at":"2023-01-13T10:39:08.072Z","dependency_job_id":"e5283cce-b566-4b5c-97fc-aecd3f9f5d8a","html_url":"https://github.com/heartcombo/has_scope","commit_stats":{"total_commits":188,"total_committers":39,"mean_commits":4.82051282051282,"dds":0.5851063829787234,"last_synced_commit":"7cb25ad9b9e2ed343a4f17adb1f8158c9792be1d"},"previous_names":["plataformatec/has_scope"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/heartcombo/has_scope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/sbom","scorecard":{"id":459127,"data":{"date":"2025-08-11","repo":{"name":"github.com/heartcombo/has_scope","commit":"823c5c48dc0c26897178865e2fd92460794f7ef5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","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":"Code-Review","score":0,"reason":"Found 2/26 approved changesets -- score normalized to 0","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","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/test.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/heartcombo/has_scope/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/heartcombo/has_scope/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 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":"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":"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: MIT-LICENSE:0","Info: FSF or OSI recognized license: MIT License: MIT-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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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 7 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"}},{"name":"Vulnerabilities","score":0,"reason":"19 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-fwhr-88qx-h9g7","Warn: Project is vulnerable to: GHSA-vfg9-r3fq-jvx4","Warn: Project is vulnerable to: GHSA-vfm5-rmrh-j26v","Warn: Project is vulnerable to: GHSA-x76w-6vjr-8xgj","Warn: Project is vulnerable to: GHSA-353f-x4gh-cqq8","Warn: Project is vulnerable to: GHSA-5w6v-399v-w3cc","Warn: Project is vulnerable to: GHSA-mrxw-mxhj-p664","Warn: Project is vulnerable to: GHSA-r95h-9x8f-r3f7","Warn: Project is vulnerable to: GHSA-vvfq-8hwr-qm4m","Warn: Project is vulnerable to: GHSA-7g2v-jj9q-g3rg","Warn: Project is vulnerable to: GHSA-7wqh-767x-r66v","Warn: Project is vulnerable to: GHSA-8cgq-6mh2-7j6v","Warn: Project is vulnerable to: GHSA-gjh7-p2fx-99vx","Warn: Project is vulnerable to: GHSA-9j94-67jr-4cqj","Warn: Project is vulnerable to: GHSA-2x5m-9ch4-qgrr","Warn: Project is vulnerable to: GHSA-638j-pmjw-jq48","Warn: Project is vulnerable to: GHSA-cfjx-w229-hgx5","Warn: Project is vulnerable to: GHSA-rxv5-gxqc-xx8g","Warn: Project is vulnerable to: GHSA-w8gc-x259-rc7x"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T10:37:29.975Z","repository_id":743900,"created_at":"2025-08-19T10:37:29.975Z","updated_at":"2025-08-19T10:37:29.975Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281371805,"owners_count":26489532,"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","status":"online","status_checked_at":"2025-10-28T02:00:06.022Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"heartcombo","name":"heartcombo","uuid":"59584037","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":"heartcombo","company":null,"icon_url":"https://avatars.githubusercontent.com/u/59584037?v=4","repositories_count":8,"last_synced_at":"2024-03-25T22:26:04.657Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/heartcombo","funding_links":[],"total_stars":37785,"followers":118,"following":0,"created_at":"2022-11-02T19:09:08.288Z","updated_at":"2024-03-25T22:26:05.889Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-10-28T02:23:47.164Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":6.892092295290424,"dependent_packages_count":6.456365915920028,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":6.674229105605226},"purl":"pkg:golang/github.com/heartcombo/has_scope","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/heartcombo/has_scope","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/heartcombo/has_scope","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/heartcombo/has_scope/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-03T16:01:24.597Z","issues_count":56,"pull_requests_count":48,"avg_time_to_close_issue":19603665.854545455,"avg_time_to_close_pull_request":9917456.555555556,"issues_closed_count":55,"pull_requests_closed_count":45,"pull_request_authors_count":38,"issue_authors_count":52,"avg_comments_per_issue":2.8214285714285716,"avg_comments_per_pull_request":2.4583333333333335,"merged_pull_requests_count":28,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1150.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/issues","maintainers":[{"login":"carlosantoniodasilva","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carlosantoniodasilva"}],"active_maintainers":[{"login":"carlosantoniodasilva","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carlosantoniodasilva"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fheartcombo%2Fhas_scope/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fheartcombo%2Fhas_scope/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fheartcombo%2Fhas_scope/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fheartcombo%2Fhas_scope/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fheartcombo%2Fhas_scope/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2107155,"maintainers_count":0,"namespaces_count":782439,"keywords_count":112823,"github":"golang","metadata":{"funded_packages_count":53495},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-19T05:14:45.920Z","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":12243751,"name":"has_scope","ecosystem":"rubygems","description":"Maps controller filters to your resource scopes","homepage":"https://github.com/heartcombo/has_scope","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/heartcombo/has_scope","keywords_array":[],"namespace":null,"versions_count":17,"first_release_published_at":"2009-12-04T12:57:39.543Z","latest_release_published_at":"2025-10-03T13:50:50.475Z","latest_release_number":"0.9.0","last_synced_at":"2026-04-24T21:01:10.664Z","created_at":"2025-10-07T03:24:48.054Z","updated_at":"2026-04-24T21:03:02.342Z","registry_url":"https://gem.coop/gems/has_scope","install_command":"gem install has_scope -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/has_scope/","metadata":{"funding":null},"repo_metadata":{"id":743900,"uuid":"395276","full_name":"heartcombo/has_scope","owner":"heartcombo","description":"Map incoming controller parameters to named scopes in your resources","archived":false,"fork":false,"pushed_at":"2026-03-27T12:50:52.000Z","size":183,"stargazers_count":1728,"open_issues_count":3,"forks_count":87,"subscribers_count":21,"default_branch":"main","last_synced_at":"2026-04-23T13:04:57.830Z","etag":null,"topics":[],"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/heartcombo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-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":"2009-12-04T11:45:59.000Z","updated_at":"2026-04-23T09:16:28.000Z","dependencies_parsed_at":"2026-02-27T10:02:59.855Z","dependency_job_id":null,"html_url":"https://github.com/heartcombo/has_scope","commit_stats":{"total_commits":188,"total_committers":39,"mean_commits":4.82051282051282,"dds":0.5851063829787234,"last_synced_commit":"7cb25ad9b9e2ed343a4f17adb1f8158c9792be1d"},"previous_names":["plataformatec/has_scope"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/heartcombo/has_scope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/sbom","scorecard":{"id":459127,"data":{"date":"2025-08-11","repo":{"name":"github.com/heartcombo/has_scope","commit":"823c5c48dc0c26897178865e2fd92460794f7ef5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","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":"Code-Review","score":0,"reason":"Found 2/26 approved changesets -- score normalized to 0","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","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/test.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/heartcombo/has_scope/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/heartcombo/has_scope/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 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":"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":"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: MIT-LICENSE:0","Info: FSF or OSI recognized license: MIT License: MIT-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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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 7 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"}},{"name":"Vulnerabilities","score":0,"reason":"19 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-fwhr-88qx-h9g7","Warn: Project is vulnerable to: GHSA-vfg9-r3fq-jvx4","Warn: Project is vulnerable to: GHSA-vfm5-rmrh-j26v","Warn: Project is vulnerable to: GHSA-x76w-6vjr-8xgj","Warn: Project is vulnerable to: GHSA-353f-x4gh-cqq8","Warn: Project is vulnerable to: GHSA-5w6v-399v-w3cc","Warn: Project is vulnerable to: GHSA-mrxw-mxhj-p664","Warn: Project is vulnerable to: GHSA-r95h-9x8f-r3f7","Warn: Project is vulnerable to: GHSA-vvfq-8hwr-qm4m","Warn: Project is vulnerable to: GHSA-7g2v-jj9q-g3rg","Warn: Project is vulnerable to: GHSA-7wqh-767x-r66v","Warn: Project is vulnerable to: GHSA-8cgq-6mh2-7j6v","Warn: Project is vulnerable to: GHSA-gjh7-p2fx-99vx","Warn: Project is vulnerable to: GHSA-9j94-67jr-4cqj","Warn: Project is vulnerable to: GHSA-2x5m-9ch4-qgrr","Warn: Project is vulnerable to: GHSA-638j-pmjw-jq48","Warn: Project is vulnerable to: GHSA-cfjx-w229-hgx5","Warn: Project is vulnerable to: GHSA-rxv5-gxqc-xx8g","Warn: Project is vulnerable to: GHSA-w8gc-x259-rc7x"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T10:37:29.975Z","repository_id":743900,"created_at":"2025-08-19T10:37:29.975Z","updated_at":"2025-08-19T10:37:29.975Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32240613,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: 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":"heartcombo","name":"heartcombo","uuid":"59584037","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":"heartcombo","company":null,"icon_url":"https://avatars.githubusercontent.com/u/59584037?v=4","repositories_count":8,"last_synced_at":"2024-03-25T22:26:04.657Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/heartcombo","funding_links":[],"total_stars":37785,"followers":118,"following":0,"created_at":"2022-11-02T19:09:08.288Z","updated_at":"2024-03-25T22:26:05.889Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo/repositories"},"tags":[{"name":"v0.9.0","sha":"42e35fbbd3bf17c0b7ebeef621959ce487ad6398","kind":"tag","published_at":"2025-10-03T13:50:37.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.9.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.9.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.9.0/manifests"},{"name":"v0.8.2","sha":"432ce00dfbe34ed623e327cd732ce3eb2e7f115f","kind":"tag","published_at":"2023-10-11T22:00:13.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.8.2","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.8.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.2/manifests"},{"name":"v0.8.1","sha":"43ff6c33d71226dc258b3a8b68b917da297ce29d","kind":"tag","published_at":"2023-02-04T12:53:10.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.8.1","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.8.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.1/manifests"},{"name":"v0.8.0","sha":"9004d8d3e8944bf5ddccd72efd14102c4c954c5b","kind":"tag","published_at":"2021-02-15T13:34:20.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.8.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.0/manifests"},{"name":"v0.7.2","sha":"e6b5295590deef0259b7f5fd27a45e259b59ed2b","kind":"tag","published_at":"2018-04-10T21:36:24.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.7.2","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.7.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.2/manifests"},{"name":"v0.7.1","sha":"83c99d7b91de68c8f3b5148c8ab61c6ae2d14095","kind":"tag","published_at":"2017-05-01T20:49:18.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.7.1","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.7.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.1/manifests"},{"name":"v0.7.0","sha":"bf7a01f91aca7af42e59f44c0a3e670c761570b3","kind":"tag","published_at":"2015-12-09T16:59:51.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.7.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"893b8fe674c7bcb6dec45dce08ad6eec433a1490","kind":"tag","published_at":"2015-02-08T15:38:04.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.6.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.6.0/manifests"},{"name":"v0.6.0.rc","sha":"3a09b814637ccc4ca634931d9b729b1b26fc89af","kind":"tag","published_at":"2013-05-09T23:45:48.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.6.0.rc","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.6.0.rc","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.6.0.rc","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.6.0.rc","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.6.0.rc/manifests"},{"name":"v0.5.1","sha":"b9cee9e1301a7b6e16db6ec78e01dc4bfbc68faf","kind":"commit","published_at":"2011-08-02T08:46:25.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.5.1","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"249a8c885e78cd404a98b99ec8e15cc84e81bac4","kind":"commit","published_at":"2010-03-23T16:28:50.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.5.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.5.0/manifests"},{"name":"v0.4.2","sha":"7ab144fab01c3b19c65cbb018c17cf02255f1bd4","kind":"commit","published_at":"2010-02-05T18:41:00.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.4.2","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"384754c841ce5450a6cb66e8ac357645cfb00e3b","kind":"commit","published_at":"2010-01-29T18:08:37.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.4.1","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.4.1/manifests"}]},"repo_metadata_updated_at":"2026-04-24T21:03:02.342Z","dependent_packages_count":0,"downloads":66272086,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.4476692005752657,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":1.811222007158382,"average":0.564722801933412},"purl":"pkg:gem/has_scope?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/has_scope","docker_dependents_count":42,"docker_downloads_count":25859,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/has_scope","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/has_scope/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-23T13:01:47.417Z","issues_count":56,"pull_requests_count":48,"avg_time_to_close_issue":19603665.854545455,"avg_time_to_close_pull_request":9917456.555555556,"issues_closed_count":55,"pull_requests_closed_count":45,"pull_request_authors_count":38,"issue_authors_count":52,"avg_comments_per_issue":2.8214285714285716,"avg_comments_per_pull_request":2.4583333333333335,"merged_pull_requests_count":28,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1150.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/issues","maintainers":[{"login":"carlosantoniodasilva","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carlosantoniodasilva"}],"active_maintainers":[{"login":"carlosantoniodasilva","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carlosantoniodasilva"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/has_scope/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/has_scope/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/has_scope/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/has_scope/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/has_scope/codemeta","maintainers":[{"uuid":"429","login":"cantoniodasilva","name":null,"email":null,"url":null,"packages_count":67,"html_url":"https://gem.coop/profiles/cantoniodasilva","role":null,"created_at":"2025-10-07T20:17:34.968Z","updated_at":"2025-10-07T20:17:34.968Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/cantoniodasilva/packages"},{"uuid":"47349","login":"rafaelfranca","name":null,"email":null,"url":null,"packages_count":107,"html_url":"https://gem.coop/profiles/rafaelfranca","role":null,"created_at":"2025-10-07T20:17:35.005Z","updated_at":"2025-10-07T20:17:35.005Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/rafaelfranca/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":190266,"maintainers_count":67442,"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"}},{"id":222718,"name":"has_scope","ecosystem":"rubygems","description":"Maps controller filters to your resource scopes","homepage":"https://github.com/heartcombo/has_scope","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/heartcombo/has_scope","keywords_array":[],"namespace":null,"versions_count":17,"first_release_published_at":"2009-12-04T12:57:39.543Z","latest_release_published_at":"2025-10-03T13:50:50.475Z","latest_release_number":"0.9.0","last_synced_at":"2026-04-25T02:32:05.458Z","created_at":"2022-04-06T00:32:43.710Z","updated_at":"2026-04-25T02:34:48.696Z","registry_url":"https://rubygems.org/gems/has_scope","install_command":"gem install has_scope -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/has_scope/","metadata":{"funding":null},"repo_metadata":{"id":743900,"uuid":"395276","full_name":"heartcombo/has_scope","owner":"heartcombo","description":"Map incoming controller parameters to named scopes in your resources","archived":false,"fork":false,"pushed_at":"2026-03-27T12:50:52.000Z","size":183,"stargazers_count":1736,"open_issues_count":3,"forks_count":87,"subscribers_count":21,"default_branch":"main","last_synced_at":"2026-04-16T00:07:13.685Z","etag":null,"topics":[],"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/heartcombo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-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":"2009-12-04T11:45:59.000Z","updated_at":"2026-04-10T17:50:22.000Z","dependencies_parsed_at":"2026-02-27T10:02:59.855Z","dependency_job_id":null,"html_url":"https://github.com/heartcombo/has_scope","commit_stats":{"total_commits":188,"total_committers":39,"mean_commits":4.82051282051282,"dds":0.5851063829787234,"last_synced_commit":"7cb25ad9b9e2ed343a4f17adb1f8158c9792be1d"},"previous_names":["plataformatec/has_scope"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/heartcombo/has_scope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/sbom","scorecard":{"id":459127,"data":{"date":"2025-08-11","repo":{"name":"github.com/heartcombo/has_scope","commit":"823c5c48dc0c26897178865e2fd92460794f7ef5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","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":"Code-Review","score":0,"reason":"Found 2/26 approved changesets -- score normalized to 0","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","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/test.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/heartcombo/has_scope/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/heartcombo/has_scope/test.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 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":"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":"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: MIT-LICENSE:0","Info: FSF or OSI recognized license: MIT License: MIT-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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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 7 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"}},{"name":"Vulnerabilities","score":0,"reason":"19 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-fwhr-88qx-h9g7","Warn: Project is vulnerable to: GHSA-vfg9-r3fq-jvx4","Warn: Project is vulnerable to: GHSA-vfm5-rmrh-j26v","Warn: Project is vulnerable to: GHSA-x76w-6vjr-8xgj","Warn: Project is vulnerable to: GHSA-353f-x4gh-cqq8","Warn: Project is vulnerable to: GHSA-5w6v-399v-w3cc","Warn: Project is vulnerable to: GHSA-mrxw-mxhj-p664","Warn: Project is vulnerable to: GHSA-r95h-9x8f-r3f7","Warn: Project is vulnerable to: GHSA-vvfq-8hwr-qm4m","Warn: Project is vulnerable to: GHSA-7g2v-jj9q-g3rg","Warn: Project is vulnerable to: GHSA-7wqh-767x-r66v","Warn: Project is vulnerable to: GHSA-8cgq-6mh2-7j6v","Warn: Project is vulnerable to: GHSA-gjh7-p2fx-99vx","Warn: Project is vulnerable to: GHSA-9j94-67jr-4cqj","Warn: Project is vulnerable to: GHSA-2x5m-9ch4-qgrr","Warn: Project is vulnerable to: GHSA-638j-pmjw-jq48","Warn: Project is vulnerable to: GHSA-cfjx-w229-hgx5","Warn: Project is vulnerable to: GHSA-rxv5-gxqc-xx8g","Warn: Project is vulnerable to: GHSA-w8gc-x259-rc7x"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T10:37:29.975Z","repository_id":743900,"created_at":"2025-08-19T10:37:29.975Z","updated_at":"2025-08-19T10:37:29.975Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31976805,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T16:27:12.723Z","status":"ssl_error","status_checked_at":"2026-04-18T16:27:11.140Z","response_time":103,"last_error":"SSL_read: 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":"heartcombo","name":"heartcombo","uuid":"59584037","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":"heartcombo","company":null,"icon_url":"https://avatars.githubusercontent.com/u/59584037?v=4","repositories_count":8,"last_synced_at":"2024-03-25T22:26:04.657Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/heartcombo","funding_links":[],"total_stars":37785,"followers":118,"following":0,"created_at":"2022-11-02T19:09:08.288Z","updated_at":"2024-03-25T22:26:05.889Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heartcombo/repositories"},"tags":[{"name":"v0.9.0","sha":"42e35fbbd3bf17c0b7ebeef621959ce487ad6398","kind":"tag","published_at":"2025-10-03T13:50:37.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.9.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.9.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.9.0/manifests"},{"name":"v0.8.2","sha":"432ce00dfbe34ed623e327cd732ce3eb2e7f115f","kind":"tag","published_at":"2023-10-11T22:00:13.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.8.2","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.8.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.2/manifests"},{"name":"v0.8.1","sha":"43ff6c33d71226dc258b3a8b68b917da297ce29d","kind":"tag","published_at":"2023-02-04T12:53:10.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.8.1","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.8.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.1/manifests"},{"name":"v0.8.0","sha":"9004d8d3e8944bf5ddccd72efd14102c4c954c5b","kind":"tag","published_at":"2021-02-15T13:34:20.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.8.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.8.0/manifests"},{"name":"v0.7.2","sha":"e6b5295590deef0259b7f5fd27a45e259b59ed2b","kind":"tag","published_at":"2018-04-10T21:36:24.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.7.2","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.7.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.2/manifests"},{"name":"v0.7.1","sha":"83c99d7b91de68c8f3b5148c8ab61c6ae2d14095","kind":"tag","published_at":"2017-05-01T20:49:18.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.7.1","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.7.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.1/manifests"},{"name":"v0.7.0","sha":"bf7a01f91aca7af42e59f44c0a3e670c761570b3","kind":"tag","published_at":"2015-12-09T16:59:51.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.7.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"893b8fe674c7bcb6dec45dce08ad6eec433a1490","kind":"tag","published_at":"2015-02-08T15:38:04.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.6.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.6.0/manifests"},{"name":"v0.6.0.rc","sha":"3a09b814637ccc4ca634931d9b729b1b26fc89af","kind":"tag","published_at":"2013-05-09T23:45:48.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.6.0.rc","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.6.0.rc","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.6.0.rc","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.6.0.rc","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.6.0.rc/manifests"},{"name":"v0.5.1","sha":"b9cee9e1301a7b6e16db6ec78e01dc4bfbc68faf","kind":"commit","published_at":"2011-08-02T08:46:25.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.5.1","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"249a8c885e78cd404a98b99ec8e15cc84e81bac4","kind":"commit","published_at":"2010-03-23T16:28:50.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.5.0","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.5.0/manifests"},{"name":"v0.4.2","sha":"7ab144fab01c3b19c65cbb018c17cf02255f1bd4","kind":"commit","published_at":"2010-02-05T18:41:00.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.4.2","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"384754c841ce5450a6cb66e8ac357645cfb00e3b","kind":"commit","published_at":"2010-01-29T18:08:37.000Z","download_url":"https://codeload.github.com/heartcombo/has_scope/tar.gz/v0.4.1","html_url":"https://github.com/heartcombo/has_scope/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/heartcombo/has_scope@v0.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/tags/v0.4.1/manifests"}]},"repo_metadata_updated_at":"2026-04-25T02:34:48.676Z","dependent_packages_count":36,"downloads":66277021,"downloads_period":"total","dependent_repos_count":19707,"rankings":{"downloads":0.4365473177150121,"dependent_repos_count":0.2575796434027275,"dependent_packages_count":0.6985872146831548,"stargazers_count":1.250543593403285,"forks_count":2.7274450552513914,"docker_downloads_count":2.0550618302650503,"average":1.2376274424534368},"purl":"pkg:gem/has_scope","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/has_scope","docker_dependents_count":42,"docker_downloads_count":25859,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/has_scope","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/has_scope/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2026-04-07T05:00:53.489Z","issues_count":56,"pull_requests_count":48,"avg_time_to_close_issue":19603665.854545455,"avg_time_to_close_pull_request":9917456.555555556,"issues_closed_count":55,"pull_requests_closed_count":45,"pull_request_authors_count":38,"issue_authors_count":52,"avg_comments_per_issue":2.8214285714285716,"avg_comments_per_pull_request":2.4583333333333335,"merged_pull_requests_count":28,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1150.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/issues","maintainers":[{"login":"carlosantoniodasilva","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carlosantoniodasilva"}],"active_maintainers":[{"login":"carlosantoniodasilva","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carlosantoniodasilva"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/has_scope/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/has_scope/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/has_scope/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/has_scope/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/has_scope/codemeta","maintainers":[{"uuid":"429","login":"cantoniodasilva","name":null,"email":null,"url":null,"packages_count":67,"html_url":"https://rubygems.org/profiles/cantoniodasilva","role":null,"created_at":"2022-11-09T09:34:50.222Z","updated_at":"2022-11-09T09:34:50.222Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/cantoniodasilva/packages"},{"uuid":"47349","login":"rafaelfranca","name":null,"email":null,"url":null,"packages_count":120,"html_url":"https://rubygems.org/profiles/rafaelfranca","role":null,"created_at":"2022-11-09T09:34:50.229Z","updated_at":"2022-11-09T09:34:50.229Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/rafaelfranca/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":205414,"maintainers_count":68433,"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"}}],"commits":{"id":3226,"full_name":"heartcombo/has_scope","default_branch":"main","total_commits":214,"total_committers":38,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":5.631578947368421,"dds":0.514018691588785,"past_year_total_commits":19,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":19.0,"past_year_dds":0.0,"last_synced_at":"2026-04-24T21:03:32.342Z","last_synced_commit":"ad5141db29f992be3ef833aeafdfeaf9c704b397","created_at":"2023-03-07T09:16:51.776Z","updated_at":"2026-04-24T21:03:09.877Z","committers":[{"name":"Carlos Antonio da Silva","email":"carlosantoniodasilva@gmail.com","login":"carlosantoniodasilva","count":104},{"name":"José Valim","email":"jose.valim@gmail.com","login":"josevalim","count":25},{"name":"Lucas Mazza","email":"lucas.mazza@plataformatec.com.br","login":"lucasmazza","count":12},{"name":"Rafael Mendonça França","email":"rafaelmfranca@gmail.com","login":"rafaelfranca","count":9},{"name":"Yury Velikanau","email":"yury.velikanau@gmail.com","login":"spectator","count":8},{"name":"Joe Francis","email":"joe@lostapathy.com","login":"lostapathy","count":6},{"name":"Marcos Ferreira","email":"marcosp4f@gmail.com","login":"mracos","count":5},{"name":"Ben Kreeger","email":"ben@kree.gr","login":"kreeger","count":5},{"name":"Tobias Maier","email":"info@tobiasmaier.info","login":"tmaier","count":3},{"name":"Jack Dempsey","email":"jack.dempsey@gmail.com","login":"jackdempsey","count":3},{"name":"Rafael Mendonça França","email":"rafael.franca@plataformatec.com.br","login":null,"count":3},{"name":"Krzysztof Herod","email":"krzysztof.herod@xing.com","login":null,"count":2},{"name":"Leonardo Tegon","email":"leonardo.tegon@plataformatec.com.br","login":"tegon","count":2},{"name":"Max Melentiev","email":"melentievm@gmail.com","login":"printercu","count":2},{"name":"Max Schwenk","email":"maschwenk@gmail.com","login":"maschwenk","count":2},{"name":"Chris Keele","email":"dev@chriskeele.com","login":null,"count":1},{"name":"Atul Bhosale","email":"atul1bhosale@gmail.com","login":"Atul9","count":1},{"name":"Bruno Casali","email":"brunoocasali@gmail.com","login":"brunoocasali","count":1},{"name":"Dhyego Fernando","email":"dhyegofernando@gmail.com","login":"dhyegocalota","count":1},{"name":"pinzonjulian","email":"julianpinzoneslava@gmail.com","login":"pinzonjulian","count":1},{"name":"iain","email":"iain@iain.nl","login":"iain","count":1},{"name":"fabianoarruda","email":"fabianoarruda@gmail.com","login":"fabianoarruda","count":1},{"name":"beerlington","email":"pete@lette.us","login":"beerlington","count":1},{"name":"Yves Senn","email":"yves.senn@gmail.com","login":"senny","count":1},{"name":"Vasiliy Ermolovich","email":"younash@gmail.com","login":"nashby","count":1},{"name":"Tyler Rick","email":"tyler@tylerrick.com","login":"TylerRick","count":1},{"name":"Thomas Floyd Wright","email":"tfwright@gmail.com","login":"tfwright","count":1},{"name":"Salimane Adjao Moustapha","email":"me@salimane.com","login":"salimane","count":1},{"name":"Peter Suschlik","email":"peter@suschlik.de","login":"splattael","count":1},{"name":"Peter Goldstein","email":"peter.m.goldstein@gmail.com","login":"petergoldstein","count":1},{"name":"Nicholas Rutherford","email":"nick.rutherford@gmail.com","login":"nruth","count":1},{"name":"Igor Zubkov","email":"igor.zubkov@gmail.com","login":"biow0lf","count":1},{"name":"Hugo Baraúna","email":"hugo.barauna@gmail.com","login":"hugobarauna","count":1},{"name":"George Guimarães","email":"george@plataformatec.com.br","login":"georgeguimaraes","count":1},{"name":"Gabriel Sobrinho","email":"gabriel.sobrinho@gmail.com","login":"sobrinho","count":1},{"name":"Fabio Kreusch","email":"fabiokr@gmail.com","login":"fabiokr","count":1},{"name":"Douglas Barbosa Alexandre","email":"dbalexandre@gmail.com","login":"dbalexandre","count":1},{"name":"Dimitrij Denissenko","email":"dimitrij.denissenko@blacksquaremedia.com","login":"dim","count":1}],"past_year_committers":[{"name":"Carlos Antonio da Silva","email":"carlosantoniodasilva@gmail.com","login":"carlosantoniodasilva","count":19}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-25T00:00:08.654Z","repositories_count":6217713,"commits_count":899275546,"contributors_count":34884079,"owners_count":1145129,"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":"heartcombo/has_scope","html_url":"https://github.com/heartcombo/has_scope","last_synced_at":"2026-04-23T13:01:47.417Z","status":"error","issues_count":56,"pull_requests_count":48,"avg_time_to_close_issue":19603665.854545455,"avg_time_to_close_pull_request":9917456.555555556,"issues_closed_count":55,"pull_requests_closed_count":45,"pull_request_authors_count":38,"issue_authors_count":52,"avg_comments_per_issue":2.8214285714285716,"avg_comments_per_pull_request":2.4583333333333335,"merged_pull_requests_count":28,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1150.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"created_at":"2023-05-12T11:54:01.991Z","updated_at":"2026-04-23T13:01:47.417Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/heartcombo%2Fhas_scope/issues","issue_labels_count":{},"pull_request_labels_count":{"Needs review":1},"issue_author_associations_count":{"NONE":52,"CONTRIBUTOR":4},"pull_request_author_associations_count":{"CONTRIBUTOR":28,"NONE":17,"MEMBER":3},"issue_authors":{"femto":3,"ausminternet":2,"kstevens715":2,"Altonymous":1,"OssieHirst":1,"fabianoarruda":1,"GuyPaddock":1,"zmillman":1,"hschne":1,"alaz":1,"alecvn":1,"narutoo9x":1,"tjoyal":1,"bnussey":1,"hrdwdmrbl":1,"TylerRick":1,"arnaudbriche":1,"JonaC22":1,"clubbavi":1,"danielgatis":1,"hoahm":1,"atomaka":1,"phlegx":1,"nruth":1,"betelgeuse":1,"ehahn9":1,"leonardochen":1,"hidr0":1,"patricklehmann":1,"sriedel":1,"mikesnare":1,"scottmartin":1,"hcyildirim":1,"youroff":1,"murtazabasrai":1,"ecdpalma":1,"atitan":1,"fluxsaas":1,"kaspth":1,"pinzonjulian":1,"maxrosecollins":1,"jeffnappi":1,"baka-san":1,"mzemel":1,"kairos0ne":1,"ripan":1,"spohlenz":1,"masudhossain":1,"joshwalsh":1,"codecalypso":1,"evan-duncan":1,"adolfopeccin":1},"pull_request_authors":{"carlosantoniodasilva":3,"lucasmazza":3,"j3pic":3,"printercu":2,"christhekeele":2,"kreeger":2,"jusleg":2,"dbalexandre":1,"stevenhan2":1,"varyonic":1,"gobijan":1,"mracos":1,"GuyPaddock":1,"iain":1,"krzysiekherod":1,"tfwright":1,"petergoldstein":1,"brunoocasali":1,"phlegx":1,"pinzonjulian":1,"johnmazzucco":1,"maschwenk":1,"spectator":1,"fabiokr":1,"senny":1,"biow0lf":1,"Atul9":1,"TylerRick":1,"fabianoarruda":1,"dhyegocalota":1,"jackdempsey":1,"dgmike":1,"lostapathy":1,"nruth":1,"develon":1,"dim":1,"seanpdoyle":1,"salimane":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-25T00:00:14.967Z","repositories_count":14386555,"issues_count":34396482,"pull_requests_count":112636650,"authors_count":11244842,"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":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"MEMBER":1},"past_year_issue_authors":{},"past_year_pull_request_authors":{"carlosantoniodasilva":1},"maintainers":[{"login":"carlosantoniodasilva","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carlosantoniodasilva"}],"active_maintainers":[{"login":"carlosantoniodasilva","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/carlosantoniodasilva"}]},"events":{"total":{"DeleteEvent":1,"PullRequestEvent":3,"ForkEvent":2,"WatchEvent":58,"IssueCommentEvent":1,"PushEvent":7,"CreateEvent":1},"last_year":{"DeleteEvent":1,"PullRequestEvent":2,"ForkEvent":1,"WatchEvent":46,"PushEvent":7,"CreateEvent":1}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/test.yml","sha":null,"kind":"manifest","created_at":"2023-01-13T10:39:07.993Z","updated_at":"2023-01-13T10:39:07.993Z","repository_link":"https://github.com/heartcombo/has_scope/blob/main/.github/workflows/test.yml","dependencies":[{"id":6875553539,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6875553540,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2023-01-13T10:39:08.011Z","updated_at":"2023-01-13T10:39:08.011Z","repository_link":"https://github.com/heartcombo/has_scope/blob/main/Gemfile","dependencies":[{"id":6875553541,"package_name":"actionpack","ecosystem":"rubygems","requirements":"~\u003e 7.0.0","direct":true,"kind":"runtime","optional":false},{"id":6875553542,"package_name":"activesupport","ecosystem":"rubygems","requirements":"~\u003e 7.0.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile.lock","sha":null,"kind":"lockfile","created_at":"2023-01-13T10:39:08.027Z","updated_at":"2023-01-13T10:39:08.027Z","repository_link":"https://github.com/heartcombo/has_scope/blob/main/Gemfile.lock","dependencies":[{"id":6875553543,"package_name":"has_scope","ecosystem":"rubygems","requirements":"0.8.0","direct":false,"kind":"runtime","optional":false},{"id":6875553544,"package_name":"actionpack","ecosystem":"rubygems","requirements":"7.0.4","direct":false,"kind":"runtime","optional":false},{"id":6875553545,"package_name":"actionview","ecosystem":"rubygems","requirements":"7.0.4","direct":false,"kind":"runtime","optional":false},{"id":6875553546,"package_name":"activesupport","ecosystem":"rubygems","requirements":"7.0.4","direct":false,"kind":"runtime","optional":false},{"id":6875553547,"package_name":"builder","ecosystem":"rubygems","requirements":"3.2.4","direct":false,"kind":"runtime","optional":false},{"id":6875553548,"package_name":"concurrent-ruby","ecosystem":"rubygems","requirements":"1.1.10","direct":false,"kind":"runtime","optional":false},{"id":6875553549,"package_name":"crass","ecosystem":"rubygems","requirements":"1.0.6","direct":false,"kind":"runtime","optional":false},{"id":6875553550,"package_name":"erubi","ecosystem":"rubygems","requirements":"1.11.0","direct":false,"kind":"runtime","optional":false},{"id":6875553551,"package_name":"i18n","ecosystem":"rubygems","requirements":"1.12.0","direct":false,"kind":"runtime","optional":false},{"id":6875553552,"package_name":"loofah","ecosystem":"rubygems","requirements":"2.19.0","direct":false,"kind":"runtime","optional":false},{"id":6875553553,"package_name":"metaclass","ecosystem":"rubygems","requirements":"0.0.4","direct":false,"kind":"runtime","optional":false},{"id":6875553554,"package_name":"mini_portile2","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":6875553555,"package_name":"minitest","ecosystem":"rubygems","requirements":"5.16.3","direct":false,"kind":"runtime","optional":false},{"id":6875553556,"package_name":"mocha","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":6875553557,"package_name":"nokogiri","ecosystem":"rubygems","requirements":"1.13.9","direct":false,"kind":"runtime","optional":false},{"id":6875553558,"package_name":"racc","ecosystem":"rubygems","requirements":"1.6.0","direct":false,"kind":"runtime","optional":false},{"id":6875553559,"package_name":"rack","ecosystem":"rubygems","requirements":"2.2.4","direct":false,"kind":"runtime","optional":false},{"id":6875553560,"package_name":"rack-test","ecosystem":"rubygems","requirements":"2.0.2","direct":false,"kind":"runtime","optional":false},{"id":6875553561,"package_name":"rails-dom-testing","ecosystem":"rubygems","requirements":"2.0.3","direct":false,"kind":"runtime","optional":false},{"id":6875553562,"package_name":"rails-html-sanitizer","ecosystem":"rubygems","requirements":"1.4.3","direct":false,"kind":"runtime","optional":false},{"id":6875553563,"package_name":"rake","ecosystem":"rubygems","requirements":"13.0.6","direct":false,"kind":"runtime","optional":false},{"id":6875553564,"package_name":"tzinfo","ecosystem":"rubygems","requirements":"2.0.5","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"has_scope.gemspec","sha":null,"kind":"manifest","created_at":"2023-01-13T10:39:08.053Z","updated_at":"2023-01-13T10:39:08.053Z","repository_link":"https://github.com/heartcombo/has_scope/blob/main/has_scope.gemspec","dependencies":[{"id":6875553565,"package_name":"actionpack","ecosystem":"rubygems","requirements":"\u003e= 5.2","direct":true,"kind":"runtime","optional":false},{"id":6875553566,"package_name":"activesupport","ecosystem":"rubygems","requirements":"\u003e= 5.2","direct":true,"kind":"runtime","optional":false},{"id":6875553567,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":6875553568,"package_name":"mocha","ecosystem":"rubygems","requirements":"~\u003e 1.0.0","direct":true,"kind":"development","optional":false}]}],"score":29.79704410017833,"created_at":"2024-12-15T21:38:07.360Z","updated_at":"2026-04-30T16:30:27.560Z","avatar_url":"https://github.com/heartcombo.png","language":"Ruby","monthly_downloads":0,"readme":"## HasScope\n\n[![Gem Version](https://badge.fury.io/rb/has_scope.svg)](https://badge.fury.io/rb/has_scope)\n\n_HasScope_ allows you to dynamically apply named scopes to your resources based on an incoming set of parameters.\n\nThe most common usage is to map incoming controller parameters to named scopes for filtering resources, but it can be used anywhere.\n\n## Installation\n\nAdd `has_scope` to your bundle\n\n```ruby\nbundle add has_scope\n```\n\nor add it manually to your Gemfile if you prefer.\n\n```ruby\ngem 'has_scope'\n```\n\n## Examples\n\nFor the following examples we'll use a model called graduations:\n\n```ruby\nclass Graduation \u003c ActiveRecord::Base\n  scope :featured, -\u003e { where(featured: true) }\n  scope :by_degree, -\u003e degree { where(degree: degree) }\n  scope :by_period, -\u003e started_at, ended_at { where(\"started_at = ? AND ended_at = ?\", started_at, ended_at) }\nend\n```\n\n### Usage 1: Rails Controllers\n\n_HasScope_ exposes the `has_scope` method automatically in all your controllers. This is used to declare the scopes a controller action can use to filter a resource:\n\n```ruby\nclass GraduationsController \u003c ApplicationController\n  has_scope :featured, type: :boolean\n  has_scope :by_degree\n  has_scope :by_period, using: %i[started_at ended_at], type: :hash\nend\n```\n\nTo apply the scopes to a specific resource, you just need to call `apply_scopes`:\n\n```ruby\nclass GraduationsController \u003c ApplicationController\n  has_scope :featured, type: :boolean\n  has_scope :by_degree\n  has_scope :by_period, using: %i[started_at ended_at], type: :hash\n\n  def index\n    @graduations = apply_scopes(Graduation).all\n  end\nend\n```\n\nThen for each request to the `index` action, _HasScope_ will automatically apply the scopes as follows:\n\n``` ruby\n# GET /graduations\n# No scopes applied\n#=\u003e brings all graduations\napply_scopes(Graduation).all == Graduation.all\n\n# GET /graduations?featured=true\n# The \"featured' scope is applied\n#=\u003e brings featured graduations\napply_scopes(Graduation).all == Graduation.featured\n\n# GET /graduations?by_period[started_at]=20100701\u0026by_period[ended_at]=20101013\n#=\u003e brings graduations in the given period\napply_scopes(Graduation).all == Graduation.by_period('20100701', '20101013')\n\n# GET /graduations?featured=true\u0026by_degree=phd\n#=\u003e brings featured graduations with phd degree\napply_scopes(Graduation).all == Graduation.featured.by_degree('phd')\n\n# GET /graduations?finished=true\u0026by_degree=phd\n#=\u003e brings only graduations with phd degree because we didn't declare finished in our controller as a permitted scope\napply_scopes(Graduation).all == Graduation.by_degree('phd')\n```\n\n#### Check for currently applied scopes\n\n_HasScope_ creates a helper method called `current_scopes` to retrieve all the scopes applied. As it's a helper method, you'll be able to access it in the controller action or the view rendered in that action.\n\nComing back to one of the examples above:\n\n```ruby\n# GET /graduations?featured=true\u0026by_degree=phd\n#=\u003e brings featured graduations with phd degree\napply_scopes(Graduation).all == Graduation.featured.by_degree('phd')\n```\n\nCalling `current_scopes` after `apply_scopes` in the controller action or view would return the following:\n\n```\ncurrent_scopes\n#=\u003e { featured: true, by_degree: 'phd' }\n```\n\n### Usage 2: Standalone Mode\n\n_HasScope_ can also be used in plain old Ruby objects (PORO). To implement the previous example using this approach, create a bare object and include `HasScope` to get access to its features:\n\n\u003e Note: We'll create a simple version of a query object for this example as this type of object can have multiple different implementations.\n\n\n```ruby\nclass GraduationsSearchQuery\n  include HasScope\n  # ...\nend\n```\n\nNext, declare the scopes to be used the same way:\n\n```ruby\nclass GraduationsSearchQuery\n  include HasScope\n\n  has_scope :featured, type: :boolean\n  has_scope :by_degree\n  has_scope :by_period, using: %i[started_at ended_at], type: :hash\n  # ...\nend\n```\n\nNow, allow your object to perform the query by exposing a method that will use `apply_scopes`:\n\n```ruby\nclass GraduationsSearchQuery\n  include HasScope\n\n  has_scope :featured, type: :boolean\n  has_scope :by_degree\n  has_scope :by_period, using: %i[started_at ended_at], type: :hash\n\n  def perform(collection: Graduation, params: {})\n    apply_scopes(collection, params)\n  end\nend\n```\n\nNote that `apply_scopes` receives a `Hash` as a second argument, which represents the incoming params that determine which scopes should be applied to the model/collection. It defaults to `params` for compatibility with controllers, which is why it's not necessary to pass that second argument in the controller context.\n\nNow in your controller you can call the `GraduationsSearchQuery` with the incoming parameters from the controller:\n\n```ruby\nclass GraduationsController \u003c ApplicationController\n  def index\n    graduations_query = GraduationsSearchQuery.new\n    @graduations = graduations_query.perform(collection: Graduation, params: params)\n  end\nend\n```\n\n#### Accessing `current_scopes`\n\nIn the controller context, `current_scopes` is made available as a helper method to the controller and view, but it's a `protected` method of _HasScope_'s implementation, to prevent it from becoming publicly accessible outside of _HasScope_ itself. This means that the object implementation showed above has access to `current_scopes` internally, but it's not exposed to other objects that interact with it.\n\nIf you need to access `current_scopes` elsewhere, you can change the method visibility like so:\n\n```ruby\nclass GraduationsSearchQuery\n  include HasScope\n\n  # ...\n\n  public :current_scopes\n\n  # ...\nend\n```\n\n## Options\n\n`has_scope` supports several options:\n\n* `:type` - Checks the type of the parameter sent.\n  By default, it does not allow hashes or arrays to be given,\n  except if type `:hash` or `:array` are set.\n  Symbols are never permitted to prevent memory leaks, so ensure any routing\n  constraints you have that add parameters use string values.\n\n* `:only` - In which actions the scope is applied.\n\n* `:except` - In which actions the scope is not applied.\n\n* `:as` - The key in the params hash expected to find the scope. Defaults to the scope name.\n\n* `:using` - The subkeys to be used as args when type is a hash.\n\n* `:in` - A shortcut for combining the `:using` option with nested hashes.\n\n* `:if` - Specifies a method or proc to call to determine if the scope should apply. Passing a string is deprecated and it will be removed in a future version.\n\n* `:unless` - Specifies a method or proc to call to determine if the scope should NOT apply. Passing a string is deprecated and it will be removed in a future version.\n\n* `:default` - Default value for the scope. Whenever supplied the scope is always called.\n\n* `:allow_blank` - Blank values are not sent to scopes by default. Set to true to overwrite.\n\n## Boolean usage\n\nIf `type: :boolean` is set it just calls the named scope, without any arguments, when parameter\nis set to a \"true\" value. `'true'` and `'1'` are parsed as `true`, everything else as `false`.\n\nWhen boolean scope is set up with `allow_blank: true`, it will call the scope with the value as\nany usual scope.\n\n```ruby\nhas_scope :visible, type: :boolean\nhas_scope :active, type: :boolean, allow_blank: true\n\n# and models with\nscope :visible, -\u003e { where(visible: true) }\nscope :active, -\u003e(value = true) { where(active: value) }\n```\n\n_Note_: it is not possible to apply a boolean scope with just the query param being present, e.g.\n`?active`, that's not considered a \"true\" value (the param value will be `nil`), and thus the\nscope will be called with `false` as argument. In order for the scope to receive a `true` argument\nthe param value must be set to one of the \"true\" values above, e.g. `?active=true` or `?active=1`.\n\n## Block usage\n\n`has_scope` also accepts a block in case we need to manipulate the given value and/or call the scope in some custom way. Usually three arguments are passed to the block:\n- The instance of the controller or object where it's included\n- The current scope chain\n- The value of the scope to apply\n\n\u003e 💡 We suggest you name the first argument depending on how you're using _HasScope_. If it's the controller, use the word \"controller\". If it's a query object for example, use \"query\", or something meaningful for that context (or simply use \"context\"). In the following examples, we'll use controller for simplicity.\n\n```ruby\nhas_scope :category do |controller, scope, value|\n  value != 'all' ? scope.by_category(value) : scope\nend\n```\n\nWhen used with booleans without `:allow_blank`, it just receives two arguments\nand is just invoked if true is given:\n\n```ruby\nhas_scope :not_voted_by_me, type: :boolean do |controller, scope|\n  scope.not_voted_by(controller.current_user.id)\nend\n```\n\n## Keyword arguments\n\nScopes with keyword arguments need to be called in a block:\n\n```ruby\n# in the model\nscope :for_course, lambda { |course_id:| where(course_id: course_id) }\n\n# in the controller\nhas_scope :for_course do |controller, scope, value|\n  scope.for_course(course_id: value)\nend\n```\n\n## Apply scope on every request\n\nTo apply scope on every request set default value and `allow_blank: true`:\n\n```ruby\nhas_scope :available, default: nil, allow_blank: true, only: :show, unless: :admin?\n\n# model:\nscope :available, -\u003e(*) { where(blocked: false) }\n```\n\nThis will allow usual users to get only available items, but admins will\nbe able to access blocked items too.\n\n## Check which scopes have been applied\n\nTo check which scopes have been applied, you can call `current_scopes` from the controller or view.\nThis returns a hash with the scope name as the key and the scope value as the value.\n\nFor example, if a boolean `:active` scope has been applied, `current_scopes` will return `{ active: true }`.\n\n## Supported Ruby / Rails versions\n\nWe intend to maintain support for all Ruby / Rails versions that haven't reached end-of-life.\n\nFor more information about specific versions please check [Ruby](https://www.ruby-lang.org/en/downloads/branches/)\nand [Rails](https://guides.rubyonrails.org/maintenance_policy.html) maintenance policies, and our test matrix.\n\n## Bugs and Feedback\n\nIf you discover any bugs or want to drop a line, feel free to create an issue on GitHub.\n\n## License\n\nMIT License.\nCopyright 2020-CURRENT Rafael França, Carlos Antonio da Silva.\nCopyright 2009-2019 Plataformatec.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activerecord","activejob","mvc","devise","rubygems","rails-helper","form-builder","dsl","controllers","flash-messages"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/231","html_url":"https://ruby.ecosyste.ms/projects/231"}