/*
Finverse Public

Documentation of the early finverse services

API version: 0.0.1
Contact: devs@finverse.com
*/

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

package finverse

import (
	"encoding/json"
)

// IdentityDateOfBirth struct for IdentityDateOfBirth
type IdentityDateOfBirth struct {
	Raw         *string  `json:"raw,omitempty"`
	DateOfBirth *string  `json:"date_of_birth,omitempty"`
	Source      *string  `json:"source,omitempty"`
	SourceIds   []string `json:"source_ids,omitempty"`
	AccountIds  []string `json:"account_ids,omitempty"`
}

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

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

// GetRaw returns the Raw field value if set, zero value otherwise.
func (o *IdentityDateOfBirth) GetRaw() string {
	if o == nil || o.Raw == nil {
		var ret string
		return ret
	}
	return *o.Raw
}

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

// HasRaw returns a boolean if a field has been set.
func (o *IdentityDateOfBirth) HasRaw() bool {
	if o != nil && o.Raw != nil {
		return true
	}

	return false
}

// SetRaw gets a reference to the given string and assigns it to the Raw field.
func (o *IdentityDateOfBirth) SetRaw(v string) {
	o.Raw = &v
}

// GetDateOfBirth returns the DateOfBirth field value if set, zero value otherwise.
func (o *IdentityDateOfBirth) GetDateOfBirth() string {
	if o == nil || o.DateOfBirth == nil {
		var ret string
		return ret
	}
	return *o.DateOfBirth
}

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

// HasDateOfBirth returns a boolean if a field has been set.
func (o *IdentityDateOfBirth) HasDateOfBirth() bool {
	if o != nil && o.DateOfBirth != nil {
		return true
	}

	return false
}

// SetDateOfBirth gets a reference to the given string and assigns it to the DateOfBirth field.
func (o *IdentityDateOfBirth) SetDateOfBirth(v string) {
	o.DateOfBirth = &v
}

// GetSource returns the Source field value if set, zero value otherwise.
func (o *IdentityDateOfBirth) GetSource() string {
	if o == nil || o.Source == nil {
		var ret string
		return ret
	}
	return *o.Source
}

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

// HasSource returns a boolean if a field has been set.
func (o *IdentityDateOfBirth) HasSource() bool {
	if o != nil && o.Source != nil {
		return true
	}

	return false
}

// SetSource gets a reference to the given string and assigns it to the Source field.
func (o *IdentityDateOfBirth) SetSource(v string) {
	o.Source = &v
}

// GetSourceIds returns the SourceIds field value if set, zero value otherwise.
func (o *IdentityDateOfBirth) GetSourceIds() []string {
	if o == nil || o.SourceIds == nil {
		var ret []string
		return ret
	}
	return o.SourceIds
}

// GetSourceIdsOk returns a tuple with the SourceIds field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *IdentityDateOfBirth) GetSourceIdsOk() ([]string, bool) {
	if o == nil || o.SourceIds == nil {
		return nil, false
	}
	return o.SourceIds, true
}

// HasSourceIds returns a boolean if a field has been set.
func (o *IdentityDateOfBirth) HasSourceIds() bool {
	if o != nil && o.SourceIds != nil {
		return true
	}

	return false
}

// SetSourceIds gets a reference to the given []string and assigns it to the SourceIds field.
func (o *IdentityDateOfBirth) SetSourceIds(v []string) {
	o.SourceIds = v
}

// GetAccountIds returns the AccountIds field value if set, zero value otherwise.
func (o *IdentityDateOfBirth) GetAccountIds() []string {
	if o == nil || o.AccountIds == nil {
		var ret []string
		return ret
	}
	return o.AccountIds
}

// GetAccountIdsOk returns a tuple with the AccountIds field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *IdentityDateOfBirth) GetAccountIdsOk() ([]string, bool) {
	if o == nil || o.AccountIds == nil {
		return nil, false
	}
	return o.AccountIds, true
}

// HasAccountIds returns a boolean if a field has been set.
func (o *IdentityDateOfBirth) HasAccountIds() bool {
	if o != nil && o.AccountIds != nil {
		return true
	}

	return false
}

// SetAccountIds gets a reference to the given []string and assigns it to the AccountIds field.
func (o *IdentityDateOfBirth) SetAccountIds(v []string) {
	o.AccountIds = v
}

func (o IdentityDateOfBirth) MarshalJSON() ([]byte, error) {
	toSerialize := map[string]interface{}{}
	if o.Raw != nil {
		toSerialize["raw"] = o.Raw
	}
	if o.DateOfBirth != nil {
		toSerialize["date_of_birth"] = o.DateOfBirth
	}
	if o.Source != nil {
		toSerialize["source"] = o.Source
	}
	if o.SourceIds != nil {
		toSerialize["source_ids"] = o.SourceIds
	}
	if o.AccountIds != nil {
		toSerialize["account_ids"] = o.AccountIds
	}
	return json.Marshal(toSerialize)
}

type NullableIdentityDateOfBirth struct {
	value *IdentityDateOfBirth
	isSet bool
}

func (v NullableIdentityDateOfBirth) Get() *IdentityDateOfBirth {
	return v.value
}

func (v *NullableIdentityDateOfBirth) Set(val *IdentityDateOfBirth) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableIdentityDateOfBirth(val *IdentityDateOfBirth) *NullableIdentityDateOfBirth {
	return &NullableIdentityDateOfBirth{value: val, isSet: true}
}

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

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