niki/vendor/github.com/sv-tools/openapi/spec/response.go

43 lines
1.9 KiB
Go

package spec
// Response describes a single response from an API Operation, including design-time, static links to operations based on the response.
//
// https://spec.openapis.org/oas/v3.1.0#response-object
//
// Example:
//
// description: A complex object array response
// content:
// application/json:
// schema:
// type: array
// items:
// $ref: '#/components/schemas/VeryComplexType'
type Response struct {
// Maps a header name to its definition.
// [RFC7230] states header names are case insensitive.
// If a response header is defined with the name "Content-Type", it SHALL be ignored.
Headers map[string]*RefOrSpec[Extendable[Header]] `json:"headers,omitempty" yaml:"headers,omitempty"`
// A map containing descriptions of potential response payloads.
// The key is a media type or [media type range]appendix-D) and the value describes it.
// For responses that match multiple keys, only the most specific key is applicable. e.g. text/plain overrides text/*
Content map[string]*Extendable[MediaType] `json:"content,omitempty" yaml:"content,omitempty"`
// A map of operations links that can be followed from the response.
// The key of the map is a short name for the link, following the naming constraints of the names for Component Objects.
Links map[string]*RefOrSpec[Extendable[Link]] `json:"links,omitempty" yaml:"links,omitempty"`
// REQUIRED.
// A description of the response.
// CommonMark syntax MAY be used for rich text representation.
Description string `json:"description,omitempty" yaml:"description,omitempty"`
}
// NewResponseSpec creates Response object.
func NewResponseSpec() *RefOrSpec[Extendable[Response]] {
return NewRefOrSpec[Extendable[Response]](nil, NewExtendable(&Response{}))
}
// NewResponseRef creates Ref object.
func NewResponseRef(ref *Ref) *RefOrSpec[Extendable[Response]] {
return NewRefOrSpec[Extendable[Response]](ref, nil)
}