=begin #Intrinio API #Welcome to the Intrinio API! Through our Financial Data Marketplace, we offer a wide selection of financial data feed APIs sourced by our own proprietary processes as well as from many data vendors. For a complete API request / response reference please view the [Intrinio API documentation](https://docs.intrinio.com/documentation/api_v2). If you need additional help in using the API, please visit the [Intrinio website](https://intrinio.com) and click on the chat icon in the lower right corner. OpenAPI spec version: 2.27.5 Generated by: https://github.com/swagger-api/swagger-codegen.git Swagger Codegen version: unset =end require 'date' module Intrinio # Exchange Traded Fund (ETF) including extensive metadata class ETF # The Intrinio ID of the ETF attr_accessor :id # The common name of the ETF attr_accessor :name # The common ticker symbol for the ETF attr_accessor :ticker # The OpenFIGI ticker for the ETF attr_accessor :figi_ticker # Reuters Instrument Code (RIC) for the ETF attr_accessor :ric # International Securities Identification Number (ISIN) for the ETF attr_accessor :isin # Stock Exchange Daily Official List (SEDOL) for the ETF attr_accessor :sedol # The exchange Market Identifier Code (MIC) from the International Standards Organization (ISO) attr_accessor :exchange_mic # The fund manager (ETF) or issuing bank (ETN) attr_accessor :sponsor # High-level classification for the ETF based on its intended investment objective attr_accessor :type # The ETF description as published by the ETF sponsor attr_accessor :description # Inception Date for the ETF as published by the ETF sponsor attr_accessor :inception_date # The last date on which there was a change in a classifications data field for this ETF attr_accessor :data_change_date # The date on which this ETF was de-listed if it is no longer listed attr_accessor :close_date # If true, the ETF is still listed on an exchange; if false, the ETF is no longer listed attr_accessor :is_live_listed # The legal structure as defined in the prospectus attr_accessor :legal_structure # Intra-day NAV ticker for the Exchange Traded Fund (ETF) attr_accessor :intraday_nav_ticker # The primary ticker field is used for Exchange Traded Products (ETPs) that have multiple listings and share classes. If an ETP has multiple listings or share classes, the same primary ticker is assigned to all the listings and share classes attr_accessor :primary_ticker # 2 letter ISO country code for the country of the primary listing attr_accessor :primary_ticker_country_code # Geographic region in the country of the primary listing falls attr_accessor :primary_listing_region # Gross expense net of Fee Waivers, as a percentage of net assets as published by the ETF Sponsor attr_accessor :net_expense_ratio # Captures the underlying nature of the securities in the Exchanged Traded Product (ETP) attr_accessor :asset_class # If 'asset_class' field is classified as 'Other Asset Types' this field captures the specific category of the underlying assets attr_accessor :other_asset_types # Equity ETFs are classified as falling into categories based on the description of their investment strategy in the prospectus. Examples ('Mega Cap', 'Large Cap', 'Mid Cap', etc.) attr_accessor :market_cap_range # If true, the ETF is an equity ETF and holds only stocks listed on NYSE attr_accessor :holds_only_nyse_stocks # If false, the ETF is an equity ETF and holds only stocks listed on Nasdaq attr_accessor :holds_only_nasdaq_stocks # Classifies equity ETFs as either 'Growth' or Value' based on the stated style tilt in the ETF prospectus. Equity ETFs that do not have a stated style tilt are classified as 'Core / Blend' attr_accessor :growth_value_tilt # For ETFs that are classified as 'Growth' in 'growth_value_tilt', this field further identifies those where the stocks in the ETF are both selected and weighted based on their growth (style factor) scores attr_accessor :growth_type # For ETFs that are classified as 'Value' in 'growth_value_tilt', this field further identifies those where the stocks in the ETF are both selected and weighted based on their value (style factor) scores attr_accessor :value_type # For equity ETFs that aim to provide targeted exposure to a sector or industry, this field identifies the Sector that it provides the exposure to attr_accessor :sector # For equity ETFs that aim to provide targeted exposure to an industry, this field identifies the Industry that it provides the exposure to. attr_accessor :industry # For equity ETFs that aim to provide targeted exposure to a sub-industry, this field identifies the sub-industry that it provides the exposure to attr_accessor :sub_industry # For equity ETFs that aim to provide targeted exposure to a specific investment theme that cuts across GICS sectors, this field identifies the specific cross-sector theme. Examples ('Agri-business', 'Natural Resources', 'Green Investing', etc.) attr_accessor :cross_sector_theme # For ETFs that are classified as 'Natural Resources' in the 'cross_sector_theme' field, this field provides further detail on the type of Natural Resources exposure. attr_accessor :natural_resources_type # For equity ETFs, identifies those ETFs where the underlying fund holdings will not hold financials stocks, based on the funds intended objective attr_accessor :excludes_financials # For equity ETFs, identifies those ETFs where the underlying fund holdings will not hold technology stocks, based on the funds intended objective attr_accessor :excludes_technology # Takes the value of 'Domestic' for US exposure, 'International' for non-US exposure and 'Global' for exposure that includes all regions including the US attr_accessor :us_or_excludes_us # This field identifies the stage of development of the markets that the ETF provides exposure to attr_accessor :developed_emerging # This field is populated if the ETF provides targeted exposure to a specific type of geography-based grouping that does not fall into a specific country or continent grouping. Examples ('BRIC', 'Chindia', etc.) attr_accessor :specialized_region # This field is populated if the ETF provides targeted exposure to a specific continent or country within that Continent attr_accessor :continent # For ETFs that are classified as 'Latin America' in the 'continent' field, this field provides further detail on the type of regional exposure attr_accessor :latin_america_sub_group # For ETFs that are classified as 'Europe' in the 'continent' field, this field provides further detail on the type of regional exposure attr_accessor :europe_sub_group # For ETFs that are classified as 'Asia' in the 'continent' field, this field provides further detail on the type of regional exposure attr_accessor :asia_sub_group # This field is populated if the ETF provides targeted exposure to a specific country attr_accessor :specific_country # For ETFs that are classified as 'China' in the 'country' field, this field provides further detail on the type of exposure in the underlying securities attr_accessor :china_listing_location # Takes the value of a US state if the ETF provides targeted exposure to the municipal bonds or equities of companies operating in a specific state in the US attr_accessor :us_state # For ETFs that provide targeted real estate exposure, this field is populated if the ETF provides targeted exposure to a specific segment of the real estate market attr_accessor :real_estate # For ETFs that track an underlying index, this field provides detail on the index weighting type attr_accessor :index_weighting_scheme # For ETFs that take the value 'Market Cap Weighted' in the 'index_weighting_scheme' field, this field provides detail on the market cap weighting type attr_accessor :market_cap_weighting_type # For ETFs that take the value ‘Fundamental Weighted’ in the 'index_weighting_scheme' field, this field provides detail on the fundamental weighting methodology attr_accessor :fundamental_weighting_type # For ETFs that take the value 'Dividend Weighted' in the 'index_weighting_scheme' field, this field provides detail on the dividend weighting methodology attr_accessor :dividend_weighting_type # For ETFs where 'asset_class_type' is 'Bonds', this field provides detail on the type of bonds held in the ETF attr_accessor :bond_type # For bond ETFs that take the value 'Treasury & Government' in 'bond_type', this field provides detail on the exposure attr_accessor :government_bond_types # For bond ETFs that take the value 'Municipal' in 'bond_type', this field provides additional detail on the geographic exposure attr_accessor :municipal_bond_region # For bond ETFs that take the value 'Municipal' in 'bond_type', this field identifies those ETFs that specifically provide exposure to Variable Rate Demand Obligations attr_accessor :municipal_vrdo # For bond ETFs that take the value 'Mortgage' in 'bond_type', this field provides additional detail on the type of underlying securities attr_accessor :mortgage_bond_types # For all US bond ETFs, this field provides additional detail on the tax treatment of the underlying securities attr_accessor :bond_tax_status # For all bond ETFs, this field helps to identify if the ETF provides targeted exposure to securities of a specific credit quality range attr_accessor :credit_quality # For all bond ETFs, this field helps to identify if the ETF provides targeted exposure to securities of a specific maturity range attr_accessor :average_maturity # For all bond ETFs that take the value 'Specific Maturity Year' in the 'average_maturity' field, this field specifies the calendar year attr_accessor :specific_maturity_year # For all bond ETFs, this field provides additional detail on the currency denomination of the underlying securities attr_accessor :bond_currency_denomination # For bond ETFs, this field identifies those ETFs that specifically hold bonds in a laddered structure, where the bonds are scheduled to mature in an annual, sequential structure attr_accessor :laddered # For bond ETFs, this field identifies those ETFs that specifically hold zero coupon Treasury Bills attr_accessor :zero_coupon # For bond ETFs, this field identifies those ETFs that specifically hold floating rate bonds attr_accessor :floating_rate # For municipal bond ETFs, this field identifies those ETFs that specifically hold Build America Bonds attr_accessor :build_america_bonds # For ETFs where 'asset_class_type' is 'Commodities', this field provides detail on the type of commodities held in the ETF attr_accessor :commodity_types # For ETFs where 'commodity_type' is 'Energy', this field provides detail on the type of energy exposure provided by the ETF attr_accessor :energy_type # For ETFs where 'commodity_type' is 'Agricultural', this field provides detail on the type of agricultural exposure provided by the ETF attr_accessor :agricultural_type # For ETFs where 'commodity_type' is 'Gold & Metals', this field provides detail on the type of exposure provided by the ETF attr_accessor :metal_type # This field is populated if the ETF provides inverse or leveraged exposure attr_accessor :inverse_leveraged # For ETFs where 'asset_class_type' is 'Target Date / MultiAsset', this field provides detail on the type of commodities held in the ETF attr_accessor :target_date_multi_asset_type # This field is populated if the ETF’s strategy involves hedging currency exposure attr_accessor :currency_hedged # This field is populated if the ETF’s strategy involves providing exposure to the movements of a currency or involves hedging currency exposure attr_accessor :currency_pair # This field is populated if the ETF’s strategy involves providing exposure to a specific social or environmental theme attr_accessor :social_environmental_type # This field is populated if the ETF has a value of 'Clean Energy' in the 'social_environmental_type' field. attr_accessor :clean_energy_type # This field is populated if the ETF has an intended investment objective of holding dividend-oriented stocks as stated in the prospectus attr_accessor :dividend_type # This field is populated if the ETF has a value of 'Dividend – Regular Payors' in the 'dividend_type' field attr_accessor :regular_dividend_payor_type # If true, the ETF’s investment objective explicitly specifies that it holds MLPs as an intended part of its investment strategy attr_accessor :holds_ml_ps # If true, the ETF’s investment objective explicitly specifies that it holds preferred stock as an intended part of its investment strategy attr_accessor :holds_preferred_stock # IF true, if the ETF’s investment objective explicitly specifies that it holds closed end funds as an intended part of its investment strategy attr_accessor :holds_closed_end_funds # This field is populated if the ETF has either an index-linked or active strategy that is based on a proprietary quantitative strategy attr_accessor :quant_strategies_type # For ETFs where 'quant_strategies_type' is 'Other Quant Model', this field provides the name of the specific proprietary quant model used as the underlying strategy for the ETF attr_accessor :other_quant_models # For ETFs where 'other_asset_types' is 'Hedge Fund Replication', this field provides detail on the type of hedge fund replication strategy attr_accessor :hedge_fund_type # This field is populated if the ETF holds either listed or over-the-counter derivatives in its portfolio attr_accessor :derivatives_based # If true, he ETF’s investment objective explicitly specifies that it holds American Depositary Receipts (ADRs) as an intended part of its investment strategy attr_accessor :holds_ad_rs # This field identifies whether an ETF is index linked or active attr_accessor :index_linked # This field is populated if the ETF has short exposure in any of its holdings e.g. in a long/short or inverse ETF attr_accessor :includes_short_exposure # This field identifies the name of the underlying index tracked by the ETF, if applicable attr_accessor :index_name # This field identifies the name of the parent index, which represents the broader universe from which the index underlying the ETF is created, if applicable attr_accessor :parent_index # This field identifies the index family to which the index underlying the ETF belongs. The index family is represented as categorized by the index provider attr_accessor :index_family # This field identifies the broader index family to which the index underlying the ETF belongs. The broader index family is represented as categorized by the index provider attr_accessor :broader_index_family # This field identifies the Index provider for the index underlying the ETF, if applicable attr_accessor :index_provider # This field identifies the fund family to which the ETF belongs, as categorized by the ETF Sponsor attr_accessor :fund_family # This field identifies the OpenFIGI ticker for the Index underlying the ETF attr_accessor :index_ticker # If the product is an Exchange Traded Note (ETN), this field identifies the issuing bank attr_accessor :etn_issuing_bank # If the product is an ETN, this field identifies the maturity date for the ETN attr_accessor :etn_maturity_date # For ETFs where 'commodity_type' is 'Livestock', this field provides detail on the type of livestock exposure provided by the ETF attr_accessor :livestock # If the product holds futures contracts, this field identifies those products where the roll strategy is dynamic (rather than entirely rules based), so as to minimize roll costs attr_accessor :dynamic_futures_roll # This field provides the First Bridge code for each Index provider, corresponding to the index underlying the ETF if applicable attr_accessor :index_provider_code # This categorization is created for those users who want every ETF to be ‘forced’ into a single bucket, so that the assets for all categories will always sum to the total market attr_accessor :single_category_designation # The list of countries where the ETF is legally registered for sale. This may differ from where the ETF is domiciled or traded, particularly in Europe attr_accessor :registered_countries # The name of the legal entity that issued the Exchange Traded Product (ETP) attr_accessor :issuing_entity_country_code # If true, the Exchange Traded Product (ETP) is Undertakings for the Collective Investment in Transferable Securities (UCITS) compliant attr_accessor :ucits # The replication structure of the Exchange Traded Product (ETP) attr_accessor :replication_structure # 2 letter ISO country code for the country where the ETP is domiciled attr_accessor :domicile # Base currency of the Exchange Traded Product (ETP) in which the net asset value (NAV) is calculated. Reported using the 3-digit ISO currency code attr_accessor :base_currency # Listing currency of the Exchange Traded Product (ETP) in which it is traded. Reported using the 3-digit ISO currency code attr_accessor :listing_currency # The date on which the Exchange Traded Product (ETP) or share class of the ETP is listed on a specific exchange attr_accessor :fund_listing_date # 2 letter ISO country code for the country where the Exchange Traded Product (ETP) is listed attr_accessor :listing_country_code # The region in which this specific ETF is listed attr_accessor :listing_region # This field identifies whether an ETF provides 'Traditional' beta exposure or 'Smart' beta exposure. ETFs that are active (i.e. non-indexed), leveraged / inverse or have a proprietary quant model (i.e. that don’t provide indexed exposure to a targeted factor) are classified separately attr_accessor :smartvs_traditional_beta # This field provides further detail within the traditional and smart beta categories attr_accessor :smartvs_traditional_beta_level2 # Identifies if an Exchange Traded Fund (ETF) falls into a category that is specifically designed to provide a high yield or income attr_accessor :income_category # Classifies Exchange Traded Products (ETPs) into very broad categories based on its legal structure attr_accessor :etp_structure_type # Net assets in millions of dollars as of the most recent month end attr_accessor :month_end_assets # The percentage of positions turned over in the last 12 months attr_accessor :etf_portfolio_turnover # The FirstBridge unique identifier for the Exchange Traded Fund (ETF) attr_accessor :firstbridge_id # The FirstBridge unique identifier of the parent Exchange Traded Fund (ETF), if applicable attr_accessor :firstbridge_parent_id # The number of holdings for this Exchange Traded Fund (ETF) attr_accessor :number_of_holdings # Attribute mapping from ruby-style variable name to JSON key. def self.attribute_map { :'id' => :'id', :'name' => :'name', :'ticker' => :'ticker', :'figi_ticker' => :'figi_ticker', :'ric' => :'ric', :'isin' => :'isin', :'sedol' => :'sedol', :'exchange_mic' => :'exchange_mic', :'sponsor' => :'sponsor', :'type' => :'type', :'description' => :'description', :'inception_date' => :'inception_date', :'data_change_date' => :'data_change_date', :'close_date' => :'close_date', :'is_live_listed' => :'is_live_listed', :'legal_structure' => :'legal_structure', :'intraday_nav_ticker' => :'intraday_nav_ticker', :'primary_ticker' => :'primary_ticker', :'primary_ticker_country_code' => :'primary_ticker_country_code', :'primary_listing_region' => :'primary_listing_region', :'net_expense_ratio' => :'net_expense_ratio', :'asset_class' => :'asset_class', :'other_asset_types' => :'other_asset_types', :'market_cap_range' => :'market_cap_range', :'holds_only_nyse_stocks' => :'holds_only_nyse_stocks', :'holds_only_nasdaq_stocks' => :'holds_only_nasdaq_stocks', :'growth_value_tilt' => :'growth_value_tilt', :'growth_type' => :'growth_type', :'value_type' => :'value_type', :'sector' => :'sector', :'industry' => :'industry', :'sub_industry' => :'sub_industry', :'cross_sector_theme' => :'cross_sector_theme', :'natural_resources_type' => :'natural_resources_type', :'excludes_financials' => :'excludes_financials', :'excludes_technology' => :'excludes_technology', :'us_or_excludes_us' => :'us_or_excludes_us', :'developed_emerging' => :'developed_emerging', :'specialized_region' => :'specialized_region', :'continent' => :'continent', :'latin_america_sub_group' => :'latin_america_sub_group', :'europe_sub_group' => :'europe_sub_group', :'asia_sub_group' => :'asia_sub_group', :'specific_country' => :'specific_country', :'china_listing_location' => :'china_listing_location', :'us_state' => :'us_state', :'real_estate' => :'real_estate', :'index_weighting_scheme' => :'index_weighting_scheme', :'market_cap_weighting_type' => :'market_cap_weighting_type', :'fundamental_weighting_type' => :'fundamental_weighting_type', :'dividend_weighting_type' => :'dividend_weighting_type', :'bond_type' => :'bond_type', :'government_bond_types' => :'government_bond_types', :'municipal_bond_region' => :'municipal_bond_region', :'municipal_vrdo' => :'municipal_vrdo', :'mortgage_bond_types' => :'mortgage_bond_types', :'bond_tax_status' => :'bond_tax_status', :'credit_quality' => :'credit_quality', :'average_maturity' => :'average_maturity', :'specific_maturity_year' => :'specific_maturity_year', :'bond_currency_denomination' => :'bond_currency_denomination', :'laddered' => :'laddered', :'zero_coupon' => :'zero_coupon', :'floating_rate' => :'floating_rate', :'build_america_bonds' => :'build_america_bonds', :'commodity_types' => :'commodity_types', :'energy_type' => :'energy_type', :'agricultural_type' => :'agricultural_type', :'metal_type' => :'metal_type', :'inverse_leveraged' => :'inverse_leveraged', :'target_date_multi_asset_type' => :'target_date_multi_asset_type', :'currency_hedged' => :'currency_hedged', :'currency_pair' => :'currency_pair', :'social_environmental_type' => :'social_environmental_type', :'clean_energy_type' => :'clean_energy_type', :'dividend_type' => :'dividend_type', :'regular_dividend_payor_type' => :'regular_dividend_payor_type', :'holds_ml_ps' => :'holds_ml_ps', :'holds_preferred_stock' => :'holds_preferred_stock', :'holds_closed_end_funds' => :'holds_closed_end_funds', :'quant_strategies_type' => :'quant_strategies_type', :'other_quant_models' => :'other_quant_models', :'hedge_fund_type' => :'hedge_fund_type', :'derivatives_based' => :'derivatives_based', :'holds_ad_rs' => :'holds_ad_rs', :'index_linked' => :'index_linked', :'includes_short_exposure' => :'includes_short_exposure', :'index_name' => :'index_name', :'parent_index' => :'parent_index', :'index_family' => :'index_family', :'broader_index_family' => :'broader_index_family', :'index_provider' => :'index_provider', :'fund_family' => :'fund_family', :'index_ticker' => :'index_ticker', :'etn_issuing_bank' => :'etn_issuing_bank', :'etn_maturity_date' => :'etn_maturity_date', :'livestock' => :'livestock', :'dynamic_futures_roll' => :'dynamic_futures_roll', :'index_provider_code' => :'index_provider_code', :'single_category_designation' => :'single_category_designation', :'registered_countries' => :'registered_countries', :'issuing_entity_country_code' => :'issuing_entity_country_code', :'ucits' => :'ucits', :'replication_structure' => :'replication_structure', :'domicile' => :'domicile', :'base_currency' => :'base_currency', :'listing_currency' => :'listing_currency', :'fund_listing_date' => :'fund_listing_date', :'listing_country_code' => :'listing_country_code', :'listing_region' => :'listing_region', :'smartvs_traditional_beta' => :'smartvs_traditional_beta', :'smartvs_traditional_beta_level2' => :'smartvs_traditional_beta_level2', :'income_category' => :'income_category', :'etp_structure_type' => :'etp_structure_type', :'month_end_assets' => :'month_end_assets', :'etf_portfolio_turnover' => :'etf_portfolio_turnover', :'firstbridge_id' => :'firstbridge_id', :'firstbridge_parent_id' => :'firstbridge_parent_id', :'number_of_holdings' => :'number_of_holdings' } end # Attribute type mapping. def self.swagger_types { :'id' => :'String', :'name' => :'String', :'ticker' => :'String', :'figi_ticker' => :'String', :'ric' => :'String', :'isin' => :'String', :'sedol' => :'String', :'exchange_mic' => :'String', :'sponsor' => :'String', :'type' => :'String', :'description' => :'String', :'inception_date' => :'Date', :'data_change_date' => :'Date', :'close_date' => :'Date', :'is_live_listed' => :'BOOLEAN', :'legal_structure' => :'String', :'intraday_nav_ticker' => :'String', :'primary_ticker' => :'String', :'primary_ticker_country_code' => :'String', :'primary_listing_region' => :'String', :'net_expense_ratio' => :'Float', :'asset_class' => :'String', :'other_asset_types' => :'String', :'market_cap_range' => :'String', :'holds_only_nyse_stocks' => :'BOOLEAN', :'holds_only_nasdaq_stocks' => :'BOOLEAN', :'growth_value_tilt' => :'String', :'growth_type' => :'String', :'value_type' => :'String', :'sector' => :'String', :'industry' => :'String', :'sub_industry' => :'String', :'cross_sector_theme' => :'String', :'natural_resources_type' => :'String', :'excludes_financials' => :'BOOLEAN', :'excludes_technology' => :'BOOLEAN', :'us_or_excludes_us' => :'String', :'developed_emerging' => :'String', :'specialized_region' => :'String', :'continent' => :'String', :'latin_america_sub_group' => :'String', :'europe_sub_group' => :'String', :'asia_sub_group' => :'String', :'specific_country' => :'String', :'china_listing_location' => :'String', :'us_state' => :'String', :'real_estate' => :'String', :'index_weighting_scheme' => :'String', :'market_cap_weighting_type' => :'String', :'fundamental_weighting_type' => :'String', :'dividend_weighting_type' => :'String', :'bond_type' => :'String', :'government_bond_types' => :'String', :'municipal_bond_region' => :'String', :'municipal_vrdo' => :'BOOLEAN', :'mortgage_bond_types' => :'String', :'bond_tax_status' => :'String', :'credit_quality' => :'String', :'average_maturity' => :'String', :'specific_maturity_year' => :'Integer', :'bond_currency_denomination' => :'String', :'laddered' => :'BOOLEAN', :'zero_coupon' => :'BOOLEAN', :'floating_rate' => :'BOOLEAN', :'build_america_bonds' => :'BOOLEAN', :'commodity_types' => :'String', :'energy_type' => :'String', :'agricultural_type' => :'String', :'metal_type' => :'String', :'inverse_leveraged' => :'String', :'target_date_multi_asset_type' => :'String', :'currency_hedged' => :'BOOLEAN', :'currency_pair' => :'String', :'social_environmental_type' => :'String', :'clean_energy_type' => :'String', :'dividend_type' => :'String', :'regular_dividend_payor_type' => :'String', :'holds_ml_ps' => :'BOOLEAN', :'holds_preferred_stock' => :'BOOLEAN', :'holds_closed_end_funds' => :'BOOLEAN', :'quant_strategies_type' => :'String', :'other_quant_models' => :'String', :'hedge_fund_type' => :'String', :'derivatives_based' => :'String', :'holds_ad_rs' => :'BOOLEAN', :'index_linked' => :'String', :'includes_short_exposure' => :'BOOLEAN', :'index_name' => :'String', :'parent_index' => :'String', :'index_family' => :'String', :'broader_index_family' => :'String', :'index_provider' => :'String', :'fund_family' => :'String', :'index_ticker' => :'String', :'etn_issuing_bank' => :'String', :'etn_maturity_date' => :'Date', :'livestock' => :'String', :'dynamic_futures_roll' => :'BOOLEAN', :'index_provider_code' => :'String', :'single_category_designation' => :'String', :'registered_countries' => :'String', :'issuing_entity_country_code' => :'String', :'ucits' => :'BOOLEAN', :'replication_structure' => :'String', :'domicile' => :'String', :'base_currency' => :'String', :'listing_currency' => :'String', :'fund_listing_date' => :'Date', :'listing_country_code' => :'String', :'listing_region' => :'String', :'smartvs_traditional_beta' => :'String', :'smartvs_traditional_beta_level2' => :'String', :'income_category' => :'String', :'etp_structure_type' => :'String', :'month_end_assets' => :'Float', :'etf_portfolio_turnover' => :'Float', :'firstbridge_id' => :'String', :'firstbridge_parent_id' => :'String', :'number_of_holdings' => :'Integer' } end # Initializes the object # @param [Hash] attributes Model attributes in the form of hash def initialize(attributes = {}) return unless attributes.is_a?(Hash) # convert string to symbol for hash key attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v} if attributes.has_key?(:'id') self.id = attributes[:'id'] end if attributes.has_key?(:'name') self.name = attributes[:'name'] end if attributes.has_key?(:'ticker') self.ticker = attributes[:'ticker'] end if attributes.has_key?(:'figi_ticker') self.figi_ticker = attributes[:'figi_ticker'] end if attributes.has_key?(:'ric') self.ric = attributes[:'ric'] end if attributes.has_key?(:'isin') self.isin = attributes[:'isin'] end if attributes.has_key?(:'sedol') self.sedol = attributes[:'sedol'] end if attributes.has_key?(:'exchange_mic') self.exchange_mic = attributes[:'exchange_mic'] end if attributes.has_key?(:'sponsor') self.sponsor = attributes[:'sponsor'] end if attributes.has_key?(:'type') self.type = attributes[:'type'] end if attributes.has_key?(:'description') self.description = attributes[:'description'] end if attributes.has_key?(:'inception_date') self.inception_date = attributes[:'inception_date'] end if attributes.has_key?(:'data_change_date') self.data_change_date = attributes[:'data_change_date'] end if attributes.has_key?(:'close_date') self.close_date = attributes[:'close_date'] end if attributes.has_key?(:'is_live_listed') self.is_live_listed = attributes[:'is_live_listed'] end if attributes.has_key?(:'legal_structure') self.legal_structure = attributes[:'legal_structure'] end if attributes.has_key?(:'intraday_nav_ticker') self.intraday_nav_ticker = attributes[:'intraday_nav_ticker'] end if attributes.has_key?(:'primary_ticker') self.primary_ticker = attributes[:'primary_ticker'] end if attributes.has_key?(:'primary_ticker_country_code') self.primary_ticker_country_code = attributes[:'primary_ticker_country_code'] end if attributes.has_key?(:'primary_listing_region') self.primary_listing_region = attributes[:'primary_listing_region'] end if attributes.has_key?(:'net_expense_ratio') self.net_expense_ratio = attributes[:'net_expense_ratio'] end if attributes.has_key?(:'asset_class') self.asset_class = attributes[:'asset_class'] end if attributes.has_key?(:'other_asset_types') self.other_asset_types = attributes[:'other_asset_types'] end if attributes.has_key?(:'market_cap_range') self.market_cap_range = attributes[:'market_cap_range'] end if attributes.has_key?(:'holds_only_nyse_stocks') self.holds_only_nyse_stocks = attributes[:'holds_only_nyse_stocks'] end if attributes.has_key?(:'holds_only_nasdaq_stocks') self.holds_only_nasdaq_stocks = attributes[:'holds_only_nasdaq_stocks'] end if attributes.has_key?(:'growth_value_tilt') self.growth_value_tilt = attributes[:'growth_value_tilt'] end if attributes.has_key?(:'growth_type') self.growth_type = attributes[:'growth_type'] end if attributes.has_key?(:'value_type') self.value_type = attributes[:'value_type'] end if attributes.has_key?(:'sector') self.sector = attributes[:'sector'] end if attributes.has_key?(:'industry') self.industry = attributes[:'industry'] end if attributes.has_key?(:'sub_industry') self.sub_industry = attributes[:'sub_industry'] end if attributes.has_key?(:'cross_sector_theme') self.cross_sector_theme = attributes[:'cross_sector_theme'] end if attributes.has_key?(:'natural_resources_type') self.natural_resources_type = attributes[:'natural_resources_type'] end if attributes.has_key?(:'excludes_financials') self.excludes_financials = attributes[:'excludes_financials'] end if attributes.has_key?(:'excludes_technology') self.excludes_technology = attributes[:'excludes_technology'] end if attributes.has_key?(:'us_or_excludes_us') self.us_or_excludes_us = attributes[:'us_or_excludes_us'] end if attributes.has_key?(:'developed_emerging') self.developed_emerging = attributes[:'developed_emerging'] end if attributes.has_key?(:'specialized_region') self.specialized_region = attributes[:'specialized_region'] end if attributes.has_key?(:'continent') self.continent = attributes[:'continent'] end if attributes.has_key?(:'latin_america_sub_group') self.latin_america_sub_group = attributes[:'latin_america_sub_group'] end if attributes.has_key?(:'europe_sub_group') self.europe_sub_group = attributes[:'europe_sub_group'] end if attributes.has_key?(:'asia_sub_group') self.asia_sub_group = attributes[:'asia_sub_group'] end if attributes.has_key?(:'specific_country') self.specific_country = attributes[:'specific_country'] end if attributes.has_key?(:'china_listing_location') self.china_listing_location = attributes[:'china_listing_location'] end if attributes.has_key?(:'us_state') self.us_state = attributes[:'us_state'] end if attributes.has_key?(:'real_estate') self.real_estate = attributes[:'real_estate'] end if attributes.has_key?(:'index_weighting_scheme') self.index_weighting_scheme = attributes[:'index_weighting_scheme'] end if attributes.has_key?(:'market_cap_weighting_type') self.market_cap_weighting_type = attributes[:'market_cap_weighting_type'] end if attributes.has_key?(:'fundamental_weighting_type') self.fundamental_weighting_type = attributes[:'fundamental_weighting_type'] end if attributes.has_key?(:'dividend_weighting_type') self.dividend_weighting_type = attributes[:'dividend_weighting_type'] end if attributes.has_key?(:'bond_type') self.bond_type = attributes[:'bond_type'] end if attributes.has_key?(:'government_bond_types') self.government_bond_types = attributes[:'government_bond_types'] end if attributes.has_key?(:'municipal_bond_region') self.municipal_bond_region = attributes[:'municipal_bond_region'] end if attributes.has_key?(:'municipal_vrdo') self.municipal_vrdo = attributes[:'municipal_vrdo'] end if attributes.has_key?(:'mortgage_bond_types') self.mortgage_bond_types = attributes[:'mortgage_bond_types'] end if attributes.has_key?(:'bond_tax_status') self.bond_tax_status = attributes[:'bond_tax_status'] end if attributes.has_key?(:'credit_quality') self.credit_quality = attributes[:'credit_quality'] end if attributes.has_key?(:'average_maturity') self.average_maturity = attributes[:'average_maturity'] end if attributes.has_key?(:'specific_maturity_year') self.specific_maturity_year = attributes[:'specific_maturity_year'] end if attributes.has_key?(:'bond_currency_denomination') self.bond_currency_denomination = attributes[:'bond_currency_denomination'] end if attributes.has_key?(:'laddered') self.laddered = attributes[:'laddered'] end if attributes.has_key?(:'zero_coupon') self.zero_coupon = attributes[:'zero_coupon'] end if attributes.has_key?(:'floating_rate') self.floating_rate = attributes[:'floating_rate'] end if attributes.has_key?(:'build_america_bonds') self.build_america_bonds = attributes[:'build_america_bonds'] end if attributes.has_key?(:'commodity_types') self.commodity_types = attributes[:'commodity_types'] end if attributes.has_key?(:'energy_type') self.energy_type = attributes[:'energy_type'] end if attributes.has_key?(:'agricultural_type') self.agricultural_type = attributes[:'agricultural_type'] end if attributes.has_key?(:'metal_type') self.metal_type = attributes[:'metal_type'] end if attributes.has_key?(:'inverse_leveraged') self.inverse_leveraged = attributes[:'inverse_leveraged'] end if attributes.has_key?(:'target_date_multi_asset_type') self.target_date_multi_asset_type = attributes[:'target_date_multi_asset_type'] end if attributes.has_key?(:'currency_hedged') self.currency_hedged = attributes[:'currency_hedged'] end if attributes.has_key?(:'currency_pair') self.currency_pair = attributes[:'currency_pair'] end if attributes.has_key?(:'social_environmental_type') self.social_environmental_type = attributes[:'social_environmental_type'] end if attributes.has_key?(:'clean_energy_type') self.clean_energy_type = attributes[:'clean_energy_type'] end if attributes.has_key?(:'dividend_type') self.dividend_type = attributes[:'dividend_type'] end if attributes.has_key?(:'regular_dividend_payor_type') self.regular_dividend_payor_type = attributes[:'regular_dividend_payor_type'] end if attributes.has_key?(:'holds_ml_ps') self.holds_ml_ps = attributes[:'holds_ml_ps'] end if attributes.has_key?(:'holds_preferred_stock') self.holds_preferred_stock = attributes[:'holds_preferred_stock'] end if attributes.has_key?(:'holds_closed_end_funds') self.holds_closed_end_funds = attributes[:'holds_closed_end_funds'] end if attributes.has_key?(:'quant_strategies_type') self.quant_strategies_type = attributes[:'quant_strategies_type'] end if attributes.has_key?(:'other_quant_models') self.other_quant_models = attributes[:'other_quant_models'] end if attributes.has_key?(:'hedge_fund_type') self.hedge_fund_type = attributes[:'hedge_fund_type'] end if attributes.has_key?(:'derivatives_based') self.derivatives_based = attributes[:'derivatives_based'] end if attributes.has_key?(:'holds_ad_rs') self.holds_ad_rs = attributes[:'holds_ad_rs'] end if attributes.has_key?(:'index_linked') self.index_linked = attributes[:'index_linked'] end if attributes.has_key?(:'includes_short_exposure') self.includes_short_exposure = attributes[:'includes_short_exposure'] end if attributes.has_key?(:'index_name') self.index_name = attributes[:'index_name'] end if attributes.has_key?(:'parent_index') self.parent_index = attributes[:'parent_index'] end if attributes.has_key?(:'index_family') self.index_family = attributes[:'index_family'] end if attributes.has_key?(:'broader_index_family') self.broader_index_family = attributes[:'broader_index_family'] end if attributes.has_key?(:'index_provider') self.index_provider = attributes[:'index_provider'] end if attributes.has_key?(:'fund_family') self.fund_family = attributes[:'fund_family'] end if attributes.has_key?(:'index_ticker') self.index_ticker = attributes[:'index_ticker'] end if attributes.has_key?(:'etn_issuing_bank') self.etn_issuing_bank = attributes[:'etn_issuing_bank'] end if attributes.has_key?(:'etn_maturity_date') self.etn_maturity_date = attributes[:'etn_maturity_date'] end if attributes.has_key?(:'livestock') self.livestock = attributes[:'livestock'] end if attributes.has_key?(:'dynamic_futures_roll') self.dynamic_futures_roll = attributes[:'dynamic_futures_roll'] end if attributes.has_key?(:'index_provider_code') self.index_provider_code = attributes[:'index_provider_code'] end if attributes.has_key?(:'single_category_designation') self.single_category_designation = attributes[:'single_category_designation'] end if attributes.has_key?(:'registered_countries') self.registered_countries = attributes[:'registered_countries'] end if attributes.has_key?(:'issuing_entity_country_code') self.issuing_entity_country_code = attributes[:'issuing_entity_country_code'] end if attributes.has_key?(:'ucits') self.ucits = attributes[:'ucits'] end if attributes.has_key?(:'replication_structure') self.replication_structure = attributes[:'replication_structure'] end if attributes.has_key?(:'domicile') self.domicile = attributes[:'domicile'] end if attributes.has_key?(:'base_currency') self.base_currency = attributes[:'base_currency'] end if attributes.has_key?(:'listing_currency') self.listing_currency = attributes[:'listing_currency'] end if attributes.has_key?(:'fund_listing_date') self.fund_listing_date = attributes[:'fund_listing_date'] end if attributes.has_key?(:'listing_country_code') self.listing_country_code = attributes[:'listing_country_code'] end if attributes.has_key?(:'listing_region') self.listing_region = attributes[:'listing_region'] end if attributes.has_key?(:'smartvs_traditional_beta') self.smartvs_traditional_beta = attributes[:'smartvs_traditional_beta'] end if attributes.has_key?(:'smartvs_traditional_beta_level2') self.smartvs_traditional_beta_level2 = attributes[:'smartvs_traditional_beta_level2'] end if attributes.has_key?(:'income_category') self.income_category = attributes[:'income_category'] end if attributes.has_key?(:'etp_structure_type') self.etp_structure_type = attributes[:'etp_structure_type'] end if attributes.has_key?(:'month_end_assets') self.month_end_assets = attributes[:'month_end_assets'] end if attributes.has_key?(:'etf_portfolio_turnover') self.etf_portfolio_turnover = attributes[:'etf_portfolio_turnover'] end if attributes.has_key?(:'firstbridge_id') self.firstbridge_id = attributes[:'firstbridge_id'] end if attributes.has_key?(:'firstbridge_parent_id') self.firstbridge_parent_id = attributes[:'firstbridge_parent_id'] end if attributes.has_key?(:'number_of_holdings') self.number_of_holdings = attributes[:'number_of_holdings'] end end # Show invalid properties with the reasons. Usually used together with valid? # @return Array for valid properties with the reasons def list_invalid_properties invalid_properties = Array.new return invalid_properties end # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? return true end # Checks equality by comparing each attribute. # @param [Object] Object to be compared def ==(o) return true if self.equal?(o) self.class == o.class && id == o.id && name == o.name && ticker == o.ticker && figi_ticker == o.figi_ticker && ric == o.ric && isin == o.isin && sedol == o.sedol && exchange_mic == o.exchange_mic && sponsor == o.sponsor && type == o.type && description == o.description && inception_date == o.inception_date && data_change_date == o.data_change_date && close_date == o.close_date && is_live_listed == o.is_live_listed && legal_structure == o.legal_structure && intraday_nav_ticker == o.intraday_nav_ticker && primary_ticker == o.primary_ticker && primary_ticker_country_code == o.primary_ticker_country_code && primary_listing_region == o.primary_listing_region && net_expense_ratio == o.net_expense_ratio && asset_class == o.asset_class && other_asset_types == o.other_asset_types && market_cap_range == o.market_cap_range && holds_only_nyse_stocks == o.holds_only_nyse_stocks && holds_only_nasdaq_stocks == o.holds_only_nasdaq_stocks && growth_value_tilt == o.growth_value_tilt && growth_type == o.growth_type && value_type == o.value_type && sector == o.sector && industry == o.industry && sub_industry == o.sub_industry && cross_sector_theme == o.cross_sector_theme && natural_resources_type == o.natural_resources_type && excludes_financials == o.excludes_financials && excludes_technology == o.excludes_technology && us_or_excludes_us == o.us_or_excludes_us && developed_emerging == o.developed_emerging && specialized_region == o.specialized_region && continent == o.continent && latin_america_sub_group == o.latin_america_sub_group && europe_sub_group == o.europe_sub_group && asia_sub_group == o.asia_sub_group && specific_country == o.specific_country && china_listing_location == o.china_listing_location && us_state == o.us_state && real_estate == o.real_estate && index_weighting_scheme == o.index_weighting_scheme && market_cap_weighting_type == o.market_cap_weighting_type && fundamental_weighting_type == o.fundamental_weighting_type && dividend_weighting_type == o.dividend_weighting_type && bond_type == o.bond_type && government_bond_types == o.government_bond_types && municipal_bond_region == o.municipal_bond_region && municipal_vrdo == o.municipal_vrdo && mortgage_bond_types == o.mortgage_bond_types && bond_tax_status == o.bond_tax_status && credit_quality == o.credit_quality && average_maturity == o.average_maturity && specific_maturity_year == o.specific_maturity_year && bond_currency_denomination == o.bond_currency_denomination && laddered == o.laddered && zero_coupon == o.zero_coupon && floating_rate == o.floating_rate && build_america_bonds == o.build_america_bonds && commodity_types == o.commodity_types && energy_type == o.energy_type && agricultural_type == o.agricultural_type && metal_type == o.metal_type && inverse_leveraged == o.inverse_leveraged && target_date_multi_asset_type == o.target_date_multi_asset_type && currency_hedged == o.currency_hedged && currency_pair == o.currency_pair && social_environmental_type == o.social_environmental_type && clean_energy_type == o.clean_energy_type && dividend_type == o.dividend_type && regular_dividend_payor_type == o.regular_dividend_payor_type && holds_ml_ps == o.holds_ml_ps && holds_preferred_stock == o.holds_preferred_stock && holds_closed_end_funds == o.holds_closed_end_funds && quant_strategies_type == o.quant_strategies_type && other_quant_models == o.other_quant_models && hedge_fund_type == o.hedge_fund_type && derivatives_based == o.derivatives_based && holds_ad_rs == o.holds_ad_rs && index_linked == o.index_linked && includes_short_exposure == o.includes_short_exposure && index_name == o.index_name && parent_index == o.parent_index && index_family == o.index_family && broader_index_family == o.broader_index_family && index_provider == o.index_provider && fund_family == o.fund_family && index_ticker == o.index_ticker && etn_issuing_bank == o.etn_issuing_bank && etn_maturity_date == o.etn_maturity_date && livestock == o.livestock && dynamic_futures_roll == o.dynamic_futures_roll && index_provider_code == o.index_provider_code && single_category_designation == o.single_category_designation && registered_countries == o.registered_countries && issuing_entity_country_code == o.issuing_entity_country_code && ucits == o.ucits && replication_structure == o.replication_structure && domicile == o.domicile && base_currency == o.base_currency && listing_currency == o.listing_currency && fund_listing_date == o.fund_listing_date && listing_country_code == o.listing_country_code && listing_region == o.listing_region && smartvs_traditional_beta == o.smartvs_traditional_beta && smartvs_traditional_beta_level2 == o.smartvs_traditional_beta_level2 && income_category == o.income_category && etp_structure_type == o.etp_structure_type && month_end_assets == o.month_end_assets && etf_portfolio_turnover == o.etf_portfolio_turnover && firstbridge_id == o.firstbridge_id && firstbridge_parent_id == o.firstbridge_parent_id && number_of_holdings == o.number_of_holdings end # @see the `==` method # @param [Object] Object to be compared def eql?(o) self == o end # Calculates hash code according to all attributes. # @return [Fixnum] Hash code def hash [id, name, ticker, figi_ticker, ric, isin, sedol, exchange_mic, sponsor, type, description, inception_date, data_change_date, close_date, is_live_listed, legal_structure, intraday_nav_ticker, primary_ticker, primary_ticker_country_code, primary_listing_region, net_expense_ratio, asset_class, other_asset_types, market_cap_range, holds_only_nyse_stocks, holds_only_nasdaq_stocks, growth_value_tilt, growth_type, value_type, sector, industry, sub_industry, cross_sector_theme, natural_resources_type, excludes_financials, excludes_technology, us_or_excludes_us, developed_emerging, specialized_region, continent, latin_america_sub_group, europe_sub_group, asia_sub_group, specific_country, china_listing_location, us_state, real_estate, index_weighting_scheme, market_cap_weighting_type, fundamental_weighting_type, dividend_weighting_type, bond_type, government_bond_types, municipal_bond_region, municipal_vrdo, mortgage_bond_types, bond_tax_status, credit_quality, average_maturity, specific_maturity_year, bond_currency_denomination, laddered, zero_coupon, floating_rate, build_america_bonds, commodity_types, energy_type, agricultural_type, metal_type, inverse_leveraged, target_date_multi_asset_type, currency_hedged, currency_pair, social_environmental_type, clean_energy_type, dividend_type, regular_dividend_payor_type, holds_ml_ps, holds_preferred_stock, holds_closed_end_funds, quant_strategies_type, other_quant_models, hedge_fund_type, derivatives_based, holds_ad_rs, index_linked, includes_short_exposure, index_name, parent_index, index_family, broader_index_family, index_provider, fund_family, index_ticker, etn_issuing_bank, etn_maturity_date, livestock, dynamic_futures_roll, index_provider_code, single_category_designation, registered_countries, issuing_entity_country_code, ucits, replication_structure, domicile, base_currency, listing_currency, fund_listing_date, listing_country_code, listing_region, smartvs_traditional_beta, smartvs_traditional_beta_level2, income_category, etp_structure_type, month_end_assets, etf_portfolio_turnover, firstbridge_id, firstbridge_parent_id, number_of_holdings].hash end # Builds the object from hash # @param [Hash] attributes Model attributes in the form of hash # @return [Object] Returns the model itself def build_from_hash(attributes) return nil unless attributes.is_a?(Hash) self.class.swagger_types.each_pair do |key, type| if type =~ /\AArray<(.*)>/i # check to ensure the input is an array given that the the attribute # is documented as an array but the input is not if attributes[self.class.attribute_map[key]].is_a?(Array) self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } ) end elsif !attributes[self.class.attribute_map[key]].nil? self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) end # or else data not found in attributes(hash), not an issue as the data can be optional end self end # Deserializes the data based on type # @param string type Data type # @param string value Value to be deserialized # @return [Object] Deserialized data def _deserialize(type, value) case type.to_sym when :DateTime DateTime.parse(value) when :Date Date.parse(value) when :String value.to_s when :Integer value.to_i when :Float value.to_f when :BOOLEAN if value.to_s =~ /\A(true|t|yes|y|1)\z/i true else false end when :Object # generic object (usually a Hash), return directly value when /\AArray<(?.+)>\z/ inner_type = Regexp.last_match[:inner_type] value.map { |v| _deserialize(inner_type, v) } when /\AHash<(?.+?), (?.+)>\z/ k_type = Regexp.last_match[:k_type] v_type = Regexp.last_match[:v_type] {}.tap do |hash| value.each do |k, v| hash[_deserialize(k_type, k)] = _deserialize(v_type, v) end end else # model temp_model = Intrinio.const_get(type).new temp_model.build_from_hash(value) end end # Returns the string representation of the object # @return [String] String presentation of the object def to_s to_hash.to_s end # to_body is an alias to to_hash (backward compatibility) # @return [Hash] Returns the object in the form of hash def to_body to_hash end # Returns the object in the form of hash # @return [Hash] Returns the object in the form of hash def to_hash hash = {} self.class.attribute_map.each_pair do |attr, param| value = self.send(attr) next if value.nil? hash[param] = _to_hash(value) end hash end # Outputs non-array value in the form of hash # For object, use to_hash. Otherwise, just return the value # @param [Object] value Any valid value # @return [Hash] Returns the value in the form of hash def _to_hash(value) if value.is_a?(Array) value.compact.map{ |v| _to_hash(v) } elsif value.is_a?(Hash) {}.tap do |hash| value.each { |k, v| hash[k] = _to_hash(v) } end elsif value.respond_to? :to_hash value.to_hash else value end end end end