123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- // Package swagger implements the structures of the Swagger
- // https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md
- package swagger
- const swaggerVersion = "1.2"
- // 4.3.3 Data Type Fields
- type DataTypeFields struct {
- Type *string `json:"type,omitempty"` // if Ref not used
- Ref *string `json:"$ref,omitempty"` // if Type not used
- Format string `json:"format,omitempty"`
- DefaultValue Special `json:"defaultValue,omitempty"`
- Enum []string `json:"enum,omitempty"`
- Minimum string `json:"minimum,omitempty"`
- Maximum string `json:"maximum,omitempty"`
- Items *Item `json:"items,omitempty"`
- UniqueItems *bool `json:"uniqueItems,omitempty"`
- }
- type Special string
- // 4.3.4 Items Object
- type Item struct {
- Type *string `json:"type,omitempty"`
- Ref *string `json:"$ref,omitempty"`
- Format string `json:"format,omitempty"`
- }
- // 5.1 Resource Listing
- type ResourceListing struct {
- SwaggerVersion string `json:"swaggerVersion"` // e.g 1.2
- Apis []Resource `json:"apis"`
- ApiVersion string `json:"apiVersion"`
- Info Info `json:"info"`
- Authorizations []Authorization `json:"authorizations,omitempty"`
- }
- // 5.1.2 Resource Object
- type Resource struct {
- Path string `json:"path"` // relative or absolute, must start with /
- Description string `json:"description"`
- }
- // 5.1.3 Info Object
- type Info struct {
- Title string `json:"title"`
- Description string `json:"description"`
- TermsOfServiceUrl string `json:"termsOfServiceUrl,omitempty"`
- Contact string `json:"contact,omitempty"`
- License string `json:"license,omitempty"`
- LicenseUrl string `json:"licenseUrl,omitempty"`
- }
- // 5.1.5
- type Authorization struct {
- Type string `json:"type"`
- PassAs string `json:"passAs"`
- Keyname string `json:"keyname"`
- Scopes []Scope `json:"scopes"`
- GrantTypes []GrantType `json:"grandTypes"`
- }
- // 5.1.6, 5.2.11
- type Scope struct {
- // Required. The name of the scope.
- Scope string `json:"scope"`
- // Recommended. A short description of the scope.
- Description string `json:"description"`
- }
- // 5.1.7
- type GrantType struct {
- Implicit Implicit `json:"implicit"`
- AuthorizationCode AuthorizationCode `json:"authorization_code"`
- }
- // 5.1.8 Implicit Object
- type Implicit struct {
- // Required. The login endpoint definition.
- loginEndpoint LoginEndpoint `json:"loginEndpoint"`
- // An optional alternative name to standard "access_token" OAuth2 parameter.
- TokenName string `json:"tokenName"`
- }
- // 5.1.9 Authorization Code Object
- type AuthorizationCode struct {
- TokenRequestEndpoint TokenRequestEndpoint `json:"tokenRequestEndpoint"`
- TokenEndpoint TokenEndpoint `json:"tokenEndpoint"`
- }
- // 5.1.10 Login Endpoint Object
- type LoginEndpoint struct {
- // Required. The URL of the authorization endpoint for the implicit grant flow. The value SHOULD be in a URL format.
- Url string `json:"url"`
- }
- // 5.1.11 Token Request Endpoint Object
- type TokenRequestEndpoint struct {
- // Required. The URL of the authorization endpoint for the authentication code grant flow. The value SHOULD be in a URL format.
- Url string `json:"url"`
- // An optional alternative name to standard "client_id" OAuth2 parameter.
- ClientIdName string `json:"clientIdName"`
- // An optional alternative name to the standard "client_secret" OAuth2 parameter.
- ClientSecretName string `json:"clientSecretName"`
- }
- // 5.1.12 Token Endpoint Object
- type TokenEndpoint struct {
- // Required. The URL of the token endpoint for the authentication code grant flow. The value SHOULD be in a URL format.
- Url string `json:"url"`
- // An optional alternative name to standard "access_token" OAuth2 parameter.
- TokenName string `json:"tokenName"`
- }
- // 5.2 API Declaration
- type ApiDeclaration struct {
- SwaggerVersion string `json:"swaggerVersion"`
- ApiVersion string `json:"apiVersion"`
- BasePath string `json:"basePath"`
- ResourcePath string `json:"resourcePath"` // must start with /
- Info Info `json:"info"`
- Apis []Api `json:"apis,omitempty"`
- Models ModelList `json:"models,omitempty"`
- Produces []string `json:"produces,omitempty"`
- Consumes []string `json:"consumes,omitempty"`
- Authorizations []Authorization `json:"authorizations,omitempty"`
- }
- // 5.2.2 API Object
- type Api struct {
- Path string `json:"path"` // relative or absolute, must start with /
- Description string `json:"description"`
- Operations []Operation `json:"operations,omitempty"`
- }
- // 5.2.3 Operation Object
- type Operation struct {
- DataTypeFields
- Method string `json:"method"`
- Summary string `json:"summary,omitempty"`
- Notes string `json:"notes,omitempty"`
- Nickname string `json:"nickname"`
- Authorizations []Authorization `json:"authorizations,omitempty"`
- Parameters []Parameter `json:"parameters"`
- ResponseMessages []ResponseMessage `json:"responseMessages,omitempty"` // optional
- Produces []string `json:"produces,omitempty"`
- Consumes []string `json:"consumes,omitempty"`
- Deprecated string `json:"deprecated,omitempty"`
- }
- // 5.2.4 Parameter Object
- type Parameter struct {
- DataTypeFields
- ParamType string `json:"paramType"` // path,query,body,header,form
- Name string `json:"name"`
- Description string `json:"description"`
- Required bool `json:"required"`
- AllowMultiple bool `json:"allowMultiple"`
- }
- // 5.2.5 Response Message Object
- type ResponseMessage struct {
- Code int `json:"code"`
- Message string `json:"message"`
- ResponseModel string `json:"responseModel,omitempty"`
- }
- // 5.2.6, 5.2.7 Models Object
- type Model struct {
- Id string `json:"id"`
- Description string `json:"description,omitempty"`
- Required []string `json:"required,omitempty"`
- Properties ModelPropertyList `json:"properties"`
- SubTypes []string `json:"subTypes,omitempty"`
- Discriminator string `json:"discriminator,omitempty"`
- }
- // 5.2.8 Properties Object
- type ModelProperty struct {
- DataTypeFields
- Description string `json:"description,omitempty"`
- }
- // 5.2.10
- type Authorizations map[string]Authorization
|