Full features list
- [x] An object model that serializes to swagger yaml or json (see: spec package)
- [x] A tool to work with swagger
- [x] Serve swagger UI for any swagger spec file
- [x] Flexible code generation, with customizable templates (package generator)
- [x] Generate API based on swagger spec
- [x] Generate go client from a swagger spec
- [x] Generate CLI (command line tool) client from a swagger spec
- [x] Support swagger polymorphism (discriminator with allOf composition)
- [x] Validate a swagger spec document, with extra rules outlined here
- [x] Validate JSON data against jsonschema (Draft 4), with full $ref support (see: validate package)
- passes current json schema test suite
- [x] Generate spec document based on annotated code (package scan)
- generate meta data (top level swagger properties) from package docs
- generate definition entries for models
- support composed structs out of several embeds
- support allOf for composed structs
- generate path entries for routes
- generate responses from structs
- support composed structs out of several embeds
- generate parameters from structs
- support composed structs out of several embeds
- [x] Middlewares (see: runtime package)
- [x] serve spec
- [x] routing
- [x] validation
- [x] additional validation through an interface
- [x] authorization, with auth composition (AND|OR authorization schemes)
- basic auth
- api key auth
- oauth2 bearer auth
- [x] swagger docs UI (docUI and redoc flavors)
- [x] Typed JSON Schema implementation
- [x] JSON Pointer that knows about structs
- [x] JSON Reference that knows about structs
- [x] Supports most JSON schema features1
- [x] extended string and numeric formats (see: strfmt package)
- [x] JSON-schema draft 4 formats
- date-time
- hostname
- ipv4
- ipv6
- uri
- [x] swagger 2.0 format extensions
- binary
- byte (e.g. base64 encoded string)
- date (e.g. "1970-01-01")
- password
- [x] go-openapi custom format extensions
- bsonobjectid (BSON objectID)
- creditcard
- duration (e.g. "3 weeks", "1ms")
- hexcolor (e.g. "#FFFFFF")
- isbn, isbn10, isbn13
- mac (e.g "01:02:03:04:05:06")
- rgbcolor (e.g. "rgb(100,100,100)")
- ssn
- uuid, uuid3, uuid4, uuid5
- [x] JSON-schema draft 4 formats
- [x] Plays nice with golint, go vet etc.
1: currently adds extra support for additionalItems
(not part of swagger), but not anyOf
, oneOf
and not
.