{"id":51587065,"url":"https://github.com/aensley/semantic-release-openapi","last_synced_at":"2026-07-11T11:32:33.492Z","repository":{"id":60757341,"uuid":"544555809","full_name":"aensley/semantic-release-openapi","owner":"aensley","description":"A Semantic Release plugin to update versions in OpenAPI / Swagger specification files","archived":false,"fork":false,"pushed_at":"2026-06-23T15:58:52.000Z","size":501,"stargazers_count":3,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-23T17:24:51.355Z","etag":null,"topics":["oas","oas-spec","oas2","oas3","oas31","openapi","openapi-spec","openapi-specification","openapi3","semantic-release","semantic-release-plugin","swagger","swagger-api"],"latest_commit_sha":null,"homepage":"https://npmjs.com/package/semantic-release-openapi","language":"TypeScript","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/aensley.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-10-02T19:15:09.000Z","updated_at":"2026-06-08T13:29:08.000Z","dependencies_parsed_at":"2023-11-30T18:27:51.238Z","dependency_job_id":"d68ae33a-2678-486a-b687-4a2ca8307400","html_url":"https://github.com/aensley/semantic-release-openapi","commit_stats":{"total_commits":36,"total_committers":3,"mean_commits":12.0,"dds":0.4444444444444444,"last_synced_commit":"67a383d9569b10656a33cb205746d7ca458dfcc2"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/aensley/semantic-release-openapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aensley%2Fsemantic-release-openapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aensley%2Fsemantic-release-openapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aensley%2Fsemantic-release-openapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aensley%2Fsemantic-release-openapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aensley","download_url":"https://codeload.github.com/aensley/semantic-release-openapi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aensley%2Fsemantic-release-openapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35361644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"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"}},"keywords":["oas","oas-spec","oas2","oas3","oas31","openapi","openapi-spec","openapi-specification","openapi3","semantic-release","semantic-release-plugin","swagger","swagger-api"],"created_at":"2026-07-11T11:32:32.089Z","updated_at":"2026-07-11T11:32:33.484Z","avatar_url":"https://github.com/aensley.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# semantic-release-openapi\n\n[![npm](https://img.shields.io/npm/v/semantic-release-openapi.svg?logo=npm)][npm]\n[![npm types](https://badgen.net/npm/types/semantic-release-openapi?icon=typescript)][npm]\n[![license](https://img.shields.io/github/license/aensley/semantic-release-openapi.svg)](https://github.com/aensley/semantic-release-openapi/blob/main/LICENSE)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?logo=prettier)](https://prettier.io)\n[![npm downloads](https://img.shields.io/npm/dw/semantic-release-openapi.svg)][npm]\n[![dependencies](https://img.shields.io/librariesio/release/npm/semantic-release-openapi.svg?label=deps\u0026logo=npm)](https://libraries.io/npm/semantic-release-openapi)\u003cbr\u003e\n[![Maintainability](https://qlty.sh/gh/aensley/projects/semantic-release-openapi/maintainability.svg)][qltysh]\n[![Test Coverage](https://qlty.sh/gh/aensley/projects/semantic-release-openapi/coverage.svg)][qltysh]\n[![test](https://github.com/aensley/semantic-release-openapi/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/aensley/semantic-release-openapi/actions/workflows/test.yml)\n[![OpenSSF Scorecard](https://img.shields.io/ossf-scorecard/github.com/aensley/semantic-release-openapi.svg?label=ossf)](https://scorecard.dev/viewer/?uri=github.com/aensley/semantic-release-openapi)\n[![Socket](https://socket.dev/api/badge/npm/package/semantic-release-openapi)](https://socket.dev/npm/package/semantic-release-openapi)\n[![snyk](https://snyk.io/test/npm/semantic-release-openapi/badge.svg)](https://security.snyk.io/package/npm/semantic-release-openapi)\n\nA Semantic Release plugin to update versions in OpenAPI / Swagger specification files.\n\n| Step               | Description                                                                                                                                                                          |\n| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `verifyConditions` | Verify existence of the `apiSpecFiles` config option, that it resolves to at least one valid `.json`, `.yml`, or `.yaml` file, and that it does not resolve to any other file types. |\n| `prepare`          | Update the `info.version` field in all matching `apiSpecFiles`.                                                                                                                      |\n\n## Installation\n\nThis module is distributed via npm and should be installed as one of your project's `devDependencies`:\n\n```bash\nnpm install --save-dev semantic-release-openapi\n```\n\n## Usage\n\nConfigure the plugin wherever you have your [semantic-release configuration](https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#configuration).\n\n## Configuration\n\nThis plugin has one configuration option which **must be supplied**.\n\n| Option             | Description                                                                                                                                                                                                                                                     |\n| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`apiSpecFiles`** | An array of OpenAPI / Swagger specification file paths.\u003cbr\u003e[Glob patterns](https://www.gnu.org/software/bash/manual/bash.html#Pattern-Matching) (e.g. `'*.yaml'`) are supported.\u003cbr\u003e\u003cbr\u003e_All matching files must have a `.json`, `.yaml`, or `.yml` extension._ |\n\n\u003e [!TIP]\n\u003e\n\u003e Semantic Release will not commit changes to your OpenAPI spec files unless you add the same files in `assets` for the **@semantic-release/git** plugin. See the examples below.\n\n## Examples\n\nThe following examples assume you've put your `semantic-release` configuration in your `package.json` file.\n\n### Basic Example\n\n```json\n{\n  \"release\": {\n    \"plugins\": [\n      [\n        \"semantic-release-openapi\",\n        {\n          \"apiSpecFiles\": [\"openapi.yaml\", \"src/swagger-*.json\"]\n        }\n      ],\n      [\n        \"@semantic-release/git\",\n        {\n          \"assets\": [\"package.json\", \"openapi.yaml\", \"src/swagger-*.json\"]\n        }\n      ]\n    ]\n  }\n}\n```\n\n### Extended Example\n\n```json\n{\n  \"release\": {\n    \"branches\": [\"main\"],\n    \"plugins\": [\n      \"@semantic-release/commit-analyzer\",\n      \"@semantic-release/release-notes-generator\",\n      [\n        \"@semantic-release/github\",\n        {\n          \"assets\": [\n            {\n              \"path\": \"src/openapi.yml\",\n              \"label\": \"Open API Spec\"\n            }\n          ]\n        }\n      ],\n      \"@semantic-release/npm\",\n      [\n        \"semantic-release-openapi\",\n        {\n          \"apiSpecFiles\": [\"src/openapi.yml\"]\n        }\n      ],\n      [\n        \"@semantic-release/git\",\n        {\n          \"assets\": [\"package.json\", \"src/openapi.yml\"]\n        }\n      ]\n    ]\n  }\n}\n```\n\n[npm]: https://www.npmjs.com/package/semantic-release-openapi\n[qltysh]: https://qlty.sh/gh/aensley/projects/semantic-release-openapi\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faensley%2Fsemantic-release-openapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faensley%2Fsemantic-release-openapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faensley%2Fsemantic-release-openapi/lists"}