libopenapi
Parse, validate, and work with OpenAPI, Swagger, Overlays, and Arazzo specifications
About libopenapi
libopenapi - enterprise grade OpenAPI tools for golang.
libopenapi has full support for OpenAPI 3, 3.1 and 3.2. It can handle the largest and most complex specifications you can think of.
Overlays and Arazzo are also fully supported.
Sponsors & users
If your company is using libopenapi, please considering supporting this project,
like our very kind sponsors:
Come chat with us
Need help? Have a question? Want to share your work? Join our discord and come say hi!
Check out the libopenapi-validator
Need to validate requests, responses, parameters or schemas? Use the new libopenapi-validator module.
Documentation
See all the documentation at https://pb33f.io/libopenapi/
- Installing libopenapi
- Using OpenAPI
- Using Swagger
- The Data Model
- Validation
- Modifying / Mutating the OpenAPI Model
- Mocking / Creating Examples
- Using Vendor Extensions
- The Index
- The Resolver
- The Rolodex
- Circular References
- Bundling Specs
- What Changed / Diff Engine
- Overlays
- Arazzo
- Generating Code
- Parsing Code
- FAQ
- About libopenapi
- Migrating: breaking API changes by version
Generating TypeScript models
generator/typescript renders the component schemas of an OpenAPI document as
a type-only TypeScript module, built from the same model as the Go generator.
file, err := typescript.RenderSchemas(docModel.Model.Components.Schemas)
os.WriteFile("api.gen.ts", file.Source, 0o644)
See generator/typescript/README.md for how each schema shape maps to TypeScript.
Quick-start tutorial
š Get rolling fast using libopenapi with the
Parsing OpenAPI files using go guide š
Or, follow these steps and see something in a few seconds.
Step 1: Grab the petstore
curl https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/_archive_/schemas/v3.0/pass/petstore.yaml > petstorev3.json
Step 2: Grab libopenapi
go get github.com/pb33f/libopenapi
Step 3: Parse the petstore using libopenapi
Copy and paste this code into a main.go file.
package main
import (
"fmt"
"os"
"github.com/pb33f/libopenapi"
)
func main() {
petstore, _ := os.ReadFile("petstorev3.json")
document, err := libopenapi.NewDocument(petstore)
if err != nil {
panic(fmt.Sprintf("cannot create new document: %e", err))
}
docModel, err := document.BuildV3Model()
if err != nil {
panic(fmt.Sprintf("cannot create v3 model from document: %e", err))
}
// The following fails after the first iteration
for schemaName, schema := range docModel.Model.Components.Schemas.FromOldest() {
if schema.Schema().Properties != nil {
fmt.Printf("Schema '%s' has %d properties\n", schemaName, schema.Schema().Properties.Len())
}
}
}
Run it, which should print out:
Schema 'Pet' has 3 properties
Schema 'Error' has 2 properties
Read the full docs at https://pb33f.io/libopenapi/
Logo gopher is modified, originally from egonelbre
Frequently Asked Questions
What is libopenapi?
libopenapi is a Third-party APIs library for the Go programming language. Parse, validate, and work with OpenAPI, Swagger, Overlays, and Arazzo specifications
How do I install libopenapi?
Install libopenapi with the Go module system using `go get pb33f/libopenapi`. Check the repository for the current installation instructions.
What category does libopenapi belong to?
libopenapi is listed under Third-party APIs, specifically Third-party APIs.