diff --git a/gen/Network/Google/FirebaseDynamicLinks.hs b/gen/Network/Google/FirebaseDynamicLinks.hs
--- a/gen/Network/Google/FirebaseDynamicLinks.hs
+++ b/gen/Network/Google/FirebaseDynamicLinks.hs
@@ -13,8 +13,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Firebase Dynamic Links API enables third party developers to
--- programmatically create and manage Dynamic Links.
+-- Programmatically creates and manages Firebase Dynamic Links.
 --
 -- /See:/ <https://firebase.google.com/docs/dynamic-links/ Firebase Dynamic Links API Reference>
 module Network.Google.FirebaseDynamicLinks
@@ -30,28 +29,66 @@
 
     -- * Resources
 
+    -- ** firebasedynamiclinks.getLinkStats
+    , module Network.Google.Resource.FirebaseDynamicLinks.GetLinkStats
+
+    -- ** firebasedynamiclinks.installAttribution
+    , module Network.Google.Resource.FirebaseDynamicLinks.InstallAttribution
+
+    -- ** firebasedynamiclinks.managedShortLinks.create
+    , module Network.Google.Resource.FirebaseDynamicLinks.ManagedShortLinks.Create
+
+    -- ** firebasedynamiclinks.reopenAttribution
+    , module Network.Google.Resource.FirebaseDynamicLinks.ReopenAttribution
+
     -- ** firebasedynamiclinks.shortLinks.create
     , module Network.Google.Resource.FirebaseDynamicLinks.ShortLinks.Create
 
     -- * Types
 
+    -- ** NavigationInfo
+    , NavigationInfo
+    , navigationInfo
+    , niEnableForcedRedirect
+
+    -- ** DesktopInfo
+    , DesktopInfo
+    , desktopInfo
+    , diDesktopFallbackLink
+
+    -- ** DynamicLinkEventStatPlatform
+    , DynamicLinkEventStatPlatform (..)
+
     -- ** Suffix
     , Suffix
     , suffix
+    , sCustomSuffix
     , sOption
 
     -- ** DynamicLinkWarning
     , DynamicLinkWarning
     , dynamicLinkWarning
     , dlwWarningCode
+    , dlwWarningDocumentLink
     , dlwWarningMessage
 
+    -- ** ManagedShortLink
+    , ManagedShortLink
+    , managedShortLink
+    , mslCreationTime
+    , mslLink
+    , mslVisibility
+    , mslLinkName
+    , mslFlaggedAttribute
+    , mslInfo
+
     -- ** CreateShortDynamicLinkRequest
     , CreateShortDynamicLinkRequest
     , createShortDynamicLinkRequest
     , csdlrLongDynamicLink
     , csdlrSuffix
     , csdlrDynamicLinkInfo
+    , csdlrSdkVersion
 
     -- ** SocialMetaTagInfo
     , SocialMetaTagInfo
@@ -67,12 +104,20 @@
     , csdlrWarning
     , csdlrShortLink
 
+    -- ** DynamicLinkEventStat
+    , DynamicLinkEventStat
+    , dynamicLinkEventStat
+    , dlesEvent
+    , dlesPlatform
+    , dlesCount
+
     -- ** IosInfo
     , IosInfo
     , iosInfo
     , iiIosBundleId
     , iiIosIPadBundleId
     , iiIosAppStoreId
+    , iiIosMinimumVersion
     , iiIosIPadFallbackLink
     , iiIosCustomScheme
     , iiIosFallbackLink
@@ -80,19 +125,71 @@
     -- ** DynamicLinkInfo
     , DynamicLinkInfo
     , dynamicLinkInfo
+    , dliNavigationInfo
+    , dliDesktopInfo
     , dliSocialMetaTagInfo
     , dliDynamicLinkDomain
     , dliLink
     , dliIosInfo
+    , dliDomainURIPrefix
     , dliAndroidInfo
     , dliAnalyticsInfo
 
+    -- ** GetIosPostInstallAttributionRequestVisualStyle
+    , GetIosPostInstallAttributionRequestVisualStyle (..)
+
+    -- ** DynamicLinkStats
+    , DynamicLinkStats
+    , dynamicLinkStats
+    , dlsLinkEventStats
+
     -- ** SuffixOption
     , SuffixOption (..)
 
+    -- ** DynamicLinkEventStatEvent
+    , DynamicLinkEventStatEvent (..)
+
+    -- ** CreateManagedShortLinkRequest
+    , CreateManagedShortLinkRequest
+    , createManagedShortLinkRequest
+    , cmslrLongDynamicLink
+    , cmslrSuffix
+    , cmslrDynamicLinkInfo
+    , cmslrSdkVersion
+    , cmslrName
+
+    -- ** GetIosReopenAttributionResponse
+    , GetIosReopenAttributionResponse
+    , getIosReopenAttributionResponse
+    , girarIosMinAppVersion
+    , girarDeepLink
+    , girarResolvedLink
+    , girarUtmMedium
+    , girarInvitationId
+    , girarUtmCampaign
+    , girarUtmSource
+
+    -- ** GetIosPostInstallAttributionResponseRequestIPVersion
+    , GetIosPostInstallAttributionResponseRequestIPVersion (..)
+
+    -- ** GetIosPostInstallAttributionRequest
+    , GetIosPostInstallAttributionRequest
+    , getIosPostInstallAttributionRequest
+    , gipiarIosVersion
+    , gipiarUniqueMatchLinkToCheck
+    , gipiarAppInstallationTime
+    , gipiarDevice
+    , gipiarSdkVersion
+    , gipiarBundleId
+    , gipiarRetrievalMethod
+    , gipiarVisualStyle
+
     -- ** Xgafv
     , Xgafv (..)
 
+    -- ** GetIosPostInstallAttributionResponseAttributionConfidence
+    , GetIosPostInstallAttributionResponseAttributionConfidence (..)
+
     -- ** AndroidInfo
     , AndroidInfo
     , androidInfo
@@ -118,6 +215,38 @@
     , itcaPt
     , itcaCt
 
+    -- ** GetIosPostInstallAttributionResponse
+    , GetIosPostInstallAttributionResponse
+    , getIosPostInstallAttributionResponse
+    , gipiarDeepLink
+    , gipiarRequestIPVersion
+    , gipiarAppMinimumVersion
+    , gipiarAttributionConfidence
+    , gipiarExternalBrowserDestinationLink
+    , gipiarResolvedLink
+    , gipiarRequestedLink
+    , gipiarUtmMedium
+    , gipiarFallbackLink
+    , gipiarInvitationId
+    , gipiarIsStrongMatchExecutable
+    , gipiarUtmCampaign
+    , gipiarMatchMessage
+    , gipiarUtmSource
+
+    -- ** CreateManagedShortLinkResponse
+    , CreateManagedShortLinkResponse
+    , createManagedShortLinkResponse
+    , cmslrManagedShortLink
+    , cmslrPreviewLink
+    , cmslrWarning
+
+    -- ** GetIosReopenAttributionRequest
+    , GetIosReopenAttributionRequest
+    , getIosReopenAttributionRequest
+    , girarRequestedLink
+    , girarSdkVersion
+    , girarBundleId
+
     -- ** GooglePlayAnalytics
     , GooglePlayAnalytics
     , googlePlayAnalytics
@@ -127,10 +256,31 @@
     , gpaUtmCampaign
     , gpaGclid
     , gpaUtmSource
+
+    -- ** GetIosPostInstallAttributionRequestRetrievalMethod
+    , GetIosPostInstallAttributionRequestRetrievalMethod (..)
+
+    -- ** DeviceInfo
+    , DeviceInfo
+    , deviceInfo
+    , diLanguageCodeFromWebview
+    , diScreenResolutionWidth
+    , diLanguageCode
+    , diDeviceModelName
+    , diScreenResolutionHeight
+    , diLanguageCodeRaw
+    , diTimezone
+
+    -- ** ManagedShortLinkVisibility
+    , ManagedShortLinkVisibility (..)
     ) where
 
 import           Network.Google.FirebaseDynamicLinks.Types
 import           Network.Google.Prelude
+import           Network.Google.Resource.FirebaseDynamicLinks.GetLinkStats
+import           Network.Google.Resource.FirebaseDynamicLinks.InstallAttribution
+import           Network.Google.Resource.FirebaseDynamicLinks.ManagedShortLinks.Create
+import           Network.Google.Resource.FirebaseDynamicLinks.ReopenAttribution
 import           Network.Google.Resource.FirebaseDynamicLinks.ShortLinks.Create
 
 {- $resources
@@ -139,4 +289,8 @@
 
 -- | Represents the entirety of the methods and resources available for the Firebase Dynamic Links API service.
 type FirebaseDynamicLinksAPI =
-     ShortLinksCreateResource
+     ManagedShortLinksCreateResource :<|>
+       InstallAttributionResource
+       :<|> GetLinkStatsResource
+       :<|> ReopenAttributionResource
+       :<|> ShortLinksCreateResource
diff --git a/gen/Network/Google/FirebaseDynamicLinks/Types.hs b/gen/Network/Google/FirebaseDynamicLinks/Types.hs
--- a/gen/Network/Google/FirebaseDynamicLinks/Types.hs
+++ b/gen/Network/Google/FirebaseDynamicLinks/Types.hs
@@ -22,23 +22,49 @@
     -- * OAuth Scopes
     , firebaseScope
 
+    -- * NavigationInfo
+    , NavigationInfo
+    , navigationInfo
+    , niEnableForcedRedirect
+
+    -- * DesktopInfo
+    , DesktopInfo
+    , desktopInfo
+    , diDesktopFallbackLink
+
+    -- * DynamicLinkEventStatPlatform
+    , DynamicLinkEventStatPlatform (..)
+
     -- * Suffix
     , Suffix
     , suffix
+    , sCustomSuffix
     , sOption
 
     -- * DynamicLinkWarning
     , DynamicLinkWarning
     , dynamicLinkWarning
     , dlwWarningCode
+    , dlwWarningDocumentLink
     , dlwWarningMessage
 
+    -- * ManagedShortLink
+    , ManagedShortLink
+    , managedShortLink
+    , mslCreationTime
+    , mslLink
+    , mslVisibility
+    , mslLinkName
+    , mslFlaggedAttribute
+    , mslInfo
+
     -- * CreateShortDynamicLinkRequest
     , CreateShortDynamicLinkRequest
     , createShortDynamicLinkRequest
     , csdlrLongDynamicLink
     , csdlrSuffix
     , csdlrDynamicLinkInfo
+    , csdlrSdkVersion
 
     -- * SocialMetaTagInfo
     , SocialMetaTagInfo
@@ -54,12 +80,20 @@
     , csdlrWarning
     , csdlrShortLink
 
+    -- * DynamicLinkEventStat
+    , DynamicLinkEventStat
+    , dynamicLinkEventStat
+    , dlesEvent
+    , dlesPlatform
+    , dlesCount
+
     -- * IosInfo
     , IosInfo
     , iosInfo
     , iiIosBundleId
     , iiIosIPadBundleId
     , iiIosAppStoreId
+    , iiIosMinimumVersion
     , iiIosIPadFallbackLink
     , iiIosCustomScheme
     , iiIosFallbackLink
@@ -67,19 +101,71 @@
     -- * DynamicLinkInfo
     , DynamicLinkInfo
     , dynamicLinkInfo
+    , dliNavigationInfo
+    , dliDesktopInfo
     , dliSocialMetaTagInfo
     , dliDynamicLinkDomain
     , dliLink
     , dliIosInfo
+    , dliDomainURIPrefix
     , dliAndroidInfo
     , dliAnalyticsInfo
 
+    -- * GetIosPostInstallAttributionRequestVisualStyle
+    , GetIosPostInstallAttributionRequestVisualStyle (..)
+
+    -- * DynamicLinkStats
+    , DynamicLinkStats
+    , dynamicLinkStats
+    , dlsLinkEventStats
+
     -- * SuffixOption
     , SuffixOption (..)
 
+    -- * DynamicLinkEventStatEvent
+    , DynamicLinkEventStatEvent (..)
+
+    -- * CreateManagedShortLinkRequest
+    , CreateManagedShortLinkRequest
+    , createManagedShortLinkRequest
+    , cmslrLongDynamicLink
+    , cmslrSuffix
+    , cmslrDynamicLinkInfo
+    , cmslrSdkVersion
+    , cmslrName
+
+    -- * GetIosReopenAttributionResponse
+    , GetIosReopenAttributionResponse
+    , getIosReopenAttributionResponse
+    , girarIosMinAppVersion
+    , girarDeepLink
+    , girarResolvedLink
+    , girarUtmMedium
+    , girarInvitationId
+    , girarUtmCampaign
+    , girarUtmSource
+
+    -- * GetIosPostInstallAttributionResponseRequestIPVersion
+    , GetIosPostInstallAttributionResponseRequestIPVersion (..)
+
+    -- * GetIosPostInstallAttributionRequest
+    , GetIosPostInstallAttributionRequest
+    , getIosPostInstallAttributionRequest
+    , gipiarIosVersion
+    , gipiarUniqueMatchLinkToCheck
+    , gipiarAppInstallationTime
+    , gipiarDevice
+    , gipiarSdkVersion
+    , gipiarBundleId
+    , gipiarRetrievalMethod
+    , gipiarVisualStyle
+
     -- * Xgafv
     , Xgafv (..)
 
+    -- * GetIosPostInstallAttributionResponseAttributionConfidence
+    , GetIosPostInstallAttributionResponseAttributionConfidence (..)
+
     -- * AndroidInfo
     , AndroidInfo
     , androidInfo
@@ -105,6 +191,38 @@
     , itcaPt
     , itcaCt
 
+    -- * GetIosPostInstallAttributionResponse
+    , GetIosPostInstallAttributionResponse
+    , getIosPostInstallAttributionResponse
+    , gipiarDeepLink
+    , gipiarRequestIPVersion
+    , gipiarAppMinimumVersion
+    , gipiarAttributionConfidence
+    , gipiarExternalBrowserDestinationLink
+    , gipiarResolvedLink
+    , gipiarRequestedLink
+    , gipiarUtmMedium
+    , gipiarFallbackLink
+    , gipiarInvitationId
+    , gipiarIsStrongMatchExecutable
+    , gipiarUtmCampaign
+    , gipiarMatchMessage
+    , gipiarUtmSource
+
+    -- * CreateManagedShortLinkResponse
+    , CreateManagedShortLinkResponse
+    , createManagedShortLinkResponse
+    , cmslrManagedShortLink
+    , cmslrPreviewLink
+    , cmslrWarning
+
+    -- * GetIosReopenAttributionRequest
+    , GetIosReopenAttributionRequest
+    , getIosReopenAttributionRequest
+    , girarRequestedLink
+    , girarSdkVersion
+    , girarBundleId
+
     -- * GooglePlayAnalytics
     , GooglePlayAnalytics
     , googlePlayAnalytics
@@ -114,6 +232,23 @@
     , gpaUtmCampaign
     , gpaGclid
     , gpaUtmSource
+
+    -- * GetIosPostInstallAttributionRequestRetrievalMethod
+    , GetIosPostInstallAttributionRequestRetrievalMethod (..)
+
+    -- * DeviceInfo
+    , DeviceInfo
+    , deviceInfo
+    , diLanguageCodeFromWebview
+    , diScreenResolutionWidth
+    , diLanguageCode
+    , diDeviceModelName
+    , diScreenResolutionHeight
+    , diLanguageCodeRaw
+    , diTimezone
+
+    -- * ManagedShortLinkVisibility
+    , ManagedShortLinkVisibility (..)
     ) where
 
 import           Network.Google.FirebaseDynamicLinks.Types.Product
diff --git a/gen/Network/Google/FirebaseDynamicLinks/Types/Product.hs b/gen/Network/Google/FirebaseDynamicLinks/Types/Product.hs
--- a/gen/Network/Google/FirebaseDynamicLinks/Types/Product.hs
+++ b/gen/Network/Google/FirebaseDynamicLinks/Types/Product.hs
@@ -20,774 +20,1949 @@
 import           Network.Google.FirebaseDynamicLinks.Types.Sum
 import           Network.Google.Prelude
 
--- | Short Dynamic Link suffix.
---
--- /See:/ 'suffix' smart constructor.
-newtype Suffix = Suffix'
-    { _sOption :: Maybe SuffixOption
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Suffix' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sOption'
-suffix
-    :: Suffix
-suffix =
-    Suffix'
-    { _sOption = Nothing
-    }
-
--- | Suffix option.
-sOption :: Lens' Suffix (Maybe SuffixOption)
-sOption = lens _sOption (\ s a -> s{_sOption = a})
-
-instance FromJSON Suffix where
-        parseJSON
-          = withObject "Suffix"
-              (\ o -> Suffix' <$> (o .:? "option"))
-
-instance ToJSON Suffix where
-        toJSON Suffix'{..}
-          = object (catMaybes [("option" .=) <$> _sOption])
-
--- | Dynamic Links warning messages.
---
--- /See:/ 'dynamicLinkWarning' smart constructor.
-data DynamicLinkWarning = DynamicLinkWarning'
-    { _dlwWarningCode    :: !(Maybe DynamicLinkWarningWarningCode)
-    , _dlwWarningMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DynamicLinkWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dlwWarningCode'
---
--- * 'dlwWarningMessage'
-dynamicLinkWarning
-    :: DynamicLinkWarning
-dynamicLinkWarning =
-    DynamicLinkWarning'
-    { _dlwWarningCode = Nothing
-    , _dlwWarningMessage = Nothing
-    }
-
--- | The warning code.
-dlwWarningCode :: Lens' DynamicLinkWarning (Maybe DynamicLinkWarningWarningCode)
-dlwWarningCode
-  = lens _dlwWarningCode
-      (\ s a -> s{_dlwWarningCode = a})
-
--- | The warning message to help developers improve their requests.
-dlwWarningMessage :: Lens' DynamicLinkWarning (Maybe Text)
-dlwWarningMessage
-  = lens _dlwWarningMessage
-      (\ s a -> s{_dlwWarningMessage = a})
-
-instance FromJSON DynamicLinkWarning where
-        parseJSON
-          = withObject "DynamicLinkWarning"
-              (\ o ->
-                 DynamicLinkWarning' <$>
-                   (o .:? "warningCode") <*> (o .:? "warningMessage"))
-
-instance ToJSON DynamicLinkWarning where
-        toJSON DynamicLinkWarning'{..}
-          = object
-              (catMaybes
-                 [("warningCode" .=) <$> _dlwWarningCode,
-                  ("warningMessage" .=) <$> _dlwWarningMessage])
-
--- | Request to create a short Dynamic Link.
---
--- /See:/ 'createShortDynamicLinkRequest' smart constructor.
-data CreateShortDynamicLinkRequest = CreateShortDynamicLinkRequest'
-    { _csdlrLongDynamicLink :: !(Maybe Text)
-    , _csdlrSuffix          :: !(Maybe Suffix)
-    , _csdlrDynamicLinkInfo :: !(Maybe DynamicLinkInfo)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateShortDynamicLinkRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csdlrLongDynamicLink'
---
--- * 'csdlrSuffix'
---
--- * 'csdlrDynamicLinkInfo'
-createShortDynamicLinkRequest
-    :: CreateShortDynamicLinkRequest
-createShortDynamicLinkRequest =
-    CreateShortDynamicLinkRequest'
-    { _csdlrLongDynamicLink = Nothing
-    , _csdlrSuffix = Nothing
-    , _csdlrDynamicLinkInfo = Nothing
-    }
-
--- | Full long Dynamic Link URL with desired query parameters specified. For
--- example,
--- \"https:\/\/sample.app.goo.gl\/?link=http:\/\/www.google.com&apn=com.sample\",
--- [Learn
--- more](https:\/\/firebase.google.com\/docs\/dynamic-links\/android#create-a-dynamic-link-programmatically).
-csdlrLongDynamicLink :: Lens' CreateShortDynamicLinkRequest (Maybe Text)
-csdlrLongDynamicLink
-  = lens _csdlrLongDynamicLink
-      (\ s a -> s{_csdlrLongDynamicLink = a})
-
--- | Short Dynamic Link suffix. Optional.
-csdlrSuffix :: Lens' CreateShortDynamicLinkRequest (Maybe Suffix)
-csdlrSuffix
-  = lens _csdlrSuffix (\ s a -> s{_csdlrSuffix = a})
-
--- | Information about the Dynamic Link to be shortened. [Learn
--- more](https:\/\/firebase.google.com\/docs\/dynamic-links\/android#create-a-dynamic-link-programmatically).
-csdlrDynamicLinkInfo :: Lens' CreateShortDynamicLinkRequest (Maybe DynamicLinkInfo)
-csdlrDynamicLinkInfo
-  = lens _csdlrDynamicLinkInfo
-      (\ s a -> s{_csdlrDynamicLinkInfo = a})
-
-instance FromJSON CreateShortDynamicLinkRequest where
-        parseJSON
-          = withObject "CreateShortDynamicLinkRequest"
-              (\ o ->
-                 CreateShortDynamicLinkRequest' <$>
-                   (o .:? "longDynamicLink") <*> (o .:? "suffix") <*>
-                     (o .:? "dynamicLinkInfo"))
-
-instance ToJSON CreateShortDynamicLinkRequest where
-        toJSON CreateShortDynamicLinkRequest'{..}
-          = object
-              (catMaybes
-                 [("longDynamicLink" .=) <$> _csdlrLongDynamicLink,
-                  ("suffix" .=) <$> _csdlrSuffix,
-                  ("dynamicLinkInfo" .=) <$> _csdlrDynamicLinkInfo])
-
--- | Parameters for social meta tag params. Used to set meta tag data for
--- link previews on social sites.
---
--- /See:/ 'socialMetaTagInfo' smart constructor.
-data SocialMetaTagInfo = SocialMetaTagInfo'
-    { _smtiSocialImageLink   :: !(Maybe Text)
-    , _smtiSocialDescription :: !(Maybe Text)
-    , _smtiSocialTitle       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SocialMetaTagInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'smtiSocialImageLink'
---
--- * 'smtiSocialDescription'
---
--- * 'smtiSocialTitle'
-socialMetaTagInfo
-    :: SocialMetaTagInfo
-socialMetaTagInfo =
-    SocialMetaTagInfo'
-    { _smtiSocialImageLink = Nothing
-    , _smtiSocialDescription = Nothing
-    , _smtiSocialTitle = Nothing
-    }
-
--- | An image url string. Optional.
-smtiSocialImageLink :: Lens' SocialMetaTagInfo (Maybe Text)
-smtiSocialImageLink
-  = lens _smtiSocialImageLink
-      (\ s a -> s{_smtiSocialImageLink = a})
-
--- | A short description of the link. Optional.
-smtiSocialDescription :: Lens' SocialMetaTagInfo (Maybe Text)
-smtiSocialDescription
-  = lens _smtiSocialDescription
-      (\ s a -> s{_smtiSocialDescription = a})
-
--- | Title to be displayed. Optional.
-smtiSocialTitle :: Lens' SocialMetaTagInfo (Maybe Text)
-smtiSocialTitle
-  = lens _smtiSocialTitle
-      (\ s a -> s{_smtiSocialTitle = a})
-
-instance FromJSON SocialMetaTagInfo where
-        parseJSON
-          = withObject "SocialMetaTagInfo"
-              (\ o ->
-                 SocialMetaTagInfo' <$>
-                   (o .:? "socialImageLink") <*>
-                     (o .:? "socialDescription")
-                     <*> (o .:? "socialTitle"))
-
-instance ToJSON SocialMetaTagInfo where
-        toJSON SocialMetaTagInfo'{..}
-          = object
-              (catMaybes
-                 [("socialImageLink" .=) <$> _smtiSocialImageLink,
-                  ("socialDescription" .=) <$> _smtiSocialDescription,
-                  ("socialTitle" .=) <$> _smtiSocialTitle])
-
--- | Response to create a short Dynamic Link.
---
--- /See:/ 'createShortDynamicLinkResponse' smart constructor.
-data CreateShortDynamicLinkResponse = CreateShortDynamicLinkResponse'
-    { _csdlrPreviewLink :: !(Maybe Text)
-    , _csdlrWarning     :: !(Maybe [DynamicLinkWarning])
-    , _csdlrShortLink   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateShortDynamicLinkResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csdlrPreviewLink'
---
--- * 'csdlrWarning'
---
--- * 'csdlrShortLink'
-createShortDynamicLinkResponse
-    :: CreateShortDynamicLinkResponse
-createShortDynamicLinkResponse =
-    CreateShortDynamicLinkResponse'
-    { _csdlrPreviewLink = Nothing
-    , _csdlrWarning = Nothing
-    , _csdlrShortLink = Nothing
-    }
-
--- | Preivew link to show the link flow chart.
-csdlrPreviewLink :: Lens' CreateShortDynamicLinkResponse (Maybe Text)
-csdlrPreviewLink
-  = lens _csdlrPreviewLink
-      (\ s a -> s{_csdlrPreviewLink = a})
-
--- | Information about potential warnings on link creation.
-csdlrWarning :: Lens' CreateShortDynamicLinkResponse [DynamicLinkWarning]
-csdlrWarning
-  = lens _csdlrWarning (\ s a -> s{_csdlrWarning = a})
-      . _Default
-      . _Coerce
-
--- | Short Dynamic Link value. e.g. https:\/\/abcd.app.goo.gl\/wxyz
-csdlrShortLink :: Lens' CreateShortDynamicLinkResponse (Maybe Text)
-csdlrShortLink
-  = lens _csdlrShortLink
-      (\ s a -> s{_csdlrShortLink = a})
-
-instance FromJSON CreateShortDynamicLinkResponse
-         where
-        parseJSON
-          = withObject "CreateShortDynamicLinkResponse"
-              (\ o ->
-                 CreateShortDynamicLinkResponse' <$>
-                   (o .:? "previewLink") <*>
-                     (o .:? "warning" .!= mempty)
-                     <*> (o .:? "shortLink"))
-
-instance ToJSON CreateShortDynamicLinkResponse where
-        toJSON CreateShortDynamicLinkResponse'{..}
-          = object
-              (catMaybes
-                 [("previewLink" .=) <$> _csdlrPreviewLink,
-                  ("warning" .=) <$> _csdlrWarning,
-                  ("shortLink" .=) <$> _csdlrShortLink])
-
--- | iOS related attributes to the Dynamic Link..
---
--- /See:/ 'iosInfo' smart constructor.
-data IosInfo = IosInfo'
-    { _iiIosBundleId         :: !(Maybe Text)
-    , _iiIosIPadBundleId     :: !(Maybe Text)
-    , _iiIosAppStoreId       :: !(Maybe Text)
-    , _iiIosIPadFallbackLink :: !(Maybe Text)
-    , _iiIosCustomScheme     :: !(Maybe Text)
-    , _iiIosFallbackLink     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IosInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iiIosBundleId'
---
--- * 'iiIosIPadBundleId'
---
--- * 'iiIosAppStoreId'
---
--- * 'iiIosIPadFallbackLink'
---
--- * 'iiIosCustomScheme'
---
--- * 'iiIosFallbackLink'
-iosInfo
-    :: IosInfo
-iosInfo =
-    IosInfo'
-    { _iiIosBundleId = Nothing
-    , _iiIosIPadBundleId = Nothing
-    , _iiIosAppStoreId = Nothing
-    , _iiIosIPadFallbackLink = Nothing
-    , _iiIosCustomScheme = Nothing
-    , _iiIosFallbackLink = Nothing
-    }
-
--- | iOS bundle ID of the app.
-iiIosBundleId :: Lens' IosInfo (Maybe Text)
-iiIosBundleId
-  = lens _iiIosBundleId
-      (\ s a -> s{_iiIosBundleId = a})
-
--- | iPad bundle ID of the app.
-iiIosIPadBundleId :: Lens' IosInfo (Maybe Text)
-iiIosIPadBundleId
-  = lens _iiIosIPadBundleId
-      (\ s a -> s{_iiIosIPadBundleId = a})
-
--- | iOS App Store ID.
-iiIosAppStoreId :: Lens' IosInfo (Maybe Text)
-iiIosAppStoreId
-  = lens _iiIosAppStoreId
-      (\ s a -> s{_iiIosAppStoreId = a})
-
--- | If specified, this overrides the ios_fallback_link value on iPads.
-iiIosIPadFallbackLink :: Lens' IosInfo (Maybe Text)
-iiIosIPadFallbackLink
-  = lens _iiIosIPadFallbackLink
-      (\ s a -> s{_iiIosIPadFallbackLink = a})
-
--- | Custom (destination) scheme to use for iOS. By default, we’ll use the
--- bundle ID as the custom scheme. Developer can override this behavior
--- using this param.
-iiIosCustomScheme :: Lens' IosInfo (Maybe Text)
-iiIosCustomScheme
-  = lens _iiIosCustomScheme
-      (\ s a -> s{_iiIosCustomScheme = a})
-
--- | Link to open on iOS if the app is not installed.
-iiIosFallbackLink :: Lens' IosInfo (Maybe Text)
-iiIosFallbackLink
-  = lens _iiIosFallbackLink
-      (\ s a -> s{_iiIosFallbackLink = a})
-
-instance FromJSON IosInfo where
-        parseJSON
-          = withObject "IosInfo"
-              (\ o ->
-                 IosInfo' <$>
-                   (o .:? "iosBundleId") <*> (o .:? "iosIpadBundleId")
-                     <*> (o .:? "iosAppStoreId")
-                     <*> (o .:? "iosIpadFallbackLink")
-                     <*> (o .:? "iosCustomScheme")
-                     <*> (o .:? "iosFallbackLink"))
-
-instance ToJSON IosInfo where
-        toJSON IosInfo'{..}
-          = object
-              (catMaybes
-                 [("iosBundleId" .=) <$> _iiIosBundleId,
-                  ("iosIpadBundleId" .=) <$> _iiIosIPadBundleId,
-                  ("iosAppStoreId" .=) <$> _iiIosAppStoreId,
-                  ("iosIpadFallbackLink" .=) <$>
-                    _iiIosIPadFallbackLink,
-                  ("iosCustomScheme" .=) <$> _iiIosCustomScheme,
-                  ("iosFallbackLink" .=) <$> _iiIosFallbackLink])
-
--- | Information about a Dynamic Link.
---
--- /See:/ 'dynamicLinkInfo' smart constructor.
-data DynamicLinkInfo = DynamicLinkInfo'
-    { _dliSocialMetaTagInfo :: !(Maybe SocialMetaTagInfo)
-    , _dliDynamicLinkDomain :: !(Maybe Text)
-    , _dliLink              :: !(Maybe Text)
-    , _dliIosInfo           :: !(Maybe IosInfo)
-    , _dliAndroidInfo       :: !(Maybe AndroidInfo)
-    , _dliAnalyticsInfo     :: !(Maybe AnalyticsInfo)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DynamicLinkInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dliSocialMetaTagInfo'
---
--- * 'dliDynamicLinkDomain'
---
--- * 'dliLink'
---
--- * 'dliIosInfo'
---
--- * 'dliAndroidInfo'
---
--- * 'dliAnalyticsInfo'
-dynamicLinkInfo
-    :: DynamicLinkInfo
-dynamicLinkInfo =
-    DynamicLinkInfo'
-    { _dliSocialMetaTagInfo = Nothing
-    , _dliDynamicLinkDomain = Nothing
-    , _dliLink = Nothing
-    , _dliIosInfo = Nothing
-    , _dliAndroidInfo = Nothing
-    , _dliAnalyticsInfo = Nothing
-    }
-
--- | Parameters for social meta tag params. Used to set meta tag data for
--- link previews on social sites.
-dliSocialMetaTagInfo :: Lens' DynamicLinkInfo (Maybe SocialMetaTagInfo)
-dliSocialMetaTagInfo
-  = lens _dliSocialMetaTagInfo
-      (\ s a -> s{_dliSocialMetaTagInfo = a})
-
--- | Dynamic Links domain that the project owns, e.g. abcd.app.goo.gl [Learn
--- more](https:\/\/firebase.google.com\/docs\/dynamic-links\/android#set-up-firebase-and-the-dynamic-links-sdk)
--- on how to set up Dynamic Link domain associated with your Firebase
--- project. Required.
-dliDynamicLinkDomain :: Lens' DynamicLinkInfo (Maybe Text)
-dliDynamicLinkDomain
-  = lens _dliDynamicLinkDomain
-      (\ s a -> s{_dliDynamicLinkDomain = a})
-
--- | The link your app will open, You can specify any URL your app can
--- handle. This link must be a well-formatted URL, be properly URL-encoded,
--- and use the HTTP or HTTPS scheme. See \'link\' parameters in the
--- [documentation](https:\/\/firebase.google.com\/docs\/dynamic-links\/android#create-a-dynamic-link-programmatically).
--- Required.
-dliLink :: Lens' DynamicLinkInfo (Maybe Text)
-dliLink = lens _dliLink (\ s a -> s{_dliLink = a})
-
--- | iOS related information. See iOS related parameters in the
--- [documentation](https:\/\/firebase.google.com\/docs\/dynamic-links\/ios#create-a-dynamic-link-programmatically).
-dliIosInfo :: Lens' DynamicLinkInfo (Maybe IosInfo)
-dliIosInfo
-  = lens _dliIosInfo (\ s a -> s{_dliIosInfo = a})
-
--- | Android related information. See Android related parameters in the
--- [documentation](https:\/\/firebase.google.com\/docs\/dynamic-links\/android#create-a-dynamic-link-programmatically).
-dliAndroidInfo :: Lens' DynamicLinkInfo (Maybe AndroidInfo)
-dliAndroidInfo
-  = lens _dliAndroidInfo
-      (\ s a -> s{_dliAndroidInfo = a})
-
--- | Parameters used for tracking. See all tracking parameters in the
--- [documentation](https:\/\/firebase.google.com\/docs\/dynamic-links\/android#create-a-dynamic-link-programmatically).
-dliAnalyticsInfo :: Lens' DynamicLinkInfo (Maybe AnalyticsInfo)
-dliAnalyticsInfo
-  = lens _dliAnalyticsInfo
-      (\ s a -> s{_dliAnalyticsInfo = a})
-
-instance FromJSON DynamicLinkInfo where
-        parseJSON
-          = withObject "DynamicLinkInfo"
-              (\ o ->
-                 DynamicLinkInfo' <$>
-                   (o .:? "socialMetaTagInfo") <*>
-                     (o .:? "dynamicLinkDomain")
-                     <*> (o .:? "link")
-                     <*> (o .:? "iosInfo")
-                     <*> (o .:? "androidInfo")
-                     <*> (o .:? "analyticsInfo"))
-
-instance ToJSON DynamicLinkInfo where
-        toJSON DynamicLinkInfo'{..}
-          = object
-              (catMaybes
-                 [("socialMetaTagInfo" .=) <$> _dliSocialMetaTagInfo,
-                  ("dynamicLinkDomain" .=) <$> _dliDynamicLinkDomain,
-                  ("link" .=) <$> _dliLink,
-                  ("iosInfo" .=) <$> _dliIosInfo,
-                  ("androidInfo" .=) <$> _dliAndroidInfo,
-                  ("analyticsInfo" .=) <$> _dliAnalyticsInfo])
-
--- | Android related attributes to the Dynamic Link.
---
--- /See:/ 'androidInfo' smart constructor.
-data AndroidInfo = AndroidInfo'
-    { _aiAndroidMinPackageVersionCode :: !(Maybe Text)
-    , _aiAndroidFallbackLink          :: !(Maybe Text)
-    , _aiAndroidLink                  :: !(Maybe Text)
-    , _aiAndroidPackageName           :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AndroidInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aiAndroidMinPackageVersionCode'
---
--- * 'aiAndroidFallbackLink'
---
--- * 'aiAndroidLink'
---
--- * 'aiAndroidPackageName'
-androidInfo
-    :: AndroidInfo
-androidInfo =
-    AndroidInfo'
-    { _aiAndroidMinPackageVersionCode = Nothing
-    , _aiAndroidFallbackLink = Nothing
-    , _aiAndroidLink = Nothing
-    , _aiAndroidPackageName = Nothing
-    }
-
--- | Minimum version code for the Android app. If the installed app’s version
--- code is lower, then the user is taken to the Play Store.
-aiAndroidMinPackageVersionCode :: Lens' AndroidInfo (Maybe Text)
-aiAndroidMinPackageVersionCode
-  = lens _aiAndroidMinPackageVersionCode
-      (\ s a -> s{_aiAndroidMinPackageVersionCode = a})
-
--- | Link to open on Android if the app is not installed.
-aiAndroidFallbackLink :: Lens' AndroidInfo (Maybe Text)
-aiAndroidFallbackLink
-  = lens _aiAndroidFallbackLink
-      (\ s a -> s{_aiAndroidFallbackLink = a})
-
--- | If specified, this overrides the ‘link’ parameter on Android.
-aiAndroidLink :: Lens' AndroidInfo (Maybe Text)
-aiAndroidLink
-  = lens _aiAndroidLink
-      (\ s a -> s{_aiAndroidLink = a})
-
--- | Android package name of the app.
-aiAndroidPackageName :: Lens' AndroidInfo (Maybe Text)
-aiAndroidPackageName
-  = lens _aiAndroidPackageName
-      (\ s a -> s{_aiAndroidPackageName = a})
-
-instance FromJSON AndroidInfo where
-        parseJSON
-          = withObject "AndroidInfo"
-              (\ o ->
-                 AndroidInfo' <$>
-                   (o .:? "androidMinPackageVersionCode") <*>
-                     (o .:? "androidFallbackLink")
-                     <*> (o .:? "androidLink")
-                     <*> (o .:? "androidPackageName"))
-
-instance ToJSON AndroidInfo where
-        toJSON AndroidInfo'{..}
-          = object
-              (catMaybes
-                 [("androidMinPackageVersionCode" .=) <$>
-                    _aiAndroidMinPackageVersionCode,
-                  ("androidFallbackLink" .=) <$>
-                    _aiAndroidFallbackLink,
-                  ("androidLink" .=) <$> _aiAndroidLink,
-                  ("androidPackageName" .=) <$> _aiAndroidPackageName])
-
--- | Tracking parameters supported by Dynamic Link.
---
--- /See:/ 'analyticsInfo' smart constructor.
-data AnalyticsInfo = AnalyticsInfo'
-    { _aiItunesConnectAnalytics :: !(Maybe ITunesConnectAnalytics)
-    , _aiGooglePlayAnalytics    :: !(Maybe GooglePlayAnalytics)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AnalyticsInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aiItunesConnectAnalytics'
---
--- * 'aiGooglePlayAnalytics'
-analyticsInfo
-    :: AnalyticsInfo
-analyticsInfo =
-    AnalyticsInfo'
-    { _aiItunesConnectAnalytics = Nothing
-    , _aiGooglePlayAnalytics = Nothing
-    }
-
--- | iTunes Connect App Analytics.
-aiItunesConnectAnalytics :: Lens' AnalyticsInfo (Maybe ITunesConnectAnalytics)
-aiItunesConnectAnalytics
-  = lens _aiItunesConnectAnalytics
-      (\ s a -> s{_aiItunesConnectAnalytics = a})
-
--- | Google Play Campaign Measurements.
-aiGooglePlayAnalytics :: Lens' AnalyticsInfo (Maybe GooglePlayAnalytics)
-aiGooglePlayAnalytics
-  = lens _aiGooglePlayAnalytics
-      (\ s a -> s{_aiGooglePlayAnalytics = a})
-
-instance FromJSON AnalyticsInfo where
-        parseJSON
-          = withObject "AnalyticsInfo"
-              (\ o ->
-                 AnalyticsInfo' <$>
-                   (o .:? "itunesConnectAnalytics") <*>
-                     (o .:? "googlePlayAnalytics"))
-
-instance ToJSON AnalyticsInfo where
-        toJSON AnalyticsInfo'{..}
-          = object
-              (catMaybes
-                 [("itunesConnectAnalytics" .=) <$>
-                    _aiItunesConnectAnalytics,
-                  ("googlePlayAnalytics" .=) <$>
-                    _aiGooglePlayAnalytics])
-
--- | Parameters for iTunes Connect App Analytics.
---
--- /See:/ 'iTunesConnectAnalytics' smart constructor.
-data ITunesConnectAnalytics = ITunesConnectAnalytics'
-    { _itcaAt :: !(Maybe Text)
-    , _itcaMt :: !(Maybe Text)
-    , _itcaPt :: !(Maybe Text)
-    , _itcaCt :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ITunesConnectAnalytics' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'itcaAt'
---
--- * 'itcaMt'
---
--- * 'itcaPt'
---
--- * 'itcaCt'
-iTunesConnectAnalytics
-    :: ITunesConnectAnalytics
-iTunesConnectAnalytics =
-    ITunesConnectAnalytics'
-    { _itcaAt = Nothing
-    , _itcaMt = Nothing
-    , _itcaPt = Nothing
-    , _itcaCt = Nothing
-    }
-
--- | Affiliate token used to create affiliate-coded links.
-itcaAt :: Lens' ITunesConnectAnalytics (Maybe Text)
-itcaAt = lens _itcaAt (\ s a -> s{_itcaAt = a})
-
--- | iTune media types, including music, podcasts, audiobooks and so on.
-itcaMt :: Lens' ITunesConnectAnalytics (Maybe Text)
-itcaMt = lens _itcaMt (\ s a -> s{_itcaMt = a})
-
--- | Provider token that enables analytics for Dynamic Links from within
--- iTunes Connect.
-itcaPt :: Lens' ITunesConnectAnalytics (Maybe Text)
-itcaPt = lens _itcaPt (\ s a -> s{_itcaPt = a})
-
--- | Campaign text that developers can optionally add to any link in order to
--- track sales from a specific marketing campaign.
-itcaCt :: Lens' ITunesConnectAnalytics (Maybe Text)
-itcaCt = lens _itcaCt (\ s a -> s{_itcaCt = a})
-
-instance FromJSON ITunesConnectAnalytics where
-        parseJSON
-          = withObject "ITunesConnectAnalytics"
-              (\ o ->
-                 ITunesConnectAnalytics' <$>
-                   (o .:? "at") <*> (o .:? "mt") <*> (o .:? "pt") <*>
-                     (o .:? "ct"))
-
-instance ToJSON ITunesConnectAnalytics where
-        toJSON ITunesConnectAnalytics'{..}
-          = object
-              (catMaybes
-                 [("at" .=) <$> _itcaAt, ("mt" .=) <$> _itcaMt,
-                  ("pt" .=) <$> _itcaPt, ("ct" .=) <$> _itcaCt])
-
--- | Parameters for Google Play Campaign Measurements. [Learn
--- more](https:\/\/developers.google.com\/analytics\/devguides\/collection\/android\/v4\/campaigns#campaign-params)
---
--- /See:/ 'googlePlayAnalytics' smart constructor.
-data GooglePlayAnalytics = GooglePlayAnalytics'
-    { _gpaUtmContent  :: !(Maybe Text)
-    , _gpaUtmMedium   :: !(Maybe Text)
-    , _gpaUtmTerm     :: !(Maybe Text)
-    , _gpaUtmCampaign :: !(Maybe Text)
-    , _gpaGclid       :: !(Maybe Text)
-    , _gpaUtmSource   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GooglePlayAnalytics' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gpaUtmContent'
---
--- * 'gpaUtmMedium'
---
--- * 'gpaUtmTerm'
---
--- * 'gpaUtmCampaign'
---
--- * 'gpaGclid'
---
--- * 'gpaUtmSource'
-googlePlayAnalytics
-    :: GooglePlayAnalytics
-googlePlayAnalytics =
-    GooglePlayAnalytics'
-    { _gpaUtmContent = Nothing
-    , _gpaUtmMedium = Nothing
-    , _gpaUtmTerm = Nothing
-    , _gpaUtmCampaign = Nothing
-    , _gpaGclid = Nothing
-    , _gpaUtmSource = Nothing
-    }
-
--- | Campaign content; used for A\/B testing and content-targeted ads to
--- differentiate ads or links that point to the same URL.
-gpaUtmContent :: Lens' GooglePlayAnalytics (Maybe Text)
-gpaUtmContent
-  = lens _gpaUtmContent
-      (\ s a -> s{_gpaUtmContent = a})
-
--- | Campaign medium; used to identify a medium such as email or
--- cost-per-click.
-gpaUtmMedium :: Lens' GooglePlayAnalytics (Maybe Text)
-gpaUtmMedium
-  = lens _gpaUtmMedium (\ s a -> s{_gpaUtmMedium = a})
-
--- | Campaign term; used with paid search to supply the keywords for ads.
-gpaUtmTerm :: Lens' GooglePlayAnalytics (Maybe Text)
-gpaUtmTerm
-  = lens _gpaUtmTerm (\ s a -> s{_gpaUtmTerm = a})
-
--- | Campaign name; used for keyword analysis to identify a specific product
--- promotion or strategic campaign.
-gpaUtmCampaign :: Lens' GooglePlayAnalytics (Maybe Text)
-gpaUtmCampaign
-  = lens _gpaUtmCampaign
-      (\ s a -> s{_gpaUtmCampaign = a})
-
--- | [AdWords autotagging
--- parameter](https:\/\/support.google.com\/analytics\/answer\/1033981?hl=en);
--- used to measure Google AdWords ads. This value is generated dynamically
--- and should never be modified.
-gpaGclid :: Lens' GooglePlayAnalytics (Maybe Text)
-gpaGclid = lens _gpaGclid (\ s a -> s{_gpaGclid = a})
-
--- | Campaign source; used to identify a search engine, newsletter, or other
--- source.
-gpaUtmSource :: Lens' GooglePlayAnalytics (Maybe Text)
-gpaUtmSource
-  = lens _gpaUtmSource (\ s a -> s{_gpaUtmSource = a})
-
-instance FromJSON GooglePlayAnalytics where
-        parseJSON
-          = withObject "GooglePlayAnalytics"
-              (\ o ->
-                 GooglePlayAnalytics' <$>
-                   (o .:? "utmContent") <*> (o .:? "utmMedium") <*>
-                     (o .:? "utmTerm")
-                     <*> (o .:? "utmCampaign")
-                     <*> (o .:? "gclid")
-                     <*> (o .:? "utmSource"))
-
-instance ToJSON GooglePlayAnalytics where
-        toJSON GooglePlayAnalytics'{..}
-          = object
-              (catMaybes
-                 [("utmContent" .=) <$> _gpaUtmContent,
-                  ("utmMedium" .=) <$> _gpaUtmMedium,
-                  ("utmTerm" .=) <$> _gpaUtmTerm,
-                  ("utmCampaign" .=) <$> _gpaUtmCampaign,
-                  ("gclid" .=) <$> _gpaGclid,
-                  ("utmSource" .=) <$> _gpaUtmSource])
+-- | Information of navigation behavior.
+--
+-- /See:/ 'navigationInfo' smart constructor.
+newtype NavigationInfo = NavigationInfo'
+    { _niEnableForcedRedirect :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NavigationInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niEnableForcedRedirect'
+navigationInfo
+    :: NavigationInfo
+navigationInfo =
+    NavigationInfo'
+    { _niEnableForcedRedirect = Nothing
+    }
+
+-- | If this option is on, FDL click will be forced to redirect rather than
+-- show an interstitial page.
+niEnableForcedRedirect :: Lens' NavigationInfo (Maybe Bool)
+niEnableForcedRedirect
+  = lens _niEnableForcedRedirect
+      (\ s a -> s{_niEnableForcedRedirect = a})
+
+instance FromJSON NavigationInfo where
+        parseJSON
+          = withObject "NavigationInfo"
+              (\ o ->
+                 NavigationInfo' <$> (o .:? "enableForcedRedirect"))
+
+instance ToJSON NavigationInfo where
+        toJSON NavigationInfo'{..}
+          = object
+              (catMaybes
+                 [("enableForcedRedirect" .=) <$>
+                    _niEnableForcedRedirect])
+
+-- | Desktop related attributes to the Dynamic Link.
+--
+-- /See:/ 'desktopInfo' smart constructor.
+newtype DesktopInfo = DesktopInfo'
+    { _diDesktopFallbackLink :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DesktopInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diDesktopFallbackLink'
+desktopInfo
+    :: DesktopInfo
+desktopInfo =
+    DesktopInfo'
+    { _diDesktopFallbackLink = Nothing
+    }
+
+-- | Link to open on desktop.
+diDesktopFallbackLink :: Lens' DesktopInfo (Maybe Text)
+diDesktopFallbackLink
+  = lens _diDesktopFallbackLink
+      (\ s a -> s{_diDesktopFallbackLink = a})
+
+instance FromJSON DesktopInfo where
+        parseJSON
+          = withObject "DesktopInfo"
+              (\ o ->
+                 DesktopInfo' <$> (o .:? "desktopFallbackLink"))
+
+instance ToJSON DesktopInfo where
+        toJSON DesktopInfo'{..}
+          = object
+              (catMaybes
+                 [("desktopFallbackLink" .=) <$>
+                    _diDesktopFallbackLink])
+
+-- | Short Dynamic Link suffix.
+--
+-- /See:/ 'suffix' smart constructor.
+data Suffix = Suffix'
+    { _sCustomSuffix :: !(Maybe Text)
+    , _sOption       :: !(Maybe SuffixOption)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Suffix' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sCustomSuffix'
+--
+-- * 'sOption'
+suffix
+    :: Suffix
+suffix =
+    Suffix'
+    { _sCustomSuffix = Nothing
+    , _sOption = Nothing
+    }
+
+-- | Only applies to Option.CUSTOM.
+sCustomSuffix :: Lens' Suffix (Maybe Text)
+sCustomSuffix
+  = lens _sCustomSuffix
+      (\ s a -> s{_sCustomSuffix = a})
+
+-- | Suffix option.
+sOption :: Lens' Suffix (Maybe SuffixOption)
+sOption = lens _sOption (\ s a -> s{_sOption = a})
+
+instance FromJSON Suffix where
+        parseJSON
+          = withObject "Suffix"
+              (\ o ->
+                 Suffix' <$>
+                   (o .:? "customSuffix") <*> (o .:? "option"))
+
+instance ToJSON Suffix where
+        toJSON Suffix'{..}
+          = object
+              (catMaybes
+                 [("customSuffix" .=) <$> _sCustomSuffix,
+                  ("option" .=) <$> _sOption])
+
+-- | Dynamic Links warning messages.
+--
+-- /See:/ 'dynamicLinkWarning' smart constructor.
+data DynamicLinkWarning = DynamicLinkWarning'
+    { _dlwWarningCode         :: !(Maybe DynamicLinkWarningWarningCode)
+    , _dlwWarningDocumentLink :: !(Maybe Text)
+    , _dlwWarningMessage      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DynamicLinkWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlwWarningCode'
+--
+-- * 'dlwWarningDocumentLink'
+--
+-- * 'dlwWarningMessage'
+dynamicLinkWarning
+    :: DynamicLinkWarning
+dynamicLinkWarning =
+    DynamicLinkWarning'
+    { _dlwWarningCode = Nothing
+    , _dlwWarningDocumentLink = Nothing
+    , _dlwWarningMessage = Nothing
+    }
+
+-- | The warning code.
+dlwWarningCode :: Lens' DynamicLinkWarning (Maybe DynamicLinkWarningWarningCode)
+dlwWarningCode
+  = lens _dlwWarningCode
+      (\ s a -> s{_dlwWarningCode = a})
+
+-- | The document describing the warning, and helps resolve.
+dlwWarningDocumentLink :: Lens' DynamicLinkWarning (Maybe Text)
+dlwWarningDocumentLink
+  = lens _dlwWarningDocumentLink
+      (\ s a -> s{_dlwWarningDocumentLink = a})
+
+-- | The warning message to help developers improve their requests.
+dlwWarningMessage :: Lens' DynamicLinkWarning (Maybe Text)
+dlwWarningMessage
+  = lens _dlwWarningMessage
+      (\ s a -> s{_dlwWarningMessage = a})
+
+instance FromJSON DynamicLinkWarning where
+        parseJSON
+          = withObject "DynamicLinkWarning"
+              (\ o ->
+                 DynamicLinkWarning' <$>
+                   (o .:? "warningCode") <*>
+                     (o .:? "warningDocumentLink")
+                     <*> (o .:? "warningMessage"))
+
+instance ToJSON DynamicLinkWarning where
+        toJSON DynamicLinkWarning'{..}
+          = object
+              (catMaybes
+                 [("warningCode" .=) <$> _dlwWarningCode,
+                  ("warningDocumentLink" .=) <$>
+                    _dlwWarningDocumentLink,
+                  ("warningMessage" .=) <$> _dlwWarningMessage])
+
+-- | Managed Short Link.
+--
+-- /See:/ 'managedShortLink' smart constructor.
+data ManagedShortLink = ManagedShortLink'
+    { _mslCreationTime     :: !(Maybe DateTime')
+    , _mslLink             :: !(Maybe Text)
+    , _mslVisibility       :: !(Maybe ManagedShortLinkVisibility)
+    , _mslLinkName         :: !(Maybe Text)
+    , _mslFlaggedAttribute :: !(Maybe [Text])
+    , _mslInfo             :: !(Maybe DynamicLinkInfo)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedShortLink' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mslCreationTime'
+--
+-- * 'mslLink'
+--
+-- * 'mslVisibility'
+--
+-- * 'mslLinkName'
+--
+-- * 'mslFlaggedAttribute'
+--
+-- * 'mslInfo'
+managedShortLink
+    :: ManagedShortLink
+managedShortLink =
+    ManagedShortLink'
+    { _mslCreationTime = Nothing
+    , _mslLink = Nothing
+    , _mslVisibility = Nothing
+    , _mslLinkName = Nothing
+    , _mslFlaggedAttribute = Nothing
+    , _mslInfo = Nothing
+    }
+
+-- | Creation timestamp of the short link.
+mslCreationTime :: Lens' ManagedShortLink (Maybe UTCTime)
+mslCreationTime
+  = lens _mslCreationTime
+      (\ s a -> s{_mslCreationTime = a})
+      . mapping _DateTime
+
+-- | Short durable link url, for example,
+-- \"https:\/\/sample.app.goo.gl\/xyz123\". Required.
+mslLink :: Lens' ManagedShortLink (Maybe Text)
+mslLink = lens _mslLink (\ s a -> s{_mslLink = a})
+
+-- | Visibility status of link.
+mslVisibility :: Lens' ManagedShortLink (Maybe ManagedShortLinkVisibility)
+mslVisibility
+  = lens _mslVisibility
+      (\ s a -> s{_mslVisibility = a})
+
+-- | Link name defined by the creator. Required.
+mslLinkName :: Lens' ManagedShortLink (Maybe Text)
+mslLinkName
+  = lens _mslLinkName (\ s a -> s{_mslLinkName = a})
+
+-- | Attributes that have been flagged about this short url.
+mslFlaggedAttribute :: Lens' ManagedShortLink [Text]
+mslFlaggedAttribute
+  = lens _mslFlaggedAttribute
+      (\ s a -> s{_mslFlaggedAttribute = a})
+      . _Default
+      . _Coerce
+
+-- | Full Dyamic Link info
+mslInfo :: Lens' ManagedShortLink (Maybe DynamicLinkInfo)
+mslInfo = lens _mslInfo (\ s a -> s{_mslInfo = a})
+
+instance FromJSON ManagedShortLink where
+        parseJSON
+          = withObject "ManagedShortLink"
+              (\ o ->
+                 ManagedShortLink' <$>
+                   (o .:? "creationTime") <*> (o .:? "link") <*>
+                     (o .:? "visibility")
+                     <*> (o .:? "linkName")
+                     <*> (o .:? "flaggedAttribute" .!= mempty)
+                     <*> (o .:? "info"))
+
+instance ToJSON ManagedShortLink where
+        toJSON ManagedShortLink'{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _mslCreationTime,
+                  ("link" .=) <$> _mslLink,
+                  ("visibility" .=) <$> _mslVisibility,
+                  ("linkName" .=) <$> _mslLinkName,
+                  ("flaggedAttribute" .=) <$> _mslFlaggedAttribute,
+                  ("info" .=) <$> _mslInfo])
+
+-- | Request to create a short Dynamic Link.
+--
+-- /See:/ 'createShortDynamicLinkRequest' smart constructor.
+data CreateShortDynamicLinkRequest = CreateShortDynamicLinkRequest'
+    { _csdlrLongDynamicLink :: !(Maybe Text)
+    , _csdlrSuffix          :: !(Maybe Suffix)
+    , _csdlrDynamicLinkInfo :: !(Maybe DynamicLinkInfo)
+    , _csdlrSdkVersion      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateShortDynamicLinkRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csdlrLongDynamicLink'
+--
+-- * 'csdlrSuffix'
+--
+-- * 'csdlrDynamicLinkInfo'
+--
+-- * 'csdlrSdkVersion'
+createShortDynamicLinkRequest
+    :: CreateShortDynamicLinkRequest
+createShortDynamicLinkRequest =
+    CreateShortDynamicLinkRequest'
+    { _csdlrLongDynamicLink = Nothing
+    , _csdlrSuffix = Nothing
+    , _csdlrDynamicLinkInfo = Nothing
+    , _csdlrSdkVersion = Nothing
+    }
+
+-- | Full long Dynamic Link URL with desired query parameters specified. For
+-- example,
+-- \"https:\/\/sample.app.goo.gl\/?link=http:\/\/www.google.com&apn=com.sample\",
+-- [Learn
+-- more](https:\/\/firebase.google.com\/docs\/reference\/dynamic-links\/link-shortener).
+csdlrLongDynamicLink :: Lens' CreateShortDynamicLinkRequest (Maybe Text)
+csdlrLongDynamicLink
+  = lens _csdlrLongDynamicLink
+      (\ s a -> s{_csdlrLongDynamicLink = a})
+
+-- | Short Dynamic Link suffix. Optional.
+csdlrSuffix :: Lens' CreateShortDynamicLinkRequest (Maybe Suffix)
+csdlrSuffix
+  = lens _csdlrSuffix (\ s a -> s{_csdlrSuffix = a})
+
+-- | Information about the Dynamic Link to be shortened. [Learn
+-- more](https:\/\/firebase.google.com\/docs\/reference\/dynamic-links\/link-shortener).
+csdlrDynamicLinkInfo :: Lens' CreateShortDynamicLinkRequest (Maybe DynamicLinkInfo)
+csdlrDynamicLinkInfo
+  = lens _csdlrDynamicLinkInfo
+      (\ s a -> s{_csdlrDynamicLinkInfo = a})
+
+-- | Google SDK version. Version takes the form
+-- \"/m//a//j//o//r/.minor.$patch\"
+csdlrSdkVersion :: Lens' CreateShortDynamicLinkRequest (Maybe Text)
+csdlrSdkVersion
+  = lens _csdlrSdkVersion
+      (\ s a -> s{_csdlrSdkVersion = a})
+
+instance FromJSON CreateShortDynamicLinkRequest where
+        parseJSON
+          = withObject "CreateShortDynamicLinkRequest"
+              (\ o ->
+                 CreateShortDynamicLinkRequest' <$>
+                   (o .:? "longDynamicLink") <*> (o .:? "suffix") <*>
+                     (o .:? "dynamicLinkInfo")
+                     <*> (o .:? "sdkVersion"))
+
+instance ToJSON CreateShortDynamicLinkRequest where
+        toJSON CreateShortDynamicLinkRequest'{..}
+          = object
+              (catMaybes
+                 [("longDynamicLink" .=) <$> _csdlrLongDynamicLink,
+                  ("suffix" .=) <$> _csdlrSuffix,
+                  ("dynamicLinkInfo" .=) <$> _csdlrDynamicLinkInfo,
+                  ("sdkVersion" .=) <$> _csdlrSdkVersion])
+
+-- | Parameters for social meta tag params. Used to set meta tag data for
+-- link previews on social sites.
+--
+-- /See:/ 'socialMetaTagInfo' smart constructor.
+data SocialMetaTagInfo = SocialMetaTagInfo'
+    { _smtiSocialImageLink   :: !(Maybe Text)
+    , _smtiSocialDescription :: !(Maybe Text)
+    , _smtiSocialTitle       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SocialMetaTagInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'smtiSocialImageLink'
+--
+-- * 'smtiSocialDescription'
+--
+-- * 'smtiSocialTitle'
+socialMetaTagInfo
+    :: SocialMetaTagInfo
+socialMetaTagInfo =
+    SocialMetaTagInfo'
+    { _smtiSocialImageLink = Nothing
+    , _smtiSocialDescription = Nothing
+    , _smtiSocialTitle = Nothing
+    }
+
+-- | An image url string. Optional.
+smtiSocialImageLink :: Lens' SocialMetaTagInfo (Maybe Text)
+smtiSocialImageLink
+  = lens _smtiSocialImageLink
+      (\ s a -> s{_smtiSocialImageLink = a})
+
+-- | A short description of the link. Optional.
+smtiSocialDescription :: Lens' SocialMetaTagInfo (Maybe Text)
+smtiSocialDescription
+  = lens _smtiSocialDescription
+      (\ s a -> s{_smtiSocialDescription = a})
+
+-- | Title to be displayed. Optional.
+smtiSocialTitle :: Lens' SocialMetaTagInfo (Maybe Text)
+smtiSocialTitle
+  = lens _smtiSocialTitle
+      (\ s a -> s{_smtiSocialTitle = a})
+
+instance FromJSON SocialMetaTagInfo where
+        parseJSON
+          = withObject "SocialMetaTagInfo"
+              (\ o ->
+                 SocialMetaTagInfo' <$>
+                   (o .:? "socialImageLink") <*>
+                     (o .:? "socialDescription")
+                     <*> (o .:? "socialTitle"))
+
+instance ToJSON SocialMetaTagInfo where
+        toJSON SocialMetaTagInfo'{..}
+          = object
+              (catMaybes
+                 [("socialImageLink" .=) <$> _smtiSocialImageLink,
+                  ("socialDescription" .=) <$> _smtiSocialDescription,
+                  ("socialTitle" .=) <$> _smtiSocialTitle])
+
+-- | Response to create a short Dynamic Link.
+--
+-- /See:/ 'createShortDynamicLinkResponse' smart constructor.
+data CreateShortDynamicLinkResponse = CreateShortDynamicLinkResponse'
+    { _csdlrPreviewLink :: !(Maybe Text)
+    , _csdlrWarning     :: !(Maybe [DynamicLinkWarning])
+    , _csdlrShortLink   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateShortDynamicLinkResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csdlrPreviewLink'
+--
+-- * 'csdlrWarning'
+--
+-- * 'csdlrShortLink'
+createShortDynamicLinkResponse
+    :: CreateShortDynamicLinkResponse
+createShortDynamicLinkResponse =
+    CreateShortDynamicLinkResponse'
+    { _csdlrPreviewLink = Nothing
+    , _csdlrWarning = Nothing
+    , _csdlrShortLink = Nothing
+    }
+
+-- | Preview link to show the link flow chart. (debug info.)
+csdlrPreviewLink :: Lens' CreateShortDynamicLinkResponse (Maybe Text)
+csdlrPreviewLink
+  = lens _csdlrPreviewLink
+      (\ s a -> s{_csdlrPreviewLink = a})
+
+-- | Information about potential warnings on link creation.
+csdlrWarning :: Lens' CreateShortDynamicLinkResponse [DynamicLinkWarning]
+csdlrWarning
+  = lens _csdlrWarning (\ s a -> s{_csdlrWarning = a})
+      . _Default
+      . _Coerce
+
+-- | Short Dynamic Link value. e.g. https:\/\/abcd.app.goo.gl\/wxyz
+csdlrShortLink :: Lens' CreateShortDynamicLinkResponse (Maybe Text)
+csdlrShortLink
+  = lens _csdlrShortLink
+      (\ s a -> s{_csdlrShortLink = a})
+
+instance FromJSON CreateShortDynamicLinkResponse
+         where
+        parseJSON
+          = withObject "CreateShortDynamicLinkResponse"
+              (\ o ->
+                 CreateShortDynamicLinkResponse' <$>
+                   (o .:? "previewLink") <*>
+                     (o .:? "warning" .!= mempty)
+                     <*> (o .:? "shortLink"))
+
+instance ToJSON CreateShortDynamicLinkResponse where
+        toJSON CreateShortDynamicLinkResponse'{..}
+          = object
+              (catMaybes
+                 [("previewLink" .=) <$> _csdlrPreviewLink,
+                  ("warning" .=) <$> _csdlrWarning,
+                  ("shortLink" .=) <$> _csdlrShortLink])
+
+-- | Dynamic Link event stat.
+--
+-- /See:/ 'dynamicLinkEventStat' smart constructor.
+data DynamicLinkEventStat = DynamicLinkEventStat'
+    { _dlesEvent    :: !(Maybe DynamicLinkEventStatEvent)
+    , _dlesPlatform :: !(Maybe DynamicLinkEventStatPlatform)
+    , _dlesCount    :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DynamicLinkEventStat' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlesEvent'
+--
+-- * 'dlesPlatform'
+--
+-- * 'dlesCount'
+dynamicLinkEventStat
+    :: DynamicLinkEventStat
+dynamicLinkEventStat =
+    DynamicLinkEventStat'
+    { _dlesEvent = Nothing
+    , _dlesPlatform = Nothing
+    , _dlesCount = Nothing
+    }
+
+-- | Link event.
+dlesEvent :: Lens' DynamicLinkEventStat (Maybe DynamicLinkEventStatEvent)
+dlesEvent
+  = lens _dlesEvent (\ s a -> s{_dlesEvent = a})
+
+-- | Requested platform.
+dlesPlatform :: Lens' DynamicLinkEventStat (Maybe DynamicLinkEventStatPlatform)
+dlesPlatform
+  = lens _dlesPlatform (\ s a -> s{_dlesPlatform = a})
+
+-- | The number of times this event occurred.
+dlesCount :: Lens' DynamicLinkEventStat (Maybe Int64)
+dlesCount
+  = lens _dlesCount (\ s a -> s{_dlesCount = a}) .
+      mapping _Coerce
+
+instance FromJSON DynamicLinkEventStat where
+        parseJSON
+          = withObject "DynamicLinkEventStat"
+              (\ o ->
+                 DynamicLinkEventStat' <$>
+                   (o .:? "event") <*> (o .:? "platform") <*>
+                     (o .:? "count"))
+
+instance ToJSON DynamicLinkEventStat where
+        toJSON DynamicLinkEventStat'{..}
+          = object
+              (catMaybes
+                 [("event" .=) <$> _dlesEvent,
+                  ("platform" .=) <$> _dlesPlatform,
+                  ("count" .=) <$> _dlesCount])
+
+-- | iOS related attributes to the Dynamic Link..
+--
+-- /See:/ 'iosInfo' smart constructor.
+data IosInfo = IosInfo'
+    { _iiIosBundleId         :: !(Maybe Text)
+    , _iiIosIPadBundleId     :: !(Maybe Text)
+    , _iiIosAppStoreId       :: !(Maybe Text)
+    , _iiIosMinimumVersion   :: !(Maybe Text)
+    , _iiIosIPadFallbackLink :: !(Maybe Text)
+    , _iiIosCustomScheme     :: !(Maybe Text)
+    , _iiIosFallbackLink     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IosInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiIosBundleId'
+--
+-- * 'iiIosIPadBundleId'
+--
+-- * 'iiIosAppStoreId'
+--
+-- * 'iiIosMinimumVersion'
+--
+-- * 'iiIosIPadFallbackLink'
+--
+-- * 'iiIosCustomScheme'
+--
+-- * 'iiIosFallbackLink'
+iosInfo
+    :: IosInfo
+iosInfo =
+    IosInfo'
+    { _iiIosBundleId = Nothing
+    , _iiIosIPadBundleId = Nothing
+    , _iiIosAppStoreId = Nothing
+    , _iiIosMinimumVersion = Nothing
+    , _iiIosIPadFallbackLink = Nothing
+    , _iiIosCustomScheme = Nothing
+    , _iiIosFallbackLink = Nothing
+    }
+
+-- | iOS bundle ID of the app.
+iiIosBundleId :: Lens' IosInfo (Maybe Text)
+iiIosBundleId
+  = lens _iiIosBundleId
+      (\ s a -> s{_iiIosBundleId = a})
+
+-- | iPad bundle ID of the app.
+iiIosIPadBundleId :: Lens' IosInfo (Maybe Text)
+iiIosIPadBundleId
+  = lens _iiIosIPadBundleId
+      (\ s a -> s{_iiIosIPadBundleId = a})
+
+-- | iOS App Store ID.
+iiIosAppStoreId :: Lens' IosInfo (Maybe Text)
+iiIosAppStoreId
+  = lens _iiIosAppStoreId
+      (\ s a -> s{_iiIosAppStoreId = a})
+
+-- | iOS minimum version.
+iiIosMinimumVersion :: Lens' IosInfo (Maybe Text)
+iiIosMinimumVersion
+  = lens _iiIosMinimumVersion
+      (\ s a -> s{_iiIosMinimumVersion = a})
+
+-- | If specified, this overrides the ios_fallback_link value on iPads.
+iiIosIPadFallbackLink :: Lens' IosInfo (Maybe Text)
+iiIosIPadFallbackLink
+  = lens _iiIosIPadFallbackLink
+      (\ s a -> s{_iiIosIPadFallbackLink = a})
+
+-- | Custom (destination) scheme to use for iOS. By default, we’ll use the
+-- bundle ID as the custom scheme. Developer can override this behavior
+-- using this param.
+iiIosCustomScheme :: Lens' IosInfo (Maybe Text)
+iiIosCustomScheme
+  = lens _iiIosCustomScheme
+      (\ s a -> s{_iiIosCustomScheme = a})
+
+-- | Link to open on iOS if the app is not installed.
+iiIosFallbackLink :: Lens' IosInfo (Maybe Text)
+iiIosFallbackLink
+  = lens _iiIosFallbackLink
+      (\ s a -> s{_iiIosFallbackLink = a})
+
+instance FromJSON IosInfo where
+        parseJSON
+          = withObject "IosInfo"
+              (\ o ->
+                 IosInfo' <$>
+                   (o .:? "iosBundleId") <*> (o .:? "iosIpadBundleId")
+                     <*> (o .:? "iosAppStoreId")
+                     <*> (o .:? "iosMinimumVersion")
+                     <*> (o .:? "iosIpadFallbackLink")
+                     <*> (o .:? "iosCustomScheme")
+                     <*> (o .:? "iosFallbackLink"))
+
+instance ToJSON IosInfo where
+        toJSON IosInfo'{..}
+          = object
+              (catMaybes
+                 [("iosBundleId" .=) <$> _iiIosBundleId,
+                  ("iosIpadBundleId" .=) <$> _iiIosIPadBundleId,
+                  ("iosAppStoreId" .=) <$> _iiIosAppStoreId,
+                  ("iosMinimumVersion" .=) <$> _iiIosMinimumVersion,
+                  ("iosIpadFallbackLink" .=) <$>
+                    _iiIosIPadFallbackLink,
+                  ("iosCustomScheme" .=) <$> _iiIosCustomScheme,
+                  ("iosFallbackLink" .=) <$> _iiIosFallbackLink])
+
+-- | Information about a Dynamic Link.
+--
+-- /See:/ 'dynamicLinkInfo' smart constructor.
+data DynamicLinkInfo = DynamicLinkInfo'
+    { _dliNavigationInfo    :: !(Maybe NavigationInfo)
+    , _dliDesktopInfo       :: !(Maybe DesktopInfo)
+    , _dliSocialMetaTagInfo :: !(Maybe SocialMetaTagInfo)
+    , _dliDynamicLinkDomain :: !(Maybe Text)
+    , _dliLink              :: !(Maybe Text)
+    , _dliIosInfo           :: !(Maybe IosInfo)
+    , _dliDomainURIPrefix   :: !(Maybe Text)
+    , _dliAndroidInfo       :: !(Maybe AndroidInfo)
+    , _dliAnalyticsInfo     :: !(Maybe AnalyticsInfo)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DynamicLinkInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dliNavigationInfo'
+--
+-- * 'dliDesktopInfo'
+--
+-- * 'dliSocialMetaTagInfo'
+--
+-- * 'dliDynamicLinkDomain'
+--
+-- * 'dliLink'
+--
+-- * 'dliIosInfo'
+--
+-- * 'dliDomainURIPrefix'
+--
+-- * 'dliAndroidInfo'
+--
+-- * 'dliAnalyticsInfo'
+dynamicLinkInfo
+    :: DynamicLinkInfo
+dynamicLinkInfo =
+    DynamicLinkInfo'
+    { _dliNavigationInfo = Nothing
+    , _dliDesktopInfo = Nothing
+    , _dliSocialMetaTagInfo = Nothing
+    , _dliDynamicLinkDomain = Nothing
+    , _dliLink = Nothing
+    , _dliIosInfo = Nothing
+    , _dliDomainURIPrefix = Nothing
+    , _dliAndroidInfo = Nothing
+    , _dliAnalyticsInfo = Nothing
+    }
+
+-- | Information of navigation behavior of a Firebase Dynamic Links.
+dliNavigationInfo :: Lens' DynamicLinkInfo (Maybe NavigationInfo)
+dliNavigationInfo
+  = lens _dliNavigationInfo
+      (\ s a -> s{_dliNavigationInfo = a})
+
+-- | Desktop related information. See desktop related parameters in the
+-- [documentation](https:\/\/firebase.google.com\/docs\/dynamic-links\/create-manually).
+dliDesktopInfo :: Lens' DynamicLinkInfo (Maybe DesktopInfo)
+dliDesktopInfo
+  = lens _dliDesktopInfo
+      (\ s a -> s{_dliDesktopInfo = a})
+
+-- | Parameters for social meta tag params. Used to set meta tag data for
+-- link previews on social sites.
+dliSocialMetaTagInfo :: Lens' DynamicLinkInfo (Maybe SocialMetaTagInfo)
+dliSocialMetaTagInfo
+  = lens _dliSocialMetaTagInfo
+      (\ s a -> s{_dliSocialMetaTagInfo = a})
+
+-- | Dynamic Links domain that the project owns, e.g. abcd.app.goo.gl [Learn
+-- more](https:\/\/firebase.google.com\/docs\/dynamic-links\/android\/receive)
+-- on how to set up Dynamic Link domain associated with your Firebase
+-- project. Required if missing domain_uri_prefix.
+dliDynamicLinkDomain :: Lens' DynamicLinkInfo (Maybe Text)
+dliDynamicLinkDomain
+  = lens _dliDynamicLinkDomain
+      (\ s a -> s{_dliDynamicLinkDomain = a})
+
+-- | The link your app will open, You can specify any URL your app can
+-- handle. This link must be a well-formatted URL, be properly URL-encoded,
+-- and use the HTTP or HTTPS scheme. See \'link\' parameters in the
+-- [documentation](https:\/\/firebase.google.com\/docs\/dynamic-links\/create-manually).
+-- Required.
+dliLink :: Lens' DynamicLinkInfo (Maybe Text)
+dliLink = lens _dliLink (\ s a -> s{_dliLink = a})
+
+-- | iOS related information. See iOS related parameters in the
+-- [documentation](https:\/\/firebase.google.com\/docs\/dynamic-links\/create-manually).
+dliIosInfo :: Lens' DynamicLinkInfo (Maybe IosInfo)
+dliIosInfo
+  = lens _dliIosInfo (\ s a -> s{_dliIosInfo = a})
+
+-- | E.g. https:\/\/maps.app.goo.gl, https:\/\/maps.page.link,
+-- https:\/\/g.co\/maps More examples can be found in description of
+-- getNormalizedUriPrefix in
+-- j\/c\/g\/firebase\/dynamiclinks\/uri\/DdlDomain.java Will fallback to
+-- dynamic_link_domain is this field is missing
+dliDomainURIPrefix :: Lens' DynamicLinkInfo (Maybe Text)
+dliDomainURIPrefix
+  = lens _dliDomainURIPrefix
+      (\ s a -> s{_dliDomainURIPrefix = a})
+
+-- | Android related information. See Android related parameters in the
+-- [documentation](https:\/\/firebase.google.com\/docs\/dynamic-links\/create-manually).
+dliAndroidInfo :: Lens' DynamicLinkInfo (Maybe AndroidInfo)
+dliAndroidInfo
+  = lens _dliAndroidInfo
+      (\ s a -> s{_dliAndroidInfo = a})
+
+-- | Parameters used for tracking. See all tracking parameters in the
+-- [documentation](https:\/\/firebase.google.com\/docs\/dynamic-links\/create-manually).
+dliAnalyticsInfo :: Lens' DynamicLinkInfo (Maybe AnalyticsInfo)
+dliAnalyticsInfo
+  = lens _dliAnalyticsInfo
+      (\ s a -> s{_dliAnalyticsInfo = a})
+
+instance FromJSON DynamicLinkInfo where
+        parseJSON
+          = withObject "DynamicLinkInfo"
+              (\ o ->
+                 DynamicLinkInfo' <$>
+                   (o .:? "navigationInfo") <*> (o .:? "desktopInfo")
+                     <*> (o .:? "socialMetaTagInfo")
+                     <*> (o .:? "dynamicLinkDomain")
+                     <*> (o .:? "link")
+                     <*> (o .:? "iosInfo")
+                     <*> (o .:? "domainUriPrefix")
+                     <*> (o .:? "androidInfo")
+                     <*> (o .:? "analyticsInfo"))
+
+instance ToJSON DynamicLinkInfo where
+        toJSON DynamicLinkInfo'{..}
+          = object
+              (catMaybes
+                 [("navigationInfo" .=) <$> _dliNavigationInfo,
+                  ("desktopInfo" .=) <$> _dliDesktopInfo,
+                  ("socialMetaTagInfo" .=) <$> _dliSocialMetaTagInfo,
+                  ("dynamicLinkDomain" .=) <$> _dliDynamicLinkDomain,
+                  ("link" .=) <$> _dliLink,
+                  ("iosInfo" .=) <$> _dliIosInfo,
+                  ("domainUriPrefix" .=) <$> _dliDomainURIPrefix,
+                  ("androidInfo" .=) <$> _dliAndroidInfo,
+                  ("analyticsInfo" .=) <$> _dliAnalyticsInfo])
+
+-- | Analytics stats of a Dynamic Link for a given timeframe.
+--
+-- /See:/ 'dynamicLinkStats' smart constructor.
+newtype DynamicLinkStats = DynamicLinkStats'
+    { _dlsLinkEventStats :: Maybe [DynamicLinkEventStat]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DynamicLinkStats' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlsLinkEventStats'
+dynamicLinkStats
+    :: DynamicLinkStats
+dynamicLinkStats =
+    DynamicLinkStats'
+    { _dlsLinkEventStats = Nothing
+    }
+
+-- | Dynamic Link event stats.
+dlsLinkEventStats :: Lens' DynamicLinkStats [DynamicLinkEventStat]
+dlsLinkEventStats
+  = lens _dlsLinkEventStats
+      (\ s a -> s{_dlsLinkEventStats = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON DynamicLinkStats where
+        parseJSON
+          = withObject "DynamicLinkStats"
+              (\ o ->
+                 DynamicLinkStats' <$>
+                   (o .:? "linkEventStats" .!= mempty))
+
+instance ToJSON DynamicLinkStats where
+        toJSON DynamicLinkStats'{..}
+          = object
+              (catMaybes
+                 [("linkEventStats" .=) <$> _dlsLinkEventStats])
+
+-- | Request to create a managed Short Dynamic Link.
+--
+-- /See:/ 'createManagedShortLinkRequest' smart constructor.
+data CreateManagedShortLinkRequest = CreateManagedShortLinkRequest'
+    { _cmslrLongDynamicLink :: !(Maybe Text)
+    , _cmslrSuffix          :: !(Maybe Suffix)
+    , _cmslrDynamicLinkInfo :: !(Maybe DynamicLinkInfo)
+    , _cmslrSdkVersion      :: !(Maybe Text)
+    , _cmslrName            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateManagedShortLinkRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmslrLongDynamicLink'
+--
+-- * 'cmslrSuffix'
+--
+-- * 'cmslrDynamicLinkInfo'
+--
+-- * 'cmslrSdkVersion'
+--
+-- * 'cmslrName'
+createManagedShortLinkRequest
+    :: CreateManagedShortLinkRequest
+createManagedShortLinkRequest =
+    CreateManagedShortLinkRequest'
+    { _cmslrLongDynamicLink = Nothing
+    , _cmslrSuffix = Nothing
+    , _cmslrDynamicLinkInfo = Nothing
+    , _cmslrSdkVersion = Nothing
+    , _cmslrName = Nothing
+    }
+
+-- | Full long Dynamic Link URL with desired query parameters specified. For
+-- example,
+-- \"https:\/\/sample.app.goo.gl\/?link=http:\/\/www.google.com&apn=com.sample\",
+-- [Learn
+-- more](https:\/\/firebase.google.com\/docs\/reference\/dynamic-links\/link-shortener).
+cmslrLongDynamicLink :: Lens' CreateManagedShortLinkRequest (Maybe Text)
+cmslrLongDynamicLink
+  = lens _cmslrLongDynamicLink
+      (\ s a -> s{_cmslrLongDynamicLink = a})
+
+-- | Short Dynamic Link suffix. Optional.
+cmslrSuffix :: Lens' CreateManagedShortLinkRequest (Maybe Suffix)
+cmslrSuffix
+  = lens _cmslrSuffix (\ s a -> s{_cmslrSuffix = a})
+
+-- | Information about the Dynamic Link to be shortened. [Learn
+-- more](https:\/\/firebase.google.com\/docs\/reference\/dynamic-links\/link-shortener).
+cmslrDynamicLinkInfo :: Lens' CreateManagedShortLinkRequest (Maybe DynamicLinkInfo)
+cmslrDynamicLinkInfo
+  = lens _cmslrDynamicLinkInfo
+      (\ s a -> s{_cmslrDynamicLinkInfo = a})
+
+-- | Google SDK version. Version takes the form
+-- \"/m//a//j//o//r/.minor.$patch\"
+cmslrSdkVersion :: Lens' CreateManagedShortLinkRequest (Maybe Text)
+cmslrSdkVersion
+  = lens _cmslrSdkVersion
+      (\ s a -> s{_cmslrSdkVersion = a})
+
+-- | Link name to associate with the link. It\'s used for marketer to
+-- identify manually-created links in the Firebase console
+-- (https:\/\/console.firebase.google.com\/). Links must be named to be
+-- tracked.
+cmslrName :: Lens' CreateManagedShortLinkRequest (Maybe Text)
+cmslrName
+  = lens _cmslrName (\ s a -> s{_cmslrName = a})
+
+instance FromJSON CreateManagedShortLinkRequest where
+        parseJSON
+          = withObject "CreateManagedShortLinkRequest"
+              (\ o ->
+                 CreateManagedShortLinkRequest' <$>
+                   (o .:? "longDynamicLink") <*> (o .:? "suffix") <*>
+                     (o .:? "dynamicLinkInfo")
+                     <*> (o .:? "sdkVersion")
+                     <*> (o .:? "name"))
+
+instance ToJSON CreateManagedShortLinkRequest where
+        toJSON CreateManagedShortLinkRequest'{..}
+          = object
+              (catMaybes
+                 [("longDynamicLink" .=) <$> _cmslrLongDynamicLink,
+                  ("suffix" .=) <$> _cmslrSuffix,
+                  ("dynamicLinkInfo" .=) <$> _cmslrDynamicLinkInfo,
+                  ("sdkVersion" .=) <$> _cmslrSdkVersion,
+                  ("name" .=) <$> _cmslrName])
+
+-- | Response for iSDK to get reopen attribution for app universal link open
+-- deeplinking. This endpoint is meant for only iOS requests.
+--
+-- /See:/ 'getIosReopenAttributionResponse' smart constructor.
+data GetIosReopenAttributionResponse = GetIosReopenAttributionResponse'
+    { _girarIosMinAppVersion :: !(Maybe Text)
+    , _girarDeepLink         :: !(Maybe Text)
+    , _girarResolvedLink     :: !(Maybe Text)
+    , _girarUtmMedium        :: !(Maybe Text)
+    , _girarInvitationId     :: !(Maybe Text)
+    , _girarUtmCampaign      :: !(Maybe Text)
+    , _girarUtmSource        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIosReopenAttributionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'girarIosMinAppVersion'
+--
+-- * 'girarDeepLink'
+--
+-- * 'girarResolvedLink'
+--
+-- * 'girarUtmMedium'
+--
+-- * 'girarInvitationId'
+--
+-- * 'girarUtmCampaign'
+--
+-- * 'girarUtmSource'
+getIosReopenAttributionResponse
+    :: GetIosReopenAttributionResponse
+getIosReopenAttributionResponse =
+    GetIosReopenAttributionResponse'
+    { _girarIosMinAppVersion = Nothing
+    , _girarDeepLink = Nothing
+    , _girarResolvedLink = Nothing
+    , _girarUtmMedium = Nothing
+    , _girarInvitationId = Nothing
+    , _girarUtmCampaign = Nothing
+    , _girarUtmSource = Nothing
+    }
+
+-- | FDL input value of the \"&imv=\" parameter, minimum app version to be
+-- returned to Google Firebase SDK running on iOS-9.
+girarIosMinAppVersion :: Lens' GetIosReopenAttributionResponse (Maybe Text)
+girarIosMinAppVersion
+  = lens _girarIosMinAppVersion
+      (\ s a -> s{_girarIosMinAppVersion = a})
+
+-- | The deep-link attributed the app universal link open. For both regular
+-- FDL links and invite FDL links.
+girarDeepLink :: Lens' GetIosReopenAttributionResponse (Maybe Text)
+girarDeepLink
+  = lens _girarDeepLink
+      (\ s a -> s{_girarDeepLink = a})
+
+-- | The entire FDL, expanded from a short link. It is the same as the
+-- requested_link, if it is long.
+girarResolvedLink :: Lens' GetIosReopenAttributionResponse (Maybe Text)
+girarResolvedLink
+  = lens _girarResolvedLink
+      (\ s a -> s{_girarResolvedLink = a})
+
+-- | Scion medium value to be propagated by iSDK to Scion at app-reopen.
+girarUtmMedium :: Lens' GetIosReopenAttributionResponse (Maybe Text)
+girarUtmMedium
+  = lens _girarUtmMedium
+      (\ s a -> s{_girarUtmMedium = a})
+
+-- | Optional invitation ID, for only invite typed requested FDL links.
+girarInvitationId :: Lens' GetIosReopenAttributionResponse (Maybe Text)
+girarInvitationId
+  = lens _girarInvitationId
+      (\ s a -> s{_girarInvitationId = a})
+
+-- | Scion campaign value to be propagated by iSDK to Scion at app-reopen.
+girarUtmCampaign :: Lens' GetIosReopenAttributionResponse (Maybe Text)
+girarUtmCampaign
+  = lens _girarUtmCampaign
+      (\ s a -> s{_girarUtmCampaign = a})
+
+-- | Scion source value to be propagated by iSDK to Scion at app-reopen.
+girarUtmSource :: Lens' GetIosReopenAttributionResponse (Maybe Text)
+girarUtmSource
+  = lens _girarUtmSource
+      (\ s a -> s{_girarUtmSource = a})
+
+instance FromJSON GetIosReopenAttributionResponse
+         where
+        parseJSON
+          = withObject "GetIosReopenAttributionResponse"
+              (\ o ->
+                 GetIosReopenAttributionResponse' <$>
+                   (o .:? "iosMinAppVersion") <*> (o .:? "deepLink") <*>
+                     (o .:? "resolvedLink")
+                     <*> (o .:? "utmMedium")
+                     <*> (o .:? "invitationId")
+                     <*> (o .:? "utmCampaign")
+                     <*> (o .:? "utmSource"))
+
+instance ToJSON GetIosReopenAttributionResponse where
+        toJSON GetIosReopenAttributionResponse'{..}
+          = object
+              (catMaybes
+                 [("iosMinAppVersion" .=) <$> _girarIosMinAppVersion,
+                  ("deepLink" .=) <$> _girarDeepLink,
+                  ("resolvedLink" .=) <$> _girarResolvedLink,
+                  ("utmMedium" .=) <$> _girarUtmMedium,
+                  ("invitationId" .=) <$> _girarInvitationId,
+                  ("utmCampaign" .=) <$> _girarUtmCampaign,
+                  ("utmSource" .=) <$> _girarUtmSource])
+
+-- | Request for iSDK to execute strong match flow for post-install
+-- attribution. This is meant for iOS requests only. Requests from other
+-- platforms will not be honored.
+--
+-- /See:/ 'getIosPostInstallAttributionRequest' smart constructor.
+data GetIosPostInstallAttributionRequest = GetIosPostInstallAttributionRequest'
+    { _gipiarIosVersion             :: !(Maybe Text)
+    , _gipiarUniqueMatchLinkToCheck :: !(Maybe Text)
+    , _gipiarAppInstallationTime    :: !(Maybe (Textual Int64))
+    , _gipiarDevice                 :: !(Maybe DeviceInfo)
+    , _gipiarSdkVersion             :: !(Maybe Text)
+    , _gipiarBundleId               :: !(Maybe Text)
+    , _gipiarRetrievalMethod        :: !(Maybe GetIosPostInstallAttributionRequestRetrievalMethod)
+    , _gipiarVisualStyle            :: !(Maybe GetIosPostInstallAttributionRequestVisualStyle)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIosPostInstallAttributionRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gipiarIosVersion'
+--
+-- * 'gipiarUniqueMatchLinkToCheck'
+--
+-- * 'gipiarAppInstallationTime'
+--
+-- * 'gipiarDevice'
+--
+-- * 'gipiarSdkVersion'
+--
+-- * 'gipiarBundleId'
+--
+-- * 'gipiarRetrievalMethod'
+--
+-- * 'gipiarVisualStyle'
+getIosPostInstallAttributionRequest
+    :: GetIosPostInstallAttributionRequest
+getIosPostInstallAttributionRequest =
+    GetIosPostInstallAttributionRequest'
+    { _gipiarIosVersion = Nothing
+    , _gipiarUniqueMatchLinkToCheck = Nothing
+    , _gipiarAppInstallationTime = Nothing
+    , _gipiarDevice = Nothing
+    , _gipiarSdkVersion = Nothing
+    , _gipiarBundleId = Nothing
+    , _gipiarRetrievalMethod = Nothing
+    , _gipiarVisualStyle = Nothing
+    }
+
+-- | iOS version, ie: 9.3.5. Consider adding \"build\".
+gipiarIosVersion :: Lens' GetIosPostInstallAttributionRequest (Maybe Text)
+gipiarIosVersion
+  = lens _gipiarIosVersion
+      (\ s a -> s{_gipiarIosVersion = a})
+
+-- | Possible unique matched link that server need to check before performing
+-- fingerprint match. If passed link is short server need to expand the
+-- link. If link is long server need to vslidate the link.
+gipiarUniqueMatchLinkToCheck :: Lens' GetIosPostInstallAttributionRequest (Maybe Text)
+gipiarUniqueMatchLinkToCheck
+  = lens _gipiarUniqueMatchLinkToCheck
+      (\ s a -> s{_gipiarUniqueMatchLinkToCheck = a})
+
+-- | App installation epoch time
+-- (https:\/\/en.wikipedia.org\/wiki\/Unix_time). This is a client signal
+-- for a more accurate weak match.
+gipiarAppInstallationTime :: Lens' GetIosPostInstallAttributionRequest (Maybe Int64)
+gipiarAppInstallationTime
+  = lens _gipiarAppInstallationTime
+      (\ s a -> s{_gipiarAppInstallationTime = a})
+      . mapping _Coerce
+
+-- | Device information.
+gipiarDevice :: Lens' GetIosPostInstallAttributionRequest (Maybe DeviceInfo)
+gipiarDevice
+  = lens _gipiarDevice (\ s a -> s{_gipiarDevice = a})
+
+-- | Google SDK version. Version takes the form
+-- \"/m//a//j//o//r/.minor.$patch\"
+gipiarSdkVersion :: Lens' GetIosPostInstallAttributionRequest (Maybe Text)
+gipiarSdkVersion
+  = lens _gipiarSdkVersion
+      (\ s a -> s{_gipiarSdkVersion = a})
+
+-- | APP bundle ID.
+gipiarBundleId :: Lens' GetIosPostInstallAttributionRequest (Maybe Text)
+gipiarBundleId
+  = lens _gipiarBundleId
+      (\ s a -> s{_gipiarBundleId = a})
+
+-- | App post install attribution retrieval information. Disambiguates
+-- mechanism (iSDK or developer invoked) to retrieve payload from clicked
+-- link.
+gipiarRetrievalMethod :: Lens' GetIosPostInstallAttributionRequest (Maybe GetIosPostInstallAttributionRequestRetrievalMethod)
+gipiarRetrievalMethod
+  = lens _gipiarRetrievalMethod
+      (\ s a -> s{_gipiarRetrievalMethod = a})
+
+-- | Strong match page information. Disambiguates between default UI and
+-- custom page to present when strong match succeeds\/fails to find cookie.
+gipiarVisualStyle :: Lens' GetIosPostInstallAttributionRequest (Maybe GetIosPostInstallAttributionRequestVisualStyle)
+gipiarVisualStyle
+  = lens _gipiarVisualStyle
+      (\ s a -> s{_gipiarVisualStyle = a})
+
+instance FromJSON GetIosPostInstallAttributionRequest
+         where
+        parseJSON
+          = withObject "GetIosPostInstallAttributionRequest"
+              (\ o ->
+                 GetIosPostInstallAttributionRequest' <$>
+                   (o .:? "iosVersion") <*>
+                     (o .:? "uniqueMatchLinkToCheck")
+                     <*> (o .:? "appInstallationTime")
+                     <*> (o .:? "device")
+                     <*> (o .:? "sdkVersion")
+                     <*> (o .:? "bundleId")
+                     <*> (o .:? "retrievalMethod")
+                     <*> (o .:? "visualStyle"))
+
+instance ToJSON GetIosPostInstallAttributionRequest
+         where
+        toJSON GetIosPostInstallAttributionRequest'{..}
+          = object
+              (catMaybes
+                 [("iosVersion" .=) <$> _gipiarIosVersion,
+                  ("uniqueMatchLinkToCheck" .=) <$>
+                    _gipiarUniqueMatchLinkToCheck,
+                  ("appInstallationTime" .=) <$>
+                    _gipiarAppInstallationTime,
+                  ("device" .=) <$> _gipiarDevice,
+                  ("sdkVersion" .=) <$> _gipiarSdkVersion,
+                  ("bundleId" .=) <$> _gipiarBundleId,
+                  ("retrievalMethod" .=) <$> _gipiarRetrievalMethod,
+                  ("visualStyle" .=) <$> _gipiarVisualStyle])
+
+-- | Android related attributes to the Dynamic Link.
+--
+-- /See:/ 'androidInfo' smart constructor.
+data AndroidInfo = AndroidInfo'
+    { _aiAndroidMinPackageVersionCode :: !(Maybe Text)
+    , _aiAndroidFallbackLink          :: !(Maybe Text)
+    , _aiAndroidLink                  :: !(Maybe Text)
+    , _aiAndroidPackageName           :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AndroidInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aiAndroidMinPackageVersionCode'
+--
+-- * 'aiAndroidFallbackLink'
+--
+-- * 'aiAndroidLink'
+--
+-- * 'aiAndroidPackageName'
+androidInfo
+    :: AndroidInfo
+androidInfo =
+    AndroidInfo'
+    { _aiAndroidMinPackageVersionCode = Nothing
+    , _aiAndroidFallbackLink = Nothing
+    , _aiAndroidLink = Nothing
+    , _aiAndroidPackageName = Nothing
+    }
+
+-- | Minimum version code for the Android app. If the installed app’s version
+-- code is lower, then the user is taken to the Play Store.
+aiAndroidMinPackageVersionCode :: Lens' AndroidInfo (Maybe Text)
+aiAndroidMinPackageVersionCode
+  = lens _aiAndroidMinPackageVersionCode
+      (\ s a -> s{_aiAndroidMinPackageVersionCode = a})
+
+-- | Link to open on Android if the app is not installed.
+aiAndroidFallbackLink :: Lens' AndroidInfo (Maybe Text)
+aiAndroidFallbackLink
+  = lens _aiAndroidFallbackLink
+      (\ s a -> s{_aiAndroidFallbackLink = a})
+
+-- | If specified, this overrides the ‘link’ parameter on Android.
+aiAndroidLink :: Lens' AndroidInfo (Maybe Text)
+aiAndroidLink
+  = lens _aiAndroidLink
+      (\ s a -> s{_aiAndroidLink = a})
+
+-- | Android package name of the app.
+aiAndroidPackageName :: Lens' AndroidInfo (Maybe Text)
+aiAndroidPackageName
+  = lens _aiAndroidPackageName
+      (\ s a -> s{_aiAndroidPackageName = a})
+
+instance FromJSON AndroidInfo where
+        parseJSON
+          = withObject "AndroidInfo"
+              (\ o ->
+                 AndroidInfo' <$>
+                   (o .:? "androidMinPackageVersionCode") <*>
+                     (o .:? "androidFallbackLink")
+                     <*> (o .:? "androidLink")
+                     <*> (o .:? "androidPackageName"))
+
+instance ToJSON AndroidInfo where
+        toJSON AndroidInfo'{..}
+          = object
+              (catMaybes
+                 [("androidMinPackageVersionCode" .=) <$>
+                    _aiAndroidMinPackageVersionCode,
+                  ("androidFallbackLink" .=) <$>
+                    _aiAndroidFallbackLink,
+                  ("androidLink" .=) <$> _aiAndroidLink,
+                  ("androidPackageName" .=) <$> _aiAndroidPackageName])
+
+-- | Tracking parameters supported by Dynamic Link.
+--
+-- /See:/ 'analyticsInfo' smart constructor.
+data AnalyticsInfo = AnalyticsInfo'
+    { _aiItunesConnectAnalytics :: !(Maybe ITunesConnectAnalytics)
+    , _aiGooglePlayAnalytics    :: !(Maybe GooglePlayAnalytics)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AnalyticsInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aiItunesConnectAnalytics'
+--
+-- * 'aiGooglePlayAnalytics'
+analyticsInfo
+    :: AnalyticsInfo
+analyticsInfo =
+    AnalyticsInfo'
+    { _aiItunesConnectAnalytics = Nothing
+    , _aiGooglePlayAnalytics = Nothing
+    }
+
+-- | iTunes Connect App Analytics.
+aiItunesConnectAnalytics :: Lens' AnalyticsInfo (Maybe ITunesConnectAnalytics)
+aiItunesConnectAnalytics
+  = lens _aiItunesConnectAnalytics
+      (\ s a -> s{_aiItunesConnectAnalytics = a})
+
+-- | Google Play Campaign Measurements.
+aiGooglePlayAnalytics :: Lens' AnalyticsInfo (Maybe GooglePlayAnalytics)
+aiGooglePlayAnalytics
+  = lens _aiGooglePlayAnalytics
+      (\ s a -> s{_aiGooglePlayAnalytics = a})
+
+instance FromJSON AnalyticsInfo where
+        parseJSON
+          = withObject "AnalyticsInfo"
+              (\ o ->
+                 AnalyticsInfo' <$>
+                   (o .:? "itunesConnectAnalytics") <*>
+                     (o .:? "googlePlayAnalytics"))
+
+instance ToJSON AnalyticsInfo where
+        toJSON AnalyticsInfo'{..}
+          = object
+              (catMaybes
+                 [("itunesConnectAnalytics" .=) <$>
+                    _aiItunesConnectAnalytics,
+                  ("googlePlayAnalytics" .=) <$>
+                    _aiGooglePlayAnalytics])
+
+-- | Parameters for iTunes Connect App Analytics.
+--
+-- /See:/ 'iTunesConnectAnalytics' smart constructor.
+data ITunesConnectAnalytics = ITunesConnectAnalytics'
+    { _itcaAt :: !(Maybe Text)
+    , _itcaMt :: !(Maybe Text)
+    , _itcaPt :: !(Maybe Text)
+    , _itcaCt :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ITunesConnectAnalytics' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itcaAt'
+--
+-- * 'itcaMt'
+--
+-- * 'itcaPt'
+--
+-- * 'itcaCt'
+iTunesConnectAnalytics
+    :: ITunesConnectAnalytics
+iTunesConnectAnalytics =
+    ITunesConnectAnalytics'
+    { _itcaAt = Nothing
+    , _itcaMt = Nothing
+    , _itcaPt = Nothing
+    , _itcaCt = Nothing
+    }
+
+-- | Affiliate token used to create affiliate-coded links.
+itcaAt :: Lens' ITunesConnectAnalytics (Maybe Text)
+itcaAt = lens _itcaAt (\ s a -> s{_itcaAt = a})
+
+-- | iTune media types, including music, podcasts, audiobooks and so on.
+itcaMt :: Lens' ITunesConnectAnalytics (Maybe Text)
+itcaMt = lens _itcaMt (\ s a -> s{_itcaMt = a})
+
+-- | Provider token that enables analytics for Dynamic Links from within
+-- iTunes Connect.
+itcaPt :: Lens' ITunesConnectAnalytics (Maybe Text)
+itcaPt = lens _itcaPt (\ s a -> s{_itcaPt = a})
+
+-- | Campaign text that developers can optionally add to any link in order to
+-- track sales from a specific marketing campaign.
+itcaCt :: Lens' ITunesConnectAnalytics (Maybe Text)
+itcaCt = lens _itcaCt (\ s a -> s{_itcaCt = a})
+
+instance FromJSON ITunesConnectAnalytics where
+        parseJSON
+          = withObject "ITunesConnectAnalytics"
+              (\ o ->
+                 ITunesConnectAnalytics' <$>
+                   (o .:? "at") <*> (o .:? "mt") <*> (o .:? "pt") <*>
+                     (o .:? "ct"))
+
+instance ToJSON ITunesConnectAnalytics where
+        toJSON ITunesConnectAnalytics'{..}
+          = object
+              (catMaybes
+                 [("at" .=) <$> _itcaAt, ("mt" .=) <$> _itcaMt,
+                  ("pt" .=) <$> _itcaPt, ("ct" .=) <$> _itcaCt])
+
+-- | Response for iSDK to execute strong match flow for post-install
+-- attribution.
+--
+-- /See:/ 'getIosPostInstallAttributionResponse' smart constructor.
+data GetIosPostInstallAttributionResponse = GetIosPostInstallAttributionResponse'
+    { _gipiarDeepLink                       :: !(Maybe Text)
+    , _gipiarRequestIPVersion               :: !(Maybe GetIosPostInstallAttributionResponseRequestIPVersion)
+    , _gipiarAppMinimumVersion              :: !(Maybe Text)
+    , _gipiarAttributionConfidence          :: !(Maybe GetIosPostInstallAttributionResponseAttributionConfidence)
+    , _gipiarExternalBrowserDestinationLink :: !(Maybe Text)
+    , _gipiarResolvedLink                   :: !(Maybe Text)
+    , _gipiarRequestedLink                  :: !(Maybe Text)
+    , _gipiarUtmMedium                      :: !(Maybe Text)
+    , _gipiarFallbackLink                   :: !(Maybe Text)
+    , _gipiarInvitationId                   :: !(Maybe Text)
+    , _gipiarIsStrongMatchExecutable        :: !(Maybe Bool)
+    , _gipiarUtmCampaign                    :: !(Maybe Text)
+    , _gipiarMatchMessage                   :: !(Maybe Text)
+    , _gipiarUtmSource                      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIosPostInstallAttributionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gipiarDeepLink'
+--
+-- * 'gipiarRequestIPVersion'
+--
+-- * 'gipiarAppMinimumVersion'
+--
+-- * 'gipiarAttributionConfidence'
+--
+-- * 'gipiarExternalBrowserDestinationLink'
+--
+-- * 'gipiarResolvedLink'
+--
+-- * 'gipiarRequestedLink'
+--
+-- * 'gipiarUtmMedium'
+--
+-- * 'gipiarFallbackLink'
+--
+-- * 'gipiarInvitationId'
+--
+-- * 'gipiarIsStrongMatchExecutable'
+--
+-- * 'gipiarUtmCampaign'
+--
+-- * 'gipiarMatchMessage'
+--
+-- * 'gipiarUtmSource'
+getIosPostInstallAttributionResponse
+    :: GetIosPostInstallAttributionResponse
+getIosPostInstallAttributionResponse =
+    GetIosPostInstallAttributionResponse'
+    { _gipiarDeepLink = Nothing
+    , _gipiarRequestIPVersion = Nothing
+    , _gipiarAppMinimumVersion = Nothing
+    , _gipiarAttributionConfidence = Nothing
+    , _gipiarExternalBrowserDestinationLink = Nothing
+    , _gipiarResolvedLink = Nothing
+    , _gipiarRequestedLink = Nothing
+    , _gipiarUtmMedium = Nothing
+    , _gipiarFallbackLink = Nothing
+    , _gipiarInvitationId = Nothing
+    , _gipiarIsStrongMatchExecutable = Nothing
+    , _gipiarUtmCampaign = Nothing
+    , _gipiarMatchMessage = Nothing
+    , _gipiarUtmSource = Nothing
+    }
+
+-- | The deep-link attributed post-install via one of several techniques
+-- (fingerprint, copy unique).
+gipiarDeepLink :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarDeepLink
+  = lens _gipiarDeepLink
+      (\ s a -> s{_gipiarDeepLink = a})
+
+-- | Which IP version the request was made from.
+gipiarRequestIPVersion :: Lens' GetIosPostInstallAttributionResponse (Maybe GetIosPostInstallAttributionResponseRequestIPVersion)
+gipiarRequestIPVersion
+  = lens _gipiarRequestIPVersion
+      (\ s a -> s{_gipiarRequestIPVersion = a})
+
+-- | The minimum version for app, specified by dev through ?imv= parameter.
+-- Return to iSDK to allow app to evaluate if current version meets this.
+gipiarAppMinimumVersion :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarAppMinimumVersion
+  = lens _gipiarAppMinimumVersion
+      (\ s a -> s{_gipiarAppMinimumVersion = a})
+
+-- | The confidence of the returned attribution.
+gipiarAttributionConfidence :: Lens' GetIosPostInstallAttributionResponse (Maybe GetIosPostInstallAttributionResponseAttributionConfidence)
+gipiarAttributionConfidence
+  = lens _gipiarAttributionConfidence
+      (\ s a -> s{_gipiarAttributionConfidence = a})
+
+-- | User-agent specific custom-scheme URIs for iSDK to open. This will be
+-- set according to the user-agent tha the click was originally made in.
+-- There is no Safari-equivalent custom-scheme open URLs. ie:
+-- googlechrome:\/\/www.example.com ie:
+-- firefox:\/\/open-url?url=http:\/\/www.example.com ie:
+-- opera-http:\/\/example.com
+gipiarExternalBrowserDestinationLink :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarExternalBrowserDestinationLink
+  = lens _gipiarExternalBrowserDestinationLink
+      (\ s a ->
+         s{_gipiarExternalBrowserDestinationLink = a})
+
+-- | The entire FDL, expanded from a short link. It is the same as the
+-- requested_link, if it is long. Parameters from this should not be used
+-- directly (ie: server can default utm_[campaign|medium|source] to a value
+-- when requested_link lack them, server determine the best fallback_link
+-- when requested_link specifies >1 fallback links).
+gipiarResolvedLink :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarResolvedLink
+  = lens _gipiarResolvedLink
+      (\ s a -> s{_gipiarResolvedLink = a})
+
+-- | Entire FDL (short or long) attributed post-install via one of several
+-- techniques (fingerprint, copy unique).
+gipiarRequestedLink :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarRequestedLink
+  = lens _gipiarRequestedLink
+      (\ s a -> s{_gipiarRequestedLink = a})
+
+-- | Scion medium value to be propagated by iSDK to Scion at post-install.
+gipiarUtmMedium :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarUtmMedium
+  = lens _gipiarUtmMedium
+      (\ s a -> s{_gipiarUtmMedium = a})
+
+-- | The link to navigate to update the app if min version is not met. This
+-- is either (in order): 1) fallback link (from ?ifl= parameter, if
+-- specified by developer) or 2) AppStore URL (from ?isi= parameter, if
+-- specified), or 3) the payload link (from required link= parameter).
+gipiarFallbackLink :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarFallbackLink
+  = lens _gipiarFallbackLink
+      (\ s a -> s{_gipiarFallbackLink = a})
+
+-- | Invitation ID attributed post-install via one of several techniques
+-- (fingerprint, copy unique).
+gipiarInvitationId :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarInvitationId
+  = lens _gipiarInvitationId
+      (\ s a -> s{_gipiarInvitationId = a})
+
+-- | Instruction for iSDK to attemmpt to perform strong match. For instance,
+-- if browser does not support\/allow cookie or outside of support
+-- browsers, this will be false.
+gipiarIsStrongMatchExecutable :: Lens' GetIosPostInstallAttributionResponse (Maybe Bool)
+gipiarIsStrongMatchExecutable
+  = lens _gipiarIsStrongMatchExecutable
+      (\ s a -> s{_gipiarIsStrongMatchExecutable = a})
+
+-- | Scion campaign value to be propagated by iSDK to Scion at post-install.
+gipiarUtmCampaign :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarUtmCampaign
+  = lens _gipiarUtmCampaign
+      (\ s a -> s{_gipiarUtmCampaign = a})
+
+-- | Describes why match failed, ie: \"discarded due to low confidence\".
+-- This message will be publicly visible.
+gipiarMatchMessage :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarMatchMessage
+  = lens _gipiarMatchMessage
+      (\ s a -> s{_gipiarMatchMessage = a})
+
+-- | Scion source value to be propagated by iSDK to Scion at post-install.
+gipiarUtmSource :: Lens' GetIosPostInstallAttributionResponse (Maybe Text)
+gipiarUtmSource
+  = lens _gipiarUtmSource
+      (\ s a -> s{_gipiarUtmSource = a})
+
+instance FromJSON
+         GetIosPostInstallAttributionResponse where
+        parseJSON
+          = withObject "GetIosPostInstallAttributionResponse"
+              (\ o ->
+                 GetIosPostInstallAttributionResponse' <$>
+                   (o .:? "deepLink") <*> (o .:? "requestIpVersion") <*>
+                     (o .:? "appMinimumVersion")
+                     <*> (o .:? "attributionConfidence")
+                     <*> (o .:? "externalBrowserDestinationLink")
+                     <*> (o .:? "resolvedLink")
+                     <*> (o .:? "requestedLink")
+                     <*> (o .:? "utmMedium")
+                     <*> (o .:? "fallbackLink")
+                     <*> (o .:? "invitationId")
+                     <*> (o .:? "isStrongMatchExecutable")
+                     <*> (o .:? "utmCampaign")
+                     <*> (o .:? "matchMessage")
+                     <*> (o .:? "utmSource"))
+
+instance ToJSON GetIosPostInstallAttributionResponse
+         where
+        toJSON GetIosPostInstallAttributionResponse'{..}
+          = object
+              (catMaybes
+                 [("deepLink" .=) <$> _gipiarDeepLink,
+                  ("requestIpVersion" .=) <$> _gipiarRequestIPVersion,
+                  ("appMinimumVersion" .=) <$>
+                    _gipiarAppMinimumVersion,
+                  ("attributionConfidence" .=) <$>
+                    _gipiarAttributionConfidence,
+                  ("externalBrowserDestinationLink" .=) <$>
+                    _gipiarExternalBrowserDestinationLink,
+                  ("resolvedLink" .=) <$> _gipiarResolvedLink,
+                  ("requestedLink" .=) <$> _gipiarRequestedLink,
+                  ("utmMedium" .=) <$> _gipiarUtmMedium,
+                  ("fallbackLink" .=) <$> _gipiarFallbackLink,
+                  ("invitationId" .=) <$> _gipiarInvitationId,
+                  ("isStrongMatchExecutable" .=) <$>
+                    _gipiarIsStrongMatchExecutable,
+                  ("utmCampaign" .=) <$> _gipiarUtmCampaign,
+                  ("matchMessage" .=) <$> _gipiarMatchMessage,
+                  ("utmSource" .=) <$> _gipiarUtmSource])
+
+-- | Response to create a short Dynamic Link.
+--
+-- /See:/ 'createManagedShortLinkResponse' smart constructor.
+data CreateManagedShortLinkResponse = CreateManagedShortLinkResponse'
+    { _cmslrManagedShortLink :: !(Maybe ManagedShortLink)
+    , _cmslrPreviewLink      :: !(Maybe Text)
+    , _cmslrWarning          :: !(Maybe [DynamicLinkWarning])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateManagedShortLinkResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmslrManagedShortLink'
+--
+-- * 'cmslrPreviewLink'
+--
+-- * 'cmslrWarning'
+createManagedShortLinkResponse
+    :: CreateManagedShortLinkResponse
+createManagedShortLinkResponse =
+    CreateManagedShortLinkResponse'
+    { _cmslrManagedShortLink = Nothing
+    , _cmslrPreviewLink = Nothing
+    , _cmslrWarning = Nothing
+    }
+
+-- | Short Dynamic Link value. e.g. https:\/\/abcd.app.goo.gl\/wxyz
+cmslrManagedShortLink :: Lens' CreateManagedShortLinkResponse (Maybe ManagedShortLink)
+cmslrManagedShortLink
+  = lens _cmslrManagedShortLink
+      (\ s a -> s{_cmslrManagedShortLink = a})
+
+-- | Preview link to show the link flow chart. (debug info.)
+cmslrPreviewLink :: Lens' CreateManagedShortLinkResponse (Maybe Text)
+cmslrPreviewLink
+  = lens _cmslrPreviewLink
+      (\ s a -> s{_cmslrPreviewLink = a})
+
+-- | Information about potential warnings on link creation.
+cmslrWarning :: Lens' CreateManagedShortLinkResponse [DynamicLinkWarning]
+cmslrWarning
+  = lens _cmslrWarning (\ s a -> s{_cmslrWarning = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON CreateManagedShortLinkResponse
+         where
+        parseJSON
+          = withObject "CreateManagedShortLinkResponse"
+              (\ o ->
+                 CreateManagedShortLinkResponse' <$>
+                   (o .:? "managedShortLink") <*> (o .:? "previewLink")
+                     <*> (o .:? "warning" .!= mempty))
+
+instance ToJSON CreateManagedShortLinkResponse where
+        toJSON CreateManagedShortLinkResponse'{..}
+          = object
+              (catMaybes
+                 [("managedShortLink" .=) <$> _cmslrManagedShortLink,
+                  ("previewLink" .=) <$> _cmslrPreviewLink,
+                  ("warning" .=) <$> _cmslrWarning])
+
+-- | Request for iSDK to get reopen attribution for app universal link open
+-- deeplinking. This endpoint is meant for only iOS requests.
+--
+-- /See:/ 'getIosReopenAttributionRequest' smart constructor.
+data GetIosReopenAttributionRequest = GetIosReopenAttributionRequest'
+    { _girarRequestedLink :: !(Maybe Text)
+    , _girarSdkVersion    :: !(Maybe Text)
+    , _girarBundleId      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIosReopenAttributionRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'girarRequestedLink'
+--
+-- * 'girarSdkVersion'
+--
+-- * 'girarBundleId'
+getIosReopenAttributionRequest
+    :: GetIosReopenAttributionRequest
+getIosReopenAttributionRequest =
+    GetIosReopenAttributionRequest'
+    { _girarRequestedLink = Nothing
+    , _girarSdkVersion = Nothing
+    , _girarBundleId = Nothing
+    }
+
+-- | FDL link to be verified from an app universal link open. The FDL link
+-- can be one of: 1) short FDL. e.g. .page.link\/, or 2) long FDL. e.g.
+-- .page.link\/?{query params}, or 3) Invite FDL. e.g. .page.link\/i\/
+girarRequestedLink :: Lens' GetIosReopenAttributionRequest (Maybe Text)
+girarRequestedLink
+  = lens _girarRequestedLink
+      (\ s a -> s{_girarRequestedLink = a})
+
+-- | Google SDK version. Version takes the form
+-- \"/m//a//j//o//r/.minor.$patch\"
+girarSdkVersion :: Lens' GetIosReopenAttributionRequest (Maybe Text)
+girarSdkVersion
+  = lens _girarSdkVersion
+      (\ s a -> s{_girarSdkVersion = a})
+
+-- | APP bundle ID.
+girarBundleId :: Lens' GetIosReopenAttributionRequest (Maybe Text)
+girarBundleId
+  = lens _girarBundleId
+      (\ s a -> s{_girarBundleId = a})
+
+instance FromJSON GetIosReopenAttributionRequest
+         where
+        parseJSON
+          = withObject "GetIosReopenAttributionRequest"
+              (\ o ->
+                 GetIosReopenAttributionRequest' <$>
+                   (o .:? "requestedLink") <*> (o .:? "sdkVersion") <*>
+                     (o .:? "bundleId"))
+
+instance ToJSON GetIosReopenAttributionRequest where
+        toJSON GetIosReopenAttributionRequest'{..}
+          = object
+              (catMaybes
+                 [("requestedLink" .=) <$> _girarRequestedLink,
+                  ("sdkVersion" .=) <$> _girarSdkVersion,
+                  ("bundleId" .=) <$> _girarBundleId])
+
+-- | Parameters for Google Play Campaign Measurements. [Learn
+-- more](https:\/\/developers.google.com\/analytics\/devguides\/collection\/android\/v4\/campaigns#campaign-params)
+--
+-- /See:/ 'googlePlayAnalytics' smart constructor.
+data GooglePlayAnalytics = GooglePlayAnalytics'
+    { _gpaUtmContent  :: !(Maybe Text)
+    , _gpaUtmMedium   :: !(Maybe Text)
+    , _gpaUtmTerm     :: !(Maybe Text)
+    , _gpaUtmCampaign :: !(Maybe Text)
+    , _gpaGclid       :: !(Maybe Text)
+    , _gpaUtmSource   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GooglePlayAnalytics' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gpaUtmContent'
+--
+-- * 'gpaUtmMedium'
+--
+-- * 'gpaUtmTerm'
+--
+-- * 'gpaUtmCampaign'
+--
+-- * 'gpaGclid'
+--
+-- * 'gpaUtmSource'
+googlePlayAnalytics
+    :: GooglePlayAnalytics
+googlePlayAnalytics =
+    GooglePlayAnalytics'
+    { _gpaUtmContent = Nothing
+    , _gpaUtmMedium = Nothing
+    , _gpaUtmTerm = Nothing
+    , _gpaUtmCampaign = Nothing
+    , _gpaGclid = Nothing
+    , _gpaUtmSource = Nothing
+    }
+
+-- | Campaign content; used for A\/B testing and content-targeted ads to
+-- differentiate ads or links that point to the same URL.
+gpaUtmContent :: Lens' GooglePlayAnalytics (Maybe Text)
+gpaUtmContent
+  = lens _gpaUtmContent
+      (\ s a -> s{_gpaUtmContent = a})
+
+-- | Campaign medium; used to identify a medium such as email or
+-- cost-per-click.
+gpaUtmMedium :: Lens' GooglePlayAnalytics (Maybe Text)
+gpaUtmMedium
+  = lens _gpaUtmMedium (\ s a -> s{_gpaUtmMedium = a})
+
+-- | Campaign term; used with paid search to supply the keywords for ads.
+gpaUtmTerm :: Lens' GooglePlayAnalytics (Maybe Text)
+gpaUtmTerm
+  = lens _gpaUtmTerm (\ s a -> s{_gpaUtmTerm = a})
+
+-- | Campaign name; used for keyword analysis to identify a specific product
+-- promotion or strategic campaign.
+gpaUtmCampaign :: Lens' GooglePlayAnalytics (Maybe Text)
+gpaUtmCampaign
+  = lens _gpaUtmCampaign
+      (\ s a -> s{_gpaUtmCampaign = a})
+
+-- | [AdWords autotagging
+-- parameter](https:\/\/support.google.com\/analytics\/answer\/1033981?hl=en);
+-- used to measure Google AdWords ads. This value is generated dynamically
+-- and should never be modified.
+gpaGclid :: Lens' GooglePlayAnalytics (Maybe Text)
+gpaGclid = lens _gpaGclid (\ s a -> s{_gpaGclid = a})
+
+-- | Campaign source; used to identify a search engine, newsletter, or other
+-- source.
+gpaUtmSource :: Lens' GooglePlayAnalytics (Maybe Text)
+gpaUtmSource
+  = lens _gpaUtmSource (\ s a -> s{_gpaUtmSource = a})
+
+instance FromJSON GooglePlayAnalytics where
+        parseJSON
+          = withObject "GooglePlayAnalytics"
+              (\ o ->
+                 GooglePlayAnalytics' <$>
+                   (o .:? "utmContent") <*> (o .:? "utmMedium") <*>
+                     (o .:? "utmTerm")
+                     <*> (o .:? "utmCampaign")
+                     <*> (o .:? "gclid")
+                     <*> (o .:? "utmSource"))
+
+instance ToJSON GooglePlayAnalytics where
+        toJSON GooglePlayAnalytics'{..}
+          = object
+              (catMaybes
+                 [("utmContent" .=) <$> _gpaUtmContent,
+                  ("utmMedium" .=) <$> _gpaUtmMedium,
+                  ("utmTerm" .=) <$> _gpaUtmTerm,
+                  ("utmCampaign" .=) <$> _gpaUtmCampaign,
+                  ("gclid" .=) <$> _gpaGclid,
+                  ("utmSource" .=) <$> _gpaUtmSource])
+
+-- | Signals associated with the device making the request.
+--
+-- /See:/ 'deviceInfo' smart constructor.
+data DeviceInfo = DeviceInfo'
+    { _diLanguageCodeFromWebview :: !(Maybe Text)
+    , _diScreenResolutionWidth   :: !(Maybe (Textual Int64))
+    , _diLanguageCode            :: !(Maybe Text)
+    , _diDeviceModelName         :: !(Maybe Text)
+    , _diScreenResolutionHeight  :: !(Maybe (Textual Int64))
+    , _diLanguageCodeRaw         :: !(Maybe Text)
+    , _diTimezone                :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeviceInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diLanguageCodeFromWebview'
+--
+-- * 'diScreenResolutionWidth'
+--
+-- * 'diLanguageCode'
+--
+-- * 'diDeviceModelName'
+--
+-- * 'diScreenResolutionHeight'
+--
+-- * 'diLanguageCodeRaw'
+--
+-- * 'diTimezone'
+deviceInfo
+    :: DeviceInfo
+deviceInfo =
+    DeviceInfo'
+    { _diLanguageCodeFromWebview = Nothing
+    , _diScreenResolutionWidth = Nothing
+    , _diLanguageCode = Nothing
+    , _diDeviceModelName = Nothing
+    , _diScreenResolutionHeight = Nothing
+    , _diLanguageCodeRaw = Nothing
+    , _diTimezone = Nothing
+    }
+
+-- | Device language code setting obtained by executing JavaScript code in
+-- WebView.
+diLanguageCodeFromWebview :: Lens' DeviceInfo (Maybe Text)
+diLanguageCodeFromWebview
+  = lens _diLanguageCodeFromWebview
+      (\ s a -> s{_diLanguageCodeFromWebview = a})
+
+-- | Device display resolution width.
+diScreenResolutionWidth :: Lens' DeviceInfo (Maybe Int64)
+diScreenResolutionWidth
+  = lens _diScreenResolutionWidth
+      (\ s a -> s{_diScreenResolutionWidth = a})
+      . mapping _Coerce
+
+-- | Device language code setting.
+diLanguageCode :: Lens' DeviceInfo (Maybe Text)
+diLanguageCode
+  = lens _diLanguageCode
+      (\ s a -> s{_diLanguageCode = a})
+
+-- | Device model name.
+diDeviceModelName :: Lens' DeviceInfo (Maybe Text)
+diDeviceModelName
+  = lens _diDeviceModelName
+      (\ s a -> s{_diDeviceModelName = a})
+
+-- | Device display resolution height.
+diScreenResolutionHeight :: Lens' DeviceInfo (Maybe Int64)
+diScreenResolutionHeight
+  = lens _diScreenResolutionHeight
+      (\ s a -> s{_diScreenResolutionHeight = a})
+      . mapping _Coerce
+
+-- | Device language code raw setting. iOS does returns language code in
+-- different format than iOS WebView. For example WebView returns en_US,
+-- but iOS returns en-US. Field below will return raw value returned by
+-- iOS.
+diLanguageCodeRaw :: Lens' DeviceInfo (Maybe Text)
+diLanguageCodeRaw
+  = lens _diLanguageCodeRaw
+      (\ s a -> s{_diLanguageCodeRaw = a})
+
+-- | Device timezone setting.
+diTimezone :: Lens' DeviceInfo (Maybe Text)
+diTimezone
+  = lens _diTimezone (\ s a -> s{_diTimezone = a})
+
+instance FromJSON DeviceInfo where
+        parseJSON
+          = withObject "DeviceInfo"
+              (\ o ->
+                 DeviceInfo' <$>
+                   (o .:? "languageCodeFromWebview") <*>
+                     (o .:? "screenResolutionWidth")
+                     <*> (o .:? "languageCode")
+                     <*> (o .:? "deviceModelName")
+                     <*> (o .:? "screenResolutionHeight")
+                     <*> (o .:? "languageCodeRaw")
+                     <*> (o .:? "timezone"))
+
+instance ToJSON DeviceInfo where
+        toJSON DeviceInfo'{..}
+          = object
+              (catMaybes
+                 [("languageCodeFromWebview" .=) <$>
+                    _diLanguageCodeFromWebview,
+                  ("screenResolutionWidth" .=) <$>
+                    _diScreenResolutionWidth,
+                  ("languageCode" .=) <$> _diLanguageCode,
+                  ("deviceModelName" .=) <$> _diDeviceModelName,
+                  ("screenResolutionHeight" .=) <$>
+                    _diScreenResolutionHeight,
+                  ("languageCodeRaw" .=) <$> _diLanguageCodeRaw,
+                  ("timezone" .=) <$> _diTimezone])
diff --git a/gen/Network/Google/FirebaseDynamicLinks/Types/Sum.hs b/gen/Network/Google/FirebaseDynamicLinks/Types/Sum.hs
--- a/gen/Network/Google/FirebaseDynamicLinks/Types/Sum.hs
+++ b/gen/Network/Google/FirebaseDynamicLinks/Types/Sum.hs
@@ -16,13 +16,94 @@
 --
 module Network.Google.FirebaseDynamicLinks.Types.Sum where
 
-import           Network.Google.Prelude
+import           Network.Google.Prelude hiding (Bytes)
 
+-- | Requested platform.
+data DynamicLinkEventStatPlatform
+    = DynamicLinkPlatformUnspecified
+      -- ^ @DYNAMIC_LINK_PLATFORM_UNSPECIFIED@
+      -- Unspecified platform.
+    | Android
+      -- ^ @ANDROID@
+      -- Represents Android platform. All apps and browsers on Android are
+      -- classfied in this category.
+    | Ios
+      -- ^ @IOS@
+      -- Represents iOS platform. All apps and browsers on iOS are classfied in
+      -- this category.
+    | Desktop
+      -- ^ @DESKTOP@
+      -- Represents desktop.
+    | Other
+      -- ^ @OTHER@
+      -- Platforms are not categorized as Android\/iOS\/Destop fall into here.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DynamicLinkEventStatPlatform
+
+instance FromHttpApiData DynamicLinkEventStatPlatform where
+    parseQueryParam = \case
+        "DYNAMIC_LINK_PLATFORM_UNSPECIFIED" -> Right DynamicLinkPlatformUnspecified
+        "ANDROID" -> Right Android
+        "IOS" -> Right Ios
+        "DESKTOP" -> Right Desktop
+        "OTHER" -> Right Other
+        x -> Left ("Unable to parse DynamicLinkEventStatPlatform from: " <> x)
+
+instance ToHttpApiData DynamicLinkEventStatPlatform where
+    toQueryParam = \case
+        DynamicLinkPlatformUnspecified -> "DYNAMIC_LINK_PLATFORM_UNSPECIFIED"
+        Android -> "ANDROID"
+        Ios -> "IOS"
+        Desktop -> "DESKTOP"
+        Other -> "OTHER"
+
+instance FromJSON DynamicLinkEventStatPlatform where
+    parseJSON = parseJSONText "DynamicLinkEventStatPlatform"
+
+instance ToJSON DynamicLinkEventStatPlatform where
+    toJSON = toJSONText
+
+-- | Strong match page information. Disambiguates between default UI and
+-- custom page to present when strong match succeeds\/fails to find cookie.
+data GetIosPostInstallAttributionRequestVisualStyle
+    = UnknownVisualStyle
+      -- ^ @UNKNOWN_VISUAL_STYLE@
+      -- Unknown style.
+    | DefaultStyle
+      -- ^ @DEFAULT_STYLE@
+      -- Default style.
+    | CustomStyle
+      -- ^ @CUSTOM_STYLE@
+      -- Custom style.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GetIosPostInstallAttributionRequestVisualStyle
+
+instance FromHttpApiData GetIosPostInstallAttributionRequestVisualStyle where
+    parseQueryParam = \case
+        "UNKNOWN_VISUAL_STYLE" -> Right UnknownVisualStyle
+        "DEFAULT_STYLE" -> Right DefaultStyle
+        "CUSTOM_STYLE" -> Right CustomStyle
+        x -> Left ("Unable to parse GetIosPostInstallAttributionRequestVisualStyle from: " <> x)
+
+instance ToHttpApiData GetIosPostInstallAttributionRequestVisualStyle where
+    toQueryParam = \case
+        UnknownVisualStyle -> "UNKNOWN_VISUAL_STYLE"
+        DefaultStyle -> "DEFAULT_STYLE"
+        CustomStyle -> "CUSTOM_STYLE"
+
+instance FromJSON GetIosPostInstallAttributionRequestVisualStyle where
+    parseJSON = parseJSONText "GetIosPostInstallAttributionRequestVisualStyle"
+
+instance ToJSON GetIosPostInstallAttributionRequestVisualStyle where
+    toJSON = toJSONText
+
 -- | Suffix option.
 data SuffixOption
     = OptionUnspecified
       -- ^ @OPTION_UNSPECIFIED@
-      -- The suffix option is not specified, performs as NOT_GUESSABLE .
+      -- The suffix option is not specified, performs as UNGUESSABLE .
     | Unguessable
       -- ^ @UNGUESSABLE@
       -- Short Dynamic Link suffix is a base62 [0-9A-Za-z] encoded string of a
@@ -35,6 +116,11 @@
       -- Short Dynamic Link suffix is a base62 [0-9A-Za-z] string starting with a
       -- length of 4 chars. the length will increase when all the space is
       -- occupied.
+    | Custom
+      -- ^ @CUSTOM@
+      -- Custom DDL suffix is a client specified string, for example,
+      -- \"buy2get1free\". NOTE: custom suffix should only be available to
+      -- managed short link creation
       deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable SuffixOption
@@ -44,6 +130,7 @@
         "OPTION_UNSPECIFIED" -> Right OptionUnspecified
         "UNGUESSABLE" -> Right Unguessable
         "SHORT" -> Right Short
+        "CUSTOM" -> Right Custom
         x -> Left ("Unable to parse SuffixOption from: " <> x)
 
 instance ToHttpApiData SuffixOption where
@@ -51,6 +138,7 @@
         OptionUnspecified -> "OPTION_UNSPECIFIED"
         Unguessable -> "UNGUESSABLE"
         Short -> "SHORT"
+        Custom -> "CUSTOM"
 
 instance FromJSON SuffixOption where
     parseJSON = parseJSONText "SuffixOption"
@@ -58,6 +146,91 @@
 instance ToJSON SuffixOption where
     toJSON = toJSONText
 
+-- | Link event.
+data DynamicLinkEventStatEvent
+    = DynamicLinkEventUnspecified
+      -- ^ @DYNAMIC_LINK_EVENT_UNSPECIFIED@
+      -- Unspecified type.
+    | Click
+      -- ^ @CLICK@
+      -- Indicates that an FDL is clicked by users.
+    | Redirect
+      -- ^ @REDIRECT@
+      -- Indicates that an FDL redirects users to fallback link.
+    | AppInstall
+      -- ^ @APP_INSTALL@
+      -- Indicates that an FDL triggers an app install from Play store, currently
+      -- it\'s impossible to get stats from App store.
+    | AppFirstOpen
+      -- ^ @APP_FIRST_OPEN@
+      -- Indicates that the app is opened for the first time after an install
+      -- triggered by FDLs
+    | AppReOpen
+      -- ^ @APP_RE_OPEN@
+      -- Indicates that the app is opened via an FDL for non-first time.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DynamicLinkEventStatEvent
+
+instance FromHttpApiData DynamicLinkEventStatEvent where
+    parseQueryParam = \case
+        "DYNAMIC_LINK_EVENT_UNSPECIFIED" -> Right DynamicLinkEventUnspecified
+        "CLICK" -> Right Click
+        "REDIRECT" -> Right Redirect
+        "APP_INSTALL" -> Right AppInstall
+        "APP_FIRST_OPEN" -> Right AppFirstOpen
+        "APP_RE_OPEN" -> Right AppReOpen
+        x -> Left ("Unable to parse DynamicLinkEventStatEvent from: " <> x)
+
+instance ToHttpApiData DynamicLinkEventStatEvent where
+    toQueryParam = \case
+        DynamicLinkEventUnspecified -> "DYNAMIC_LINK_EVENT_UNSPECIFIED"
+        Click -> "CLICK"
+        Redirect -> "REDIRECT"
+        AppInstall -> "APP_INSTALL"
+        AppFirstOpen -> "APP_FIRST_OPEN"
+        AppReOpen -> "APP_RE_OPEN"
+
+instance FromJSON DynamicLinkEventStatEvent where
+    parseJSON = parseJSONText "DynamicLinkEventStatEvent"
+
+instance ToJSON DynamicLinkEventStatEvent where
+    toJSON = toJSONText
+
+-- | Which IP version the request was made from.
+data GetIosPostInstallAttributionResponseRequestIPVersion
+    = UnknownIPVersion
+      -- ^ @UNKNOWN_IP_VERSION@
+      -- Unset.
+    | IPV4
+      -- ^ @IP_V4@
+      -- Request made from an IPv4 IP address.
+    | IPV6
+      -- ^ @IP_V6@
+      -- Request made from an IPv6 IP address.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GetIosPostInstallAttributionResponseRequestIPVersion
+
+instance FromHttpApiData GetIosPostInstallAttributionResponseRequestIPVersion where
+    parseQueryParam = \case
+        "UNKNOWN_IP_VERSION" -> Right UnknownIPVersion
+        "IP_V4" -> Right IPV4
+        "IP_V6" -> Right IPV6
+        x -> Left ("Unable to parse GetIosPostInstallAttributionResponseRequestIPVersion from: " <> x)
+
+instance ToHttpApiData GetIosPostInstallAttributionResponseRequestIPVersion where
+    toQueryParam = \case
+        UnknownIPVersion -> "UNKNOWN_IP_VERSION"
+        IPV4 -> "IP_V4"
+        IPV6 -> "IP_V6"
+
+instance FromJSON GetIosPostInstallAttributionResponseRequestIPVersion where
+    parseJSON = parseJSONText "GetIosPostInstallAttributionResponseRequestIPVersion"
+
+instance ToJSON GetIosPostInstallAttributionResponseRequestIPVersion where
+    toJSON = toJSONText
+
 -- | V1 error format.
 data Xgafv
     = X1
@@ -87,6 +260,47 @@
 instance ToJSON Xgafv where
     toJSON = toJSONText
 
+-- | The confidence of the returned attribution.
+data GetIosPostInstallAttributionResponseAttributionConfidence
+    = UnknownAttributionConfidence
+      -- ^ @UNKNOWN_ATTRIBUTION_CONFIDENCE@
+      -- Unset.
+    | Weak
+      -- ^ @WEAK@
+      -- Weak confidence, more than one matching link found or link suspected to
+      -- be false positive
+    | Default
+      -- ^ @DEFAULT@
+      -- Default confidence, match based on fingerprint
+    | Unique
+      -- ^ @UNIQUE@
+      -- Unique confidence, match based on \"unique match link to check\" or
+      -- other means
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GetIosPostInstallAttributionResponseAttributionConfidence
+
+instance FromHttpApiData GetIosPostInstallAttributionResponseAttributionConfidence where
+    parseQueryParam = \case
+        "UNKNOWN_ATTRIBUTION_CONFIDENCE" -> Right UnknownAttributionConfidence
+        "WEAK" -> Right Weak
+        "DEFAULT" -> Right Default
+        "UNIQUE" -> Right Unique
+        x -> Left ("Unable to parse GetIosPostInstallAttributionResponseAttributionConfidence from: " <> x)
+
+instance ToHttpApiData GetIosPostInstallAttributionResponseAttributionConfidence where
+    toQueryParam = \case
+        UnknownAttributionConfidence -> "UNKNOWN_ATTRIBUTION_CONFIDENCE"
+        Weak -> "WEAK"
+        Default -> "DEFAULT"
+        Unique -> "UNIQUE"
+
+instance FromJSON GetIosPostInstallAttributionResponseAttributionConfidence where
+    parseJSON = parseJSONText "GetIosPostInstallAttributionResponseAttributionConfidence"
+
+instance ToJSON GetIosPostInstallAttributionResponseAttributionConfidence where
+    toJSON = toJSONText
+
 -- | The warning code.
 data DynamicLinkWarningWarningCode
     = CodeUnspecified
@@ -252,4 +466,87 @@
     parseJSON = parseJSONText "DynamicLinkWarningWarningCode"
 
 instance ToJSON DynamicLinkWarningWarningCode where
+    toJSON = toJSONText
+
+-- | App post install attribution retrieval information. Disambiguates
+-- mechanism (iSDK or developer invoked) to retrieve payload from clicked
+-- link.
+data GetIosPostInstallAttributionRequestRetrievalMethod
+    = UnknownPayloadRetrievalMethod
+      -- ^ @UNKNOWN_PAYLOAD_RETRIEVAL_METHOD@
+      -- Unknown method.
+    | ImplicitWeakMatch
+      -- ^ @IMPLICIT_WEAK_MATCH@
+      -- iSDK performs a server lookup by device fingerprint in the background
+      -- when app is first-opened; no API called by developer.
+    | ExplicitWeakMatch
+      -- ^ @EXPLICIT_WEAK_MATCH@
+      -- iSDK performs a server lookup by device fingerprint upon a dev API call.
+    | ExplicitStrongAfterWeakMatch
+      -- ^ @EXPLICIT_STRONG_AFTER_WEAK_MATCH@
+      -- iSDK performs a strong match only if weak match is found upon a dev API
+      -- call.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GetIosPostInstallAttributionRequestRetrievalMethod
+
+instance FromHttpApiData GetIosPostInstallAttributionRequestRetrievalMethod where
+    parseQueryParam = \case
+        "UNKNOWN_PAYLOAD_RETRIEVAL_METHOD" -> Right UnknownPayloadRetrievalMethod
+        "IMPLICIT_WEAK_MATCH" -> Right ImplicitWeakMatch
+        "EXPLICIT_WEAK_MATCH" -> Right ExplicitWeakMatch
+        "EXPLICIT_STRONG_AFTER_WEAK_MATCH" -> Right ExplicitStrongAfterWeakMatch
+        x -> Left ("Unable to parse GetIosPostInstallAttributionRequestRetrievalMethod from: " <> x)
+
+instance ToHttpApiData GetIosPostInstallAttributionRequestRetrievalMethod where
+    toQueryParam = \case
+        UnknownPayloadRetrievalMethod -> "UNKNOWN_PAYLOAD_RETRIEVAL_METHOD"
+        ImplicitWeakMatch -> "IMPLICIT_WEAK_MATCH"
+        ExplicitWeakMatch -> "EXPLICIT_WEAK_MATCH"
+        ExplicitStrongAfterWeakMatch -> "EXPLICIT_STRONG_AFTER_WEAK_MATCH"
+
+instance FromJSON GetIosPostInstallAttributionRequestRetrievalMethod where
+    parseJSON = parseJSONText "GetIosPostInstallAttributionRequestRetrievalMethod"
+
+instance ToJSON GetIosPostInstallAttributionRequestRetrievalMethod where
+    toJSON = toJSONText
+
+-- | Visibility status of link.
+data ManagedShortLinkVisibility
+    = UnspecifiedVisibility
+      -- ^ @UNSPECIFIED_VISIBILITY@
+      -- Visibility of the link is not specified.
+    | Unarchived
+      -- ^ @UNARCHIVED@
+      -- Link created in console and should be shown in console.
+    | Archived
+      -- ^ @ARCHIVED@
+      -- Link created in console and should not be shown in console (but can be
+      -- shown in the console again if it is unarchived).
+    | NeverShown
+      -- ^ @NEVER_SHOWN@
+      -- Link created outside of console and should never be shown in console.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ManagedShortLinkVisibility
+
+instance FromHttpApiData ManagedShortLinkVisibility where
+    parseQueryParam = \case
+        "UNSPECIFIED_VISIBILITY" -> Right UnspecifiedVisibility
+        "UNARCHIVED" -> Right Unarchived
+        "ARCHIVED" -> Right Archived
+        "NEVER_SHOWN" -> Right NeverShown
+        x -> Left ("Unable to parse ManagedShortLinkVisibility from: " <> x)
+
+instance ToHttpApiData ManagedShortLinkVisibility where
+    toQueryParam = \case
+        UnspecifiedVisibility -> "UNSPECIFIED_VISIBILITY"
+        Unarchived -> "UNARCHIVED"
+        Archived -> "ARCHIVED"
+        NeverShown -> "NEVER_SHOWN"
+
+instance FromJSON ManagedShortLinkVisibility where
+    parseJSON = parseJSONText "ManagedShortLinkVisibility"
+
+instance ToJSON ManagedShortLinkVisibility where
     toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/FirebaseDynamicLinks/GetLinkStats.hs b/gen/Network/Google/Resource/FirebaseDynamicLinks/GetLinkStats.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FirebaseDynamicLinks/GetLinkStats.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FirebaseDynamicLinks.GetLinkStats
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Fetches analytics stats of a short Dynamic Link for a given duration.
+-- Metrics include number of clicks, redirects, installs, app first opens,
+-- and app reopens.
+--
+-- /See:/ <https://firebase.google.com/docs/dynamic-links/ Firebase Dynamic Links API Reference> for @firebasedynamiclinks.getLinkStats@.
+module Network.Google.Resource.FirebaseDynamicLinks.GetLinkStats
+    (
+    -- * REST Resource
+      GetLinkStatsResource
+
+    -- * Creating a Request
+    , getLinkStats
+    , GetLinkStats
+
+    -- * Request Lenses
+    , glsXgafv
+    , glsUploadProtocol
+    , glsDynamicLink
+    , glsAccessToken
+    , glsUploadType
+    , glsSdkVersion
+    , glsDurationDays
+    , glsCallback
+    ) where
+
+import           Network.Google.FirebaseDynamicLinks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @firebasedynamiclinks.getLinkStats@ method which the
+-- 'GetLinkStats' request conforms to.
+type GetLinkStatsResource =
+     "v1" :>
+       Capture "dynamicLink" Text :>
+         "linkStats" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "sdkVersion" Text :>
+                     QueryParam "durationDays" (Textual Int64) :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] DynamicLinkStats
+
+-- | Fetches analytics stats of a short Dynamic Link for a given duration.
+-- Metrics include number of clicks, redirects, installs, app first opens,
+-- and app reopens.
+--
+-- /See:/ 'getLinkStats' smart constructor.
+data GetLinkStats = GetLinkStats'
+    { _glsXgafv          :: !(Maybe Xgafv)
+    , _glsUploadProtocol :: !(Maybe Text)
+    , _glsDynamicLink    :: !Text
+    , _glsAccessToken    :: !(Maybe Text)
+    , _glsUploadType     :: !(Maybe Text)
+    , _glsSdkVersion     :: !(Maybe Text)
+    , _glsDurationDays   :: !(Maybe (Textual Int64))
+    , _glsCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetLinkStats' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'glsXgafv'
+--
+-- * 'glsUploadProtocol'
+--
+-- * 'glsDynamicLink'
+--
+-- * 'glsAccessToken'
+--
+-- * 'glsUploadType'
+--
+-- * 'glsSdkVersion'
+--
+-- * 'glsDurationDays'
+--
+-- * 'glsCallback'
+getLinkStats
+    :: Text -- ^ 'glsDynamicLink'
+    -> GetLinkStats
+getLinkStats pGlsDynamicLink_ =
+    GetLinkStats'
+    { _glsXgafv = Nothing
+    , _glsUploadProtocol = Nothing
+    , _glsDynamicLink = pGlsDynamicLink_
+    , _glsAccessToken = Nothing
+    , _glsUploadType = Nothing
+    , _glsSdkVersion = Nothing
+    , _glsDurationDays = Nothing
+    , _glsCallback = Nothing
+    }
+
+-- | V1 error format.
+glsXgafv :: Lens' GetLinkStats (Maybe Xgafv)
+glsXgafv = lens _glsXgafv (\ s a -> s{_glsXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+glsUploadProtocol :: Lens' GetLinkStats (Maybe Text)
+glsUploadProtocol
+  = lens _glsUploadProtocol
+      (\ s a -> s{_glsUploadProtocol = a})
+
+-- | Dynamic Link URL. e.g. https:\/\/abcd.app.goo.gl\/wxyz
+glsDynamicLink :: Lens' GetLinkStats Text
+glsDynamicLink
+  = lens _glsDynamicLink
+      (\ s a -> s{_glsDynamicLink = a})
+
+-- | OAuth access token.
+glsAccessToken :: Lens' GetLinkStats (Maybe Text)
+glsAccessToken
+  = lens _glsAccessToken
+      (\ s a -> s{_glsAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+glsUploadType :: Lens' GetLinkStats (Maybe Text)
+glsUploadType
+  = lens _glsUploadType
+      (\ s a -> s{_glsUploadType = a})
+
+-- | Google SDK version. Version takes the form
+-- \"/m//a//j//o//r/.minor.$patch\"
+glsSdkVersion :: Lens' GetLinkStats (Maybe Text)
+glsSdkVersion
+  = lens _glsSdkVersion
+      (\ s a -> s{_glsSdkVersion = a})
+
+-- | The span of time requested in days.
+glsDurationDays :: Lens' GetLinkStats (Maybe Int64)
+glsDurationDays
+  = lens _glsDurationDays
+      (\ s a -> s{_glsDurationDays = a})
+      . mapping _Coerce
+
+-- | JSONP
+glsCallback :: Lens' GetLinkStats (Maybe Text)
+glsCallback
+  = lens _glsCallback (\ s a -> s{_glsCallback = a})
+
+instance GoogleRequest GetLinkStats where
+        type Rs GetLinkStats = DynamicLinkStats
+        type Scopes GetLinkStats =
+             '["https://www.googleapis.com/auth/firebase"]
+        requestClient GetLinkStats'{..}
+          = go _glsDynamicLink _glsXgafv _glsUploadProtocol
+              _glsAccessToken
+              _glsUploadType
+              _glsSdkVersion
+              _glsDurationDays
+              _glsCallback
+              (Just AltJSON)
+              firebaseDynamicLinksService
+          where go
+                  = buildClient (Proxy :: Proxy GetLinkStatsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseDynamicLinks/InstallAttribution.hs b/gen/Network/Google/Resource/FirebaseDynamicLinks/InstallAttribution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FirebaseDynamicLinks/InstallAttribution.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FirebaseDynamicLinks.InstallAttribution
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get iOS strong\/weak-match info for post-install attribution.
+--
+-- /See:/ <https://firebase.google.com/docs/dynamic-links/ Firebase Dynamic Links API Reference> for @firebasedynamiclinks.installAttribution@.
+module Network.Google.Resource.FirebaseDynamicLinks.InstallAttribution
+    (
+    -- * REST Resource
+      InstallAttributionResource
+
+    -- * Creating a Request
+    , installAttribution
+    , InstallAttribution
+
+    -- * Request Lenses
+    , iaXgafv
+    , iaUploadProtocol
+    , iaAccessToken
+    , iaUploadType
+    , iaPayload
+    , iaCallback
+    ) where
+
+import           Network.Google.FirebaseDynamicLinks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @firebasedynamiclinks.installAttribution@ method which the
+-- 'InstallAttribution' request conforms to.
+type InstallAttributionResource =
+     "v1" :>
+       "installAttribution" :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIosPostInstallAttributionRequest
+                       :> Post '[JSON] GetIosPostInstallAttributionResponse
+
+-- | Get iOS strong\/weak-match info for post-install attribution.
+--
+-- /See:/ 'installAttribution' smart constructor.
+data InstallAttribution = InstallAttribution'
+    { _iaXgafv          :: !(Maybe Xgafv)
+    , _iaUploadProtocol :: !(Maybe Text)
+    , _iaAccessToken    :: !(Maybe Text)
+    , _iaUploadType     :: !(Maybe Text)
+    , _iaPayload        :: !GetIosPostInstallAttributionRequest
+    , _iaCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstallAttribution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaXgafv'
+--
+-- * 'iaUploadProtocol'
+--
+-- * 'iaAccessToken'
+--
+-- * 'iaUploadType'
+--
+-- * 'iaPayload'
+--
+-- * 'iaCallback'
+installAttribution
+    :: GetIosPostInstallAttributionRequest -- ^ 'iaPayload'
+    -> InstallAttribution
+installAttribution pIaPayload_ =
+    InstallAttribution'
+    { _iaXgafv = Nothing
+    , _iaUploadProtocol = Nothing
+    , _iaAccessToken = Nothing
+    , _iaUploadType = Nothing
+    , _iaPayload = pIaPayload_
+    , _iaCallback = Nothing
+    }
+
+-- | V1 error format.
+iaXgafv :: Lens' InstallAttribution (Maybe Xgafv)
+iaXgafv = lens _iaXgafv (\ s a -> s{_iaXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+iaUploadProtocol :: Lens' InstallAttribution (Maybe Text)
+iaUploadProtocol
+  = lens _iaUploadProtocol
+      (\ s a -> s{_iaUploadProtocol = a})
+
+-- | OAuth access token.
+iaAccessToken :: Lens' InstallAttribution (Maybe Text)
+iaAccessToken
+  = lens _iaAccessToken
+      (\ s a -> s{_iaAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+iaUploadType :: Lens' InstallAttribution (Maybe Text)
+iaUploadType
+  = lens _iaUploadType (\ s a -> s{_iaUploadType = a})
+
+-- | Multipart request metadata.
+iaPayload :: Lens' InstallAttribution GetIosPostInstallAttributionRequest
+iaPayload
+  = lens _iaPayload (\ s a -> s{_iaPayload = a})
+
+-- | JSONP
+iaCallback :: Lens' InstallAttribution (Maybe Text)
+iaCallback
+  = lens _iaCallback (\ s a -> s{_iaCallback = a})
+
+instance GoogleRequest InstallAttribution where
+        type Rs InstallAttribution =
+             GetIosPostInstallAttributionResponse
+        type Scopes InstallAttribution =
+             '["https://www.googleapis.com/auth/firebase"]
+        requestClient InstallAttribution'{..}
+          = go _iaXgafv _iaUploadProtocol _iaAccessToken
+              _iaUploadType
+              _iaCallback
+              (Just AltJSON)
+              _iaPayload
+              firebaseDynamicLinksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstallAttributionResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseDynamicLinks/ManagedShortLinks/Create.hs b/gen/Network/Google/Resource/FirebaseDynamicLinks/ManagedShortLinks/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FirebaseDynamicLinks/ManagedShortLinks/Create.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FirebaseDynamicLinks.ManagedShortLinks.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a managed short Dynamic Link given either a valid long Dynamic
+-- Link or details such as Dynamic Link domain, Android and iOS app
+-- information. The created short Dynamic Link will not expire. This
+-- differs from CreateShortDynamicLink in the following ways: - The request
+-- will also contain a name for the link (non unique name for the front
+-- end). - The response must be authenticated with an auth token (generated
+-- with the admin service account). - The link will appear in the FDL list
+-- of links in the console front end. The Dynamic Link domain in the
+-- request must be owned by requester\'s Firebase project.
+--
+-- /See:/ <https://firebase.google.com/docs/dynamic-links/ Firebase Dynamic Links API Reference> for @firebasedynamiclinks.managedShortLinks.create@.
+module Network.Google.Resource.FirebaseDynamicLinks.ManagedShortLinks.Create
+    (
+    -- * REST Resource
+      ManagedShortLinksCreateResource
+
+    -- * Creating a Request
+    , managedShortLinksCreate
+    , ManagedShortLinksCreate
+
+    -- * Request Lenses
+    , mslcXgafv
+    , mslcUploadProtocol
+    , mslcAccessToken
+    , mslcUploadType
+    , mslcPayload
+    , mslcCallback
+    ) where
+
+import           Network.Google.FirebaseDynamicLinks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @firebasedynamiclinks.managedShortLinks.create@ method which the
+-- 'ManagedShortLinksCreate' request conforms to.
+type ManagedShortLinksCreateResource =
+     "v1" :>
+       "managedShortLinks:create" :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] CreateManagedShortLinkRequest :>
+                       Post '[JSON] CreateManagedShortLinkResponse
+
+-- | Creates a managed short Dynamic Link given either a valid long Dynamic
+-- Link or details such as Dynamic Link domain, Android and iOS app
+-- information. The created short Dynamic Link will not expire. This
+-- differs from CreateShortDynamicLink in the following ways: - The request
+-- will also contain a name for the link (non unique name for the front
+-- end). - The response must be authenticated with an auth token (generated
+-- with the admin service account). - The link will appear in the FDL list
+-- of links in the console front end. The Dynamic Link domain in the
+-- request must be owned by requester\'s Firebase project.
+--
+-- /See:/ 'managedShortLinksCreate' smart constructor.
+data ManagedShortLinksCreate = ManagedShortLinksCreate'
+    { _mslcXgafv          :: !(Maybe Xgafv)
+    , _mslcUploadProtocol :: !(Maybe Text)
+    , _mslcAccessToken    :: !(Maybe Text)
+    , _mslcUploadType     :: !(Maybe Text)
+    , _mslcPayload        :: !CreateManagedShortLinkRequest
+    , _mslcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedShortLinksCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mslcXgafv'
+--
+-- * 'mslcUploadProtocol'
+--
+-- * 'mslcAccessToken'
+--
+-- * 'mslcUploadType'
+--
+-- * 'mslcPayload'
+--
+-- * 'mslcCallback'
+managedShortLinksCreate
+    :: CreateManagedShortLinkRequest -- ^ 'mslcPayload'
+    -> ManagedShortLinksCreate
+managedShortLinksCreate pMslcPayload_ =
+    ManagedShortLinksCreate'
+    { _mslcXgafv = Nothing
+    , _mslcUploadProtocol = Nothing
+    , _mslcAccessToken = Nothing
+    , _mslcUploadType = Nothing
+    , _mslcPayload = pMslcPayload_
+    , _mslcCallback = Nothing
+    }
+
+-- | V1 error format.
+mslcXgafv :: Lens' ManagedShortLinksCreate (Maybe Xgafv)
+mslcXgafv
+  = lens _mslcXgafv (\ s a -> s{_mslcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+mslcUploadProtocol :: Lens' ManagedShortLinksCreate (Maybe Text)
+mslcUploadProtocol
+  = lens _mslcUploadProtocol
+      (\ s a -> s{_mslcUploadProtocol = a})
+
+-- | OAuth access token.
+mslcAccessToken :: Lens' ManagedShortLinksCreate (Maybe Text)
+mslcAccessToken
+  = lens _mslcAccessToken
+      (\ s a -> s{_mslcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+mslcUploadType :: Lens' ManagedShortLinksCreate (Maybe Text)
+mslcUploadType
+  = lens _mslcUploadType
+      (\ s a -> s{_mslcUploadType = a})
+
+-- | Multipart request metadata.
+mslcPayload :: Lens' ManagedShortLinksCreate CreateManagedShortLinkRequest
+mslcPayload
+  = lens _mslcPayload (\ s a -> s{_mslcPayload = a})
+
+-- | JSONP
+mslcCallback :: Lens' ManagedShortLinksCreate (Maybe Text)
+mslcCallback
+  = lens _mslcCallback (\ s a -> s{_mslcCallback = a})
+
+instance GoogleRequest ManagedShortLinksCreate where
+        type Rs ManagedShortLinksCreate =
+             CreateManagedShortLinkResponse
+        type Scopes ManagedShortLinksCreate =
+             '["https://www.googleapis.com/auth/firebase"]
+        requestClient ManagedShortLinksCreate'{..}
+          = go _mslcXgafv _mslcUploadProtocol _mslcAccessToken
+              _mslcUploadType
+              _mslcCallback
+              (Just AltJSON)
+              _mslcPayload
+              firebaseDynamicLinksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ManagedShortLinksCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseDynamicLinks/ReopenAttribution.hs b/gen/Network/Google/Resource/FirebaseDynamicLinks/ReopenAttribution.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FirebaseDynamicLinks/ReopenAttribution.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.FirebaseDynamicLinks.ReopenAttribution
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get iOS reopen attribution for app universal link open deeplinking.
+--
+-- /See:/ <https://firebase.google.com/docs/dynamic-links/ Firebase Dynamic Links API Reference> for @firebasedynamiclinks.reopenAttribution@.
+module Network.Google.Resource.FirebaseDynamicLinks.ReopenAttribution
+    (
+    -- * REST Resource
+      ReopenAttributionResource
+
+    -- * Creating a Request
+    , reopenAttribution
+    , ReopenAttribution
+
+    -- * Request Lenses
+    , raXgafv
+    , raUploadProtocol
+    , raAccessToken
+    , raUploadType
+    , raPayload
+    , raCallback
+    ) where
+
+import           Network.Google.FirebaseDynamicLinks.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @firebasedynamiclinks.reopenAttribution@ method which the
+-- 'ReopenAttribution' request conforms to.
+type ReopenAttributionResource =
+     "v1" :>
+       "reopenAttribution" :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIosReopenAttributionRequest :>
+                       Post '[JSON] GetIosReopenAttributionResponse
+
+-- | Get iOS reopen attribution for app universal link open deeplinking.
+--
+-- /See:/ 'reopenAttribution' smart constructor.
+data ReopenAttribution = ReopenAttribution'
+    { _raXgafv          :: !(Maybe Xgafv)
+    , _raUploadProtocol :: !(Maybe Text)
+    , _raAccessToken    :: !(Maybe Text)
+    , _raUploadType     :: !(Maybe Text)
+    , _raPayload        :: !GetIosReopenAttributionRequest
+    , _raCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReopenAttribution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raXgafv'
+--
+-- * 'raUploadProtocol'
+--
+-- * 'raAccessToken'
+--
+-- * 'raUploadType'
+--
+-- * 'raPayload'
+--
+-- * 'raCallback'
+reopenAttribution
+    :: GetIosReopenAttributionRequest -- ^ 'raPayload'
+    -> ReopenAttribution
+reopenAttribution pRaPayload_ =
+    ReopenAttribution'
+    { _raXgafv = Nothing
+    , _raUploadProtocol = Nothing
+    , _raAccessToken = Nothing
+    , _raUploadType = Nothing
+    , _raPayload = pRaPayload_
+    , _raCallback = Nothing
+    }
+
+-- | V1 error format.
+raXgafv :: Lens' ReopenAttribution (Maybe Xgafv)
+raXgafv = lens _raXgafv (\ s a -> s{_raXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+raUploadProtocol :: Lens' ReopenAttribution (Maybe Text)
+raUploadProtocol
+  = lens _raUploadProtocol
+      (\ s a -> s{_raUploadProtocol = a})
+
+-- | OAuth access token.
+raAccessToken :: Lens' ReopenAttribution (Maybe Text)
+raAccessToken
+  = lens _raAccessToken
+      (\ s a -> s{_raAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+raUploadType :: Lens' ReopenAttribution (Maybe Text)
+raUploadType
+  = lens _raUploadType (\ s a -> s{_raUploadType = a})
+
+-- | Multipart request metadata.
+raPayload :: Lens' ReopenAttribution GetIosReopenAttributionRequest
+raPayload
+  = lens _raPayload (\ s a -> s{_raPayload = a})
+
+-- | JSONP
+raCallback :: Lens' ReopenAttribution (Maybe Text)
+raCallback
+  = lens _raCallback (\ s a -> s{_raCallback = a})
+
+instance GoogleRequest ReopenAttribution where
+        type Rs ReopenAttribution =
+             GetIosReopenAttributionResponse
+        type Scopes ReopenAttribution =
+             '["https://www.googleapis.com/auth/firebase"]
+        requestClient ReopenAttribution'{..}
+          = go _raXgafv _raUploadProtocol _raAccessToken
+              _raUploadType
+              _raCallback
+              (Just AltJSON)
+              _raPayload
+              firebaseDynamicLinksService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ReopenAttributionResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseDynamicLinks/ShortLinks/Create.hs b/gen/Network/Google/Resource/FirebaseDynamicLinks/ShortLinks/Create.hs
--- a/gen/Network/Google/Resource/FirebaseDynamicLinks/ShortLinks/Create.hs
+++ b/gen/Network/Google/Resource/FirebaseDynamicLinks/ShortLinks/Create.hs
@@ -40,11 +40,9 @@
     -- * Request Lenses
     , slcXgafv
     , slcUploadProtocol
-    , slcPp
     , slcAccessToken
     , slcUploadType
     , slcPayload
-    , slcBearerToken
     , slcCallback
     ) where
 
@@ -58,14 +56,12 @@
        "shortLinks" :>
          QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] CreateShortDynamicLinkRequest :>
-                           Post '[JSON] CreateShortDynamicLinkResponse
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] CreateShortDynamicLinkRequest :>
+                       Post '[JSON] CreateShortDynamicLinkResponse
 
 -- | Creates a short Dynamic Link given either a valid long Dynamic Link or
 -- details such as Dynamic Link domain, Android and iOS app information.
@@ -78,11 +74,9 @@
 data ShortLinksCreate = ShortLinksCreate'
     { _slcXgafv          :: !(Maybe Xgafv)
     , _slcUploadProtocol :: !(Maybe Text)
-    , _slcPp             :: !Bool
     , _slcAccessToken    :: !(Maybe Text)
     , _slcUploadType     :: !(Maybe Text)
     , _slcPayload        :: !CreateShortDynamicLinkRequest
-    , _slcBearerToken    :: !(Maybe Text)
     , _slcCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -94,16 +88,12 @@
 --
 -- * 'slcUploadProtocol'
 --
--- * 'slcPp'
---
 -- * 'slcAccessToken'
 --
 -- * 'slcUploadType'
 --
 -- * 'slcPayload'
 --
--- * 'slcBearerToken'
---
 -- * 'slcCallback'
 shortLinksCreate
     :: CreateShortDynamicLinkRequest -- ^ 'slcPayload'
@@ -112,11 +102,9 @@
     ShortLinksCreate'
     { _slcXgafv = Nothing
     , _slcUploadProtocol = Nothing
-    , _slcPp = True
     , _slcAccessToken = Nothing
     , _slcUploadType = Nothing
     , _slcPayload = pSlcPayload_
-    , _slcBearerToken = Nothing
     , _slcCallback = Nothing
     }
 
@@ -130,10 +118,6 @@
   = lens _slcUploadProtocol
       (\ s a -> s{_slcUploadProtocol = a})
 
--- | Pretty-print response.
-slcPp :: Lens' ShortLinksCreate Bool
-slcPp = lens _slcPp (\ s a -> s{_slcPp = a})
-
 -- | OAuth access token.
 slcAccessToken :: Lens' ShortLinksCreate (Maybe Text)
 slcAccessToken
@@ -151,12 +135,6 @@
 slcPayload
   = lens _slcPayload (\ s a -> s{_slcPayload = a})
 
--- | OAuth bearer token.
-slcBearerToken :: Lens' ShortLinksCreate (Maybe Text)
-slcBearerToken
-  = lens _slcBearerToken
-      (\ s a -> s{_slcBearerToken = a})
-
 -- | JSONP
 slcCallback :: Lens' ShortLinksCreate (Maybe Text)
 slcCallback
@@ -168,10 +146,8 @@
         type Scopes ShortLinksCreate =
              '["https://www.googleapis.com/auth/firebase"]
         requestClient ShortLinksCreate'{..}
-          = go _slcXgafv _slcUploadProtocol (Just _slcPp)
-              _slcAccessToken
+          = go _slcXgafv _slcUploadProtocol _slcAccessToken
               _slcUploadType
-              _slcBearerToken
               _slcCallback
               (Just AltJSON)
               _slcPayload
diff --git a/gogol-firebase-dynamiclinks.cabal b/gogol-firebase-dynamiclinks.cabal
--- a/gogol-firebase-dynamiclinks.cabal
+++ b/gogol-firebase-dynamiclinks.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-firebase-dynamiclinks
-version:               0.3.0
+version:               0.4.0
 synopsis:              Google Firebase Dynamic Links SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -14,8 +14,7 @@
 extra-source-files:    README.md src/.gitkeep
 
 description:
-    Firebase Dynamic Links API enables third party developers to
-    programmatically create and manage Dynamic Links.
+    Programmatically creates and manages Firebase Dynamic Links.
     .
     /Warning:/ This is an experimental prototype/preview release which is still
     under exploratory development and not intended for public use, caveat emptor!
@@ -36,6 +35,10 @@
     exposed-modules:
           Network.Google.FirebaseDynamicLinks
         , Network.Google.FirebaseDynamicLinks.Types
+        , Network.Google.Resource.FirebaseDynamicLinks.GetLinkStats
+        , Network.Google.Resource.FirebaseDynamicLinks.InstallAttribution
+        , Network.Google.Resource.FirebaseDynamicLinks.ManagedShortLinks.Create
+        , Network.Google.Resource.FirebaseDynamicLinks.ReopenAttribution
         , Network.Google.Resource.FirebaseDynamicLinks.ShortLinks.Create
 
     other-modules:
@@ -43,5 +46,5 @@
         , Network.Google.FirebaseDynamicLinks.Types.Sum
 
     build-depends:
-          gogol-core == 0.3.0.*
+          gogol-core == 0.4.0.*
         , base       >= 4.7 && < 5
