openapi3

package
v0.128.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 1, 2024 License: MIT Imports: 25 Imported by: 2,371

Documentation

Overview

Package openapi3 parses and writes OpenAPI 3 specification documents.

See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md

Code generated by go generate; DO NOT EDIT.

Example
//go:build go1.16
// +build go1.16

package main

import (
	"embed"
	"fmt"
	"net/url"

	"github.com/getkin/kin-openapi/openapi3"
)

//go:embed testdata/recursiveRef/*
var fs embed.FS

func main() {
	loader := openapi3.NewLoader()
	loader.IsExternalRefsAllowed = true
	loader.ReadFromURIFunc = func(loader *openapi3.Loader, uri *url.URL) ([]byte, error) {
		return fs.ReadFile(uri.Path)
	}

	doc, err := loader.LoadFromFile("testdata/recursiveRef/openapi.yml")
	if err != nil {
		panic(err)
	}

	if err = doc.Validate(loader.Context); err != nil {
		panic(err)
	}

	fmt.Println(doc.
		Paths.Value("/foo").
		Get.Responses.Value("200").Value.
		Content["application/json"].
		Schema.Value.
		Properties["foo2"].Value.
		Properties["foo"].Value.
		Properties["bar"].Value.
		Type,
	)
}
Output:

&[string]

Index

Examples

Constants

View Source
const (
	ParameterInPath   = "path"
	ParameterInQuery  = "query"
	ParameterInHeader = "header"
	ParameterInCookie = "cookie"
)
View Source
const (
	TypeArray   = "array"
	TypeBoolean = "boolean"
	TypeInteger = "integer"
	TypeNumber  = "number"
	TypeObject  = "object"
	TypeString  = "string"
	TypeNull    = "null"
)
View Source
const (
	// FormatOfStringForUUIDOfRFC4122 is an optional predefined format for UUID v1-v5 as specified by RFC4122
	FormatOfStringForUUIDOfRFC4122 = `` /* 131-byte string literal not displayed */

	// FormatOfStringForEmail pattern catches only some suspiciously wrong-looking email addresses.
	// Use DefineStringFormat(...) if you need something stricter.
	FormatOfStringForEmail = `^[^@]+@[^@<>",\s]+$`

	// FormatOfStringByte is a regexp for base64-encoded characters, for example, "U3dhZ2dlciByb2Nrcw=="
	FormatOfStringByte = `(^$|^[a-zA-Z0-9+/\-_]*=*$)`

	// FormatOfStringDate is a RFC3339 date format regexp, for example "2017-07-21".
	FormatOfStringDate = `^[0-9]{4}-(0[0-9]|10|11|12)-([0-2][0-9]|30|31)$`

	// FormatOfStringDateTime is a RFC3339 date-time format regexp, for example "2017-07-21T17:32:28Z".
	FormatOfStringDateTime = `^[0-9]{4}-(0[0-9]|10|11|12)-([0-2][0-9]|30|31)T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?(Z|(\+|-)[0-9]{2}:[0-9]{2})?$`
)
View Source
const (
	SerializationSimple         = "simple"
	SerializationLabel          = "label"
	SerializationMatrix         = "matrix"
	SerializationForm           = "form"
	SerializationSpaceDelimited = "spaceDelimited"
	SerializationPipeDelimited  = "pipeDelimited"
	SerializationDeepObject     = "deepObject"
)

Variables

View Source
var (
	IdentifierRegExp            = regexp.MustCompile(`^[` + identifierChars + `]+$`)
	InvalidIdentifierCharRegExp = regexp.MustCompile(`[^` + identifierChars + `]`)
)

IdentifierRegExp verifies whether Component object key matches contains just 'identifierChars', according to OpenAPI v3.x. InvalidIdentifierCharRegExp matches all characters not contained in 'identifierChars'. However, to be able supporting legacy OpenAPI v2.x, there is a need to customize above pattern in order not to fail converted v2-v3 validation

View Source
var (
	// SchemaErrorDetailsDisabled disables printing of details about schema errors.
	SchemaErrorDetailsDisabled = false

	// ErrOneOfConflict is the SchemaError Origin when data matches more than one oneOf schema
	ErrOneOfConflict = errors.New("input matches more than one oneOf schemas")

	// ErrSchemaInputNaN may be returned when validating a number
	ErrSchemaInputNaN = errors.New("floating point NaN is not allowed")
	// ErrSchemaInputInf may be returned when validating a number
	ErrSchemaInputInf = errors.New("floating point Inf is not allowed")
)
View Source
var (
	// SchemaStringFormats is a map of custom string format validators.
	SchemaStringFormats = make(map[string]StringFormatValidator)
	// SchemaNumberFormats is a map of custom number format validators.
	SchemaNumberFormats = make(map[string]NumberFormatValidator)
	// SchemaIntegerFormats is a map of custom integer format validators.
	SchemaIntegerFormats = make(map[string]IntegerFormatValidator)
)

DefaultReadFromURI returns a caching ReadFromURIFunc which can read remote HTTP URIs and local file URIs.

View Source
var ErrURINotSupported = errors.New("unsupported URI")

ErrURINotSupported indicates the ReadFromURIFunc does not know how to handle a given URI.

Functions

func BoolPtr

func BoolPtr(value bool) *bool

BoolPtr is a helper for defining OpenAPI schemas.

func DefaultRefNameResolver added in v0.82.0

func DefaultRefNameResolver(doc *T, ref ComponentRef) string

DefaultRefResolver is a default implementation of refNameResolver for the InternalizeRefs function.

The external reference is internalized to (hopefully) a unique name. If the external reference matches (by path) to another reference in the root document then the name of that component is used.

The transformation involves:

  • Cutting the "#/components/<type>" part.
  • Cutting the file extensions (.yaml/.json) from documents.
  • Trimming the common directory with the root spec.
  • Replace invalid characters with with underscores.

This is an injective mapping over a "reasonable" amount of the possible openapi spec domain space but is not perfect. There might be edge cases.

func DefineIPv4Format added in v0.27.0

func DefineIPv4Format()

DefineIPv4Format opts in ipv4 format validation on top of OAS 3 spec

func DefineIPv6Format added in v0.27.0

func DefineIPv6Format()

DefineIPv6Format opts in ipv6 format validation on top of OAS 3 spec

func DefineIntegerFormatValidator added in v0.126.0

func DefineIntegerFormatValidator(name string, validator IntegerFormatValidator)

DefineIntegerFormatValidator defines a custom format validator for a given integer format.

func DefineNumberFormatValidator added in v0.126.0

func DefineNumberFormatValidator(name string, validator NumberFormatValidator)

DefineNumberFormatValidator defines a custom format validator for a given number format.

func DefineStringFormat

func DefineStringFormat(name string, pattern string)

DefineStringFormat defines a regexp pattern for a given string format Deprecated: Use openapi3.DefineStringFormatValidator(name, NewRegexpFormatValidator(pattern)) instead.

func DefineStringFormatCallback added in v0.27.0

func DefineStringFormatCallback(name string, callback func(string) error)

DefineStringFormatCallback defines a callback function for a given string format Deprecated: Use openapi3.DefineStringFormatValidator(name, NewCallbackValidator(fn)) instead.

func DefineStringFormatValidator added in v0.126.0

func DefineStringFormatValidator(name string, validator StringFormatValidator)

DefineStringFormatValidator defines a custom format validator for a given string format.

func Float64Ptr

func Float64Ptr(value float64) *float64

Float64Ptr is a helper for defining OpenAPI schemas.

func Int64Ptr

func Int64Ptr(value int64) *int64

Int64Ptr is a helper for defining OpenAPI schemas.

func ReadFromFile added in v0.90.0

func ReadFromFile(loader *Loader, location *url.URL) ([]byte, error)

ReadFromFile is a ReadFromURIFunc which reads local file URIs.

func ReferencesComponentInRootDocument added in v0.126.0

func ReferencesComponentInRootDocument(doc *T, ref ComponentRef) (string, bool)

ReferencesComponentInRootDocument returns if the given component reference references the same document or element as another component reference in the root document's '#/components/<type>'. If it does, it returns the name of it in the form '#/components/<type>/NameXXX'

Of course given a component from the root document will always match itself.

https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#reference-object https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#relative-references-in-urls

Example. Take the spec with directory structure:

openapi.yaml
schemas/
├─ record.yaml
├─ records.yaml

In openapi.yaml we have:

components:
  schemas:
    Record:
      $ref: schemas/record.yaml

Case 1: records.yml references a component in the root document

$ref: ../openapi.yaml#/components/schemas/Record

This would return...

#/components/schemas/Record

Case 2: records.yml indirectly refers to the same schema as a schema the root document's '#/components/schemas'.

$ref: ./record.yaml

This would also return...

#/components/schemas/Record

func RegisterArrayUniqueItemsChecker added in v0.3.0

func RegisterArrayUniqueItemsChecker(fn SliceUniqueItemsChecker)

RegisterArrayUniqueItemsChecker is used to register a customized function used to check if JSON array have unique items.

func Uint64Ptr

func Uint64Ptr(value uint64) *uint64

Uint64Ptr is a helper for defining OpenAPI schemas.

func ValidateIdentifier

func ValidateIdentifier(value string) error

ValidateIdentifier returns an error if the given component name does not match IdentifierRegExp.

func WithValidationOptions added in v0.101.0

func WithValidationOptions(ctx context.Context, opts ...ValidationOption) context.Context

WithValidationOptions allows adding validation options to a context object that can be used when validating any OpenAPI type.

Types

type AdditionalProperties added in v0.113.0

type AdditionalProperties struct {
	Has    *bool
	Schema *SchemaRef
}

func (AdditionalProperties) MarshalJSON added in v0.113.0

func (addProps AdditionalProperties) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of AdditionalProperties.

func (AdditionalProperties) MarshalYAML added in v0.124.0

func (addProps AdditionalProperties) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of AdditionalProperties.

func (*AdditionalProperties) UnmarshalJSON added in v0.113.0

func (addProps *AdditionalProperties) UnmarshalJSON(data []byte) error

UnmarshalJSON sets AdditionalProperties to a copy of data.

type Callback

type Callback struct {
	Extensions map[string]any `json:"-" yaml:"-"`
	// contains filtered or unexported fields
}

Callback is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object

func NewCallback added in v0.122.0

func NewCallback(opts ...NewCallbackOption) *Callback

NewCallback builds a Callback object with path items in insertion order.

func NewCallbackWithCapacity added in v0.122.0

func NewCallbackWithCapacity(cap int) *Callback

NewCallbackWithCapacity builds a callback object of the given capacity.

func (*Callback) Delete added in v0.124.0

func (callback *Callback) Delete(key string)

Delete removes the entry associated with key 'key' from 'callback'.

func (Callback) JSONLookup added in v0.122.0

func (callback Callback) JSONLookup(token string) (any, error)

JSONLookup implements https://github.com/go-openapi/jsonpointer#JSONPointable

func (*Callback) Len added in v0.122.0

func (callback *Callback) Len() int

Len returns the amount of keys in callback excluding callback.Extensions.

func (*Callback) Map added in v0.122.0

func (callback *Callback) Map() (m map[string]*PathItem)

Map returns callback as a 'map'. Note: iteration on Go maps is not ordered.

func (*Callback) MarshalJSON added in v0.122.0

func (callback *Callback) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Callback.

func (*Callback) MarshalYAML added in v0.125.0

func (callback *Callback) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Callback.

func (*Callback) Set added in v0.122.0

func (callback *Callback) Set(key string, value *PathItem)

Set adds or replaces key 'key' of 'callback' with 'value'. Note: 'callback' MUST be non-nil

func (*Callback) UnmarshalJSON added in v0.122.0

func (callback *Callback) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON sets Callback to a copy of data.

func (*Callback) Validate

func (callback *Callback) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Callback does not comply with the OpenAPI spec.

func (*Callback) Value added in v0.122.0

func (callback *Callback) Value(key string) *PathItem

Value returns the callback for key or nil

type CallbackRef

type CallbackRef struct {
	// Extensions only captures fields starting with 'x-' as no other fields
	// are allowed by the openapi spec.
	Extensions map[string]any

	Ref   string
	Value *Callback
	// contains filtered or unexported fields
}

CallbackRef represents either a Callback or a $ref to a Callback. When serializing and both fields are set, Ref is preferred over Value.

func (*CallbackRef) CollectionName added in v0.126.0

func (x *CallbackRef) CollectionName() string

CollectionName returns the JSON string used for a collection of these components.

func (*CallbackRef) JSONLookup added in v0.33.0

func (x *CallbackRef) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (CallbackRef) MarshalJSON

func (x CallbackRef) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of CallbackRef.

func (CallbackRef) MarshalYAML added in v0.108.0

func (x CallbackRef) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of CallbackRef.

func (*CallbackRef) RefPath added in v0.126.0

func (x *CallbackRef) RefPath() *url.URL

RefPath returns the path of the $ref relative to the root document.

func (*CallbackRef) RefString added in v0.126.0

func (x *CallbackRef) RefString() string

RefString returns the $ref value.

func (*CallbackRef) UnmarshalJSON

func (x *CallbackRef) UnmarshalJSON(data []byte) error

UnmarshalJSON sets CallbackRef to a copy of data.

func (*CallbackRef) Validate

func (x *CallbackRef) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if CallbackRef does not comply with the OpenAPI spec.

type Callbacks added in v0.33.0

type Callbacks map[string]*CallbackRef

func (Callbacks) JSONLookup added in v0.33.0

func (m Callbacks) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type ComponentRef added in v0.127.0

type ComponentRef interface {
	RefString() string
	RefPath() *url.URL
	CollectionName() string
}

type Components

type Components struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Schemas         Schemas         `json:"schemas,omitempty" yaml:"schemas,omitempty"`
	Parameters      ParametersMap   `json:"parameters,omitempty" yaml:"parameters,omitempty"`
	Headers         Headers         `json:"headers,omitempty" yaml:"headers,omitempty"`
	RequestBodies   RequestBodies   `json:"requestBodies,omitempty" yaml:"requestBodies,omitempty"`
	Responses       ResponseBodies  `json:"responses,omitempty" yaml:"responses,omitempty"`
	SecuritySchemes SecuritySchemes `json:"securitySchemes,omitempty" yaml:"securitySchemes,omitempty"`
	Examples        Examples        `json:"examples,omitempty" yaml:"examples,omitempty"`
	Links           Links           `json:"links,omitempty" yaml:"links,omitempty"`
	Callbacks       Callbacks       `json:"callbacks,omitempty" yaml:"callbacks,omitempty"`
}

Components is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#components-object

func NewComponents

func NewComponents() Components

func (Components) MarshalJSON

func (components Components) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Components.

func (Components) MarshalYAML added in v0.125.0

func (components Components) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Components.

func (*Components) UnmarshalJSON

func (components *Components) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Components to a copy of data.

func (*Components) Validate

func (components *Components) Validate(ctx context.Context, opts ...ValidationOption) (err error)

Validate returns an error if Components does not comply with the OpenAPI spec.

type Contact

type Contact struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Name  string `json:"name,omitempty" yaml:"name,omitempty"`
	URL   string `json:"url,omitempty" yaml:"url,omitempty"`
	Email string `json:"email,omitempty" yaml:"email,omitempty"`
}

Contact is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#contact-object

func (Contact) MarshalJSON

func (contact Contact) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Contact.

func (Contact) MarshalYAML added in v0.125.0

func (contact Contact) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Contact.

func (*Contact) UnmarshalJSON

func (contact *Contact) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Contact to a copy of data.

func (*Contact) Validate added in v0.3.0

func (contact *Contact) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Contact does not comply with the OpenAPI spec.

type Content

type Content map[string]*MediaType

Content is specified by OpenAPI/Swagger 3.0 standard.

func NewContent

func NewContent() Content

func NewContentWithFormDataSchema added in v0.17.0

func NewContentWithFormDataSchema(schema *Schema) Content

func NewContentWithFormDataSchemaRef added in v0.17.0

func NewContentWithFormDataSchemaRef(schema *SchemaRef) Content

func NewContentWithJSONSchema

func NewContentWithJSONSchema(schema *Schema) Content

func NewContentWithJSONSchemaRef

func NewContentWithJSONSchemaRef(schema *SchemaRef) Content

func NewContentWithSchema added in v0.29.0

func NewContentWithSchema(schema *Schema, consumes []string) Content

func NewContentWithSchemaRef added in v0.29.0

func NewContentWithSchemaRef(schema *SchemaRef, consumes []string) Content

func (Content) Get

func (content Content) Get(mime string) *MediaType

func (Content) Validate

func (content Content) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Content does not comply with the OpenAPI spec.

type Discriminator added in v0.2.0

type Discriminator struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	PropertyName string            `json:"propertyName" yaml:"propertyName"` // required
	Mapping      map[string]string `json:"mapping,omitempty" yaml:"mapping,omitempty"`
}

Discriminator is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object

func (Discriminator) MarshalJSON added in v0.2.0

func (discriminator Discriminator) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Discriminator.

func (Discriminator) MarshalYAML added in v0.125.0

func (discriminator Discriminator) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Discriminator.

func (*Discriminator) UnmarshalJSON added in v0.2.0

func (discriminator *Discriminator) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Discriminator to a copy of data.

func (*Discriminator) Validate added in v0.2.0

func (discriminator *Discriminator) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Discriminator does not comply with the OpenAPI spec.

type Encoding

type Encoding struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	ContentType   string  `json:"contentType,omitempty" yaml:"contentType,omitempty"`
	Headers       Headers `json:"headers,omitempty" yaml:"headers,omitempty"`
	Style         string  `json:"style,omitempty" yaml:"style,omitempty"`
	Explode       *bool   `json:"explode,omitempty" yaml:"explode,omitempty"`
	AllowReserved bool    `json:"allowReserved,omitempty" yaml:"allowReserved,omitempty"`
}

Encoding is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#encoding-object

func NewEncoding

func NewEncoding() *Encoding

func (Encoding) MarshalJSON

func (encoding Encoding) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Encoding.

func (Encoding) MarshalYAML added in v0.125.0

func (encoding Encoding) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Encoding.

func (*Encoding) SerializationMethod added in v0.2.0

func (encoding *Encoding) SerializationMethod() *SerializationMethod

SerializationMethod returns a serialization method of request body. When serialization method is not defined the method returns the default serialization method.

func (*Encoding) UnmarshalJSON

func (encoding *Encoding) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Encoding to a copy of data.

func (*Encoding) Validate

func (encoding *Encoding) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Encoding does not comply with the OpenAPI spec.

func (*Encoding) WithHeader

func (encoding *Encoding) WithHeader(name string, header *Header) *Encoding

func (*Encoding) WithHeaderRef

func (encoding *Encoding) WithHeaderRef(name string, ref *HeaderRef) *Encoding

type Example

type Example struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Summary       string `json:"summary,omitempty" yaml:"summary,omitempty"`
	Description   string `json:"description,omitempty" yaml:"description,omitempty"`
	Value         any    `json:"value,omitempty" yaml:"value,omitempty"`
	ExternalValue string `json:"externalValue,omitempty" yaml:"externalValue,omitempty"`
}

Example is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#example-object

func NewExample

func NewExample(value any) *Example

func (Example) MarshalJSON

func (example Example) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Example.

func (Example) MarshalYAML added in v0.125.0

func (example Example) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Example.

func (*Example) UnmarshalJSON

func (example *Example) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Example to a copy of data.

func (*Example) Validate added in v0.61.0

func (example *Example) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Example does not comply with the OpenAPI spec.

type ExampleRef

type ExampleRef struct {
	// Extensions only captures fields starting with 'x-' as no other fields
	// are allowed by the openapi spec.
	Extensions map[string]any

	Ref   string
	Value *Example
	// contains filtered or unexported fields
}

ExampleRef represents either a Example or a $ref to a Example. When serializing and both fields are set, Ref is preferred over Value.

func (*ExampleRef) CollectionName added in v0.126.0

func (x *ExampleRef) CollectionName() string

CollectionName returns the JSON string used for a collection of these components.

func (*ExampleRef) JSONLookup added in v0.33.0

func (x *ExampleRef) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (ExampleRef) MarshalJSON

func (x ExampleRef) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of ExampleRef.

func (ExampleRef) MarshalYAML added in v0.108.0

func (x ExampleRef) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of ExampleRef.

func (*ExampleRef) RefPath added in v0.126.0

func (x *ExampleRef) RefPath() *url.URL

RefPath returns the path of the $ref relative to the root document.

func (*ExampleRef) RefString added in v0.126.0

func (x *ExampleRef) RefString() string

RefString returns the $ref value.

func (*ExampleRef) UnmarshalJSON

func (x *ExampleRef) UnmarshalJSON(data []byte) error

UnmarshalJSON sets ExampleRef to a copy of data.

func (*ExampleRef) Validate

func (x *ExampleRef) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if ExampleRef does not comply with the OpenAPI spec.

type Examples added in v0.33.0

type Examples map[string]*ExampleRef

func (Examples) JSONLookup added in v0.33.0

func (m Examples) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type ExternalDocs

type ExternalDocs struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Description string `json:"description,omitempty" yaml:"description,omitempty"`
	URL         string `json:"url,omitempty" yaml:"url,omitempty"`
}

ExternalDocs is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#external-documentation-object

func (ExternalDocs) MarshalJSON added in v0.3.0

func (e ExternalDocs) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of ExternalDocs.

func (ExternalDocs) MarshalYAML added in v0.125.0

func (e ExternalDocs) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of ExternalDocs.

func (*ExternalDocs) UnmarshalJSON added in v0.3.0

func (e *ExternalDocs) UnmarshalJSON(data []byte) error

UnmarshalJSON sets ExternalDocs to a copy of data.

func (*ExternalDocs) Validate added in v0.91.0

func (e *ExternalDocs) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if ExternalDocs does not comply with the OpenAPI spec.

type FormatValidator added in v0.126.0

type FormatValidator[T any] interface {
	Validate(value T) error
}

FormatValidator is an interface for custom format validators.

func NewCallbackValidator added in v0.126.0

func NewCallbackValidator[T any](fn func(T) error) FormatValidator[T]

NewCallbackValidator creates a new FormatValidator that uses a callback function to validate the value.

func NewIPValidator added in v0.126.0

func NewIPValidator(isIPv4 bool) FormatValidator[string]

NewIPValidator creates a new FormatValidator that validates the value is an IP address.

func NewRangeFormatValidator added in v0.126.0

func NewRangeFormatValidator[T int64 | float64](min, max T) FormatValidator[T]

NewRangeFormatValidator creates a new FormatValidator that validates the value is within a given range.

type Header struct {
	Parameter
}

Header is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#header-object

func (Header) JSONLookup added in v0.33.0

func (header Header) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (Header) MarshalJSON added in v0.113.0

func (header Header) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Header.

func (Header) MarshalYAML added in v0.119.0

func (header Header) MarshalYAML() (any, error)

MarshalYAML returns the JSON encoding of Header.

func (*Header) SerializationMethod added in v0.62.0

func (header *Header) SerializationMethod() (*SerializationMethod, error)

SerializationMethod returns a header's serialization method.

func (*Header) UnmarshalJSON added in v0.3.0

func (header *Header) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Header to a copy of data.

func (*Header) Validate

func (header *Header) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Header does not comply with the OpenAPI spec.

type HeaderRef

type HeaderRef struct {
	// Extensions only captures fields starting with 'x-' as no other fields
	// are allowed by the openapi spec.
	Extensions map[string]any

	Ref   string
	Value *Header
	// contains filtered or unexported fields
}

HeaderRef represents either a Header or a $ref to a Header. When serializing and both fields are set, Ref is preferred over Value.

func (*HeaderRef) CollectionName added in v0.126.0

func (x *HeaderRef) CollectionName() string

CollectionName returns the JSON string used for a collection of these components.

func (*HeaderRef) JSONLookup added in v0.33.0

func (x *HeaderRef) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (HeaderRef) MarshalJSON

func (x HeaderRef) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of HeaderRef.

func (HeaderRef) MarshalYAML added in v0.108.0

func (x HeaderRef) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of HeaderRef.

func (*HeaderRef) RefPath added in v0.126.0

func (x *HeaderRef) RefPath() *url.URL

RefPath returns the path of the $ref relative to the root document.

func (*HeaderRef) RefString added in v0.126.0

func (x *HeaderRef) RefString() string

RefString returns the $ref value.

func (*HeaderRef) UnmarshalJSON

func (x *HeaderRef) UnmarshalJSON(data []byte) error

UnmarshalJSON sets HeaderRef to a copy of data.

func (*HeaderRef) Validate

func (x *HeaderRef) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if HeaderRef does not comply with the OpenAPI spec.

type Headers added in v0.33.0

type Headers map[string]*HeaderRef

func (Headers) JSONLookup added in v0.33.0

func (m Headers) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type Info

type Info struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Title          string   `json:"title" yaml:"title"` // Required
	Description    string   `json:"description,omitempty" yaml:"description,omitempty"`
	TermsOfService string   `json:"termsOfService,omitempty" yaml:"termsOfService,omitempty"`
	Contact        *Contact `json:"contact,omitempty" yaml:"contact,omitempty"`
	License        *License `json:"license,omitempty" yaml:"license,omitempty"`
	Version        string   `json:"version" yaml:"version"` // Required
}

Info is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#info-object

func (Info) MarshalJSON

func (info Info) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Info.

func (*Info) MarshalYAML added in v0.125.0

func (info *Info) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Info.

func (*Info) UnmarshalJSON

func (info *Info) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Info to a copy of data.

func (*Info) Validate added in v0.3.0

func (info *Info) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Info does not comply with the OpenAPI spec.

type IntegerFormatValidator added in v0.126.0

type IntegerFormatValidator = FormatValidator[int64]

IntegerFormatValidator is a type alias for FormatValidator[int64]

type License

type License struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Name string `json:"name" yaml:"name"` // Required
	URL  string `json:"url,omitempty" yaml:"url,omitempty"`
}

License is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#license-object

func (License) MarshalJSON

func (license License) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of License.

func (License) MarshalYAML added in v0.125.0

func (license License) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of License.

func (*License) UnmarshalJSON

func (license *License) UnmarshalJSON(data []byte) error

UnmarshalJSON sets License to a copy of data.

func (*License) Validate added in v0.3.0

func (license *License) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if License does not comply with the OpenAPI spec.

type Link struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	OperationRef string         `json:"operationRef,omitempty" yaml:"operationRef,omitempty"`
	OperationID  string         `json:"operationId,omitempty" yaml:"operationId,omitempty"`
	Description  string         `json:"description,omitempty" yaml:"description,omitempty"`
	Parameters   map[string]any `json:"parameters,omitempty" yaml:"parameters,omitempty"`
	Server       *Server        `json:"server,omitempty" yaml:"server,omitempty"`
	RequestBody  any            `json:"requestBody,omitempty" yaml:"requestBody,omitempty"`
}

Link is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object

func (Link) MarshalJSON

func (link Link) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Link.

func (Link) MarshalYAML added in v0.125.0

func (link Link) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Link.

func (*Link) UnmarshalJSON

func (link *Link) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Link to a copy of data.

func (*Link) Validate

func (link *Link) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Link does not comply with the OpenAPI spec.

type LinkRef

type LinkRef struct {
	// Extensions only captures fields starting with 'x-' as no other fields
	// are allowed by the openapi spec.
	Extensions map[string]any

	Ref   string
	Value *Link
	// contains filtered or unexported fields
}

LinkRef represents either a Link or a $ref to a Link. When serializing and both fields are set, Ref is preferred over Value.

func (*LinkRef) CollectionName added in v0.126.0

func (x *LinkRef) CollectionName() string

CollectionName returns the JSON string used for a collection of these components.

func (*LinkRef) JSONLookup added in v0.113.0

func (x *LinkRef) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (LinkRef) MarshalJSON

func (x LinkRef) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of LinkRef.

func (LinkRef) MarshalYAML added in v0.108.0

func (x LinkRef) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of LinkRef.

func (*LinkRef) RefPath added in v0.126.0

func (x *LinkRef) RefPath() *url.URL

RefPath returns the path of the $ref relative to the root document.

func (*LinkRef) RefString added in v0.126.0

func (x *LinkRef) RefString() string

RefString returns the $ref value.

func (*LinkRef) UnmarshalJSON

func (x *LinkRef) UnmarshalJSON(data []byte) error

UnmarshalJSON sets LinkRef to a copy of data.

func (*LinkRef) Validate

func (x *LinkRef) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if LinkRef does not comply with the OpenAPI spec.

type Links map[string]*LinkRef

func (Links) JSONLookup added in v0.33.0

func (m Links) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type Loader added in v0.61.0

type Loader struct {
	// IsExternalRefsAllowed enables visiting other files
	IsExternalRefsAllowed bool

	// ReadFromURIFunc allows overriding the any file/URL reading func
	ReadFromURIFunc ReadFromURIFunc

	Context context.Context
	// contains filtered or unexported fields
}

Loader helps deserialize an OpenAPIv3 document

Example
spec := []byte(`
openapi: 3.0.1
paths: {}
info:
  version: 1.1.1
  title: title
  description: An API
`[1:])

loader := NewLoader()
doc, err := loader.LoadFromData(spec)
if err != nil {
	panic(err)
}

if err := doc.Validate(loader.Context); err != nil {
	panic(err)
}

fmt.Print(doc.Info.Description)
Output:

An API

func NewLoader added in v0.61.0

func NewLoader() *Loader

NewLoader returns an empty Loader

func (*Loader) LoadFromData added in v0.61.0

func (loader *Loader) LoadFromData(data []byte) (*T, error)

LoadFromData loads a spec from a byte array

func (*Loader) LoadFromDataWithPath added in v0.61.0

func (loader *Loader) LoadFromDataWithPath(data []byte, location *url.URL) (*T, error)

LoadFromDataWithPath takes the OpenAPI document data in bytes and a path where the resolver can find referred elements and returns a *T with all resolved data or an error if unable to load data or resolve refs.

func (*Loader) LoadFromFile added in v0.61.0

func (loader *Loader) LoadFromFile(location string) (*T, error)

LoadFromFile loads a spec from a local file path

func (*Loader) LoadFromIoReader added in v0.124.0

func (loader *Loader) LoadFromIoReader(reader io.Reader) (*T, error)

LoadFromStdin loads a spec from io.Reader

func (*Loader) LoadFromStdin added in v0.119.0

func (loader *Loader) LoadFromStdin() (*T, error)

LoadFromStdin loads a spec from stdin

func (*Loader) LoadFromURI added in v0.61.0

func (loader *Loader) LoadFromURI(location *url.URL) (*T, error)

LoadFromURI loads a spec from a remote URL

func (*Loader) ResolveRefsIn added in v0.61.0

func (loader *Loader) ResolveRefsIn(doc *T, location *url.URL) (err error)

ResolveRefsIn expands references if for instance spec was just unmarshaled

type MediaType

type MediaType struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Schema   *SchemaRef           `json:"schema,omitempty" yaml:"schema,omitempty"`
	Example  any                  `json:"example,omitempty" yaml:"example,omitempty"`
	Examples Examples             `json:"examples,omitempty" yaml:"examples,omitempty"`
	Encoding map[string]*Encoding `json:"encoding,omitempty" yaml:"encoding,omitempty"`
}

MediaType is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#media-type-object

func NewMediaType

func NewMediaType() *MediaType

func (MediaType) JSONLookup added in v0.33.0

func (mediaType MediaType) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (MediaType) MarshalJSON

func (mediaType MediaType) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of MediaType.

func (MediaType) MarshalYAML added in v0.125.0

func (mediaType MediaType) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of MediaType.

func (*MediaType) UnmarshalJSON

func (mediaType *MediaType) UnmarshalJSON(data []byte) error

UnmarshalJSON sets MediaType to a copy of data.

func (*MediaType) Validate

func (mediaType *MediaType) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if MediaType does not comply with the OpenAPI spec.

func (*MediaType) WithEncoding

func (mediaType *MediaType) WithEncoding(name string, enc *Encoding) *MediaType

func (*MediaType) WithExample

func (mediaType *MediaType) WithExample(name string, value any) *MediaType

func (*MediaType) WithSchema

func (mediaType *MediaType) WithSchema(schema *Schema) *MediaType

func (*MediaType) WithSchemaRef

func (mediaType *MediaType) WithSchemaRef(schema *SchemaRef) *MediaType

type MultiError added in v0.25.0

type MultiError []error

MultiError is a collection of errors, intended for when multiple issues need to be reported upstream

func (MultiError) As added in v0.25.0

func (me MultiError) As(target any) bool

As allows you to use `errors.As()` to set target to the first error within the multi error that matches the target type

func (MultiError) Error added in v0.25.0

func (me MultiError) Error() string

func (MultiError) Is added in v0.25.0

func (me MultiError) Is(target error) bool

Is allows you to determine if a generic error is in fact a MultiError using `errors.Is()` It will also return true if any of the contained errors match target

type NewCallbackOption added in v0.122.0

type NewCallbackOption func(*Callback)

NewCallbackOption describes options to NewCallback func

func WithCallback added in v0.122.0

func WithCallback(cb string, pathItem *PathItem) NewCallbackOption

WithCallback adds Callback as an option to NewCallback

type NewPathsOption added in v0.122.0

type NewPathsOption func(*Paths)

NewPathsOption describes options to NewPaths func

func WithPath added in v0.122.0

func WithPath(path string, pathItem *PathItem) NewPathsOption

WithPath adds a named path item

type NewResponsesOption added in v0.122.0

type NewResponsesOption func(*Responses)

NewResponsesOption describes options to NewResponses func

func WithName added in v0.122.0

func WithName(name string, response *Response) NewResponsesOption

WithName adds a name-keyed Response

func WithStatus added in v0.122.0

func WithStatus(status int, responseRef *ResponseRef) NewResponsesOption

WithStatus adds a status code keyed ResponseRef

type NumberFormatValidator added in v0.126.0

type NumberFormatValidator = FormatValidator[float64]

NumberFormatValidator is a type alias for FormatValidator[float64]

type OAuthFlow

type OAuthFlow struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	AuthorizationURL string            `json:"authorizationUrl,omitempty" yaml:"authorizationUrl,omitempty"`
	TokenURL         string            `json:"tokenUrl,omitempty" yaml:"tokenUrl,omitempty"`
	RefreshURL       string            `json:"refreshUrl,omitempty" yaml:"refreshUrl,omitempty"`
	Scopes           map[string]string `json:"scopes" yaml:"scopes"` // required
}

OAuthFlow is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#oauth-flow-object

func (OAuthFlow) MarshalJSON

func (flow OAuthFlow) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of OAuthFlow.

func (OAuthFlow) MarshalYAML added in v0.125.0

func (flow OAuthFlow) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of OAuthFlow.

func (*OAuthFlow) UnmarshalJSON

func (flow *OAuthFlow) UnmarshalJSON(data []byte) error

UnmarshalJSON sets OAuthFlow to a copy of data.

func (*OAuthFlow) Validate

func (flow *OAuthFlow) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if OAuthFlows does not comply with the OpenAPI spec.

type OAuthFlows

type OAuthFlows struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Implicit          *OAuthFlow `json:"implicit,omitempty" yaml:"implicit,omitempty"`
	Password          *OAuthFlow `json:"password,omitempty" yaml:"password,omitempty"`
	ClientCredentials *OAuthFlow `json:"clientCredentials,omitempty" yaml:"clientCredentials,omitempty"`
	AuthorizationCode *OAuthFlow `json:"authorizationCode,omitempty" yaml:"authorizationCode,omitempty"`
}

OAuthFlows is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#oauth-flows-object

func (OAuthFlows) MarshalJSON

func (flows OAuthFlows) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of OAuthFlows.

func (OAuthFlows) MarshalYAML added in v0.125.0

func (flows OAuthFlows) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of OAuthFlows.

func (*OAuthFlows) UnmarshalJSON

func (flows *OAuthFlows) UnmarshalJSON(data []byte) error

UnmarshalJSON sets OAuthFlows to a copy of data.

func (*OAuthFlows) Validate

func (flows *OAuthFlows) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if OAuthFlows does not comply with the OpenAPI spec.

type Operation

type Operation struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	// Optional tags for documentation.
	Tags []string `json:"tags,omitempty" yaml:"tags,omitempty"`

	// Optional short summary.
	Summary string `json:"summary,omitempty" yaml:"summary,omitempty"`

	// Optional description. Should use CommonMark syntax.
	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	// Optional operation ID.
	OperationID string `json:"operationId,omitempty" yaml:"operationId,omitempty"`

	// Optional parameters.
	Parameters Parameters `json:"parameters,omitempty" yaml:"parameters,omitempty"`

	// Optional body parameter.
	RequestBody *RequestBodyRef `json:"requestBody,omitempty" yaml:"requestBody,omitempty"`

	// Responses.
	Responses *Responses `json:"responses" yaml:"responses"` // Required

	// Optional callbacks
	Callbacks Callbacks `json:"callbacks,omitempty" yaml:"callbacks,omitempty"`

	Deprecated bool `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`

	// Optional security requirements that overrides top-level security.
	Security *SecurityRequirements `json:"security,omitempty" yaml:"security,omitempty"`

	// Optional servers that overrides top-level servers.
	Servers *Servers `json:"servers,omitempty" yaml:"servers,omitempty"`

	ExternalDocs *ExternalDocs `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
}

Operation represents "operation" specified by" OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object

func NewOperation

func NewOperation() *Operation

func (*Operation) AddParameter

func (operation *Operation) AddParameter(p *Parameter)

func (*Operation) AddResponse

func (operation *Operation) AddResponse(status int, response *Response)

func (Operation) JSONLookup added in v0.33.0

func (operation Operation) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (Operation) MarshalJSON

func (operation Operation) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Operation.

func (Operation) MarshalYAML added in v0.125.0

func (operation Operation) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Operation.

func (*Operation) UnmarshalJSON

func (operation *Operation) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Operation to a copy of data.

func (*Operation) Validate

func (operation *Operation) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Operation does not comply with the OpenAPI spec.

type Parameter

type Parameter struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Name            string     `json:"name,omitempty" yaml:"name,omitempty"`
	In              string     `json:"in,omitempty" yaml:"in,omitempty"`
	Description     string     `json:"description,omitempty" yaml:"description,omitempty"`
	Style           string     `json:"style,omitempty" yaml:"style,omitempty"`
	Explode         *bool      `json:"explode,omitempty" yaml:"explode,omitempty"`
	AllowEmptyValue bool       `json:"allowEmptyValue,omitempty" yaml:"allowEmptyValue,omitempty"`
	AllowReserved   bool       `json:"allowReserved,omitempty" yaml:"allowReserved,omitempty"`
	Deprecated      bool       `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
	Required        bool       `json:"required,omitempty" yaml:"required,omitempty"`
	Schema          *SchemaRef `json:"schema,omitempty" yaml:"schema,omitempty"`
	Example         any        `json:"example,omitempty" yaml:"example,omitempty"`
	Examples        Examples   `json:"examples,omitempty" yaml:"examples,omitempty"`
	Content         Content    `json:"content,omitempty" yaml:"content,omitempty"`
}

Parameter is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object

func NewCookieParameter

func NewCookieParameter(name string) *Parameter

func NewHeaderParameter

func NewHeaderParameter(name string) *Parameter

func NewPathParameter

func NewPathParameter(name string) *Parameter

func NewQueryParameter

func NewQueryParameter(name string) *Parameter

func (Parameter) JSONLookup added in v0.33.0

func (parameter Parameter) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (Parameter) MarshalJSON

func (parameter Parameter) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Parameter.

func (Parameter) MarshalYAML added in v0.125.0

func (parameter Parameter) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Parameter.

func (*Parameter) SerializationMethod added in v0.2.0

func (parameter *Parameter) SerializationMethod() (*SerializationMethod, error)

SerializationMethod returns a parameter's serialization method. When a parameter's serialization method is not defined the method returns the default serialization method corresponding to a parameter's location.

func (*Parameter) UnmarshalJSON

func (parameter *Parameter) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Parameter to a copy of data.

func (*Parameter) Validate

func (parameter *Parameter) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Parameter does not comply with the OpenAPI spec.

func (*Parameter) WithDescription

func (parameter *Parameter) WithDescription(value string) *Parameter

func (*Parameter) WithRequired

func (parameter *Parameter) WithRequired(value bool) *Parameter

func (*Parameter) WithSchema

func (parameter *Parameter) WithSchema(value *Schema) *Parameter

type ParameterRef

type ParameterRef struct {
	// Extensions only captures fields starting with 'x-' as no other fields
	// are allowed by the openapi spec.
	Extensions map[string]any

	Ref   string
	Value *Parameter
	// contains filtered or unexported fields
}

ParameterRef represents either a Parameter or a $ref to a Parameter. When serializing and both fields are set, Ref is preferred over Value.

func (*ParameterRef) CollectionName added in v0.126.0

func (x *ParameterRef) CollectionName() string

CollectionName returns the JSON string used for a collection of these components.

func (*ParameterRef) JSONLookup added in v0.33.0

func (x *ParameterRef) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (ParameterRef) MarshalJSON

func (x ParameterRef) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of ParameterRef.

func (ParameterRef) MarshalYAML added in v0.108.0

func (x ParameterRef) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of ParameterRef.

func (*ParameterRef) RefPath added in v0.126.0

func (x *ParameterRef) RefPath() *url.URL

RefPath returns the path of the $ref relative to the root document.

func (*ParameterRef) RefString added in v0.126.0

func (x *ParameterRef) RefString() string

RefString returns the $ref value.

func (*ParameterRef) UnmarshalJSON

func (x *ParameterRef) UnmarshalJSON(data []byte) error

UnmarshalJSON sets ParameterRef to a copy of data.

func (*ParameterRef) Validate

func (x *ParameterRef) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if ParameterRef does not comply with the OpenAPI spec.

type Parameters

type Parameters []*ParameterRef

Parameters is specified by OpenAPI/Swagger 3.0 standard.

func NewParameters

func NewParameters() Parameters

func (Parameters) GetByInAndName

func (parameters Parameters) GetByInAndName(in string, name string) *Parameter

func (Parameters) JSONLookup added in v0.33.0

func (p Parameters) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (Parameters) Validate

func (parameters Parameters) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Parameters does not comply with the OpenAPI spec.

type ParametersMap added in v0.33.0

type ParametersMap map[string]*ParameterRef

func (ParametersMap) JSONLookup added in v0.33.0

func (m ParametersMap) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type PathItem

type PathItem struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Ref         string     `json:"$ref,omitempty" yaml:"$ref,omitempty"`
	Summary     string     `json:"summary,omitempty" yaml:"summary,omitempty"`
	Description string     `json:"description,omitempty" yaml:"description,omitempty"`
	Connect     *Operation `json:"connect,omitempty" yaml:"connect,omitempty"`
	Delete      *Operation `json:"delete,omitempty" yaml:"delete,omitempty"`
	Get         *Operation `json:"get,omitempty" yaml:"get,omitempty"`
	Head        *Operation `json:"head,omitempty" yaml:"head,omitempty"`
	Options     *Operation `json:"options,omitempty" yaml:"options,omitempty"`
	Patch       *Operation `json:"patch,omitempty" yaml:"patch,omitempty"`
	Post        *Operation `json:"post,omitempty" yaml:"post,omitempty"`
	Put         *Operation `json:"put,omitempty" yaml:"put,omitempty"`
	Trace       *Operation `json:"trace,omitempty" yaml:"trace,omitempty"`
	Servers     Servers    `json:"servers,omitempty" yaml:"servers,omitempty"`
	Parameters  Parameters `json:"parameters,omitempty" yaml:"parameters,omitempty"`
}

PathItem is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object

func (*PathItem) GetOperation

func (pathItem *PathItem) GetOperation(method string) *Operation

func (PathItem) MarshalJSON

func (pathItem PathItem) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of PathItem.

func (PathItem) MarshalYAML added in v0.125.0

func (pathItem PathItem) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of PathItem.

func (*PathItem) Operations

func (pathItem *PathItem) Operations() map[string]*Operation

func (*PathItem) SetOperation

func (pathItem *PathItem) SetOperation(method string, operation *Operation)

func (*PathItem) UnmarshalJSON

func (pathItem *PathItem) UnmarshalJSON(data []byte) error

UnmarshalJSON sets PathItem to a copy of data.

func (*PathItem) Validate

func (pathItem *PathItem) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if PathItem does not comply with the OpenAPI spec.

type Paths

type Paths struct {
	Extensions map[string]any `json:"-" yaml:"-"`
	// contains filtered or unexported fields
}

Paths is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#paths-object

func NewPaths added in v0.122.0

func NewPaths(opts ...NewPathsOption) *Paths

NewPaths builds a paths object with path items in insertion order.

func NewPathsWithCapacity added in v0.122.0

func NewPathsWithCapacity(cap int) *Paths

NewPathsWithCapacity builds a paths object of the given capacity.

func (*Paths) Delete added in v0.124.0

func (paths *Paths) Delete(key string)

Delete removes the entry associated with key 'key' from 'paths'.

func (*Paths) Find

func (paths *Paths) Find(key string) *PathItem

Find returns a path that matches the key.

The method ignores differences in template variable names (except possible "*" suffix).

For example:

paths := openapi3.Paths {
  "/person/{personName}": &openapi3.PathItem{},
}
pathItem := path.Find("/person/{name}")

would return the correct path item.

func (*Paths) InMatchingOrder added in v0.112.0

func (paths *Paths) InMatchingOrder() []string

InMatchingOrder returns paths in the order they are matched against URLs. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#paths-object When matching URLs, concrete (non-templated) paths would be matched before their templated counterparts.

func (Paths) JSONLookup added in v0.122.0

func (paths Paths) JSONLookup(token string) (any, error)

JSONLookup implements https://github.com/go-openapi/jsonpointer#JSONPointable

func (*Paths) Len added in v0.122.0

func (paths *Paths) Len() int

Len returns the amount of keys in paths excluding paths.Extensions.

func (*Paths) Map added in v0.122.0

func (paths *Paths) Map() (m map[string]*PathItem)

Map returns paths as a 'map'. Note: iteration on Go maps is not ordered.

func (*Paths) MarshalJSON added in v0.122.0

func (paths *Paths) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Paths.

func (*Paths) MarshalYAML added in v0.124.0

func (paths *Paths) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Paths.

func (*Paths) Set added in v0.122.0

func (paths *Paths) Set(key string, value *PathItem)

Set adds or replaces key 'key' of 'paths' with 'value'. Note: 'paths' MUST be non-nil

func (*Paths) UnmarshalJSON added in v0.122.0

func (paths *Paths) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON sets Paths to a copy of data.

func (*Paths) Validate

func (paths *Paths) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Paths does not comply with the OpenAPI spec.

func (*Paths) Value added in v0.122.0

func (paths *Paths) Value(key string) *PathItem

Value returns the paths for key or nil

type ReadFromURIFunc added in v0.90.0

type ReadFromURIFunc func(loader *Loader, url *url.URL) ([]byte, error)

ReadFromURIFunc defines a function which reads the contents of a resource located at a URI.

func ReadFromHTTP added in v0.90.0

func ReadFromHTTP(cl *http.Client) ReadFromURIFunc

ReadFromHTTP returns a ReadFromURIFunc which uses the given http.Client to read the contents from a remote HTTP URI. This client may be customized to implement timeouts, RFC 7234 caching, etc.

func ReadFromURIs added in v0.90.0

func ReadFromURIs(readers ...ReadFromURIFunc) ReadFromURIFunc

ReadFromURIs returns a ReadFromURIFunc which tries to read a URI using the given reader functions, in the same order. If a reader function does not support the URI and returns ErrURINotSupported, the next function is checked until a match is found, or the URI is not supported by any.

func URIMapCache added in v0.90.0

func URIMapCache(reader ReadFromURIFunc) ReadFromURIFunc

URIMapCache returns a ReadFromURIFunc that caches the contents read from URI locations in a simple map. This cache implementation is suitable for short-lived processes such as command-line tools which process OpenAPI documents.

type Ref added in v0.33.0

type Ref struct {
	Ref string `json:"$ref" yaml:"$ref"`
}

Ref is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#reference-object

type RefNameResolver added in v0.82.0

type RefNameResolver func(*T, ComponentRef) string

RefNameResolver maps a component to an name that is used as it's internalized name.

The function should avoid name collisions (i.e. be a injective mapping). It must only contain characters valid for fixed field names: IdentifierRegExp.

type RegexCompilerFunc added in v0.128.0

type RegexCompilerFunc func(expr string) (RegexMatcher, error)

type RegexMatcher added in v0.128.0

type RegexMatcher interface {
	MatchString(s string) bool
}

type RequestBodies added in v0.33.0

type RequestBodies map[string]*RequestBodyRef

func (RequestBodies) JSONLookup added in v0.33.0

func (m RequestBodies) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type RequestBody

type RequestBody struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Description string  `json:"description,omitempty" yaml:"description,omitempty"`
	Required    bool    `json:"required,omitempty" yaml:"required,omitempty"`
	Content     Content `json:"content" yaml:"content"`
}

RequestBody is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object

func NewRequestBody

func NewRequestBody() *RequestBody

func (*RequestBody) GetMediaType

func (requestBody *RequestBody) GetMediaType(mediaType string) *MediaType

func (RequestBody) MarshalJSON

func (requestBody RequestBody) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of RequestBody.

func (RequestBody) MarshalYAML added in v0.125.0

func (requestBody RequestBody) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of RequestBody.

func (*RequestBody) UnmarshalJSON

func (requestBody *RequestBody) UnmarshalJSON(data []byte) error

UnmarshalJSON sets RequestBody to a copy of data.

func (*RequestBody) Validate

func (requestBody *RequestBody) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if RequestBody does not comply with the OpenAPI spec.

func (*RequestBody) WithContent

func (requestBody *RequestBody) WithContent(content Content) *RequestBody

func (*RequestBody) WithDescription

func (requestBody *RequestBody) WithDescription(value string) *RequestBody

func (*RequestBody) WithFormDataSchema added in v0.17.0

func (requestBody *RequestBody) WithFormDataSchema(value *Schema) *RequestBody

func (*RequestBody) WithFormDataSchemaRef added in v0.17.0

func (requestBody *RequestBody) WithFormDataSchemaRef(value *SchemaRef) *RequestBody

func (*RequestBody) WithJSONSchema

func (requestBody *RequestBody) WithJSONSchema(value *Schema) *RequestBody

func (*RequestBody) WithJSONSchemaRef

func (requestBody *RequestBody) WithJSONSchemaRef(value *SchemaRef) *RequestBody

func (*RequestBody) WithRequired

func (requestBody *RequestBody) WithRequired(value bool) *RequestBody

func (*RequestBody) WithSchema added in v0.29.0

func (requestBody *RequestBody) WithSchema(value *Schema, consumes []string) *RequestBody

func (*RequestBody) WithSchemaRef added in v0.29.0

func (requestBody *RequestBody) WithSchemaRef(value *SchemaRef, consumes []string) *RequestBody

type RequestBodyRef

type RequestBodyRef struct {
	// Extensions only captures fields starting with 'x-' as no other fields
	// are allowed by the openapi spec.
	Extensions map[string]any

	Ref   string
	Value *RequestBody
	// contains filtered or unexported fields
}

RequestBodyRef represents either a RequestBody or a $ref to a RequestBody. When serializing and both fields are set, Ref is preferred over Value.

func (*RequestBodyRef) CollectionName added in v0.126.0

func (x *RequestBodyRef) CollectionName() string

CollectionName returns the JSON string used for a collection of these components.

func (*RequestBodyRef) JSONLookup added in v0.33.0

func (x *RequestBodyRef) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (RequestBodyRef) MarshalJSON

func (x RequestBodyRef) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of RequestBodyRef.

func (RequestBodyRef) MarshalYAML added in v0.108.0

func (x RequestBodyRef) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of RequestBodyRef.

func (*RequestBodyRef) RefPath added in v0.126.0

func (x *RequestBodyRef) RefPath() *url.URL

RefPath returns the path of the $ref relative to the root document.

func (*RequestBodyRef) RefString added in v0.126.0

func (x *RequestBodyRef) RefString() string

RefString returns the $ref value.

func (*RequestBodyRef) UnmarshalJSON

func (x *RequestBodyRef) UnmarshalJSON(data []byte) error

UnmarshalJSON sets RequestBodyRef to a copy of data.

func (*RequestBodyRef) Validate

func (x *RequestBodyRef) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if RequestBodyRef does not comply with the OpenAPI spec.

type Response

type Response struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Description *string `json:"description,omitempty" yaml:"description,omitempty"`
	Headers     Headers `json:"headers,omitempty" yaml:"headers,omitempty"`
	Content     Content `json:"content,omitempty" yaml:"content,omitempty"`
	Links       Links   `json:"links,omitempty" yaml:"links,omitempty"`
}

Response is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#response-object

func NewResponse

func NewResponse() *Response

func (Response) MarshalJSON

func (response Response) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Response.

func (Response) MarshalYAML added in v0.125.0

func (response Response) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Response.

func (*Response) UnmarshalJSON

func (response *Response) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Response to a copy of data.

func (*Response) Validate

func (response *Response) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Response does not comply with the OpenAPI spec.

func (*Response) WithContent

func (response *Response) WithContent(content Content) *Response

func (*Response) WithDescription

func (response *Response) WithDescription(value string) *Response

func (*Response) WithJSONSchema

func (response *Response) WithJSONSchema(schema *Schema) *Response

func (*Response) WithJSONSchemaRef

func (response *Response) WithJSONSchemaRef(schema *SchemaRef) *Response

type ResponseBodies added in v0.121.0

type ResponseBodies map[string]*ResponseRef

func (ResponseBodies) JSONLookup added in v0.121.0

func (m ResponseBodies) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type ResponseRef

type ResponseRef struct {
	// Extensions only captures fields starting with 'x-' as no other fields
	// are allowed by the openapi spec.
	Extensions map[string]any

	Ref   string
	Value *Response
	// contains filtered or unexported fields
}

ResponseRef represents either a Response or a $ref to a Response. When serializing and both fields are set, Ref is preferred over Value.

func (*ResponseRef) CollectionName added in v0.126.0

func (x *ResponseRef) CollectionName() string

CollectionName returns the JSON string used for a collection of these components.

func (*ResponseRef) JSONLookup added in v0.33.0

func (x *ResponseRef) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (ResponseRef) MarshalJSON

func (x ResponseRef) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of ResponseRef.

func (ResponseRef) MarshalYAML added in v0.108.0

func (x ResponseRef) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of ResponseRef.

func (*ResponseRef) RefPath added in v0.126.0

func (x *ResponseRef) RefPath() *url.URL

RefPath returns the path of the $ref relative to the root document.

func (*ResponseRef) RefString added in v0.126.0

func (x *ResponseRef) RefString() string

RefString returns the $ref value.

func (*ResponseRef) UnmarshalJSON

func (x *ResponseRef) UnmarshalJSON(data []byte) error

UnmarshalJSON sets ResponseRef to a copy of data.

func (*ResponseRef) Validate

func (x *ResponseRef) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if ResponseRef does not comply with the OpenAPI spec.

type Responses

type Responses struct {
	Extensions map[string]any `json:"-" yaml:"-"`
	// contains filtered or unexported fields
}

Responses is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#responses-object

func NewResponses

func NewResponses(opts ...NewResponsesOption) *Responses

NewResponses builds a responses object with response objects in insertion order. Given no arguments, NewResponses returns a valid responses object containing a default match-all reponse.

func NewResponsesWithCapacity added in v0.122.0

func NewResponsesWithCapacity(cap int) *Responses

NewResponsesWithCapacity builds a responses object of the given capacity.

func (*Responses) Default

func (responses *Responses) Default() *ResponseRef

Default returns the default response

func (*Responses) Delete added in v0.124.0

func (responses *Responses) Delete(key string)

Delete removes the entry associated with key 'key' from 'responses'.

func (Responses) JSONLookup added in v0.33.0

func (responses Responses) JSONLookup(token string) (any, error)

JSONLookup implements https://github.com/go-openapi/jsonpointer#JSONPointable

func (*Responses) Len added in v0.122.0

func (responses *Responses) Len() int

Len returns the amount of keys in responses excluding responses.Extensions.

func (*Responses) Map added in v0.122.0

func (responses *Responses) Map() (m map[string]*ResponseRef)

Map returns responses as a 'map'. Note: iteration on Go maps is not ordered.

func (*Responses) MarshalJSON added in v0.122.0

func (responses *Responses) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Responses.

func (*Responses) MarshalYAML added in v0.124.0

func (responses *Responses) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Responses.

func (*Responses) Set added in v0.122.0

func (responses *Responses) Set(key string, value *ResponseRef)

Set adds or replaces key 'key' of 'responses' with 'value'. Note: 'responses' MUST be non-nil

func (*Responses) Status added in v0.122.0

func (responses *Responses) Status(status int) *ResponseRef

Status returns a ResponseRef for the given status If an exact match isn't initially found a patterned field is checked using the first digit to determine the range (eg: 201 to 2XX) See https://spec.openapis.org/oas/v3.0.3#patterned-fields-0

func (*Responses) UnmarshalJSON added in v0.122.0

func (responses *Responses) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON sets Responses to a copy of data.

func (*Responses) Validate

func (responses *Responses) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Responses does not comply with the OpenAPI spec.

func (*Responses) Value added in v0.122.0

func (responses *Responses) Value(key string) *ResponseRef

Value returns the responses for key or nil

type Schema

type Schema struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	OneOf        SchemaRefs    `json:"oneOf,omitempty" yaml:"oneOf,omitempty"`
	AnyOf        SchemaRefs    `json:"anyOf,omitempty" yaml:"anyOf,omitempty"`
	AllOf        SchemaRefs    `json:"allOf,omitempty" yaml:"allOf,omitempty"`
	Not          *SchemaRef    `json:"not,omitempty" yaml:"not,omitempty"`
	Type         *Types        `json:"type,omitempty" yaml:"type,omitempty"`
	Title        string        `json:"title,omitempty" yaml:"title,omitempty"`
	Format       string        `json:"format,omitempty" yaml:"format,omitempty"`
	Description  string        `json:"description,omitempty" yaml:"description,omitempty"`
	Enum         []any         `json:"enum,omitempty" yaml:"enum,omitempty"`
	Default      any           `json:"default,omitempty" yaml:"default,omitempty"`
	Example      any           `json:"example,omitempty" yaml:"example,omitempty"`
	ExternalDocs *ExternalDocs `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`

	// Array-related, here for struct compactness
	UniqueItems bool `json:"uniqueItems,omitempty" yaml:"uniqueItems,omitempty"`
	// Number-related, here for struct compactness
	ExclusiveMin bool `json:"exclusiveMinimum,omitempty" yaml:"exclusiveMinimum,omitempty"`
	ExclusiveMax bool `json:"exclusiveMaximum,omitempty" yaml:"exclusiveMaximum,omitempty"`
	// Properties
	Nullable        bool `json:"nullable,omitempty" yaml:"nullable,omitempty"`
	ReadOnly        bool `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
	WriteOnly       bool `json:"writeOnly,omitempty" yaml:"writeOnly,omitempty"`
	AllowEmptyValue bool `json:"allowEmptyValue,omitempty" yaml:"allowEmptyValue,omitempty"`
	Deprecated      bool `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
	XML             *XML `json:"xml,omitempty" yaml:"xml,omitempty"`

	// Number
	Min        *float64 `json:"minimum,omitempty" yaml:"minimum,omitempty"`
	Max        *float64 `json:"maximum,omitempty" yaml:"maximum,omitempty"`
	MultipleOf *float64 `json:"multipleOf,omitempty" yaml:"multipleOf,omitempty"`

	// String
	MinLength uint64  `json:"minLength,omitempty" yaml:"minLength,omitempty"`
	MaxLength *uint64 `json:"maxLength,omitempty" yaml:"maxLength,omitempty"`
	Pattern   string  `json:"pattern,omitempty" yaml:"pattern,omitempty"`

	// Array
	MinItems uint64     `json:"minItems,omitempty" yaml:"minItems,omitempty"`
	MaxItems *uint64    `json:"maxItems,omitempty" yaml:"maxItems,omitempty"`
	Items    *SchemaRef `json:"items,omitempty" yaml:"items,omitempty"`

	// Object
	Required             []string             `json:"required,omitempty" yaml:"required,omitempty"`
	Properties           Schemas              `json:"properties,omitempty" yaml:"properties,omitempty"`
	MinProps             uint64               `json:"minProperties,omitempty" yaml:"minProperties,omitempty"`
	MaxProps             *uint64              `json:"maxProperties,omitempty" yaml:"maxProperties,omitempty"`
	AdditionalProperties AdditionalProperties `json:"additionalProperties,omitempty" yaml:"additionalProperties,omitempty"`
	Discriminator        *Discriminator       `json:"discriminator,omitempty" yaml:"discriminator,omitempty"`
}

Schema is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object

func NewAllOfSchema

func NewAllOfSchema(schemas ...*Schema) *Schema

func NewAnyOfSchema

func NewAnyOfSchema(schemas ...*Schema) *Schema

func NewArraySchema

func NewArraySchema() *Schema

func NewBoolSchema

func NewBoolSchema() *Schema

func NewBytesSchema

func NewBytesSchema() *Schema

func NewDateTimeSchema

func NewDateTimeSchema() *Schema

func NewFloat64Schema

func NewFloat64Schema() *Schema

func NewInt32Schema

func NewInt32Schema() *Schema

func NewInt64Schema

func NewInt64Schema() *Schema

func NewIntegerSchema

func NewIntegerSchema() *Schema

func NewObjectSchema

func NewObjectSchema() *Schema

func NewOneOfSchema

func NewOneOfSchema(schemas ...*Schema) *Schema

func NewSchema

func NewSchema() *Schema

func NewStringSchema

func NewStringSchema() *Schema

func NewUUIDSchema added in v0.3.0

func NewUUIDSchema() *Schema

func (*Schema) IsEmpty

func (schema *Schema) IsEmpty() bool

IsEmpty tells whether schema is equivalent to the empty schema `{}`.

func (*Schema) IsMatching

func (schema *Schema) IsMatching(value any) bool

func (*Schema) IsMatchingJSONArray

func (schema *Schema) IsMatchingJSONArray(value []any) bool

func (*Schema) IsMatchingJSONBoolean

func (schema *Schema) IsMatchingJSONBoolean(value bool) bool

func (*Schema) IsMatchingJSONNumber

func (schema *Schema) IsMatchingJSONNumber(value float64) bool

func (*Schema) IsMatchingJSONObject

func (schema *Schema) IsMatchingJSONObject(value map[string]any) bool

func (*Schema) IsMatchingJSONString

func (schema *Schema) IsMatchingJSONString(value string) bool

func (Schema) JSONLookup added in v0.33.0

func (schema Schema) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (Schema) MarshalJSON

func (schema Schema) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Schema.

func (Schema) MarshalYAML added in v0.125.0

func (schema Schema) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Schema.

func (*Schema) NewRef

func (schema *Schema) NewRef() *SchemaRef

func (*Schema) PermitsNull added in v0.124.0

func (schema *Schema) PermitsNull() bool

func (*Schema) UnmarshalJSON

func (schema *Schema) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Schema to a copy of data.

func (*Schema) Validate

func (schema *Schema) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Schema does not comply with the OpenAPI spec.

func (*Schema) VisitJSON

func (schema *Schema) VisitJSON(value any, opts ...SchemaValidationOption) error

func (*Schema) VisitJSONArray

func (schema *Schema) VisitJSONArray(value []any) error

func (*Schema) VisitJSONBoolean

func (schema *Schema) VisitJSONBoolean(value bool) error

func (*Schema) VisitJSONNumber

func (schema *Schema) VisitJSONNumber(value float64) error

func (*Schema) VisitJSONObject

func (schema *Schema) VisitJSONObject(value map[string]any) error

func (*Schema) VisitJSONString

func (schema *Schema) VisitJSONString(value string) error

func (*Schema) WithAdditionalProperties

func (schema *Schema) WithAdditionalProperties(v *Schema) *Schema

func (*Schema) WithAnyAdditionalProperties

func (schema *Schema) WithAnyAdditionalProperties() *Schema

func (*Schema) WithDefault added in v0.3.0

func (schema *Schema) WithDefault(defaultValue any) *Schema

func (*Schema) WithEnum

func (schema *Schema) WithEnum(values ...any) *Schema

func (*Schema) WithExclusiveMax

func (schema *Schema) WithExclusiveMax(value bool) *Schema

func (*Schema) WithExclusiveMin

func (schema *Schema) WithExclusiveMin(value bool) *Schema

func (*Schema) WithFormat

func (schema *Schema) WithFormat(value string) *Schema

func (*Schema) WithItems

func (schema *Schema) WithItems(value *Schema) *Schema

func (*Schema) WithLength

func (schema *Schema) WithLength(i int64) *Schema

func (*Schema) WithLengthDecodedBase64

func (schema *Schema) WithLengthDecodedBase64(i int64) *Schema

func (*Schema) WithMax

func (schema *Schema) WithMax(value float64) *Schema

func (*Schema) WithMaxItems

func (schema *Schema) WithMaxItems(i int64) *Schema

func (*Schema) WithMaxLength

func (schema *Schema) WithMaxLength(i int64) *Schema

func (*Schema) WithMaxLengthDecodedBase64

func (schema *Schema) WithMaxLengthDecodedBase64(i int64) *Schema

func (*Schema) WithMaxProperties

func (schema *Schema) WithMaxProperties(i int64) *Schema

func (*Schema) WithMin

func (schema *Schema) WithMin(value float64) *Schema

func (*Schema) WithMinItems

func (schema *Schema) WithMinItems(i int64) *Schema

func (*Schema) WithMinLength

func (schema *Schema) WithMinLength(i int64) *Schema

func (*Schema) WithMinLengthDecodedBase64

func (schema *Schema) WithMinLengthDecodedBase64(i int64) *Schema

func (*Schema) WithMinProperties

func (schema *Schema) WithMinProperties(i int64) *Schema

func (*Schema) WithNullable

func (schema *Schema) WithNullable() *Schema

func (*Schema) WithPattern

func (schema *Schema) WithPattern(pattern string) *Schema

func (*Schema) WithProperties

func (schema *Schema) WithProperties(properties map[string]*Schema) *Schema

func (*Schema) WithProperty

func (schema *Schema) WithProperty(name string, propertySchema *Schema) *Schema

func (*Schema) WithPropertyRef

func (schema *Schema) WithPropertyRef(name string, ref *SchemaRef) *Schema

func (*Schema) WithRequired added in v0.123.0

func (schema *Schema) WithRequired(required []string) *Schema

func (*Schema) WithUniqueItems

func (schema *Schema) WithUniqueItems(unique bool) *Schema

func (*Schema) WithoutAdditionalProperties added in v0.114.0

func (schema *Schema) WithoutAdditionalProperties() *Schema

type SchemaError

type SchemaError struct {
	// Value is the value that failed validation.
	Value any

	// Schema is the schema that failed validation.
	Schema *Schema
	// SchemaField is the field of the schema that failed validation.
	SchemaField string
	// Reason is a human-readable message describing the error.
	// The message should never include the original value to prevent leakage of potentially sensitive inputs in error messages.
	Reason string
	// Origin is the original error that caused this error.
	Origin error
	// contains filtered or unexported fields
}

SchemaError is an error that occurs during schema validation.

func (*SchemaError) Error

func (err *SchemaError) Error() string

func (*SchemaError) JSONPointer

func (err *SchemaError) JSONPointer() []string

func (SchemaError) Unwrap added in v0.77.0

func (err SchemaError) Unwrap() error

type SchemaRef

type SchemaRef struct {
	// Extensions only captures fields starting with 'x-' as no other fields
	// are allowed by the openapi spec.
	Extensions map[string]any

	Ref   string
	Value *Schema
	// contains filtered or unexported fields
}

SchemaRef represents either a Schema or a $ref to a Schema. When serializing and both fields are set, Ref is preferred over Value.

func NewSchemaRef

func NewSchemaRef(ref string, value *Schema) *SchemaRef

NewSchemaRef simply builds a SchemaRef

func (*SchemaRef) CollectionName added in v0.126.0

func (x *SchemaRef) CollectionName() string

CollectionName returns the JSON string used for a collection of these components.

func (*SchemaRef) JSONLookup added in v0.33.0

func (x *SchemaRef) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (SchemaRef) MarshalJSON

func (x SchemaRef) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of SchemaRef.

func (SchemaRef) MarshalYAML added in v0.108.0

func (x SchemaRef) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of SchemaRef.

func (*SchemaRef) RefPath added in v0.126.0

func (x *SchemaRef) RefPath() *url.URL

RefPath returns the path of the $ref relative to the root document.

func (*SchemaRef) RefString added in v0.126.0

func (x *SchemaRef) RefString() string

RefString returns the $ref value.

func (*SchemaRef) UnmarshalJSON

func (x *SchemaRef) UnmarshalJSON(data []byte) error

UnmarshalJSON sets SchemaRef to a copy of data.

func (*SchemaRef) Validate

func (x *SchemaRef) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if SchemaRef does not comply with the OpenAPI spec.

type SchemaRefs added in v0.33.0

type SchemaRefs []*SchemaRef

func (SchemaRefs) JSONLookup added in v0.33.0

func (s SchemaRefs) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type SchemaValidationOption added in v0.23.0

type SchemaValidationOption func(*schemaValidationSettings)

SchemaValidationOption describes options a user has when validating request / response bodies.

func DefaultsSet added in v0.95.0

func DefaultsSet(f func()) SchemaValidationOption

DefaultsSet executes the given callback (once) IFF schema validation set default values.

func DisablePatternValidation added in v0.101.0

func DisablePatternValidation() SchemaValidationOption

DisablePatternValidation setting makes Validate not return an error when validating patterns that are not supported by the Go regexp engine.

func DisableReadOnlyValidation added in v0.114.0

func DisableReadOnlyValidation() SchemaValidationOption

DisableReadOnlyValidation setting makes Validate not return an error when validating properties marked as read-only

func DisableWriteOnlyValidation added in v0.114.0

func DisableWriteOnlyValidation() SchemaValidationOption

DisableWriteOnlyValidation setting makes Validate not return an error when validating properties marked as write-only

func EnableFormatValidation added in v0.101.0

func EnableFormatValidation() SchemaValidationOption

EnableFormatValidation setting makes Validate not return an error when validating documents that mention schema formats that are not defined by the OpenAPIv3 specification.

func FailFast added in v0.23.0

func FailFast() SchemaValidationOption

FailFast returns schema validation errors quicker.

func MultiErrors added in v0.25.0

func MultiErrors() SchemaValidationOption

func SetSchemaErrorMessageCustomizer added in v0.109.0

func SetSchemaErrorMessageCustomizer(f func(err *SchemaError) string) SchemaValidationOption

SetSchemaErrorMessageCustomizer allows to override the schema error message. If the passed function returns an empty string, it returns to the previous Error() implementation.

Example
package main

import (
	"fmt"

	"github.com/getkin/kin-openapi/openapi3"
)

func main() {
	loader := openapi3.NewLoader()
	spc := `
components:
  schemas:
    Something:
      type: object
      properties:
        field:
          title: Some field
          type: string
`[1:]

	doc, err := loader.LoadFromData([]byte(spc))
	if err != nil {
		panic(err)
	}

	opt := openapi3.SetSchemaErrorMessageCustomizer(func(err *openapi3.SchemaError) string {
		return fmt.Sprintf(`field "%s" should be string`, err.Schema.Title)
	})

	err = doc.Components.Schemas["Something"].Value.Properties["field"].Value.VisitJSON(123, opt)

	fmt.Println(err.Error())

}
Output:

field "Some field" should be string

func SetSchemaRegexCompiler added in v0.128.0

func SetSchemaRegexCompiler(c RegexCompilerFunc) SchemaValidationOption

SetSchemaRegexCompiler allows to override the regex implementation used to validate field "pattern".

func VisitAsRequest added in v0.23.0

func VisitAsRequest() SchemaValidationOption

func VisitAsResponse added in v0.23.0

func VisitAsResponse() SchemaValidationOption

type Schemas added in v0.33.0

type Schemas map[string]*SchemaRef

func (Schemas) JSONLookup added in v0.33.0

func (m Schemas) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type SecurityRequirement

type SecurityRequirement map[string][]string

SecurityRequirement is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-requirement-object

func NewSecurityRequirement

func NewSecurityRequirement() SecurityRequirement

func (SecurityRequirement) Authenticate

func (security SecurityRequirement) Authenticate(provider string, scopes ...string) SecurityRequirement

func (*SecurityRequirement) Validate

func (security *SecurityRequirement) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if SecurityRequirement does not comply with the OpenAPI spec.

type SecurityRequirements

type SecurityRequirements []SecurityRequirement

func NewSecurityRequirements

func NewSecurityRequirements() *SecurityRequirements

func (SecurityRequirements) Validate

func (srs SecurityRequirements) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if SecurityRequirements does not comply with the OpenAPI spec.

func (*SecurityRequirements) With

func (srs *SecurityRequirements) With(securityRequirement SecurityRequirement) *SecurityRequirements

type SecurityScheme

type SecurityScheme struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Type             string      `json:"type,omitempty" yaml:"type,omitempty"`
	Description      string      `json:"description,omitempty" yaml:"description,omitempty"`
	Name             string      `json:"name,omitempty" yaml:"name,omitempty"`
	In               string      `json:"in,omitempty" yaml:"in,omitempty"`
	Scheme           string      `json:"scheme,omitempty" yaml:"scheme,omitempty"`
	BearerFormat     string      `json:"bearerFormat,omitempty" yaml:"bearerFormat,omitempty"`
	Flows            *OAuthFlows `json:"flows,omitempty" yaml:"flows,omitempty"`
	OpenIdConnectUrl string      `json:"openIdConnectUrl,omitempty" yaml:"openIdConnectUrl,omitempty"`
}

SecurityScheme is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object

func NewCSRFSecurityScheme

func NewCSRFSecurityScheme() *SecurityScheme

func NewJWTSecurityScheme

func NewJWTSecurityScheme() *SecurityScheme

func NewOIDCSecurityScheme added in v0.36.0

func NewOIDCSecurityScheme(oidcUrl string) *SecurityScheme

func NewSecurityScheme

func NewSecurityScheme() *SecurityScheme

func (SecurityScheme) MarshalJSON

func (ss SecurityScheme) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of SecurityScheme.

func (SecurityScheme) MarshalYAML added in v0.125.0

func (ss SecurityScheme) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of SecurityScheme.

func (*SecurityScheme) UnmarshalJSON

func (ss *SecurityScheme) UnmarshalJSON(data []byte) error

UnmarshalJSON sets SecurityScheme to a copy of data.

func (*SecurityScheme) Validate

func (ss *SecurityScheme) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if SecurityScheme does not comply with the OpenAPI spec.

func (*SecurityScheme) WithBearerFormat

func (ss *SecurityScheme) WithBearerFormat(value string) *SecurityScheme

func (*SecurityScheme) WithDescription

func (ss *SecurityScheme) WithDescription(value string) *SecurityScheme

func (*SecurityScheme) WithIn

func (ss *SecurityScheme) WithIn(value string) *SecurityScheme

func (*SecurityScheme) WithName

func (ss *SecurityScheme) WithName(value string) *SecurityScheme

func (*SecurityScheme) WithScheme

func (ss *SecurityScheme) WithScheme(value string) *SecurityScheme

func (*SecurityScheme) WithType

func (ss *SecurityScheme) WithType(value string) *SecurityScheme

type SecuritySchemeRef

type SecuritySchemeRef struct {
	// Extensions only captures fields starting with 'x-' as no other fields
	// are allowed by the openapi spec.
	Extensions map[string]any

	Ref   string
	Value *SecurityScheme
	// contains filtered or unexported fields
}

SecuritySchemeRef represents either a SecurityScheme or a $ref to a SecurityScheme. When serializing and both fields are set, Ref is preferred over Value.

func (*SecuritySchemeRef) CollectionName added in v0.126.0

func (x *SecuritySchemeRef) CollectionName() string

CollectionName returns the JSON string used for a collection of these components.

func (*SecuritySchemeRef) JSONLookup added in v0.33.0

func (x *SecuritySchemeRef) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (SecuritySchemeRef) MarshalJSON

func (x SecuritySchemeRef) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of SecuritySchemeRef.

func (SecuritySchemeRef) MarshalYAML added in v0.108.0

func (x SecuritySchemeRef) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of SecuritySchemeRef.

func (*SecuritySchemeRef) RefPath added in v0.126.0

func (x *SecuritySchemeRef) RefPath() *url.URL

RefPath returns the path of the $ref relative to the root document.

func (*SecuritySchemeRef) RefString added in v0.126.0

func (x *SecuritySchemeRef) RefString() string

RefString returns the $ref value.

func (*SecuritySchemeRef) UnmarshalJSON

func (x *SecuritySchemeRef) UnmarshalJSON(data []byte) error

UnmarshalJSON sets SecuritySchemeRef to a copy of data.

func (*SecuritySchemeRef) Validate

func (x *SecuritySchemeRef) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if SecuritySchemeRef does not comply with the OpenAPI spec.

type SecuritySchemes added in v0.33.0

type SecuritySchemes map[string]*SecuritySchemeRef

func (SecuritySchemes) JSONLookup added in v0.33.0

func (m SecuritySchemes) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

type SerializationMethod added in v0.2.0

type SerializationMethod struct {
	Style   string
	Explode bool
}

SerializationMethod describes a serialization method of HTTP request's parameters and body.

type Server

type Server struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	URL         string                     `json:"url" yaml:"url"` // Required
	Description string                     `json:"description,omitempty" yaml:"description,omitempty"`
	Variables   map[string]*ServerVariable `json:"variables,omitempty" yaml:"variables,omitempty"`
}

Server is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-object

func (*Server) BasePath added in v0.105.0

func (server *Server) BasePath() (string, error)

BasePath returns the base path extracted from the default values of variables, if any. Assumes a valid struct (per Validate()).

func (Server) MarshalJSON added in v0.40.0

func (server Server) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Server.

func (Server) MarshalYAML added in v0.125.0

func (server Server) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Server.

func (Server) MatchRawURL

func (server Server) MatchRawURL(input string) ([]string, string, bool)

func (Server) ParameterNames

func (server Server) ParameterNames() ([]string, error)

func (*Server) UnmarshalJSON added in v0.40.0

func (server *Server) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Server to a copy of data.

func (*Server) Validate

func (server *Server) Validate(ctx context.Context, opts ...ValidationOption) (err error)

Validate returns an error if Server does not comply with the OpenAPI spec.

type ServerVariable

type ServerVariable struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Enum        []string `json:"enum,omitempty" yaml:"enum,omitempty"`
	Default     string   `json:"default,omitempty" yaml:"default,omitempty"`
	Description string   `json:"description,omitempty" yaml:"description,omitempty"`
}

ServerVariable is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object

func (ServerVariable) MarshalJSON added in v0.43.0

func (serverVariable ServerVariable) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of ServerVariable.

func (ServerVariable) MarshalYAML added in v0.125.0

func (serverVariable ServerVariable) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of ServerVariable.

func (*ServerVariable) UnmarshalJSON added in v0.43.0

func (serverVariable *ServerVariable) UnmarshalJSON(data []byte) error

UnmarshalJSON sets ServerVariable to a copy of data.

func (*ServerVariable) Validate

func (serverVariable *ServerVariable) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if ServerVariable does not comply with the OpenAPI spec.

type Servers

type Servers []*Server

Servers is specified by OpenAPI/Swagger standard version 3.

func (Servers) BasePath added in v0.105.0

func (servers Servers) BasePath() (string, error)

BasePath returns the base path of the first server in the list, or /.

func (Servers) MatchURL

func (servers Servers) MatchURL(parsedURL *url.URL) (*Server, []string, string)

func (Servers) Validate

func (servers Servers) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Servers does not comply with the OpenAPI spec.

type SliceUniqueItemsChecker added in v0.3.0

type SliceUniqueItemsChecker func(items []any) bool

SliceUniqueItemsChecker is an function used to check if an given slice have unique items.

type StringFormatValidator added in v0.126.0

type StringFormatValidator = FormatValidator[string]

StringFormatValidator is a type alias for FormatValidator[string]

func NewRegexpFormatValidator added in v0.126.0

func NewRegexpFormatValidator(pattern string) StringFormatValidator

NewRegexpFormatValidator creates a new FormatValidator that uses a regular expression to validate the value.

type T added in v0.61.0

type T struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	OpenAPI      string               `json:"openapi" yaml:"openapi"` // Required
	Components   *Components          `json:"components,omitempty" yaml:"components,omitempty"`
	Info         *Info                `json:"info" yaml:"info"`   // Required
	Paths        *Paths               `json:"paths" yaml:"paths"` // Required
	Security     SecurityRequirements `json:"security,omitempty" yaml:"security,omitempty"`
	Servers      Servers              `json:"servers,omitempty" yaml:"servers,omitempty"`
	Tags         Tags                 `json:"tags,omitempty" yaml:"tags,omitempty"`
	ExternalDocs *ExternalDocs        `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
	// contains filtered or unexported fields
}

T is the root of an OpenAPI v3 document See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#openapi-object

func (*T) AddOperation added in v0.61.0

func (doc *T) AddOperation(path string, method string, operation *Operation)

func (*T) AddServer added in v0.61.0

func (doc *T) AddServer(server *Server)

func (*T) AddServers added in v0.121.0

func (doc *T) AddServers(servers ...*Server)

func (*T) InternalizeRefs added in v0.82.0

func (doc *T) InternalizeRefs(ctx context.Context, refNameResolver func(*T, ComponentRef) string)

InternalizeRefs removes all references to external files from the spec and moves them to the components section.

refNameResolver takes in references to returns a name to store the reference under locally. It MUST return a unique name for each reference type. A default implementation is provided that will suffice for most use cases. See the function documentation for more details.

Example:

doc.InternalizeRefs(context.Background(), nil)

func (*T) JSONLookup added in v0.121.0

func (doc *T) JSONLookup(token string) (any, error)

JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable

func (*T) MarshalJSON added in v0.61.0

func (doc *T) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of T.

func (*T) MarshalYAML added in v0.125.0

func (doc *T) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of T.

func (*T) UnmarshalJSON added in v0.61.0

func (doc *T) UnmarshalJSON(data []byte) error

UnmarshalJSON sets T to a copy of data.

func (*T) Validate added in v0.61.0

func (doc *T) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if T does not comply with the OpenAPI spec. Validations Options can be provided to modify the validation behavior.

type Tag

type Tag struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Name         string        `json:"name,omitempty" yaml:"name,omitempty"`
	Description  string        `json:"description,omitempty" yaml:"description,omitempty"`
	ExternalDocs *ExternalDocs `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
}

Tag is specified by OpenAPI/Swagger 3.0 standard. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#tag-object

func (Tag) MarshalJSON added in v0.43.0

func (t Tag) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of Tag.

func (Tag) MarshalYAML added in v0.125.0

func (t Tag) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of Tag.

func (*Tag) UnmarshalJSON added in v0.43.0

func (t *Tag) UnmarshalJSON(data []byte) error

UnmarshalJSON sets Tag to a copy of data.

func (*Tag) Validate added in v0.91.0

func (t *Tag) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Tag does not comply with the OpenAPI spec.

type Tags

type Tags []*Tag

Tags is specified by OpenAPI/Swagger 3.0 standard.

func (Tags) Get

func (tags Tags) Get(name string) *Tag

func (Tags) Validate added in v0.91.0

func (tags Tags) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if Tags does not comply with the OpenAPI spec.

type Types added in v0.124.0

type Types []string

func (*Types) Includes added in v0.124.0

func (pTypes *Types) Includes(typ string) bool

func (*Types) Is added in v0.124.0

func (types *Types) Is(typ string) bool

func (*Types) MarshalJSON added in v0.124.0

func (pTypes *Types) MarshalJSON() ([]byte, error)

func (*Types) MarshalYAML added in v0.124.0

func (pTypes *Types) MarshalYAML() (any, error)

func (*Types) Permits added in v0.124.0

func (types *Types) Permits(typ string) bool

func (*Types) Slice added in v0.124.0

func (types *Types) Slice() []string

func (*Types) UnmarshalJSON added in v0.124.0

func (types *Types) UnmarshalJSON(data []byte) error

type ValidationOption added in v0.101.0

type ValidationOption func(options *ValidationOptions)

ValidationOption allows the modification of how the OpenAPI document is validated.

func AllowExtensionsWithRef added in v0.126.0

func AllowExtensionsWithRef() ValidationOption

AllowExtensionsWithRef allows extensions (fields starting with 'x-') as siblings for $ref fields. This is the default. Non-extension fields are prohibited unless allowed explicitly with the AllowExtraSiblingFields option.

func AllowExtraSiblingFields added in v0.113.0

func AllowExtraSiblingFields(fields ...string) ValidationOption

AllowExtraSiblingFields called as AllowExtraSiblingFields("description") makes Validate not return an error when said field appears next to a $ref.

func DisableExamplesValidation added in v0.102.0

func DisableExamplesValidation() ValidationOption

DisableExamplesValidation disables all example schema validation. By default, all schema examples are validated.

func DisableSchemaDefaultsValidation added in v0.112.0

func DisableSchemaDefaultsValidation() ValidationOption

DisableSchemaDefaultsValidation disables schemas' default field validation. By default, schema default values are validated against their schema.

func DisableSchemaFormatValidation added in v0.111.0

func DisableSchemaFormatValidation() ValidationOption

DisableSchemaFormatValidation does the opposite of EnableSchemaFormatValidation. By default, schema format validation is disabled.

func DisableSchemaPatternValidation added in v0.101.0

func DisableSchemaPatternValidation() ValidationOption

DisableSchemaPatternValidation makes Validate not return an error when validating patterns that are not supported by the Go regexp engine.

func EnableExamplesValidation added in v0.111.0

func EnableExamplesValidation() ValidationOption

EnableExamplesValidation does the opposite of DisableExamplesValidation. By default, all schema examples are validated.

func EnableSchemaDefaultsValidation added in v0.112.0

func EnableSchemaDefaultsValidation() ValidationOption

EnableSchemaDefaultsValidation does the opposite of DisableSchemaDefaultsValidation. By default, schema default values are validated against their schema.

func EnableSchemaFormatValidation added in v0.101.0

func EnableSchemaFormatValidation() ValidationOption

EnableSchemaFormatValidation makes Validate not return an error when validating documents that mention schema formats that are not defined by the OpenAPIv3 specification. By default, schema format validation is disabled.

func EnableSchemaPatternValidation added in v0.111.0

func EnableSchemaPatternValidation() ValidationOption

EnableSchemaPatternValidation does the opposite of DisableSchemaPatternValidation. By default, schema pattern validation is enabled.

func ProhibitExtensionsWithRef added in v0.126.0

func ProhibitExtensionsWithRef() ValidationOption

ProhibitExtensionsWithRef causes the validation to return an error if extensions (fields starting with 'x-') are found as siblings for $ref fields. Non-extension fields are prohibited unless allowed explicitly with the AllowExtraSiblingFields option.

func SetRegexCompiler added in v0.128.0

func SetRegexCompiler(c RegexCompilerFunc) ValidationOption

SetRegexCompiler allows to override the regex implementation used to validate field "pattern".

type ValidationOptions added in v0.101.0

type ValidationOptions struct {
	// contains filtered or unexported fields
}

ValidationOptions provides configuration for validating OpenAPI documents.

type XML added in v0.92.0

type XML struct {
	Extensions map[string]any `json:"-" yaml:"-"`

	Name      string `json:"name,omitempty" yaml:"name,omitempty"`
	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
	Prefix    string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
	Attribute bool   `json:"attribute,omitempty" yaml:"attribute,omitempty"`
	Wrapped   bool   `json:"wrapped,omitempty" yaml:"wrapped,omitempty"`
}

XML is specified by OpenAPI/Swagger standard version 3. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object

func (XML) MarshalJSON added in v0.92.0

func (xml XML) MarshalJSON() ([]byte, error)

MarshalJSON returns the JSON encoding of XML.

func (XML) MarshalYAML added in v0.125.0

func (xml XML) MarshalYAML() (any, error)

MarshalYAML returns the YAML encoding of XML.

func (*XML) UnmarshalJSON added in v0.92.0

func (xml *XML) UnmarshalJSON(data []byte) error

UnmarshalJSON sets XML to a copy of data.

func (*XML) Validate added in v0.92.0

func (xml *XML) Validate(ctx context.Context, opts ...ValidationOption) error

Validate returns an error if XML does not comply with the OpenAPI spec.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL