content: {-
     CoinAPI Indexes REST API
  
     No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
  
     OpenAPI Version: 3.0.4
     CoinAPI Indexes REST API API version: v1
     Contact: support@apibricks.io
     Generated by OpenAPI Generator (https://openapi-generator.tech)
  -}
  
  {-|
  Module : CoinAPIIndexesREST.Lens
  -}
  
  {-# LANGUAGE KindSignatures #-}
  {-# LANGUAGE NamedFieldPuns #-}
  {-# LANGUAGE RankNTypes #-}
  {-# LANGUAGE RecordWildCards #-}
  {-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-matches -fno-warn-unused-binds -fno-warn-unused-imports #-}
  
  module CoinAPIIndexesREST.ModelLens where
  
  import qualified Data.Aeson as A
  import qualified Data.ByteString.Lazy as BL
  import qualified Data.Data as P (Data, Typeable)
  import qualified Data.Map as Map
  import qualified Data.Set as Set
  import qualified Data.Time as TI
  
  import Data.Text (Text)
  
  import Prelude (($), (.),(<$>),(<*>),(=<<),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
  import qualified Prelude as P
  
  import CoinAPIIndexesREST.Model
  import CoinAPIIndexesREST.Core
  
  
  -- * IndexesIndexDefinitionInputData
  
  -- | 'indexesIndexDefinitionInputDataExchangeId' Lens
  indexesIndexDefinitionInputDataExchangeIdL :: Lens_' IndexesIndexDefinitionInputData (Maybe Text)
  indexesIndexDefinitionInputDataExchangeIdL f IndexesIndexDefinitionInputData{..} = (\indexesIndexDefinitionInputDataExchangeId -> IndexesIndexDefinitionInputData { indexesIndexDefinitionInputDataExchangeId, ..} ) <$> f indexesIndexDefinitionInputDataExchangeId
  {-# INLINE indexesIndexDefinitionInputDataExchangeIdL #-}
  
  -- | 'indexesIndexDefinitionInputDataExchangeSymbolId' Lens
  indexesIndexDefinitionInputDataExchangeSymbolIdL :: Lens_' IndexesIndexDefinitionInputData (Maybe Text)
  indexesIndexDefinitionInputDataExchangeSymbolIdL f IndexesIndexDefinitionInputData{..} = (\indexesIndexDefinitionInputDataExchangeSymbolId -> IndexesIndexDefinitionInputData { indexesIndexDefinitionInputDataExchangeSymbolId, ..} ) <$> f indexesIndexDefinitionInputDataExchangeSymbolId
  {-# INLINE indexesIndexDefinitionInputDataExchangeSymbolIdL #-}
  
  -- | 'indexesIndexDefinitionInputDataBaseAssetId' Lens
  indexesIndexDefinitionInputDataBaseAssetIdL :: Lens_' IndexesIndexDefinitionInputData (Maybe Text)
  indexesIndexDefinitionInputDataBaseAssetIdL f IndexesIndexDefinitionInputData{..} = (\indexesIndexDefinitionInputDataBaseAssetId -> IndexesIndexDefinitionInputData { indexesIndexDefinitionInputDataBaseAssetId, ..} ) <$> f indexesIndexDefinitionInputDataBaseAssetId
  {-# INLINE indexesIndexDefinitionInputDataBaseAssetIdL #-}
  
  -- | 'indexesIndexDefinitionInputDataQuoteAssetId' Lens
  indexesIndexDefinitionInputDataQuoteAssetIdL :: Lens_' IndexesIndexDefinitionInputData (Maybe Text)
  indexesIndexDefinitionInputDataQuoteAssetIdL f IndexesIndexDefinitionInputData{..} = (\indexesIndexDefinitionInputDataQuoteAssetId -> IndexesIndexDefinitionInputData { indexesIndexDefinitionInputDataQuoteAssetId, ..} ) <$> f indexesIndexDefinitionInputDataQuoteAssetId
  {-# INLINE indexesIndexDefinitionInputDataQuoteAssetIdL #-}
  
  -- | 'indexesIndexDefinitionInputDataBeginDate' Lens
  indexesIndexDefinitionInputDataBeginDateL :: Lens_' IndexesIndexDefinitionInputData (Maybe DateTime)
  indexesIndexDefinitionInputDataBeginDateL f IndexesIndexDefinitionInputData{..} = (\indexesIndexDefinitionInputDataBeginDate -> IndexesIndexDefinitionInputData { indexesIndexDefinitionInputDataBeginDate, ..} ) <$> f indexesIndexDefinitionInputDataBeginDate
  {-# INLINE indexesIndexDefinitionInputDataBeginDateL #-}
  
  -- | 'indexesIndexDefinitionInputDataEndDate' Lens
  indexesIndexDefinitionInputDataEndDateL :: Lens_' IndexesIndexDefinitionInputData (Maybe DateTime)
  indexesIndexDefinitionInputDataEndDateL f IndexesIndexDefinitionInputData{..} = (\indexesIndexDefinitionInputDataEndDate -> IndexesIndexDefinitionInputData { indexesIndexDefinitionInputDataEndDate, ..} ) <$> f indexesIndexDefinitionInputDataEndDate
  {-# INLINE indexesIndexDefinitionInputDataEndDateL #-}
  
  -- | 'indexesIndexDefinitionInputDataStatus' Lens
  indexesIndexDefinitionInputDataStatusL :: Lens_' IndexesIndexDefinitionInputData (Maybe Text)
  indexesIndexDefinitionInputDataStatusL f IndexesIndexDefinitionInputData{..} = (\indexesIndexDefinitionInputDataStatus -> IndexesIndexDefinitionInputData { indexesIndexDefinitionInputDataStatus, ..} ) <$> f indexesIndexDefinitionInputDataStatus
  {-# INLINE indexesIndexDefinitionInputDataStatusL #-}
  
  -- | 'indexesIndexDefinitionInputDataStatusInfo' Lens
  indexesIndexDefinitionInputDataStatusInfoL :: Lens_' IndexesIndexDefinitionInputData (Maybe Text)
  indexesIndexDefinitionInputDataStatusInfoL f IndexesIndexDefinitionInputData{..} = (\indexesIndexDefinitionInputDataStatusInfo -> IndexesIndexDefinitionInputData { indexesIndexDefinitionInputDataStatusInfo, ..} ) <$> f indexesIndexDefinitionInputDataStatusInfo
  {-# INLINE indexesIndexDefinitionInputDataStatusInfoL #-}
  
  -- | 'indexesIndexDefinitionInputDataLastModificationTime' Lens
  indexesIndexDefinitionInputDataLastModificationTimeL :: Lens_' IndexesIndexDefinitionInputData (Maybe DateTime)
  indexesIndexDefinitionInputDataLastModificationTimeL f IndexesIndexDefinitionInputData{..} = (\indexesIndexDefinitionInputDataLastModificationTime -> IndexesIndexDefinitionInputData { indexesIndexDefinitionInputDataLastModificationTime, ..} ) <$> f indexesIndexDefinitionInputDataLastModificationTime
  {-# INLINE indexesIndexDefinitionInputDataLastModificationTimeL #-}
  
  
  
  -- * IndexesIndexDefinitionSnapshotEntry
  
  -- | 'indexesIndexDefinitionSnapshotEntryIndexId' Lens
  indexesIndexDefinitionSnapshotEntryIndexIdL :: Lens_' IndexesIndexDefinitionSnapshotEntry (Maybe Text)
  indexesIndexDefinitionSnapshotEntryIndexIdL f IndexesIndexDefinitionSnapshotEntry{..} = (\indexesIndexDefinitionSnapshotEntryIndexId -> IndexesIndexDefinitionSnapshotEntry { indexesIndexDefinitionSnapshotEntryIndexId, ..} ) <$> f indexesIndexDefinitionSnapshotEntryIndexId
  {-# INLINE indexesIndexDefinitionSnapshotEntryIndexIdL #-}
  
  -- | 'indexesIndexDefinitionSnapshotEntryTimestamp' Lens
  indexesIndexDefinitionSnapshotEntryTimestampL :: Lens_' IndexesIndexDefinitionSnapshotEntry (Maybe DateTime)
  indexesIndexDefinitionSnapshotEntryTimestampL f IndexesIndexDefinitionSnapshotEntry{..} = (\indexesIndexDefinitionSnapshotEntryTimestamp -> IndexesIndexDefinitionSnapshotEntry { indexesIndexDefinitionSnapshotEntryTimestamp, ..} ) <$> f indexesIndexDefinitionSnapshotEntryTimestamp
  {-# INLINE indexesIndexDefinitionSnapshotEntryTimestampL #-}
  
  -- | 'indexesIndexDefinitionSnapshotEntryValue' Lens
  indexesIndexDefinitionSnapshotEntryValueL :: Lens_' IndexesIndexDefinitionSnapshotEntry (Maybe Double)
  indexesIndexDefinitionSnapshotEntryValueL f IndexesIndexDefinitionSnapshotEntry{..} = (\indexesIndexDefinitionSnapshotEntryValue -> IndexesIndexDefinitionSnapshotEntry { indexesIndexDefinitionSnapshotEntryValue, ..} ) <$> f indexesIndexDefinitionSnapshotEntryValue
  {-# INLINE indexesIndexDefinitionSnapshotEntryValueL #-}
  
  
  
  -- * IndexesIndexIdentifier
  
  -- | 'indexesIndexIdentifierId' Lens
  indexesIndexIdentifierIdL :: Lens_' IndexesIndexIdentifier (Maybe Text)
  indexesIndexIdentifierIdL f IndexesIndexIdentifier{..} = (\indexesIndexIdentifierId -> IndexesIndexIdentifier { indexesIndexIdentifierId, ..} ) <$> f indexesIndexIdentifierId
  {-# INLINE indexesIndexIdentifierIdL #-}
  
  
  
  -- * IndexesIndexMultiAssetWeight
  
  -- | 'indexesIndexMultiAssetWeightIndexId' Lens
  indexesIndexMultiAssetWeightIndexIdL :: Lens_' IndexesIndexMultiAssetWeight (Maybe Text)
  indexesIndexMultiAssetWeightIndexIdL f IndexesIndexMultiAssetWeight{..} = (\indexesIndexMultiAssetWeightIndexId -> IndexesIndexMultiAssetWeight { indexesIndexMultiAssetWeightIndexId, ..} ) <$> f indexesIndexMultiAssetWeightIndexId
  {-# INLINE indexesIndexMultiAssetWeightIndexIdL #-}
  
  -- | 'indexesIndexMultiAssetWeightAssetId' Lens
  indexesIndexMultiAssetWeightAssetIdL :: Lens_' IndexesIndexMultiAssetWeight (Maybe Text)
  indexesIndexMultiAssetWeightAssetIdL f IndexesIndexMultiAssetWeight{..} = (\indexesIndexMultiAssetWeightAssetId -> IndexesIndexMultiAssetWeight { indexesIndexMultiAssetWeightAssetId, ..} ) <$> f indexesIndexMultiAssetWeightAssetId
  {-# INLINE indexesIndexMultiAssetWeightAssetIdL #-}
  
  -- | 'indexesIndexMultiAssetWeightWeight' Lens
  indexesIndexMultiAssetWeightWeightL :: Lens_' IndexesIndexMultiAssetWeight (Maybe Double)
  indexesIndexMultiAssetWeightWeightL f IndexesIndexMultiAssetWeight{..} = (\indexesIndexMultiAssetWeightWeight -> IndexesIndexMultiAssetWeight { indexesIndexMultiAssetWeightWeight, ..} ) <$> f indexesIndexMultiAssetWeightWeight
  {-# INLINE indexesIndexMultiAssetWeightWeightL #-}
  
  
  
  -- * IndexesIndexTimeseriesItem
  
  -- | 'indexesIndexTimeseriesItemTimePeriodStart' Lens
  indexesIndexTimeseriesItemTimePeriodStartL :: Lens_' IndexesIndexTimeseriesItem (Maybe DateTime)
  indexesIndexTimeseriesItemTimePeriodStartL f IndexesIndexTimeseriesItem{..} = (\indexesIndexTimeseriesItemTimePeriodStart -> IndexesIndexTimeseriesItem { indexesIndexTimeseriesItemTimePeriodStart, ..} ) <$> f indexesIndexTimeseriesItemTimePeriodStart
  {-# INLINE indexesIndexTimeseriesItemTimePeriodStartL #-}
  
  -- | 'indexesIndexTimeseriesItemTimePeriodEnd' Lens
  indexesIndexTimeseriesItemTimePeriodEndL :: Lens_' IndexesIndexTimeseriesItem (Maybe DateTime)
  indexesIndexTimeseriesItemTimePeriodEndL f IndexesIndexTimeseriesItem{..} = (\indexesIndexTimeseriesItemTimePeriodEnd -> IndexesIndexTimeseriesItem { indexesIndexTimeseriesItemTimePeriodEnd, ..} ) <$> f indexesIndexTimeseriesItemTimePeriodEnd
  {-# INLINE indexesIndexTimeseriesItemTimePeriodEndL #-}
  
  -- | 'indexesIndexTimeseriesItemTimeOpen' Lens
  indexesIndexTimeseriesItemTimeOpenL :: Lens_' IndexesIndexTimeseriesItem (Maybe DateTime)
  indexesIndexTimeseriesItemTimeOpenL f IndexesIndexTimeseriesItem{..} = (\indexesIndexTimeseriesItemTimeOpen -> IndexesIndexTimeseriesItem { indexesIndexTimeseriesItemTimeOpen, ..} ) <$> f indexesIndexTimeseriesItemTimeOpen
  {-# INLINE indexesIndexTimeseriesItemTimeOpenL #-}
  
  -- | 'indexesIndexTimeseriesItemTimeClose' Lens
  indexesIndexTimeseriesItemTimeCloseL :: Lens_' IndexesIndexTimeseriesItem (Maybe DateTime)
  indexesIndexTimeseriesItemTimeCloseL f IndexesIndexTimeseriesItem{..} = (\indexesIndexTimeseriesItemTimeClose -> IndexesIndexTimeseriesItem { indexesIndexTimeseriesItemTimeClose, ..} ) <$> f indexesIndexTimeseriesItemTimeClose
  {-# INLINE indexesIndexTimeseriesItemTimeCloseL #-}
  
  -- | 'indexesIndexTimeseriesItemValueOpen' Lens
  indexesIndexTimeseriesItemValueOpenL :: Lens_' IndexesIndexTimeseriesItem (Maybe Double)
  indexesIndexTimeseriesItemValueOpenL f IndexesIndexTimeseriesItem{..} = (\indexesIndexTimeseriesItemValueOpen -> IndexesIndexTimeseriesItem { indexesIndexTimeseriesItemValueOpen, ..} ) <$> f indexesIndexTimeseriesItemValueOpen
  {-# INLINE indexesIndexTimeseriesItemValueOpenL #-}
  
  -- | 'indexesIndexTimeseriesItemValueHigh' Lens
  indexesIndexTimeseriesItemValueHighL :: Lens_' IndexesIndexTimeseriesItem (Maybe Double)
  indexesIndexTimeseriesItemValueHighL f IndexesIndexTimeseriesItem{..} = (\indexesIndexTimeseriesItemValueHigh -> IndexesIndexTimeseriesItem { indexesIndexTimeseriesItemValueHigh, ..} ) <$> f indexesIndexTimeseriesItemValueHigh
  {-# INLINE indexesIndexTimeseriesItemValueHighL #-}
  
  -- | 'indexesIndexTimeseriesItemValueLow' Lens
  indexesIndexTimeseriesItemValueLowL :: Lens_' IndexesIndexTimeseriesItem (Maybe Double)
  indexesIndexTimeseriesItemValueLowL f IndexesIndexTimeseriesItem{..} = (\indexesIndexTimeseriesItemValueLow -> IndexesIndexTimeseriesItem { indexesIndexTimeseriesItemValueLow, ..} ) <$> f indexesIndexTimeseriesItemValueLow
  {-# INLINE indexesIndexTimeseriesItemValueLowL #-}
  
  -- | 'indexesIndexTimeseriesItemValueClose' Lens
  indexesIndexTimeseriesItemValueCloseL :: Lens_' IndexesIndexTimeseriesItem (Maybe Double)
  indexesIndexTimeseriesItemValueCloseL f IndexesIndexTimeseriesItem{..} = (\indexesIndexTimeseriesItemValueClose -> IndexesIndexTimeseriesItem { indexesIndexTimeseriesItemValueClose, ..} ) <$> f indexesIndexTimeseriesItemValueClose
  {-# INLINE indexesIndexTimeseriesItemValueCloseL #-}
  
  -- | 'indexesIndexTimeseriesItemValueCount' Lens
  indexesIndexTimeseriesItemValueCountL :: Lens_' IndexesIndexTimeseriesItem (Maybe Integer)
  indexesIndexTimeseriesItemValueCountL f IndexesIndexTimeseriesItem{..} = (\indexesIndexTimeseriesItemValueCount -> IndexesIndexTimeseriesItem { indexesIndexTimeseriesItemValueCount, ..} ) <$> f indexesIndexTimeseriesItemValueCount
  {-# INLINE indexesIndexTimeseriesItemValueCountL #-}
  
  
  
  -- * IndexesIndexValue
  
  -- | 'indexesIndexValueTimestamp' Lens
  indexesIndexValueTimestampL :: Lens_' IndexesIndexValue (Maybe DateTime)
  indexesIndexValueTimestampL f IndexesIndexValue{..} = (\indexesIndexValueTimestamp -> IndexesIndexValue { indexesIndexValueTimestamp, ..} ) <$> f indexesIndexValueTimestamp
  {-# INLINE indexesIndexValueTimestampL #-}
  
  -- | 'indexesIndexValueValue' Lens
  indexesIndexValueValueL :: Lens_' IndexesIndexValue (Maybe Double)
  indexesIndexValueValueL f IndexesIndexValue{..} = (\indexesIndexValueValue -> IndexesIndexValue { indexesIndexValueValue, ..} ) <$> f indexesIndexValueValue
  {-# INLINE indexesIndexValueValueL #-}
  
  -- | 'indexesIndexValueComposition' Lens
  indexesIndexValueCompositionL :: Lens_' IndexesIndexValue (Maybe [IndexesIndexValueComponent])
  indexesIndexValueCompositionL f IndexesIndexValue{..} = (\indexesIndexValueComposition -> IndexesIndexValue { indexesIndexValueComposition, ..} ) <$> f indexesIndexValueComposition
  {-# INLINE indexesIndexValueCompositionL #-}
  
  
  
  -- * IndexesIndexValueComponent
  
  -- | 'indexesIndexValueComponentComponentId' Lens
  indexesIndexValueComponentComponentIdL :: Lens_' IndexesIndexValueComponent (Maybe Text)
  indexesIndexValueComponentComponentIdL f IndexesIndexValueComponent{..} = (\indexesIndexValueComponentComponentId -> IndexesIndexValueComponent { indexesIndexValueComponentComponentId, ..} ) <$> f indexesIndexValueComponentComponentId
  {-# INLINE indexesIndexValueComponentComponentIdL #-}
  
  -- | 'indexesIndexValueComponentComponentValue' Lens
  indexesIndexValueComponentComponentValueL :: Lens_' IndexesIndexValueComponent (Maybe Double)
  indexesIndexValueComponentComponentValueL f IndexesIndexValueComponent{..} = (\indexesIndexValueComponentComponentValue -> IndexesIndexValueComponent { indexesIndexValueComponentComponentValue, ..} ) <$> f indexesIndexValueComponentComponentValue
  {-# INLINE indexesIndexValueComponentComponentValueL #-}
  
  
  
  -- * MetadataExchange
  
  -- | 'metadataExchangeExchangeId' Lens
  metadataExchangeExchangeIdL :: Lens_' MetadataExchange (Maybe Text)
  metadataExchangeExchangeIdL f MetadataExchange{..} = (\metadataExchangeExchangeId -> MetadataExchange { metadataExchangeExchangeId, ..} ) <$> f metadataExchangeExchangeId
  {-# INLINE metadataExchangeExchangeIdL #-}
  
  -- | 'metadataExchangeWebsite' Lens
  metadataExchangeWebsiteL :: Lens_' MetadataExchange (Maybe Text)
  metadataExchangeWebsiteL f MetadataExchange{..} = (\metadataExchangeWebsite -> MetadataExchange { metadataExchangeWebsite, ..} ) <$> f metadataExchangeWebsite
  {-# INLINE metadataExchangeWebsiteL #-}
  
  -- | 'metadataExchangeName' Lens
  metadataExchangeNameL :: Lens_' MetadataExchange (Maybe Text)
  metadataExchangeNameL f MetadataExchange{..} = (\metadataExchangeName -> MetadataExchange { metadataExchangeName, ..} ) <$> f metadataExchangeName
  {-# INLINE metadataExchangeNameL #-}
  
  
  
  -- * MetadataTimeseriesPeriod
  
  -- | 'metadataTimeseriesPeriodPeriodId' Lens
  metadataTimeseriesPeriodPeriodIdL :: Lens_' MetadataTimeseriesPeriod (Maybe Text)
  metadataTimeseriesPeriodPeriodIdL f MetadataTimeseriesPeriod{..} = (\metadataTimeseriesPeriodPeriodId -> MetadataTimeseriesPeriod { metadataTimeseriesPeriodPeriodId, ..} ) <$> f metadataTimeseriesPeriodPeriodId
  {-# INLINE metadataTimeseriesPeriodPeriodIdL #-}
  
  -- | 'metadataTimeseriesPeriodLengthSeconds' Lens
  metadataTimeseriesPeriodLengthSecondsL :: Lens_' MetadataTimeseriesPeriod (Maybe Int)
  metadataTimeseriesPeriodLengthSecondsL f MetadataTimeseriesPeriod{..} = (\metadataTimeseriesPeriodLengthSeconds -> MetadataTimeseriesPeriod { metadataTimeseriesPeriodLengthSeconds, ..} ) <$> f metadataTimeseriesPeriodLengthSeconds
  {-# INLINE metadataTimeseriesPeriodLengthSecondsL #-}
  
  -- | 'metadataTimeseriesPeriodLengthMonths' Lens
  metadataTimeseriesPeriodLengthMonthsL :: Lens_' MetadataTimeseriesPeriod (Maybe Int)
  metadataTimeseriesPeriodLengthMonthsL f MetadataTimeseriesPeriod{..} = (\metadataTimeseriesPeriodLengthMonths -> MetadataTimeseriesPeriod { metadataTimeseriesPeriodLengthMonths, ..} ) <$> f metadataTimeseriesPeriodLengthMonths
  {-# INLINE metadataTimeseriesPeriodLengthMonthsL #-}
  
  -- | 'metadataTimeseriesPeriodUnitCount' Lens
  metadataTimeseriesPeriodUnitCountL :: Lens_' MetadataTimeseriesPeriod (Maybe Int)
  metadataTimeseriesPeriodUnitCountL f MetadataTimeseriesPeriod{..} = (\metadataTimeseriesPeriodUnitCount -> MetadataTimeseriesPeriod { metadataTimeseriesPeriodUnitCount, ..} ) <$> f metadataTimeseriesPeriodUnitCount
  {-# INLINE metadataTimeseriesPeriodUnitCountL #-}
  
  -- | 'metadataTimeseriesPeriodUnitName' Lens
  metadataTimeseriesPeriodUnitNameL :: Lens_' MetadataTimeseriesPeriod (Maybe Text)
  metadataTimeseriesPeriodUnitNameL f MetadataTimeseriesPeriod{..} = (\metadataTimeseriesPeriodUnitName -> MetadataTimeseriesPeriod { metadataTimeseriesPeriodUnitName, ..} ) <$> f metadataTimeseriesPeriodUnitName
  {-# INLINE metadataTimeseriesPeriodUnitNameL #-}
  
  -- | 'metadataTimeseriesPeriodDisplayName' Lens
  metadataTimeseriesPeriodDisplayNameL :: Lens_' MetadataTimeseriesPeriod (Maybe Text)
  metadataTimeseriesPeriodDisplayNameL f MetadataTimeseriesPeriod{..} = (\metadataTimeseriesPeriodDisplayName -> MetadataTimeseriesPeriod { metadataTimeseriesPeriodDisplayName, ..} ) <$> f metadataTimeseriesPeriodDisplayName
  {-# INLINE metadataTimeseriesPeriodDisplayNameL #-}
  
  
  