# Swagger 2.0

<!-- Badges: status  -->
[![Tests][test-badge]][test-url] [![Coverage][cov-badge]][cov-url] [![CI vuln scan][vuln-scan-badge]][vuln-scan-url] [![CodeQL][codeql-badge]][codeql-url]
<!-- Badges: release & docker images  -->
[![Release][release-badge]][release-url] [![Container Registry on Quay.io][quay-badge]][quay-url] [![Container Registry on Github][ghcr-badge]][ghcr-url]
<!-- Badges: code quality  -->
[![Go Report Card][gocard-badge]][gocard-url] [![CodeFactor Grade][codefactor-badge]][codefactor-url]
<!-- Badges: license & compliance -->
[![License][license-badge]][license-url] [![Open SSF Scorecard][ossf-badge]][ossf-url] [![OpenSSF Best Practices][ossf-cci-badge]][ossf-cci-url] [![OSS licences status][fossa-badge]][fossa-url]
<!-- Badges: documentation & support -->
<!-- Badges: others & stats -->
[![Documentation][doc-badge]][doc-url] [![GoDoc][godoc-badge]][godoc-url] [![Slack Channel][slack-badge]][slack-url] [![go version][goversion-badge]][goversion-url] ![Top language][top-badge] ![Commits since latest release][commits-badge]

---

This project contains a golang implementation of Swagger 2.0 (aka [OpenAPI 2.0](https://github.com/OAI/OpenAPI-Specification/blob/old-v3.2.0-dev/versions/2.0.md)).
It provide tools to work with swagger specifications.

[Swagger](https://swagger.io/) is a simple yet powerful representation of your RESTful API.<br>

## Documentation

<https://goswagger.io>

##  Features

`go-swagger` brings to the go community a complete suite of fully-featured, high-performance, API components to  work with a Swagger API: server, client and data model.

* Generates a server from a swagger specification
* Generates a client from a swagger specification
* Generates a CLI (command line tool) from a swagger specification (alpha stage)
* Supports most features offered by jsonschema and swagger, including polymorphism
* Generates a swagger specification from annotated go code
* Additional tools to work with a swagger spec
* Great customization features, with vendor extensions and customizable templates

Our focus with code generation is to produce idiomatic, fast go code, which plays nice with golint, go vet etc.

[More details](https://goswagger.io/go-swagger/features).

##  Project status

This project supports OpenAPI 2.0. **At this moment it does not support OpenAPI 3.x**.

`go-swagger` is now feature complete and has stabilized its API.

Most features and building blocks are now in a stable state, with a rich set of CI tests.

The go-openapi community actively continues bringing fixes and enhancements to this code base.

There is still much room for improvement: contributors and PR's are welcome. You may also get in touch with maintainers on [our slack channel](https://slackin.goswagger.io).

## Installing

```sh
go install github.com/go-swagger/go-swagger/cmd/swagger@latest
```

`go-swagger` is also available as binary or docker releases as well as from source: [more details](https://goswagger.io/go-swagger/install).

## Try it

Try `go-swagger` in a free online workspace using Gitpod:

[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io#https://github.com/go-swagger/go-swagger)

## Licensing

The toolkit itself is licensed under an Apache Software License 2.0:
[SPDX-License-Identifier: Apache-2.0](./LICENSE).

Just like swagger, this does not cover code generated by the toolkit. That code is entirely yours to license however you see fit.

### Licence scan on dependencies 

[![FOSSA Status][fossa-badge-large]][fossa-url-large]

<!-- Badges: status  -->
[test-badge]: https://github.com/go-swagger/go-swagger/actions/workflows/test.yaml/badge.svg
[test-url]: https://github.com/go-swagger/go-swagger/actions/workflows/test.yaml
[cov-badge]: https://codecov.io/gh/go-swagger/go-swagger/branch/master/graph/badge.svg
[cov-url]: https://codecov.io/gh/go-swagger/go-swagger
[vuln-scan-badge]: https://github.com/go-swagger/go-swagger/actions/workflows/scanner.yaml/badge.svg
[vuln-scan-url]: https://github.com/go-swagger/go-swagger/actions/workflows/scanner.yaml
[codeql-badge]: https://github.com/go-swagger/go-swagger/actions/workflows/codeql.yaml/badge.svg
[codeql-url]: https://github.com/go-swagger/go-swagger/actions/workflows/codeql.yaml
<!-- Badges: release & docker images  -->
[release-badge]: https://badge.fury.io/gh/go-swagger%2Fgo-swagger.svg
[release-url]: https://badge.fury.io/gh/go-swagger%2Fgo-swagger
[quay-badge]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fquay.io%2Fapi%2Fv1%2Frepository%2Fgoswagger%2Fswagger%2Ftag%2F%3Flimit%3D1%26onlyActiveTags%3Dtrue%26filter_tag_name%3Dlike%3Av&label=Container%20Registry%20on%20quay.io&query=%24.tags[:1].name&logo=redhatopenshift&logoColor=#EE0000?color=green
[quay-url]: https://quay.io/repository/goswagger/swagger?tab=tags
[ghcr-badge]: https://ghcr-badge-ipv2.onrender.com/go-swagger/go-swagger/latest_tag?ignore=sha-*,edge,master&label=Container%20Registry%20on%20Github
[ghcr-url]: https://github.com/orgs/go-swagger/packages/container/go-swagger/versions?filters[version_type]=tagged
<!-- Badges: code quality  -->
[gocard-badge]: https://goreportcard.com/badge/github.com/go-swagger/go-swagger
[gocard-url]: https://goreportcard.com/report/github.com/go-swagger/go-swagger
[codefactor-badge]: https://img.shields.io/codefactor/grade/github/go-swagger/go-swagger
[codefactor-url]: https://www.codefactor.io/repository/github/go-swagger/go-swagger
<!-- Badges: documentation & support -->
[doc-badge]: https://img.shields.io/badge/doc-site-blue?link=https%3A%2F%2Fgoswagger.io%2Fgo-swagger%2F
[doc-url]: https://goswagger.io/go-swagger
[godoc-badge]: https://godoc.org/github.com/go-swagger/go-swagger?status.svg
[godoc-url]: http://godoc.org/github.com/go-swagger/go-swagger
[slack-badge]: https://slackin.goswagger.io/badge.svg
[slack-url]: https://slackin.goswagger.io
<!-- Badges: license & compliance -->
[license-badge]: http://img.shields.io/badge/license-Apache%20v2-orange.svg
[license-url]: https://github.com/go-swagger/go-swagger/?tab=Apache-2.0-1-ov-file#readme
[ossf-badge]: https://api.securityscorecards.dev/projects/github.com/go-swagger/go-swagger/badge
[ossf-url]: https://securityscorecards.dev/viewer/?uri=github.com/go-swagger/go-swagger
[ossf-cci-badge]: https://www.bestpractices.dev/projects/11359/badge
[ossf-cci-url]: https://www.bestpractices.dev/projects/11359
[fossa-badge]: https://app.fossa.io/api/projects/git%2Bgithub.com%2Fgo-swagger%2Fgo-swagger.svg?type=shield
[fossa-url]: https://app.fossa.io/projects/git%2Bgithub.com%2Fgo-swagger%2Fgo-swagger?ref=badge_shield
[fossa-badge-large]: https://app.fossa.io/api/projects/git%2Bgithub.com%2Fgo-swagger%2Fgo-swagger.svg?type=large
[fossa-url-large]: https://app.fossa.io/projects/git%2Bgithub.com%2Fgo-swagger%2Fgo-swagger?ref=badge_large
[oai-url]: https://raw.githubusercontent.com/swagger-api/swagger-spec/master/LICENSE
<!-- Badges: others & stats -->
[goversion-badge]: https://img.shields.io/github/go-mod/go-version/go-swagger/go-swagger
[goversion-url]: https://github.com/go-swagger/go-swagger/blob/master/go.mod
[top-badge]: https://img.shields.io/github/languages/top/go-swagger/go-swagger
[commits-badge]: https://img.shields.io/github/commits-since/go-swagger/go-swagger/latest
