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

// V1Exchange Represents an exchange.
type V1Exchange struct {
	// Gets or sets the exchange ID.
	ExchangeId NullableString `json:"exchange_id,omitempty"`
	// Gets or sets the website URL of the exchange.
	Website NullableString `json:"website,omitempty"`
	// Gets or sets the name of the exchange.
	Name NullableString `json:"name,omitempty"`
	DataStart NullableString `json:"data_start,omitempty"`
	DataEnd NullableString `json:"data_end,omitempty"`
	// Gets or sets the start date of quote data.
	DataQuoteStart NullableTime `json:"data_quote_start,omitempty"`
	// Gets or sets the end date of quote data.
	DataQuoteEnd NullableTime `json:"data_quote_end,omitempty"`
	// Gets or sets the start date of order book data.
	DataOrderbookStart NullableTime `json:"data_orderbook_start,omitempty"`
	// Gets or sets the end date of order book data.
	DataOrderbookEnd NullableTime `json:"data_orderbook_end,omitempty"`
	// Gets or sets the start date of trade data.
	DataTradeStart NullableTime `json:"data_trade_start,omitempty"`
	// Gets or sets the end date of trade data.
	DataTradeEnd NullableTime `json:"data_trade_end,omitempty"`
	// Gets or sets the number of trades.
	DataTradeCount NullableInt64 `json:"data_trade_count,omitempty"`
	// Gets or sets the number of symbols.
	DataSymbolsCount NullableInt64 `json:"data_symbols_count,omitempty"`
	// Gets or sets the USD volume in the last 1 hour.
	Volume1hrsUsd NullableFloat64 `json:"volume_1hrs_usd,omitempty"`
	// Gets or sets the USD volume in the last 1 day.
	Volume1dayUsd NullableFloat64 `json:"volume_1day_usd,omitempty"`
	// Gets or sets the USD volume in the last 1 month.
	Volume1mthUsd NullableFloat64 `json:"volume_1mth_usd,omitempty"`
	// Gets or sets the list of metric IDs.
	MetricId []string `json:"metric_id,omitempty"`
	// Gets or sets the list of icons for the exchange.
	Icons []V1Icon `json:"icons,omitempty"`
	// Rank of the exchange.
	Rank *float64 `json:"rank,omitempty"`
	// Status of the integration
	IntegrationStatus NullableString `json:"integration_status,omitempty"`
}

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

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

// GetExchangeId returns the ExchangeId field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Exchange) 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 *V1Exchange) 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 *V1Exchange) 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 *V1Exchange) SetExchangeId(v string) {
	o.ExchangeId.Set(&v)
}
// SetExchangeIdNil sets the value for ExchangeId to be an explicit nil
func (o *V1Exchange) SetExchangeIdNil() {
	o.ExchangeId.Set(nil)
}

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

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

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

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

	return false
}

// SetWebsite gets a reference to the given NullableString and assigns it to the Website field.
func (o *V1Exchange) SetWebsite(v string) {
	o.Website.Set(&v)
}
// SetWebsiteNil sets the value for Website to be an explicit nil
func (o *V1Exchange) SetWebsiteNil() {
	o.Website.Set(nil)
}

// UnsetWebsite ensures that no value is present for Website, not even an explicit nil
func (o *V1Exchange) UnsetWebsite() {
	o.Website.Unset()
}

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

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

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

	return false
}

// SetName gets a reference to the given NullableString and assigns it to the Name field.
func (o *V1Exchange) SetName(v string) {
	o.Name.Set(&v)
}
// SetNameNil sets the value for Name to be an explicit nil
func (o *V1Exchange) SetNameNil() {
	o.Name.Set(nil)
}

// UnsetName ensures that no value is present for Name, not even an explicit nil
func (o *V1Exchange) UnsetName() {
	o.Name.Unset()
}

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

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

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

	return false
}

// SetDataStart gets a reference to the given NullableString and assigns it to the DataStart field.
func (o *V1Exchange) SetDataStart(v string) {
	o.DataStart.Set(&v)
}
// SetDataStartNil sets the value for DataStart to be an explicit nil
func (o *V1Exchange) SetDataStartNil() {
	o.DataStart.Set(nil)
}

// UnsetDataStart ensures that no value is present for DataStart, not even an explicit nil
func (o *V1Exchange) UnsetDataStart() {
	o.DataStart.Unset()
}

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

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

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

	return false
}

// SetDataEnd gets a reference to the given NullableString and assigns it to the DataEnd field.
func (o *V1Exchange) SetDataEnd(v string) {
	o.DataEnd.Set(&v)
}
// SetDataEndNil sets the value for DataEnd to be an explicit nil
func (o *V1Exchange) SetDataEndNil() {
	o.DataEnd.Set(nil)
}

// UnsetDataEnd ensures that no value is present for DataEnd, not even an explicit nil
func (o *V1Exchange) UnsetDataEnd() {
	o.DataEnd.Unset()
}

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

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

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

	return false
}

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

// UnsetDataQuoteStart ensures that no value is present for DataQuoteStart, not even an explicit nil
func (o *V1Exchange) UnsetDataQuoteStart() {
	o.DataQuoteStart.Unset()
}

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

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

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

	return false
}

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

// UnsetDataQuoteEnd ensures that no value is present for DataQuoteEnd, not even an explicit nil
func (o *V1Exchange) UnsetDataQuoteEnd() {
	o.DataQuoteEnd.Unset()
}

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

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

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

	return false
}

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

// UnsetDataOrderbookStart ensures that no value is present for DataOrderbookStart, not even an explicit nil
func (o *V1Exchange) UnsetDataOrderbookStart() {
	o.DataOrderbookStart.Unset()
}

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

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

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

	return false
}

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

// UnsetDataOrderbookEnd ensures that no value is present for DataOrderbookEnd, not even an explicit nil
func (o *V1Exchange) UnsetDataOrderbookEnd() {
	o.DataOrderbookEnd.Unset()
}

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

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

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

	return false
}

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

// UnsetDataTradeStart ensures that no value is present for DataTradeStart, not even an explicit nil
func (o *V1Exchange) UnsetDataTradeStart() {
	o.DataTradeStart.Unset()
}

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

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

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

	return false
}

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

// UnsetDataTradeEnd ensures that no value is present for DataTradeEnd, not even an explicit nil
func (o *V1Exchange) UnsetDataTradeEnd() {
	o.DataTradeEnd.Unset()
}

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

// GetDataTradeCountOk returns a tuple with the DataTradeCount 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 *V1Exchange) GetDataTradeCountOk() (*int64, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataTradeCount.Get(), o.DataTradeCount.IsSet()
}

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

	return false
}

// SetDataTradeCount gets a reference to the given NullableInt64 and assigns it to the DataTradeCount field.
func (o *V1Exchange) SetDataTradeCount(v int64) {
	o.DataTradeCount.Set(&v)
}
// SetDataTradeCountNil sets the value for DataTradeCount to be an explicit nil
func (o *V1Exchange) SetDataTradeCountNil() {
	o.DataTradeCount.Set(nil)
}

// UnsetDataTradeCount ensures that no value is present for DataTradeCount, not even an explicit nil
func (o *V1Exchange) UnsetDataTradeCount() {
	o.DataTradeCount.Unset()
}

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

// GetDataSymbolsCountOk returns a tuple with the DataSymbolsCount 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 *V1Exchange) GetDataSymbolsCountOk() (*int64, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataSymbolsCount.Get(), o.DataSymbolsCount.IsSet()
}

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

	return false
}

// SetDataSymbolsCount gets a reference to the given NullableInt64 and assigns it to the DataSymbolsCount field.
func (o *V1Exchange) SetDataSymbolsCount(v int64) {
	o.DataSymbolsCount.Set(&v)
}
// SetDataSymbolsCountNil sets the value for DataSymbolsCount to be an explicit nil
func (o *V1Exchange) SetDataSymbolsCountNil() {
	o.DataSymbolsCount.Set(nil)
}

// UnsetDataSymbolsCount ensures that no value is present for DataSymbolsCount, not even an explicit nil
func (o *V1Exchange) UnsetDataSymbolsCount() {
	o.DataSymbolsCount.Unset()
}

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

// GetVolume1hrsUsdOk returns a tuple with the Volume1hrsUsd 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 *V1Exchange) GetVolume1hrsUsdOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.Volume1hrsUsd.Get(), o.Volume1hrsUsd.IsSet()
}

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

	return false
}

// SetVolume1hrsUsd gets a reference to the given NullableFloat64 and assigns it to the Volume1hrsUsd field.
func (o *V1Exchange) SetVolume1hrsUsd(v float64) {
	o.Volume1hrsUsd.Set(&v)
}
// SetVolume1hrsUsdNil sets the value for Volume1hrsUsd to be an explicit nil
func (o *V1Exchange) SetVolume1hrsUsdNil() {
	o.Volume1hrsUsd.Set(nil)
}

// UnsetVolume1hrsUsd ensures that no value is present for Volume1hrsUsd, not even an explicit nil
func (o *V1Exchange) UnsetVolume1hrsUsd() {
	o.Volume1hrsUsd.Unset()
}

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

// GetVolume1dayUsdOk returns a tuple with the Volume1dayUsd 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 *V1Exchange) GetVolume1dayUsdOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.Volume1dayUsd.Get(), o.Volume1dayUsd.IsSet()
}

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

	return false
}

// SetVolume1dayUsd gets a reference to the given NullableFloat64 and assigns it to the Volume1dayUsd field.
func (o *V1Exchange) SetVolume1dayUsd(v float64) {
	o.Volume1dayUsd.Set(&v)
}
// SetVolume1dayUsdNil sets the value for Volume1dayUsd to be an explicit nil
func (o *V1Exchange) SetVolume1dayUsdNil() {
	o.Volume1dayUsd.Set(nil)
}

// UnsetVolume1dayUsd ensures that no value is present for Volume1dayUsd, not even an explicit nil
func (o *V1Exchange) UnsetVolume1dayUsd() {
	o.Volume1dayUsd.Unset()
}

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

// GetVolume1mthUsdOk returns a tuple with the Volume1mthUsd 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 *V1Exchange) GetVolume1mthUsdOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.Volume1mthUsd.Get(), o.Volume1mthUsd.IsSet()
}

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

	return false
}

// SetVolume1mthUsd gets a reference to the given NullableFloat64 and assigns it to the Volume1mthUsd field.
func (o *V1Exchange) SetVolume1mthUsd(v float64) {
	o.Volume1mthUsd.Set(&v)
}
// SetVolume1mthUsdNil sets the value for Volume1mthUsd to be an explicit nil
func (o *V1Exchange) SetVolume1mthUsdNil() {
	o.Volume1mthUsd.Set(nil)
}

// UnsetVolume1mthUsd ensures that no value is present for Volume1mthUsd, not even an explicit nil
func (o *V1Exchange) UnsetVolume1mthUsd() {
	o.Volume1mthUsd.Unset()
}

// GetMetricId returns the MetricId field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Exchange) GetMetricId() []string {
	if o == nil {
		var ret []string
		return ret
	}
	return o.MetricId
}

// GetMetricIdOk returns a tuple with the MetricId 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 *V1Exchange) GetMetricIdOk() ([]string, bool) {
	if o == nil || IsNil(o.MetricId) {
		return nil, false
	}
	return o.MetricId, true
}

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

	return false
}

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

// GetIcons returns the Icons field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Exchange) GetIcons() []V1Icon {
	if o == nil {
		var ret []V1Icon
		return ret
	}
	return o.Icons
}

// GetIconsOk returns a tuple with the Icons 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 *V1Exchange) GetIconsOk() ([]V1Icon, bool) {
	if o == nil || IsNil(o.Icons) {
		return nil, false
	}
	return o.Icons, true
}

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

	return false
}

// SetIcons gets a reference to the given []V1Icon and assigns it to the Icons field.
func (o *V1Exchange) SetIcons(v []V1Icon) {
	o.Icons = v
}

// GetRank returns the Rank field value if set, zero value otherwise.
func (o *V1Exchange) GetRank() float64 {
	if o == nil || IsNil(o.Rank) {
		var ret float64
		return ret
	}
	return *o.Rank
}

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

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

	return false
}

// SetRank gets a reference to the given float64 and assigns it to the Rank field.
func (o *V1Exchange) SetRank(v float64) {
	o.Rank = &v
}

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

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

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

	return false
}

// SetIntegrationStatus gets a reference to the given NullableString and assigns it to the IntegrationStatus field.
func (o *V1Exchange) SetIntegrationStatus(v string) {
	o.IntegrationStatus.Set(&v)
}
// SetIntegrationStatusNil sets the value for IntegrationStatus to be an explicit nil
func (o *V1Exchange) SetIntegrationStatusNil() {
	o.IntegrationStatus.Set(nil)
}

// UnsetIntegrationStatus ensures that no value is present for IntegrationStatus, not even an explicit nil
func (o *V1Exchange) UnsetIntegrationStatus() {
	o.IntegrationStatus.Unset()
}

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

func (o V1Exchange) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if o.ExchangeId.IsSet() {
		toSerialize["exchange_id"] = o.ExchangeId.Get()
	}
	if o.Website.IsSet() {
		toSerialize["website"] = o.Website.Get()
	}
	if o.Name.IsSet() {
		toSerialize["name"] = o.Name.Get()
	}
	if o.DataStart.IsSet() {
		toSerialize["data_start"] = o.DataStart.Get()
	}
	if o.DataEnd.IsSet() {
		toSerialize["data_end"] = o.DataEnd.Get()
	}
	if o.DataQuoteStart.IsSet() {
		toSerialize["data_quote_start"] = o.DataQuoteStart.Get()
	}
	if o.DataQuoteEnd.IsSet() {
		toSerialize["data_quote_end"] = o.DataQuoteEnd.Get()
	}
	if o.DataOrderbookStart.IsSet() {
		toSerialize["data_orderbook_start"] = o.DataOrderbookStart.Get()
	}
	if o.DataOrderbookEnd.IsSet() {
		toSerialize["data_orderbook_end"] = o.DataOrderbookEnd.Get()
	}
	if o.DataTradeStart.IsSet() {
		toSerialize["data_trade_start"] = o.DataTradeStart.Get()
	}
	if o.DataTradeEnd.IsSet() {
		toSerialize["data_trade_end"] = o.DataTradeEnd.Get()
	}
	if o.DataTradeCount.IsSet() {
		toSerialize["data_trade_count"] = o.DataTradeCount.Get()
	}
	if o.DataSymbolsCount.IsSet() {
		toSerialize["data_symbols_count"] = o.DataSymbolsCount.Get()
	}
	if o.Volume1hrsUsd.IsSet() {
		toSerialize["volume_1hrs_usd"] = o.Volume1hrsUsd.Get()
	}
	if o.Volume1dayUsd.IsSet() {
		toSerialize["volume_1day_usd"] = o.Volume1dayUsd.Get()
	}
	if o.Volume1mthUsd.IsSet() {
		toSerialize["volume_1mth_usd"] = o.Volume1mthUsd.Get()
	}
	if o.MetricId != nil {
		toSerialize["metric_id"] = o.MetricId
	}
	if o.Icons != nil {
		toSerialize["icons"] = o.Icons
	}
	if !IsNil(o.Rank) {
		toSerialize["rank"] = o.Rank
	}
	if o.IntegrationStatus.IsSet() {
		toSerialize["integration_status"] = o.IntegrationStatus.Get()
	}
	return toSerialize, nil
}

type NullableV1Exchange struct {
	value *V1Exchange
	isSet bool
}

func (v NullableV1Exchange) Get() *V1Exchange {
	return v.value
}

func (v *NullableV1Exchange) Set(val *V1Exchange) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableV1Exchange(val *V1Exchange) *NullableV1Exchange {
	return &NullableV1Exchange{value: val, isSet: true}
}

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

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


