Documentation ¶
Overview ¶
Package openapi3 parses and writes OpenAPI 3 specifications.
The OpenAPI 3.0 specification can be found at:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.md
Index ¶
- Constants
- Variables
- func BoolPtr(value bool) *bool
- func DefineStringFormat(name string, pattern string)
- func Float64Ptr(value float64) *float64
- func Int64Ptr(value int64) *int64
- func Uint64Ptr(value uint64) *uint64
- func ValidateIdentifier(value string) error
- type Callback
- type CallbackRef
- type Components
- type Contact
- type Content
- type Discriminator
- type Encoding
- func (encoding *Encoding) MarshalJSON() ([]byte, error)
- func (encoding *Encoding) SerializationMethod() *SerializationMethod
- func (encoding *Encoding) UnmarshalJSON(data []byte) error
- func (encoding *Encoding) Validate(c context.Context) error
- func (encoding *Encoding) WithHeader(name string, header *Header) *Encoding
- func (encoding *Encoding) WithHeaderRef(name string, ref *HeaderRef) *Encoding
- type Example
- type ExampleRef
- type ExtensionProps
- type ExternalDocs
- type Header
- type HeaderRef
- type Info
- type License
- type Link
- type LinkRef
- type MediaType
- func (mediaType *MediaType) MarshalJSON() ([]byte, error)
- func (mediaType *MediaType) UnmarshalJSON(data []byte) error
- func (mediaType *MediaType) Validate(c context.Context) error
- func (mediaType *MediaType) WithEncoding(name string, enc *Encoding) *MediaType
- func (mediaType *MediaType) WithExample(name string, value interface{}) *MediaType
- func (mediaType *MediaType) WithSchema(schema *Schema) *MediaType
- func (mediaType *MediaType) WithSchemaRef(schema *SchemaRef) *MediaType
- type OAuthFlow
- type OAuthFlows
- type Operation
- func (operation *Operation) AddParameter(p *Parameter)
- func (operation *Operation) AddResponse(status int, response *Response)
- func (operation *Operation) MarshalJSON() ([]byte, error)
- func (operation *Operation) UnmarshalJSON(data []byte) error
- func (operation *Operation) Validate(c context.Context) error
- type Parameter
- func (parameter *Parameter) MarshalJSON() ([]byte, error)
- func (parameter *Parameter) SerializationMethod() (*SerializationMethod, error)
- func (parameter *Parameter) UnmarshalJSON(data []byte) error
- func (parameter *Parameter) Validate(c context.Context) error
- func (parameter *Parameter) WithDescription(value string) *Parameter
- func (parameter *Parameter) WithRequired(value bool) *Parameter
- func (parameter *Parameter) WithSchema(value *Schema) *Parameter
- type ParameterRef
- type Parameters
- type PathItem
- func (pathItem *PathItem) GetOperation(method string) *Operation
- func (pathItem *PathItem) MarshalJSON() ([]byte, error)
- func (pathItem *PathItem) Operations() map[string]*Operation
- func (pathItem *PathItem) SetOperation(method string, operation *Operation)
- func (pathItem *PathItem) UnmarshalJSON(data []byte) error
- func (pathItem *PathItem) Validate(c context.Context) error
- type Paths
- type RequestBody
- func (requestBody *RequestBody) GetMediaType(mediaType string) *MediaType
- func (requestBody *RequestBody) MarshalJSON() ([]byte, error)
- func (requestBody *RequestBody) UnmarshalJSON(data []byte) error
- func (requestBody *RequestBody) Validate(c context.Context) error
- func (requestBody *RequestBody) WithContent(content Content) *RequestBody
- func (requestBody *RequestBody) WithDescription(value string) *RequestBody
- func (requestBody *RequestBody) WithJSONSchema(value *Schema) *RequestBody
- func (requestBody *RequestBody) WithJSONSchemaRef(value *SchemaRef) *RequestBody
- func (requestBody *RequestBody) WithRequired(value bool) *RequestBody
- type RequestBodyRef
- type Response
- func (response *Response) MarshalJSON() ([]byte, error)
- func (response *Response) UnmarshalJSON(data []byte) error
- func (response *Response) Validate(c context.Context) error
- func (response *Response) WithContent(content Content) *Response
- func (response *Response) WithDescription(value string) *Response
- func (response *Response) WithJSONSchema(schema *Schema) *Response
- func (response *Response) WithJSONSchemaRef(schema *SchemaRef) *Response
- type ResponseRef
- type Responses
- type Schema
- func NewAllOfSchema(schemas ...*Schema) *Schema
- func NewAnyOfSchema(schemas ...*Schema) *Schema
- func NewArraySchema() *Schema
- func NewBoolSchema() *Schema
- func NewBytesSchema() *Schema
- func NewDateTimeSchema() *Schema
- func NewFloat64Schema() *Schema
- func NewInt32Schema() *Schema
- func NewInt64Schema() *Schema
- func NewIntegerSchema() *Schema
- func NewObjectSchema() *Schema
- func NewOneOfSchema(schemas ...*Schema) *Schema
- func NewSchema() *Schema
- func NewStringSchema() *Schema
- func NewUuidSchema() *Schema
- func (schema *Schema) IsEmpty() bool
- func (schema *Schema) IsMatching(value interface{}) bool
- func (schema *Schema) IsMatchingJSONArray(value []interface{}) bool
- func (schema *Schema) IsMatchingJSONBoolean(value bool) bool
- func (schema *Schema) IsMatchingJSONNumber(value float64) bool
- func (schema *Schema) IsMatchingJSONObject(value map[string]interface{}) bool
- func (schema *Schema) IsMatchingJSONString(value string) bool
- func (schema *Schema) MarshalJSON() ([]byte, error)
- func (schema *Schema) NewRef() *SchemaRef
- func (schema *Schema) UnmarshalJSON(data []byte) error
- func (schema *Schema) Validate(c context.Context) error
- func (schema *Schema) VisitJSON(value interface{}) error
- func (schema *Schema) VisitJSONArray(value []interface{}) error
- func (schema *Schema) VisitJSONBoolean(value bool) error
- func (schema *Schema) VisitJSONNumber(value float64) error
- func (schema *Schema) VisitJSONObject(value map[string]interface{}) error
- func (schema *Schema) VisitJSONString(value string) error
- func (schema *Schema) WithAdditionalProperties(v *Schema) *Schema
- func (schema *Schema) WithAnyAdditionalProperties() *Schema
- func (schema *Schema) WithEnum(values ...interface{}) *Schema
- func (schema *Schema) WithExclusiveMax(value bool) *Schema
- func (schema *Schema) WithExclusiveMin(value bool) *Schema
- func (schema *Schema) WithFormat(value string) *Schema
- func (schema *Schema) WithItems(value *Schema) *Schema
- func (schema *Schema) WithLength(i int64) *Schema
- func (schema *Schema) WithLengthDecodedBase64(i int64) *Schema
- func (schema *Schema) WithMax(value float64) *Schema
- func (schema *Schema) WithMaxItems(i int64) *Schema
- func (schema *Schema) WithMaxLength(i int64) *Schema
- func (schema *Schema) WithMaxLengthDecodedBase64(i int64) *Schema
- func (schema *Schema) WithMaxProperties(i int64) *Schema
- func (schema *Schema) WithMin(value float64) *Schema
- func (schema *Schema) WithMinItems(i int64) *Schema
- func (schema *Schema) WithMinLength(i int64) *Schema
- func (schema *Schema) WithMinLengthDecodedBase64(i int64) *Schema
- func (schema *Schema) WithMinProperties(i int64) *Schema
- func (schema *Schema) WithNullable() *Schema
- func (schema *Schema) WithPattern(pattern string) *Schema
- func (schema *Schema) WithProperties(properties map[string]*Schema) *Schema
- func (schema *Schema) WithProperty(name string, propertySchema *Schema) *Schema
- func (schema *Schema) WithPropertyRef(name string, ref *SchemaRef) *Schema
- func (schema *Schema) WithUniqueItems(unique bool) *Schema
- type SchemaError
- type SchemaRef
- type SecurityRequirement
- type SecurityRequirements
- type SecurityScheme
- func (ss *SecurityScheme) MarshalJSON() ([]byte, error)
- func (ss *SecurityScheme) UnmarshalJSON(data []byte) error
- func (ss *SecurityScheme) Validate(c context.Context) error
- func (ss *SecurityScheme) WithBearerFormat(value string) *SecurityScheme
- func (ss *SecurityScheme) WithDescription(value string) *SecurityScheme
- func (ss *SecurityScheme) WithIn(value string) *SecurityScheme
- func (ss *SecurityScheme) WithName(value string) *SecurityScheme
- func (ss *SecurityScheme) WithScheme(value string) *SecurityScheme
- func (ss *SecurityScheme) WithType(value string) *SecurityScheme
- type SecuritySchemeRef
- type SerializationMethod
- type Server
- type ServerVariable
- type Servers
- type Swagger
- func (swagger *Swagger) AddOperation(path string, method string, operation *Operation)
- func (swagger *Swagger) AddServer(server *Server)
- func (swagger *Swagger) MarshalJSON() ([]byte, error)
- func (swagger *Swagger) UnmarshalJSON(data []byte) error
- func (swagger *Swagger) Validate(c context.Context) error
- type SwaggerLoader
- func (swaggerLoader *SwaggerLoader) LoadSwaggerFromData(data []byte) (*Swagger, error)
- func (swaggerLoader *SwaggerLoader) LoadSwaggerFromDataWithPath(data []byte, path *url.URL) (*Swagger, error)
- func (swaggerLoader *SwaggerLoader) LoadSwaggerFromFile(path string) (*Swagger, error)
- func (swaggerLoader *SwaggerLoader) LoadSwaggerFromURI(location *url.URL) (*Swagger, error)
- func (swaggerLoader *SwaggerLoader) ResolveRefsIn(swagger *Swagger, path *url.URL) (err error)
- type Tag
- type Tags
Examples ¶
Constants ¶
const ( ParameterInPath = "path" ParameterInQuery = "query" ParameterInHeader = "header" ParameterInCookie = "cookie" )
const ( SerializationSimple = "simple" SerializationLabel = "label" SerializationMatrix = "matrix" SerializationForm = "form" SerializationSpaceDelimited = "spaceDelimited" SerializationPipeDelimited = "pipeDelimited" SerializationDeepObject = "deepObject" )
const (
// FormatOfStringForUUIDOfRFC4122 is an optional predefined format for UUID v1-v5 as specified by RFC4122
FormatOfStringForUUIDOfRFC4122 = `^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$`
)
Variables ¶
var ( // SchemaErrorDetailsDisabled disables printing of details about schema errors. SchemaErrorDetailsDisabled = false ErrSchemaInputNaN = errors.New("NaN is not allowed") ErrSchemaInputInf = errors.New("Inf is not allowed") )
var SchemaStringFormats = make(map[string]*regexp.Regexp, 8)
Functions ¶
func DefineStringFormat ¶
func Float64Ptr ¶
Float64Ptr is a helper for defining OpenAPI schemas.
func ValidateIdentifier ¶
Types ¶
type CallbackRef ¶
func (*CallbackRef) MarshalJSON ¶
func (value *CallbackRef) MarshalJSON() ([]byte, error)
func (*CallbackRef) UnmarshalJSON ¶
func (value *CallbackRef) UnmarshalJSON(data []byte) error
type Components ¶
type Components struct { ExtensionProps Schemas map[string]*SchemaRef `json:"schemas,omitempty" yaml:"schemas,omitempty"` Parameters map[string]*ParameterRef `json:"parameters,omitempty" yaml:"parameters,omitempty"` Headers map[string]*HeaderRef `json:"headers,omitempty" yaml:"headers,omitempty"` RequestBodies map[string]*RequestBodyRef `json:"requestBodies,omitempty" yaml:"requestBodies,omitempty"` Responses map[string]*ResponseRef `json:"responses,omitempty" yaml:"responses,omitempty"` SecuritySchemes map[string]*SecuritySchemeRef `json:"securitySchemes,omitempty" yaml:"securitySchemes,omitempty"` Examples map[string]*ExampleRef `json:"examples,omitempty" yaml:"examples,omitempty"` Tags Tags `json:"tags,omitempty" yaml:"tags,omitempty"` Links map[string]*LinkRef `json:"links,omitempty" yaml:"links,omitempty"` Callbacks map[string]*CallbackRef `json:"callbacks,omitempty" yaml:"callbacks,omitempty"` }
Components is specified by OpenAPI/Swagger standard version 3.0.
func NewComponents ¶
func NewComponents() Components
func (*Components) MarshalJSON ¶
func (components *Components) MarshalJSON() ([]byte, error)
func (*Components) UnmarshalJSON ¶
func (components *Components) UnmarshalJSON(data []byte) error
type Contact ¶
type Contact struct { ExtensionProps 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.0.
func (*Contact) MarshalJSON ¶
func (*Contact) UnmarshalJSON ¶
type Content ¶
Content is specified by OpenAPI/Swagger 3.0 standard.
func NewContent ¶
func NewContent() Content
type Discriminator ¶ added in v0.2.1
type Discriminator struct { ExtensionProps PropertyName string `json:"propertyName" yaml:"propertyName"` Mapping map[string]string `json:"mapping,omitempty" yaml:"mapping,omitempty"` }
Discriminator is specified by OpenAPI/Swagger standard version 3.0.
func (*Discriminator) MarshalJSON ¶ added in v0.2.1
func (value *Discriminator) MarshalJSON() ([]byte, error)
func (*Discriminator) UnmarshalJSON ¶ added in v0.2.1
func (value *Discriminator) UnmarshalJSON(data []byte) error
type Encoding ¶
type Encoding struct { ExtensionProps ContentType string `json:"contentType,omitempty" yaml:"contentType,omitempty"` Headers map[string]*HeaderRef `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.
func NewEncoding ¶
func NewEncoding() *Encoding
func (*Encoding) MarshalJSON ¶
func (*Encoding) SerializationMethod ¶ added in v0.2.1
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) WithHeader ¶
type Example ¶
type Example struct { ExtensionProps Summary string `json:"summary,omitempty" yaml:"summary,omitempty"` Description string `json:"description,omitempty" yaml:"description,omitempty"` Value interface{} `json:"value,omitempty" yaml:"value,omitempty"` ExternalValue string `json:"externalValue,omitempty" yaml:"externalValue,omitempty"` }
Example is specified by OpenAPI/Swagger 3.0 standard.
func NewExample ¶
func NewExample(value interface{}) *Example
func (*Example) MarshalJSON ¶
func (*Example) UnmarshalJSON ¶
type ExampleRef ¶
func (*ExampleRef) MarshalJSON ¶
func (value *ExampleRef) MarshalJSON() ([]byte, error)
func (*ExampleRef) UnmarshalJSON ¶
func (value *ExampleRef) UnmarshalJSON(data []byte) error
type ExtensionProps ¶
type ExtensionProps struct {
Extensions map[string]interface{} `json:"-" yaml:"-"`
}
ExtensionProps provides support for OpenAPI extensions. It reads/writes all properties that begin with "x-".
func (*ExtensionProps) DecodeWith ¶
func (props *ExtensionProps) DecodeWith(decoder *jsoninfo.ObjectDecoder, value interface{}) error
DecodeWith will be invoked by package "jsoninfo"
func (*ExtensionProps) EncodeWith ¶
func (props *ExtensionProps) EncodeWith(encoder *jsoninfo.ObjectEncoder, value interface{}) error
EncodeWith will be invoked by package "jsoninfo"
type ExternalDocs ¶
type ExternalDocs struct { Description string `json:"description,omitempty"` URL string `json:"url,omitempty"` }
ExternalDocs is specified by OpenAPI/Swagger standard version 3.0.
type Header ¶
type Header struct { ExtensionProps // Optional description. Should use CommonMark syntax. Description string `json:"description,omitempty" yaml:"description,omitempty"` // Optional schema Schema *SchemaRef `json:"schema,omitempty" yaml:"schema,omitempty"` }
type Info ¶
type Info struct { ExtensionProps 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.0.
func (*Info) MarshalJSON ¶
func (*Info) UnmarshalJSON ¶
type License ¶
type License struct { ExtensionProps Name string `json:"name" yaml:"name"` // Required URL string `json:"url,omitempty" yaml:"url,omitempty"` }
License is specified by OpenAPI/Swagger standard version 3.0.
func (*License) MarshalJSON ¶
func (*License) UnmarshalJSON ¶
type Link ¶
type Link struct { ExtensionProps Description string `json:"description,omitempty" yaml:"description,omitempty"` Href string `json:"href,omitempty" yaml:"href,omitempty"` OperationID string `json:"operationId,omitempty" yaml:"operationId,omitempty"` Parameters map[string]interface{} `json:"parameters,omitempty" yaml:"parameters,omitempty"` Headers map[string]*Schema `json:"headers,omitempty" yaml:"headers,omitempty"` }
Link is specified by OpenAPI/Swagger standard version 3.0.
func (*Link) MarshalJSON ¶
func (*Link) UnmarshalJSON ¶
type MediaType ¶
type MediaType struct { ExtensionProps Schema *SchemaRef `json:"schema,omitempty" yaml:"schema,omitempty"` Example interface{} `json:"example,omitempty" yaml:"example,omitempty"` Examples map[string]*ExampleRef `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.
func NewMediaType ¶
func NewMediaType() *MediaType
func (*MediaType) MarshalJSON ¶
func (*MediaType) UnmarshalJSON ¶
func (*MediaType) WithEncoding ¶
func (*MediaType) WithExample ¶
func (*MediaType) WithSchema ¶
func (*MediaType) WithSchemaRef ¶
type OAuthFlow ¶
type OAuthFlow struct { ExtensionProps 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"` }
func (*OAuthFlow) MarshalJSON ¶
func (*OAuthFlow) UnmarshalJSON ¶
type OAuthFlows ¶
type OAuthFlows struct { ExtensionProps 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"` }
func (*OAuthFlows) MarshalJSON ¶
func (flows *OAuthFlows) MarshalJSON() ([]byte, error)
func (*OAuthFlows) UnmarshalJSON ¶
func (flows *OAuthFlows) UnmarshalJSON(data []byte) error
type Operation ¶
type Operation struct { ExtensionProps // 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 map[string]*CallbackRef `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"` }
Operation represents "operation" specified by" OpenAPI/Swagger 3.0 standard.
func NewOperation ¶
func NewOperation() *Operation
func (*Operation) AddParameter ¶
func (*Operation) AddResponse ¶
func (*Operation) MarshalJSON ¶
func (*Operation) UnmarshalJSON ¶
type Parameter ¶
type Parameter struct { ExtensionProps 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 interface{} `json:"example,omitempty" yaml:"example,omitempty"` Examples map[string]*ExampleRef `json:"examples,omitempty" yaml:"examples,omitempty"` Content Content `json:"content,omitempty" yaml:"content,omitempty"` }
Parameter is specified by OpenAPI/Swagger 3.0 standard.
func NewCookieParameter ¶
func NewHeaderParameter ¶
func NewPathParameter ¶
func NewQueryParameter ¶
func (*Parameter) MarshalJSON ¶
func (*Parameter) SerializationMethod ¶ added in v0.2.1
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) WithDescription ¶
func (*Parameter) WithRequired ¶
func (*Parameter) WithSchema ¶
type ParameterRef ¶
func (*ParameterRef) MarshalJSON ¶
func (value *ParameterRef) MarshalJSON() ([]byte, error)
func (*ParameterRef) UnmarshalJSON ¶
func (value *ParameterRef) UnmarshalJSON(data []byte) error
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
type PathItem ¶
type PathItem struct { ExtensionProps 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"` }
func (*PathItem) GetOperation ¶
func (*PathItem) MarshalJSON ¶
func (*PathItem) Operations ¶
func (*PathItem) SetOperation ¶
func (*PathItem) UnmarshalJSON ¶
type Paths ¶
Paths is specified by OpenAPI/Swagger standard version 3.0.
func (Paths) Find ¶
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.
type RequestBody ¶
type RequestBody struct { ExtensionProps Description string `json:"description,omitempty" yaml:"description,omitempty"` Required bool `json:"required,omitempty" yaml:"required,omitempty"` Content Content `json:"content,omitempty" yaml:"content,omitempty"` }
RequestBody is specified by OpenAPI/Swagger 3.0 standard.
func NewRequestBody ¶
func NewRequestBody() *RequestBody
func (*RequestBody) GetMediaType ¶
func (requestBody *RequestBody) GetMediaType(mediaType string) *MediaType
func (*RequestBody) MarshalJSON ¶
func (requestBody *RequestBody) MarshalJSON() ([]byte, error)
func (*RequestBody) UnmarshalJSON ¶
func (requestBody *RequestBody) UnmarshalJSON(data []byte) error
func (*RequestBody) WithContent ¶
func (requestBody *RequestBody) WithContent(content Content) *RequestBody
func (*RequestBody) WithDescription ¶
func (requestBody *RequestBody) WithDescription(value string) *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
type RequestBodyRef ¶
type RequestBodyRef struct { Ref string Value *RequestBody }
func (*RequestBodyRef) MarshalJSON ¶
func (value *RequestBodyRef) MarshalJSON() ([]byte, error)
func (*RequestBodyRef) UnmarshalJSON ¶
func (value *RequestBodyRef) UnmarshalJSON(data []byte) error
type Response ¶
type Response struct { ExtensionProps Description string `json:"description,omitempty" yaml:"description,omitempty"` Headers map[string]*HeaderRef `json:"headers,omitempty" yaml:"headers,omitempty"` Content Content `json:"content,omitempty" yaml:"content,omitempty"` Links map[string]*LinkRef `json:"links,omitempty" yaml:"links,omitempty"` }
Response is specified by OpenAPI/Swagger 3.0 standard.
func NewResponse ¶
func NewResponse() *Response
func (*Response) MarshalJSON ¶
func (*Response) UnmarshalJSON ¶
func (*Response) WithContent ¶
func (*Response) WithDescription ¶
func (*Response) WithJSONSchema ¶
func (*Response) WithJSONSchemaRef ¶
type ResponseRef ¶
func (*ResponseRef) MarshalJSON ¶
func (value *ResponseRef) MarshalJSON() ([]byte, error)
func (*ResponseRef) UnmarshalJSON ¶
func (value *ResponseRef) UnmarshalJSON(data []byte) error
type Responses ¶
type Responses map[string]*ResponseRef
Responses is specified by OpenAPI/Swagger 3.0 standard.
func NewResponses ¶
func NewResponses() Responses
func (Responses) Default ¶
func (responses Responses) Default() *ResponseRef
func (Responses) Get ¶
func (responses Responses) Get(status int) *ResponseRef
type Schema ¶
type Schema struct { ExtensionProps OneOf []*SchemaRef `json:"oneOf,omitempty" yaml:"oneOf,omitempty"` AnyOf []*SchemaRef `json:"anyOf,omitempty" yaml:"anyOf,omitempty"` AllOf []*SchemaRef `json:"allOf,omitempty" yaml:"allOf,omitempty"` Not *SchemaRef `json:"not,omitempty" yaml:"not,omitempty"` Type string `json:"type,omitempty" yaml:"type,omitempty"` Format string `json:"format,omitempty" yaml:"format,omitempty"` Description string `json:"description,omitempty" yaml:"description,omitempty"` Enum []interface{} `json:"enum,omitempty" yaml:"enum,omitempty"` Default interface{} `json:"default,omitempty" yaml:"default,omitempty"` Example interface{} `json:"example,omitempty" yaml:"example,omitempty"` ExternalDocs interface{} `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"` // Object-related, here for struct compactness AdditionalPropertiesAllowed *bool `json:"-" multijson:"additionalProperties,omitempty" yaml:"-"` // 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"` XML interface{} `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 map[string]*SchemaRef `json:"properties,omitempty" yaml:"properties,omitempty"` MinProps uint64 `json:"minProperties,omitempty" yaml:"minProperties,omitempty"` MaxProps *uint64 `json:"maxProperties,omitempty" yaml:"maxProperties,omitempty"` AdditionalProperties *SchemaRef `json:"-" multijson:"additionalProperties,omitempty" yaml:"-"` Discriminator *Discriminator `json:"discriminator,omitempty" yaml:"discriminator,omitempty"` PatternProperties string `json:"patternProperties,omitempty" yaml:"patternProperties,omitempty"` // contains filtered or unexported fields }
Schema is specified by OpenAPI/Swagger 3.0 standard.
func NewAllOfSchema ¶
func NewAnyOfSchema ¶
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 NewStringSchema ¶
func NewStringSchema() *Schema
func NewUuidSchema ¶ added in v0.2.1
func NewUuidSchema() *Schema
func (*Schema) IsMatching ¶
func (*Schema) IsMatchingJSONArray ¶
func (*Schema) IsMatchingJSONBoolean ¶
func (*Schema) IsMatchingJSONNumber ¶
func (*Schema) IsMatchingJSONObject ¶
func (*Schema) IsMatchingJSONString ¶
func (*Schema) MarshalJSON ¶
func (*Schema) UnmarshalJSON ¶
func (*Schema) VisitJSONArray ¶
func (*Schema) VisitJSONBoolean ¶
func (*Schema) VisitJSONNumber ¶
func (*Schema) VisitJSONObject ¶
func (*Schema) VisitJSONString ¶
func (*Schema) WithAdditionalProperties ¶
func (*Schema) WithAnyAdditionalProperties ¶
func (*Schema) WithExclusiveMax ¶
func (*Schema) WithExclusiveMin ¶
func (*Schema) WithFormat ¶
func (*Schema) WithLength ¶
func (*Schema) WithLengthDecodedBase64 ¶
func (*Schema) WithMaxItems ¶
func (*Schema) WithMaxLength ¶
func (*Schema) WithMaxLengthDecodedBase64 ¶
func (*Schema) WithMaxProperties ¶
func (*Schema) WithMinItems ¶
func (*Schema) WithMinLength ¶
func (*Schema) WithMinLengthDecodedBase64 ¶
func (*Schema) WithMinProperties ¶
func (*Schema) WithNullable ¶
func (*Schema) WithPattern ¶
func (*Schema) WithProperties ¶
func (*Schema) WithProperty ¶
func (*Schema) WithPropertyRef ¶
func (*Schema) WithUniqueItems ¶
type SchemaError ¶
type SchemaError struct { Value interface{} Schema *Schema SchemaField string Reason string Origin error // contains filtered or unexported fields }
func (*SchemaError) Error ¶
func (err *SchemaError) Error() string
func (*SchemaError) JSONPointer ¶
func (err *SchemaError) JSONPointer() []string
type SchemaRef ¶
func NewSchemaRef ¶
func (*SchemaRef) MarshalJSON ¶
func (*SchemaRef) UnmarshalJSON ¶
type SecurityRequirement ¶
func NewSecurityRequirement ¶
func NewSecurityRequirement() SecurityRequirement
func (SecurityRequirement) Authenticate ¶
func (security SecurityRequirement) Authenticate(provider string, scopes ...string) SecurityRequirement
type SecurityRequirements ¶
type SecurityRequirements []SecurityRequirement
func NewSecurityRequirements ¶
func NewSecurityRequirements() *SecurityRequirements
func (SecurityRequirements) Validate ¶
func (srs SecurityRequirements) Validate(c context.Context) error
func (*SecurityRequirements) With ¶
func (srs *SecurityRequirements) With(securityRequirement SecurityRequirement) *SecurityRequirements
type SecurityScheme ¶
type SecurityScheme struct { ExtensionProps 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"` }
func NewCSRFSecurityScheme ¶
func NewCSRFSecurityScheme() *SecurityScheme
func NewJWTSecurityScheme ¶
func NewJWTSecurityScheme() *SecurityScheme
func NewSecurityScheme ¶
func NewSecurityScheme() *SecurityScheme
func (*SecurityScheme) MarshalJSON ¶
func (ss *SecurityScheme) MarshalJSON() ([]byte, error)
func (*SecurityScheme) UnmarshalJSON ¶
func (ss *SecurityScheme) UnmarshalJSON(data []byte) error
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 { Ref string Value *SecurityScheme }
func (*SecuritySchemeRef) MarshalJSON ¶
func (value *SecuritySchemeRef) MarshalJSON() ([]byte, error)
func (*SecuritySchemeRef) UnmarshalJSON ¶
func (value *SecuritySchemeRef) UnmarshalJSON(data []byte) error
type SerializationMethod ¶ added in v0.2.1
SerializationMethod describes a serialization method of HTTP request's parameters and body.
type Server ¶
type Server struct { URL string `json:"url" yaml:"url"` 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.0.
func (Server) ParameterNames ¶
type ServerVariable ¶
type ServerVariable struct { Enum []interface{} `json:"enum,omitempty" yaml:"enum,omitempty"` Default interface{} `json:"default,omitempty" yaml:"default,omitempty"` Description string `json:"description,omitempty" yaml:"description,omitempty"` }
ServerVariable is specified by OpenAPI/Swagger standard version 3.0.
type Servers ¶
type Servers []*Server
Servers is specified by OpenAPI/Swagger standard version 3.0.
type Swagger ¶
type Swagger struct { ExtensionProps OpenAPI string `json:"openapi" yaml:"openapi"` // Required Info *Info `json:"info" yaml:"info"` // Required Servers Servers `json:"servers,omitempty" yaml:"servers,omitempty"` Paths Paths `json:"paths" yaml:"paths"` // Required Components Components `json:"components,omitempty" yaml:"components,omitempty"` Security SecurityRequirements `json:"security,omitempty" yaml:"security,omitempty"` ExternalDocs *ExternalDocs `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"` }
func (*Swagger) AddOperation ¶
func (*Swagger) MarshalJSON ¶
func (*Swagger) UnmarshalJSON ¶
type SwaggerLoader ¶
type SwaggerLoader struct { IsExternalRefsAllowed bool Context context.Context LoadSwaggerFromURIFunc func(loader *SwaggerLoader, url *url.URL) (*Swagger, error) // contains filtered or unexported fields }
Example ¶
package main import ( "fmt" "github.com/colin-z/kin-openapi/openapi3" ) func main() { source := `{"info":{"description":"An API"}}` swagger, err := openapi3.NewSwaggerLoader().LoadSwaggerFromData([]byte(source)) if err != nil { panic(err) } fmt.Print(swagger.Info.Description) }
Output: An API
func NewSwaggerLoader ¶
func NewSwaggerLoader() *SwaggerLoader
func (*SwaggerLoader) LoadSwaggerFromData ¶
func (swaggerLoader *SwaggerLoader) LoadSwaggerFromData(data []byte) (*Swagger, error)
func (*SwaggerLoader) LoadSwaggerFromDataWithPath ¶ added in v0.2.1
func (*SwaggerLoader) LoadSwaggerFromFile ¶
func (swaggerLoader *SwaggerLoader) LoadSwaggerFromFile(path string) (*Swagger, error)
func (*SwaggerLoader) LoadSwaggerFromURI ¶
func (swaggerLoader *SwaggerLoader) LoadSwaggerFromURI(location *url.URL) (*Swagger, error)
func (*SwaggerLoader) ResolveRefsIn ¶
func (swaggerLoader *SwaggerLoader) ResolveRefsIn(swagger *Swagger, path *url.URL) (err error)
type Tag ¶
type Tag struct { 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.
Source Files ¶
- callback.go
- components.go
- content.go
- discriminator.go
- doc.go
- encoding.go
- examples.go
- extension.go
- external_docs.go
- header.go
- info.go
- link.go
- media_type.go
- operation.go
- parameter.go
- path_item.go
- paths.go
- refs.go
- request_body.go
- response.go
- schema.go
- schema_formats.go
- security_requirements.go
- security_scheme.go
- serialization_method.go
- server.go
- swagger.go
- swagger_loader.go
- tag.go