{"id":183,"name":null,"description":"Rack middleware for blocking \u0026 throttling","url":"https://github.com/rack/rack-attack","last_synced_at":"2026-10-05T00:30:45.253Z","repository":{"id":4109614,"uuid":"5219382","full_name":"rack/rack-attack","owner":"rack","description":"Rack middleware for blocking \u0026 throttling","archived":false,"fork":false,"pushed_at":"2026-09-08T17:40:09.000Z","size":985,"stargazers_count":5764,"open_issues_count":20,"forks_count":346,"subscribers_count":156,"default_branch":"main","last_synced_at":"2026-09-28T00:22:03.974Z","etag":null,"topics":["rack","rack-attack","rack-middleware","ruby"],"latest_commit_sha":null,"homepage":null,"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/rack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2012-07-29T02:19:18.000Z","updated_at":"2026-09-25T13:53:56.000Z","dependencies_parsed_at":"2026-07-22T20:04:44.029Z","dependency_job_id":"47793627-d09a-4664-a243-a93e942f1870","html_url":"https://github.com/rack/rack-attack","commit_stats":{"total_commits":626,"total_committers":98,"mean_commits":6.387755102040816,"dds":0.6022364217252396,"last_synced_commit":"0d40ea6538c95fb3c6f70862356d2cb54c02b02e"},"previous_names":["kickstarter/rack-attack"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/rack/rack-attack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/sbom","scorecard":{"id":559561,"data":{"date":"2025-08-11","repo":{"name":"github.com/rack/rack-attack","commit":"467770882daa6f3865cc207c8b5dfdbc4028d7cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 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":"Code-Review","score":10,"reason":"all changesets reviewed","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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.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/build.yml:149: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:150: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T13:16:43.979Z","repository_id":4109614,"created_at":"2025-08-20T13:16:43.979Z","updated_at":"2025-08-20T13:16:43.979Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37784373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-28T02:00:06.534Z","response_time":114,"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":{"login":"rack","name":"Official Rack repositories","uuid":"42379","kind":"organization","description":null,"email":null,"website":"http://rack.github.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/42379?v=4","repositories_count":10,"last_synced_at":"2026-10-01T21:30:06.573Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/rack","funding_links":[],"total_stars":13300,"followers":80,"following":0,"created_at":"2022-11-02T16:17:24.220Z","updated_at":"2026-10-01T21:30:06.745Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack/repositories"},"packages":[{"id":14513989,"name":"dev-ruby/rack-attack","ecosystem":"gentoo","description":"A DSL for blocking \u0026 throttling abusive clients","homepage":"https://github.com/rack/rack-attack","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/rack/rack-attack","keywords_array":["~amd64"],"namespace":"dev-ruby","versions_count":2,"first_release_published_at":"2026-04-22T07:13:25.000Z","latest_release_published_at":"2026-04-22T07:13:25.000Z","latest_release_number":"6.8.0","last_synced_at":"2026-05-27T02:49:03.427Z","created_at":"2026-05-27T02:49:03.117Z","updated_at":"2026-09-28T02:31:33.263Z","registry_url":"https://packages.gentoo.org/packages/dev-ruby/rack-attack","install_command":"emerge dev-ruby/rack-attack","documentation_url":"https://packages.gentoo.org/packages/dev-ruby/rack-attack","metadata":{"category":"dev-ruby","slot":"6","eapi":"8","inherit":"ruby-fakegem","iuse":"test ruby_targets_ruby32 ruby_targets_ruby33 ruby_targets_ruby34 doc test test"},"repo_metadata":{"id":4109614,"uuid":"5219382","full_name":"rack/rack-attack","owner":"rack","description":"Rack middleware for blocking \u0026 throttling","archived":false,"fork":false,"pushed_at":"2026-09-08T17:40:09.000Z","size":985,"stargazers_count":5764,"open_issues_count":20,"forks_count":346,"subscribers_count":156,"default_branch":"main","last_synced_at":"2026-09-28T00:22:03.974Z","etag":null,"topics":["rack","rack-attack","rack-middleware","ruby"],"latest_commit_sha":null,"homepage":null,"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/rack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2012-07-29T02:19:18.000Z","updated_at":"2026-09-25T13:53:56.000Z","dependencies_parsed_at":"2026-07-22T20:04:44.029Z","dependency_job_id":"47793627-d09a-4664-a243-a93e942f1870","html_url":"https://github.com/rack/rack-attack","commit_stats":{"total_commits":626,"total_committers":98,"mean_commits":6.387755102040816,"dds":0.6022364217252396,"last_synced_commit":"0d40ea6538c95fb3c6f70862356d2cb54c02b02e"},"previous_names":["kickstarter/rack-attack"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/rack/rack-attack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/sbom","scorecard":{"id":559561,"data":{"date":"2025-08-11","repo":{"name":"github.com/rack/rack-attack","commit":"467770882daa6f3865cc207c8b5dfdbc4028d7cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 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":"Code-Review","score":10,"reason":"all changesets reviewed","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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.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/build.yml:149: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:150: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T13:16:43.979Z","repository_id":4109614,"created_at":"2025-08-20T13:16:43.979Z","updated_at":"2025-08-20T13:16:43.979Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37784373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-28T02:00:06.534Z","response_time":114,"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":"rack","name":"Official Rack repositories","uuid":"42379","kind":"organization","description":null,"email":null,"website":"http://rack.github.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/42379?v=4","repositories_count":10,"last_synced_at":"2026-09-24T21:25:59.931Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/rack","funding_links":[],"total_stars":13298,"followers":79,"following":0,"created_at":"2022-11-02T16:17:24.220Z","updated_at":"2026-09-24T21:25:59.944Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack/repositories"},"tags":[{"name":"v6.8.0","sha":"65f1ead3bc648b1e972fd8df0078949f056699d9","kind":"tag","published_at":"2025-10-14T14:34:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.8.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0/manifests"},{"name":"v6.7.0","sha":"d82c9fd7e3efc6fa9859d917d7ab2d90e5a258cf","kind":"commit","published_at":"2023-07-26T04:39:28.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.7.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0/manifests"},{"name":"v6.6.1","sha":"f5f92f44594f9c1ae33f9bfeeaa329348941350c","kind":"tag","published_at":"2022-04-14T01:50:07.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1/manifests"},{"name":"v6.6.0","sha":"d0ec4de69bf4a8b421ffda2e42181669b30ce01e","kind":"tag","published_at":"2022-01-29T19:18:19.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0/manifests"},{"name":"v6.5.0","sha":"12a8390d2dc0160f2966f0793a12ac2ce76bfe35","kind":"tag","published_at":"2021-02-07T16:35:04.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.5.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0/manifests"},{"name":"v6.4.0","sha":"6328ddcb1932c64459b93b7a9bdcbb661e73d3da","kind":"tag","published_at":"2021-01-24T00:27:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0/manifests"},{"name":"v6.3.1","sha":"3a5d10c8b371ece53c46ff95a393b8c7346397f6","kind":"tag","published_at":"2020-05-21T02:19:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1/manifests"},{"name":"v6.3.0","sha":"aa071aa5df4289dd3d7029b187320afa62974685","kind":"tag","published_at":"2020-04-26T14:57:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"da418806638d0556fe15f20cea20194d4bbb85b3","kind":"tag","published_at":"2019-12-18T14:44:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"3654293085f6ac0401d0046cb32529ea0ac5519d","kind":"tag","published_at":"2019-10-30T18:27:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"9bfec1ac701f54ca93c10788fe0eb85e3254a263","kind":"tag","published_at":"2019-10-12T22:04:59.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"c3c6398f7ec31a5b03079c64c9b1bb87d2da0ae2","kind":"tag","published_at":"2019-07-11T20:01:50.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"6045b8289753cd5a542211691d4e8db281de8b28","kind":"tag","published_at":"2019-04-17T21:45:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0/manifests"},{"name":"v5.4.2","sha":"42a8a303108aa9936b831bd015564a4c775bfc16","kind":"tag","published_at":"2018-10-30T14:12:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2/manifests"},{"name":"v5.4.1","sha":"332eb40eeca788a870da82693da8ad836dd05951","kind":"tag","published_at":"2018-09-29T21:04:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1/manifests"},{"name":"v5.4.0","sha":"783060de63caa5c4d5fd80c75ae73c2ef425347c","kind":"tag","published_at":"2018-07-02T17:23:01.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0/manifests"},{"name":"v5.3.2","sha":"21561bb2f529143d975220df5174da7545dd1eb5","kind":"tag","published_at":"2018-06-25T22:27:58.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2/manifests"},{"name":"v5.3.1","sha":"196868130a043629d948ecfc1c7bbc177fd4ef5a","kind":"tag","published_at":"2018-06-20T23:23:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1/manifests"},{"name":"v5.3.0","sha":"dac926cf6842b880cd9f5c1105850c2889879176","kind":"tag","published_at":"2018-06-19T19:15:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0/manifests"},{"name":"v5.2.0","sha":"389287f060a94334314c12c9d89377da24678719","kind":"tag","published_at":"2018-03-29T17:35:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0/manifests"},{"name":"v5.1.0","sha":"c119186134012bfc3107ecd038b25a1c7619bc1f","kind":"commit","published_at":"2018-03-09T18:23:46.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0/manifests"},{"name":"v5.0.1","sha":"68158ee13332d1ed85fd81d48119045faa991eaa","kind":"tag","published_at":"2016-08-11T17:59:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1/manifests"},{"name":"v5.0.0","sha":"e5cf56ae462a5c97f674b64491f91bdfc7f7a3ed","kind":"tag","published_at":"2016-08-09T17:00:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0/manifests"},{"name":"v5.0.0.beta1","sha":"eb987a1cafe63757df4e827bed30afe219f5d97b","kind":"tag","published_at":"2016-07-05T02:35:03.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0.beta1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0.beta1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0.beta1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1/manifests"},{"name":"v4.4.1","sha":"58924168cc7325f25f5502530af1c70c183b1376","kind":"commit","published_at":"2016-02-17T14:50:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1/manifests"},{"name":"v4.4.0","sha":"d8b9e2f11181469e00399a628a734b5208cb4fb3","kind":"commit","published_at":"2016-02-10T20:05:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0/manifests"},{"name":"v4.3.1","sha":"4ec58e36de08d4cf61d60eae1f9b7ea986ad2aae","kind":"tag","published_at":"2015-12-18T17:31:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1/manifests"},{"name":"v4.3.0","sha":"ab0d17c3ef7e427485dff61deadb26988433427f","kind":"tag","published_at":"2015-05-22T20:01:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0/manifests"},{"name":"v4.2.0","sha":"f9b7721e592a5a3598227be2a811a8e5c568b338","kind":"tag","published_at":"2014-10-26T19:45:30.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0/manifests"},{"name":"v4.1.1","sha":"60d4834969c3b2abb938d9388f1183264fa715e5","kind":"tag","published_at":"2014-09-11T20:27:13.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1/manifests"},{"name":"v4.1.0","sha":"1a3cddb46815431724b9b0a45d0633a7d8485bae","kind":"tag","published_at":"2014-05-22T20:21:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0/manifests"},{"name":"v4.0.1","sha":"0e599a4dd6691a140cb60764d38f61db6039e542","kind":"tag","published_at":"2014-05-14T20:37:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"430672d8f47d2276709b9fdc2b501858dd317255","kind":"tag","published_at":"2014-04-28T21:28:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0/manifests"},{"name":"v3.0.0","sha":"95264f9d19296c49e24dc9a420b5fec18dc2410a","kind":"tag","published_at":"2014-03-15T19:06:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v3.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v3.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0/manifests"},{"name":"v2.3.0","sha":"25d8cc7c49bd373dff4000049bf552141d8b0702","kind":"tag","published_at":"2013-10-11T19:53:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0/manifests"},{"name":"v2.2.1","sha":"4872649e7469f741f42b4f4d849527ae7102b2b5","kind":"tag","published_at":"2013-08-13T15:40:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1/manifests"},{"name":"v2.2.0","sha":"237dc2d94436f19792ed2541e2afd81f975eb08a","kind":"tag","published_at":"2013-06-20T15:33:36.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0/manifests"},{"name":"v2.1.1","sha":"bb7ed70caaa520d1116128721957bd7c236c6cb8","kind":"tag","published_at":"2013-05-16T18:29:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"ecec8576aed8bc14325fd6c9fcc43e83b92042c9","kind":"tag","published_at":"2013-03-05T15:07:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"3bcb453464758bd4833a36678bbb5893719331bf","kind":"tag","published_at":"2013-01-11T19:41:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0/manifests"},{"name":"v1.3.2","sha":"5b864ca3d18cea2a7fbe32af51fe8fca78dad665","kind":"tag","published_at":"2012-08-15T22:16:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2/manifests"},{"name":"v1.3.1","sha":"853c9ceef3acf6e619eb8179d828ef8eded966d3","kind":"tag","published_at":"2012-08-09T15:06:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"5a9f991b6eac02030d6c6d46efda05b83a32f7a3","kind":"tag","published_at":"2012-08-08T19:15:29.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0/manifests"},{"name":"v1.2.0","sha":"bbd078ee819b9d2bcb52e2ae18ed2d27549305a4","kind":"tag","published_at":"2012-08-06T18:22:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0/manifests"},{"name":"v1.1.0","sha":"e135f173867b5d93cbc33e53411534d739eeeda4","kind":"tag","published_at":"2012-08-06T17:50:42.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0/manifests"},{"name":"v1.0.0","sha":"d50e779cdcffccde1ba6ef7edf4a34efce9e5596","kind":"tag","published_at":"2012-08-02T16:16:34.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0/manifests"},{"name":"v0.2.0","sha":"f82750c1c26b8f4579c4184c3333db7833b0558e","kind":"tag","published_at":"2012-07-30T19:48:31.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"9552d56c241097a4175b2f8599a074ba2ec6f7e2","kind":"tag","published_at":"2012-07-30T17:55:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0/manifests"},{"name":"v0.0.3","sha":"d25a7f5d2444a16a12efd1d6764426dc5bfba30b","kind":"tag","published_at":"2012-07-27T21:52:27.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.3","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3/manifests"},{"name":"v0.0.1","sha":"885b19c6336de6c936ea4815f75cf3ee1ca9a987","kind":"tag","published_at":"2012-07-25T14:26:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-09-28T02:31:33.262Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:gentoo/dev-ruby/rack-attack","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/gentoo/dev-ruby/rack-attack","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/gentoo/dev-ruby/rack-attack","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/gentoo/dev-ruby/rack-attack/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-09-27T21:00:51.513Z","issues_count":81,"pull_requests_count":134,"avg_time_to_close_issue":21533545.971830986,"avg_time_to_close_pull_request":7257017.355769231,"issues_closed_count":71,"pull_requests_closed_count":104,"pull_request_authors_count":56,"issue_authors_count":73,"avg_comments_per_issue":2.444444444444444,"avg_comments_per_pull_request":1.7238805970149254,"merged_pull_requests_count":78,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":3,"past_year_pull_requests_count":17,"past_year_avg_time_to_close_issue":1428276.0,"past_year_avg_time_to_close_pull_request":754924.25,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":1.3333333333333333,"past_year_avg_comments_per_pull_request":0.6470588235294118,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":8,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/issues","maintainers":[{"login":"santib","count":38,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"},{"login":"ioquatix","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ioquatix"}],"active_maintainers":[{"login":"santib","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frack-attack/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frack-attack/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frack-attack/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frack-attack/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frack-attack/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages/dev-ruby%2Frack-attack/codemeta","maintainers":[],"registry":{"name":"gentoo-portage","url":"https://packages.gentoo.org/","ecosystem":"gentoo","default":true,"packages_count":19564,"maintainers_count":0,"namespaces_count":174,"keywords_count":1054,"github":"gentoo","metadata":{"snapshot_url":"https://distfiles.gentoo.org/snapshots/portage-latest.tar.xz","funded_packages_count":832},"icon_url":"https://github.com/gentoo.png","created_at":"2026-05-26T08:59:24.155Z","updated_at":"2026-10-01T05:06:23.349Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gentoo-portage/namespaces"}},{"id":279390,"name":"rack-attack","ecosystem":"rubygems","description":"A rack middleware for throttling and blocking abusive requests","homepage":"https://github.com/rack/rack-attack","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/rack/rack-attack","keywords_array":[],"namespace":null,"versions_count":50,"first_release_published_at":"2012-07-25T14:25:42.823Z","latest_release_published_at":"2025-10-14T14:21:15.141Z","latest_release_number":"6.8.0","last_synced_at":"2026-10-04T00:01:00.594Z","created_at":"2022-04-06T07:59:52.088Z","updated_at":"2026-10-04T00:01:00.883Z","registry_url":"https://rubygems.org/gems/rack-attack","install_command":"gem install rack-attack -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/rack-attack/","metadata":{"funding":null},"repo_metadata":{"id":4109614,"uuid":"5219382","full_name":"rack/rack-attack","owner":"rack","description":"Rack middleware for blocking \u0026 throttling","archived":false,"fork":false,"pushed_at":"2026-09-08T17:40:09.000Z","size":985,"stargazers_count":5764,"open_issues_count":20,"forks_count":346,"subscribers_count":156,"default_branch":"main","last_synced_at":"2026-09-28T00:22:03.974Z","etag":null,"topics":["rack","rack-attack","rack-middleware","ruby"],"latest_commit_sha":null,"homepage":null,"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/rack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2012-07-29T02:19:18.000Z","updated_at":"2026-09-25T13:53:56.000Z","dependencies_parsed_at":"2026-07-22T20:04:44.029Z","dependency_job_id":"47793627-d09a-4664-a243-a93e942f1870","html_url":"https://github.com/rack/rack-attack","commit_stats":{"total_commits":626,"total_committers":98,"mean_commits":6.387755102040816,"dds":0.6022364217252396,"last_synced_commit":"0d40ea6538c95fb3c6f70862356d2cb54c02b02e"},"previous_names":["kickstarter/rack-attack"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/rack/rack-attack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/sbom","scorecard":{"id":559561,"data":{"date":"2025-08-11","repo":{"name":"github.com/rack/rack-attack","commit":"467770882daa6f3865cc207c8b5dfdbc4028d7cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 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":"Code-Review","score":10,"reason":"all changesets reviewed","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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.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/build.yml:149: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:150: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T13:16:43.979Z","repository_id":4109614,"created_at":"2025-08-20T13:16:43.979Z","updated_at":"2025-08-20T13:16:43.979Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37784373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-28T02:00:06.534Z","response_time":114,"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":"rack","name":"Official Rack repositories","uuid":"42379","kind":"organization","description":null,"email":null,"website":"http://rack.github.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/42379?v=4","repositories_count":10,"last_synced_at":"2026-10-01T21:30:06.573Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/rack","funding_links":[],"total_stars":13300,"followers":80,"following":0,"created_at":"2022-11-02T16:17:24.220Z","updated_at":"2026-10-01T21:30:06.745Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack/repositories"},"tags":[{"name":"v6.8.0","sha":"65f1ead3bc648b1e972fd8df0078949f056699d9","kind":"tag","published_at":"2025-10-14T14:34:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.8.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0/manifests"},{"name":"v6.7.0","sha":"d82c9fd7e3efc6fa9859d917d7ab2d90e5a258cf","kind":"commit","published_at":"2023-07-26T04:39:28.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.7.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0/manifests"},{"name":"v6.6.1","sha":"f5f92f44594f9c1ae33f9bfeeaa329348941350c","kind":"tag","published_at":"2022-04-14T01:50:07.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1/manifests"},{"name":"v6.6.0","sha":"d0ec4de69bf4a8b421ffda2e42181669b30ce01e","kind":"tag","published_at":"2022-01-29T19:18:19.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0/manifests"},{"name":"v6.5.0","sha":"12a8390d2dc0160f2966f0793a12ac2ce76bfe35","kind":"tag","published_at":"2021-02-07T16:35:04.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.5.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0/manifests"},{"name":"v6.4.0","sha":"6328ddcb1932c64459b93b7a9bdcbb661e73d3da","kind":"tag","published_at":"2021-01-24T00:27:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0/manifests"},{"name":"v6.3.1","sha":"3a5d10c8b371ece53c46ff95a393b8c7346397f6","kind":"tag","published_at":"2020-05-21T02:19:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1/manifests"},{"name":"v6.3.0","sha":"aa071aa5df4289dd3d7029b187320afa62974685","kind":"tag","published_at":"2020-04-26T14:57:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"da418806638d0556fe15f20cea20194d4bbb85b3","kind":"tag","published_at":"2019-12-18T14:44:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"3654293085f6ac0401d0046cb32529ea0ac5519d","kind":"tag","published_at":"2019-10-30T18:27:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"9bfec1ac701f54ca93c10788fe0eb85e3254a263","kind":"tag","published_at":"2019-10-12T22:04:59.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"c3c6398f7ec31a5b03079c64c9b1bb87d2da0ae2","kind":"tag","published_at":"2019-07-11T20:01:50.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"6045b8289753cd5a542211691d4e8db281de8b28","kind":"tag","published_at":"2019-04-17T21:45:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0/manifests"},{"name":"v5.4.2","sha":"42a8a303108aa9936b831bd015564a4c775bfc16","kind":"tag","published_at":"2018-10-30T14:12:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2/manifests"},{"name":"v5.4.1","sha":"332eb40eeca788a870da82693da8ad836dd05951","kind":"tag","published_at":"2018-09-29T21:04:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1/manifests"},{"name":"v5.4.0","sha":"783060de63caa5c4d5fd80c75ae73c2ef425347c","kind":"tag","published_at":"2018-07-02T17:23:01.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0/manifests"},{"name":"v5.3.2","sha":"21561bb2f529143d975220df5174da7545dd1eb5","kind":"tag","published_at":"2018-06-25T22:27:58.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2/manifests"},{"name":"v5.3.1","sha":"196868130a043629d948ecfc1c7bbc177fd4ef5a","kind":"tag","published_at":"2018-06-20T23:23:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1/manifests"},{"name":"v5.3.0","sha":"dac926cf6842b880cd9f5c1105850c2889879176","kind":"tag","published_at":"2018-06-19T19:15:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0/manifests"},{"name":"v5.2.0","sha":"389287f060a94334314c12c9d89377da24678719","kind":"tag","published_at":"2018-03-29T17:35:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0/manifests"},{"name":"v5.1.0","sha":"c119186134012bfc3107ecd038b25a1c7619bc1f","kind":"commit","published_at":"2018-03-09T18:23:46.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0/manifests"},{"name":"v5.0.1","sha":"68158ee13332d1ed85fd81d48119045faa991eaa","kind":"tag","published_at":"2016-08-11T17:59:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1/manifests"},{"name":"v5.0.0","sha":"e5cf56ae462a5c97f674b64491f91bdfc7f7a3ed","kind":"tag","published_at":"2016-08-09T17:00:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0/manifests"},{"name":"v5.0.0.beta1","sha":"eb987a1cafe63757df4e827bed30afe219f5d97b","kind":"tag","published_at":"2016-07-05T02:35:03.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0.beta1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0.beta1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0.beta1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1/manifests"},{"name":"v4.4.1","sha":"58924168cc7325f25f5502530af1c70c183b1376","kind":"commit","published_at":"2016-02-17T14:50:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1/manifests"},{"name":"v4.4.0","sha":"d8b9e2f11181469e00399a628a734b5208cb4fb3","kind":"commit","published_at":"2016-02-10T20:05:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0/manifests"},{"name":"v4.3.1","sha":"4ec58e36de08d4cf61d60eae1f9b7ea986ad2aae","kind":"tag","published_at":"2015-12-18T17:31:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1/manifests"},{"name":"v4.3.0","sha":"ab0d17c3ef7e427485dff61deadb26988433427f","kind":"tag","published_at":"2015-05-22T20:01:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0/manifests"},{"name":"v4.2.0","sha":"f9b7721e592a5a3598227be2a811a8e5c568b338","kind":"tag","published_at":"2014-10-26T19:45:30.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0/manifests"},{"name":"v4.1.1","sha":"60d4834969c3b2abb938d9388f1183264fa715e5","kind":"tag","published_at":"2014-09-11T20:27:13.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1/manifests"},{"name":"v4.1.0","sha":"1a3cddb46815431724b9b0a45d0633a7d8485bae","kind":"tag","published_at":"2014-05-22T20:21:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0/manifests"},{"name":"v4.0.1","sha":"0e599a4dd6691a140cb60764d38f61db6039e542","kind":"tag","published_at":"2014-05-14T20:37:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"430672d8f47d2276709b9fdc2b501858dd317255","kind":"tag","published_at":"2014-04-28T21:28:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0/manifests"},{"name":"v3.0.0","sha":"95264f9d19296c49e24dc9a420b5fec18dc2410a","kind":"tag","published_at":"2014-03-15T19:06:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v3.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v3.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0/manifests"},{"name":"v2.3.0","sha":"25d8cc7c49bd373dff4000049bf552141d8b0702","kind":"tag","published_at":"2013-10-11T19:53:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0/manifests"},{"name":"v2.2.1","sha":"4872649e7469f741f42b4f4d849527ae7102b2b5","kind":"tag","published_at":"2013-08-13T15:40:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1/manifests"},{"name":"v2.2.0","sha":"237dc2d94436f19792ed2541e2afd81f975eb08a","kind":"tag","published_at":"2013-06-20T15:33:36.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0/manifests"},{"name":"v2.1.1","sha":"bb7ed70caaa520d1116128721957bd7c236c6cb8","kind":"tag","published_at":"2013-05-16T18:29:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"ecec8576aed8bc14325fd6c9fcc43e83b92042c9","kind":"tag","published_at":"2013-03-05T15:07:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"3bcb453464758bd4833a36678bbb5893719331bf","kind":"tag","published_at":"2013-01-11T19:41:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0/manifests"},{"name":"v1.3.2","sha":"5b864ca3d18cea2a7fbe32af51fe8fca78dad665","kind":"tag","published_at":"2012-08-15T22:16:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2/manifests"},{"name":"v1.3.1","sha":"853c9ceef3acf6e619eb8179d828ef8eded966d3","kind":"tag","published_at":"2012-08-09T15:06:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"5a9f991b6eac02030d6c6d46efda05b83a32f7a3","kind":"tag","published_at":"2012-08-08T19:15:29.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0/manifests"},{"name":"v1.2.0","sha":"bbd078ee819b9d2bcb52e2ae18ed2d27549305a4","kind":"tag","published_at":"2012-08-06T18:22:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0/manifests"},{"name":"v1.1.0","sha":"e135f173867b5d93cbc33e53411534d739eeeda4","kind":"tag","published_at":"2012-08-06T17:50:42.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0/manifests"},{"name":"v1.0.0","sha":"d50e779cdcffccde1ba6ef7edf4a34efce9e5596","kind":"tag","published_at":"2012-08-02T16:16:34.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0/manifests"},{"name":"v0.2.0","sha":"f82750c1c26b8f4579c4184c3333db7833b0558e","kind":"tag","published_at":"2012-07-30T19:48:31.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"9552d56c241097a4175b2f8599a074ba2ec6f7e2","kind":"tag","published_at":"2012-07-30T17:55:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0/manifests"},{"name":"v0.0.3","sha":"d25a7f5d2444a16a12efd1d6764426dc5bfba30b","kind":"tag","published_at":"2012-07-27T21:52:27.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.3","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3/manifests"},{"name":"v0.0.1","sha":"885b19c6336de6c936ea4815f75cf3ee1ca9a987","kind":"tag","published_at":"2012-07-25T14:26:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-10-04T00:01:00.883Z","dependent_packages_count":20,"downloads":154187616,"downloads_period":"total","dependent_repos_count":5187,"rankings":{"downloads":0.20294153722639133,"dependent_repos_count":0.4387774444977197,"dependent_packages_count":1.0938771869180763,"stargazers_count":0.2274729318361749,"forks_count":1.482476778804875,"docker_downloads_count":0.18956077653014572,"average":0.6058511093022305},"purl":"pkg:gem/rack-attack","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/rack-attack","docker_dependents_count":280,"docker_downloads_count":587347400,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/rack-attack","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/rack-attack/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2026-10-04T00:00:45.727Z","issues_count":81,"pull_requests_count":134,"avg_time_to_close_issue":21533545.971830986,"avg_time_to_close_pull_request":7257017.355769231,"issues_closed_count":71,"pull_requests_closed_count":104,"pull_request_authors_count":56,"issue_authors_count":73,"avg_comments_per_issue":2.444444444444444,"avg_comments_per_pull_request":1.7238805970149254,"merged_pull_requests_count":78,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":3,"past_year_pull_requests_count":17,"past_year_avg_time_to_close_issue":1428276.0,"past_year_avg_time_to_close_pull_request":754924.25,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":1.3333333333333333,"past_year_avg_comments_per_pull_request":0.6470588235294118,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":8,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/issues","maintainers":[{"login":"santib","count":38,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"},{"login":"ioquatix","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ioquatix"}],"active_maintainers":[{"login":"santib","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rack-attack/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rack-attack/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rack-attack/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rack-attack/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rack-attack/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rack-attack/codemeta","maintainers":[{"uuid":"44200","login":"ioquatix","name":null,"email":null,"url":null,"packages_count":273,"html_url":"https://rubygems.org/profiles/ioquatix","role":null,"created_at":"2023-07-26T17:51:50.458Z","updated_at":"2023-07-26T17:51:50.458Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/ioquatix/packages"},{"uuid":"118683","login":"grzuy","name":null,"email":null,"url":null,"packages_count":7,"html_url":"https://rubygems.org/profiles/grzuy","role":null,"created_at":"2022-11-09T09:46:29.555Z","updated_at":"2022-11-09T09:46:29.555Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/grzuy/packages"},{"uuid":"1436","login":"ktheory","name":null,"email":null,"url":null,"packages_count":29,"html_url":"https://rubygems.org/profiles/ktheory","role":null,"created_at":"2022-11-09T09:46:29.541Z","updated_at":"2022-11-09T09:46:29.541Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/ktheory/packages"},{"uuid":"113534","login":"frewsxcv","name":null,"email":null,"url":null,"packages_count":7,"html_url":"https://rubygems.org/profiles/frewsxcv","role":null,"created_at":"2022-11-09T09:46:29.547Z","updated_at":"2022-11-09T09:46:29.547Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/frewsxcv/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":212732,"maintainers_count":70318,"namespaces_count":0,"keywords_count":20533,"github":"rubygems","metadata":{"funded_packages_count":8596},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-10-01T05:01:23.855Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":12301344,"name":"rack-attack","ecosystem":"rubygems","description":"A rack middleware for throttling and blocking abusive requests","homepage":"https://github.com/rack/rack-attack","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/rack/rack-attack","keywords_array":[],"namespace":null,"versions_count":50,"first_release_published_at":"2012-07-25T14:25:42.823Z","latest_release_published_at":"2025-10-14T14:21:15.141Z","latest_release_number":"6.8.0","last_synced_at":"2026-10-04T00:01:00.587Z","created_at":"2025-10-07T05:10:38.560Z","updated_at":"2026-10-04T00:01:01.007Z","registry_url":"https://gem.coop/gems/rack-attack","install_command":"gem install rack-attack -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/rack-attack/","metadata":{"funding":null},"repo_metadata":{"id":4109614,"uuid":"5219382","full_name":"rack/rack-attack","owner":"rack","description":"Rack middleware for blocking \u0026 throttling","archived":false,"fork":false,"pushed_at":"2026-09-08T17:40:09.000Z","size":985,"stargazers_count":5764,"open_issues_count":20,"forks_count":346,"subscribers_count":156,"default_branch":"main","last_synced_at":"2026-09-28T00:22:03.974Z","etag":null,"topics":["rack","rack-attack","rack-middleware","ruby"],"latest_commit_sha":null,"homepage":null,"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/rack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2012-07-29T02:19:18.000Z","updated_at":"2026-09-25T13:53:56.000Z","dependencies_parsed_at":"2026-07-22T20:04:44.029Z","dependency_job_id":"47793627-d09a-4664-a243-a93e942f1870","html_url":"https://github.com/rack/rack-attack","commit_stats":{"total_commits":626,"total_committers":98,"mean_commits":6.387755102040816,"dds":0.6022364217252396,"last_synced_commit":"0d40ea6538c95fb3c6f70862356d2cb54c02b02e"},"previous_names":["kickstarter/rack-attack"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/rack/rack-attack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/sbom","scorecard":{"id":559561,"data":{"date":"2025-08-11","repo":{"name":"github.com/rack/rack-attack","commit":"467770882daa6f3865cc207c8b5dfdbc4028d7cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 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":"Code-Review","score":10,"reason":"all changesets reviewed","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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.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/build.yml:149: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:150: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T13:16:43.979Z","repository_id":4109614,"created_at":"2025-08-20T13:16:43.979Z","updated_at":"2025-08-20T13:16:43.979Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37784373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-28T02:00:06.534Z","response_time":114,"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":"rack","name":"Official Rack repositories","uuid":"42379","kind":"organization","description":null,"email":null,"website":"http://rack.github.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/42379?v=4","repositories_count":10,"last_synced_at":"2026-10-01T21:30:06.573Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/rack","funding_links":[],"total_stars":13300,"followers":80,"following":0,"created_at":"2022-11-02T16:17:24.220Z","updated_at":"2026-10-01T21:30:06.745Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack/repositories"},"tags":[{"name":"v6.8.0","sha":"65f1ead3bc648b1e972fd8df0078949f056699d9","kind":"tag","published_at":"2025-10-14T14:34:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.8.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0/manifests"},{"name":"v6.7.0","sha":"d82c9fd7e3efc6fa9859d917d7ab2d90e5a258cf","kind":"commit","published_at":"2023-07-26T04:39:28.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.7.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0/manifests"},{"name":"v6.6.1","sha":"f5f92f44594f9c1ae33f9bfeeaa329348941350c","kind":"tag","published_at":"2022-04-14T01:50:07.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1/manifests"},{"name":"v6.6.0","sha":"d0ec4de69bf4a8b421ffda2e42181669b30ce01e","kind":"tag","published_at":"2022-01-29T19:18:19.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0/manifests"},{"name":"v6.5.0","sha":"12a8390d2dc0160f2966f0793a12ac2ce76bfe35","kind":"tag","published_at":"2021-02-07T16:35:04.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.5.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0/manifests"},{"name":"v6.4.0","sha":"6328ddcb1932c64459b93b7a9bdcbb661e73d3da","kind":"tag","published_at":"2021-01-24T00:27:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0/manifests"},{"name":"v6.3.1","sha":"3a5d10c8b371ece53c46ff95a393b8c7346397f6","kind":"tag","published_at":"2020-05-21T02:19:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1/manifests"},{"name":"v6.3.0","sha":"aa071aa5df4289dd3d7029b187320afa62974685","kind":"tag","published_at":"2020-04-26T14:57:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"da418806638d0556fe15f20cea20194d4bbb85b3","kind":"tag","published_at":"2019-12-18T14:44:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"3654293085f6ac0401d0046cb32529ea0ac5519d","kind":"tag","published_at":"2019-10-30T18:27:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"9bfec1ac701f54ca93c10788fe0eb85e3254a263","kind":"tag","published_at":"2019-10-12T22:04:59.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"c3c6398f7ec31a5b03079c64c9b1bb87d2da0ae2","kind":"tag","published_at":"2019-07-11T20:01:50.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"6045b8289753cd5a542211691d4e8db281de8b28","kind":"tag","published_at":"2019-04-17T21:45:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0/manifests"},{"name":"v5.4.2","sha":"42a8a303108aa9936b831bd015564a4c775bfc16","kind":"tag","published_at":"2018-10-30T14:12:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2/manifests"},{"name":"v5.4.1","sha":"332eb40eeca788a870da82693da8ad836dd05951","kind":"tag","published_at":"2018-09-29T21:04:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1/manifests"},{"name":"v5.4.0","sha":"783060de63caa5c4d5fd80c75ae73c2ef425347c","kind":"tag","published_at":"2018-07-02T17:23:01.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0/manifests"},{"name":"v5.3.2","sha":"21561bb2f529143d975220df5174da7545dd1eb5","kind":"tag","published_at":"2018-06-25T22:27:58.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2/manifests"},{"name":"v5.3.1","sha":"196868130a043629d948ecfc1c7bbc177fd4ef5a","kind":"tag","published_at":"2018-06-20T23:23:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1/manifests"},{"name":"v5.3.0","sha":"dac926cf6842b880cd9f5c1105850c2889879176","kind":"tag","published_at":"2018-06-19T19:15:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0/manifests"},{"name":"v5.2.0","sha":"389287f060a94334314c12c9d89377da24678719","kind":"tag","published_at":"2018-03-29T17:35:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0/manifests"},{"name":"v5.1.0","sha":"c119186134012bfc3107ecd038b25a1c7619bc1f","kind":"commit","published_at":"2018-03-09T18:23:46.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0/manifests"},{"name":"v5.0.1","sha":"68158ee13332d1ed85fd81d48119045faa991eaa","kind":"tag","published_at":"2016-08-11T17:59:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1/manifests"},{"name":"v5.0.0","sha":"e5cf56ae462a5c97f674b64491f91bdfc7f7a3ed","kind":"tag","published_at":"2016-08-09T17:00:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0/manifests"},{"name":"v5.0.0.beta1","sha":"eb987a1cafe63757df4e827bed30afe219f5d97b","kind":"tag","published_at":"2016-07-05T02:35:03.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0.beta1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0.beta1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0.beta1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1/manifests"},{"name":"v4.4.1","sha":"58924168cc7325f25f5502530af1c70c183b1376","kind":"commit","published_at":"2016-02-17T14:50:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1/manifests"},{"name":"v4.4.0","sha":"d8b9e2f11181469e00399a628a734b5208cb4fb3","kind":"commit","published_at":"2016-02-10T20:05:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0/manifests"},{"name":"v4.3.1","sha":"4ec58e36de08d4cf61d60eae1f9b7ea986ad2aae","kind":"tag","published_at":"2015-12-18T17:31:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1/manifests"},{"name":"v4.3.0","sha":"ab0d17c3ef7e427485dff61deadb26988433427f","kind":"tag","published_at":"2015-05-22T20:01:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0/manifests"},{"name":"v4.2.0","sha":"f9b7721e592a5a3598227be2a811a8e5c568b338","kind":"tag","published_at":"2014-10-26T19:45:30.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0/manifests"},{"name":"v4.1.1","sha":"60d4834969c3b2abb938d9388f1183264fa715e5","kind":"tag","published_at":"2014-09-11T20:27:13.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1/manifests"},{"name":"v4.1.0","sha":"1a3cddb46815431724b9b0a45d0633a7d8485bae","kind":"tag","published_at":"2014-05-22T20:21:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0/manifests"},{"name":"v4.0.1","sha":"0e599a4dd6691a140cb60764d38f61db6039e542","kind":"tag","published_at":"2014-05-14T20:37:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"430672d8f47d2276709b9fdc2b501858dd317255","kind":"tag","published_at":"2014-04-28T21:28:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0/manifests"},{"name":"v3.0.0","sha":"95264f9d19296c49e24dc9a420b5fec18dc2410a","kind":"tag","published_at":"2014-03-15T19:06:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v3.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v3.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0/manifests"},{"name":"v2.3.0","sha":"25d8cc7c49bd373dff4000049bf552141d8b0702","kind":"tag","published_at":"2013-10-11T19:53:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0/manifests"},{"name":"v2.2.1","sha":"4872649e7469f741f42b4f4d849527ae7102b2b5","kind":"tag","published_at":"2013-08-13T15:40:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1/manifests"},{"name":"v2.2.0","sha":"237dc2d94436f19792ed2541e2afd81f975eb08a","kind":"tag","published_at":"2013-06-20T15:33:36.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0/manifests"},{"name":"v2.1.1","sha":"bb7ed70caaa520d1116128721957bd7c236c6cb8","kind":"tag","published_at":"2013-05-16T18:29:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"ecec8576aed8bc14325fd6c9fcc43e83b92042c9","kind":"tag","published_at":"2013-03-05T15:07:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"3bcb453464758bd4833a36678bbb5893719331bf","kind":"tag","published_at":"2013-01-11T19:41:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0/manifests"},{"name":"v1.3.2","sha":"5b864ca3d18cea2a7fbe32af51fe8fca78dad665","kind":"tag","published_at":"2012-08-15T22:16:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2/manifests"},{"name":"v1.3.1","sha":"853c9ceef3acf6e619eb8179d828ef8eded966d3","kind":"tag","published_at":"2012-08-09T15:06:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"5a9f991b6eac02030d6c6d46efda05b83a32f7a3","kind":"tag","published_at":"2012-08-08T19:15:29.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0/manifests"},{"name":"v1.2.0","sha":"bbd078ee819b9d2bcb52e2ae18ed2d27549305a4","kind":"tag","published_at":"2012-08-06T18:22:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0/manifests"},{"name":"v1.1.0","sha":"e135f173867b5d93cbc33e53411534d739eeeda4","kind":"tag","published_at":"2012-08-06T17:50:42.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0/manifests"},{"name":"v1.0.0","sha":"d50e779cdcffccde1ba6ef7edf4a34efce9e5596","kind":"tag","published_at":"2012-08-02T16:16:34.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0/manifests"},{"name":"v0.2.0","sha":"f82750c1c26b8f4579c4184c3333db7833b0558e","kind":"tag","published_at":"2012-07-30T19:48:31.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"9552d56c241097a4175b2f8599a074ba2ec6f7e2","kind":"tag","published_at":"2012-07-30T17:55:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0/manifests"},{"name":"v0.0.3","sha":"d25a7f5d2444a16a12efd1d6764426dc5bfba30b","kind":"tag","published_at":"2012-07-27T21:52:27.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.3","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3/manifests"},{"name":"v0.0.1","sha":"885b19c6336de6c936ea4815f75cf3ee1ca9a987","kind":"tag","published_at":"2012-07-25T14:26:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-10-04T00:01:01.007Z","dependent_packages_count":0,"downloads":154187616,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.18489984591679506,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":0.15786770470088937,"average":0.08569188765442111},"purl":"pkg:gem/rack-attack?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/rack-attack","docker_dependents_count":280,"docker_downloads_count":587347400,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/rack-attack","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/rack-attack/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-10-04T00:00:45.727Z","issues_count":81,"pull_requests_count":134,"avg_time_to_close_issue":21533545.971830986,"avg_time_to_close_pull_request":7257017.355769231,"issues_closed_count":71,"pull_requests_closed_count":104,"pull_request_authors_count":56,"issue_authors_count":73,"avg_comments_per_issue":2.444444444444444,"avg_comments_per_pull_request":1.7238805970149254,"merged_pull_requests_count":78,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":3,"past_year_pull_requests_count":17,"past_year_avg_time_to_close_issue":1428276.0,"past_year_avg_time_to_close_pull_request":754924.25,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":1.3333333333333333,"past_year_avg_comments_per_pull_request":0.6470588235294118,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":8,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/issues","maintainers":[{"login":"santib","count":38,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"},{"login":"ioquatix","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ioquatix"}],"active_maintainers":[{"login":"santib","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rack-attack/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rack-attack/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rack-attack/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rack-attack/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rack-attack/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rack-attack/codemeta","maintainers":[{"uuid":"44200","login":"ioquatix","name":null,"email":null,"url":null,"packages_count":272,"html_url":"https://gem.coop/profiles/ioquatix","role":null,"created_at":"2025-10-08T03:16:07.973Z","updated_at":"2025-10-08T03:16:07.973Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/ioquatix/packages"},{"uuid":"118683","login":"grzuy","name":null,"email":null,"url":null,"packages_count":7,"html_url":"https://gem.coop/profiles/grzuy","role":null,"created_at":"2025-10-08T03:16:07.472Z","updated_at":"2025-10-08T03:16:07.472Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/grzuy/packages"},{"uuid":"1436","login":"ktheory","name":null,"email":null,"url":null,"packages_count":29,"html_url":"https://gem.coop/profiles/ktheory","role":null,"created_at":"2025-10-08T03:16:06.641Z","updated_at":"2025-10-08T03:16:06.641Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/ktheory/packages"},{"uuid":"113534","login":"frewsxcv","name":null,"email":null,"url":null,"packages_count":7,"html_url":"https://gem.coop/profiles/frewsxcv","role":null,"created_at":"2025-10-08T03:16:07.064Z","updated_at":"2025-10-08T03:16:07.064Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/frewsxcv/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":197251,"maintainers_count":69297,"namespaces_count":0,"keywords_count":20010,"github":"gem-coop","metadata":{"funded_packages_count":8369},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-10-01T05:01:35.586Z","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":7504317,"name":"github.com/rack/rack-attack","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/rack/rack-attack","keywords_array":[],"namespace":"github.com/rack","versions_count":49,"first_release_published_at":"2012-07-25T14:25:14.000Z","latest_release_published_at":"2025-10-14T14:33:28.000Z","latest_release_number":"v6.8.0+incompatible","last_synced_at":"2026-10-04T00:01:04.634Z","created_at":"2023-04-07T01:52:38.151Z","updated_at":"2026-10-04T00:01:04.634Z","registry_url":"https://pkg.go.dev/github.com/rack/rack-attack","install_command":"go get github.com/rack/rack-attack","documentation_url":"https://pkg.go.dev/github.com/rack/rack-attack#section-documentation","metadata":{},"repo_metadata":{"id":4109614,"uuid":"5219382","full_name":"rack/rack-attack","owner":"rack","description":"Rack middleware for blocking \u0026 throttling","archived":false,"fork":false,"pushed_at":"2026-09-08T17:40:09.000Z","size":985,"stargazers_count":5764,"open_issues_count":20,"forks_count":346,"subscribers_count":156,"default_branch":"main","last_synced_at":"2026-09-28T00:22:03.974Z","etag":null,"topics":["rack","rack-attack","rack-middleware","ruby"],"latest_commit_sha":null,"homepage":null,"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/rack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2012-07-29T02:19:18.000Z","updated_at":"2026-09-25T13:53:56.000Z","dependencies_parsed_at":"2026-07-22T20:04:44.029Z","dependency_job_id":"47793627-d09a-4664-a243-a93e942f1870","html_url":"https://github.com/rack/rack-attack","commit_stats":{"total_commits":626,"total_committers":98,"mean_commits":6.387755102040816,"dds":0.6022364217252396,"last_synced_commit":"0d40ea6538c95fb3c6f70862356d2cb54c02b02e"},"previous_names":["kickstarter/rack-attack"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/rack/rack-attack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/sbom","scorecard":{"id":559561,"data":{"date":"2025-08-11","repo":{"name":"github.com/rack/rack-attack","commit":"467770882daa6f3865cc207c8b5dfdbc4028d7cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 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":"Code-Review","score":10,"reason":"all changesets reviewed","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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.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/build.yml:149: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:150: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T13:16:43.979Z","repository_id":4109614,"created_at":"2025-08-20T13:16:43.979Z","updated_at":"2025-08-20T13:16:43.979Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37784373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-28T02:00:06.534Z","response_time":114,"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":"rack","name":"Official Rack repositories","uuid":"42379","kind":"organization","description":null,"email":null,"website":"http://rack.github.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/42379?v=4","repositories_count":10,"last_synced_at":"2026-09-24T21:25:59.931Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/rack","funding_links":[],"total_stars":13298,"followers":79,"following":0,"created_at":"2022-11-02T16:17:24.220Z","updated_at":"2026-09-24T21:25:59.944Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack/repositories"},"tags":[{"name":"v6.8.0","sha":"65f1ead3bc648b1e972fd8df0078949f056699d9","kind":"tag","published_at":"2025-10-14T14:34:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.8.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0/manifests"},{"name":"v6.7.0","sha":"d82c9fd7e3efc6fa9859d917d7ab2d90e5a258cf","kind":"commit","published_at":"2023-07-26T04:39:28.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.7.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0/manifests"},{"name":"v6.6.1","sha":"f5f92f44594f9c1ae33f9bfeeaa329348941350c","kind":"tag","published_at":"2022-04-14T01:50:07.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1/manifests"},{"name":"v6.6.0","sha":"d0ec4de69bf4a8b421ffda2e42181669b30ce01e","kind":"tag","published_at":"2022-01-29T19:18:19.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0/manifests"},{"name":"v6.5.0","sha":"12a8390d2dc0160f2966f0793a12ac2ce76bfe35","kind":"tag","published_at":"2021-02-07T16:35:04.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.5.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0/manifests"},{"name":"v6.4.0","sha":"6328ddcb1932c64459b93b7a9bdcbb661e73d3da","kind":"tag","published_at":"2021-01-24T00:27:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0/manifests"},{"name":"v6.3.1","sha":"3a5d10c8b371ece53c46ff95a393b8c7346397f6","kind":"tag","published_at":"2020-05-21T02:19:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1/manifests"},{"name":"v6.3.0","sha":"aa071aa5df4289dd3d7029b187320afa62974685","kind":"tag","published_at":"2020-04-26T14:57:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"da418806638d0556fe15f20cea20194d4bbb85b3","kind":"tag","published_at":"2019-12-18T14:44:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"3654293085f6ac0401d0046cb32529ea0ac5519d","kind":"tag","published_at":"2019-10-30T18:27:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"9bfec1ac701f54ca93c10788fe0eb85e3254a263","kind":"tag","published_at":"2019-10-12T22:04:59.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"c3c6398f7ec31a5b03079c64c9b1bb87d2da0ae2","kind":"tag","published_at":"2019-07-11T20:01:50.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"6045b8289753cd5a542211691d4e8db281de8b28","kind":"tag","published_at":"2019-04-17T21:45:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0/manifests"},{"name":"v5.4.2","sha":"42a8a303108aa9936b831bd015564a4c775bfc16","kind":"tag","published_at":"2018-10-30T14:12:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2/manifests"},{"name":"v5.4.1","sha":"332eb40eeca788a870da82693da8ad836dd05951","kind":"tag","published_at":"2018-09-29T21:04:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1/manifests"},{"name":"v5.4.0","sha":"783060de63caa5c4d5fd80c75ae73c2ef425347c","kind":"tag","published_at":"2018-07-02T17:23:01.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0/manifests"},{"name":"v5.3.2","sha":"21561bb2f529143d975220df5174da7545dd1eb5","kind":"tag","published_at":"2018-06-25T22:27:58.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2/manifests"},{"name":"v5.3.1","sha":"196868130a043629d948ecfc1c7bbc177fd4ef5a","kind":"tag","published_at":"2018-06-20T23:23:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1/manifests"},{"name":"v5.3.0","sha":"dac926cf6842b880cd9f5c1105850c2889879176","kind":"tag","published_at":"2018-06-19T19:15:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0/manifests"},{"name":"v5.2.0","sha":"389287f060a94334314c12c9d89377da24678719","kind":"tag","published_at":"2018-03-29T17:35:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0/manifests"},{"name":"v5.1.0","sha":"c119186134012bfc3107ecd038b25a1c7619bc1f","kind":"commit","published_at":"2018-03-09T18:23:46.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0/manifests"},{"name":"v5.0.1","sha":"68158ee13332d1ed85fd81d48119045faa991eaa","kind":"tag","published_at":"2016-08-11T17:59:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1/manifests"},{"name":"v5.0.0","sha":"e5cf56ae462a5c97f674b64491f91bdfc7f7a3ed","kind":"tag","published_at":"2016-08-09T17:00:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0/manifests"},{"name":"v5.0.0.beta1","sha":"eb987a1cafe63757df4e827bed30afe219f5d97b","kind":"tag","published_at":"2016-07-05T02:35:03.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0.beta1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0.beta1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0.beta1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1/manifests"},{"name":"v4.4.1","sha":"58924168cc7325f25f5502530af1c70c183b1376","kind":"commit","published_at":"2016-02-17T14:50:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1/manifests"},{"name":"v4.4.0","sha":"d8b9e2f11181469e00399a628a734b5208cb4fb3","kind":"commit","published_at":"2016-02-10T20:05:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0/manifests"},{"name":"v4.3.1","sha":"4ec58e36de08d4cf61d60eae1f9b7ea986ad2aae","kind":"tag","published_at":"2015-12-18T17:31:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1/manifests"},{"name":"v4.3.0","sha":"ab0d17c3ef7e427485dff61deadb26988433427f","kind":"tag","published_at":"2015-05-22T20:01:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0/manifests"},{"name":"v4.2.0","sha":"f9b7721e592a5a3598227be2a811a8e5c568b338","kind":"tag","published_at":"2014-10-26T19:45:30.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0/manifests"},{"name":"v4.1.1","sha":"60d4834969c3b2abb938d9388f1183264fa715e5","kind":"tag","published_at":"2014-09-11T20:27:13.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1/manifests"},{"name":"v4.1.0","sha":"1a3cddb46815431724b9b0a45d0633a7d8485bae","kind":"tag","published_at":"2014-05-22T20:21:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0/manifests"},{"name":"v4.0.1","sha":"0e599a4dd6691a140cb60764d38f61db6039e542","kind":"tag","published_at":"2014-05-14T20:37:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"430672d8f47d2276709b9fdc2b501858dd317255","kind":"tag","published_at":"2014-04-28T21:28:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0/manifests"},{"name":"v3.0.0","sha":"95264f9d19296c49e24dc9a420b5fec18dc2410a","kind":"tag","published_at":"2014-03-15T19:06:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v3.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v3.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0/manifests"},{"name":"v2.3.0","sha":"25d8cc7c49bd373dff4000049bf552141d8b0702","kind":"tag","published_at":"2013-10-11T19:53:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0/manifests"},{"name":"v2.2.1","sha":"4872649e7469f741f42b4f4d849527ae7102b2b5","kind":"tag","published_at":"2013-08-13T15:40:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1/manifests"},{"name":"v2.2.0","sha":"237dc2d94436f19792ed2541e2afd81f975eb08a","kind":"tag","published_at":"2013-06-20T15:33:36.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0/manifests"},{"name":"v2.1.1","sha":"bb7ed70caaa520d1116128721957bd7c236c6cb8","kind":"tag","published_at":"2013-05-16T18:29:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"ecec8576aed8bc14325fd6c9fcc43e83b92042c9","kind":"tag","published_at":"2013-03-05T15:07:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"3bcb453464758bd4833a36678bbb5893719331bf","kind":"tag","published_at":"2013-01-11T19:41:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0/manifests"},{"name":"v1.3.2","sha":"5b864ca3d18cea2a7fbe32af51fe8fca78dad665","kind":"tag","published_at":"2012-08-15T22:16:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2/manifests"},{"name":"v1.3.1","sha":"853c9ceef3acf6e619eb8179d828ef8eded966d3","kind":"tag","published_at":"2012-08-09T15:06:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"5a9f991b6eac02030d6c6d46efda05b83a32f7a3","kind":"tag","published_at":"2012-08-08T19:15:29.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0/manifests"},{"name":"v1.2.0","sha":"bbd078ee819b9d2bcb52e2ae18ed2d27549305a4","kind":"tag","published_at":"2012-08-06T18:22:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0/manifests"},{"name":"v1.1.0","sha":"e135f173867b5d93cbc33e53411534d739eeeda4","kind":"tag","published_at":"2012-08-06T17:50:42.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0/manifests"},{"name":"v1.0.0","sha":"d50e779cdcffccde1ba6ef7edf4a34efce9e5596","kind":"tag","published_at":"2012-08-02T16:16:34.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0/manifests"},{"name":"v0.2.0","sha":"f82750c1c26b8f4579c4184c3333db7833b0558e","kind":"tag","published_at":"2012-07-30T19:48:31.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"9552d56c241097a4175b2f8599a074ba2ec6f7e2","kind":"tag","published_at":"2012-07-30T17:55:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0/manifests"},{"name":"v0.0.3","sha":"d25a7f5d2444a16a12efd1d6764426dc5bfba30b","kind":"tag","published_at":"2012-07-27T21:52:27.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.3","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3/manifests"},{"name":"v0.0.1","sha":"885b19c6336de6c936ea4815f75cf3ee1ca9a987","kind":"tag","published_at":"2012-07-25T14:26:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-09-28T02:31:33.621Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":1,"rankings":{"downloads":null,"dependent_repos_count":4.793834424600911,"dependent_packages_count":8.452778221382484,"stargazers_count":0.9093435595164271,"forks_count":1.5327867662461294,"docker_downloads_count":null,"average":3.922185742936488},"purl":"pkg:golang/github.com/rack/rack-attack","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/rack/rack-attack","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/rack/rack-attack","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/rack/rack-attack/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-09-27T21:00:51.513Z","issues_count":81,"pull_requests_count":134,"avg_time_to_close_issue":21533545.971830986,"avg_time_to_close_pull_request":7257017.355769231,"issues_closed_count":71,"pull_requests_closed_count":104,"pull_request_authors_count":56,"issue_authors_count":73,"avg_comments_per_issue":2.444444444444444,"avg_comments_per_pull_request":1.7238805970149254,"merged_pull_requests_count":78,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":3,"past_year_pull_requests_count":17,"past_year_avg_time_to_close_issue":1428276.0,"past_year_avg_time_to_close_pull_request":754924.25,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":1.3333333333333333,"past_year_avg_comments_per_pull_request":0.6470588235294118,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":8,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/issues","maintainers":[{"login":"santib","count":38,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"},{"login":"ioquatix","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ioquatix"}],"active_maintainers":[{"login":"santib","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frack%2Frack-attack/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frack%2Frack-attack/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frack%2Frack-attack/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frack%2Frack-attack/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frack%2Frack-attack/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Frack%2Frack-attack/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2539788,"maintainers_count":0,"namespaces_count":852760,"keywords_count":136985,"github":"golang","metadata":{"funded_packages_count":110283,"sync_missing_packages_cursor":{"timestamp":"2026-09-29T00:04:57.155362Z","path":"github.com/virtengine/virtengine/sdk/specs","version":"v0.0.0-20260928231908-c0c887541540"},"rate_limit":5},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-10-01T05:04:10.855Z","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":14690961,"name":"github.com/Rack/Rack-attack","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/Rack/Rack-attack","keywords_array":[],"namespace":null,"versions_count":49,"first_release_published_at":"2026-06-28T11:14:11.361Z","latest_release_published_at":"2025-10-14T14:33:28.000Z","latest_release_number":"v6.8.0+incompatible","last_synced_at":"2026-10-04T00:01:07.512Z","created_at":"2026-06-28T11:14:07.189Z","updated_at":"2026-10-04T00:01:07.513Z","registry_url":"https://pkg.go.dev/github.com/Rack/Rack-attack","install_command":"go get github.com/Rack/Rack-attack","documentation_url":"https://pkg.go.dev/github.com/Rack/Rack-attack#section-documentation","metadata":{},"repo_metadata":{"id":4109614,"uuid":"5219382","full_name":"rack/rack-attack","owner":"rack","description":"Rack middleware for blocking \u0026 throttling","archived":false,"fork":false,"pushed_at":"2026-09-08T17:40:09.000Z","size":985,"stargazers_count":5764,"open_issues_count":20,"forks_count":346,"subscribers_count":156,"default_branch":"main","last_synced_at":"2026-09-28T00:22:03.974Z","etag":null,"topics":["rack","rack-attack","rack-middleware","ruby"],"latest_commit_sha":null,"homepage":null,"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/rack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2012-07-29T02:19:18.000Z","updated_at":"2026-09-25T13:53:56.000Z","dependencies_parsed_at":"2026-07-22T20:04:44.029Z","dependency_job_id":"47793627-d09a-4664-a243-a93e942f1870","html_url":"https://github.com/rack/rack-attack","commit_stats":{"total_commits":626,"total_committers":98,"mean_commits":6.387755102040816,"dds":0.6022364217252396,"last_synced_commit":"0d40ea6538c95fb3c6f70862356d2cb54c02b02e"},"previous_names":["kickstarter/rack-attack"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/rack/rack-attack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/sbom","scorecard":{"id":559561,"data":{"date":"2025-08-11","repo":{"name":"github.com/rack/rack-attack","commit":"467770882daa6f3865cc207c8b5dfdbc4028d7cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 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":"Code-Review","score":10,"reason":"all changesets reviewed","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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.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/build.yml:149: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:150: update your workflow using https://app.stepsecurity.io/secureworkflow/rack/rack-attack/build.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":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T13:16:43.979Z","repository_id":4109614,"created_at":"2025-08-20T13:16:43.979Z","updated_at":"2025-08-20T13:16:43.979Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37784373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-28T02:00:06.534Z","response_time":114,"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":"rack","name":"Official Rack repositories","uuid":"42379","kind":"organization","description":null,"email":null,"website":"http://rack.github.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/42379?v=4","repositories_count":10,"last_synced_at":"2026-09-24T21:25:59.931Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/rack","funding_links":[],"total_stars":13298,"followers":79,"following":0,"created_at":"2022-11-02T16:17:24.220Z","updated_at":"2026-09-24T21:25:59.944Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rack/repositories"},"tags":[{"name":"v6.8.0","sha":"65f1ead3bc648b1e972fd8df0078949f056699d9","kind":"tag","published_at":"2025-10-14T14:34:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.8.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.8.0/manifests"},{"name":"v6.7.0","sha":"d82c9fd7e3efc6fa9859d917d7ab2d90e5a258cf","kind":"commit","published_at":"2023-07-26T04:39:28.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.7.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.7.0/manifests"},{"name":"v6.6.1","sha":"f5f92f44594f9c1ae33f9bfeeaa329348941350c","kind":"tag","published_at":"2022-04-14T01:50:07.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.1/manifests"},{"name":"v6.6.0","sha":"d0ec4de69bf4a8b421ffda2e42181669b30ce01e","kind":"tag","published_at":"2022-01-29T19:18:19.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.6.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.6.0/manifests"},{"name":"v6.5.0","sha":"12a8390d2dc0160f2966f0793a12ac2ce76bfe35","kind":"tag","published_at":"2021-02-07T16:35:04.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.5.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.5.0/manifests"},{"name":"v6.4.0","sha":"6328ddcb1932c64459b93b7a9bdcbb661e73d3da","kind":"tag","published_at":"2021-01-24T00:27:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.4.0/manifests"},{"name":"v6.3.1","sha":"3a5d10c8b371ece53c46ff95a393b8c7346397f6","kind":"tag","published_at":"2020-05-21T02:19:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.1/manifests"},{"name":"v6.3.0","sha":"aa071aa5df4289dd3d7029b187320afa62974685","kind":"tag","published_at":"2020-04-26T14:57:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"da418806638d0556fe15f20cea20194d4bbb85b3","kind":"tag","published_at":"2019-12-18T14:44:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"3654293085f6ac0401d0046cb32529ea0ac5519d","kind":"tag","published_at":"2019-10-30T18:27:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"9bfec1ac701f54ca93c10788fe0eb85e3254a263","kind":"tag","published_at":"2019-10-12T22:04:59.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"c3c6398f7ec31a5b03079c64c9b1bb87d2da0ae2","kind":"tag","published_at":"2019-07-11T20:01:50.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"6045b8289753cd5a542211691d4e8db281de8b28","kind":"tag","published_at":"2019-04-17T21:45:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v6.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v6.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v6.0.0/manifests"},{"name":"v5.4.2","sha":"42a8a303108aa9936b831bd015564a4c775bfc16","kind":"tag","published_at":"2018-10-30T14:12:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.2/manifests"},{"name":"v5.4.1","sha":"332eb40eeca788a870da82693da8ad836dd05951","kind":"tag","published_at":"2018-09-29T21:04:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.1/manifests"},{"name":"v5.4.0","sha":"783060de63caa5c4d5fd80c75ae73c2ef425347c","kind":"tag","published_at":"2018-07-02T17:23:01.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.4.0/manifests"},{"name":"v5.3.2","sha":"21561bb2f529143d975220df5174da7545dd1eb5","kind":"tag","published_at":"2018-06-25T22:27:58.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.2/manifests"},{"name":"v5.3.1","sha":"196868130a043629d948ecfc1c7bbc177fd4ef5a","kind":"tag","published_at":"2018-06-20T23:23:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.1/manifests"},{"name":"v5.3.0","sha":"dac926cf6842b880cd9f5c1105850c2889879176","kind":"tag","published_at":"2018-06-19T19:15:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.3.0/manifests"},{"name":"v5.2.0","sha":"389287f060a94334314c12c9d89377da24678719","kind":"tag","published_at":"2018-03-29T17:35:21.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.2.0/manifests"},{"name":"v5.1.0","sha":"c119186134012bfc3107ecd038b25a1c7619bc1f","kind":"commit","published_at":"2018-03-09T18:23:46.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.1.0/manifests"},{"name":"v5.0.1","sha":"68158ee13332d1ed85fd81d48119045faa991eaa","kind":"tag","published_at":"2016-08-11T17:59:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.1/manifests"},{"name":"v5.0.0","sha":"e5cf56ae462a5c97f674b64491f91bdfc7f7a3ed","kind":"tag","published_at":"2016-08-09T17:00:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0/manifests"},{"name":"v5.0.0.beta1","sha":"eb987a1cafe63757df4e827bed30afe219f5d97b","kind":"tag","published_at":"2016-07-05T02:35:03.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v5.0.0.beta1","html_url":"https://github.com/rack/rack-attack/releases/tag/v5.0.0.beta1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v5.0.0.beta1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v5.0.0.beta1/manifests"},{"name":"v4.4.1","sha":"58924168cc7325f25f5502530af1c70c183b1376","kind":"commit","published_at":"2016-02-17T14:50:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.1/manifests"},{"name":"v4.4.0","sha":"d8b9e2f11181469e00399a628a734b5208cb4fb3","kind":"commit","published_at":"2016-02-10T20:05:43.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.4.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.4.0/manifests"},{"name":"v4.3.1","sha":"4ec58e36de08d4cf61d60eae1f9b7ea986ad2aae","kind":"tag","published_at":"2015-12-18T17:31:35.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.1/manifests"},{"name":"v4.3.0","sha":"ab0d17c3ef7e427485dff61deadb26988433427f","kind":"tag","published_at":"2015-05-22T20:01:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.3.0/manifests"},{"name":"v4.2.0","sha":"f9b7721e592a5a3598227be2a811a8e5c568b338","kind":"tag","published_at":"2014-10-26T19:45:30.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.2.0/manifests"},{"name":"v4.1.1","sha":"60d4834969c3b2abb938d9388f1183264fa715e5","kind":"tag","published_at":"2014-09-11T20:27:13.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.1/manifests"},{"name":"v4.1.0","sha":"1a3cddb46815431724b9b0a45d0633a7d8485bae","kind":"tag","published_at":"2014-05-22T20:21:06.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.1.0/manifests"},{"name":"v4.0.1","sha":"0e599a4dd6691a140cb60764d38f61db6039e542","kind":"tag","published_at":"2014-05-14T20:37:44.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"430672d8f47d2276709b9fdc2b501858dd317255","kind":"tag","published_at":"2014-04-28T21:28:20.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v4.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v4.0.0/manifests"},{"name":"v3.0.0","sha":"95264f9d19296c49e24dc9a420b5fec18dc2410a","kind":"tag","published_at":"2014-03-15T19:06:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v3.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v3.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v3.0.0/manifests"},{"name":"v2.3.0","sha":"25d8cc7c49bd373dff4000049bf552141d8b0702","kind":"tag","published_at":"2013-10-11T19:53:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.3.0/manifests"},{"name":"v2.2.1","sha":"4872649e7469f741f42b4f4d849527ae7102b2b5","kind":"tag","published_at":"2013-08-13T15:40:17.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.1/manifests"},{"name":"v2.2.0","sha":"237dc2d94436f19792ed2541e2afd81f975eb08a","kind":"tag","published_at":"2013-06-20T15:33:36.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.2.0/manifests"},{"name":"v2.1.1","sha":"bb7ed70caaa520d1116128721957bd7c236c6cb8","kind":"tag","published_at":"2013-05-16T18:29:14.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"ecec8576aed8bc14325fd6c9fcc43e83b92042c9","kind":"tag","published_at":"2013-03-05T15:07:23.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.1.0/manifests"},{"name":"v2.0.0","sha":"3bcb453464758bd4833a36678bbb5893719331bf","kind":"tag","published_at":"2013-01-11T19:41:37.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v2.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v2.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v2.0.0/manifests"},{"name":"v1.3.2","sha":"5b864ca3d18cea2a7fbe32af51fe8fca78dad665","kind":"tag","published_at":"2012-08-15T22:16:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.2","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.2/manifests"},{"name":"v1.3.1","sha":"853c9ceef3acf6e619eb8179d828ef8eded966d3","kind":"tag","published_at":"2012-08-09T15:06:11.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"5a9f991b6eac02030d6c6d46efda05b83a32f7a3","kind":"tag","published_at":"2012-08-08T19:15:29.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.3.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.3.0/manifests"},{"name":"v1.2.0","sha":"bbd078ee819b9d2bcb52e2ae18ed2d27549305a4","kind":"tag","published_at":"2012-08-06T18:22:41.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.2.0/manifests"},{"name":"v1.1.0","sha":"e135f173867b5d93cbc33e53411534d739eeeda4","kind":"tag","published_at":"2012-08-06T17:50:42.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.1.0/manifests"},{"name":"v1.0.0","sha":"d50e779cdcffccde1ba6ef7edf4a34efce9e5596","kind":"tag","published_at":"2012-08-02T16:16:34.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v1.0.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v1.0.0/manifests"},{"name":"v0.2.0","sha":"f82750c1c26b8f4579c4184c3333db7833b0558e","kind":"tag","published_at":"2012-07-30T19:48:31.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.2.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"9552d56c241097a4175b2f8599a074ba2ec6f7e2","kind":"tag","published_at":"2012-07-30T17:55:25.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.1.0","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.1.0/manifests"},{"name":"v0.0.3","sha":"d25a7f5d2444a16a12efd1d6764426dc5bfba30b","kind":"tag","published_at":"2012-07-27T21:52:27.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.3","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.3/manifests"},{"name":"v0.0.1","sha":"885b19c6336de6c936ea4815f75cf3ee1ca9a987","kind":"tag","published_at":"2012-07-25T14:26:55.000Z","download_url":"https://codeload.github.com/rack/rack-attack/tar.gz/v0.0.1","html_url":"https://github.com/rack/rack-attack/releases/tag/v0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/rack/rack-attack@v0.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/tags/v0.0.1/manifests"}]},"repo_metadata_updated_at":"2026-09-28T02:31:33.269Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":4.9403873011788395,"dependent_packages_count":4.629400232054024,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":4.784893766616432},"purl":"pkg:golang/github.com/Rack/Rack-attack","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/Rack/Rack-attack","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/Rack/Rack-attack","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/Rack/Rack-attack/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-09-27T21:00:51.513Z","issues_count":81,"pull_requests_count":134,"avg_time_to_close_issue":21533545.971830986,"avg_time_to_close_pull_request":7257017.355769231,"issues_closed_count":71,"pull_requests_closed_count":104,"pull_request_authors_count":56,"issue_authors_count":73,"avg_comments_per_issue":2.444444444444444,"avg_comments_per_pull_request":1.7238805970149254,"merged_pull_requests_count":78,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":3,"past_year_pull_requests_count":17,"past_year_avg_time_to_close_issue":1428276.0,"past_year_avg_time_to_close_pull_request":754924.25,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":1.3333333333333333,"past_year_avg_comments_per_pull_request":0.6470588235294118,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":8,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/issues","maintainers":[{"login":"santib","count":38,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"},{"login":"ioquatix","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ioquatix"}],"active_maintainers":[{"login":"santib","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FRack%2FRack-attack/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FRack%2FRack-attack/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FRack%2FRack-attack/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FRack%2FRack-attack/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FRack%2FRack-attack/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FRack%2FRack-attack/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2539788,"maintainers_count":0,"namespaces_count":852760,"keywords_count":136985,"github":"golang","metadata":{"funded_packages_count":110283,"sync_missing_packages_cursor":{"timestamp":"2026-09-29T00:04:57.155362Z","path":"github.com/virtengine/virtengine/sdk/specs","version":"v0.0.0-20260928231908-c0c887541540"},"rate_limit":5},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-10-01T05:04:10.855Z","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"}}],"commits":{"id":3333,"full_name":"rack/rack-attack","default_branch":"main","total_commits":650,"total_committers":96,"total_bot_commits":3,"total_bot_committers":1,"mean_commits":6.770833333333333,"dds":0.6015384615384616,"past_year_total_commits":13,"past_year_total_committers":6,"past_year_total_bot_commits":2,"past_year_total_bot_committers":1,"past_year_mean_commits":2.1666666666666665,"past_year_dds":0.6923076923076923,"last_synced_at":"2026-10-04T00:01:12.423Z","last_synced_commit":"b771ea18afb9e6b625906a641d2d331e6d0c282b","created_at":"2023-03-07T09:17:18.123Z","updated_at":"2026-10-04T00:01:11.756Z","committers":[{"name":"Gonzalo Rodriguez","email":"grzuy0@gmail.com","login":"grzuy","count":259},{"name":"Aaron Suggs","email":"aaron@ktheory.com","login":"ktheory","count":155},{"name":"Santiago Bartesaghi","email":"sbartesaghi@hotmail.com","login":"santib","count":29},{"name":"fatkodima","email":"fatkodima123@gmail.com","login":"fatkodima","count":18},{"name":"madlep","email":"madlep@madlep.com","login":"madlep","count":10},{"name":"hakanensari","email":"hakanensari@gmail.com","login":"hakanensari","count":10},{"name":"Zach Millman","email":"zach.millman@gmail.com","login":"zmillman","count":10},{"name":"Olle Jonsson","email":"olle.jonsson@gmail.com","login":"olleolleolle","count":8},{"name":"Vipul A M","email":"vipulnsward@gmail.com","login":"vipulnsward","count":8},{"name":"Vincent Boisard","email":"vincent.boisard@dimelo.com","login":null,"count":8},{"name":"Lucas Mansur","email":"lucas.mansur2@gmail.com","login":"lmansur","count":7},{"name":"Jonathan del Strother","email":"jdelStrother@gmail.com","login":"jdelStrother","count":4},{"name":"Paul Coates","email":"paul.coates@livingsocial.com","login":null,"count":4},{"name":"Ryan Laughlin","email":"ryan@splitwise.com","login":"rofreg","count":4},{"name":"Samuel Williams","email":"samuel.williams@oriontransfer.co.nz","login":"ioquatix","count":4},{"name":"Genadi Samokovarov","email":"gsamokovarov@gmail.com","login":"gsamokovarov","count":3},{"name":"Carsten Zimmermann","email":"carp@hacksocke.de","login":"carpodaster","count":3},{"name":"Jordan Moncharmont","email":"jormon@gmail.com","login":"jormon","count":3},{"name":"Stan Hu","email":"stanhu@gmail.com","login":"stanhu","count":3},{"name":"Steve Hodgkiss","email":"steve@hodgkiss.me","login":"stevehodgkiss","count":3},{"name":"brchristian","email":"brchristian@gmail.com","login":"brchristian","count":3},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":3},{"name":"James Mead","email":"james@floehopper.org","login":"floehopper","count":3},{"name":"pisaacs","email":"pisaacs","login":"pisaacs","count":2},{"name":"thomas morgan","email":"tm@iprog.com","login":"zarqman","count":2},{"name":"Han","email":"szu.han.chang@gmail.com","login":"hanchang","count":2},{"name":"Kurtis Rainbolt-Greene","email":"kurtis@rainbolt-greene.online","login":"krainboltgreene","count":2},{"name":"Alex Volkovitsky \u0026 Sachin Maharjan","email":"pair+alex+sachin@rally.org","login":null,"count":2},{"name":"Joe Van Dyk","email":"joevandyk@gmail.com","login":"joevandyk","count":2},{"name":"Jean Boussier","email":"jean.boussier@gmail.com","login":"byroot","count":2},{"name":"jamesprior","email":"james@mabonus.net","login":"jamesprior","count":2},{"name":"Eliot Sykes","email":"eliotsykes@gmail.com","login":"eliotsykes","count":2},{"name":"Brian Kephart","email":"briantkephart@gmail.com","login":"brian-kephart","count":2},{"name":"fukayatsu","email":"fukayatsu@gmail.com","login":"fukayatsu","count":2},{"name":"Tristan Toye","email":"tristan@careerjsm.com","login":"TristanToye","count":2},{"name":"Renée Hendricksen","email":"renee@travis-ci.org","login":"renee-travisci","count":2},{"name":"Lukas Spieß","email":"lumaxis","login":"lumaxis","count":2},{"name":"Leo Arnold","email":"github@leoarnold.de","login":"leoarnold","count":2},{"name":"Brad Lindsay","email":"lindsay@polleverywhere.com","login":"bfad","count":1},{"name":"Bart de Water","email":"118401830+bdewater-thatch","login":"bdewater-thatch","count":1},{"name":"Amir Shadaab Mohammed","email":"ammohammed@groupon.com","login":null,"count":1},{"name":"Carlos Contreras","email":"carlos.contreras@koombea.com","login":null,"count":1},{"name":"Cristian Greco","email":"cristian@gocardless.com","login":null,"count":1},{"name":"Kyle d'Oliveira","email":"kyle.doliveira@clio.com","login":null,"count":1},{"name":"Rob Watson","email":"rob@mixlr.com","login":null,"count":1},{"name":"Will Kimeria","email":"william.kimeria@lookout.com","login":null,"count":1},{"name":"barelyknown","email":"seandevine@gopartage.com","login":null,"count":1},{"name":"jun_tanaka555","email":"jun.tanaka@housmart.com","login":null,"count":1},{"name":"Michael Jelks","email":"spam@zaftig.net","login":"mjelks","count":1},{"name":"Mike Ferrier","email":"mferrier@gmail.com","login":"mferrier","count":1},{"name":"r-plus","email":"r-plus","login":"r-plus","count":1},{"name":"Adrian CB","email":"abarbul@gmail.com","login":"adriancb","count":1},{"name":"Mitchell Henke","email":"mitchell.henke@gsa.gov","login":"mitchellhenke","count":1},{"name":"Nate Berkopec","email":"nate.berkopec@gmail.com","login":"nateberkopec","count":1},{"name":"Navin","email":"navin@novemberkilo.com","login":"novemberkilo","count":1},{"name":"Nikolay Rys","email":"nikolay@rys.me","login":"NikolayRys","count":1},{"name":"Orhan Toy","email":"toyorhan@gmail.com","login":"orhantoy","count":1},{"name":"Pedro Nascimento","email":"pnascimento@gmail.com","login":"lunks","count":1},{"name":"Richard Lee","email":"dlackty@gmail.com","login":"dlackty","count":1},{"name":"Richard Schneeman","email":"richard.schneeman@gmail.com","login":"schneems","count":1},{"name":"Ricky Gu","email":"rickyzgu@gmail.com","login":"rickygu","count":1},{"name":"Salimane Adjao Moustapha","email":"me@salimane.com","login":"salimane","count":1},{"name":"Sebastian Cohnen","email":"tisba","login":"tisba","count":1},{"name":"Spencer Norman","email":"spencerdnorman@gmail.com","login":"sdnorm","count":1},{"name":"T.J. Schuck","email":"tj@tjschuck.com","login":"tjschuck","count":1},{"name":"Tieg Zaharia","email":"tieg.zaharia@gmail.com","login":"tiegz","count":1},{"name":"Tristan Dunn","email":"tristanzdunn@gmail.com","login":"tristandunn","count":1},{"name":"alexchee","email":"alexchee11@gmail.com","login":"alexchee","count":1},{"name":"blahed","email":"trvsdnn@gmail.com","login":"trvsdnn","count":1},{"name":"dsantosmerino","email":"dsantosmerino@gmail.com","login":"dsantosmerino","count":1},{"name":"ferdinand","email":"ferdinandrosario","login":"ferdinandrosario","count":1},{"name":"fynsta","email":"63241108+fynsta","login":"fynsta","count":1},{"name":"Andrew Baber","email":"agbaber@gmail.com","login":"agbaber","count":1},{"name":"Alexey Zapparov","email":"alexey@zapparov.com","login":"ixti","count":1},{"name":"Alexey Vasiliev","email":"leopard.not.a@gmail.com","login":"le0pard","count":1},{"name":"Alex Taylor","email":"alexmctaylorpants@gmail.com","login":"mctaylorpants","count":1},{"name":"Alex Martens","email":"alex.martens@coupa.com","login":"alexsmartens","count":1},{"name":"Domenoth","email":"bardbowman@aol.com","login":"Domenoth","count":1},{"name":"Eric Garside","email":"garside@gmail.com","login":"garside","count":1},{"name":"Grey Baker","email":"greysteil@gmail.com","login":"greysteil","count":1},{"name":"Hayley Anderson","email":"hayleyanderson@zoho.com","login":"HayleyCAnderson","count":1},{"name":"Howard Wilson","email":"howard@watsonbox.net","login":"watsonbox","count":1},{"name":"Jeremy Pinnix","email":"jpinnix@pixelgrazer.com","login":"jpinnix","count":1},{"name":"Joe Masilotti","email":"joe@masilotti.com","login":"joemasilotti","count":1},{"name":"Johnathan Lyman","email":"jelyman@gmail.com","login":"johlym","count":1},{"name":"Jun Jiang","email":"jasl9187@hotmail.com","login":"jasl","count":1},{"name":"Katsuhiko YOSHIDA","email":"claddvd@gmail.com","login":"kyoshidajp","count":1},{"name":"Koen Rouwhorst","email":"info@koenrouwhorst.nl","login":"koenrh","count":1},{"name":"Leslie Zhang","email":"zxs1989@mail.ustc.edu.cn","login":"fighterleslie","count":1},{"name":"Lucas \"medk\" Pinto","email":"lucas.pinto.33@googlemail.com","login":"lucaspinto","count":1},{"name":"Maksim Abramchuk","email":"MaximAbramchuck@gmail.com","login":"MaksimAbramchuk","count":1},{"name":"Marc G Gauthier","email":"marcg.gauthier@gmail.com","login":"marcgg","count":1},{"name":"Marco Colli","email":"collimarco91@gmail.com","login":"collimarco","count":1},{"name":"Matthias Käppler","email":"mttkay","login":"mttkay","count":1},{"name":"Mattias Lundell","email":"capitrane@gmail.com","login":"mattias-lundell","count":1},{"name":"Maxime","email":"maxime.menigoz@gmail.com","login":"ishigo974","count":1}],"past_year_committers":[{"name":"Gonzalo","email":"456459+grzuy","login":"grzuy","count":4},{"name":"Santiago Bartesaghi","email":"sbartesaghi@hotmail.com","login":"santib","count":3},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"Jean Boussier","email":"jean.boussier@gmail.com","login":"byroot","count":2},{"name":"r-plus","email":"r-plus","login":"r-plus","count":1},{"name":"Bart de Water","email":"118401830+bdewater-thatch","login":"bdewater-thatch","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-10-05T00:00:10.238Z","repositories_count":8097258,"commits_count":1231515512,"contributors_count":56304767,"owners_count":1694624,"committers_count":3738071,"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":"rack/rack-attack","html_url":"https://github.com/rack/rack-attack","last_synced_at":"2026-10-04T00:00:45.727Z","status":null,"issues_count":81,"pull_requests_count":134,"avg_time_to_close_issue":21533545.971830986,"avg_time_to_close_pull_request":7257017.355769231,"issues_closed_count":71,"pull_requests_closed_count":104,"pull_request_authors_count":56,"issue_authors_count":73,"avg_comments_per_issue":2.444444444444444,"avg_comments_per_pull_request":1.7238805970149254,"merged_pull_requests_count":78,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":3,"past_year_pull_requests_count":17,"past_year_avg_time_to_close_issue":1428276.0,"past_year_avg_time_to_close_pull_request":754924.25,"past_year_issues_closed_count":2,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":1.3333333333333333,"past_year_avg_comments_per_pull_request":0.6470588235294118,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":2,"past_year_merged_pull_requests_count":8,"created_at":"2023-05-12T15:36:51.887Z","updated_at":"2026-10-04T00:00:45.727Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rack%2Frack-attack/issues","issue_labels_count":{"type: question":17,"type: feature request":9,"area: throttle":8,"area: cache store":5,"area: instrumentation":5,"area: allow2ban":3,"area: middleware":3,"area: fail2ban":2,"type: error report":2,"area: blocklist":2,"area: request object":2,"type: docs":2,"area: cache store - redis":2,"type: administrative":1},"pull_request_labels_count":{"github_actions":2,"dependencies":2},"issue_author_associations_count":{"NONE":73,"CONTRIBUTOR":5,"COLLABORATOR":3},"pull_request_author_associations_count":{"COLLABORATOR":47,"NONE":43,"CONTRIBUTOR":41,"MEMBER":3},"issue_authors":{"grzuy":3,"alexsmartens":2,"anikettstiwari":2,"6f6d6172":2,"Nowaker":2,"JasonBarnabe":2,"ndvbd":2,"fatkodima":1,"dogweather":1,"fullmetalengineer":1,"agustin":1,"aurcioli-handy":1,"djpowers":1,"fenelon":1,"joshm1204":1,"bwillis":1,"leo3po":1,"sissygaymer":1,"vamsipavanmahesh":1,"tbcooney":1,"tesths":1,"Trimakas":1,"bmo":1,"jorlogicus":1,"acegilz":1,"ggambetti":1,"mm580486":1,"floehopper":1,"23tux":1,"venables":1,"MarkMurphy":1,"jjb":1,"afeld":1,"dorongutman":1,"vanboom":1,"jarosluv":1,"pedrocunha":1,"zarqman":1,"CarlosUvaSilva":1,"masa-ekohe":1,"aishbuilds":1,"chrisedington":1,"xxx44yyy":1,"julienbfabre":1,"dadiaz18":1,"franzliedke":1,"derekargueta":1,"synth":1,"gingerlime":1,"abdalafer":1,"fukayatsu":1,"gregblass":1,"johlym":1,"jessehanley":1,"spazer5":1,"skyeagle":1,"dougc84":1,"christiannaths":1,"rouaneta":1,"monfresh":1,"arnoFleming":1,"mahmoudgamal0":1,"ernsheong":1,"braun2morrow":1,"mamidinilesh":1,"somanwal":1,"suupic":1,"dalezak":1,"gsaks123":1,"klawrence":1,"KieranP":1,"h0jeZvgoxFepBQ2C":1,"adityappc":1},"pull_request_authors":{"santib":43,"grzuy":9,"fatkodima":6,"AndresMaqueo":5,"floehopper":3,"johnnyshields":3,"ioquatix":3,"dependabot[bot]":2,"sethhorsley":2,"mpenalozag":2,"NOX73":2,"gogainda":2,"royzwambag":2,"tisba":2,"fynsta":2,"woahdae":2,"byroot":2,"alexsmartens":2,"JasonnnW3000":2,"zarqman":2,"carpodaster":1,"tiegz":1,"rience":1,"simi":1,"mttkay":1,"fukayatsu":1,"orhantoy":1,"agbaber":1,"arimu1":1,"jdelStrother":1,"kyoshidajp":1,"jasonfb":1,"bdewater-thatch":1,"johlym":1,"dsalahutdinov":1,"nateberkopec":1,"mitchellhenke":1,"igor-drozdov":1,"MaksimAbramchuk":1,"NikolayRys":1,"woodhull":1,"r-plus":1,"tubbo":1,"brchristian":1,"okuramasafumi":1,"adriancb":1,"jiang925":1,"ixti":1,"Kosai106":1,"tuzz":1,"jamiemccarthy":1,"joevandyk":1,"melopilosyan":1,"itskingori":1,"jeremyevans":1,"pinkahd":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-10-05T00:00:10.211Z","repositories_count":17806786,"issues_count":47425456,"pull_requests_count":147263532,"authors_count":11919495,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{"dependencies":2,"github_actions":2},"past_year_issue_author_associations_count":{"NONE":3},"past_year_pull_request_author_associations_count":{"COLLABORATOR":7,"CONTRIBUTOR":5,"NONE":5},"past_year_issue_authors":{"23tux":1,"braun2morrow":1,"jjb":1},"past_year_pull_request_authors":{"santib":4,"grzuy":3,"byroot":2,"dependabot[bot]":2,"arimu1":1,"bdewater-thatch":1,"okuramasafumi":1,"rience":1,"r-plus":1,"woodhull":1},"maintainers":[{"login":"santib","count":38,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"},{"login":"ioquatix","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ioquatix"}],"active_maintainers":[{"login":"santib","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/santib"},{"login":"grzuy","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grzuy"}]},"events":{"total":{"CommitCommentEvent":1,"CreateEvent":2,"DeleteEvent":2,"ForkEvent":10,"IssueCommentEvent":28,"IssuesEvent":7,"PullRequestEvent":35,"PullRequestReviewCommentEvent":23,"PullRequestReviewEvent":35,"PushEvent":23,"WatchEvent":133},"last_year":{"CommitCommentEvent":1,"CreateEvent":1,"DeleteEvent":2,"ForkEvent":2,"IssueCommentEvent":4,"IssuesEvent":1,"PullRequestEvent":7,"PullRequestReviewCommentEvent":7,"PullRequestReviewEvent":8,"PushEvent":11,"WatchEvent":32}},"keywords":["rack","rack-attack","rack-middleware","ruby"],"dependencies":[{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2026-01-19T18:01:45.222Z","updated_at":"2026-01-19T18:01:45.222Z","repository_link":"https://github.com/rack/rack-attack/blob/main/Gemfile","dependencies":[{"id":25799941484,"package_name":"bake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":25799941486,"package_name":"bake-gem","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build.yml","sha":null,"kind":"manifest","created_at":"2023-01-13T12:56:55.434Z","updated_at":"2023-01-13T12:56:55.434Z","repository_link":"https://github.com/rack/rack-attack/blob/main/.github/workflows/build.yml","dependencies":[{"id":6875917546,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6875917547,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":6875917548,"package_name":"redis","ecosystem":"actions","requirements":"*","direct":true,"kind":"docker","optional":false},{"id":6875917549,"package_name":"memcached","ecosystem":"actions","requirements":"*","direct":true,"kind":"docker","optional":false}]},{"ecosystem":"rubygems","filepath":"rack-attack.gemspec","sha":null,"kind":"manifest","created_at":"2023-01-13T12:56:55.468Z","updated_at":"2023-01-13T12:56:55.468Z","repository_link":"https://github.com/rack/rack-attack/blob/main/rack-attack.gemspec","dependencies":[{"id":6875917550,"package_name":"rack","ecosystem":"rubygems","requirements":"\u003e= 1.0, \u003c 3","direct":true,"kind":"runtime","optional":false},{"id":6875917551,"package_name":"appraisal","ecosystem":"rubygems","requirements":"~\u003e 2.2","direct":true,"kind":"development","optional":false},{"id":6875917552,"package_name":"bundler","ecosystem":"rubygems","requirements":"\u003e= 1.17, \u003c 3.0","direct":true,"kind":"development","optional":false},{"id":6875917553,"package_name":"minitest","ecosystem":"rubygems","requirements":"~\u003e 5.11","direct":true,"kind":"development","optional":false},{"id":6875917554,"package_name":"minitest-stub-const","ecosystem":"rubygems","requirements":"~\u003e 0.6","direct":true,"kind":"development","optional":false},{"id":6875917555,"package_name":"rack-test","ecosystem":"rubygems","requirements":"~\u003e 2.0","direct":true,"kind":"development","optional":false},{"id":6875917556,"package_name":"rake","ecosystem":"rubygems","requirements":"~\u003e 13.0","direct":true,"kind":"development","optional":false},{"id":6875917557,"package_name":"rubocop","ecosystem":"rubygems","requirements":"= 0.89.1","direct":true,"kind":"development","optional":false},{"id":6875917558,"package_name":"rubocop-performance","ecosystem":"rubygems","requirements":"~\u003e 1.5.0","direct":true,"kind":"development","optional":false},{"id":6875917559,"package_name":"timecop","ecosystem":"rubygems","requirements":"~\u003e 0.9.1","direct":true,"kind":"development","optional":false},{"id":6875917560,"package_name":"byebug","ecosystem":"rubygems","requirements":"~\u003e 11.0","direct":true,"kind":"development","optional":false},{"id":6875917561,"package_name":"railties","ecosystem":"rubygems","requirements":"\u003e= 4.2, \u003c 7.1","direct":true,"kind":"development","optional":false}]}],"score":34.34458296940911,"created_at":"2024-12-15T21:38:07.220Z","updated_at":"2026-10-05T00:30:45.297Z","avatar_url":"https://github.com/rack.png","language":"Ruby","monthly_downloads":0,"readme":":warning:  You are viewing the development's branch version of README which might contain documentation for unreleased features.\nFor the README consistent with the latest released version see https://github.com/rack/rack-attack/blob/6-stable/README.md.\n\n# Rack::Attack\n\n*Rack middleware for blocking \u0026 throttling abusive requests*\n\nProtect your Rails and Rack apps from bad clients. Rack::Attack lets you easily decide when to *allow*, *block* and *throttle* based on properties of the request.\n\nSee the [Backing \u0026 Hacking blog post](https://www.kickstarter.com/backing-and-hacking/rack-attack-protection-from-abusive-clients) introducing Rack::Attack.\n\n[![Gem Version](https://badge.fury.io/rb/rack-attack.svg)](https://badge.fury.io/rb/rack-attack)\n[![build](https://github.com/rack/rack-attack/actions/workflows/build.yml/badge.svg)](https://github.com/rack/rack-attack/actions/workflows/build.yml)\n[![Join the chat at https://gitter.im/rack-attack/rack-attack](https://badges.gitter.im/rack-attack/rack-attack.svg)](https://gitter.im/rack-attack/rack-attack)\n\n## Table of contents\n\n- [Getting started](#getting-started)\n  - [Installing](#installing)\n  - [Plugging into the application](#plugging-into-the-application)\n- [Usage](#usage)\n  - [Safelisting](#safelisting)\n    - [`safelist_ip(ip_address_string)`](#safelist_ipip_address_string)\n    - [`safelist_ip(ip_subnet_string)`](#safelist_ipip_subnet_string)\n    - [`safelist(name, \u0026block)`](#safelistname-block)\n  - [Blocking](#blocking)\n    - [`blocklist_ip(ip_address_string)`](#blocklist_ipip_address_string)\n    - [`blocklist_ip(ip_subnet_string)`](#blocklist_ipip_subnet_string)\n    - [`blocklist(name, \u0026block)`](#blocklistname-block)\n    - [Fail2Ban](#fail2ban)\n    - [Allow2Ban](#allow2ban)\n  - [Throttling](#throttling)\n    - [`throttle(name, options, \u0026block)`](#throttlename-options-block)\n  - [Tracks](#tracks)\n  - [Cache store configuration](#cache-store-configuration)\n- [Customizing responses](#customizing-responses)\n  - [RateLimit headers for well-behaved clients](#ratelimit-headers-for-well-behaved-clients)\n- [Logging \u0026 Instrumentation](#logging--instrumentation)\n- [Testing](#testing)\n- [How it works](#how-it-works)\n  - [About Tracks](#about-tracks)\n- [Performance](#performance)\n- [Motivation](#motivation)\n- [Contributing](#contributing)\n- [Code of Conduct](#code-of-conduct)\n- [Development setup](#development-setup)\n- [License](#license)\n\n## Getting started\n\n### Installing\n\nAdd this line to your application's Gemfile:\n\n```ruby\n# In your Gemfile\n\ngem \"rack-attack\", \"~\u003e 6.8\"\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install rack-attack\n\n### Plugging into the application\n\nThen tell your ruby web application to use rack-attack as a middleware.\n\na) For __rails__ applications it is used by default.\n\nYou can disable it permanently (like for specific environment) or temporarily (can be useful for specific test cases) by writing:\n\n```ruby\nRack::Attack.enabled = false\n```\n\nb) For __rack__ applications:\n\n```ruby\n# In config.ru\n\nrequire \"rack/attack\"\nuse Rack::Attack\n```\n\n__IMPORTANT__: By default, rack-attack won't perform any blocking or throttling, until you specifically tell it what to protect against by configuring some rules.\n\n## Usage\n\n*Tip:* If you just want to get going asap, then you can take our [example configuration](docs/example_configuration.md)\nand tailor it to your needs, or check out the [advanced configuration](docs/advanced_configuration.md) examples.\n\nDefine rules by calling `Rack::Attack` public methods, in any file that runs when your application is being initialized. For rails applications this means creating a new file named `config/initializers/rack_attack.rb` and writing your rules there.\n\n### Safelisting\n\nSafelists have the most precedence, so any request matching a safelist would be allowed despite matching any number of blocklists or throttles.\n\n#### `safelist_ip(ip_address_string)`\n\nE.g.\n\n```ruby\n# config/initializers/rack_attack.rb (for rails app)\n\nRack::Attack.safelist_ip(\"5.6.7.8\")\n```\n\n#### `safelist_ip(ip_subnet_string)`\n\nE.g.\n\n```ruby\n# config/initializers/rack_attack.rb (for rails app)\n\nRack::Attack.safelist_ip(\"5.6.7.0/24\")\n```\n\n#### `safelist(name, \u0026block)`\n\nName your custom safelist and make your ruby-block argument return a truthy value if you want the request to be allowed, and falsy otherwise.\n\nThe request object is a [Rack::Request](http://www.rubydoc.info/gems/rack/Rack/Request).\n\nE.g.\n\n```ruby\n# config/initializers/rack_attack.rb (for rails apps)\n\n# Provided that trusted users use an HTTP request header named APIKey\nRack::Attack.safelist(\"mark any authenticated access safe\") do |request|\n  # Requests are allowed if the return value is truthy\n  request.env[\"HTTP_APIKEY\"] == \"secret-string\"\nend\n\n# Always allow requests from localhost\n# (blocklist \u0026 throttles are skipped)\nRack::Attack.safelist('allow from localhost') do |req|\n  # Requests are allowed if the return value is truthy\n  '127.0.0.1' == req.ip || '::1' == req.ip\nend\n```\n\n### Blocking\n\n#### `blocklist_ip(ip_address_string)`\n\nE.g.\n\n```ruby\n# config/initializers/rack_attack.rb (for rails apps)\n\nRack::Attack.blocklist_ip(\"1.2.3.4\")\n```\n\n#### `blocklist_ip(ip_subnet_string)`\n\nE.g.\n\n```ruby\n# config/initializers/rack_attack.rb (for rails apps)\n\nRack::Attack.blocklist_ip(\"1.2.0.0/16\")\n```\n\n#### `blocklist(name, \u0026block)`\n\nName your custom blocklist and make your ruby-block argument return a truthy value if you want the request to be blocked, and falsy otherwise.\n\nThe request object is a [Rack::Request](http://www.rubydoc.info/gems/rack/Rack/Request).\n\nE.g.\n\n```ruby\n# config/initializers/rack_attack.rb (for rails apps)\n\nRack::Attack.blocklist(\"block all access to admin\") do |request|\n  # Requests are blocked if the return value is truthy\n  request.path.start_with?(\"/admin\")\nend\n\nRack::Attack.blocklist('block bad UA logins') do |req|\n  req.path == '/login' \u0026\u0026 req.post? \u0026\u0026 req.user_agent == 'BadUA'\nend\n```\n\n#### Fail2Ban\n\n`Fail2Ban.filter` can be used within a blocklist to block all requests from misbehaving clients.\nThis pattern is inspired by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page).\nSee the [fail2ban documentation](https://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Jail_Options) for more details on\nhow the parameters work.  For multiple filters, be sure to put each filter in a separate blocklist and use a unique discriminator for each fail2ban filter.\n\nFail2ban state is stored in a [configurable cache](#cache-store-configuration) (which defaults to `Rails.cache` if present).\n\n```ruby\n# Block suspicious requests for '/etc/password' or wordpress specific paths.\n# After 3 blocked requests in 10 minutes, block all requests from that IP for 5 minutes.\nRack::Attack.blocklist('fail2ban pentesters') do |req|\n  # `filter` returns truthy value if request fails, or if it's from a previously banned IP\n  # so the request is blocked\n  Rack::Attack::Fail2Ban.filter(\"pentesters-#{req.ip}\", maxretry: 3, findtime: 10.minutes, bantime: 5.minutes) do\n    # The count for the IP is incremented if the return value is truthy\n    CGI.unescape(req.query_string) =~ %r{/etc/passwd} ||\n    req.path.include?('/etc/passwd') ||\n    req.path.include?('wp-admin') ||\n    req.path.include?('wp-login')\n\n  end\nend\n```\n\nNote that `Fail2Ban` filters are not automatically scoped to the blocklist, so when using multiple filters in an application the scoping must be added to the discriminator e.g. `\"pentest:#{req.ip}\"`.\n\n#### Allow2Ban\n\n`Allow2Ban.filter` works the same way as the `Fail2Ban.filter` except that it *allows* requests from misbehaving\nclients until such time as they reach maxretry at which they are cut off as per normal.\n\nAllow2ban state is stored in a [configurable cache](#cache-store-configuration) (which defaults to `Rails.cache` if present).\n\n```ruby\n# Lockout IP addresses that are hammering your login page.\n# After 20 requests in 1 minute, block all requests from that IP for 1 hour.\nRack::Attack.blocklist('allow2ban login scrapers') do |req|\n  # `filter` returns false value if request is to your login page (but still\n  # increments the count) so request below the limit are not blocked until\n  # they hit the limit.  At that point, filter will return true and block.\n  Rack::Attack::Allow2Ban.filter(req.ip, maxretry: 20, findtime: 1.minute, bantime: 1.hour) do\n    # The count for the IP is incremented if the return value is truthy.\n    req.path == '/login' and req.post?\n  end\nend\n```\n\n### Throttling\n\nThrottle state is stored in a [configurable cache](#cache-store-configuration) (which defaults to `Rails.cache` if present).\n\n#### `throttle(name, options, \u0026block)`\n\nName your custom throttle, provide `limit` and `period` as options, and make your ruby-block argument return the __discriminator__. This discriminator is how you tell rack-attack whether you're limiting per IP address, per user email or any other.\n\nThe request object is a [Rack::Request](http://www.rubydoc.info/gems/rack/Rack/Request).\n\nE.g.\n\n```ruby\n# config/initializers/rack_attack.rb (for rails apps)\n\nRack::Attack.throttle(\"requests by ip\", limit: 5, period: 2) do |request|\n  request.ip\nend\n\n# Throttle login attempts for a given email parameter to 6 reqs/minute\n# Return the *normalized* email as a discriminator on POST /login requests\nRack::Attack.throttle('limit logins per email', limit: 6, period: 60) do |req|\n  if req.path == '/login' \u0026\u0026 req.post?\n    # Normalize the email, using the same logic as your authentication process, to\n    # protect against rate limit bypasses.\n    req.params['email'].to_s.downcase.gsub(/\\s+/, \"\")\n  end\nend\n\n# You can also set a limit and period using a proc. For instance, after\n# Rack::Auth::Basic has authenticated the user:\nlimit_proc = proc { |req| req.env[\"REMOTE_USER\"] == \"admin\" ? 100 : 1 }\nperiod_proc = proc { |req| req.env[\"REMOTE_USER\"] == \"admin\" ? 1 : 60 }\n\nRack::Attack.throttle('request per ip', limit: limit_proc, period: period_proc) do |request|\n  request.ip\nend\n```\n\n### Tracks\n\n```ruby\n# Track requests from a special user agent.\nRack::Attack.track(\"special_agent\") do |req|\n  req.user_agent == \"SpecialAgent\"\nend\n\n# Supports optional limit and period, triggers the notification only when the limit is reached.\nRack::Attack.track(\"special_agent\", limit: 6, period: 60) do |req|\n  req.user_agent == \"SpecialAgent\"\nend\n\n# Track it using ActiveSupport::Notification\nActiveSupport::Notifications.subscribe(\"track.rack_attack\") do |name, start, finish, instrumenter_id, payload|\n  req = payload[:request]\n  if req.env['rack.attack.matched'] == \"special_agent\"\n    Rails.logger.info \"special_agent: #{req.path}\"\n    STATSD.increment(\"special_agent\")\n  end\nend\n```\n\n### Cache store configuration\n\nThrottle, track, allow2ban and fail2ban state is stored in a configurable cache (which defaults to `Rails.cache` if present), presumably backed by memcached or redis ([at least gem v3.0.0](https://rubygems.org/gems/redis)).\n\n```ruby\n# This is the default\nRack::Attack.cache.store = Rails.cache \n# It is recommended to use a separate database for throttling/allow2ban/fail2ban.\nRack::Attack.cache.store = ActiveSupport::Cache::RedisCacheStore.new(url: \"...\") \n```\n\nMost applications should use a new, separate database used only for `rack-attack`. During an actual attack or periods of heavy load, this database will come under heavy load. Keeping it on a separate database instance will give you additional resilience and make sure that other functions (like caching for your application) don't go down.\n\nNote that `Rack::Attack.cache` is only used for throttling, allow2ban and fail2ban filtering; not blocklisting and safelisting. Your cache store must implement `increment` and `write` like [ActiveSupport::Cache::Store](http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html). This means that other cache stores which inherit from ActiveSupport::Cache::Store are also compatible. In-memory stores which are not backed by an external database, such as `ActiveSupport::Cache::MemoryStore.new`, will be mostly ineffective because each Ruby process in your deployment will have it's own state, effectively multiplying the number of requests each client can make by the number of Ruby processes you have deployed.\n\n## Customizing responses\n\nCustomize the response of blocklisted and throttled requests using an object that adheres to the [Rack app interface](http://www.rubydoc.info/github/rack/rack/file/SPEC.rdoc).\n\n```ruby\nRack::Attack.blocklisted_responder = lambda do |request|\n  # Using 503 because it may make attacker think that they have successfully\n  # DOSed the site. Rack::Attack returns 403 for blocklists by default\n  [ 503, {}, ['Blocked']]\nend\n\nRack::Attack.throttled_responder = lambda do |request|\n  # NB: you have access to the name and other data about the matched throttle\n  #  request.env['rack.attack.matched'],\n  #  request.env['rack.attack.match_type'],\n  #  request.env['rack.attack.match_data'],\n  #  request.env['rack.attack.match_discriminator']\n\n  # Using 503 because it may make attacker think that they have successfully\n  # DOSed the site. Rack::Attack returns 429 for throttling by default\n  [ 503, {}, [\"Server Error\\n\"]]\nend\n```\n\n### RateLimit headers for well-behaved clients\n\nWhile Rack::Attack's primary focus is minimizing harm from abusive clients, it\ncan also be used to return rate limit data that's helpful for well-behaved clients.\n\nIf you want to return to user how many seconds to wait until they can start sending requests again, this can be done through enabling `Retry-After` header:\n```ruby\nRack::Attack.throttled_response_retry_after_header = true\n```\n\nHere's an example response that includes conventional `RateLimit-*` headers:\n\n```ruby\nRack::Attack.throttled_responder = lambda do |request|\n  match_data = request.env['rack.attack.match_data']\n  now = match_data[:epoch_time]\n\n  headers = {\n    'ratelimit-limit' =\u003e match_data[:limit].to_s,\n    'ratelimit-remaining' =\u003e '0',\n    'ratelimit-reset' =\u003e (now + (match_data[:period] - now % match_data[:period])).to_s\n  }\n\n  [ 429, headers, [\"Throttled\\n\"]]\nend\n```\n\n\nFor responses that did not exceed a throttle limit, Rack::Attack annotates the env with match data:\n\n```ruby\nrequest.env['rack.attack.throttle_data'][name] # =\u003e { discriminator: d, count: n, period: p, limit: l, epoch_time: t }\n```\n\n## Logging \u0026 Instrumentation\n\nRack::Attack uses the [ActiveSupport::Notifications](http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html) API if available.\n\nYou can subscribe to `rack_attack` events and log it, graph it, etc.\n\nTo get notified about specific type of events, subscribe to the event name followed by the `rack_attack` namespace.\nE.g. for throttles use:\n\n```ruby\nActiveSupport::Notifications.subscribe(\"throttle.rack_attack\") do |name, start, finish, instrumenter_id, payload|\n  # request object available in payload[:request]\n\n  # Your code here\nend\n```\n\nIf you want to subscribe to every `rack_attack` event, use:\n\n```ruby\nActiveSupport::Notifications.subscribe(/rack_attack/) do |name, start, finish, instrumenter_id, payload|\n  # request object available in payload[:request]\n\n  # Your code here\nend\n```\n\n## Testing\n\nA note on developing and testing apps using Rack::Attack - if you are using throttling in particular, you will\nneed to enable the cache in your development environment. See [Caching with Rails](http://guides.rubyonrails.org/caching_with_rails.html)\nfor more on how to do this.\n\n### Disabling\n\n`Rack::Attack.enabled = false` can be used to either completely disable Rack::Attack in your tests, or to disable/enable for specific test cases only.\n\n### Test case isolation\n\n`Rack::Attack.reset!` can be used in your test suite to clear any Rack::Attack state between different test cases. If you're testing blocklist and safelist configurations, consider using `Rack::Attack.clear_configuration` to unset the values for those lists between test cases.\n\n## How it works\n\nThe Rack::Attack middleware compares each request against *safelists*, *blocklists*, *throttles*, and *tracks* that you define. There are none by default.\n\n * If the request matches any **safelist**, it is allowed.\n * Otherwise, if the request matches any **blocklist**, it is blocked.\n * Otherwise, if the request matches any **throttle**, a counter is incremented in the Rack::Attack.cache. If any throttle's limit is exceeded, the request is blocked.\n * Otherwise, all **tracks** are checked, and the request is allowed.\n\nThe algorithm is actually more concise in code: See [Rack::Attack.call](lib/rack/attack.rb):\n\n```ruby\ndef call(env)\n  req = Rack::Attack::Request.new(env)\n\n  if safelisted?(req)\n    @app.call(env)\n  elsif blocklisted?(req)\n    self.class.blocklisted_responder.call(req)\n  elsif throttled?(req)\n    self.class.throttled_responder.call(req)\n  else\n    tracked?(req)\n    @app.call(env)\n  end\nend\n```\n\nNote: `Rack::Attack::Request` is just a subclass of `Rack::Request` so that you\ncan cleanly monkey patch helper methods onto the\n[request object](lib/rack/attack/request.rb).\n\n### About Tracks\n\n`Rack::Attack.track` doesn't affect request processing. Tracks are an easy way to log and measure requests matching arbitrary attributes.\n\n## Performance\n\nThe overhead of running Rack::Attack is typically negligible (a few milliseconds per request),\nbut it depends on how many checks you've configured, and how long they take.\nThrottles usually require a network roundtrip to your cache server(s),\nso try to keep the number of throttle checks per request low.\n\nIf a request is blocklisted or throttled, the response is a very simple Rack response.\nA single typical ruby web server thread can block several hundred requests per second.\n\nRack::Attack complements tools like `iptables` and nginx's [limit_conn_zone module](https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html#limit_conn_zone).\n\n## Motivation\n\nAbusive clients range from malicious login crackers to naively-written scrapers.\nThey hinder the security, performance, \u0026 availability of web applications.\n\nIt is impractical if not impossible to block abusive clients completely.\n\nRack::Attack aims to let developers quickly mitigate abusive requests and rely\nless on short-term, one-off hacks to block a particular attack.\n\n## Contributing\n\nCheck out the [Contributing guide](CONTRIBUTING.md).\n\n## Code of Conduct\n\nThis project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Code of Conduct](CODE_OF_CONDUCT.md).\n\n## Development setup\n\nCheck out the [Development guide](docs/development.md).\n\n## License\n\nCopyright Kickstarter, PBC.\n\nReleased under an [MIT License](https://opensource.org/licenses/MIT).\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["activerecord","mvc","activejob","rubygems","background-jobs","sidekiq","rubocop","code-formatter","crash-reporting","static-code-analysis"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/183","html_url":"https://ruby.ecosyste.ms/projects/183"}