// {{classname}}{{#description}} {{{description}}}{{/description}}{{^description}} struct for {{{classname}}}{{/description}} type {{classname}} struct { {{#parent}} {{^isMap}} {{^isArray}} {{{parent}}} {{/isArray}} {{/isMap}} {{#isArray}} Items {{{parent}}} {{/isArray}} {{/parent}} {{#vars}} {{^-first}} {{/-first}} {{#description}} // {{{description}}} {{/description}} {{name}} {{^required}}{{^isNullable}}*{{/isNullable}}{{/required}}{{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{{dataType}}}{{/vendorExtensions.x-go-field-type}} `json:"{{baseName}}{{^required}},omitempty{{/required}}" yaml:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` {{/vars}} {{#isAdditionalPropertiesTrue}} AdditionalProperties map[string]interface{} {{/isAdditionalPropertiesTrue}} } {{#isAdditionalPropertiesTrue}} type _{{{classname}}} {{{classname}}} {{/isAdditionalPropertiesTrue}} // New{{classname}} instantiates a new {{classname}} object // This constructor will assign default values to properties that have it defined, // and makes sure properties required by API are set, but the set of arguments // will change when the set of required properties is changed func New{{classname}}({{#requiredVars}}{{nameInCamelCase}} {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{dataType}}{{/vendorExtensions.x-go-field-type}}{{^-last}}, {{/-last}}{{/requiredVars}}) *{{classname}} { this := {{classname}}{} {{#allVars}} {{#required}} this.{{name}} = {{nameInCamelCase}} {{/required}} {{^required}} {{#defaultValue}} {{^vendorExtensions.x-golang-is-container}} {{#isNullable}} var {{nameInCamelCase}} {{{datatypeWithEnum}}} = {{{.}}} this.{{name}} = *New{{{dataType}}}(&{{nameInCamelCase}}) {{/isNullable}} {{^isNullable}} var {{nameInCamelCase}} {{{dataType}}} = {{{.}}} this.{{name}} = &{{nameInCamelCase}} {{/isNullable}} {{/vendorExtensions.x-golang-is-container}} {{/defaultValue}} {{/required}} {{/allVars}} return &this } // New{{classname}}WithDefaults instantiates a new {{classname}} object // This constructor will only assign default values to properties that have it defined, // but it doesn't guarantee that properties required by API are set func New{{classname}}WithDefaults() *{{classname}} { this := {{classname}}{} {{#vars}} {{#defaultValue}} {{^vendorExtensions.x-golang-is-container}} {{#isNullable}} {{!we use datatypeWithEnum here, since it will represent the non-nullable name of the datatype, e.g. int64 for NullableInt64}} var {{nameInCamelCase}} {{{datatypeWithEnum}}} = {{{.}}} this.{{name}} = *New{{{dataType}}}(&{{nameInCamelCase}}) {{/isNullable}} {{^isNullable}} var {{nameInCamelCase}} {{{dataType}}} = {{{.}}} this.{{name}} = {{^required}}&{{/required}}{{nameInCamelCase}} {{/isNullable}} {{/vendorExtensions.x-golang-is-container}} {{/defaultValue}} {{/vars}} return &this } {{#vars}} {{#required}} // Get{{name}} returns the {{name}} field value {{#isNullable}} // If the value is explicit nil, the zero value for {{vendorExtensions.x-go-base-type}} will be returned {{/isNullable}} func (o *{{classname}}) Get{{name}}() {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}} { if o == nil{{#isNullable}}{{^vendorExtensions.x-golang-is-container}} || o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { var ret {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}} return ret } {{#isNullable}} {{#vendorExtensions.x-golang-is-container}} return o.{{name}} {{/vendorExtensions.x-golang-is-container}} {{^vendorExtensions.x-golang-is-container}} return *o.{{name}}.Get() {{/vendorExtensions.x-golang-is-container}} {{/isNullable}} {{^isNullable}} return o.{{name}} {{/isNullable}} } // Get{{name}}Ok returns a tuple with the {{name}} field value // and a boolean to check if the value has been set. {{#isNullable}} // NOTE: If the value is an explicit nil, `nil, true` will be returned {{/isNullable}} func (o *{{classname}}) Get{{name}}Ok() (*{{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}, bool) { if o == nil {{#isNullable}}{{#vendorExtensions.x-golang-is-container}}|| o.{{name}} == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { return nil, false } {{#isNullable}} {{#vendorExtensions.x-golang-is-container}} return &o.{{name}}, true {{/vendorExtensions.x-golang-is-container}} {{^vendorExtensions.x-golang-is-container}} return o.{{name}}.Get(), o.{{name}}.IsSet() {{/vendorExtensions.x-golang-is-container}} {{/isNullable}} {{^isNullable}} return &o.{{name}}, true {{/isNullable}} } // Set{{name}} sets field value func (o *{{classname}}) Set{{name}}(v {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}) { {{#isNullable}} {{#vendorExtensions.x-golang-is-container}} o.{{name}} = v {{/vendorExtensions.x-golang-is-container}} {{^vendorExtensions.x-golang-is-container}} o.{{name}}.Set(&v) {{/vendorExtensions.x-golang-is-container}} {{/isNullable}} {{^isNullable}} o.{{name}} = v {{/isNullable}} } {{/required}} {{^required}} // Get{{name}} returns the {{name}} field value if set, zero value otherwise{{#isNullable}} (both if not set or set to explicit null){{/isNullable}}. func (o *{{classname}}) Get{{name}}() {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}} { if o == nil {{^isNullable}}|| o.{{name}} == nil{{/isNullable}}{{#isNullable}}{{^vendorExtensions.x-golang-is-container}}|| o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { var ret {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}} return ret } {{#isNullable}} {{#vendorExtensions.x-golang-is-container}} return o.{{name}} {{/vendorExtensions.x-golang-is-container}} {{^vendorExtensions.x-golang-is-container}} return *o.{{name}}.Get() {{/vendorExtensions.x-golang-is-container}} {{/isNullable}} {{^isNullable}} return *o.{{name}} {{/isNullable}} } // Get{{name}}Ok returns a tuple with the {{name}} field value if set, nil otherwise // and a boolean to check if the value has been set. {{#isNullable}} // NOTE: If the value is an explicit nil, `nil, true` will be returned {{/isNullable}} func (o *{{classname}}) Get{{name}}Ok() (*{{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}, bool) { if o == nil {{^isNullable}}|| o.{{name}} == nil{{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}}|| o.{{name}} == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { return nil, false } {{#isNullable}} {{#vendorExtensions.x-golang-is-container}} return &o.{{name}}, true {{/vendorExtensions.x-golang-is-container}} {{^vendorExtensions.x-golang-is-container}} return o.{{name}}.Get(), o.{{name}}.IsSet() {{/vendorExtensions.x-golang-is-container}} {{/isNullable}} {{^isNullable}} return o.{{name}}, true {{/isNullable}} } // Has{{name}} returns a boolean if a field has been set. func (o *{{classname}}) Has{{name}}() bool { if o != nil && {{^isNullable}}o.{{name}} != nil{{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}}o.{{name}} != nil{{/vendorExtensions.x-golang-is-container}}{{^vendorExtensions.x-golang-is-container}}o.{{name}}.IsSet(){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} { return true } return false } // Set{{name}} gets a reference to the given {{dataType}} and assigns it to the {{name}} field. func (o *{{classname}}) Set{{name}}(v {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}) { {{#isNullable}} {{#vendorExtensions.x-golang-is-container}} o.{{name}} = v {{/vendorExtensions.x-golang-is-container}} {{^vendorExtensions.x-golang-is-container}} o.{{name}}.Set(&v) {{/vendorExtensions.x-golang-is-container}} {{/isNullable}} {{^isNullable}} o.{{name}} = &v {{/isNullable}} } {{#isNullable}} {{^vendorExtensions.x-golang-is-container}} // Set{{name}}Nil sets the value for {{name}} to be an explicit nil func (o *{{classname}}) Set{{name}}Nil() { o.{{name}}.Set(nil) } // Unset{{name}} ensures that no value is present for {{name}}, not even an explicit nil func (o *{{classname}}) Unset{{name}}() { o.{{name}}.Unset() } {{/vendorExtensions.x-golang-is-container}} {{/isNullable}} {{/required}} {{/vars}} func (o {{classname}}) MarshalJSON() ([]byte, error) { toSerialize := {{#isArray}}make([]interface{}, len(o.Items)){{/isArray}}{{^isArray}}map[string]interface{}{}{{/isArray}} {{#parent}} {{^isMap}} {{^isArray}} serialized{{parent}}, err{{parent}} := json.Marshal(o.{{parent}}) if err{{parent}} != nil { return []byte{}, err{{parent}} } err{{parent}} = json.Unmarshal([]byte(serialized{{parent}}), &toSerialize) if err{{parent}} != nil { return []byte{}, err{{parent}} } {{/isArray}} {{/isMap}} {{#isArray}} for i, item := range o.Items { toSerialize[i] = item } {{/isArray}} {{/parent}} {{#vars}} {{! if argument is nullable, only serialize it if it is set}} {{#isNullable}} {{#vendorExtensions.x-golang-is-container}} {{! support for container fields is not ideal at this point because of lack of Nullable* types}} if o.{{name}} != nil { toSerialize["{{baseName}}"] = o.{{name}} } {{/vendorExtensions.x-golang-is-container}} {{^vendorExtensions.x-golang-is-container}} if {{#required}}true{{/required}}{{^required}}o.{{name}}.IsSet(){{/required}} { toSerialize["{{baseName}}"] = o.{{name}}.Get() } {{/vendorExtensions.x-golang-is-container}} {{/isNullable}} {{! if argument is not nullable, don't set it if it is nil}} {{^isNullable}} if {{#required}}true{{/required}}{{^required}}o.{{name}} != nil{{/required}} { toSerialize["{{baseName}}"] = o.{{name}} } {{/isNullable}} {{/vars}} {{#isAdditionalPropertiesTrue}} for key, value := range o.AdditionalProperties { toSerialize[key] = value } {{/isAdditionalPropertiesTrue}} return json.Marshal(toSerialize) } {{#isAdditionalPropertiesTrue}} func (o *{{{classname}}}) UnmarshalJSON(bytes []byte) (err error) { {{#parent}} {{^isMap}} type {{classname}}WithoutEmbeddedStruct struct { {{#vars}} {{^-first}} {{/-first}} {{#description}} // {{{description}}} {{/description}} {{name}} {{^required}}{{^isNullable}}*{{/isNullable}}{{/required}}{{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{{dataType}}}{{/vendorExtensions.x-go-field-type}} `json:"{{baseName}}{{^required}},omitempty{{/required}}" yaml:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` {{/vars}} } var{{{classname}}}WithoutEmbeddedStruct := {{{classname}}}WithoutEmbeddedStruct{} err = json.Unmarshal(bytes, &var{{{classname}}}WithoutEmbeddedStruct) if err == nil { var{{{classname}}} := _{{{classname}}}{} {{#vars}} var{{{classname}}}.{{{name}}} = var{{{classname}}}WithoutEmbeddedStruct.{{{name}}} {{/vars}} *o = {{{classname}}}(var{{{classname}}}) } else { return err } var{{{classname}}} := _{{{classname}}}{} err = json.Unmarshal(bytes, &var{{{classname}}}) if err == nil { o.{{{parent}}} = var{{{classname}}}.{{{parent}}} } else { return err } additionalProperties := make(map[string]interface{}) if err = json.Unmarshal(bytes, &additionalProperties); err == nil { {{#vars}} delete(additionalProperties, "{{{baseName}}}") {{/vars}} // remove fields from embedded structs reflect{{{parent}}} := reflect.ValueOf(o.{{{parent}}}) for i := 0; i < reflect{{{parent}}}.Type().NumField(); i++ { t := reflect{{{parent}}}.Type().Field(i) if jsonTag := t.Tag.Get("json"); jsonTag != "" { fieldName, _, _ := strings.Cut(jsonTag, ",") if fieldName != "AdditionalProperties" { delete(additionalProperties, fieldName) } } } o.AdditionalProperties = additionalProperties } return err {{/isMap}} {{#isMap}} var{{{classname}}} := _{{{classname}}}{} if err = json.Unmarshal(bytes, &var{{{classname}}}); err == nil { *o = {{{classname}}}(var{{{classname}}}) } additionalProperties := make(map[string]interface{}) if err = json.Unmarshal(bytes, &additionalProperties); err == nil { {{#vars}} delete(additionalProperties, "{{{baseName}}}") {{/vars}} o.AdditionalProperties = additionalProperties } return err {{/isMap}} {{/parent}} {{^parent}} var{{{classname}}} := _{{{classname}}}{} if err = json.Unmarshal(bytes, &var{{{classname}}}); err == nil { *o = {{{classname}}}(var{{{classname}}}) } additionalProperties := make(map[string]interface{}) if err = json.Unmarshal(bytes, &additionalProperties); err == nil { {{#vars}} delete(additionalProperties, "{{{baseName}}}") {{/vars}} o.AdditionalProperties = additionalProperties } return err {{/parent}} } {{/isAdditionalPropertiesTrue}} {{#isArray}} func (o *{{{classname}}}) UnmarshalJSON(bytes []byte) (err error) { return json.Unmarshal(bytes, &o.Items) } {{/isArray}} {{>nullable_model}}