diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.5.0`
+`1.0.0`
 
 
 ## Description
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,3 @@
-import           Distribution.Simple
+import Distribution.Simple
+
 main = defaultMain
diff --git a/gen/Gogol/FirebaseRemoteConfig.hs b/gen/Gogol/FirebaseRemoteConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRemoteConfig.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.FirebaseRemoteConfig
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Firebase Remote Config API allows the 3P clients to manage Remote Config conditions and parameters for Firebase applications.
+--
+-- /See:/ <https://firebase.google.com/docs/remote-config/ Firebase Remote Config API Reference>
+module Gogol.FirebaseRemoteConfig
+  ( -- * Configuration
+    firebaseRemoteConfigService,
+
+    -- * Resources
+
+    -- ** firebaseremoteconfig.projects.getRemoteConfig
+    FirebaseRemoteConfigProjectsGetRemoteConfigResource,
+    FirebaseRemoteConfigProjectsGetRemoteConfig (..),
+    newFirebaseRemoteConfigProjectsGetRemoteConfig,
+
+    -- ** firebaseremoteconfig.projects.updateRemoteConfig
+    FirebaseRemoteConfigProjectsUpdateRemoteConfigResource,
+    FirebaseRemoteConfigProjectsUpdateRemoteConfig (..),
+    newFirebaseRemoteConfigProjectsUpdateRemoteConfig,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** RemoteConfig
+    RemoteConfig (..),
+    newRemoteConfig,
+
+    -- ** RemoteConfig_Parameters
+    RemoteConfig_Parameters (..),
+    newRemoteConfig_Parameters,
+
+    -- ** RemoteConfigCondition
+    RemoteConfigCondition (..),
+    newRemoteConfigCondition,
+
+    -- ** RemoteConfigCondition_TagColor
+    RemoteConfigCondition_TagColor (..),
+
+    -- ** RemoteConfigParameter
+    RemoteConfigParameter (..),
+    newRemoteConfigParameter,
+
+    -- ** RemoteConfigParameter_ConditionalValues
+    RemoteConfigParameter_ConditionalValues (..),
+    newRemoteConfigParameter_ConditionalValues,
+
+    -- ** RemoteConfigParameterValue
+    RemoteConfigParameterValue (..),
+    newRemoteConfigParameterValue,
+  )
+where
+
+import Gogol.FirebaseRemoteConfig.Projects.GetRemoteConfig
+import Gogol.FirebaseRemoteConfig.Projects.UpdateRemoteConfig
+import Gogol.FirebaseRemoteConfig.Types
diff --git a/gen/Gogol/FirebaseRemoteConfig/Internal/Product.hs b/gen/Gogol/FirebaseRemoteConfig/Internal/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRemoteConfig/Internal/Product.hs
@@ -0,0 +1,283 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.FirebaseRemoteConfig.Internal.Product
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.FirebaseRemoteConfig.Internal.Product
+  ( -- * RemoteConfig
+    RemoteConfig (..),
+    newRemoteConfig,
+
+    -- * RemoteConfig_Parameters
+    RemoteConfig_Parameters (..),
+    newRemoteConfig_Parameters,
+
+    -- * RemoteConfigCondition
+    RemoteConfigCondition (..),
+    newRemoteConfigCondition,
+
+    -- * RemoteConfigParameter
+    RemoteConfigParameter (..),
+    newRemoteConfigParameter,
+
+    -- * RemoteConfigParameter_ConditionalValues
+    RemoteConfigParameter_ConditionalValues (..),
+    newRemoteConfigParameter_ConditionalValues,
+
+    -- * RemoteConfigParameterValue
+    RemoteConfigParameterValue (..),
+    newRemoteConfigParameterValue,
+  )
+where
+
+import Gogol.FirebaseRemoteConfig.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | -   The RemoteConfig consists of a list of conditions (which can be thought of as named \"if\" statements) and a map of parameters (parameter key to a structure containing an optional default value, as well as a optional submap of (condition name to value when that condition is true).
+--
+-- /See:/ 'newRemoteConfig' smart constructor.
+data RemoteConfig = RemoteConfig
+  { -- | The list of named conditions. The order /does/ affect the semantics. The condition_name values of these entries must be unique.
+    --
+    -- The resolved value of a config parameter P is determined as follow: * Let Y be the set of values from the submap of P that refer to conditions that evaluate to \<code>true\<\/code>. * If Y is non empty, the value is taken from the specific submap in Y whose condition/name is the earliest in this condition list. * Else, if P has a default value option (condition/name is empty) then the value is taken from that option. * Else, parameter P has no value and is omitted from the config result.
+    --
+    -- Example: parameter key \"p1\", default value \"v1\", submap specified as {\"c1\": v2, \"c2\": v3} where \"c1\" and \"c2\" are names of conditions in the condition list (where \"c1\" in this example appears before \"c2\"). The value of p1 would be v2 as long as c1 is true. Otherwise, if c2 is true, p1 would evaluate to v3, and if c1 and c2 are both false, p1 would evaluate to v1. If no default value was specified, and c1 and c2 were both false, no value for p1 would be generated.
+    conditions :: (Core.Maybe [RemoteConfigCondition]),
+    -- | Map of parameter keys to their optional default values and optional submap of (condition name : value). Order doesn\'t affect semantics, and so is sorted by the server. The \'key\' values of the params must be unique.
+    parameters :: (Core.Maybe RemoteConfig_Parameters)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemoteConfig' with the minimum fields required to make a request.
+newRemoteConfig ::
+  RemoteConfig
+newRemoteConfig =
+  RemoteConfig
+    { conditions = Core.Nothing,
+      parameters = Core.Nothing
+    }
+
+instance Core.FromJSON RemoteConfig where
+  parseJSON =
+    Core.withObject
+      "RemoteConfig"
+      ( \o ->
+          RemoteConfig
+            Core.<$> (o Core..:? "conditions")
+            Core.<*> (o Core..:? "parameters")
+      )
+
+instance Core.ToJSON RemoteConfig where
+  toJSON RemoteConfig {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("conditions" Core..=) Core.<$> conditions,
+            ("parameters" Core..=) Core.<$> parameters
+          ]
+      )
+
+-- | Map of parameter keys to their optional default values and optional submap of (condition name : value). Order doesn\'t affect semantics, and so is sorted by the server. The \'key\' values of the params must be unique.
+--
+-- /See:/ 'newRemoteConfig_Parameters' smart constructor.
+newtype RemoteConfig_Parameters = RemoteConfig_Parameters
+  { additional :: (Core.HashMap Core.Text RemoteConfigParameter)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemoteConfig_Parameters' with the minimum fields required to make a request.
+newRemoteConfig_Parameters ::
+  -- |  See 'additional'.
+  Core.HashMap Core.Text RemoteConfigParameter ->
+  RemoteConfig_Parameters
+newRemoteConfig_Parameters additional =
+  RemoteConfig_Parameters {additional = additional}
+
+instance Core.FromJSON RemoteConfig_Parameters where
+  parseJSON =
+    Core.withObject
+      "RemoteConfig_Parameters"
+      (\o -> RemoteConfig_Parameters Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON RemoteConfig_Parameters where
+  toJSON RemoteConfig_Parameters {..} = Core.toJSON additional
+
+-- | A single RemoteConfig Condition. A list of these (because order matters) are part of a single RemoteConfig template.
+--
+-- /See:/ 'newRemoteConfigCondition' smart constructor.
+data RemoteConfigCondition = RemoteConfigCondition
+  { -- | DO NOT USE. Implementation removed and will not be added unless requested. A description for this Condition. Length must be less than or equal to 100 characters (or more precisely, unicode code points, which is defined in java\/com\/google\/wireless\/android\/config\/ConstsExporter.java). A description may contain any Unicode characters
+    description :: (Core.Maybe Core.Text),
+    -- | Required.
+    expression :: (Core.Maybe Core.Text),
+    -- | Required. A non empty and unique name of this condition.
+    name :: (Core.Maybe Core.Text),
+    -- | Optional. The display (tag) color of this condition. This serves as part of a tag (in the future, we may add tag text as well as tag color, but that is not yet implemented in the UI). This value has no affect on the semantics of the delivered config and it is ignored by the backend, except for passing it through write\/read requests. Not having this value or having the \"CONDITION/DISPLAY/COLOR_UNSPECIFIED\" value (0) have the same meaning: Let the UI choose any valid color when displaying the condition.
+    tagColor :: (Core.Maybe RemoteConfigCondition_TagColor)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemoteConfigCondition' with the minimum fields required to make a request.
+newRemoteConfigCondition ::
+  RemoteConfigCondition
+newRemoteConfigCondition =
+  RemoteConfigCondition
+    { description = Core.Nothing,
+      expression = Core.Nothing,
+      name = Core.Nothing,
+      tagColor = Core.Nothing
+    }
+
+instance Core.FromJSON RemoteConfigCondition where
+  parseJSON =
+    Core.withObject
+      "RemoteConfigCondition"
+      ( \o ->
+          RemoteConfigCondition
+            Core.<$> (o Core..:? "description")
+            Core.<*> (o Core..:? "expression")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "tagColor")
+      )
+
+instance Core.ToJSON RemoteConfigCondition where
+  toJSON RemoteConfigCondition {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("description" Core..=) Core.<$> description,
+            ("expression" Core..=) Core.<$> expression,
+            ("name" Core..=) Core.<$> name,
+            ("tagColor" Core..=) Core.<$> tagColor
+          ]
+      )
+
+-- | While default/value and conditional/values are each optional, at least one of the two is required - otherwise, the parameter is meaningless (and an exception will be thrown by the validation logic).
+--
+-- /See:/ 'newRemoteConfigParameter' smart constructor.
+data RemoteConfigParameter = RemoteConfigParameter
+  { -- | Optional - a map of (condition/name, value). The condition/name of the highest priority (the one listed first in the conditions array) determines the value of this parameter.
+    conditionalValues :: (Core.Maybe RemoteConfigParameter_ConditionalValues),
+    -- | Optional - value to set the parameter to, when none of the named conditions evaluate to \<code>true\<\/code>.
+    defaultValue :: (Core.Maybe RemoteConfigParameterValue),
+    -- | Optional. A description for this Parameter. Length must be less than or equal to 100 characters (or more precisely, unicode code points, which is defined in java\/com\/google\/wireless\/android\/config\/ConstsExporter.java). A description may contain any Unicode characters
+    description :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemoteConfigParameter' with the minimum fields required to make a request.
+newRemoteConfigParameter ::
+  RemoteConfigParameter
+newRemoteConfigParameter =
+  RemoteConfigParameter
+    { conditionalValues = Core.Nothing,
+      defaultValue = Core.Nothing,
+      description = Core.Nothing
+    }
+
+instance Core.FromJSON RemoteConfigParameter where
+  parseJSON =
+    Core.withObject
+      "RemoteConfigParameter"
+      ( \o ->
+          RemoteConfigParameter
+            Core.<$> (o Core..:? "conditionalValues")
+            Core.<*> (o Core..:? "defaultValue")
+            Core.<*> (o Core..:? "description")
+      )
+
+instance Core.ToJSON RemoteConfigParameter where
+  toJSON RemoteConfigParameter {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("conditionalValues" Core..=) Core.<$> conditionalValues,
+            ("defaultValue" Core..=) Core.<$> defaultValue,
+            ("description" Core..=) Core.<$> description
+          ]
+      )
+
+-- | Optional - a map of (condition/name, value). The condition/name of the highest priority (the one listed first in the conditions array) determines the value of this parameter.
+--
+-- /See:/ 'newRemoteConfigParameter_ConditionalValues' smart constructor.
+newtype RemoteConfigParameter_ConditionalValues = RemoteConfigParameter_ConditionalValues
+  { additional :: (Core.HashMap Core.Text RemoteConfigParameterValue)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemoteConfigParameter_ConditionalValues' with the minimum fields required to make a request.
+newRemoteConfigParameter_ConditionalValues ::
+  -- |  See 'additional'.
+  Core.HashMap Core.Text RemoteConfigParameterValue ->
+  RemoteConfigParameter_ConditionalValues
+newRemoteConfigParameter_ConditionalValues additional =
+  RemoteConfigParameter_ConditionalValues {additional = additional}
+
+instance Core.FromJSON RemoteConfigParameter_ConditionalValues where
+  parseJSON =
+    Core.withObject
+      "RemoteConfigParameter_ConditionalValues"
+      ( \o ->
+          RemoteConfigParameter_ConditionalValues
+            Core.<$> (Core.parseJSONObject o)
+      )
+
+instance Core.ToJSON RemoteConfigParameter_ConditionalValues where
+  toJSON RemoteConfigParameter_ConditionalValues {..} =
+    Core.toJSON additional
+
+-- | A RemoteConfigParameter\'s \"value\" (either the default value, or the value associated with a condition name) is either a string, or the \"use/in/app/default\" indicator (which means to leave out the parameter from the returned \<key, value> map that is the output of the parameter fetch). We represent the \"use/in/app/default\" as a bool, but (when using the boolean instead of the string) it should always be \<code>true\<\/code>.
+--
+-- /See:/ 'newRemoteConfigParameterValue' smart constructor.
+data RemoteConfigParameterValue = RemoteConfigParameterValue
+  { -- | if true, omit the parameter from the map of fetched parameter values
+    useInAppDefault :: (Core.Maybe Core.Bool),
+    -- | the string to set the parameter to
+    value :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemoteConfigParameterValue' with the minimum fields required to make a request.
+newRemoteConfigParameterValue ::
+  RemoteConfigParameterValue
+newRemoteConfigParameterValue =
+  RemoteConfigParameterValue
+    { useInAppDefault = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON RemoteConfigParameterValue where
+  parseJSON =
+    Core.withObject
+      "RemoteConfigParameterValue"
+      ( \o ->
+          RemoteConfigParameterValue
+            Core.<$> (o Core..:? "useInAppDefault")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON RemoteConfigParameterValue where
+  toJSON RemoteConfigParameterValue {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("useInAppDefault" Core..=) Core.<$> useInAppDefault,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
diff --git a/gen/Gogol/FirebaseRemoteConfig/Internal/Sum.hs b/gen/Gogol/FirebaseRemoteConfig/Internal/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRemoteConfig/Internal/Sum.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.FirebaseRemoteConfig.Internal.Sum
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.FirebaseRemoteConfig.Internal.Sum
+  ( -- * Xgafv
+    Xgafv
+      ( Xgafv_1,
+        Xgafv_2,
+        ..
+      ),
+
+    -- * RemoteConfigCondition_TagColor
+    RemoteConfigCondition_TagColor
+      ( RemoteConfigCondition_TagColor_CONDITIONDISPLAYCOLORUNSPECIFIED,
+        RemoteConfigCondition_TagColor_Blue,
+        RemoteConfigCondition_TagColor_Brown,
+        RemoteConfigCondition_TagColor_Cyan,
+        RemoteConfigCondition_TagColor_DEEPORANGE,
+        RemoteConfigCondition_TagColor_Green,
+        RemoteConfigCondition_TagColor_Indigo,
+        RemoteConfigCondition_TagColor_Lime,
+        RemoteConfigCondition_TagColor_Orange,
+        RemoteConfigCondition_TagColor_Pink,
+        RemoteConfigCondition_TagColor_Purple,
+        RemoteConfigCondition_TagColor_Teal,
+        ..
+      ),
+  )
+where
+
+import Gogol.Prelude qualified as Core
+
+-- | V1 error format.
+newtype Xgafv = Xgafv {fromXgafv :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | v1 error format
+pattern Xgafv_1 :: Xgafv
+pattern Xgafv_1 = Xgafv "1"
+
+-- | v2 error format
+pattern Xgafv_2 :: Xgafv
+pattern Xgafv_2 = Xgafv "2"
+
+{-# COMPLETE
+  Xgafv_1,
+  Xgafv_2,
+  Xgafv
+  #-}
+
+-- | Optional. The display (tag) color of this condition. This serves as part of a tag (in the future, we may add tag text as well as tag color, but that is not yet implemented in the UI). This value has no affect on the semantics of the delivered config and it is ignored by the backend, except for passing it through write\/read requests. Not having this value or having the \"CONDITION/DISPLAY/COLOR_UNSPECIFIED\" value (0) have the same meaning: Let the UI choose any valid color when displaying the condition.
+newtype RemoteConfigCondition_TagColor = RemoteConfigCondition_TagColor {fromRemoteConfigCondition_TagColor :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern RemoteConfigCondition_TagColor_CONDITIONDISPLAYCOLORUNSPECIFIED :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_CONDITIONDISPLAYCOLORUNSPECIFIED = RemoteConfigCondition_TagColor "CONDITION_DISPLAY_COLOR_UNSPECIFIED"
+
+-- | Blue
+pattern RemoteConfigCondition_TagColor_Blue :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Blue = RemoteConfigCondition_TagColor "BLUE"
+
+-- | Brown
+pattern RemoteConfigCondition_TagColor_Brown :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Brown = RemoteConfigCondition_TagColor "BROWN"
+
+-- | Cyan
+pattern RemoteConfigCondition_TagColor_Cyan :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Cyan = RemoteConfigCondition_TagColor "CYAN"
+
+-- | aka \"Red Orange\"
+pattern RemoteConfigCondition_TagColor_DEEPORANGE :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_DEEPORANGE = RemoteConfigCondition_TagColor "DEEP_ORANGE"
+
+-- | Green
+pattern RemoteConfigCondition_TagColor_Green :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Green = RemoteConfigCondition_TagColor "GREEN"
+
+-- | Indigo *
+pattern RemoteConfigCondition_TagColor_Indigo :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Indigo = RemoteConfigCondition_TagColor "INDIGO"
+
+-- | Lime - Approved deviation from Material color palette
+pattern RemoteConfigCondition_TagColor_Lime :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Lime = RemoteConfigCondition_TagColor "LIME"
+
+-- | Orange
+pattern RemoteConfigCondition_TagColor_Orange :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Orange = RemoteConfigCondition_TagColor "ORANGE"
+
+-- | Pink
+pattern RemoteConfigCondition_TagColor_Pink :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Pink = RemoteConfigCondition_TagColor "PINK"
+
+-- | Purple
+pattern RemoteConfigCondition_TagColor_Purple :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Purple = RemoteConfigCondition_TagColor "PURPLE"
+
+-- | Teal
+pattern RemoteConfigCondition_TagColor_Teal :: RemoteConfigCondition_TagColor
+pattern RemoteConfigCondition_TagColor_Teal = RemoteConfigCondition_TagColor "TEAL"
+
+{-# COMPLETE
+  RemoteConfigCondition_TagColor_CONDITIONDISPLAYCOLORUNSPECIFIED,
+  RemoteConfigCondition_TagColor_Blue,
+  RemoteConfigCondition_TagColor_Brown,
+  RemoteConfigCondition_TagColor_Cyan,
+  RemoteConfigCondition_TagColor_DEEPORANGE,
+  RemoteConfigCondition_TagColor_Green,
+  RemoteConfigCondition_TagColor_Indigo,
+  RemoteConfigCondition_TagColor_Lime,
+  RemoteConfigCondition_TagColor_Orange,
+  RemoteConfigCondition_TagColor_Pink,
+  RemoteConfigCondition_TagColor_Purple,
+  RemoteConfigCondition_TagColor_Teal,
+  RemoteConfigCondition_TagColor
+  #-}
diff --git a/gen/Gogol/FirebaseRemoteConfig/Projects/GetRemoteConfig.hs b/gen/Gogol/FirebaseRemoteConfig/Projects/GetRemoteConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRemoteConfig/Projects/GetRemoteConfig.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.FirebaseRemoteConfig.Projects.GetRemoteConfig
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get the latest version Remote Configuration for a project. Returns the RemoteConfig as the payload, and also the eTag as a response header.
+--
+-- /See:/ <https://firebase.google.com/docs/remote-config/ Firebase Remote Config API Reference> for @firebaseremoteconfig.projects.getRemoteConfig@.
+module Gogol.FirebaseRemoteConfig.Projects.GetRemoteConfig
+  ( -- * Resource
+    FirebaseRemoteConfigProjectsGetRemoteConfigResource,
+
+    -- ** Constructing a Request
+    FirebaseRemoteConfigProjectsGetRemoteConfig (..),
+    newFirebaseRemoteConfigProjectsGetRemoteConfig,
+  )
+where
+
+import Gogol.FirebaseRemoteConfig.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaseremoteconfig.projects.getRemoteConfig@ method which the
+-- 'FirebaseRemoteConfigProjectsGetRemoteConfig' request conforms to.
+type FirebaseRemoteConfigProjectsGetRemoteConfigResource =
+  "v1"
+    Core.:> Core.Capture "project" Core.Text
+    Core.:> "remoteConfig"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "bearer_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "pp" Core.Bool
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] RemoteConfig
+
+-- | Get the latest version Remote Configuration for a project. Returns the RemoteConfig as the payload, and also the eTag as a response header.
+--
+-- /See:/ 'newFirebaseRemoteConfigProjectsGetRemoteConfig' smart constructor.
+data FirebaseRemoteConfigProjectsGetRemoteConfig = FirebaseRemoteConfigProjectsGetRemoteConfig
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | OAuth bearer token.
+    bearerToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Pretty-print response.
+    pp :: Core.Bool,
+    -- | The GMP project identifier. Required. See note at the beginning of this file regarding project ids.
+    project :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FirebaseRemoteConfigProjectsGetRemoteConfig' with the minimum fields required to make a request.
+newFirebaseRemoteConfigProjectsGetRemoteConfig ::
+  -- |  The GMP project identifier. Required. See note at the beginning of this file regarding project ids. See 'project'.
+  Core.Text ->
+  FirebaseRemoteConfigProjectsGetRemoteConfig
+newFirebaseRemoteConfigProjectsGetRemoteConfig project =
+  FirebaseRemoteConfigProjectsGetRemoteConfig
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      bearerToken = Core.Nothing,
+      callback = Core.Nothing,
+      pp = Core.True,
+      project = project,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    FirebaseRemoteConfigProjectsGetRemoteConfig
+  where
+  type Rs FirebaseRemoteConfigProjectsGetRemoteConfig = RemoteConfig
+  type Scopes FirebaseRemoteConfigProjectsGetRemoteConfig = '[]
+  requestClient FirebaseRemoteConfigProjectsGetRemoteConfig {..} =
+    go
+      project
+      xgafv
+      accessToken
+      bearerToken
+      callback
+      (Core.Just pp)
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      firebaseRemoteConfigService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRemoteConfigProjectsGetRemoteConfigResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRemoteConfig/Projects/UpdateRemoteConfig.hs b/gen/Gogol/FirebaseRemoteConfig/Projects/UpdateRemoteConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRemoteConfig/Projects/UpdateRemoteConfig.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.FirebaseRemoteConfig.Projects.UpdateRemoteConfig
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Update a RemoteConfig. We treat this as an always-existing resource (when it is not found in our data store, we treat it as version 0, a template with zero conditions and zero parameters). Hence there are no Create or Delete operations. Returns the updated template when successful (and the updated eTag as a response header), or an error if things go wrong. Possible error messages: * VALIDATION/ERROR (HTTP status 400) with additional details if the template being passed in can not be validated. * AUTHENTICATION/ERROR (HTTP status 401) if the request can not be authenticate (e.g. no access token, or invalid access token). * AUTHORIZATION/ERROR (HTTP status 403) if the request can not be authorized (e.g. the user has no access to the specified project id). * VERSION/MISMATCH (HTTP status 412) when trying to update when the expected eTag (passed in via the \"If-match\" header) is not specified, or is specified but does does not match the current eTag. * Internal error (HTTP status 500) for Database problems or
+-- other internal errors.
+--
+-- /See:/ <https://firebase.google.com/docs/remote-config/ Firebase Remote Config API Reference> for @firebaseremoteconfig.projects.updateRemoteConfig@.
+module Gogol.FirebaseRemoteConfig.Projects.UpdateRemoteConfig
+  ( -- * Resource
+    FirebaseRemoteConfigProjectsUpdateRemoteConfigResource,
+
+    -- ** Constructing a Request
+    FirebaseRemoteConfigProjectsUpdateRemoteConfig (..),
+    newFirebaseRemoteConfigProjectsUpdateRemoteConfig,
+  )
+where
+
+import Gogol.FirebaseRemoteConfig.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaseremoteconfig.projects.updateRemoteConfig@ method which the
+-- 'FirebaseRemoteConfigProjectsUpdateRemoteConfig' request conforms to.
+type FirebaseRemoteConfigProjectsUpdateRemoteConfigResource =
+  "v1"
+    Core.:> Core.Capture "project" Core.Text
+    Core.:> "remoteConfig"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "bearer_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "pp" Core.Bool
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "validateOnly" Core.Bool
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] RemoteConfig
+    Core.:> Core.Put '[Core.JSON] RemoteConfig
+
+-- | Update a RemoteConfig. We treat this as an always-existing resource (when it is not found in our data store, we treat it as version 0, a template with zero conditions and zero parameters). Hence there are no Create or Delete operations. Returns the updated template when successful (and the updated eTag as a response header), or an error if things go wrong. Possible error messages: * VALIDATION/ERROR (HTTP status 400) with additional details if the template being passed in can not be validated. * AUTHENTICATION/ERROR (HTTP status 401) if the request can not be authenticate (e.g. no access token, or invalid access token). * AUTHORIZATION/ERROR (HTTP status 403) if the request can not be authorized (e.g. the user has no access to the specified project id). * VERSION/MISMATCH (HTTP status 412) when trying to update when the expected eTag (passed in via the \"If-match\" header) is not specified, or is specified but does does not match the current eTag. * Internal error (HTTP status 500) for Database problems or
+-- other internal errors.
+--
+-- /See:/ 'newFirebaseRemoteConfigProjectsUpdateRemoteConfig' smart constructor.
+data FirebaseRemoteConfigProjectsUpdateRemoteConfig = FirebaseRemoteConfigProjectsUpdateRemoteConfig
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | OAuth bearer token.
+    bearerToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: RemoteConfig,
+    -- | Pretty-print response.
+    pp :: Core.Bool,
+    -- | The GMP project identifier. Required. See note at the beginning of this file regarding project ids.
+    project :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Optional. Defaults to \<code>false\<\/code> (UpdateRemoteConfig call should update the backend if there are no validation\/interal errors). May be set to \<code>true\<\/code> to indicate that, should no validation errors occur, the call should return a \"200 OK\" instead of performing the update. Note that other error messages (500 Internal Error, 412 Version Mismatch, etc) may still result after flipping to \<code>false\<\/code>, even if getting a \"200 OK\" when calling with \<code>true\<\/code>.
+    validateOnly :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FirebaseRemoteConfigProjectsUpdateRemoteConfig' with the minimum fields required to make a request.
+newFirebaseRemoteConfigProjectsUpdateRemoteConfig ::
+  -- |  Multipart request metadata. See 'payload'.
+  RemoteConfig ->
+  -- |  The GMP project identifier. Required. See note at the beginning of this file regarding project ids. See 'project'.
+  Core.Text ->
+  FirebaseRemoteConfigProjectsUpdateRemoteConfig
+newFirebaseRemoteConfigProjectsUpdateRemoteConfig payload project =
+  FirebaseRemoteConfigProjectsUpdateRemoteConfig
+    { xgafv =
+        Core.Nothing,
+      accessToken = Core.Nothing,
+      bearerToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      pp = Core.True,
+      project = project,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      validateOnly = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    FirebaseRemoteConfigProjectsUpdateRemoteConfig
+  where
+  type
+    Rs FirebaseRemoteConfigProjectsUpdateRemoteConfig =
+      RemoteConfig
+  type Scopes FirebaseRemoteConfigProjectsUpdateRemoteConfig = '[]
+  requestClient FirebaseRemoteConfigProjectsUpdateRemoteConfig {..} =
+    go
+      project
+      xgafv
+      accessToken
+      bearerToken
+      callback
+      (Core.Just pp)
+      uploadType
+      uploadProtocol
+      validateOnly
+      (Core.Just Core.AltJSON)
+      payload
+      firebaseRemoteConfigService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRemoteConfigProjectsUpdateRemoteConfigResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRemoteConfig/Types.hs b/gen/Gogol/FirebaseRemoteConfig/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRemoteConfig/Types.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.FirebaseRemoteConfig.Types
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.FirebaseRemoteConfig.Types
+  ( -- * Configuration
+    firebaseRemoteConfigService,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** RemoteConfig
+    RemoteConfig (..),
+    newRemoteConfig,
+
+    -- ** RemoteConfig_Parameters
+    RemoteConfig_Parameters (..),
+    newRemoteConfig_Parameters,
+
+    -- ** RemoteConfigCondition
+    RemoteConfigCondition (..),
+    newRemoteConfigCondition,
+
+    -- ** RemoteConfigCondition_TagColor
+    RemoteConfigCondition_TagColor (..),
+
+    -- ** RemoteConfigParameter
+    RemoteConfigParameter (..),
+    newRemoteConfigParameter,
+
+    -- ** RemoteConfigParameter_ConditionalValues
+    RemoteConfigParameter_ConditionalValues (..),
+    newRemoteConfigParameter_ConditionalValues,
+
+    -- ** RemoteConfigParameterValue
+    RemoteConfigParameterValue (..),
+    newRemoteConfigParameterValue,
+  )
+where
+
+import Gogol.FirebaseRemoteConfig.Internal.Product
+import Gogol.FirebaseRemoteConfig.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Default request referring to version @v1@ of the Firebase Remote Config API. This contains the host and root path used as a starting point for constructing service requests.
+firebaseRemoteConfigService :: Core.ServiceConfig
+firebaseRemoteConfigService =
+  Core.defaultService
+    (Core.ServiceId "firebaseremoteconfig:v1")
+    "firebaseremoteconfig.googleapis.com"
diff --git a/gen/Network/Google/FirebaseRemoteConfig.hs b/gen/Network/Google/FirebaseRemoteConfig.hs
deleted file mode 100644
--- a/gen/Network/Google/FirebaseRemoteConfig.hs
+++ /dev/null
@@ -1,94 +0,0 @@
-{-# LANGUAGE DataKinds         #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE TypeOperators     #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- |
--- Module      : Network.Google.FirebaseRemoteConfig
--- 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)
---
--- Firebase Remote Config API allows the 3P clients to manage Remote Config
--- conditions and parameters for Firebase applications.
---
--- /See:/ <https://firebase.google.com/docs/remote-config/ Firebase Remote Config API Reference>
-module Network.Google.FirebaseRemoteConfig
-    (
-    -- * Service Configuration
-      firebaseRemoteConfigService
-
-    -- * API Declaration
-    , FirebaseRemoteConfigAPI
-
-    -- * Resources
-
-    -- ** firebaseremoteconfig.projects.getRemoteConfig
-    , module Network.Google.Resource.FirebaseRemoteConfig.Projects.GetRemoteConfig
-
-    -- ** firebaseremoteconfig.projects.updateRemoteConfig
-    , module Network.Google.Resource.FirebaseRemoteConfig.Projects.UpdateRemoteConfig
-
-    -- * Types
-
-    -- ** RemoteConfigParameterValue
-    , RemoteConfigParameterValue
-    , remoteConfigParameterValue
-    , rcpvValue
-    , rcpvUseInAppDefault
-
-    -- ** RemoteConfigParameterConditionalValues
-    , RemoteConfigParameterConditionalValues
-    , remoteConfigParameterConditionalValues
-    , rcpcvAddtional
-
-    -- ** RemoteConfigParameters
-    , RemoteConfigParameters
-    , remoteConfigParameters
-    , rcpAddtional
-
-    -- ** RemoteConfigParameter
-    , RemoteConfigParameter
-    , remoteConfigParameter
-    , rcpDefaultValue
-    , rcpDescription
-    , rcpConditionalValues
-
-    -- ** Xgafv
-    , Xgafv (..)
-
-    -- ** RemoteConfigConditionTagColor
-    , RemoteConfigConditionTagColor (..)
-
-    -- ** RemoteConfigCondition
-    , RemoteConfigCondition
-    , remoteConfigCondition
-    , rccTagColor
-    , rccName
-    , rccExpression
-    , rccDescription
-
-    -- ** RemoteConfig
-    , RemoteConfig
-    , remoteConfig
-    , rcParameters
-    , rcConditions
-    ) where
-
-import           Network.Google.FirebaseRemoteConfig.Types
-import           Network.Google.Prelude
-import           Network.Google.Resource.FirebaseRemoteConfig.Projects.GetRemoteConfig
-import           Network.Google.Resource.FirebaseRemoteConfig.Projects.UpdateRemoteConfig
-
-{- $resources
-TODO
--}
-
--- | Represents the entirety of the methods and resources available for the Firebase Remote Config API service.
-type FirebaseRemoteConfigAPI =
-     ProjectsUpdateRemoteConfigResource :<|>
-       ProjectsGetRemoteConfigResource
diff --git a/gen/Network/Google/FirebaseRemoteConfig/Types.hs b/gen/Network/Google/FirebaseRemoteConfig/Types.hs
deleted file mode 100644
--- a/gen/Network/Google/FirebaseRemoteConfig/Types.hs
+++ /dev/null
@@ -1,75 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.FirebaseRemoteConfig.Types
--- 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)
---
-module Network.Google.FirebaseRemoteConfig.Types
-    (
-    -- * Service Configuration
-      firebaseRemoteConfigService
-
-    -- * RemoteConfigParameterValue
-    , RemoteConfigParameterValue
-    , remoteConfigParameterValue
-    , rcpvValue
-    , rcpvUseInAppDefault
-
-    -- * RemoteConfigParameterConditionalValues
-    , RemoteConfigParameterConditionalValues
-    , remoteConfigParameterConditionalValues
-    , rcpcvAddtional
-
-    -- * RemoteConfigParameters
-    , RemoteConfigParameters
-    , remoteConfigParameters
-    , rcpAddtional
-
-    -- * RemoteConfigParameter
-    , RemoteConfigParameter
-    , remoteConfigParameter
-    , rcpDefaultValue
-    , rcpDescription
-    , rcpConditionalValues
-
-    -- * Xgafv
-    , Xgafv (..)
-
-    -- * RemoteConfigConditionTagColor
-    , RemoteConfigConditionTagColor (..)
-
-    -- * RemoteConfigCondition
-    , RemoteConfigCondition
-    , remoteConfigCondition
-    , rccTagColor
-    , rccName
-    , rccExpression
-    , rccDescription
-
-    -- * RemoteConfig
-    , RemoteConfig
-    , remoteConfig
-    , rcParameters
-    , rcConditions
-    ) where
-
-import           Network.Google.FirebaseRemoteConfig.Types.Product
-import           Network.Google.FirebaseRemoteConfig.Types.Sum
-import           Network.Google.Prelude
-
--- | Default request referring to version 'v1' of the Firebase Remote Config API. This contains the host and root path used as a starting point for constructing service requests.
-firebaseRemoteConfigService :: ServiceConfig
-firebaseRemoteConfigService
-  = defaultService
-      (ServiceId "firebaseremoteconfig:v1")
-      "firebaseremoteconfig.googleapis.com"
diff --git a/gen/Network/Google/FirebaseRemoteConfig/Types/Product.hs b/gen/Network/Google/FirebaseRemoteConfig/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/Google/FirebaseRemoteConfig/Types/Product.hs
+++ /dev/null
@@ -1,393 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.FirebaseRemoteConfig.Types.Product
--- 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)
---
-module Network.Google.FirebaseRemoteConfig.Types.Product where
-
-import           Network.Google.FirebaseRemoteConfig.Types.Sum
-import           Network.Google.Prelude
-
--- | A RemoteConfigParameter\'s \"value\" (either the default value, or the
--- value associated with a condition name) is either a string, or the
--- \"use_in_app_default\" indicator (which means to leave out the parameter
--- from the returned map that is the output of the parameter fetch). We
--- represent the \"use_in_app_default\" as a bool, but (when using the
--- boolean instead of the string) it should always be 'true'.
---
--- /See:/ 'remoteConfigParameterValue' smart constructor.
-data RemoteConfigParameterValue =
-  RemoteConfigParameterValue'
-    { _rcpvValue           :: !(Maybe Text)
-    , _rcpvUseInAppDefault :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoteConfigParameterValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcpvValue'
---
--- * 'rcpvUseInAppDefault'
-remoteConfigParameterValue
-    :: RemoteConfigParameterValue
-remoteConfigParameterValue =
-  RemoteConfigParameterValue'
-    {_rcpvValue = Nothing, _rcpvUseInAppDefault = Nothing}
-
-
--- | the string to set the parameter to
-rcpvValue :: Lens' RemoteConfigParameterValue (Maybe Text)
-rcpvValue
-  = lens _rcpvValue (\ s a -> s{_rcpvValue = a})
-
--- | if true, omit the parameter from the map of fetched parameter values
-rcpvUseInAppDefault :: Lens' RemoteConfigParameterValue (Maybe Bool)
-rcpvUseInAppDefault
-  = lens _rcpvUseInAppDefault
-      (\ s a -> s{_rcpvUseInAppDefault = a})
-
-instance FromJSON RemoteConfigParameterValue where
-        parseJSON
-          = withObject "RemoteConfigParameterValue"
-              (\ o ->
-                 RemoteConfigParameterValue' <$>
-                   (o .:? "value") <*> (o .:? "useInAppDefault"))
-
-instance ToJSON RemoteConfigParameterValue where
-        toJSON RemoteConfigParameterValue'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _rcpvValue,
-                  ("useInAppDefault" .=) <$> _rcpvUseInAppDefault])
-
--- | Optional - a map of (condition_name, value). The condition_name of the
--- highest priority (the one listed first in the conditions array)
--- determines the value of this parameter.
---
--- /See:/ 'remoteConfigParameterConditionalValues' smart constructor.
-newtype RemoteConfigParameterConditionalValues =
-  RemoteConfigParameterConditionalValues'
-    { _rcpcvAddtional :: HashMap Text RemoteConfigParameterValue
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoteConfigParameterConditionalValues' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcpcvAddtional'
-remoteConfigParameterConditionalValues
-    :: HashMap Text RemoteConfigParameterValue -- ^ 'rcpcvAddtional'
-    -> RemoteConfigParameterConditionalValues
-remoteConfigParameterConditionalValues pRcpcvAddtional_ =
-  RemoteConfigParameterConditionalValues'
-    {_rcpcvAddtional = _Coerce # pRcpcvAddtional_}
-
-
-rcpcvAddtional :: Lens' RemoteConfigParameterConditionalValues (HashMap Text RemoteConfigParameterValue)
-rcpcvAddtional
-  = lens _rcpcvAddtional
-      (\ s a -> s{_rcpcvAddtional = a})
-      . _Coerce
-
-instance FromJSON
-           RemoteConfigParameterConditionalValues
-         where
-        parseJSON
-          = withObject "RemoteConfigParameterConditionalValues"
-              (\ o ->
-                 RemoteConfigParameterConditionalValues' <$>
-                   (parseJSONObject o))
-
-instance ToJSON
-           RemoteConfigParameterConditionalValues
-         where
-        toJSON = toJSON . _rcpcvAddtional
-
--- | Map of parameter keys to their optional default values and optional
--- submap of (condition name : value). Order doesn\'t affect semantics, and
--- so is sorted by the server. The \'key\' values of the params must be
--- unique.
---
--- /See:/ 'remoteConfigParameters' smart constructor.
-newtype RemoteConfigParameters =
-  RemoteConfigParameters'
-    { _rcpAddtional :: HashMap Text RemoteConfigParameter
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoteConfigParameters' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcpAddtional'
-remoteConfigParameters
-    :: HashMap Text RemoteConfigParameter -- ^ 'rcpAddtional'
-    -> RemoteConfigParameters
-remoteConfigParameters pRcpAddtional_ =
-  RemoteConfigParameters' {_rcpAddtional = _Coerce # pRcpAddtional_}
-
-
-rcpAddtional :: Lens' RemoteConfigParameters (HashMap Text RemoteConfigParameter)
-rcpAddtional
-  = lens _rcpAddtional (\ s a -> s{_rcpAddtional = a})
-      . _Coerce
-
-instance FromJSON RemoteConfigParameters where
-        parseJSON
-          = withObject "RemoteConfigParameters"
-              (\ o ->
-                 RemoteConfigParameters' <$> (parseJSONObject o))
-
-instance ToJSON RemoteConfigParameters where
-        toJSON = toJSON . _rcpAddtional
-
--- | While default_value and conditional_values are each optional, at least
--- one of the two is required - otherwise, the parameter is meaningless
--- (and an exception will be thrown by the validation logic).
---
--- /See:/ 'remoteConfigParameter' smart constructor.
-data RemoteConfigParameter =
-  RemoteConfigParameter'
-    { _rcpDefaultValue      :: !(Maybe RemoteConfigParameterValue)
-    , _rcpDescription       :: !(Maybe Text)
-    , _rcpConditionalValues :: !(Maybe RemoteConfigParameterConditionalValues)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoteConfigParameter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcpDefaultValue'
---
--- * 'rcpDescription'
---
--- * 'rcpConditionalValues'
-remoteConfigParameter
-    :: RemoteConfigParameter
-remoteConfigParameter =
-  RemoteConfigParameter'
-    { _rcpDefaultValue = Nothing
-    , _rcpDescription = Nothing
-    , _rcpConditionalValues = Nothing
-    }
-
-
--- | Optional - value to set the parameter to, when none of the named
--- conditions evaluate to 'true'.
-rcpDefaultValue :: Lens' RemoteConfigParameter (Maybe RemoteConfigParameterValue)
-rcpDefaultValue
-  = lens _rcpDefaultValue
-      (\ s a -> s{_rcpDefaultValue = a})
-
--- | Optional. A description for this Parameter. Length must be less than or
--- equal to 100 characters (or more precisely, unicode code points, which
--- is defined in
--- java\/com\/google\/wireless\/android\/config\/ConstsExporter.java). A
--- description may contain any Unicode characters
-rcpDescription :: Lens' RemoteConfigParameter (Maybe Text)
-rcpDescription
-  = lens _rcpDescription
-      (\ s a -> s{_rcpDescription = a})
-
--- | Optional - a map of (condition_name, value). The condition_name of the
--- highest priority (the one listed first in the conditions array)
--- determines the value of this parameter.
-rcpConditionalValues :: Lens' RemoteConfigParameter (Maybe RemoteConfigParameterConditionalValues)
-rcpConditionalValues
-  = lens _rcpConditionalValues
-      (\ s a -> s{_rcpConditionalValues = a})
-
-instance FromJSON RemoteConfigParameter where
-        parseJSON
-          = withObject "RemoteConfigParameter"
-              (\ o ->
-                 RemoteConfigParameter' <$>
-                   (o .:? "defaultValue") <*> (o .:? "description") <*>
-                     (o .:? "conditionalValues"))
-
-instance ToJSON RemoteConfigParameter where
-        toJSON RemoteConfigParameter'{..}
-          = object
-              (catMaybes
-                 [("defaultValue" .=) <$> _rcpDefaultValue,
-                  ("description" .=) <$> _rcpDescription,
-                  ("conditionalValues" .=) <$> _rcpConditionalValues])
-
--- | A single RemoteConfig Condition. A list of these (because order matters)
--- are part of a single RemoteConfig template.
---
--- /See:/ 'remoteConfigCondition' smart constructor.
-data RemoteConfigCondition =
-  RemoteConfigCondition'
-    { _rccTagColor    :: !(Maybe RemoteConfigConditionTagColor)
-    , _rccName        :: !(Maybe Text)
-    , _rccExpression  :: !(Maybe Text)
-    , _rccDescription :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoteConfigCondition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rccTagColor'
---
--- * 'rccName'
---
--- * 'rccExpression'
---
--- * 'rccDescription'
-remoteConfigCondition
-    :: RemoteConfigCondition
-remoteConfigCondition =
-  RemoteConfigCondition'
-    { _rccTagColor = Nothing
-    , _rccName = Nothing
-    , _rccExpression = Nothing
-    , _rccDescription = Nothing
-    }
-
-
--- | Optional. The display (tag) color of this condition. This serves as part
--- of a tag (in the future, we may add tag text as well as tag color, but
--- that is not yet implemented in the UI). This value has no affect on the
--- semantics of the delivered config and it is ignored by the backend,
--- except for passing it through write\/read requests. Not having this
--- value or having the \"CONDITION_DISPLAY_COLOR_UNSPECIFIED\" value (0)
--- have the same meaning: Let the UI choose any valid color when displaying
--- the condition.
-rccTagColor :: Lens' RemoteConfigCondition (Maybe RemoteConfigConditionTagColor)
-rccTagColor
-  = lens _rccTagColor (\ s a -> s{_rccTagColor = a})
-
--- | Required. A non empty and unique name of this condition.
-rccName :: Lens' RemoteConfigCondition (Maybe Text)
-rccName = lens _rccName (\ s a -> s{_rccName = a})
-
--- | Required.
-rccExpression :: Lens' RemoteConfigCondition (Maybe Text)
-rccExpression
-  = lens _rccExpression
-      (\ s a -> s{_rccExpression = a})
-
--- | DO NOT USE. Implementation removed and will not be added unless
--- requested. A description for this Condition. Length must be less than or
--- equal to 100 characters (or more precisely, unicode code points, which
--- is defined in
--- java\/com\/google\/wireless\/android\/config\/ConstsExporter.java). A
--- description may contain any Unicode characters
-rccDescription :: Lens' RemoteConfigCondition (Maybe Text)
-rccDescription
-  = lens _rccDescription
-      (\ s a -> s{_rccDescription = a})
-
-instance FromJSON RemoteConfigCondition where
-        parseJSON
-          = withObject "RemoteConfigCondition"
-              (\ o ->
-                 RemoteConfigCondition' <$>
-                   (o .:? "tagColor") <*> (o .:? "name") <*>
-                     (o .:? "expression")
-                     <*> (o .:? "description"))
-
-instance ToJSON RemoteConfigCondition where
-        toJSON RemoteConfigCondition'{..}
-          = object
-              (catMaybes
-                 [("tagColor" .=) <$> _rccTagColor,
-                  ("name" .=) <$> _rccName,
-                  ("expression" .=) <$> _rccExpression,
-                  ("description" .=) <$> _rccDescription])
-
--- | * The RemoteConfig consists of a list of conditions (which can be
--- thought of as named \"if\" statements) and a map of parameters
--- (parameter key to a structure containing an optional default value, as
--- well as a optional submap of (condition name to value when that
--- condition is true).
---
--- /See:/ 'remoteConfig' smart constructor.
-data RemoteConfig =
-  RemoteConfig'
-    { _rcParameters :: !(Maybe RemoteConfigParameters)
-    , _rcConditions :: !(Maybe [RemoteConfigCondition])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoteConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcParameters'
---
--- * 'rcConditions'
-remoteConfig
-    :: RemoteConfig
-remoteConfig = RemoteConfig' {_rcParameters = Nothing, _rcConditions = Nothing}
-
-
--- | Map of parameter keys to their optional default values and optional
--- submap of (condition name : value). Order doesn\'t affect semantics, and
--- so is sorted by the server. The \'key\' values of the params must be
--- unique.
-rcParameters :: Lens' RemoteConfig (Maybe RemoteConfigParameters)
-rcParameters
-  = lens _rcParameters (\ s a -> s{_rcParameters = a})
-
--- | The list of named conditions. The order *does* affect the semantics. The
--- condition_name values of these entries must be unique. The resolved
--- value of a config parameter P is determined as follow: * Let Y be the
--- set of values from the submap of P that refer to conditions that
--- evaluate to 'true'. * If Y is non empty, the value is taken from the
--- specific submap in Y whose condition_name is the earliest in this
--- condition list. * Else, if P has a default value option (condition_name
--- is empty) then the value is taken from that option. * Else, parameter P
--- has no value and is omitted from the config result. Example: parameter
--- key \"p1\", default value \"v1\", submap specified as {\"c1\": v2,
--- \"c2\": v3} where \"c1\" and \"c2\" are names of conditions in the
--- condition list (where \"c1\" in this example appears before \"c2\"). The
--- value of p1 would be v2 as long as c1 is true. Otherwise, if c2 is true,
--- p1 would evaluate to v3, and if c1 and c2 are both false, p1 would
--- evaluate to v1. If no default value was specified, and c1 and c2 were
--- both false, no value for p1 would be generated.
-rcConditions :: Lens' RemoteConfig [RemoteConfigCondition]
-rcConditions
-  = lens _rcConditions (\ s a -> s{_rcConditions = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON RemoteConfig where
-        parseJSON
-          = withObject "RemoteConfig"
-              (\ o ->
-                 RemoteConfig' <$>
-                   (o .:? "parameters") <*>
-                     (o .:? "conditions" .!= mempty))
-
-instance ToJSON RemoteConfig where
-        toJSON RemoteConfig'{..}
-          = object
-              (catMaybes
-                 [("parameters" .=) <$> _rcParameters,
-                  ("conditions" .=) <$> _rcConditions])
diff --git a/gen/Network/Google/FirebaseRemoteConfig/Types/Sum.hs b/gen/Network/Google/FirebaseRemoteConfig/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/Google/FirebaseRemoteConfig/Types/Sum.hs
+++ /dev/null
@@ -1,133 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.FirebaseRemoteConfig.Types.Sum
--- 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)
---
-module Network.Google.FirebaseRemoteConfig.Types.Sum where
-
-import           Network.Google.Prelude hiding (Bytes)
-
--- | V1 error format.
-data Xgafv
-    = X1
-      -- ^ @1@
-      -- v1 error format
-    | X2
-      -- ^ @2@
-      -- v2 error format
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable Xgafv
-
-instance FromHttpApiData Xgafv where
-    parseQueryParam = \case
-        "1" -> Right X1
-        "2" -> Right X2
-        x -> Left ("Unable to parse Xgafv from: " <> x)
-
-instance ToHttpApiData Xgafv where
-    toQueryParam = \case
-        X1 -> "1"
-        X2 -> "2"
-
-instance FromJSON Xgafv where
-    parseJSON = parseJSONText "Xgafv"
-
-instance ToJSON Xgafv where
-    toJSON = toJSONText
-
--- | Optional. The display (tag) color of this condition. This serves as part
--- of a tag (in the future, we may add tag text as well as tag color, but
--- that is not yet implemented in the UI). This value has no affect on the
--- semantics of the delivered config and it is ignored by the backend,
--- except for passing it through write\/read requests. Not having this
--- value or having the \"CONDITION_DISPLAY_COLOR_UNSPECIFIED\" value (0)
--- have the same meaning: Let the UI choose any valid color when displaying
--- the condition.
-data RemoteConfigConditionTagColor
-    = ConditionDisplayColorUnspecified
-      -- ^ @CONDITION_DISPLAY_COLOR_UNSPECIFIED@
-    | Blue
-      -- ^ @BLUE@
-      -- Blue
-    | Brown
-      -- ^ @BROWN@
-      -- Brown
-    | Cyan
-      -- ^ @CYAN@
-      -- Cyan
-    | DeepOrange
-      -- ^ @DEEP_ORANGE@
-      -- aka \"Red Orange\"
-    | Green
-      -- ^ @GREEN@
-      -- Green
-    | Indigo
-      -- ^ @INDIGO@
-      -- Indigo *
-    | Lime
-      -- ^ @LIME@
-      -- Lime - Approved deviation from Material color palette
-    | Orange
-      -- ^ @ORANGE@
-      -- Orange
-    | Pink
-      -- ^ @PINK@
-      -- Pink
-    | Purple
-      -- ^ @PURPLE@
-      -- Purple
-    | Teal
-      -- ^ @TEAL@
-      -- Teal
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable RemoteConfigConditionTagColor
-
-instance FromHttpApiData RemoteConfigConditionTagColor where
-    parseQueryParam = \case
-        "CONDITION_DISPLAY_COLOR_UNSPECIFIED" -> Right ConditionDisplayColorUnspecified
-        "BLUE" -> Right Blue
-        "BROWN" -> Right Brown
-        "CYAN" -> Right Cyan
-        "DEEP_ORANGE" -> Right DeepOrange
-        "GREEN" -> Right Green
-        "INDIGO" -> Right Indigo
-        "LIME" -> Right Lime
-        "ORANGE" -> Right Orange
-        "PINK" -> Right Pink
-        "PURPLE" -> Right Purple
-        "TEAL" -> Right Teal
-        x -> Left ("Unable to parse RemoteConfigConditionTagColor from: " <> x)
-
-instance ToHttpApiData RemoteConfigConditionTagColor where
-    toQueryParam = \case
-        ConditionDisplayColorUnspecified -> "CONDITION_DISPLAY_COLOR_UNSPECIFIED"
-        Blue -> "BLUE"
-        Brown -> "BROWN"
-        Cyan -> "CYAN"
-        DeepOrange -> "DEEP_ORANGE"
-        Green -> "GREEN"
-        Indigo -> "INDIGO"
-        Lime -> "LIME"
-        Orange -> "ORANGE"
-        Pink -> "PINK"
-        Purple -> "PURPLE"
-        Teal -> "TEAL"
-
-instance FromJSON RemoteConfigConditionTagColor where
-    parseJSON = parseJSONText "RemoteConfigConditionTagColor"
-
-instance ToJSON RemoteConfigConditionTagColor where
-    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/FirebaseRemoteConfig/Projects/GetRemoteConfig.hs b/gen/Network/Google/Resource/FirebaseRemoteConfig/Projects/GetRemoteConfig.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRemoteConfig/Projects/GetRemoteConfig.hs
+++ /dev/null
@@ -1,177 +0,0 @@
-{-# 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.FirebaseRemoteConfig.Projects.GetRemoteConfig
--- 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 the latest version Remote Configuration for a project. Returns the
--- RemoteConfig as the payload, and also the eTag as a response header.
---
--- /See:/ <https://firebase.google.com/docs/remote-config/ Firebase Remote Config API Reference> for @firebaseremoteconfig.projects.getRemoteConfig@.
-module Network.Google.Resource.FirebaseRemoteConfig.Projects.GetRemoteConfig
-    (
-    -- * REST Resource
-      ProjectsGetRemoteConfigResource
-
-    -- * Creating a Request
-    , projectsGetRemoteConfig
-    , ProjectsGetRemoteConfig
-
-    -- * Request Lenses
-    , pgrcXgafv
-    , pgrcUploadProtocol
-    , pgrcProject
-    , pgrcPp
-    , pgrcAccessToken
-    , pgrcUploadType
-    , pgrcBearerToken
-    , pgrcCallback
-    ) where
-
-import           Network.Google.FirebaseRemoteConfig.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaseremoteconfig.projects.getRemoteConfig@ method which the
--- 'ProjectsGetRemoteConfig' request conforms to.
-type ProjectsGetRemoteConfigResource =
-     "v1" :>
-       Capture "project" Text :>
-         "remoteConfig" :>
-           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 :> Get '[JSON] RemoteConfig
-
--- | Get the latest version Remote Configuration for a project. Returns the
--- RemoteConfig as the payload, and also the eTag as a response header.
---
--- /See:/ 'projectsGetRemoteConfig' smart constructor.
-data ProjectsGetRemoteConfig =
-  ProjectsGetRemoteConfig'
-    { _pgrcXgafv          :: !(Maybe Xgafv)
-    , _pgrcUploadProtocol :: !(Maybe Text)
-    , _pgrcProject        :: !Text
-    , _pgrcPp             :: !Bool
-    , _pgrcAccessToken    :: !(Maybe Text)
-    , _pgrcUploadType     :: !(Maybe Text)
-    , _pgrcBearerToken    :: !(Maybe Text)
-    , _pgrcCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsGetRemoteConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pgrcXgafv'
---
--- * 'pgrcUploadProtocol'
---
--- * 'pgrcProject'
---
--- * 'pgrcPp'
---
--- * 'pgrcAccessToken'
---
--- * 'pgrcUploadType'
---
--- * 'pgrcBearerToken'
---
--- * 'pgrcCallback'
-projectsGetRemoteConfig
-    :: Text -- ^ 'pgrcProject'
-    -> ProjectsGetRemoteConfig
-projectsGetRemoteConfig pPgrcProject_ =
-  ProjectsGetRemoteConfig'
-    { _pgrcXgafv = Nothing
-    , _pgrcUploadProtocol = Nothing
-    , _pgrcProject = pPgrcProject_
-    , _pgrcPp = True
-    , _pgrcAccessToken = Nothing
-    , _pgrcUploadType = Nothing
-    , _pgrcBearerToken = Nothing
-    , _pgrcCallback = Nothing
-    }
-
-
--- | V1 error format.
-pgrcXgafv :: Lens' ProjectsGetRemoteConfig (Maybe Xgafv)
-pgrcXgafv
-  = lens _pgrcXgafv (\ s a -> s{_pgrcXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-pgrcUploadProtocol :: Lens' ProjectsGetRemoteConfig (Maybe Text)
-pgrcUploadProtocol
-  = lens _pgrcUploadProtocol
-      (\ s a -> s{_pgrcUploadProtocol = a})
-
--- | The GMP project identifier. Required. See note at the beginning of this
--- file regarding project ids.
-pgrcProject :: Lens' ProjectsGetRemoteConfig Text
-pgrcProject
-  = lens _pgrcProject (\ s a -> s{_pgrcProject = a})
-
--- | Pretty-print response.
-pgrcPp :: Lens' ProjectsGetRemoteConfig Bool
-pgrcPp = lens _pgrcPp (\ s a -> s{_pgrcPp = a})
-
--- | OAuth access token.
-pgrcAccessToken :: Lens' ProjectsGetRemoteConfig (Maybe Text)
-pgrcAccessToken
-  = lens _pgrcAccessToken
-      (\ s a -> s{_pgrcAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-pgrcUploadType :: Lens' ProjectsGetRemoteConfig (Maybe Text)
-pgrcUploadType
-  = lens _pgrcUploadType
-      (\ s a -> s{_pgrcUploadType = a})
-
--- | OAuth bearer token.
-pgrcBearerToken :: Lens' ProjectsGetRemoteConfig (Maybe Text)
-pgrcBearerToken
-  = lens _pgrcBearerToken
-      (\ s a -> s{_pgrcBearerToken = a})
-
--- | JSONP
-pgrcCallback :: Lens' ProjectsGetRemoteConfig (Maybe Text)
-pgrcCallback
-  = lens _pgrcCallback (\ s a -> s{_pgrcCallback = a})
-
-instance GoogleRequest ProjectsGetRemoteConfig where
-        type Rs ProjectsGetRemoteConfig = RemoteConfig
-        type Scopes ProjectsGetRemoteConfig = '[]
-        requestClient ProjectsGetRemoteConfig'{..}
-          = go _pgrcProject _pgrcXgafv _pgrcUploadProtocol
-              (Just _pgrcPp)
-              _pgrcAccessToken
-              _pgrcUploadType
-              _pgrcBearerToken
-              _pgrcCallback
-              (Just AltJSON)
-              firebaseRemoteConfigService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsGetRemoteConfigResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRemoteConfig/Projects/UpdateRemoteConfig.hs b/gen/Network/Google/Resource/FirebaseRemoteConfig/Projects/UpdateRemoteConfig.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRemoteConfig/Projects/UpdateRemoteConfig.hs
+++ /dev/null
@@ -1,237 +0,0 @@
-{-# 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.FirebaseRemoteConfig.Projects.UpdateRemoteConfig
--- 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)
---
--- Update a RemoteConfig. We treat this as an always-existing resource
--- (when it is not found in our data store, we treat it as version 0, a
--- template with zero conditions and zero parameters). Hence there are no
--- Create or Delete operations. Returns the updated template when
--- successful (and the updated eTag as a response header), or an error if
--- things go wrong. Possible error messages: * VALIDATION_ERROR (HTTP
--- status 400) with additional details if the template being passed in can
--- not be validated. * AUTHENTICATION_ERROR (HTTP status 401) if the
--- request can not be authenticate (e.g. no access token, or invalid access
--- token). * AUTHORIZATION_ERROR (HTTP status 403) if the request can not
--- be authorized (e.g. the user has no access to the specified project id).
--- * VERSION_MISMATCH (HTTP status 412) when trying to update when the
--- expected eTag (passed in via the \"If-match\" header) is not specified,
--- or is specified but does does not match the current eTag. * Internal
--- error (HTTP status 500) for Database problems or other internal errors.
---
--- /See:/ <https://firebase.google.com/docs/remote-config/ Firebase Remote Config API Reference> for @firebaseremoteconfig.projects.updateRemoteConfig@.
-module Network.Google.Resource.FirebaseRemoteConfig.Projects.UpdateRemoteConfig
-    (
-    -- * REST Resource
-      ProjectsUpdateRemoteConfigResource
-
-    -- * Creating a Request
-    , projectsUpdateRemoteConfig
-    , ProjectsUpdateRemoteConfig
-
-    -- * Request Lenses
-    , purcXgafv
-    , purcValidateOnly
-    , purcUploadProtocol
-    , purcProject
-    , purcPp
-    , purcAccessToken
-    , purcUploadType
-    , purcPayload
-    , purcBearerToken
-    , purcCallback
-    ) where
-
-import           Network.Google.FirebaseRemoteConfig.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaseremoteconfig.projects.updateRemoteConfig@ method which the
--- 'ProjectsUpdateRemoteConfig' request conforms to.
-type ProjectsUpdateRemoteConfigResource =
-     "v1" :>
-       Capture "project" Text :>
-         "remoteConfig" :>
-           QueryParam "$.xgafv" Xgafv :>
-             QueryParam "validateOnly" Bool :>
-               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] RemoteConfig :>
-                               Put '[JSON] RemoteConfig
-
--- | Update a RemoteConfig. We treat this as an always-existing resource
--- (when it is not found in our data store, we treat it as version 0, a
--- template with zero conditions and zero parameters). Hence there are no
--- Create or Delete operations. Returns the updated template when
--- successful (and the updated eTag as a response header), or an error if
--- things go wrong. Possible error messages: * VALIDATION_ERROR (HTTP
--- status 400) with additional details if the template being passed in can
--- not be validated. * AUTHENTICATION_ERROR (HTTP status 401) if the
--- request can not be authenticate (e.g. no access token, or invalid access
--- token). * AUTHORIZATION_ERROR (HTTP status 403) if the request can not
--- be authorized (e.g. the user has no access to the specified project id).
--- * VERSION_MISMATCH (HTTP status 412) when trying to update when the
--- expected eTag (passed in via the \"If-match\" header) is not specified,
--- or is specified but does does not match the current eTag. * Internal
--- error (HTTP status 500) for Database problems or other internal errors.
---
--- /See:/ 'projectsUpdateRemoteConfig' smart constructor.
-data ProjectsUpdateRemoteConfig =
-  ProjectsUpdateRemoteConfig'
-    { _purcXgafv          :: !(Maybe Xgafv)
-    , _purcValidateOnly   :: !(Maybe Bool)
-    , _purcUploadProtocol :: !(Maybe Text)
-    , _purcProject        :: !Text
-    , _purcPp             :: !Bool
-    , _purcAccessToken    :: !(Maybe Text)
-    , _purcUploadType     :: !(Maybe Text)
-    , _purcPayload        :: !RemoteConfig
-    , _purcBearerToken    :: !(Maybe Text)
-    , _purcCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsUpdateRemoteConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'purcXgafv'
---
--- * 'purcValidateOnly'
---
--- * 'purcUploadProtocol'
---
--- * 'purcProject'
---
--- * 'purcPp'
---
--- * 'purcAccessToken'
---
--- * 'purcUploadType'
---
--- * 'purcPayload'
---
--- * 'purcBearerToken'
---
--- * 'purcCallback'
-projectsUpdateRemoteConfig
-    :: Text -- ^ 'purcProject'
-    -> RemoteConfig -- ^ 'purcPayload'
-    -> ProjectsUpdateRemoteConfig
-projectsUpdateRemoteConfig pPurcProject_ pPurcPayload_ =
-  ProjectsUpdateRemoteConfig'
-    { _purcXgafv = Nothing
-    , _purcValidateOnly = Nothing
-    , _purcUploadProtocol = Nothing
-    , _purcProject = pPurcProject_
-    , _purcPp = True
-    , _purcAccessToken = Nothing
-    , _purcUploadType = Nothing
-    , _purcPayload = pPurcPayload_
-    , _purcBearerToken = Nothing
-    , _purcCallback = Nothing
-    }
-
-
--- | V1 error format.
-purcXgafv :: Lens' ProjectsUpdateRemoteConfig (Maybe Xgafv)
-purcXgafv
-  = lens _purcXgafv (\ s a -> s{_purcXgafv = a})
-
--- | Optional. Defaults to 'false' (UpdateRemoteConfig call should update the
--- backend if there are no validation\/interal errors). May be set to
--- 'true' to indicate that, should no validation errors occur, the call
--- should return a \"200 OK\" instead of performing the update. Note that
--- other error messages (500 Internal Error, 412 Version Mismatch, etc) may
--- still result after flipping to 'false', even if getting a \"200 OK\"
--- when calling with 'true'.
-purcValidateOnly :: Lens' ProjectsUpdateRemoteConfig (Maybe Bool)
-purcValidateOnly
-  = lens _purcValidateOnly
-      (\ s a -> s{_purcValidateOnly = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-purcUploadProtocol :: Lens' ProjectsUpdateRemoteConfig (Maybe Text)
-purcUploadProtocol
-  = lens _purcUploadProtocol
-      (\ s a -> s{_purcUploadProtocol = a})
-
--- | The GMP project identifier. Required. See note at the beginning of this
--- file regarding project ids.
-purcProject :: Lens' ProjectsUpdateRemoteConfig Text
-purcProject
-  = lens _purcProject (\ s a -> s{_purcProject = a})
-
--- | Pretty-print response.
-purcPp :: Lens' ProjectsUpdateRemoteConfig Bool
-purcPp = lens _purcPp (\ s a -> s{_purcPp = a})
-
--- | OAuth access token.
-purcAccessToken :: Lens' ProjectsUpdateRemoteConfig (Maybe Text)
-purcAccessToken
-  = lens _purcAccessToken
-      (\ s a -> s{_purcAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-purcUploadType :: Lens' ProjectsUpdateRemoteConfig (Maybe Text)
-purcUploadType
-  = lens _purcUploadType
-      (\ s a -> s{_purcUploadType = a})
-
--- | Multipart request metadata.
-purcPayload :: Lens' ProjectsUpdateRemoteConfig RemoteConfig
-purcPayload
-  = lens _purcPayload (\ s a -> s{_purcPayload = a})
-
--- | OAuth bearer token.
-purcBearerToken :: Lens' ProjectsUpdateRemoteConfig (Maybe Text)
-purcBearerToken
-  = lens _purcBearerToken
-      (\ s a -> s{_purcBearerToken = a})
-
--- | JSONP
-purcCallback :: Lens' ProjectsUpdateRemoteConfig (Maybe Text)
-purcCallback
-  = lens _purcCallback (\ s a -> s{_purcCallback = a})
-
-instance GoogleRequest ProjectsUpdateRemoteConfig
-         where
-        type Rs ProjectsUpdateRemoteConfig = RemoteConfig
-        type Scopes ProjectsUpdateRemoteConfig = '[]
-        requestClient ProjectsUpdateRemoteConfig'{..}
-          = go _purcProject _purcXgafv _purcValidateOnly
-              _purcUploadProtocol
-              (Just _purcPp)
-              _purcAccessToken
-              _purcUploadType
-              _purcBearerToken
-              _purcCallback
-              (Just AltJSON)
-              _purcPayload
-              firebaseRemoteConfigService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsUpdateRemoteConfigResource)
-                      mempty
diff --git a/gogol-firebaseremoteconfig.cabal b/gogol-firebaseremoteconfig.cabal
--- a/gogol-firebaseremoteconfig.cabal
+++ b/gogol-firebaseremoteconfig.cabal
@@ -1,48 +1,62 @@
-name:                  gogol-firebaseremoteconfig
-version:               0.5.0
-synopsis:              Google Firebase Remote Config SDK.
-homepage:              https://github.com/brendanhay/gogol
-bug-reports:           https://github.com/brendanhay/gogol/issues
-license:               OtherLicense
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2015-2016 Brendan Hay
-category:              Network, Google, Cloud
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md src/.gitkeep
+cabal-version:      2.2
+name:               gogol-firebaseremoteconfig
+version:            1.0.0
+synopsis:           Google Firebase Remote Config SDK.
+homepage:           https://github.com/brendanhay/gogol
+bug-reports:        https://github.com/brendanhay/gogol/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+gogol@gmail.com>, Toni Cebrián <toni@tonicebrian.com>
 
+copyright:          Copyright (c) 2015-2025 Brendan Hay
+category:           Google
+build-type:         Simple
+extra-source-files:
+  README.md
+  src/.gitkeep
+
 description:
-    Firebase Remote Config API allows the 3P clients to manage Remote Config
-    conditions and parameters for Firebase applications.
-    .
-    /Warning:/ This is an experimental prototype/preview release which is still
-    under exploratory development and not intended for public use, caveat emptor!
-    .
-    This library is compatible with version @v1@
-    of the API.
+  Firebase Remote Config API allows the 3P clients to manage Remote Config conditions and parameters for Firebase applications.
+  .
+  /Warning:/ This is an experimental prototype/preview release which is still
+  under exploratory development and not intended for public use, caveat emptor!
+  .
+  This library is compatible with version @v1@
+  of the API.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/gogol.git
+  type:     git
+  location: git://github.com/brendanhay/gogol.git
+  subdir:   gogol-firebaseremoteconfig
 
+flag field-selectors
+  description:
+    If record field selectors should be enabled. Disabling this requires GHC >=9.2 and the NoFieldSelectors extension.
+
+  default:     False
+  manual:      True
+
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
+  default-language: GHC2021
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
+    -fwarn-unused-packages
 
-    ghc-options:       -Wall
+  if (!flag(field-selectors) && impl(ghc >=9.2))
+    default-extensions: NoFieldSelectors
 
-    exposed-modules:
-          Network.Google.FirebaseRemoteConfig
-        , Network.Google.FirebaseRemoteConfig.Types
-        , Network.Google.Resource.FirebaseRemoteConfig.Projects.GetRemoteConfig
-        , Network.Google.Resource.FirebaseRemoteConfig.Projects.UpdateRemoteConfig
+  exposed-modules:
+    Gogol.FirebaseRemoteConfig
+    Gogol.FirebaseRemoteConfig.Projects.GetRemoteConfig
+    Gogol.FirebaseRemoteConfig.Projects.UpdateRemoteConfig
+    Gogol.FirebaseRemoteConfig.Types
 
-    other-modules:
-          Network.Google.FirebaseRemoteConfig.Types.Product
-        , Network.Google.FirebaseRemoteConfig.Types.Sum
+  other-modules:
+    Gogol.FirebaseRemoteConfig.Internal.Product
+    Gogol.FirebaseRemoteConfig.Internal.Sum
 
-    build-depends:
-          gogol-core == 0.5.0.*
-        , base       >= 4.7 && < 5
+  build-depends:    gogol-core ^>=1.0.0
