/*
CoinAPI Indexes REST API

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

API version: v1
Contact: support@apibricks.io
*/

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

package openapi

import (
	"encoding/json"
	"time"
)

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

// IndexesIndexDefinitionInputData struct for IndexesIndexDefinitionInputData
type IndexesIndexDefinitionInputData struct {
	ExchangeId NullableString `json:"exchangeId,omitempty"`
	ExchangeSymbolId NullableString `json:"exchangeSymbolId,omitempty"`
	BaseAssetId NullableString `json:"baseAssetId,omitempty"`
	QuoteAssetId NullableString `json:"quoteAssetId,omitempty"`
	BeginDate NullableTime `json:"beginDate,omitempty"`
	EndDate NullableTime `json:"endDate,omitempty"`
	Status NullableString `json:"status,omitempty"`
	StatusInfo NullableString `json:"statusInfo,omitempty"`
	LastModificationTime *time.Time `json:"lastModificationTime,omitempty"`
}

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

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

// GetExchangeId returns the ExchangeId field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *IndexesIndexDefinitionInputData) GetExchangeId() string {
	if o == nil || IsNil(o.ExchangeId.Get()) {
		var ret string
		return ret
	}
	return *o.ExchangeId.Get()
}

// GetExchangeIdOk returns a tuple with the ExchangeId 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 *IndexesIndexDefinitionInputData) GetExchangeIdOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.ExchangeId.Get(), o.ExchangeId.IsSet()
}

// HasExchangeId returns a boolean if a field has been set.
func (o *IndexesIndexDefinitionInputData) HasExchangeId() bool {
	if o != nil && o.ExchangeId.IsSet() {
		return true
	}

	return false
}

// SetExchangeId gets a reference to the given NullableString and assigns it to the ExchangeId field.
func (o *IndexesIndexDefinitionInputData) SetExchangeId(v string) {
	o.ExchangeId.Set(&v)
}
// SetExchangeIdNil sets the value for ExchangeId to be an explicit nil
func (o *IndexesIndexDefinitionInputData) SetExchangeIdNil() {
	o.ExchangeId.Set(nil)
}

// UnsetExchangeId ensures that no value is present for ExchangeId, not even an explicit nil
func (o *IndexesIndexDefinitionInputData) UnsetExchangeId() {
	o.ExchangeId.Unset()
}

// GetExchangeSymbolId returns the ExchangeSymbolId field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *IndexesIndexDefinitionInputData) GetExchangeSymbolId() string {
	if o == nil || IsNil(o.ExchangeSymbolId.Get()) {
		var ret string
		return ret
	}
	return *o.ExchangeSymbolId.Get()
}

// GetExchangeSymbolIdOk returns a tuple with the ExchangeSymbolId 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 *IndexesIndexDefinitionInputData) GetExchangeSymbolIdOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.ExchangeSymbolId.Get(), o.ExchangeSymbolId.IsSet()
}

// HasExchangeSymbolId returns a boolean if a field has been set.
func (o *IndexesIndexDefinitionInputData) HasExchangeSymbolId() bool {
	if o != nil && o.ExchangeSymbolId.IsSet() {
		return true
	}

	return false
}

// SetExchangeSymbolId gets a reference to the given NullableString and assigns it to the ExchangeSymbolId field.
func (o *IndexesIndexDefinitionInputData) SetExchangeSymbolId(v string) {
	o.ExchangeSymbolId.Set(&v)
}
// SetExchangeSymbolIdNil sets the value for ExchangeSymbolId to be an explicit nil
func (o *IndexesIndexDefinitionInputData) SetExchangeSymbolIdNil() {
	o.ExchangeSymbolId.Set(nil)
}

// UnsetExchangeSymbolId ensures that no value is present for ExchangeSymbolId, not even an explicit nil
func (o *IndexesIndexDefinitionInputData) UnsetExchangeSymbolId() {
	o.ExchangeSymbolId.Unset()
}

// GetBaseAssetId returns the BaseAssetId field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *IndexesIndexDefinitionInputData) GetBaseAssetId() string {
	if o == nil || IsNil(o.BaseAssetId.Get()) {
		var ret string
		return ret
	}
	return *o.BaseAssetId.Get()
}

// GetBaseAssetIdOk returns a tuple with the BaseAssetId 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 *IndexesIndexDefinitionInputData) GetBaseAssetIdOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.BaseAssetId.Get(), o.BaseAssetId.IsSet()
}

// HasBaseAssetId returns a boolean if a field has been set.
func (o *IndexesIndexDefinitionInputData) HasBaseAssetId() bool {
	if o != nil && o.BaseAssetId.IsSet() {
		return true
	}

	return false
}

// SetBaseAssetId gets a reference to the given NullableString and assigns it to the BaseAssetId field.
func (o *IndexesIndexDefinitionInputData) SetBaseAssetId(v string) {
	o.BaseAssetId.Set(&v)
}
// SetBaseAssetIdNil sets the value for BaseAssetId to be an explicit nil
func (o *IndexesIndexDefinitionInputData) SetBaseAssetIdNil() {
	o.BaseAssetId.Set(nil)
}

// UnsetBaseAssetId ensures that no value is present for BaseAssetId, not even an explicit nil
func (o *IndexesIndexDefinitionInputData) UnsetBaseAssetId() {
	o.BaseAssetId.Unset()
}

// GetQuoteAssetId returns the QuoteAssetId field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *IndexesIndexDefinitionInputData) GetQuoteAssetId() string {
	if o == nil || IsNil(o.QuoteAssetId.Get()) {
		var ret string
		return ret
	}
	return *o.QuoteAssetId.Get()
}

// GetQuoteAssetIdOk returns a tuple with the QuoteAssetId 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 *IndexesIndexDefinitionInputData) GetQuoteAssetIdOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.QuoteAssetId.Get(), o.QuoteAssetId.IsSet()
}

// HasQuoteAssetId returns a boolean if a field has been set.
func (o *IndexesIndexDefinitionInputData) HasQuoteAssetId() bool {
	if o != nil && o.QuoteAssetId.IsSet() {
		return true
	}

	return false
}

// SetQuoteAssetId gets a reference to the given NullableString and assigns it to the QuoteAssetId field.
func (o *IndexesIndexDefinitionInputData) SetQuoteAssetId(v string) {
	o.QuoteAssetId.Set(&v)
}
// SetQuoteAssetIdNil sets the value for QuoteAssetId to be an explicit nil
func (o *IndexesIndexDefinitionInputData) SetQuoteAssetIdNil() {
	o.QuoteAssetId.Set(nil)
}

// UnsetQuoteAssetId ensures that no value is present for QuoteAssetId, not even an explicit nil
func (o *IndexesIndexDefinitionInputData) UnsetQuoteAssetId() {
	o.QuoteAssetId.Unset()
}

// GetBeginDate returns the BeginDate field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *IndexesIndexDefinitionInputData) GetBeginDate() time.Time {
	if o == nil || IsNil(o.BeginDate.Get()) {
		var ret time.Time
		return ret
	}
	return *o.BeginDate.Get()
}

// GetBeginDateOk returns a tuple with the BeginDate 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 *IndexesIndexDefinitionInputData) GetBeginDateOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return o.BeginDate.Get(), o.BeginDate.IsSet()
}

// HasBeginDate returns a boolean if a field has been set.
func (o *IndexesIndexDefinitionInputData) HasBeginDate() bool {
	if o != nil && o.BeginDate.IsSet() {
		return true
	}

	return false
}

// SetBeginDate gets a reference to the given NullableTime and assigns it to the BeginDate field.
func (o *IndexesIndexDefinitionInputData) SetBeginDate(v time.Time) {
	o.BeginDate.Set(&v)
}
// SetBeginDateNil sets the value for BeginDate to be an explicit nil
func (o *IndexesIndexDefinitionInputData) SetBeginDateNil() {
	o.BeginDate.Set(nil)
}

// UnsetBeginDate ensures that no value is present for BeginDate, not even an explicit nil
func (o *IndexesIndexDefinitionInputData) UnsetBeginDate() {
	o.BeginDate.Unset()
}

// GetEndDate returns the EndDate field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *IndexesIndexDefinitionInputData) GetEndDate() time.Time {
	if o == nil || IsNil(o.EndDate.Get()) {
		var ret time.Time
		return ret
	}
	return *o.EndDate.Get()
}

// GetEndDateOk returns a tuple with the EndDate 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 *IndexesIndexDefinitionInputData) GetEndDateOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return o.EndDate.Get(), o.EndDate.IsSet()
}

// HasEndDate returns a boolean if a field has been set.
func (o *IndexesIndexDefinitionInputData) HasEndDate() bool {
	if o != nil && o.EndDate.IsSet() {
		return true
	}

	return false
}

// SetEndDate gets a reference to the given NullableTime and assigns it to the EndDate field.
func (o *IndexesIndexDefinitionInputData) SetEndDate(v time.Time) {
	o.EndDate.Set(&v)
}
// SetEndDateNil sets the value for EndDate to be an explicit nil
func (o *IndexesIndexDefinitionInputData) SetEndDateNil() {
	o.EndDate.Set(nil)
}

// UnsetEndDate ensures that no value is present for EndDate, not even an explicit nil
func (o *IndexesIndexDefinitionInputData) UnsetEndDate() {
	o.EndDate.Unset()
}

// GetStatus returns the Status field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *IndexesIndexDefinitionInputData) GetStatus() string {
	if o == nil || IsNil(o.Status.Get()) {
		var ret string
		return ret
	}
	return *o.Status.Get()
}

// GetStatusOk returns a tuple with the Status 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 *IndexesIndexDefinitionInputData) GetStatusOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.Status.Get(), o.Status.IsSet()
}

// HasStatus returns a boolean if a field has been set.
func (o *IndexesIndexDefinitionInputData) HasStatus() bool {
	if o != nil && o.Status.IsSet() {
		return true
	}

	return false
}

// SetStatus gets a reference to the given NullableString and assigns it to the Status field.
func (o *IndexesIndexDefinitionInputData) SetStatus(v string) {
	o.Status.Set(&v)
}
// SetStatusNil sets the value for Status to be an explicit nil
func (o *IndexesIndexDefinitionInputData) SetStatusNil() {
	o.Status.Set(nil)
}

// UnsetStatus ensures that no value is present for Status, not even an explicit nil
func (o *IndexesIndexDefinitionInputData) UnsetStatus() {
	o.Status.Unset()
}

// GetStatusInfo returns the StatusInfo field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *IndexesIndexDefinitionInputData) GetStatusInfo() string {
	if o == nil || IsNil(o.StatusInfo.Get()) {
		var ret string
		return ret
	}
	return *o.StatusInfo.Get()
}

// GetStatusInfoOk returns a tuple with the StatusInfo 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 *IndexesIndexDefinitionInputData) GetStatusInfoOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.StatusInfo.Get(), o.StatusInfo.IsSet()
}

// HasStatusInfo returns a boolean if a field has been set.
func (o *IndexesIndexDefinitionInputData) HasStatusInfo() bool {
	if o != nil && o.StatusInfo.IsSet() {
		return true
	}

	return false
}

// SetStatusInfo gets a reference to the given NullableString and assigns it to the StatusInfo field.
func (o *IndexesIndexDefinitionInputData) SetStatusInfo(v string) {
	o.StatusInfo.Set(&v)
}
// SetStatusInfoNil sets the value for StatusInfo to be an explicit nil
func (o *IndexesIndexDefinitionInputData) SetStatusInfoNil() {
	o.StatusInfo.Set(nil)
}

// UnsetStatusInfo ensures that no value is present for StatusInfo, not even an explicit nil
func (o *IndexesIndexDefinitionInputData) UnsetStatusInfo() {
	o.StatusInfo.Unset()
}

// GetLastModificationTime returns the LastModificationTime field value if set, zero value otherwise.
func (o *IndexesIndexDefinitionInputData) GetLastModificationTime() time.Time {
	if o == nil || IsNil(o.LastModificationTime) {
		var ret time.Time
		return ret
	}
	return *o.LastModificationTime
}

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

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

	return false
}

// SetLastModificationTime gets a reference to the given time.Time and assigns it to the LastModificationTime field.
func (o *IndexesIndexDefinitionInputData) SetLastModificationTime(v time.Time) {
	o.LastModificationTime = &v
}

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

func (o IndexesIndexDefinitionInputData) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if o.ExchangeId.IsSet() {
		toSerialize["exchangeId"] = o.ExchangeId.Get()
	}
	if o.ExchangeSymbolId.IsSet() {
		toSerialize["exchangeSymbolId"] = o.ExchangeSymbolId.Get()
	}
	if o.BaseAssetId.IsSet() {
		toSerialize["baseAssetId"] = o.BaseAssetId.Get()
	}
	if o.QuoteAssetId.IsSet() {
		toSerialize["quoteAssetId"] = o.QuoteAssetId.Get()
	}
	if o.BeginDate.IsSet() {
		toSerialize["beginDate"] = o.BeginDate.Get()
	}
	if o.EndDate.IsSet() {
		toSerialize["endDate"] = o.EndDate.Get()
	}
	if o.Status.IsSet() {
		toSerialize["status"] = o.Status.Get()
	}
	if o.StatusInfo.IsSet() {
		toSerialize["statusInfo"] = o.StatusInfo.Get()
	}
	if !IsNil(o.LastModificationTime) {
		toSerialize["lastModificationTime"] = o.LastModificationTime
	}
	return toSerialize, nil
}

type NullableIndexesIndexDefinitionInputData struct {
	value *IndexesIndexDefinitionInputData
	isSet bool
}

func (v NullableIndexesIndexDefinitionInputData) Get() *IndexesIndexDefinitionInputData {
	return v.value
}

func (v *NullableIndexesIndexDefinitionInputData) Set(val *IndexesIndexDefinitionInputData) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableIndexesIndexDefinitionInputData(val *IndexesIndexDefinitionInputData) *NullableIndexesIndexDefinitionInputData {
	return &NullableIndexesIndexDefinitionInputData{value: val, isSet: true}
}

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

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


