Socket
Book a DemoInstallSign in
Socket

mygithub.libinneed.workers.dev/pb33f/libopenapi

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mygithub.libinneed.workers.dev/pb33f/libopenapi

v0.25.9
Go
Version published
Created
Source

libopenapi

libopenapi - enterprise grade OpenAPI tools for golang.

Pipeline GoReportCard codecov discord Docs

libopenapi has full support for Swagger (OpenAPI 2), OpenAPI 3, 3.1 and 3.2. It can handle the largest and most complex specifications you can think of.

Sponsors & users

If your company is using libopenapi, please considering supporting this project, like our very kind sponsors:

speakeasy'

Speakeasy

bump.sh'

bump.sh

scalar'

scalar

apideck'

apideck

libopenapi is kinda new, so our list of notable projects that depend on libopenapi is small (let me know if you'd like to add your project)

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/

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, errors := document.BuildV3Model()
	if len(errors) > 0 {
		for i := range errors {
			fmt.Printf("error: %e\n", errors[i])
		}
		panic(fmt.Sprintf("cannot create v3 model from document: %d errors reported", len(errors)))
	}

	// 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

FAQs

Package last updated on 28 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.