forked from ebhomengo/niki
61 lines
3.4 KiB
Go
61 lines
3.4 KiB
Go
package spec
|
||
|
||
// OpenAPI is the root object of the OpenAPI document.
|
||
//
|
||
// https://spec.openapis.org/oas/v3.1.0#openapi-object
|
||
//
|
||
// Example:
|
||
//
|
||
// openapi: 3.1.0
|
||
// info:
|
||
// title: Minimal OpenAPI example
|
||
// version: 1.0.0
|
||
// paths: { }
|
||
type OpenAPI struct {
|
||
// An element to hold various schemas for the document.
|
||
Components *Extendable[Components] `json:"components,omitempty" yaml:"components,omitempty"`
|
||
// REQUIRED
|
||
// Provides metadata about the API. The metadata MAY be used by tooling as required.
|
||
Info *Extendable[Info] `json:"info" yaml:"info"`
|
||
// Additional external documentation.
|
||
ExternalDocs *Extendable[ExternalDocs] `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
|
||
// Holds the relative paths to the individual endpoints and their operations.
|
||
// The path is appended to the URL from the Server Object in order to construct the full URL.
|
||
// The Paths MAY be empty, due to Access Control List (ACL) constraints.
|
||
Paths *Extendable[Paths] `json:"paths,omitempty" yaml:"paths,omitempty"`
|
||
// The incoming webhooks that MAY be received as part of this API and that the API consumer MAY choose to implement.
|
||
// Closely related to the callbacks feature, this section describes requests initiated other than by an API call,
|
||
// for example by an out of band registration.
|
||
// The key name is a unique string to refer to each webhook, while the (optionally referenced) PathItem Object describes
|
||
// a request that may be initiated by the API provider and the expected responses.
|
||
WebHooks map[string]*RefOrSpec[Extendable[PathItem]] `json:"webhooks,omitempty" yaml:"webhooks,omitempty"`
|
||
// The default value for the $schema keyword within Schema Objects contained within this OAS document.
|
||
// This MUST be in the form of a URI.
|
||
JsonSchemaDialect string `json:"jsonSchemaDialect,omitempty" yaml:"jsonSchemaDialect,omitempty"`
|
||
// REQUIRED
|
||
// This string MUST be the version number of the OpenAPI Specification that the OpenAPI document uses.
|
||
// The openapi field SHOULD be used by tooling to interpret the OpenAPI document.
|
||
// This is not related to the API info.version string.
|
||
OpenAPI string `json:"openapi" yaml:"openapi"`
|
||
// A declaration of which security mechanisms can be used across the API.
|
||
// The list of values includes alternative security requirement objects that can be used.
|
||
// Only one of the security requirement objects need to be satisfied to authorize a request.
|
||
// Individual operations can override this definition.
|
||
// To make security optional, an empty security requirement ({}) can be included in the array.
|
||
Security []SecurityRequirement `json:"security,omitempty" yaml:"security,omitempty"`
|
||
// A list of tags used by the document with additional metadata.
|
||
// The order of the tags can be used to reflect on their order by the parsing tools.
|
||
// Not all tags that are used by the Operation Object must be declared.
|
||
// The tags that are not declared MAY be organized randomly or based on the tools’ logic.
|
||
// Each tag name in the list MUST be unique.
|
||
Tags []*Extendable[Tag] `json:"tags,omitempty" yaml:"tags,omitempty"`
|
||
// An array of Server Objects, which provide connectivity information to a target server.
|
||
// If the servers property is not provided, or is an empty array, the default value would be a Server Object with a url value of /.
|
||
Servers []*Extendable[Server] `json:"servers,omitempty" yaml:"servers,omitempty"`
|
||
}
|
||
|
||
// NewOpenAPI creates OpenAPI object.
|
||
func NewOpenAPI() *Extendable[OpenAPI] {
|
||
return NewExtendable(&OpenAPI{})
|
||
}
|