/*
Edge Application API

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

API version: 2.0.0
*/

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package edgeapplications

import (
	"encoding/json"
	"bytes"
	"fmt"
)

// checks if the CreateApplicationRequest type satisfies the MappedNullable interface at compile time
var _ MappedNullable = &CreateApplicationRequest{}

// CreateApplicationRequest struct for CreateApplicationRequest
type CreateApplicationRequest struct {
	Name string `json:"name"`
	ApplicationAcceleration *bool `json:"application_acceleration,omitempty"`
	DeliveryProtocol *string `json:"delivery_protocol,omitempty"`
	OriginType *string `json:"origin_type,omitempty"`
	Address *string `json:"address,omitempty"`
	MinimumTlsVersion *string `json:"minimum_tls_version,omitempty"`
	OriginProtocolPolicy *string `json:"origin_protocol_policy,omitempty"`
	HostHeader *string `json:"host_header,omitempty"`
	BrowserCacheSettings *string `json:"browser_cache_settings,omitempty"`
	CdnCacheSettings *string `json:"cdn_cache_settings,omitempty"`
	BrowserCacheSettingsMaximumTtl *int64 `json:"browser_cache_settings_maximum_ttl,omitempty"`
	CdnCacheSettingsMaximumTtl *int64 `json:"cdn_cache_settings_maximum_ttl,omitempty"`
	DebugRules *bool `json:"debug_rules,omitempty"`
	SupportedCiphers *string `json:"supported_ciphers,omitempty"`
	HttpPort interface{} `json:"http_port,omitempty"`
	HttpsPort interface{} `json:"https_port,omitempty"`
	L2Caching *bool `json:"l2_caching,omitempty"`
	Http3 *bool `json:"http3,omitempty"`
	Websocket *bool `json:"websocket,omitempty"`
}

type _CreateApplicationRequest CreateApplicationRequest

// NewCreateApplicationRequest instantiates a new CreateApplicationRequest 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 NewCreateApplicationRequest(name string) *CreateApplicationRequest {
	this := CreateApplicationRequest{}
	this.Name = name
	return &this
}

// NewCreateApplicationRequestWithDefaults instantiates a new CreateApplicationRequest 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 NewCreateApplicationRequestWithDefaults() *CreateApplicationRequest {
	this := CreateApplicationRequest{}
	return &this
}

// GetName returns the Name field value
func (o *CreateApplicationRequest) GetName() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Name
}

// GetNameOk returns a tuple with the Name field value
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetNameOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Name, true
}

// SetName sets field value
func (o *CreateApplicationRequest) SetName(v string) {
	o.Name = v
}

// GetApplicationAcceleration returns the ApplicationAcceleration field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetApplicationAcceleration() bool {
	if o == nil || IsNil(o.ApplicationAcceleration) {
		var ret bool
		return ret
	}
	return *o.ApplicationAcceleration
}

// GetApplicationAccelerationOk returns a tuple with the ApplicationAcceleration field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetApplicationAccelerationOk() (*bool, bool) {
	if o == nil || IsNil(o.ApplicationAcceleration) {
		return nil, false
	}
	return o.ApplicationAcceleration, true
}

// HasApplicationAcceleration returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasApplicationAcceleration() bool {
	if o != nil && !IsNil(o.ApplicationAcceleration) {
		return true
	}

	return false
}

// SetApplicationAcceleration gets a reference to the given bool and assigns it to the ApplicationAcceleration field.
func (o *CreateApplicationRequest) SetApplicationAcceleration(v bool) {
	o.ApplicationAcceleration = &v
}

// GetDeliveryProtocol returns the DeliveryProtocol field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetDeliveryProtocol() string {
	if o == nil || IsNil(o.DeliveryProtocol) {
		var ret string
		return ret
	}
	return *o.DeliveryProtocol
}

// GetDeliveryProtocolOk returns a tuple with the DeliveryProtocol field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetDeliveryProtocolOk() (*string, bool) {
	if o == nil || IsNil(o.DeliveryProtocol) {
		return nil, false
	}
	return o.DeliveryProtocol, true
}

// HasDeliveryProtocol returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasDeliveryProtocol() bool {
	if o != nil && !IsNil(o.DeliveryProtocol) {
		return true
	}

	return false
}

// SetDeliveryProtocol gets a reference to the given string and assigns it to the DeliveryProtocol field.
func (o *CreateApplicationRequest) SetDeliveryProtocol(v string) {
	o.DeliveryProtocol = &v
}

// GetOriginType returns the OriginType field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetOriginType() string {
	if o == nil || IsNil(o.OriginType) {
		var ret string
		return ret
	}
	return *o.OriginType
}

// GetOriginTypeOk returns a tuple with the OriginType field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetOriginTypeOk() (*string, bool) {
	if o == nil || IsNil(o.OriginType) {
		return nil, false
	}
	return o.OriginType, true
}

// HasOriginType returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasOriginType() bool {
	if o != nil && !IsNil(o.OriginType) {
		return true
	}

	return false
}

// SetOriginType gets a reference to the given string and assigns it to the OriginType field.
func (o *CreateApplicationRequest) SetOriginType(v string) {
	o.OriginType = &v
}

// GetAddress returns the Address field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetAddress() string {
	if o == nil || IsNil(o.Address) {
		var ret string
		return ret
	}
	return *o.Address
}

// GetAddressOk returns a tuple with the Address field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetAddressOk() (*string, bool) {
	if o == nil || IsNil(o.Address) {
		return nil, false
	}
	return o.Address, true
}

// HasAddress returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasAddress() bool {
	if o != nil && !IsNil(o.Address) {
		return true
	}

	return false
}

// SetAddress gets a reference to the given string and assigns it to the Address field.
func (o *CreateApplicationRequest) SetAddress(v string) {
	o.Address = &v
}

// GetMinimumTlsVersion returns the MinimumTlsVersion field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetMinimumTlsVersion() string {
	if o == nil || IsNil(o.MinimumTlsVersion) {
		var ret string
		return ret
	}
	return *o.MinimumTlsVersion
}

// GetMinimumTlsVersionOk returns a tuple with the MinimumTlsVersion field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetMinimumTlsVersionOk() (*string, bool) {
	if o == nil || IsNil(o.MinimumTlsVersion) {
		return nil, false
	}
	return o.MinimumTlsVersion, true
}

// HasMinimumTlsVersion returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasMinimumTlsVersion() bool {
	if o != nil && !IsNil(o.MinimumTlsVersion) {
		return true
	}

	return false
}

// SetMinimumTlsVersion gets a reference to the given string and assigns it to the MinimumTlsVersion field.
func (o *CreateApplicationRequest) SetMinimumTlsVersion(v string) {
	o.MinimumTlsVersion = &v
}

// GetOriginProtocolPolicy returns the OriginProtocolPolicy field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetOriginProtocolPolicy() string {
	if o == nil || IsNil(o.OriginProtocolPolicy) {
		var ret string
		return ret
	}
	return *o.OriginProtocolPolicy
}

// GetOriginProtocolPolicyOk returns a tuple with the OriginProtocolPolicy field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetOriginProtocolPolicyOk() (*string, bool) {
	if o == nil || IsNil(o.OriginProtocolPolicy) {
		return nil, false
	}
	return o.OriginProtocolPolicy, true
}

// HasOriginProtocolPolicy returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasOriginProtocolPolicy() bool {
	if o != nil && !IsNil(o.OriginProtocolPolicy) {
		return true
	}

	return false
}

// SetOriginProtocolPolicy gets a reference to the given string and assigns it to the OriginProtocolPolicy field.
func (o *CreateApplicationRequest) SetOriginProtocolPolicy(v string) {
	o.OriginProtocolPolicy = &v
}

// GetHostHeader returns the HostHeader field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetHostHeader() string {
	if o == nil || IsNil(o.HostHeader) {
		var ret string
		return ret
	}
	return *o.HostHeader
}

// GetHostHeaderOk returns a tuple with the HostHeader field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetHostHeaderOk() (*string, bool) {
	if o == nil || IsNil(o.HostHeader) {
		return nil, false
	}
	return o.HostHeader, true
}

// HasHostHeader returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasHostHeader() bool {
	if o != nil && !IsNil(o.HostHeader) {
		return true
	}

	return false
}

// SetHostHeader gets a reference to the given string and assigns it to the HostHeader field.
func (o *CreateApplicationRequest) SetHostHeader(v string) {
	o.HostHeader = &v
}

// GetBrowserCacheSettings returns the BrowserCacheSettings field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetBrowserCacheSettings() string {
	if o == nil || IsNil(o.BrowserCacheSettings) {
		var ret string
		return ret
	}
	return *o.BrowserCacheSettings
}

// GetBrowserCacheSettingsOk returns a tuple with the BrowserCacheSettings field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetBrowserCacheSettingsOk() (*string, bool) {
	if o == nil || IsNil(o.BrowserCacheSettings) {
		return nil, false
	}
	return o.BrowserCacheSettings, true
}

// HasBrowserCacheSettings returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasBrowserCacheSettings() bool {
	if o != nil && !IsNil(o.BrowserCacheSettings) {
		return true
	}

	return false
}

// SetBrowserCacheSettings gets a reference to the given string and assigns it to the BrowserCacheSettings field.
func (o *CreateApplicationRequest) SetBrowserCacheSettings(v string) {
	o.BrowserCacheSettings = &v
}

// GetCdnCacheSettings returns the CdnCacheSettings field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetCdnCacheSettings() string {
	if o == nil || IsNil(o.CdnCacheSettings) {
		var ret string
		return ret
	}
	return *o.CdnCacheSettings
}

// GetCdnCacheSettingsOk returns a tuple with the CdnCacheSettings field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetCdnCacheSettingsOk() (*string, bool) {
	if o == nil || IsNil(o.CdnCacheSettings) {
		return nil, false
	}
	return o.CdnCacheSettings, true
}

// HasCdnCacheSettings returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasCdnCacheSettings() bool {
	if o != nil && !IsNil(o.CdnCacheSettings) {
		return true
	}

	return false
}

// SetCdnCacheSettings gets a reference to the given string and assigns it to the CdnCacheSettings field.
func (o *CreateApplicationRequest) SetCdnCacheSettings(v string) {
	o.CdnCacheSettings = &v
}

// GetBrowserCacheSettingsMaximumTtl returns the BrowserCacheSettingsMaximumTtl field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetBrowserCacheSettingsMaximumTtl() int64 {
	if o == nil || IsNil(o.BrowserCacheSettingsMaximumTtl) {
		var ret int64
		return ret
	}
	return *o.BrowserCacheSettingsMaximumTtl
}

// GetBrowserCacheSettingsMaximumTtlOk returns a tuple with the BrowserCacheSettingsMaximumTtl field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetBrowserCacheSettingsMaximumTtlOk() (*int64, bool) {
	if o == nil || IsNil(o.BrowserCacheSettingsMaximumTtl) {
		return nil, false
	}
	return o.BrowserCacheSettingsMaximumTtl, true
}

// HasBrowserCacheSettingsMaximumTtl returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasBrowserCacheSettingsMaximumTtl() bool {
	if o != nil && !IsNil(o.BrowserCacheSettingsMaximumTtl) {
		return true
	}

	return false
}

// SetBrowserCacheSettingsMaximumTtl gets a reference to the given int64 and assigns it to the BrowserCacheSettingsMaximumTtl field.
func (o *CreateApplicationRequest) SetBrowserCacheSettingsMaximumTtl(v int64) {
	o.BrowserCacheSettingsMaximumTtl = &v
}

// GetCdnCacheSettingsMaximumTtl returns the CdnCacheSettingsMaximumTtl field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetCdnCacheSettingsMaximumTtl() int64 {
	if o == nil || IsNil(o.CdnCacheSettingsMaximumTtl) {
		var ret int64
		return ret
	}
	return *o.CdnCacheSettingsMaximumTtl
}

// GetCdnCacheSettingsMaximumTtlOk returns a tuple with the CdnCacheSettingsMaximumTtl field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetCdnCacheSettingsMaximumTtlOk() (*int64, bool) {
	if o == nil || IsNil(o.CdnCacheSettingsMaximumTtl) {
		return nil, false
	}
	return o.CdnCacheSettingsMaximumTtl, true
}

// HasCdnCacheSettingsMaximumTtl returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasCdnCacheSettingsMaximumTtl() bool {
	if o != nil && !IsNil(o.CdnCacheSettingsMaximumTtl) {
		return true
	}

	return false
}

// SetCdnCacheSettingsMaximumTtl gets a reference to the given int64 and assigns it to the CdnCacheSettingsMaximumTtl field.
func (o *CreateApplicationRequest) SetCdnCacheSettingsMaximumTtl(v int64) {
	o.CdnCacheSettingsMaximumTtl = &v
}

// GetDebugRules returns the DebugRules field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetDebugRules() bool {
	if o == nil || IsNil(o.DebugRules) {
		var ret bool
		return ret
	}
	return *o.DebugRules
}

// GetDebugRulesOk returns a tuple with the DebugRules field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetDebugRulesOk() (*bool, bool) {
	if o == nil || IsNil(o.DebugRules) {
		return nil, false
	}
	return o.DebugRules, true
}

// HasDebugRules returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasDebugRules() bool {
	if o != nil && !IsNil(o.DebugRules) {
		return true
	}

	return false
}

// SetDebugRules gets a reference to the given bool and assigns it to the DebugRules field.
func (o *CreateApplicationRequest) SetDebugRules(v bool) {
	o.DebugRules = &v
}

// GetSupportedCiphers returns the SupportedCiphers field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetSupportedCiphers() string {
	if o == nil || IsNil(o.SupportedCiphers) {
		var ret string
		return ret
	}
	return *o.SupportedCiphers
}

// GetSupportedCiphersOk returns a tuple with the SupportedCiphers field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetSupportedCiphersOk() (*string, bool) {
	if o == nil || IsNil(o.SupportedCiphers) {
		return nil, false
	}
	return o.SupportedCiphers, true
}

// HasSupportedCiphers returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasSupportedCiphers() bool {
	if o != nil && !IsNil(o.SupportedCiphers) {
		return true
	}

	return false
}

// SetSupportedCiphers gets a reference to the given string and assigns it to the SupportedCiphers field.
func (o *CreateApplicationRequest) SetSupportedCiphers(v string) {
	o.SupportedCiphers = &v
}

// GetHttpPort returns the HttpPort field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *CreateApplicationRequest) GetHttpPort() interface{} {
	if o == nil {
		var ret interface{}
		return ret
	}
	return o.HttpPort
}

// GetHttpPortOk returns a tuple with the HttpPort field value if set, nil otherwise
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *CreateApplicationRequest) GetHttpPortOk() (*interface{}, bool) {
	if o == nil || IsNil(o.HttpPort) {
		return nil, false
	}
	return &o.HttpPort, true
}

// HasHttpPort returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasHttpPort() bool {
	if o != nil && !IsNil(o.HttpPort) {
		return true
	}

	return false
}

// SetHttpPort gets a reference to the given interface{} and assigns it to the HttpPort field.
func (o *CreateApplicationRequest) SetHttpPort(v interface{}) {
	o.HttpPort = v
}

// GetHttpsPort returns the HttpsPort field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *CreateApplicationRequest) GetHttpsPort() interface{} {
	if o == nil {
		var ret interface{}
		return ret
	}
	return o.HttpsPort
}

// GetHttpsPortOk returns a tuple with the HttpsPort field value if set, nil otherwise
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *CreateApplicationRequest) GetHttpsPortOk() (*interface{}, bool) {
	if o == nil || IsNil(o.HttpsPort) {
		return nil, false
	}
	return &o.HttpsPort, true
}

// HasHttpsPort returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasHttpsPort() bool {
	if o != nil && !IsNil(o.HttpsPort) {
		return true
	}

	return false
}

// SetHttpsPort gets a reference to the given interface{} and assigns it to the HttpsPort field.
func (o *CreateApplicationRequest) SetHttpsPort(v interface{}) {
	o.HttpsPort = v
}

// GetL2Caching returns the L2Caching field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetL2Caching() bool {
	if o == nil || IsNil(o.L2Caching) {
		var ret bool
		return ret
	}
	return *o.L2Caching
}

// GetL2CachingOk returns a tuple with the L2Caching field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetL2CachingOk() (*bool, bool) {
	if o == nil || IsNil(o.L2Caching) {
		return nil, false
	}
	return o.L2Caching, true
}

// HasL2Caching returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasL2Caching() bool {
	if o != nil && !IsNil(o.L2Caching) {
		return true
	}

	return false
}

// SetL2Caching gets a reference to the given bool and assigns it to the L2Caching field.
func (o *CreateApplicationRequest) SetL2Caching(v bool) {
	o.L2Caching = &v
}

// GetHttp3 returns the Http3 field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetHttp3() bool {
	if o == nil || IsNil(o.Http3) {
		var ret bool
		return ret
	}
	return *o.Http3
}

// GetHttp3Ok returns a tuple with the Http3 field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetHttp3Ok() (*bool, bool) {
	if o == nil || IsNil(o.Http3) {
		return nil, false
	}
	return o.Http3, true
}

// HasHttp3 returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasHttp3() bool {
	if o != nil && !IsNil(o.Http3) {
		return true
	}

	return false
}

// SetHttp3 gets a reference to the given bool and assigns it to the Http3 field.
func (o *CreateApplicationRequest) SetHttp3(v bool) {
	o.Http3 = &v
}

// GetWebsocket returns the Websocket field value if set, zero value otherwise.
func (o *CreateApplicationRequest) GetWebsocket() bool {
	if o == nil || IsNil(o.Websocket) {
		var ret bool
		return ret
	}
	return *o.Websocket
}

// GetWebsocketOk returns a tuple with the Websocket field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateApplicationRequest) GetWebsocketOk() (*bool, bool) {
	if o == nil || IsNil(o.Websocket) {
		return nil, false
	}
	return o.Websocket, true
}

// HasWebsocket returns a boolean if a field has been set.
func (o *CreateApplicationRequest) HasWebsocket() bool {
	if o != nil && !IsNil(o.Websocket) {
		return true
	}

	return false
}

// SetWebsocket gets a reference to the given bool and assigns it to the Websocket field.
func (o *CreateApplicationRequest) SetWebsocket(v bool) {
	o.Websocket = &v
}

func (o CreateApplicationRequest) MarshalJSON() ([]byte, error) {
	toSerialize,err := o.ToMap()
	if err != nil {
		return []byte{}, err
	}
	return json.Marshal(toSerialize)
}

func (o CreateApplicationRequest) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	toSerialize["name"] = o.Name
	if !IsNil(o.ApplicationAcceleration) {
		toSerialize["application_acceleration"] = o.ApplicationAcceleration
	}
	if !IsNil(o.DeliveryProtocol) {
		toSerialize["delivery_protocol"] = o.DeliveryProtocol
	}
	if !IsNil(o.OriginType) {
		toSerialize["origin_type"] = o.OriginType
	}
	if !IsNil(o.Address) {
		toSerialize["address"] = o.Address
	}
	if !IsNil(o.MinimumTlsVersion) {
		toSerialize["minimum_tls_version"] = o.MinimumTlsVersion
	}
	if !IsNil(o.OriginProtocolPolicy) {
		toSerialize["origin_protocol_policy"] = o.OriginProtocolPolicy
	}
	if !IsNil(o.HostHeader) {
		toSerialize["host_header"] = o.HostHeader
	}
	if !IsNil(o.BrowserCacheSettings) {
		toSerialize["browser_cache_settings"] = o.BrowserCacheSettings
	}
	if !IsNil(o.CdnCacheSettings) {
		toSerialize["cdn_cache_settings"] = o.CdnCacheSettings
	}
	if !IsNil(o.BrowserCacheSettingsMaximumTtl) {
		toSerialize["browser_cache_settings_maximum_ttl"] = o.BrowserCacheSettingsMaximumTtl
	}
	if !IsNil(o.CdnCacheSettingsMaximumTtl) {
		toSerialize["cdn_cache_settings_maximum_ttl"] = o.CdnCacheSettingsMaximumTtl
	}
	if !IsNil(o.DebugRules) {
		toSerialize["debug_rules"] = o.DebugRules
	}
	if !IsNil(o.SupportedCiphers) {
		toSerialize["supported_ciphers"] = o.SupportedCiphers
	}
	if o.HttpPort != nil {
		toSerialize["http_port"] = o.HttpPort
	}
	if o.HttpsPort != nil {
		toSerialize["https_port"] = o.HttpsPort
	}
	if !IsNil(o.L2Caching) {
		toSerialize["l2_caching"] = o.L2Caching
	}
	if !IsNil(o.Http3) {
		toSerialize["http3"] = o.Http3
	}
	if !IsNil(o.Websocket) {
		toSerialize["websocket"] = o.Websocket
	}
	return toSerialize, nil
}

func (o *CreateApplicationRequest) UnmarshalJSON(data []byte) (err error) {
	// This validates that all required properties are included in the JSON object
	// by unmarshalling the object into a generic map with string keys and checking
	// that every required field exists as a key in the generic map.
	requiredProperties := []string{
		"name",
	}

	allProperties := make(map[string]interface{})

	err = json.Unmarshal(data, &allProperties)

	if err != nil {
		return err;
	}

	for _, requiredProperty := range(requiredProperties) {
		if _, exists := allProperties[requiredProperty]; !exists {
			return fmt.Errorf("no value given for required property %v", requiredProperty)
		}
	}

	varCreateApplicationRequest := _CreateApplicationRequest{}

	decoder := json.NewDecoder(bytes.NewReader(data))
	decoder.DisallowUnknownFields()
	err = decoder.Decode(&varCreateApplicationRequest)

	if err != nil {
		return err
	}

	*o = CreateApplicationRequest(varCreateApplicationRequest)

	return err
}

type NullableCreateApplicationRequest struct {
	value *CreateApplicationRequest
	isSet bool
}

func (v NullableCreateApplicationRequest) Get() *CreateApplicationRequest {
	return v.value
}

func (v *NullableCreateApplicationRequest) Set(val *CreateApplicationRequest) {
	v.value = val
	v.isSet = true
}

func (v NullableCreateApplicationRequest) IsSet() bool {
	return v.isSet
}

func (v *NullableCreateApplicationRequest) Unset() {
	v.value = nil
	v.isSet = false
}

func NewNullableCreateApplicationRequest(val *CreateApplicationRequest) *NullableCreateApplicationRequest {
	return &NullableCreateApplicationRequest{value: val, isSet: true}
}

func (v NullableCreateApplicationRequest) MarshalJSON() ([]byte, error) {
	return json.Marshal(v.value)
}

func (v *NullableCreateApplicationRequest) UnmarshalJSON(src []byte) error {
	v.isSet = true
	return json.Unmarshal(src, &v.value)
}


