openapi

package
v0.3.3 Latest Latest
Warning

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

Go to latest
Published: May 22, 2023 License: MIT Imports: 12 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	INTEGER = TYPE{
		Type: "integer",
	}
	//INT32 signed 32 bits
	INT32 = TYPE{
		Type:   "integer",
		Format: "int32",
	}
	//INT64 signed 64 bits (a.k.a long)
	INT64 = TYPE{
		Type:   "integer",
		Format: "int64",
	}
	FLOAT = TYPE{
		Type:   "number",
		Format: "float",
	}
	DOUBLE = TYPE{
		Type:   "number",
		Format: "double",
	}
	STRING = TYPE{
		Type: "string",
	}
	BOOLEAN = TYPE{
		Type: "boolean",
	}
	//BINARY any sequence of octets
	BINARY = TYPE{
		Type:   "string",
		Format: "binary",
	}
	//BYTE base64 encoded characters
	BYTE = TYPE{
		Type:   "string",
		Format: "byte",
	}
	//DATE As defined by full-date - RFC3339
	DATE = TYPE{
		Type:   "string",
		Format: "date",
	}
	//DATETIME As defined by date-time - RFC3339
	DATETIME = TYPE{
		Type:   "string",
		Format: "date-time",
	}
	//PASSWORD A hint to UIs to obscure input.
	PASSWORD = TYPE{
		Type:   "string",
		Format: "password",
	}
)

Functions

func GetPathFromBuilder

func GetPathFromBuilder(p *PathBuilder) string

Types

type API

type API struct {
	OpenAPI
	// contains filtered or unexported fields
}

func NewOpenAPI

func NewOpenAPI() *API

func (*API) AddExternalDocs

func (a *API) AddExternalDocs(url, externalDescription string)

func (*API) AddPath

func (a *API) AddPath(method string, pathBuilder *PathBuilder, desc PathDesc) error

func (*API) AddServer

func (a *API) AddServer(url, description string)

func (*API) AddTag

func (a *API) AddTag(name, description string)

func (*API) AddTagExternalDocs

func (a *API) AddTagExternalDocs(name, description string, url, externalDescription string)

func (*API) ChiAuthMiddleware

func (a *API) ChiAuthMiddleware(isAllowed func(authName string, scopes []string, r *http.Request) bool) func(next http.Handler) http.Handler

func (*API) DefaultResponse

func (a *API) DefaultResponse(response *MethodResponse)

func (*API) Delete

func (a *API) Delete(option *Delete) error

func (*API) Get

func (a *API) Get(option *Get) error

func (*API) GetHandleFunc

func (a *API) GetHandleFunc() []HandlerConfig

func (*API) Head

func (a *API) Head(option *Patch) error

func (*API) OpenAPIHandlerFunc

func (a *API) OpenAPIHandlerFunc() (http.HandlerFunc, error)

func (*API) Options

func (a *API) Options(option *Options) error

func (*API) Patch

func (a *API) Patch(option *Patch) error

func (*API) Post

func (a *API) Post(option *Post) error

func (*API) Print

func (a *API) Print()

func (*API) Put

func (a *API) Put(option *Put) error

func (*API) ToJSON

func (a *API) ToJSON() ([]byte, error)

func (*API) ToYAML

func (a *API) ToYAML() ([]byte, error)

func (*API) Trace

func (a *API) Trace(option *Trace) error

func (*API) Validate

func (a *API) Validate() error

func (*API) WithApiKey

func (a *API) WithApiKey(key string, in InTypes, name string) error

func (*API) WithBasicAuth

func (a *API) WithBasicAuth(key string) error

func (*API) WithBearerAuth

func (a *API) WithBearerAuth(key, scheme, bearerFormat string) error

func (*API) WithOpenIDConnect

func (a *API) WithOpenIDConnect(key string, openIdConnectUrl string) error

type ApiKeyAuth

type ApiKeyAuth struct {
	Type string  `json:"type,omitempty" yaml:"type,omitempty" validate:"required"`
	In   InTypes `json:"in,omitempty" yaml:"in,omitempty" validate:"required"`
	Name string  `json:"name,omitempty" yaml:"name,omitempty" validate:"required"`
}

type BasicAuth

type BasicAuth struct {
	Type   string `json:"type,omitempty" yaml:"type,omitempty" validate:"required"`
	Scheme string `json:"scheme,omitempty" yaml:"scheme,omitempty" validate:"required"`
}

type BearerAuth

type BearerAuth struct {
	Type         string `json:"type,omitempty" yaml:"type,omitempty" validate:"required"`
	Scheme       string `json:"scheme,omitempty" yaml:"scheme,omitempty" validate:"required"`
	BearerFormat string `json:"bearerFormat,omitempty" yaml:"bearerFormat,omitempty" validate:"required"`
}

type Components

type Components struct {
	SecuritySchemes map[string]interface{} `json:"securitySchemes,omitempty" yaml:"securitySchemes,omitempty"`
	Schemas         map[string]interface{} `json:"schemas,omitempty" yaml:"schemas,omitempty"`
}

type DataType

type DataType struct {
	Type   string
	Format string
	Enum   *[]string
}

type Delete

type Delete struct {
	Summary        string
	Description    string
	OperationID    string
	Tags           []string
	Authentication map[string][]string
	Response       map[string]MethodResponse
	Path           *PathBuilder
	Headers        []Parameter
	Extensions
	http.HandlerFunc
}

func (*Delete) GetAuthentication

func (m *Delete) GetAuthentication(key string) (bool, []string)

func (*Delete) GetDescription

func (m *Delete) GetDescription() string

func (*Delete) GetExtensions added in v0.3.0

func (m *Delete) GetExtensions() map[string]interface{}

func (*Delete) GetHandlerFunc

func (m *Delete) GetHandlerFunc() http.HandlerFunc

func (*Delete) GetHeaders

func (m *Delete) GetHeaders() []Parameter

func (*Delete) GetOperationID

func (m *Delete) GetOperationID() string

func (*Delete) GetRequestBodies added in v0.2.0

func (m *Delete) GetRequestBodies() *RequestBodies

func (*Delete) GetResponse

func (m *Delete) GetResponse(s string) (string, interface{})

func (*Delete) GetSummary

func (m *Delete) GetSummary() string

func (*Delete) GetTags

func (m *Delete) GetTags() []string

type Enum

type Enum interface {
	GetValues() []interface{}
}

type Extensions added in v0.3.0

type Extensions map[string]interface{}

type ExternalDocs

type ExternalDocs struct {
	Description string `json:"description,omitempty"`
	URL         string `json:"url,omitempty"`
}

type FileUpload added in v0.2.0

type FileUpload string
const (
	FileUploadBinary FileUpload = "binary"
	FileUploadBase64 FileUpload = "base64"
)

type GenericParameter

type GenericParameter struct {
	Name        string      `json:"name,omitempty" yaml:"name,omitempty"`
	In          string      `json:"in,omitempty" yaml:"in,omitempty"`
	Description string      `json:"description,omitempty" yaml:"description,omitempty"`
	Deprecated  bool        `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
	Required    bool        `json:"required,omitempty" yaml:"required,omitempty"`
	Example     interface{} `json:"example,omitempty" yaml:"example,omitempty"`
	Schema      *SchemaRef  `json:"schema,omitempty" yaml:"schema,omitempty"`
}

type Get

type Get struct {
	Summary        string
	Description    string
	OperationID    string
	Tags           []string
	Authentication map[string][]string
	Response       map[string]MethodResponse
	Path           *PathBuilder
	Headers        []Parameter
	Extensions
	http.HandlerFunc
}

func (*Get) GetAuthentication

func (m *Get) GetAuthentication(key string) (bool, []string)

func (*Get) GetDescription

func (m *Get) GetDescription() string

func (*Get) GetExtensions added in v0.3.0

func (m *Get) GetExtensions() map[string]interface{}

func (*Get) GetHandlerFunc

func (m *Get) GetHandlerFunc() http.HandlerFunc

func (*Get) GetHeaders

func (m *Get) GetHeaders() []Parameter

func (*Get) GetOperationID

func (m *Get) GetOperationID() string

func (*Get) GetRequestBodies added in v0.2.0

func (m *Get) GetRequestBodies() *RequestBodies

func (*Get) GetResponse

func (m *Get) GetResponse(s string) (string, interface{})

func (*Get) GetSummary

func (m *Get) GetSummary() string

func (*Get) GetTags

func (m *Get) GetTags() []string

type GetDescription

type GetDescription interface {
	GetDescription() string
}

type HandlerConfig

type HandlerConfig struct {
	Method      string
	Path        string
	HandlerFunc http.HandlerFunc
	AuthTypes   map[string][]string
}
type Head struct {
	Summary        string
	Description    string
	OperationID    string
	Tags           []string
	Authentication map[string][]string
	Path           *PathBuilder
	Headers        []Parameter
	Extensions
	http.HandlerFunc
}

func (*Head) GetAuthentication

func (m *Head) GetAuthentication(key string) (bool, []string)

func (*Head) GetDescription

func (m *Head) GetDescription() string

func (*Head) GetExtensions added in v0.3.0

func (m *Head) GetExtensions() map[string]interface{}

func (*Head) GetHandlerFunc

func (m *Head) GetHandlerFunc() http.HandlerFunc

func (*Head) GetHeaders

func (m *Head) GetHeaders() []Parameter

func (*Head) GetOperationID

func (m *Head) GetOperationID() string

func (*Head) GetRequestBodies added in v0.2.0

func (m *Head) GetRequestBodies() *RequestBodies

func (*Head) GetResponse

func (m *Head) GetResponse(s string) (string, interface{})

func (*Head) GetSummary

func (m *Head) GetSummary() string

func (*Head) GetTags

func (m *Head) GetTags() []string

type InTypes

type InTypes string
const (
	HEADER InTypes = "header"
	QUERY  InTypes = "query"
	COOKIE InTypes = "cookie"
)

type Info

type Info struct {
	Title          string `json:"title" yaml:"title" validate:"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" validate:"required"` // Required
}

type MediaType

type MediaType struct {
	Schema  interface{} `json:"schema,omitempty" yaml:"schema,omitempty"`
	Example interface{} `json:"example,omitempty" yaml:"example,omitempty"`
}

type MethodResponse

type MethodResponse struct {
	Description string
	Value       interface{}
}

type OpenAPI

type OpenAPI struct {
	OpenAPI      string `json:"openapi" yaml:"openapi" validate:"required"`
	Info         `json:"info" yaml:"info" validate:"required"`
	Servers      []*Server            `json:"servers,omitempty" yaml:"servers,omitempty"`
	Paths        map[string]*PathItem `json:"paths" yaml:"paths"  validate:"required"`
	Components   *Components          `json:"components" yaml:"components"`
	Tags         []*Tag               `json:"tags,omitempty" yaml:"tags,omitempty"`
	ExternalDocs *ExternalDocs        `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
}

type OpenIDConnectAuth

type OpenIDConnectAuth struct {
	Type             string `json:"type,omitempty" yaml:"type,omitempty" validate:"required"`
	OpenIdConnectUrl string `json:"openIdConnectUrl,omitempty" yaml:"openIdConnectUrl,omitempty" validate:"required"`
}

type Operation

type Operation struct {
	Tags        []string              `json:"tags,omitempty" yaml:"tags,omitempty"`
	Summary     string                `json:"summary,omitempty" yaml:"summary,omitempty"`
	Description string                `json:"description,omitempty" yaml:"description,omitempty"`
	OperationID string                `json:"operationId,omitempty" yaml:"operationId,omitempty"`
	Deprecated  bool                  `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
	Responses   map[string]*Response  `json:"responses" yaml:"responses" validate:"required"`
	Security    []map[string][]string `json:"security,omitempty" yaml:"security,omitempty"`
	RequestBody *RequestBody          `json:"requestBody,omitempty" yaml:"requestBody,omitempty"`
	Parameters  []GenericParameter    `json:"parameters,omitempty" yaml:"parameters,omitempty"`
	// contains filtered or unexported fields
}

func (*Operation) MarshalJSON added in v0.3.0

func (u *Operation) MarshalJSON() ([]byte, error)

type Options

type Options struct {
	Summary        string
	Description    string
	OperationID    string
	Tags           []string
	Authentication map[string][]string
	Response       map[string]MethodResponse
	Path           *PathBuilder
	Headers        []Parameter
	Extensions
	http.HandlerFunc
}

func (*Options) GetAuthentication

func (m *Options) GetAuthentication(key string) (bool, []string)

func (*Options) GetDescription

func (m *Options) GetDescription() string

func (*Options) GetExtensions added in v0.3.0

func (m *Options) GetExtensions() map[string]interface{}

func (*Options) GetHandlerFunc

func (m *Options) GetHandlerFunc() http.HandlerFunc

func (*Options) GetHeaders

func (m *Options) GetHeaders() []Parameter

func (*Options) GetOperationID

func (m *Options) GetOperationID() string

func (*Options) GetRequestBodies added in v0.2.0

func (m *Options) GetRequestBodies() *RequestBodies

func (*Options) GetResponse

func (m *Options) GetResponse(s string) (string, interface{})

func (*Options) GetSummary

func (m *Options) GetSummary() string

func (*Options) GetTags

func (m *Options) GetTags() []string

type Parameter

type Parameter struct {
	Description string
	Name        string
	Required    bool
	Type        TYPE
	IsArray     bool
	Style       Style
	Explode     bool
}

type ParameterListOption added in v0.1.0

type ParameterListOption struct {
	Explode bool
	Style   Style
}

type Patch

type Patch struct {
	Summary        string
	Description    string
	OperationID    string
	Tags           []string
	Authentication map[string][]string
	Response       map[string]MethodResponse
	Path           *PathBuilder
	Headers        []Parameter
	// Deprecated: Please migrate to RequestBodies
	RequestBody   interface{}
	RequestBodies *RequestBodies
	Extensions
	http.HandlerFunc
}

func (*Patch) GetAuthentication

func (m *Patch) GetAuthentication(key string) (bool, []string)

func (*Patch) GetDescription

func (m *Patch) GetDescription() string

func (*Patch) GetExtensions added in v0.3.0

func (m *Patch) GetExtensions() map[string]interface{}

func (*Patch) GetHandlerFunc

func (m *Patch) GetHandlerFunc() http.HandlerFunc

func (*Patch) GetHeaders

func (m *Patch) GetHeaders() []Parameter

func (*Patch) GetOperationID

func (m *Patch) GetOperationID() string

func (*Patch) GetRequestBodies added in v0.2.0

func (m *Patch) GetRequestBodies() *RequestBodies

func (*Patch) GetResponse

func (m *Patch) GetResponse(s string) (string, interface{})

func (*Patch) GetSummary

func (m *Patch) GetSummary() string

func (*Patch) GetTags

func (m *Patch) GetTags() []string

type PathBuilder

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

func NewPathBuilder

func NewPathBuilder() *PathBuilder

func (*PathBuilder) Add

func (p *PathBuilder) Add(segment string) *PathBuilder

func (*PathBuilder) AddParameter

func (p *PathBuilder) AddParameter(name string, t TYPE, description string) *PathBuilder

func (*PathBuilder) AddParameterList added in v0.1.0

func (p *PathBuilder) AddParameterList(name string, t TYPE, description string, option *ParameterListOption) *PathBuilder

func (*PathBuilder) WithQueryParameter

func (p *PathBuilder) WithQueryParameter(name string, t TYPE, description string, required bool) *PathBuilder

func (*PathBuilder) WithQueryParameterList added in v0.1.0

func (p *PathBuilder) WithQueryParameterList(name string, t TYPE, description string, required bool, option *ParameterListOption) *PathBuilder

type PathDesc

type PathDesc interface {
	GetSummary() string
	GetOperationID() string
	GetDescription
	GetResponse(string) (string, interface{})
	GetAuthentication(key string) (bool, []string)
	GetHeaders() []Parameter
	GetRequestBodies() *RequestBodies
	GetExtensions() map[string]interface{}
	GetTags() []string
	GetHandlerFunc() http.HandlerFunc
}

type PathItem

type PathItem struct {
	Summary     string     `json:"summary,omitempty" yaml:"summary,omitempty"`
	Description string     `json:"description,omitempty" yaml:"description,omitempty"`
	Get         *Operation `json:"get,omitempty" yaml:"get,omitempty"`
	Connect     *Operation `json:"connect,omitempty" yaml:"connect,omitempty"`
	Delete      *Operation `json:"delete,omitempty" yaml:"delete,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"`
}

type Post

type Post struct {
	Summary        string
	Description    string
	OperationID    string
	Tags           []string
	Authentication map[string][]string
	Response       map[string]MethodResponse
	Path           *PathBuilder
	Headers        []Parameter
	// Deprecated: Please migrate to RequestBodies
	RequestBody   interface{}
	RequestBodies *RequestBodies
	Extensions
	http.HandlerFunc
}

func (*Post) GetAuthentication

func (m *Post) GetAuthentication(key string) (bool, []string)

func (*Post) GetDescription

func (m *Post) GetDescription() string

func (*Post) GetExtensions added in v0.3.0

func (m *Post) GetExtensions() map[string]interface{}

func (*Post) GetHandlerFunc

func (m *Post) GetHandlerFunc() http.HandlerFunc

func (*Post) GetHeaders

func (m *Post) GetHeaders() []Parameter

func (*Post) GetOperationID

func (m *Post) GetOperationID() string

func (*Post) GetRequestBodies added in v0.2.0

func (m *Post) GetRequestBodies() *RequestBodies

func (*Post) GetResponse

func (m *Post) GetResponse(s string) (string, interface{})

func (*Post) GetSummary

func (m *Post) GetSummary() string

func (*Post) GetTags

func (m *Post) GetTags() []string

type Put

type Put struct {
	Summary        string
	Description    string
	OperationID    string
	Tags           []string
	Authentication map[string][]string
	Response       map[string]MethodResponse
	Path           *PathBuilder
	Headers        []Parameter
	// Deprecated: Please migrate to RequestBodies
	RequestBody   interface{}
	RequestBodies *RequestBodies
	Extensions
	http.HandlerFunc
}

func (*Put) GetAuthentication

func (m *Put) GetAuthentication(key string) (bool, []string)

func (*Put) GetDescription

func (m *Put) GetDescription() string

func (*Put) GetExtensions added in v0.3.0

func (m *Put) GetExtensions() map[string]interface{}

func (*Put) GetHandlerFunc

func (m *Put) GetHandlerFunc() http.HandlerFunc

func (*Put) GetHeaders

func (m *Put) GetHeaders() []Parameter

func (*Put) GetOperationID

func (m *Put) GetOperationID() string

func (*Put) GetRequestBodies added in v0.2.0

func (m *Put) GetRequestBodies() *RequestBodies

func (*Put) GetResponse

func (m *Put) GetResponse(s string) (string, interface{})

func (*Put) GetSummary

func (m *Put) GetSummary() string

func (*Put) GetTags

func (m *Put) GetTags() []string

type RefValue

type RefValue struct {
	Ref   string      `json:"$ref,omitempty" yaml:"$ref,omitempty"`
	Value interface{} `json:"value,omitempty" yaml:"value,omitempty"`
}

type RequestBodies added in v0.2.0

type RequestBodies struct {
	Description string
	Required    bool
	Bodies      map[string]interface{}
}

type RequestBody

type RequestBody struct {
	Description string                `json:"description,omitempty" yaml:"description,omitempty"`
	Required    bool                  `json:"required,omitempty" yaml:"required,omitempty"`
	Content     map[string]*MediaType `json:"content,omitempty" yaml:"content,omitempty"`
}

type Response

type Response struct {
	Description string                `json:"description" yaml:"description" validate:"required"`
	Content     map[string]*MediaType `json:"content,omitempty" yaml:"content,omitempty"`
}

type Schema

type Schema struct {
	Ref    string      `json:"$ref,omitempty" yaml:"$ref,omitempty"`
	Value  interface{} `json:"value,omitempty" yaml:"value,omitempty"`
	Type   string      `json:"type,omitempty" yaml:"type,omitempty"`
	Format string      `json:"format,omitempty" yaml:"format,omitempty"`
	Enum   []string    `json:"enum,omitempty" yaml:"enum,omitempty"`
	Items  *Schema     `json:"items,omitempty" yaml:"items,omitempty"`
}

type SchemaRef

type SchemaRef struct {
	Ref   string      `json:"$ref,omitempty" yaml:"$ref,omitempty"`
	Value interface{} `json:"value,omitempty" yaml:"value,omitempty"`
}

func (*SchemaRef) MarshalJSON

func (value *SchemaRef) MarshalJSON() ([]byte, error)

func (*SchemaRef) UnmarshalJSON

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

type SchemaRefs

type SchemaRefs []*SchemaRef

type Schemas

type Schemas map[string]*SchemaRef

type Server

type Server struct {
	URL         string `json:"url" yaml:"url" validate:"required,url"`
	Description string `json:"description,omitempty" yaml:"description,omitempty"`
}

type Style added in v0.1.0

type Style string
const (
	StyleSimple         Style = "simple"
	StyleLabel          Style = "label"
	StyleMatrix         Style = "matrix"
	StyleForm           Style = "form"
	StyleSpaceDelimited Style = "spaceDelimited"
	StylePipeDelimited  Style = "pipeDelimited"
	StyleDeepObject     Style = "deepObject"
)

type TYPE

type TYPE DataType

func TYPEENUM

func TYPEENUM(options []string) TYPE

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"`
}

type Trace

type Trace struct {
	Summary        string
	Description    string
	OperationID    string
	Tags           []string
	Authentication map[string][]string
	Path           *PathBuilder
	Headers        []Parameter
	Extensions
	http.HandlerFunc
}

func (*Trace) GetAuthentication

func (m *Trace) GetAuthentication(key string) (bool, []string)

func (*Trace) GetDescription

func (m *Trace) GetDescription() string

func (*Trace) GetExtensions added in v0.3.0

func (m *Trace) GetExtensions() map[string]interface{}

func (*Trace) GetHandlerFunc

func (m *Trace) GetHandlerFunc() http.HandlerFunc

func (*Trace) GetHeaders

func (m *Trace) GetHeaders() []Parameter

func (*Trace) GetOperationID

func (m *Trace) GetOperationID() string

func (*Trace) GetRequestBodies added in v0.2.0

func (m *Trace) GetRequestBodies() *RequestBodies

func (*Trace) GetResponse

func (m *Trace) GetResponse(s string) (string, interface{})

func (*Trace) GetSummary

func (m *Trace) GetSummary() string

func (*Trace) GetTags

func (m *Trace) GetTags() []string

Jump to

Keyboard shortcuts

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