/*
Daytona

Daytona AI platform API Docs

API version: 1.0
Contact: support@daytona.com
*/

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

package apiclient

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

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

// Organization struct for Organization
type Organization struct {
	// Organization ID
	Id string `json:"id"`
	// Organization name
	Name string `json:"name"`
	// User ID of the organization creator
	CreatedBy string `json:"createdBy"`
	// Personal organization flag
	Personal bool `json:"personal"`
	// Creation timestamp
	CreatedAt time.Time `json:"createdAt"`
	// Last update timestamp
	UpdatedAt time.Time `json:"updatedAt"`
	// Suspended flag
	Suspended bool `json:"suspended"`
	// Suspended at
	SuspendedAt time.Time `json:"suspendedAt"`
	// Suspended reason
	SuspensionReason string `json:"suspensionReason"`
	// Suspended until
	SuspendedUntil time.Time `json:"suspendedUntil"`
	// Suspension cleanup grace period hours
	SuspensionCleanupGracePeriodHours float32 `json:"suspensionCleanupGracePeriodHours"`
	// Max CPU per sandbox
	MaxCpuPerSandbox float32 `json:"maxCpuPerSandbox"`
	// Max memory per sandbox
	MaxMemoryPerSandbox float32 `json:"maxMemoryPerSandbox"`
	// Max disk per sandbox
	MaxDiskPerSandbox float32 `json:"maxDiskPerSandbox"`
	// Time in minutes before an unused snapshot is deactivated
	SnapshotDeactivationTimeoutMinutes float32 `json:"snapshotDeactivationTimeoutMinutes"`
	// Sandbox default network block all
	SandboxLimitedNetworkEgress bool `json:"sandboxLimitedNetworkEgress"`
	// Default region ID
	DefaultRegionId *string `json:"defaultRegionId,omitempty"`
	// Authenticated rate limit per minute
	AuthenticatedRateLimit NullableFloat32 `json:"authenticatedRateLimit"`
	// Sandbox create rate limit per minute
	SandboxCreateRateLimit NullableFloat32 `json:"sandboxCreateRateLimit"`
	// Sandbox lifecycle rate limit per minute
	SandboxLifecycleRateLimit NullableFloat32 `json:"sandboxLifecycleRateLimit"`
	// Experimental configuration
	ExperimentalConfig map[string]interface{} `json:"experimentalConfig"`
	// OpenTelemetry collection configuration
	OtelConfig NullableOtelConfig `json:"otelConfig"`
	// Authenticated rate limit TTL in seconds
	AuthenticatedRateLimitTtlSeconds NullableFloat32 `json:"authenticatedRateLimitTtlSeconds"`
	// Sandbox create rate limit TTL in seconds
	SandboxCreateRateLimitTtlSeconds NullableFloat32 `json:"sandboxCreateRateLimitTtlSeconds"`
	// Sandbox lifecycle rate limit TTL in seconds
	SandboxLifecycleRateLimitTtlSeconds NullableFloat32 `json:"sandboxLifecycleRateLimitTtlSeconds"`
	AdditionalProperties map[string]interface{}
}

type _Organization Organization

// NewOrganization instantiates a new Organization 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 NewOrganization(id string, name string, createdBy string, personal bool, createdAt time.Time, updatedAt time.Time, suspended bool, suspendedAt time.Time, suspensionReason string, suspendedUntil time.Time, suspensionCleanupGracePeriodHours float32, maxCpuPerSandbox float32, maxMemoryPerSandbox float32, maxDiskPerSandbox float32, snapshotDeactivationTimeoutMinutes float32, sandboxLimitedNetworkEgress bool, authenticatedRateLimit NullableFloat32, sandboxCreateRateLimit NullableFloat32, sandboxLifecycleRateLimit NullableFloat32, experimentalConfig map[string]interface{}, otelConfig NullableOtelConfig, authenticatedRateLimitTtlSeconds NullableFloat32, sandboxCreateRateLimitTtlSeconds NullableFloat32, sandboxLifecycleRateLimitTtlSeconds NullableFloat32) *Organization {
	this := Organization{}
	this.Id = id
	this.Name = name
	this.CreatedBy = createdBy
	this.Personal = personal
	this.CreatedAt = createdAt
	this.UpdatedAt = updatedAt
	this.Suspended = suspended
	this.SuspendedAt = suspendedAt
	this.SuspensionReason = suspensionReason
	this.SuspendedUntil = suspendedUntil
	this.SuspensionCleanupGracePeriodHours = suspensionCleanupGracePeriodHours
	this.MaxCpuPerSandbox = maxCpuPerSandbox
	this.MaxMemoryPerSandbox = maxMemoryPerSandbox
	this.MaxDiskPerSandbox = maxDiskPerSandbox
	this.SnapshotDeactivationTimeoutMinutes = snapshotDeactivationTimeoutMinutes
	this.SandboxLimitedNetworkEgress = sandboxLimitedNetworkEgress
	this.AuthenticatedRateLimit = authenticatedRateLimit
	this.SandboxCreateRateLimit = sandboxCreateRateLimit
	this.SandboxLifecycleRateLimit = sandboxLifecycleRateLimit
	this.ExperimentalConfig = experimentalConfig
	this.OtelConfig = otelConfig
	this.AuthenticatedRateLimitTtlSeconds = authenticatedRateLimitTtlSeconds
	this.SandboxCreateRateLimitTtlSeconds = sandboxCreateRateLimitTtlSeconds
	this.SandboxLifecycleRateLimitTtlSeconds = sandboxLifecycleRateLimitTtlSeconds
	return &this
}

// NewOrganizationWithDefaults instantiates a new Organization 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 NewOrganizationWithDefaults() *Organization {
	this := Organization{}
	var snapshotDeactivationTimeoutMinutes float32 = 20160
	this.SnapshotDeactivationTimeoutMinutes = snapshotDeactivationTimeoutMinutes
	return &this
}

// GetId returns the Id field value
func (o *Organization) GetId() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Id
}

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

// SetId sets field value
func (o *Organization) SetId(v string) {
	o.Id = v
}

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

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

// GetCreatedBy returns the CreatedBy field value
func (o *Organization) GetCreatedBy() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.CreatedBy
}

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

// SetCreatedBy sets field value
func (o *Organization) SetCreatedBy(v string) {
	o.CreatedBy = v
}

// GetPersonal returns the Personal field value
func (o *Organization) GetPersonal() bool {
	if o == nil {
		var ret bool
		return ret
	}

	return o.Personal
}

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

// SetPersonal sets field value
func (o *Organization) SetPersonal(v bool) {
	o.Personal = v
}

// GetCreatedAt returns the CreatedAt field value
func (o *Organization) GetCreatedAt() time.Time {
	if o == nil {
		var ret time.Time
		return ret
	}

	return o.CreatedAt
}

// GetCreatedAtOk returns a tuple with the CreatedAt field value
// and a boolean to check if the value has been set.
func (o *Organization) GetCreatedAtOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return &o.CreatedAt, true
}

// SetCreatedAt sets field value
func (o *Organization) SetCreatedAt(v time.Time) {
	o.CreatedAt = v
}

// GetUpdatedAt returns the UpdatedAt field value
func (o *Organization) GetUpdatedAt() time.Time {
	if o == nil {
		var ret time.Time
		return ret
	}

	return o.UpdatedAt
}

// GetUpdatedAtOk returns a tuple with the UpdatedAt field value
// and a boolean to check if the value has been set.
func (o *Organization) GetUpdatedAtOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return &o.UpdatedAt, true
}

// SetUpdatedAt sets field value
func (o *Organization) SetUpdatedAt(v time.Time) {
	o.UpdatedAt = v
}

// GetSuspended returns the Suspended field value
func (o *Organization) GetSuspended() bool {
	if o == nil {
		var ret bool
		return ret
	}

	return o.Suspended
}

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

// SetSuspended sets field value
func (o *Organization) SetSuspended(v bool) {
	o.Suspended = v
}

// GetSuspendedAt returns the SuspendedAt field value
func (o *Organization) GetSuspendedAt() time.Time {
	if o == nil {
		var ret time.Time
		return ret
	}

	return o.SuspendedAt
}

// GetSuspendedAtOk returns a tuple with the SuspendedAt field value
// and a boolean to check if the value has been set.
func (o *Organization) GetSuspendedAtOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return &o.SuspendedAt, true
}

// SetSuspendedAt sets field value
func (o *Organization) SetSuspendedAt(v time.Time) {
	o.SuspendedAt = v
}

// GetSuspensionReason returns the SuspensionReason field value
func (o *Organization) GetSuspensionReason() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.SuspensionReason
}

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

// SetSuspensionReason sets field value
func (o *Organization) SetSuspensionReason(v string) {
	o.SuspensionReason = v
}

// GetSuspendedUntil returns the SuspendedUntil field value
func (o *Organization) GetSuspendedUntil() time.Time {
	if o == nil {
		var ret time.Time
		return ret
	}

	return o.SuspendedUntil
}

// GetSuspendedUntilOk returns a tuple with the SuspendedUntil field value
// and a boolean to check if the value has been set.
func (o *Organization) GetSuspendedUntilOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return &o.SuspendedUntil, true
}

// SetSuspendedUntil sets field value
func (o *Organization) SetSuspendedUntil(v time.Time) {
	o.SuspendedUntil = v
}

// GetSuspensionCleanupGracePeriodHours returns the SuspensionCleanupGracePeriodHours field value
func (o *Organization) GetSuspensionCleanupGracePeriodHours() float32 {
	if o == nil {
		var ret float32
		return ret
	}

	return o.SuspensionCleanupGracePeriodHours
}

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

// SetSuspensionCleanupGracePeriodHours sets field value
func (o *Organization) SetSuspensionCleanupGracePeriodHours(v float32) {
	o.SuspensionCleanupGracePeriodHours = v
}

// GetMaxCpuPerSandbox returns the MaxCpuPerSandbox field value
func (o *Organization) GetMaxCpuPerSandbox() float32 {
	if o == nil {
		var ret float32
		return ret
	}

	return o.MaxCpuPerSandbox
}

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

// SetMaxCpuPerSandbox sets field value
func (o *Organization) SetMaxCpuPerSandbox(v float32) {
	o.MaxCpuPerSandbox = v
}

// GetMaxMemoryPerSandbox returns the MaxMemoryPerSandbox field value
func (o *Organization) GetMaxMemoryPerSandbox() float32 {
	if o == nil {
		var ret float32
		return ret
	}

	return o.MaxMemoryPerSandbox
}

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

// SetMaxMemoryPerSandbox sets field value
func (o *Organization) SetMaxMemoryPerSandbox(v float32) {
	o.MaxMemoryPerSandbox = v
}

// GetMaxDiskPerSandbox returns the MaxDiskPerSandbox field value
func (o *Organization) GetMaxDiskPerSandbox() float32 {
	if o == nil {
		var ret float32
		return ret
	}

	return o.MaxDiskPerSandbox
}

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

// SetMaxDiskPerSandbox sets field value
func (o *Organization) SetMaxDiskPerSandbox(v float32) {
	o.MaxDiskPerSandbox = v
}

// GetSnapshotDeactivationTimeoutMinutes returns the SnapshotDeactivationTimeoutMinutes field value
func (o *Organization) GetSnapshotDeactivationTimeoutMinutes() float32 {
	if o == nil {
		var ret float32
		return ret
	}

	return o.SnapshotDeactivationTimeoutMinutes
}

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

// SetSnapshotDeactivationTimeoutMinutes sets field value
func (o *Organization) SetSnapshotDeactivationTimeoutMinutes(v float32) {
	o.SnapshotDeactivationTimeoutMinutes = v
}

// GetSandboxLimitedNetworkEgress returns the SandboxLimitedNetworkEgress field value
func (o *Organization) GetSandboxLimitedNetworkEgress() bool {
	if o == nil {
		var ret bool
		return ret
	}

	return o.SandboxLimitedNetworkEgress
}

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

// SetSandboxLimitedNetworkEgress sets field value
func (o *Organization) SetSandboxLimitedNetworkEgress(v bool) {
	o.SandboxLimitedNetworkEgress = v
}

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

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

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

	return false
}

// SetDefaultRegionId gets a reference to the given string and assigns it to the DefaultRegionId field.
func (o *Organization) SetDefaultRegionId(v string) {
	o.DefaultRegionId = &v
}

// GetAuthenticatedRateLimit returns the AuthenticatedRateLimit field value
// If the value is explicit nil, the zero value for float32 will be returned
func (o *Organization) GetAuthenticatedRateLimit() float32 {
	if o == nil || o.AuthenticatedRateLimit.Get() == nil {
		var ret float32
		return ret
	}

	return *o.AuthenticatedRateLimit.Get()
}

// GetAuthenticatedRateLimitOk returns a tuple with the AuthenticatedRateLimit field value
// 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 *Organization) GetAuthenticatedRateLimitOk() (*float32, bool) {
	if o == nil {
		return nil, false
	}
	return o.AuthenticatedRateLimit.Get(), o.AuthenticatedRateLimit.IsSet()
}

// SetAuthenticatedRateLimit sets field value
func (o *Organization) SetAuthenticatedRateLimit(v float32) {
	o.AuthenticatedRateLimit.Set(&v)
}

// GetSandboxCreateRateLimit returns the SandboxCreateRateLimit field value
// If the value is explicit nil, the zero value for float32 will be returned
func (o *Organization) GetSandboxCreateRateLimit() float32 {
	if o == nil || o.SandboxCreateRateLimit.Get() == nil {
		var ret float32
		return ret
	}

	return *o.SandboxCreateRateLimit.Get()
}

// GetSandboxCreateRateLimitOk returns a tuple with the SandboxCreateRateLimit field value
// 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 *Organization) GetSandboxCreateRateLimitOk() (*float32, bool) {
	if o == nil {
		return nil, false
	}
	return o.SandboxCreateRateLimit.Get(), o.SandboxCreateRateLimit.IsSet()
}

// SetSandboxCreateRateLimit sets field value
func (o *Organization) SetSandboxCreateRateLimit(v float32) {
	o.SandboxCreateRateLimit.Set(&v)
}

// GetSandboxLifecycleRateLimit returns the SandboxLifecycleRateLimit field value
// If the value is explicit nil, the zero value for float32 will be returned
func (o *Organization) GetSandboxLifecycleRateLimit() float32 {
	if o == nil || o.SandboxLifecycleRateLimit.Get() == nil {
		var ret float32
		return ret
	}

	return *o.SandboxLifecycleRateLimit.Get()
}

// GetSandboxLifecycleRateLimitOk returns a tuple with the SandboxLifecycleRateLimit field value
// 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 *Organization) GetSandboxLifecycleRateLimitOk() (*float32, bool) {
	if o == nil {
		return nil, false
	}
	return o.SandboxLifecycleRateLimit.Get(), o.SandboxLifecycleRateLimit.IsSet()
}

// SetSandboxLifecycleRateLimit sets field value
func (o *Organization) SetSandboxLifecycleRateLimit(v float32) {
	o.SandboxLifecycleRateLimit.Set(&v)
}

// GetExperimentalConfig returns the ExperimentalConfig field value
func (o *Organization) GetExperimentalConfig() map[string]interface{} {
	if o == nil {
		var ret map[string]interface{}
		return ret
	}

	return o.ExperimentalConfig
}

// GetExperimentalConfigOk returns a tuple with the ExperimentalConfig field value
// and a boolean to check if the value has been set.
func (o *Organization) GetExperimentalConfigOk() (map[string]interface{}, bool) {
	if o == nil {
		return map[string]interface{}{}, false
	}
	return o.ExperimentalConfig, true
}

// SetExperimentalConfig sets field value
func (o *Organization) SetExperimentalConfig(v map[string]interface{}) {
	o.ExperimentalConfig = v
}

// GetOtelConfig returns the OtelConfig field value
// If the value is explicit nil, the zero value for OtelConfig will be returned
func (o *Organization) GetOtelConfig() OtelConfig {
	if o == nil || o.OtelConfig.Get() == nil {
		var ret OtelConfig
		return ret
	}

	return *o.OtelConfig.Get()
}

// GetOtelConfigOk returns a tuple with the OtelConfig field value
// 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 *Organization) GetOtelConfigOk() (*OtelConfig, bool) {
	if o == nil {
		return nil, false
	}
	return o.OtelConfig.Get(), o.OtelConfig.IsSet()
}

// SetOtelConfig sets field value
func (o *Organization) SetOtelConfig(v OtelConfig) {
	o.OtelConfig.Set(&v)
}

// GetAuthenticatedRateLimitTtlSeconds returns the AuthenticatedRateLimitTtlSeconds field value
// If the value is explicit nil, the zero value for float32 will be returned
func (o *Organization) GetAuthenticatedRateLimitTtlSeconds() float32 {
	if o == nil || o.AuthenticatedRateLimitTtlSeconds.Get() == nil {
		var ret float32
		return ret
	}

	return *o.AuthenticatedRateLimitTtlSeconds.Get()
}

// GetAuthenticatedRateLimitTtlSecondsOk returns a tuple with the AuthenticatedRateLimitTtlSeconds field value
// 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 *Organization) GetAuthenticatedRateLimitTtlSecondsOk() (*float32, bool) {
	if o == nil {
		return nil, false
	}
	return o.AuthenticatedRateLimitTtlSeconds.Get(), o.AuthenticatedRateLimitTtlSeconds.IsSet()
}

// SetAuthenticatedRateLimitTtlSeconds sets field value
func (o *Organization) SetAuthenticatedRateLimitTtlSeconds(v float32) {
	o.AuthenticatedRateLimitTtlSeconds.Set(&v)
}

// GetSandboxCreateRateLimitTtlSeconds returns the SandboxCreateRateLimitTtlSeconds field value
// If the value is explicit nil, the zero value for float32 will be returned
func (o *Organization) GetSandboxCreateRateLimitTtlSeconds() float32 {
	if o == nil || o.SandboxCreateRateLimitTtlSeconds.Get() == nil {
		var ret float32
		return ret
	}

	return *o.SandboxCreateRateLimitTtlSeconds.Get()
}

// GetSandboxCreateRateLimitTtlSecondsOk returns a tuple with the SandboxCreateRateLimitTtlSeconds field value
// 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 *Organization) GetSandboxCreateRateLimitTtlSecondsOk() (*float32, bool) {
	if o == nil {
		return nil, false
	}
	return o.SandboxCreateRateLimitTtlSeconds.Get(), o.SandboxCreateRateLimitTtlSeconds.IsSet()
}

// SetSandboxCreateRateLimitTtlSeconds sets field value
func (o *Organization) SetSandboxCreateRateLimitTtlSeconds(v float32) {
	o.SandboxCreateRateLimitTtlSeconds.Set(&v)
}

// GetSandboxLifecycleRateLimitTtlSeconds returns the SandboxLifecycleRateLimitTtlSeconds field value
// If the value is explicit nil, the zero value for float32 will be returned
func (o *Organization) GetSandboxLifecycleRateLimitTtlSeconds() float32 {
	if o == nil || o.SandboxLifecycleRateLimitTtlSeconds.Get() == nil {
		var ret float32
		return ret
	}

	return *o.SandboxLifecycleRateLimitTtlSeconds.Get()
}

// GetSandboxLifecycleRateLimitTtlSecondsOk returns a tuple with the SandboxLifecycleRateLimitTtlSeconds field value
// 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 *Organization) GetSandboxLifecycleRateLimitTtlSecondsOk() (*float32, bool) {
	if o == nil {
		return nil, false
	}
	return o.SandboxLifecycleRateLimitTtlSeconds.Get(), o.SandboxLifecycleRateLimitTtlSeconds.IsSet()
}

// SetSandboxLifecycleRateLimitTtlSeconds sets field value
func (o *Organization) SetSandboxLifecycleRateLimitTtlSeconds(v float32) {
	o.SandboxLifecycleRateLimitTtlSeconds.Set(&v)
}

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

func (o Organization) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	toSerialize["id"] = o.Id
	toSerialize["name"] = o.Name
	toSerialize["createdBy"] = o.CreatedBy
	toSerialize["personal"] = o.Personal
	toSerialize["createdAt"] = o.CreatedAt
	toSerialize["updatedAt"] = o.UpdatedAt
	toSerialize["suspended"] = o.Suspended
	toSerialize["suspendedAt"] = o.SuspendedAt
	toSerialize["suspensionReason"] = o.SuspensionReason
	toSerialize["suspendedUntil"] = o.SuspendedUntil
	toSerialize["suspensionCleanupGracePeriodHours"] = o.SuspensionCleanupGracePeriodHours
	toSerialize["maxCpuPerSandbox"] = o.MaxCpuPerSandbox
	toSerialize["maxMemoryPerSandbox"] = o.MaxMemoryPerSandbox
	toSerialize["maxDiskPerSandbox"] = o.MaxDiskPerSandbox
	toSerialize["snapshotDeactivationTimeoutMinutes"] = o.SnapshotDeactivationTimeoutMinutes
	toSerialize["sandboxLimitedNetworkEgress"] = o.SandboxLimitedNetworkEgress
	if !IsNil(o.DefaultRegionId) {
		toSerialize["defaultRegionId"] = o.DefaultRegionId
	}
	toSerialize["authenticatedRateLimit"] = o.AuthenticatedRateLimit.Get()
	toSerialize["sandboxCreateRateLimit"] = o.SandboxCreateRateLimit.Get()
	toSerialize["sandboxLifecycleRateLimit"] = o.SandboxLifecycleRateLimit.Get()
	toSerialize["experimentalConfig"] = o.ExperimentalConfig
	toSerialize["otelConfig"] = o.OtelConfig.Get()
	toSerialize["authenticatedRateLimitTtlSeconds"] = o.AuthenticatedRateLimitTtlSeconds.Get()
	toSerialize["sandboxCreateRateLimitTtlSeconds"] = o.SandboxCreateRateLimitTtlSeconds.Get()
	toSerialize["sandboxLifecycleRateLimitTtlSeconds"] = o.SandboxLifecycleRateLimitTtlSeconds.Get()

	for key, value := range o.AdditionalProperties {
		toSerialize[key] = value
	}

	return toSerialize, nil
}

func (o *Organization) 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{
		"id",
		"name",
		"createdBy",
		"personal",
		"createdAt",
		"updatedAt",
		"suspended",
		"suspendedAt",
		"suspensionReason",
		"suspendedUntil",
		"suspensionCleanupGracePeriodHours",
		"maxCpuPerSandbox",
		"maxMemoryPerSandbox",
		"maxDiskPerSandbox",
		"snapshotDeactivationTimeoutMinutes",
		"sandboxLimitedNetworkEgress",
		"authenticatedRateLimit",
		"sandboxCreateRateLimit",
		"sandboxLifecycleRateLimit",
		"experimentalConfig",
		"otelConfig",
		"authenticatedRateLimitTtlSeconds",
		"sandboxCreateRateLimitTtlSeconds",
		"sandboxLifecycleRateLimitTtlSeconds",
	}

	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)
		}
	}

	varOrganization := _Organization{}

	err = json.Unmarshal(data, &varOrganization)

	if err != nil {
		return err
	}

	*o = Organization(varOrganization)

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

	if err = json.Unmarshal(data, &additionalProperties); err == nil {
		delete(additionalProperties, "id")
		delete(additionalProperties, "name")
		delete(additionalProperties, "createdBy")
		delete(additionalProperties, "personal")
		delete(additionalProperties, "createdAt")
		delete(additionalProperties, "updatedAt")
		delete(additionalProperties, "suspended")
		delete(additionalProperties, "suspendedAt")
		delete(additionalProperties, "suspensionReason")
		delete(additionalProperties, "suspendedUntil")
		delete(additionalProperties, "suspensionCleanupGracePeriodHours")
		delete(additionalProperties, "maxCpuPerSandbox")
		delete(additionalProperties, "maxMemoryPerSandbox")
		delete(additionalProperties, "maxDiskPerSandbox")
		delete(additionalProperties, "snapshotDeactivationTimeoutMinutes")
		delete(additionalProperties, "sandboxLimitedNetworkEgress")
		delete(additionalProperties, "defaultRegionId")
		delete(additionalProperties, "authenticatedRateLimit")
		delete(additionalProperties, "sandboxCreateRateLimit")
		delete(additionalProperties, "sandboxLifecycleRateLimit")
		delete(additionalProperties, "experimentalConfig")
		delete(additionalProperties, "otelConfig")
		delete(additionalProperties, "authenticatedRateLimitTtlSeconds")
		delete(additionalProperties, "sandboxCreateRateLimitTtlSeconds")
		delete(additionalProperties, "sandboxLifecycleRateLimitTtlSeconds")
		o.AdditionalProperties = additionalProperties
	}

	return err
}

type NullableOrganization struct {
	value *Organization
	isSet bool
}

func (v NullableOrganization) Get() *Organization {
	return v.value
}

func (v *NullableOrganization) Set(val *Organization) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableOrganization(val *Organization) *NullableOrganization {
	return &NullableOrganization{value: val, isSet: true}
}

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

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


