github.com/thetreep/go-swagger@v0.0.0-20240223100711-35af64f14f01/docs/features.md (about) 1 ## Full features list 2 3 - [x] An object model that serializes to swagger yaml or json (see: [spec package](https://github.com/go-openapi/spec)) 4 - [x] A tool to work with swagger 5 - [x] Serve swagger UI for any swagger spec file 6 - [x] Flexible code generation, with customizable templates (package generator) 7 - [x] Generate API based on swagger spec 8 - [x] Generate go client from a swagger spec 9 - [x] Generate CLI (command line tool) client from a swagger spec 10 - [x] Support swagger polymorphism (discriminator with allOf composition) 11 - [x] Validate a swagger spec document, with extra rules outlined [here](usage/validate.md) 12 - [x] Validate JSON data against jsonschema (Draft 4), with full $ref support (see: [validate package](https://github.com/go-openapi/validate)) 13 - passes current json schema test suite 14 - [x] Generate spec document based on annotated code (package scan) 15 - generate meta data (top level swagger properties) from package docs 16 - generate definition entries for models 17 - support composed structs out of several embeds 18 - support allOf for composed structs 19 - generate path entries for routes 20 - generate responses from structs 21 - support composed structs out of several embeds 22 - generate parameters from structs 23 - support composed structs out of several embeds 24 - [x] Middlewares (see: [runtime package](https://github.com/go-openapi/runtime)) 25 - [x] serve spec 26 - [x] routing 27 - [x] validation 28 - [x] additional validation through an interface 29 - [x] authorization, with auth composition (AND|OR authorization schemes) 30 - basic auth 31 - api key auth 32 - oauth2 bearer auth 33 - [x] swagger docs UI (docUI and redoc flavors) 34 - [x] Typed JSON Schema implementation 35 - [x] JSON Pointer that knows about structs 36 - [x] JSON Reference that knows about structs 37 - [x] Supports most JSON schema features<sup>[1](#footnote1)</sup> 38 - [x] extended string and numeric formats (see: [strfmt package](https://github.com/go-openapi/strfmt)) 39 - [x] JSON-schema draft 4 formats 40 - date-time 41 - email 42 - hostname 43 - ipv4 44 - ipv6 45 - uri 46 - [x] swagger 2.0 format extensions 47 - binary 48 - byte (e.g. base64 encoded string) 49 - date (e.g. "1970-01-01") 50 - password 51 - [x] go-openapi custom format extensions 52 - bsonobjectid (BSON objectID) 53 - creditcard 54 - duration (e.g. "3 weeks", "1ms") 55 - hexcolor (e.g. "#FFFFFF") 56 - isbn, isbn10, isbn13 57 - mac (e.g "01:02:03:04:05:06") 58 - rgbcolor (e.g. "rgb(100,100,100)") 59 - ssn 60 - uuid, uuid3, uuid4, uuid5 61 - [x] Plays nice with golint, go vet etc. 62 63 <a name="footnote1">1</a>: currently adds extra support for `additionalItems`(not part of swagger), but not `anyOf`, `oneOf` and `not`.