/*
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 ApplicationPutRequest type satisfies the MappedNullable interface at compile time
var _ MappedNullable = &ApplicationPutRequest{}

// ApplicationPutRequest struct for ApplicationPutRequest
type ApplicationPutRequest struct {
	Name string `json:"name"`
	DeliveryProtocol *string `json:"delivery_protocol,omitempty"`
	HttpPort interface{} `json:"http_port,omitempty"`
	HttpsPort interface{} `json:"https_port,omitempty"`
	MinimumTlsVersion *string `json:"minimum_tls_version,omitempty"`
	Active *bool `json:"active,omitempty"`
	ApplicationAcceleration *bool `json:"application_acceleration,omitempty"`
	DeviceDetection *bool `json:"device_detection,omitempty"`
	EdgeFirewall *bool `json:"edge_firewall,omitempty"`
	EdgeFunctions *bool `json:"edge_functions,omitempty"`
	ImageOptimization *bool `json:"image_optimization,omitempty"`
	L2Caching *bool `json:"l2_caching,omitempty"`
	LoadBalancer *bool `json:"load_balancer,omitempty"`
	RawLogs *bool `json:"raw_logs,omitempty"`
	WebApplicationFirewall *bool `json:"web_application_firewall,omitempty"`
	DebugRules *bool `json:"debug_rules,omitempty"`
	Http3 *bool `json:"http3,omitempty"`
	Websocket *bool `json:"websocket,omitempty"`
	SupportedCiphers *string `json:"supported_ciphers,omitempty"`
}

type _ApplicationPutRequest ApplicationPutRequest

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

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

// GetName returns the Name field value
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) GetNameOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Name, true
}

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

// GetDeliveryProtocol returns the DeliveryProtocol field value if set, zero value otherwise.
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) SetDeliveryProtocol(v string) {
	o.DeliveryProtocol = &v
}

// GetHttpPort returns the HttpPort field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) SetHttpsPort(v interface{}) {
	o.HttpsPort = v
}

// GetMinimumTlsVersion returns the MinimumTlsVersion field value if set, zero value otherwise.
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) SetMinimumTlsVersion(v string) {
	o.MinimumTlsVersion = &v
}

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

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

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

	return false
}

// SetActive gets a reference to the given bool and assigns it to the Active field.
func (o *ApplicationPutRequest) SetActive(v bool) {
	o.Active = &v
}

// GetApplicationAcceleration returns the ApplicationAcceleration field value if set, zero value otherwise.
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) SetApplicationAcceleration(v bool) {
	o.ApplicationAcceleration = &v
}

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

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

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

	return false
}

// SetDeviceDetection gets a reference to the given bool and assigns it to the DeviceDetection field.
func (o *ApplicationPutRequest) SetDeviceDetection(v bool) {
	o.DeviceDetection = &v
}

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

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

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

	return false
}

// SetEdgeFirewall gets a reference to the given bool and assigns it to the EdgeFirewall field.
func (o *ApplicationPutRequest) SetEdgeFirewall(v bool) {
	o.EdgeFirewall = &v
}

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

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

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

	return false
}

// SetEdgeFunctions gets a reference to the given bool and assigns it to the EdgeFunctions field.
func (o *ApplicationPutRequest) SetEdgeFunctions(v bool) {
	o.EdgeFunctions = &v
}

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

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

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

	return false
}

// SetImageOptimization gets a reference to the given bool and assigns it to the ImageOptimization field.
func (o *ApplicationPutRequest) SetImageOptimization(v bool) {
	o.ImageOptimization = &v
}

// GetL2Caching returns the L2Caching field value if set, zero value otherwise.
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) SetL2Caching(v bool) {
	o.L2Caching = &v
}

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

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

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

	return false
}

// SetLoadBalancer gets a reference to the given bool and assigns it to the LoadBalancer field.
func (o *ApplicationPutRequest) SetLoadBalancer(v bool) {
	o.LoadBalancer = &v
}

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

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

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

	return false
}

// SetRawLogs gets a reference to the given bool and assigns it to the RawLogs field.
func (o *ApplicationPutRequest) SetRawLogs(v bool) {
	o.RawLogs = &v
}

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

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

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

	return false
}

// SetWebApplicationFirewall gets a reference to the given bool and assigns it to the WebApplicationFirewall field.
func (o *ApplicationPutRequest) SetWebApplicationFirewall(v bool) {
	o.WebApplicationFirewall = &v
}

// GetDebugRules returns the DebugRules field value if set, zero value otherwise.
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) SetDebugRules(v bool) {
	o.DebugRules = &v
}

// GetHttp3 returns the Http3 field value if set, zero value otherwise.
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) SetHttp3(v bool) {
	o.Http3 = &v
}

// GetWebsocket returns the Websocket field value if set, zero value otherwise.
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) SetWebsocket(v bool) {
	o.Websocket = &v
}

// GetSupportedCiphers returns the SupportedCiphers field value if set, zero value otherwise.
func (o *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) 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 *ApplicationPutRequest) SetSupportedCiphers(v string) {
	o.SupportedCiphers = &v
}

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

func (o ApplicationPutRequest) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	toSerialize["name"] = o.Name
	if !IsNil(o.DeliveryProtocol) {
		toSerialize["delivery_protocol"] = o.DeliveryProtocol
	}
	if o.HttpPort != nil {
		toSerialize["http_port"] = o.HttpPort
	}
	if o.HttpsPort != nil {
		toSerialize["https_port"] = o.HttpsPort
	}
	if !IsNil(o.MinimumTlsVersion) {
		toSerialize["minimum_tls_version"] = o.MinimumTlsVersion
	}
	if !IsNil(o.Active) {
		toSerialize["active"] = o.Active
	}
	if !IsNil(o.ApplicationAcceleration) {
		toSerialize["application_acceleration"] = o.ApplicationAcceleration
	}
	if !IsNil(o.DeviceDetection) {
		toSerialize["device_detection"] = o.DeviceDetection
	}
	if !IsNil(o.EdgeFirewall) {
		toSerialize["edge_firewall"] = o.EdgeFirewall
	}
	if !IsNil(o.EdgeFunctions) {
		toSerialize["edge_functions"] = o.EdgeFunctions
	}
	if !IsNil(o.ImageOptimization) {
		toSerialize["image_optimization"] = o.ImageOptimization
	}
	if !IsNil(o.L2Caching) {
		toSerialize["l2_caching"] = o.L2Caching
	}
	if !IsNil(o.LoadBalancer) {
		toSerialize["load_balancer"] = o.LoadBalancer
	}
	if !IsNil(o.RawLogs) {
		toSerialize["raw_logs"] = o.RawLogs
	}
	if !IsNil(o.WebApplicationFirewall) {
		toSerialize["web_application_firewall"] = o.WebApplicationFirewall
	}
	if !IsNil(o.DebugRules) {
		toSerialize["debug_rules"] = o.DebugRules
	}
	if !IsNil(o.Http3) {
		toSerialize["http3"] = o.Http3
	}
	if !IsNil(o.Websocket) {
		toSerialize["websocket"] = o.Websocket
	}
	if !IsNil(o.SupportedCiphers) {
		toSerialize["supported_ciphers"] = o.SupportedCiphers
	}
	return toSerialize, nil
}

func (o *ApplicationPutRequest) 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)
		}
	}

	varApplicationPutRequest := _ApplicationPutRequest{}

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

	if err != nil {
		return err
	}

	*o = ApplicationPutRequest(varApplicationPutRequest)

	return err
}

type NullableApplicationPutRequest struct {
	value *ApplicationPutRequest
	isSet bool
}

func (v NullableApplicationPutRequest) Get() *ApplicationPutRequest {
	return v.value
}

func (v *NullableApplicationPutRequest) Set(val *ApplicationPutRequest) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableApplicationPutRequest(val *ApplicationPutRequest) *NullableApplicationPutRequest {
	return &NullableApplicationPutRequest{value: val, isSet: true}
}

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

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


