forked from ebhomengo/niki
81 lines
3.8 KiB
Go
81 lines
3.8 KiB
Go
package spec
|
||
|
||
// Encoding is definition that applied to a single schema property.
|
||
//
|
||
// https://spec.openapis.org/oas/v3.1.0#encoding-object
|
||
//
|
||
// Example:
|
||
//
|
||
// requestBody:
|
||
// content:
|
||
// multipart/form-data:
|
||
// schema:
|
||
// type: object
|
||
// properties:
|
||
// id:
|
||
// # default is text/plain
|
||
// type: string
|
||
// format: uuid
|
||
// address:
|
||
// # default is application/json
|
||
// type: object
|
||
// properties: {}
|
||
// historyMetadata:
|
||
// # need to declare XML format!
|
||
// description: metadata in XML format
|
||
// type: object
|
||
// properties: {}
|
||
// profileImage: {}
|
||
// encoding:
|
||
// historyMetadata:
|
||
// # require XML Content-Type in utf-8 encoding
|
||
// contentType: application/xml; charset=utf-8
|
||
// profileImage:
|
||
// # only accept png/jpeg
|
||
// contentType: image/png, image/jpeg
|
||
// headers:
|
||
// X-Rate-Limit-Limit:
|
||
// description: The number of allowed requests in the current period
|
||
// schema:
|
||
// type: integer
|
||
type Encoding struct {
|
||
// The Content-Type for encoding a specific property.
|
||
// Default value depends on the property type:
|
||
// for object - application/json;
|
||
// for array – the default is defined based on the inner type;
|
||
// for all other cases the default is application/octet-stream.
|
||
// The value can be a specific media type (e.g. application/json), a wildcard media type (e.g. image/*),
|
||
// or a comma-separated list of the two types.
|
||
ContentType string `json:"contentType,omitempty" yaml:"contentType,omitempty"`
|
||
// A map allowing additional information to be provided as headers, for example Content-Disposition.
|
||
// Content-Type is described separately and SHALL be ignored in this section.
|
||
// This property SHALL be ignored if the request body media type is not a multipart.
|
||
Headers map[string]*RefOrSpec[Extendable[Header]] `json:"headers,omitempty" yaml:"headers,omitempty"`
|
||
// Describes how a specific property value will be serialized depending on its type.
|
||
// See Parameter Object for details on the style property.
|
||
// The behavior follows the same values as query parameters, including default values.
|
||
// This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded or multipart/form-data.
|
||
// If a value is explicitly defined, then the value of contentType (implicit or explicit) SHALL be ignored.
|
||
Style string `json:"style,omitempty" yaml:"style,omitempty"`
|
||
// When this is true, property values of type array or object generate separate parameters for each value of the array,
|
||
// or key-value-pair of the map.
|
||
// For other types of properties this property has no effect.
|
||
// When style is form, the default value is true.
|
||
// For all other styles, the default value is false.
|
||
// This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded or multipart/form-data.
|
||
// If a value is explicitly defined, then the value of contentType (implicit or explicit) SHALL be ignored.
|
||
Explode bool `json:"explode,omitempty" yaml:"explode,omitempty"`
|
||
// Determines whether the parameter value SHOULD allow reserved characters, as defined by [RFC3986]
|
||
// :/?#[]@!$&'()*+,;=
|
||
// to be included without percent-encoding.
|
||
// The default value is false.
|
||
// This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded or multipart/form-data.
|
||
// If a value is explicitly defined, then the value of contentType (implicit or explicit) SHALL be ignored.
|
||
AllowReserved bool `json:"allowReserved,omitempty" yaml:"allowReserved,omitempty"`
|
||
}
|
||
|
||
// NewEncoding creates Encoding object.
|
||
func NewEncoding() *Extendable[Encoding] {
|
||
return NewExtendable(&Encoding{})
|
||
}
|