mirror of
https://github.com/astaxie/beego.git
synced 2024-11-23 01:50:54 +00:00
156 lines
7.0 KiB
Go
156 lines
7.0 KiB
Go
// Copyright 2014 beego Author. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
// Swagger™ is a project used to describe and document RESTful APIs.
|
|
//
|
|
// The Swagger specification defines a set of files required to describe such an API. These files can then be used by the Swagger-UI project to display the API and Swagger-Codegen to generate clients in various languages. Additional utilities can also take advantage of the resulting files, such as testing tools.
|
|
// Now in version 2.0, Swagger is more enabling than ever. And it's 100% open source software.
|
|
|
|
// Package swagger struct definition
|
|
package swagger
|
|
|
|
// Swagger list the resource
|
|
type Swagger struct {
|
|
SwaggerVersion string `json:"swagger,omitempty"`
|
|
Infos Information `json:"info"`
|
|
Host string `json:"host,omitempty"`
|
|
BasePath string `json:"basePath,omitempty"`
|
|
Schemes []string `json:"schemes,omitempty"`
|
|
Consumes []string `json:"consumes,omitempty"`
|
|
Produces []string `json:"produces,omitempty"`
|
|
Paths map[string]Item `json:"paths"`
|
|
Definitions map[string]Schema `json:"definitions,omitempty"`
|
|
SecurityDefinitions map[string]Scurity `json:"securityDefinitions,omitempty"`
|
|
Security map[string][]string `json:"security,omitempty"`
|
|
Tags []Tag `json:"tags,omitempty"`
|
|
ExternalDocs ExternalDocs `json:"externalDocs,omitempty"`
|
|
}
|
|
|
|
// Information Provides metadata about the API. The metadata can be used by the clients if needed.
|
|
type Information struct {
|
|
Title string `json:"title,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
Version string `json:"version,omitempty"`
|
|
TermsOfServiceURL string `json:"termsOfServiceUrl,omitempty"`
|
|
|
|
Contact Contact `json:"contact,omitempty"`
|
|
License License `json:"license,omitempty"`
|
|
}
|
|
|
|
// Contact information for the exposed API.
|
|
type Contact struct {
|
|
Name string `json:"name,omitempty"`
|
|
URL string `json:"url,omitempty"`
|
|
EMail string `json:"email,omitempty"`
|
|
}
|
|
|
|
// License information for the exposed API.
|
|
type License struct {
|
|
Name string `json:"name,omitempty"`
|
|
URL string `json:"url,omitempty"`
|
|
}
|
|
|
|
// Item Describes the operations available on a single path.
|
|
type Item struct {
|
|
Ref string `json:"$ref,omitempty"`
|
|
Get *Operation `json:"get,omitempty"`
|
|
Put *Operation `json:"put,omitempty"`
|
|
Post *Operation `json:"post,omitempty"`
|
|
Delete *Operation `json:"delete,omitempty"`
|
|
Options *Operation `json:"options,omitempty"`
|
|
Head *Operation `json:"head,omitempty"`
|
|
Patch *Operation `json:"patch,omitempty"`
|
|
}
|
|
|
|
// Operation Describes a single API operation on a path.
|
|
type Operation struct {
|
|
Tags []string `json:"tags,omitempty"`
|
|
Summary string `json:"summary,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
OperationID string `json:"operationId,omitempty"`
|
|
Consumes []string `json:"consumes,omitempty"`
|
|
Produces []string `json:"produces,omitempty"`
|
|
Schemes []string `json:"schemes,omitempty"`
|
|
Parameters []Parameter `json:"parameters,omitempty"`
|
|
Responses map[string]Response `json:"responses,omitempty"`
|
|
Deprecated bool `json:"deprecated,omitempty"`
|
|
}
|
|
|
|
// Parameter Describes a single operation parameter.
|
|
type Parameter struct {
|
|
In string `json:"in,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
Required bool `json:"required,omitempty"`
|
|
Schema Schema `json:"schema,omitempty"`
|
|
Type string `json:"type,omitempty"`
|
|
Format string `json:"format,omitempty"`
|
|
}
|
|
|
|
// Schema Object allows the definition of input and output data types.
|
|
type Schema struct {
|
|
Ref string `json:"$ref,omitempty"`
|
|
Title string `json:"title,omitempty"`
|
|
Format string `json:"format,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
Required []string `json:"required,omitempty"`
|
|
Type string `json:"type,omitempty"`
|
|
Properties map[string]Propertie `json:"properties,omitempty"`
|
|
}
|
|
|
|
// Propertie are taken from the JSON Schema definition but their definitions were adjusted to the Swagger Specification
|
|
type Propertie struct {
|
|
Title string `json:"title,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
Default string `json:"default,omitempty"`
|
|
Type string `json:"type,omitempty"`
|
|
Example string `json:"example,omitempty"`
|
|
Required []string `json:"required,omitempty"`
|
|
Format string `json:"format,omitempty"`
|
|
ReadOnly bool `json:"readOnly,omitempty"`
|
|
Properties map[string]Propertie `json:"properties,omitempty"`
|
|
}
|
|
|
|
// Response as they are returned from executing this operation.
|
|
type Response struct {
|
|
Description string `json:"description,omitempty"`
|
|
Schema Schema `json:"schema,omitempty"`
|
|
Ref string `json:"$ref,omitempty"`
|
|
}
|
|
|
|
// Scurity Allows the definition of a security scheme that can be used by the operations
|
|
type Scurity struct {
|
|
Type string `json:"type,omitempty"` // Valid values are "basic", "apiKey" or "oauth2".
|
|
Description string `json:"description,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
In string `json:"in,omitempty"` // Valid values are "query" or "header".
|
|
Flow string `json:"flow,omitempty"` // Valid values are "implicit", "password", "application" or "accessCode".
|
|
AuthorizationURL string `json:"authorizationUrl,omitempty"`
|
|
TokenURL string `json:"tokenUrl,omitempty"`
|
|
Scopes map[string]string `json:"scopes,omitempty"` // The available scopes for the OAuth2 security scheme.
|
|
}
|
|
|
|
// Tag Allows adding meta data to a single tag that is used by the Operation Object
|
|
type Tag struct {
|
|
Name string `json:"name,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
ExternalDocs ExternalDocs `json:"externalDocs,omitempty"`
|
|
}
|
|
|
|
// ExternalDocs include Additional external documentation
|
|
type ExternalDocs struct {
|
|
Description string `json:"description,omitempty"`
|
|
URL string `json:"url,omitempty"`
|
|
}
|