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/FirebaseRules.hs b/gen/Gogol/FirebaseRules.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules.hs
@@ -0,0 +1,234 @@
+{-# 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.FirebaseRules
+-- 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)
+--
+-- Creates and manages rules that determine when a Firebase Rules-enabled service should permit a request.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference>
+module Gogol.FirebaseRules
+  ( -- * Configuration
+    firebaseRulesService,
+
+    -- * OAuth Scopes
+    CloudPlatform'FullControl,
+    Firebase'FullControl,
+    Firebase'Readonly,
+
+    -- * Resources
+
+    -- ** firebaserules.projects.releases.create
+    FirebaseRulesProjectsReleasesCreateResource,
+    FirebaseRulesProjectsReleasesCreate (..),
+    newFirebaseRulesProjectsReleasesCreate,
+
+    -- ** firebaserules.projects.releases.delete
+    FirebaseRulesProjectsReleasesDeleteResource,
+    FirebaseRulesProjectsReleasesDelete (..),
+    newFirebaseRulesProjectsReleasesDelete,
+
+    -- ** firebaserules.projects.releases.get
+    FirebaseRulesProjectsReleasesGetResource,
+    FirebaseRulesProjectsReleasesGet (..),
+    newFirebaseRulesProjectsReleasesGet,
+
+    -- ** firebaserules.projects.releases.getExecutable
+    FirebaseRulesProjectsReleasesGetExecutableResource,
+    FirebaseRulesProjectsReleasesGetExecutable (..),
+    newFirebaseRulesProjectsReleasesGetExecutable,
+
+    -- ** firebaserules.projects.releases.list
+    FirebaseRulesProjectsReleasesListResource,
+    FirebaseRulesProjectsReleasesList (..),
+    newFirebaseRulesProjectsReleasesList,
+
+    -- ** firebaserules.projects.releases.patch
+    FirebaseRulesProjectsReleasesPatchResource,
+    FirebaseRulesProjectsReleasesPatch (..),
+    newFirebaseRulesProjectsReleasesPatch,
+
+    -- ** firebaserules.projects.rulesets.create
+    FirebaseRulesProjectsRulesetsCreateResource,
+    FirebaseRulesProjectsRulesetsCreate (..),
+    newFirebaseRulesProjectsRulesetsCreate,
+
+    -- ** firebaserules.projects.rulesets.delete
+    FirebaseRulesProjectsRulesetsDeleteResource,
+    FirebaseRulesProjectsRulesetsDelete (..),
+    newFirebaseRulesProjectsRulesetsDelete,
+
+    -- ** firebaserules.projects.rulesets.get
+    FirebaseRulesProjectsRulesetsGetResource,
+    FirebaseRulesProjectsRulesetsGet (..),
+    newFirebaseRulesProjectsRulesetsGet,
+
+    -- ** firebaserules.projects.rulesets.list
+    FirebaseRulesProjectsRulesetsListResource,
+    FirebaseRulesProjectsRulesetsList (..),
+    newFirebaseRulesProjectsRulesetsList,
+
+    -- ** firebaserules.projects.test
+    FirebaseRulesProjectsTestResource,
+    FirebaseRulesProjectsTest (..),
+    newFirebaseRulesProjectsTest,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** Arg
+    Arg (..),
+    newArg,
+
+    -- ** Empty
+    Empty (..),
+    newEmpty,
+
+    -- ** ExpressionReport
+    ExpressionReport (..),
+    newExpressionReport,
+
+    -- ** File
+    File (..),
+    newFile,
+
+    -- ** FunctionCall
+    FunctionCall (..),
+    newFunctionCall,
+
+    -- ** FunctionMock
+    FunctionMock (..),
+    newFunctionMock,
+
+    -- ** GetReleaseExecutableResponse
+    GetReleaseExecutableResponse (..),
+    newGetReleaseExecutableResponse,
+
+    -- ** GetReleaseExecutableResponse_ExecutableVersion
+    GetReleaseExecutableResponse_ExecutableVersion (..),
+
+    -- ** GetReleaseExecutableResponse_Language
+    GetReleaseExecutableResponse_Language (..),
+
+    -- ** Issue
+    Issue (..),
+    newIssue,
+
+    -- ** Issue_Severity
+    Issue_Severity (..),
+
+    -- ** ListReleasesResponse
+    ListReleasesResponse (..),
+    newListReleasesResponse,
+
+    -- ** ListRulesetsResponse
+    ListRulesetsResponse (..),
+    newListRulesetsResponse,
+
+    -- ** Metadata
+    Metadata (..),
+    newMetadata,
+
+    -- ** Release
+    Release (..),
+    newRelease,
+
+    -- ** Result
+    Result (..),
+    newResult,
+
+    -- ** Ruleset
+    Ruleset (..),
+    newRuleset,
+
+    -- ** Source
+    Source (..),
+    newSource,
+
+    -- ** SourcePosition
+    SourcePosition (..),
+    newSourcePosition,
+
+    -- ** TestCase
+    TestCase (..),
+    newTestCase,
+
+    -- ** TestCase_Expectation
+    TestCase_Expectation (..),
+
+    -- ** TestCase_ExpressionReportLevel
+    TestCase_ExpressionReportLevel (..),
+
+    -- ** TestCase_PathEncoding
+    TestCase_PathEncoding (..),
+
+    -- ** TestResult
+    TestResult (..),
+    newTestResult,
+
+    -- ** TestResult_State
+    TestResult_State (..),
+
+    -- ** TestRulesetRequest
+    TestRulesetRequest (..),
+    newTestRulesetRequest,
+
+    -- ** TestRulesetResponse
+    TestRulesetResponse (..),
+    newTestRulesetResponse,
+
+    -- ** TestSuite
+    TestSuite (..),
+    newTestSuite,
+
+    -- ** UpdateReleaseRequest
+    UpdateReleaseRequest (..),
+    newUpdateReleaseRequest,
+
+    -- ** ValueCount
+    ValueCount (..),
+    newValueCount,
+
+    -- ** VisitedExpression
+    VisitedExpression (..),
+    newVisitedExpression,
+
+    -- ** ProjectsReleasesGetExecutableExecutableVersion
+    ProjectsReleasesGetExecutableExecutableVersion (..),
+  )
+where
+
+import Gogol.FirebaseRules.Projects.Releases.Create
+import Gogol.FirebaseRules.Projects.Releases.Delete
+import Gogol.FirebaseRules.Projects.Releases.Get
+import Gogol.FirebaseRules.Projects.Releases.GetExecutable
+import Gogol.FirebaseRules.Projects.Releases.List
+import Gogol.FirebaseRules.Projects.Releases.Patch
+import Gogol.FirebaseRules.Projects.Rulesets.Create
+import Gogol.FirebaseRules.Projects.Rulesets.Delete
+import Gogol.FirebaseRules.Projects.Rulesets.Get
+import Gogol.FirebaseRules.Projects.Rulesets.List
+import Gogol.FirebaseRules.Projects.Test
+import Gogol.FirebaseRules.Types
diff --git a/gen/Gogol/FirebaseRules/Internal/Product.hs b/gen/Gogol/FirebaseRules/Internal/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Internal/Product.hs
@@ -0,0 +1,1103 @@
+{-# 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.FirebaseRules.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.FirebaseRules.Internal.Product
+  ( -- * Arg
+    Arg (..),
+    newArg,
+
+    -- * Empty
+    Empty (..),
+    newEmpty,
+
+    -- * ExpressionReport
+    ExpressionReport (..),
+    newExpressionReport,
+
+    -- * File
+    File (..),
+    newFile,
+
+    -- * FunctionCall
+    FunctionCall (..),
+    newFunctionCall,
+
+    -- * FunctionMock
+    FunctionMock (..),
+    newFunctionMock,
+
+    -- * GetReleaseExecutableResponse
+    GetReleaseExecutableResponse (..),
+    newGetReleaseExecutableResponse,
+
+    -- * Issue
+    Issue (..),
+    newIssue,
+
+    -- * ListReleasesResponse
+    ListReleasesResponse (..),
+    newListReleasesResponse,
+
+    -- * ListRulesetsResponse
+    ListRulesetsResponse (..),
+    newListRulesetsResponse,
+
+    -- * Metadata
+    Metadata (..),
+    newMetadata,
+
+    -- * Release
+    Release (..),
+    newRelease,
+
+    -- * Result
+    Result (..),
+    newResult,
+
+    -- * Ruleset
+    Ruleset (..),
+    newRuleset,
+
+    -- * Source
+    Source (..),
+    newSource,
+
+    -- * SourcePosition
+    SourcePosition (..),
+    newSourcePosition,
+
+    -- * TestCase
+    TestCase (..),
+    newTestCase,
+
+    -- * TestResult
+    TestResult (..),
+    newTestResult,
+
+    -- * TestRulesetRequest
+    TestRulesetRequest (..),
+    newTestRulesetRequest,
+
+    -- * TestRulesetResponse
+    TestRulesetResponse (..),
+    newTestRulesetResponse,
+
+    -- * TestSuite
+    TestSuite (..),
+    newTestSuite,
+
+    -- * UpdateReleaseRequest
+    UpdateReleaseRequest (..),
+    newUpdateReleaseRequest,
+
+    -- * ValueCount
+    ValueCount (..),
+    newValueCount,
+
+    -- * VisitedExpression
+    VisitedExpression (..),
+    newVisitedExpression,
+  )
+where
+
+import Gogol.FirebaseRules.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Arg matchers for the mock function.
+--
+-- /See:/ 'newArg' smart constructor.
+data Arg = Arg
+  { -- | Argument matches any value provided.
+    anyValue :: (Core.Maybe Empty),
+    -- | Argument exactly matches value provided.
+    exactValue :: (Core.Maybe Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Arg' with the minimum fields required to make a request.
+newArg ::
+  Arg
+newArg = Arg {anyValue = Core.Nothing, exactValue = Core.Nothing}
+
+instance Core.FromJSON Arg where
+  parseJSON =
+    Core.withObject
+      "Arg"
+      ( \o ->
+          Arg
+            Core.<$> (o Core..:? "anyValue")
+            Core.<*> (o Core..:? "exactValue")
+      )
+
+instance Core.ToJSON Arg where
+  toJSON Arg {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("anyValue" Core..=) Core.<$> anyValue,
+            ("exactValue" Core..=) Core.<$> exactValue
+          ]
+      )
+
+-- | A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
+--
+-- /See:/ 'newEmpty' smart constructor.
+data Empty = Empty
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Empty' with the minimum fields required to make a request.
+newEmpty ::
+  Empty
+newEmpty = Empty
+
+instance Core.FromJSON Empty where
+  parseJSON = Core.withObject "Empty" (\o -> Core.pure Empty)
+
+instance Core.ToJSON Empty where
+  toJSON = Core.const Core.emptyObject
+
+-- | Describes where in a file an expression is found and what it was evaluated to over the course of its use.
+--
+-- /See:/ 'newExpressionReport' smart constructor.
+data ExpressionReport = ExpressionReport
+  { -- | Subexpressions
+    children :: (Core.Maybe [ExpressionReport]),
+    -- | Position of expression in original rules source.
+    sourcePosition :: (Core.Maybe SourcePosition),
+    -- | Values that this expression evaluated to when encountered.
+    values :: (Core.Maybe [ValueCount])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ExpressionReport' with the minimum fields required to make a request.
+newExpressionReport ::
+  ExpressionReport
+newExpressionReport =
+  ExpressionReport
+    { children = Core.Nothing,
+      sourcePosition = Core.Nothing,
+      values = Core.Nothing
+    }
+
+instance Core.FromJSON ExpressionReport where
+  parseJSON =
+    Core.withObject
+      "ExpressionReport"
+      ( \o ->
+          ExpressionReport
+            Core.<$> (o Core..:? "children")
+            Core.<*> (o Core..:? "sourcePosition")
+            Core.<*> (o Core..:? "values")
+      )
+
+instance Core.ToJSON ExpressionReport where
+  toJSON ExpressionReport {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("children" Core..=) Core.<$> children,
+            ("sourcePosition" Core..=) Core.<$> sourcePosition,
+            ("values" Core..=) Core.<$> values
+          ]
+      )
+
+-- | @File@ containing source content.
+--
+-- /See:/ 'newFile' smart constructor.
+data File = File
+  { -- | Required. Textual Content.
+    content :: (Core.Maybe Core.Text),
+    -- | Fingerprint (e.g. github sha) associated with the @File@.
+    fingerprint :: (Core.Maybe Core.Base64),
+    -- | Required. File name.
+    name :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'File' with the minimum fields required to make a request.
+newFile ::
+  File
+newFile =
+  File
+    { content = Core.Nothing,
+      fingerprint = Core.Nothing,
+      name = Core.Nothing
+    }
+
+instance Core.FromJSON File where
+  parseJSON =
+    Core.withObject
+      "File"
+      ( \o ->
+          File
+            Core.<$> (o Core..:? "content")
+            Core.<*> (o Core..:? "fingerprint")
+            Core.<*> (o Core..:? "name")
+      )
+
+instance Core.ToJSON File where
+  toJSON File {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("content" Core..=) Core.<$> content,
+            ("fingerprint" Core..=) Core.<$> fingerprint,
+            ("name" Core..=) Core.<$> name
+          ]
+      )
+
+-- | Represents a service-defined function call that was invoked during test execution.
+--
+-- /See:/ 'newFunctionCall' smart constructor.
+data FunctionCall = FunctionCall
+  { -- | The arguments that were provided to the function.
+    args :: (Core.Maybe [Core.Value]),
+    -- | Name of the function invoked.
+    function :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FunctionCall' with the minimum fields required to make a request.
+newFunctionCall ::
+  FunctionCall
+newFunctionCall =
+  FunctionCall {args = Core.Nothing, function = Core.Nothing}
+
+instance Core.FromJSON FunctionCall where
+  parseJSON =
+    Core.withObject
+      "FunctionCall"
+      ( \o ->
+          FunctionCall
+            Core.<$> (o Core..:? "args")
+            Core.<*> (o Core..:? "function")
+      )
+
+instance Core.ToJSON FunctionCall where
+  toJSON FunctionCall {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("args" Core..=) Core.<$> args,
+            ("function" Core..=) Core.<$> function
+          ]
+      )
+
+-- | Mock function definition. Mocks must refer to a function declared by the target service. The type of the function args and result will be inferred at test time. If either the arg or result values are not compatible with function type declaration, the request will be considered invalid. More than one @FunctionMock@ may be provided for a given function name so long as the @Arg@ matchers are distinct. There may be only one function for a given overload where all @Arg@ values are @Arg.any_value@.
+--
+-- /See:/ 'newFunctionMock' smart constructor.
+data FunctionMock = FunctionMock
+  { -- | The list of @Arg@ values to match. The order in which the arguments are provided is the order in which they must appear in the function invocation.
+    args :: (Core.Maybe [Arg]),
+    -- | The name of the function. The function name must match one provided by a service declaration.
+    function :: (Core.Maybe Core.Text),
+    -- | The mock result of the function call.
+    result :: (Core.Maybe Result)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FunctionMock' with the minimum fields required to make a request.
+newFunctionMock ::
+  FunctionMock
+newFunctionMock =
+  FunctionMock
+    { args = Core.Nothing,
+      function = Core.Nothing,
+      result = Core.Nothing
+    }
+
+instance Core.FromJSON FunctionMock where
+  parseJSON =
+    Core.withObject
+      "FunctionMock"
+      ( \o ->
+          FunctionMock
+            Core.<$> (o Core..:? "args")
+            Core.<*> (o Core..:? "function")
+            Core.<*> (o Core..:? "result")
+      )
+
+instance Core.ToJSON FunctionMock where
+  toJSON FunctionMock {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("args" Core..=) Core.<$> args,
+            ("function" Core..=) Core.<$> function,
+            ("result" Core..=) Core.<$> result
+          ]
+      )
+
+-- | The response for FirebaseRulesService.GetReleaseExecutable
+--
+-- /See:/ 'newGetReleaseExecutableResponse' smart constructor.
+data GetReleaseExecutableResponse = GetReleaseExecutableResponse
+  { -- | Executable view of the @Ruleset@ referenced by the @Release@.
+    executable :: (Core.Maybe Core.Base64),
+    -- | The Rules runtime version of the executable.
+    executableVersion :: (Core.Maybe GetReleaseExecutableResponse_ExecutableVersion),
+    -- | @Language@ used to generate the executable bytes.
+    language :: (Core.Maybe GetReleaseExecutableResponse_Language),
+    -- | @Ruleset@ name associated with the @Release@ executable.
+    rulesetName :: (Core.Maybe Core.Text),
+    -- | Optional, indicates the freshness of the result. The response is guaranteed to be the latest within an interval up to the sync_time (inclusive).
+    syncTime :: (Core.Maybe Core.DateTime),
+    -- | Timestamp for the most recent @Release.update_time@.
+    updateTime :: (Core.Maybe Core.DateTime)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'GetReleaseExecutableResponse' with the minimum fields required to make a request.
+newGetReleaseExecutableResponse ::
+  GetReleaseExecutableResponse
+newGetReleaseExecutableResponse =
+  GetReleaseExecutableResponse
+    { executable = Core.Nothing,
+      executableVersion = Core.Nothing,
+      language = Core.Nothing,
+      rulesetName = Core.Nothing,
+      syncTime = Core.Nothing,
+      updateTime = Core.Nothing
+    }
+
+instance Core.FromJSON GetReleaseExecutableResponse where
+  parseJSON =
+    Core.withObject
+      "GetReleaseExecutableResponse"
+      ( \o ->
+          GetReleaseExecutableResponse
+            Core.<$> (o Core..:? "executable")
+            Core.<*> (o Core..:? "executableVersion")
+            Core.<*> (o Core..:? "language")
+            Core.<*> (o Core..:? "rulesetName")
+            Core.<*> (o Core..:? "syncTime")
+            Core.<*> (o Core..:? "updateTime")
+      )
+
+instance Core.ToJSON GetReleaseExecutableResponse where
+  toJSON GetReleaseExecutableResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("executable" Core..=) Core.<$> executable,
+            ("executableVersion" Core..=) Core.<$> executableVersion,
+            ("language" Core..=) Core.<$> language,
+            ("rulesetName" Core..=) Core.<$> rulesetName,
+            ("syncTime" Core..=) Core.<$> syncTime,
+            ("updateTime" Core..=) Core.<$> updateTime
+          ]
+      )
+
+-- | Issues include warnings, errors, and deprecation notices.
+--
+-- /See:/ 'newIssue' smart constructor.
+data Issue = Issue
+  { -- | Short error description.
+    description :: (Core.Maybe Core.Text),
+    -- | The severity of the issue.
+    severity :: (Core.Maybe Issue_Severity),
+    -- | Position of the issue in the @Source@.
+    sourcePosition :: (Core.Maybe SourcePosition)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Issue' with the minimum fields required to make a request.
+newIssue ::
+  Issue
+newIssue =
+  Issue
+    { description = Core.Nothing,
+      severity = Core.Nothing,
+      sourcePosition = Core.Nothing
+    }
+
+instance Core.FromJSON Issue where
+  parseJSON =
+    Core.withObject
+      "Issue"
+      ( \o ->
+          Issue
+            Core.<$> (o Core..:? "description")
+            Core.<*> (o Core..:? "severity")
+            Core.<*> (o Core..:? "sourcePosition")
+      )
+
+instance Core.ToJSON Issue where
+  toJSON Issue {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("description" Core..=) Core.<$> description,
+            ("severity" Core..=) Core.<$> severity,
+            ("sourcePosition" Core..=) Core.<$> sourcePosition
+          ]
+      )
+
+-- | The response for FirebaseRulesService.ListReleases.
+--
+-- /See:/ 'newListReleasesResponse' smart constructor.
+data ListReleasesResponse = ListReleasesResponse
+  { -- | The pagination token to retrieve the next page of results. If the value is empty, no further results remain.
+    nextPageToken :: (Core.Maybe Core.Text),
+    -- | List of @Release@ instances.
+    releases :: (Core.Maybe [Release])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListReleasesResponse' with the minimum fields required to make a request.
+newListReleasesResponse ::
+  ListReleasesResponse
+newListReleasesResponse =
+  ListReleasesResponse
+    { nextPageToken = Core.Nothing,
+      releases = Core.Nothing
+    }
+
+instance Core.FromJSON ListReleasesResponse where
+  parseJSON =
+    Core.withObject
+      "ListReleasesResponse"
+      ( \o ->
+          ListReleasesResponse
+            Core.<$> (o Core..:? "nextPageToken")
+            Core.<*> (o Core..:? "releases")
+      )
+
+instance Core.ToJSON ListReleasesResponse where
+  toJSON ListReleasesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("nextPageToken" Core..=) Core.<$> nextPageToken,
+            ("releases" Core..=) Core.<$> releases
+          ]
+      )
+
+-- | The response for FirebaseRulesService.ListRulesets.
+--
+-- /See:/ 'newListRulesetsResponse' smart constructor.
+data ListRulesetsResponse = ListRulesetsResponse
+  { -- | The pagination token to retrieve the next page of results. If the value is empty, no further results remain.
+    nextPageToken :: (Core.Maybe Core.Text),
+    -- | List of @Ruleset@ instances.
+    rulesets :: (Core.Maybe [Ruleset])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListRulesetsResponse' with the minimum fields required to make a request.
+newListRulesetsResponse ::
+  ListRulesetsResponse
+newListRulesetsResponse =
+  ListRulesetsResponse
+    { nextPageToken = Core.Nothing,
+      rulesets = Core.Nothing
+    }
+
+instance Core.FromJSON ListRulesetsResponse where
+  parseJSON =
+    Core.withObject
+      "ListRulesetsResponse"
+      ( \o ->
+          ListRulesetsResponse
+            Core.<$> (o Core..:? "nextPageToken")
+            Core.<*> (o Core..:? "rulesets")
+      )
+
+instance Core.ToJSON ListRulesetsResponse where
+  toJSON ListRulesetsResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("nextPageToken" Core..=) Core.<$> nextPageToken,
+            ("rulesets" Core..=) Core.<$> rulesets
+          ]
+      )
+
+-- | Metadata for a Ruleset.
+--
+-- /See:/ 'newMetadata' smart constructor.
+newtype Metadata = Metadata
+  { -- | Services that this ruleset has declarations for (e.g., \"cloud.firestore\"). There may be 0+ of these.
+    services :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Metadata' with the minimum fields required to make a request.
+newMetadata ::
+  Metadata
+newMetadata = Metadata {services = Core.Nothing}
+
+instance Core.FromJSON Metadata where
+  parseJSON =
+    Core.withObject
+      "Metadata"
+      (\o -> Metadata Core.<$> (o Core..:? "services"))
+
+instance Core.ToJSON Metadata where
+  toJSON Metadata {..} =
+    Core.object
+      (Core.catMaybes [("services" Core..=) Core.<$> services])
+
+-- | @Release@ is a named reference to a @Ruleset@. Once a @Release@ refers to a @Ruleset@, rules-enabled services will be able to enforce the @Ruleset@.
+--
+-- /See:/ 'newRelease' smart constructor.
+data Release = Release
+  { -- | Output only. Time the release was created.
+    createTime :: (Core.Maybe Core.DateTime),
+    -- | Required. Format: @projects\/{project_id}\/releases\/{release_id}@
+    name :: (Core.Maybe Core.Text),
+    -- | Required. Name of the @Ruleset@ referred to by this @Release@. The @Ruleset@ must exist for the @Release@ to be created.
+    rulesetName :: (Core.Maybe Core.Text),
+    -- | Output only. Time the release was updated.
+    updateTime :: (Core.Maybe Core.DateTime)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Release' with the minimum fields required to make a request.
+newRelease ::
+  Release
+newRelease =
+  Release
+    { createTime = Core.Nothing,
+      name = Core.Nothing,
+      rulesetName = Core.Nothing,
+      updateTime = Core.Nothing
+    }
+
+instance Core.FromJSON Release where
+  parseJSON =
+    Core.withObject
+      "Release"
+      ( \o ->
+          Release
+            Core.<$> (o Core..:? "createTime")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "rulesetName")
+            Core.<*> (o Core..:? "updateTime")
+      )
+
+instance Core.ToJSON Release where
+  toJSON Release {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("createTime" Core..=) Core.<$> createTime,
+            ("name" Core..=) Core.<$> name,
+            ("rulesetName" Core..=) Core.<$> rulesetName,
+            ("updateTime" Core..=) Core.<$> updateTime
+          ]
+      )
+
+-- | Possible result values from the function mock invocation.
+--
+-- /See:/ 'newResult' smart constructor.
+data Result = Result
+  { -- | The result is undefined, meaning the result could not be computed.
+    undefined :: (Core.Maybe Empty),
+    -- | The result is an actual value. The type of the value must match that of the type declared by the service.
+    value :: (Core.Maybe Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Result' with the minimum fields required to make a request.
+newResult ::
+  Result
+newResult = Result {undefined = Core.Nothing, value = Core.Nothing}
+
+instance Core.FromJSON Result where
+  parseJSON =
+    Core.withObject
+      "Result"
+      ( \o ->
+          Result
+            Core.<$> (o Core..:? "undefined")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON Result where
+  toJSON Result {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("undefined" Core..=) Core.<$> undefined,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | @Ruleset@ is an immutable copy of @Source@ with a globally unique identifier and a creation time.
+--
+-- /See:/ 'newRuleset' smart constructor.
+data Ruleset = Ruleset
+  { -- | Immutable. Intended resource to which this Ruleset should be released. May be left blank to signify the resource associated with the default release. Expected format: firestore.googleapis.com\/projects\/\/databases\/
+    attachmentPoint :: (Core.Maybe Core.Text),
+    -- | Output only. Time the @Ruleset@ was created.
+    createTime :: (Core.Maybe Core.DateTime),
+    -- | Output only. The metadata for this ruleset.
+    metadata :: (Core.Maybe Metadata),
+    -- | Output only. Name of the @Ruleset@. The ruleset_id is auto generated by the service. Format: @projects\/{project_id}\/rulesets\/{ruleset_id}@
+    name :: (Core.Maybe Core.Text),
+    -- | Required. @Source@ for the @Ruleset@.
+    source :: (Core.Maybe Source)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Ruleset' with the minimum fields required to make a request.
+newRuleset ::
+  Ruleset
+newRuleset =
+  Ruleset
+    { attachmentPoint = Core.Nothing,
+      createTime = Core.Nothing,
+      metadata = Core.Nothing,
+      name = Core.Nothing,
+      source = Core.Nothing
+    }
+
+instance Core.FromJSON Ruleset where
+  parseJSON =
+    Core.withObject
+      "Ruleset"
+      ( \o ->
+          Ruleset
+            Core.<$> (o Core..:? "attachmentPoint")
+            Core.<*> (o Core..:? "createTime")
+            Core.<*> (o Core..:? "metadata")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "source")
+      )
+
+instance Core.ToJSON Ruleset where
+  toJSON Ruleset {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("attachmentPoint" Core..=) Core.<$> attachmentPoint,
+            ("createTime" Core..=) Core.<$> createTime,
+            ("metadata" Core..=) Core.<$> metadata,
+            ("name" Core..=) Core.<$> name,
+            ("source" Core..=) Core.<$> source
+          ]
+      )
+
+-- | @Source@ is one or more @File@ messages comprising a logical set of rules.
+--
+-- /See:/ 'newSource' smart constructor.
+newtype Source = Source
+  { -- | Required. @File@ set constituting the @Source@ bundle.
+    files :: (Core.Maybe [File])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Source' with the minimum fields required to make a request.
+newSource ::
+  Source
+newSource = Source {files = Core.Nothing}
+
+instance Core.FromJSON Source where
+  parseJSON =
+    Core.withObject
+      "Source"
+      (\o -> Source Core.<$> (o Core..:? "files"))
+
+instance Core.ToJSON Source where
+  toJSON Source {..} =
+    Core.object (Core.catMaybes [("files" Core..=) Core.<$> files])
+
+-- | Position in the @Source@ content including its line, column number, and an index of the @File@ in the @Source@ message. Used for debug purposes.
+--
+-- /See:/ 'newSourcePosition' smart constructor.
+data SourcePosition = SourcePosition
+  { -- | First column on the source line associated with the source fragment.
+    column :: (Core.Maybe Core.Int32),
+    -- | Start position relative to the beginning of the file.
+    currentOffset :: (Core.Maybe Core.Int32),
+    -- | End position relative to the beginning of the file.
+    endOffset :: (Core.Maybe Core.Int32),
+    -- | Name of the @File@.
+    fileName :: (Core.Maybe Core.Text),
+    -- | Line number of the source fragment. 1-based.
+    line :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'SourcePosition' with the minimum fields required to make a request.
+newSourcePosition ::
+  SourcePosition
+newSourcePosition =
+  SourcePosition
+    { column = Core.Nothing,
+      currentOffset = Core.Nothing,
+      endOffset = Core.Nothing,
+      fileName = Core.Nothing,
+      line = Core.Nothing
+    }
+
+instance Core.FromJSON SourcePosition where
+  parseJSON =
+    Core.withObject
+      "SourcePosition"
+      ( \o ->
+          SourcePosition
+            Core.<$> (o Core..:? "column")
+            Core.<*> (o Core..:? "currentOffset")
+            Core.<*> (o Core..:? "endOffset")
+            Core.<*> (o Core..:? "fileName")
+            Core.<*> (o Core..:? "line")
+      )
+
+instance Core.ToJSON SourcePosition where
+  toJSON SourcePosition {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("column" Core..=) Core.<$> column,
+            ("currentOffset" Core..=) Core.<$> currentOffset,
+            ("endOffset" Core..=) Core.<$> endOffset,
+            ("fileName" Core..=) Core.<$> fileName,
+            ("line" Core..=) Core.<$> line
+          ]
+      )
+
+-- | @TestCase@ messages provide the request context and an expectation as to whether the given context will be allowed or denied. Test cases may specify the @request@, @resource@, and @function_mocks@ to mock a function call to a service-provided function. The @request@ object represents context present at request-time. The @resource@ is the value of the target resource as it appears in persistent storage before the request is executed.
+--
+-- /See:/ 'newTestCase' smart constructor.
+data TestCase = TestCase
+  { -- | Test expectation.
+    expectation :: (Core.Maybe TestCase_Expectation),
+    -- | Specifies what should be included in the response.
+    expressionReportLevel :: (Core.Maybe TestCase_ExpressionReportLevel),
+    -- | Optional function mocks for service-defined functions. If not set, any service defined function is expected to return an error, which may or may not influence the test outcome.
+    functionMocks :: (Core.Maybe [FunctionMock]),
+    -- | Specifies whether paths (such as request.path) are encoded and how.
+    pathEncoding :: (Core.Maybe TestCase_PathEncoding),
+    -- | Request context. The exact format of the request context is service-dependent. See the appropriate service documentation for information about the supported fields and types on the request. Minimally, all services support the following fields and types: Request field | Type ---------------|----------------- auth.uid | @string@ auth.token | @map@ headers | @map@ method | @string@ params | @map@ path | @string@ time | @google.protobuf.Timestamp@ If the request value is not well-formed for the service, the request will be rejected as an invalid argument.
+    request' :: (Core.Maybe Core.Value),
+    -- | Optional resource value as it appears in persistent storage before the request is fulfilled. The resource type depends on the @request.path@ value.
+    resource :: (Core.Maybe Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TestCase' with the minimum fields required to make a request.
+newTestCase ::
+  TestCase
+newTestCase =
+  TestCase
+    { expectation = Core.Nothing,
+      expressionReportLevel = Core.Nothing,
+      functionMocks = Core.Nothing,
+      pathEncoding = Core.Nothing,
+      request' = Core.Nothing,
+      resource = Core.Nothing
+    }
+
+instance Core.FromJSON TestCase where
+  parseJSON =
+    Core.withObject
+      "TestCase"
+      ( \o ->
+          TestCase
+            Core.<$> (o Core..:? "expectation")
+            Core.<*> (o Core..:? "expressionReportLevel")
+            Core.<*> (o Core..:? "functionMocks")
+            Core.<*> (o Core..:? "pathEncoding")
+            Core.<*> (o Core..:? "request")
+            Core.<*> (o Core..:? "resource")
+      )
+
+instance Core.ToJSON TestCase where
+  toJSON TestCase {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("expectation" Core..=) Core.<$> expectation,
+            ("expressionReportLevel" Core..=) Core.<$> expressionReportLevel,
+            ("functionMocks" Core..=) Core.<$> functionMocks,
+            ("pathEncoding" Core..=) Core.<$> pathEncoding,
+            ("request" Core..=) Core.<$> request',
+            ("resource" Core..=) Core.<$> resource
+          ]
+      )
+
+-- | Test result message containing the state of the test as well as a description and source position for test failures.
+--
+-- /See:/ 'newTestResult' smart constructor.
+data TestResult = TestResult
+  { -- | Debug messages related to test execution issues encountered during evaluation. Debug messages may be related to too many or too few invocations of function mocks or to runtime errors that occur during evaluation. For example: @Unable to read variable [name: \"resource\"]@
+    debugMessages :: (Core.Maybe [Core.Text]),
+    -- | Position in the @Source@ or @Ruleset@ where the principle runtime error occurs. Evaluation of an expression may result in an error. Rules are deny by default, so a @DENY@ expectation when an error is generated is valid. When there is a @DENY@ with an error, the @SourcePosition@ is returned. E.g. @error_position { line: 19 column: 37 }@
+    errorPosition :: (Core.Maybe SourcePosition),
+    -- | The mapping from expression in the ruleset AST to the values they were evaluated to. Partially-nested to mirror AST structure. Note that this field is actually tracking expressions and not permission statements in contrast to the \"visited_expressions\" field above. Literal expressions are omitted.
+    expressionReports :: (Core.Maybe [ExpressionReport]),
+    -- | The set of function calls made to service-defined methods. Function calls are included in the order in which they are encountered during evaluation, are provided for both mocked and unmocked functions, and included on the response regardless of the test @state@.
+    functionCalls :: (Core.Maybe [FunctionCall]),
+    -- | State of the test.
+    state :: (Core.Maybe TestResult_State),
+    -- | The set of visited permission expressions for a given test. This returns the positions and evaluation results of all visited permission expressions which were relevant to the test case, e.g. @match \/path { allow read if: }@ For a detailed report of the intermediate evaluation states, see the @expression_reports@ field
+    visitedExpressions :: (Core.Maybe [VisitedExpression])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TestResult' with the minimum fields required to make a request.
+newTestResult ::
+  TestResult
+newTestResult =
+  TestResult
+    { debugMessages = Core.Nothing,
+      errorPosition = Core.Nothing,
+      expressionReports = Core.Nothing,
+      functionCalls = Core.Nothing,
+      state = Core.Nothing,
+      visitedExpressions = Core.Nothing
+    }
+
+instance Core.FromJSON TestResult where
+  parseJSON =
+    Core.withObject
+      "TestResult"
+      ( \o ->
+          TestResult
+            Core.<$> (o Core..:? "debugMessages")
+            Core.<*> (o Core..:? "errorPosition")
+            Core.<*> (o Core..:? "expressionReports")
+            Core.<*> (o Core..:? "functionCalls")
+            Core.<*> (o Core..:? "state")
+            Core.<*> (o Core..:? "visitedExpressions")
+      )
+
+instance Core.ToJSON TestResult where
+  toJSON TestResult {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("debugMessages" Core..=) Core.<$> debugMessages,
+            ("errorPosition" Core..=) Core.<$> errorPosition,
+            ("expressionReports" Core..=) Core.<$> expressionReports,
+            ("functionCalls" Core..=) Core.<$> functionCalls,
+            ("state" Core..=) Core.<$> state,
+            ("visitedExpressions" Core..=) Core.<$> visitedExpressions
+          ]
+      )
+
+-- | The request for FirebaseRulesService.TestRuleset.
+--
+-- /See:/ 'newTestRulesetRequest' smart constructor.
+data TestRulesetRequest = TestRulesetRequest
+  { -- | Optional. Optional @Source@ to be checked for correctness. This field must not be set when the resource name refers to a @Ruleset@.
+    source :: (Core.Maybe Source),
+    -- | Required. The tests to execute against the @Source@. When @Source@ is provided inline, the test cases will only be run if the @Source@ is syntactically and semantically valid. Inline @TestSuite@ to run.
+    testSuite :: (Core.Maybe TestSuite)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TestRulesetRequest' with the minimum fields required to make a request.
+newTestRulesetRequest ::
+  TestRulesetRequest
+newTestRulesetRequest =
+  TestRulesetRequest
+    { source = Core.Nothing,
+      testSuite = Core.Nothing
+    }
+
+instance Core.FromJSON TestRulesetRequest where
+  parseJSON =
+    Core.withObject
+      "TestRulesetRequest"
+      ( \o ->
+          TestRulesetRequest
+            Core.<$> (o Core..:? "source")
+            Core.<*> (o Core..:? "testSuite")
+      )
+
+instance Core.ToJSON TestRulesetRequest where
+  toJSON TestRulesetRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("source" Core..=) Core.<$> source,
+            ("testSuite" Core..=) Core.<$> testSuite
+          ]
+      )
+
+-- | The response for FirebaseRulesService.TestRuleset.
+--
+-- /See:/ 'newTestRulesetResponse' smart constructor.
+data TestRulesetResponse = TestRulesetResponse
+  { -- | Syntactic and semantic @Source@ issues of varying severity. Issues of @ERROR@ severity will prevent tests from executing.
+    issues :: (Core.Maybe [Issue]),
+    -- | The set of test results given the test cases in the @TestSuite@. The results will appear in the same order as the test cases appear in the @TestSuite@.
+    testResults :: (Core.Maybe [TestResult])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TestRulesetResponse' with the minimum fields required to make a request.
+newTestRulesetResponse ::
+  TestRulesetResponse
+newTestRulesetResponse =
+  TestRulesetResponse
+    { issues = Core.Nothing,
+      testResults = Core.Nothing
+    }
+
+instance Core.FromJSON TestRulesetResponse where
+  parseJSON =
+    Core.withObject
+      "TestRulesetResponse"
+      ( \o ->
+          TestRulesetResponse
+            Core.<$> (o Core..:? "issues")
+            Core.<*> (o Core..:? "testResults")
+      )
+
+instance Core.ToJSON TestRulesetResponse where
+  toJSON TestRulesetResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("issues" Core..=) Core.<$> issues,
+            ("testResults" Core..=) Core.<$> testResults
+          ]
+      )
+
+-- | @TestSuite@ is a collection of @TestCase@ instances that validate the logical correctness of a @Ruleset@. The @TestSuite@ may be referenced in-line within a @TestRuleset@ invocation or as part of a @Release@ object as a pre-release check.
+--
+-- /See:/ 'newTestSuite' smart constructor.
+newtype TestSuite = TestSuite
+  { -- | Collection of test cases associated with the @TestSuite@.
+    testCases :: (Core.Maybe [TestCase])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'TestSuite' with the minimum fields required to make a request.
+newTestSuite ::
+  TestSuite
+newTestSuite = TestSuite {testCases = Core.Nothing}
+
+instance Core.FromJSON TestSuite where
+  parseJSON =
+    Core.withObject
+      "TestSuite"
+      (\o -> TestSuite Core.<$> (o Core..:? "testCases"))
+
+instance Core.ToJSON TestSuite where
+  toJSON TestSuite {..} =
+    Core.object
+      (Core.catMaybes [("testCases" Core..=) Core.<$> testCases])
+
+-- | The request for FirebaseRulesService.UpdateRelease.
+--
+-- /See:/ 'newUpdateReleaseRequest' smart constructor.
+data UpdateReleaseRequest = UpdateReleaseRequest
+  { -- | Required. @Release@ to update.
+    release :: (Core.Maybe Release),
+    -- | Optional. Specifies which fields to update.
+    updateMask :: (Core.Maybe Core.FieldMask)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'UpdateReleaseRequest' with the minimum fields required to make a request.
+newUpdateReleaseRequest ::
+  UpdateReleaseRequest
+newUpdateReleaseRequest =
+  UpdateReleaseRequest
+    { release = Core.Nothing,
+      updateMask = Core.Nothing
+    }
+
+instance Core.FromJSON UpdateReleaseRequest where
+  parseJSON =
+    Core.withObject
+      "UpdateReleaseRequest"
+      ( \o ->
+          UpdateReleaseRequest
+            Core.<$> (o Core..:? "release")
+            Core.<*> (o Core..:? "updateMask")
+      )
+
+instance Core.ToJSON UpdateReleaseRequest where
+  toJSON UpdateReleaseRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("release" Core..=) Core.<$> release,
+            ("updateMask" Core..=) Core.<$> updateMask
+          ]
+      )
+
+-- | Tuple for how many times an Expression was evaluated to a particular ExpressionValue.
+--
+-- /See:/ 'newValueCount' smart constructor.
+data ValueCount = ValueCount
+  { -- | The amount of times that expression returned.
+    count :: (Core.Maybe Core.Int32),
+    -- | The return value of the expression
+    value :: (Core.Maybe Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ValueCount' with the minimum fields required to make a request.
+newValueCount ::
+  ValueCount
+newValueCount =
+  ValueCount {count = Core.Nothing, value = Core.Nothing}
+
+instance Core.FromJSON ValueCount where
+  parseJSON =
+    Core.withObject
+      "ValueCount"
+      ( \o ->
+          ValueCount
+            Core.<$> (o Core..:? "count")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON ValueCount where
+  toJSON ValueCount {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("count" Core..=) Core.<$> count,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | Store the position and access outcome for an expression visited in rules.
+--
+-- /See:/ 'newVisitedExpression' smart constructor.
+data VisitedExpression = VisitedExpression
+  { -- | Position in the @Source@ or @Ruleset@ where an expression was visited.
+    sourcePosition :: (Core.Maybe SourcePosition),
+    -- | The evaluated value for the visited expression, e.g. true\/false
+    value :: (Core.Maybe Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'VisitedExpression' with the minimum fields required to make a request.
+newVisitedExpression ::
+  VisitedExpression
+newVisitedExpression =
+  VisitedExpression
+    { sourcePosition = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON VisitedExpression where
+  parseJSON =
+    Core.withObject
+      "VisitedExpression"
+      ( \o ->
+          VisitedExpression
+            Core.<$> (o Core..:? "sourcePosition")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON VisitedExpression where
+  toJSON VisitedExpression {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("sourcePosition" Core..=) Core.<$> sourcePosition,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
diff --git a/gen/Gogol/FirebaseRules/Internal/Sum.hs b/gen/Gogol/FirebaseRules/Internal/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Internal/Sum.hs
@@ -0,0 +1,395 @@
+{-# 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.FirebaseRules.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.FirebaseRules.Internal.Sum
+  ( -- * Xgafv
+    Xgafv
+      ( Xgafv_1,
+        Xgafv_2,
+        ..
+      ),
+
+    -- * GetReleaseExecutableResponse_ExecutableVersion
+    GetReleaseExecutableResponse_ExecutableVersion
+      ( GetReleaseExecutableResponse_ExecutableVersion_RELEASEEXECUTABLEVERSIONUNSPECIFIED,
+        GetReleaseExecutableResponse_ExecutableVersion_FIREBASE_RULES_EXECUTABLE_V1,
+        GetReleaseExecutableResponse_ExecutableVersion_FIREBASE_RULES_EXECUTABLE_V2,
+        ..
+      ),
+
+    -- * GetReleaseExecutableResponse_Language
+    GetReleaseExecutableResponse_Language
+      ( GetReleaseExecutableResponse_Language_LANGUAGEUNSPECIFIED,
+        GetReleaseExecutableResponse_Language_FIREBASERULES,
+        GetReleaseExecutableResponse_Language_EVENTFLOWTRIGGERS,
+        ..
+      ),
+
+    -- * Issue_Severity
+    Issue_Severity
+      ( Issue_Severity_SEVERITYUNSPECIFIED,
+        Issue_Severity_Deprecation,
+        Issue_Severity_Warning,
+        Issue_Severity_Error',
+        ..
+      ),
+
+    -- * TestCase_Expectation
+    TestCase_Expectation
+      ( TestCase_Expectation_EXPECTATIONUNSPECIFIED,
+        TestCase_Expectation_Allow,
+        TestCase_Expectation_Deny,
+        ..
+      ),
+
+    -- * TestCase_ExpressionReportLevel
+    TestCase_ExpressionReportLevel
+      ( TestCase_ExpressionReportLevel_LEVELUNSPECIFIED,
+        TestCase_ExpressionReportLevel_None,
+        TestCase_ExpressionReportLevel_Full,
+        TestCase_ExpressionReportLevel_Visited,
+        ..
+      ),
+
+    -- * TestCase_PathEncoding
+    TestCase_PathEncoding
+      ( TestCase_PathEncoding_ENCODINGUNSPECIFIED,
+        TestCase_PathEncoding_URLENCODED,
+        TestCase_PathEncoding_Plain,
+        ..
+      ),
+
+    -- * TestResult_State
+    TestResult_State
+      ( TestResult_State_STATEUNSPECIFIED,
+        TestResult_State_Success,
+        TestResult_State_Failure,
+        ..
+      ),
+
+    -- * ProjectsReleasesGetExecutableExecutableVersion
+    ProjectsReleasesGetExecutableExecutableVersion
+      ( ProjectsReleasesGetExecutableExecutableVersion_RELEASEEXECUTABLEVERSIONUNSPECIFIED,
+        ProjectsReleasesGetExecutableExecutableVersion_FIREBASE_RULES_EXECUTABLE_V1,
+        ProjectsReleasesGetExecutableExecutableVersion_FIREBASE_RULES_EXECUTABLE_V2,
+        ..
+      ),
+  )
+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
+  #-}
+
+-- | The Rules runtime version of the executable.
+newtype GetReleaseExecutableResponse_ExecutableVersion = GetReleaseExecutableResponse_ExecutableVersion {fromGetReleaseExecutableResponse_ExecutableVersion :: 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
+    )
+
+-- | Executable format unspecified. Defaults to FIREBASE/RULES/EXECUTABLE_V1
+pattern GetReleaseExecutableResponse_ExecutableVersion_RELEASEEXECUTABLEVERSIONUNSPECIFIED :: GetReleaseExecutableResponse_ExecutableVersion
+pattern GetReleaseExecutableResponse_ExecutableVersion_RELEASEEXECUTABLEVERSIONUNSPECIFIED = GetReleaseExecutableResponse_ExecutableVersion "RELEASE_EXECUTABLE_VERSION_UNSPECIFIED"
+
+-- | Firebase Rules syntax \'rules2\' executable versions: Custom AST for use with Java clients.
+pattern GetReleaseExecutableResponse_ExecutableVersion_FIREBASE_RULES_EXECUTABLE_V1 :: GetReleaseExecutableResponse_ExecutableVersion
+pattern GetReleaseExecutableResponse_ExecutableVersion_FIREBASE_RULES_EXECUTABLE_V1 = GetReleaseExecutableResponse_ExecutableVersion "FIREBASE_RULES_EXECUTABLE_V1"
+
+-- | CEL-based executable for use with C++ clients.
+pattern GetReleaseExecutableResponse_ExecutableVersion_FIREBASE_RULES_EXECUTABLE_V2 :: GetReleaseExecutableResponse_ExecutableVersion
+pattern GetReleaseExecutableResponse_ExecutableVersion_FIREBASE_RULES_EXECUTABLE_V2 = GetReleaseExecutableResponse_ExecutableVersion "FIREBASE_RULES_EXECUTABLE_V2"
+
+{-# COMPLETE
+  GetReleaseExecutableResponse_ExecutableVersion_RELEASEEXECUTABLEVERSIONUNSPECIFIED,
+  GetReleaseExecutableResponse_ExecutableVersion_FIREBASE_RULES_EXECUTABLE_V1,
+  GetReleaseExecutableResponse_ExecutableVersion_FIREBASE_RULES_EXECUTABLE_V2,
+  GetReleaseExecutableResponse_ExecutableVersion
+  #-}
+
+-- | @Language@ used to generate the executable bytes.
+newtype GetReleaseExecutableResponse_Language = GetReleaseExecutableResponse_Language {fromGetReleaseExecutableResponse_Language :: 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
+    )
+
+-- | Language unspecified. Defaults to FIREBASE_RULES.
+pattern GetReleaseExecutableResponse_Language_LANGUAGEUNSPECIFIED :: GetReleaseExecutableResponse_Language
+pattern GetReleaseExecutableResponse_Language_LANGUAGEUNSPECIFIED = GetReleaseExecutableResponse_Language "LANGUAGE_UNSPECIFIED"
+
+-- | Firebase Rules language.
+pattern GetReleaseExecutableResponse_Language_FIREBASERULES :: GetReleaseExecutableResponse_Language
+pattern GetReleaseExecutableResponse_Language_FIREBASERULES = GetReleaseExecutableResponse_Language "FIREBASE_RULES"
+
+-- | Event Flow triggers.
+pattern GetReleaseExecutableResponse_Language_EVENTFLOWTRIGGERS :: GetReleaseExecutableResponse_Language
+pattern GetReleaseExecutableResponse_Language_EVENTFLOWTRIGGERS = GetReleaseExecutableResponse_Language "EVENT_FLOW_TRIGGERS"
+
+{-# COMPLETE
+  GetReleaseExecutableResponse_Language_LANGUAGEUNSPECIFIED,
+  GetReleaseExecutableResponse_Language_FIREBASERULES,
+  GetReleaseExecutableResponse_Language_EVENTFLOWTRIGGERS,
+  GetReleaseExecutableResponse_Language
+  #-}
+
+-- | The severity of the issue.
+newtype Issue_Severity = Issue_Severity {fromIssue_Severity :: 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
+    )
+
+-- | An unspecified severity.
+pattern Issue_Severity_SEVERITYUNSPECIFIED :: Issue_Severity
+pattern Issue_Severity_SEVERITYUNSPECIFIED = Issue_Severity "SEVERITY_UNSPECIFIED"
+
+-- | Deprecation issue for statements and method that may no longer be supported or maintained.
+pattern Issue_Severity_Deprecation :: Issue_Severity
+pattern Issue_Severity_Deprecation = Issue_Severity "DEPRECATION"
+
+-- | Warnings such as: unused variables.
+pattern Issue_Severity_Warning :: Issue_Severity
+pattern Issue_Severity_Warning = Issue_Severity "WARNING"
+
+-- | Errors such as: unmatched curly braces or variable redefinition.
+pattern Issue_Severity_Error' :: Issue_Severity
+pattern Issue_Severity_Error' = Issue_Severity "ERROR"
+
+{-# COMPLETE
+  Issue_Severity_SEVERITYUNSPECIFIED,
+  Issue_Severity_Deprecation,
+  Issue_Severity_Warning,
+  Issue_Severity_Error',
+  Issue_Severity
+  #-}
+
+-- | Test expectation.
+newtype TestCase_Expectation = TestCase_Expectation {fromTestCase_Expectation :: 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
+    )
+
+-- | Unspecified expectation.
+pattern TestCase_Expectation_EXPECTATIONUNSPECIFIED :: TestCase_Expectation
+pattern TestCase_Expectation_EXPECTATIONUNSPECIFIED = TestCase_Expectation "EXPECTATION_UNSPECIFIED"
+
+-- | Expect an allowed result.
+pattern TestCase_Expectation_Allow :: TestCase_Expectation
+pattern TestCase_Expectation_Allow = TestCase_Expectation "ALLOW"
+
+-- | Expect a denied result.
+pattern TestCase_Expectation_Deny :: TestCase_Expectation
+pattern TestCase_Expectation_Deny = TestCase_Expectation "DENY"
+
+{-# COMPLETE
+  TestCase_Expectation_EXPECTATIONUNSPECIFIED,
+  TestCase_Expectation_Allow,
+  TestCase_Expectation_Deny,
+  TestCase_Expectation
+  #-}
+
+-- | Specifies what should be included in the response.
+newtype TestCase_ExpressionReportLevel = TestCase_ExpressionReportLevel {fromTestCase_ExpressionReportLevel :: 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
+    )
+
+-- | No level has been specified. Defaults to \"NONE\" behavior.
+pattern TestCase_ExpressionReportLevel_LEVELUNSPECIFIED :: TestCase_ExpressionReportLevel
+pattern TestCase_ExpressionReportLevel_LEVELUNSPECIFIED = TestCase_ExpressionReportLevel "LEVEL_UNSPECIFIED"
+
+-- | Do not include any additional information.
+pattern TestCase_ExpressionReportLevel_None :: TestCase_ExpressionReportLevel
+pattern TestCase_ExpressionReportLevel_None = TestCase_ExpressionReportLevel "NONE"
+
+-- | Include detailed reporting on expressions evaluated.
+pattern TestCase_ExpressionReportLevel_Full :: TestCase_ExpressionReportLevel
+pattern TestCase_ExpressionReportLevel_Full = TestCase_ExpressionReportLevel "FULL"
+
+-- | Only include the expressions that were visited during evaluation.
+pattern TestCase_ExpressionReportLevel_Visited :: TestCase_ExpressionReportLevel
+pattern TestCase_ExpressionReportLevel_Visited = TestCase_ExpressionReportLevel "VISITED"
+
+{-# COMPLETE
+  TestCase_ExpressionReportLevel_LEVELUNSPECIFIED,
+  TestCase_ExpressionReportLevel_None,
+  TestCase_ExpressionReportLevel_Full,
+  TestCase_ExpressionReportLevel_Visited,
+  TestCase_ExpressionReportLevel
+  #-}
+
+-- | Specifies whether paths (such as request.path) are encoded and how.
+newtype TestCase_PathEncoding = TestCase_PathEncoding {fromTestCase_PathEncoding :: 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
+    )
+
+-- | No encoding has been specified. Defaults to \"URL_ENCODED\" behavior.
+pattern TestCase_PathEncoding_ENCODINGUNSPECIFIED :: TestCase_PathEncoding
+pattern TestCase_PathEncoding_ENCODINGUNSPECIFIED = TestCase_PathEncoding "ENCODING_UNSPECIFIED"
+
+-- | Treats path segments as URL encoded but with non-encoded separators (\"\/\"). This is the default behavior.
+pattern TestCase_PathEncoding_URLENCODED :: TestCase_PathEncoding
+pattern TestCase_PathEncoding_URLENCODED = TestCase_PathEncoding "URL_ENCODED"
+
+-- | Treats total path as non-URL encoded e.g. raw.
+pattern TestCase_PathEncoding_Plain :: TestCase_PathEncoding
+pattern TestCase_PathEncoding_Plain = TestCase_PathEncoding "PLAIN"
+
+{-# COMPLETE
+  TestCase_PathEncoding_ENCODINGUNSPECIFIED,
+  TestCase_PathEncoding_URLENCODED,
+  TestCase_PathEncoding_Plain,
+  TestCase_PathEncoding
+  #-}
+
+-- | State of the test.
+newtype TestResult_State = TestResult_State {fromTestResult_State :: 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
+    )
+
+-- | Test state is not set.
+pattern TestResult_State_STATEUNSPECIFIED :: TestResult_State
+pattern TestResult_State_STATEUNSPECIFIED = TestResult_State "STATE_UNSPECIFIED"
+
+-- | Test is a success.
+pattern TestResult_State_Success :: TestResult_State
+pattern TestResult_State_Success = TestResult_State "SUCCESS"
+
+-- | Test is a failure.
+pattern TestResult_State_Failure :: TestResult_State
+pattern TestResult_State_Failure = TestResult_State "FAILURE"
+
+{-# COMPLETE
+  TestResult_State_STATEUNSPECIFIED,
+  TestResult_State_Success,
+  TestResult_State_Failure,
+  TestResult_State
+  #-}
+
+-- | Optional. The requested runtime executable version. Defaults to FIREBASE/RULES/EXECUTABLE_V1.
+newtype ProjectsReleasesGetExecutableExecutableVersion = ProjectsReleasesGetExecutableExecutableVersion {fromProjectsReleasesGetExecutableExecutableVersion :: 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
+    )
+
+-- | Executable format unspecified. Defaults to FIREBASE/RULES/EXECUTABLE_V1
+pattern ProjectsReleasesGetExecutableExecutableVersion_RELEASEEXECUTABLEVERSIONUNSPECIFIED :: ProjectsReleasesGetExecutableExecutableVersion
+pattern ProjectsReleasesGetExecutableExecutableVersion_RELEASEEXECUTABLEVERSIONUNSPECIFIED = ProjectsReleasesGetExecutableExecutableVersion "RELEASE_EXECUTABLE_VERSION_UNSPECIFIED"
+
+-- | Firebase Rules syntax \'rules2\' executable versions: Custom AST for use with Java clients.
+pattern ProjectsReleasesGetExecutableExecutableVersion_FIREBASE_RULES_EXECUTABLE_V1 :: ProjectsReleasesGetExecutableExecutableVersion
+pattern ProjectsReleasesGetExecutableExecutableVersion_FIREBASE_RULES_EXECUTABLE_V1 = ProjectsReleasesGetExecutableExecutableVersion "FIREBASE_RULES_EXECUTABLE_V1"
+
+-- | CEL-based executable for use with C++ clients.
+pattern ProjectsReleasesGetExecutableExecutableVersion_FIREBASE_RULES_EXECUTABLE_V2 :: ProjectsReleasesGetExecutableExecutableVersion
+pattern ProjectsReleasesGetExecutableExecutableVersion_FIREBASE_RULES_EXECUTABLE_V2 = ProjectsReleasesGetExecutableExecutableVersion "FIREBASE_RULES_EXECUTABLE_V2"
+
+{-# COMPLETE
+  ProjectsReleasesGetExecutableExecutableVersion_RELEASEEXECUTABLEVERSIONUNSPECIFIED,
+  ProjectsReleasesGetExecutableExecutableVersion_FIREBASE_RULES_EXECUTABLE_V1,
+  ProjectsReleasesGetExecutableExecutableVersion_FIREBASE_RULES_EXECUTABLE_V2,
+  ProjectsReleasesGetExecutableExecutableVersion
+  #-}
diff --git a/gen/Gogol/FirebaseRules/Projects/Releases/Create.hs b/gen/Gogol/FirebaseRules/Projects/Releases/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Releases/Create.hs
@@ -0,0 +1,119 @@
+{-# 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.FirebaseRules.Projects.Releases.Create
+-- 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)
+--
+-- Create a @Release@. Release names should reflect the developer\'s deployment practices. For example, the release name may include the environment name, application name, application version, or any other name meaningful to the developer. Once a @Release@ refers to a @Ruleset@, the rules can be enforced by Firebase Rules-enabled services. More than one @Release@ may be \'live\' concurrently. Consider the following three @Release@ names for @projects\/foo@ and the @Ruleset@ to which they refer. Release Name -> Ruleset Name * projects\/foo\/releases\/prod -> projects\/foo\/rulesets\/uuid123 * projects\/foo\/releases\/prod\/beta -> projects\/foo\/rulesets\/uuid123 * projects\/foo\/releases\/prod\/v23 -> projects\/foo\/rulesets\/uuid456 The relationships reflect a @Ruleset@ rollout in progress. The @prod@ and @prod\/beta@ releases refer to the same @Ruleset@. However, @prod\/v23@ refers to a new @Ruleset@. The @Ruleset@ reference for a @Release@ may be updated using the UpdateRelease method.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.create@.
+module Gogol.FirebaseRules.Projects.Releases.Create
+  ( -- * Resource
+    FirebaseRulesProjectsReleasesCreateResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsReleasesCreate (..),
+    newFirebaseRulesProjectsReleasesCreate,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.releases.create@ method which the
+-- 'FirebaseRulesProjectsReleasesCreate' request conforms to.
+type FirebaseRulesProjectsReleasesCreateResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> "releases"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Release
+    Core.:> Core.Post '[Core.JSON] Release
+
+-- | Create a @Release@. Release names should reflect the developer\'s deployment practices. For example, the release name may include the environment name, application name, application version, or any other name meaningful to the developer. Once a @Release@ refers to a @Ruleset@, the rules can be enforced by Firebase Rules-enabled services. More than one @Release@ may be \'live\' concurrently. Consider the following three @Release@ names for @projects\/foo@ and the @Ruleset@ to which they refer. Release Name -> Ruleset Name * projects\/foo\/releases\/prod -> projects\/foo\/rulesets\/uuid123 * projects\/foo\/releases\/prod\/beta -> projects\/foo\/rulesets\/uuid123 * projects\/foo\/releases\/prod\/v23 -> projects\/foo\/rulesets\/uuid456 The relationships reflect a @Ruleset@ rollout in progress. The @prod@ and @prod\/beta@ releases refer to the same @Ruleset@. However, @prod\/v23@ refers to a new @Ruleset@. The @Ruleset@ reference for a @Release@ may be updated using the UpdateRelease method.
+--
+-- /See:/ 'newFirebaseRulesProjectsReleasesCreate' smart constructor.
+data FirebaseRulesProjectsReleasesCreate = FirebaseRulesProjectsReleasesCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for the project which owns this @Release@. Format: @projects\/{project_id}@
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Release,
+    -- | 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 'FirebaseRulesProjectsReleasesCreate' with the minimum fields required to make a request.
+newFirebaseRulesProjectsReleasesCreate ::
+  -- |  Required. Resource name for the project which owns this @Release@. Format: @projects\/{project_id}@ See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Release ->
+  FirebaseRulesProjectsReleasesCreate
+newFirebaseRulesProjectsReleasesCreate name payload =
+  FirebaseRulesProjectsReleasesCreate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsReleasesCreate where
+  type Rs FirebaseRulesProjectsReleasesCreate = Release
+  type
+    Scopes FirebaseRulesProjectsReleasesCreate =
+      '[CloudPlatform'FullControl, Firebase'FullControl]
+  requestClient FirebaseRulesProjectsReleasesCreate {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRulesProjectsReleasesCreateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Releases/Delete.hs b/gen/Gogol/FirebaseRules/Projects/Releases/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Releases/Delete.hs
@@ -0,0 +1,111 @@
+{-# 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.FirebaseRules.Projects.Releases.Delete
+-- 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)
+--
+-- Delete a @Release@ by resource name.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.delete@.
+module Gogol.FirebaseRules.Projects.Releases.Delete
+  ( -- * Resource
+    FirebaseRulesProjectsReleasesDeleteResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsReleasesDelete (..),
+    newFirebaseRulesProjectsReleasesDelete,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.releases.delete@ method which the
+-- 'FirebaseRulesProjectsReleasesDelete' request conforms to.
+type FirebaseRulesProjectsReleasesDeleteResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] Empty
+
+-- | Delete a @Release@ by resource name.
+--
+-- /See:/ 'newFirebaseRulesProjectsReleasesDelete' smart constructor.
+data FirebaseRulesProjectsReleasesDelete = FirebaseRulesProjectsReleasesDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for the @Release@ to delete. Format: @projects\/{project_id}\/releases\/{release_id}@
+    name :: 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 'FirebaseRulesProjectsReleasesDelete' with the minimum fields required to make a request.
+newFirebaseRulesProjectsReleasesDelete ::
+  -- |  Required. Resource name for the @Release@ to delete. Format: @projects\/{project_id}\/releases\/{release_id}@ See 'name'.
+  Core.Text ->
+  FirebaseRulesProjectsReleasesDelete
+newFirebaseRulesProjectsReleasesDelete name =
+  FirebaseRulesProjectsReleasesDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsReleasesDelete where
+  type Rs FirebaseRulesProjectsReleasesDelete = Empty
+  type
+    Scopes FirebaseRulesProjectsReleasesDelete =
+      '[CloudPlatform'FullControl, Firebase'FullControl]
+  requestClient FirebaseRulesProjectsReleasesDelete {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRulesProjectsReleasesDeleteResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Releases/Get.hs b/gen/Gogol/FirebaseRules/Projects/Releases/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Releases/Get.hs
@@ -0,0 +1,112 @@
+{-# 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.FirebaseRules.Projects.Releases.Get
+-- 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 a @Release@ by name.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.get@.
+module Gogol.FirebaseRules.Projects.Releases.Get
+  ( -- * Resource
+    FirebaseRulesProjectsReleasesGetResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsReleasesGet (..),
+    newFirebaseRulesProjectsReleasesGet,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.releases.get@ method which the
+-- 'FirebaseRulesProjectsReleasesGet' request conforms to.
+type FirebaseRulesProjectsReleasesGetResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Release
+
+-- | Get a @Release@ by name.
+--
+-- /See:/ 'newFirebaseRulesProjectsReleasesGet' smart constructor.
+data FirebaseRulesProjectsReleasesGet = FirebaseRulesProjectsReleasesGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Resource name of the @Release@. Format: @projects\/{project_id}\/releases\/{release_id}@
+    name :: 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 'FirebaseRulesProjectsReleasesGet' with the minimum fields required to make a request.
+newFirebaseRulesProjectsReleasesGet ::
+  -- |  Required. Resource name of the @Release@. Format: @projects\/{project_id}\/releases\/{release_id}@ See 'name'.
+  Core.Text ->
+  FirebaseRulesProjectsReleasesGet
+newFirebaseRulesProjectsReleasesGet name =
+  FirebaseRulesProjectsReleasesGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsReleasesGet where
+  type Rs FirebaseRulesProjectsReleasesGet = Release
+  type
+    Scopes FirebaseRulesProjectsReleasesGet =
+      '[ CloudPlatform'FullControl,
+         Firebase'FullControl,
+         Firebase'Readonly
+       ]
+  requestClient FirebaseRulesProjectsReleasesGet {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FirebaseRulesProjectsReleasesGetResource)
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Releases/GetExecutable.hs b/gen/Gogol/FirebaseRules/Projects/Releases/GetExecutable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Releases/GetExecutable.hs
@@ -0,0 +1,126 @@
+{-# 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.FirebaseRules.Projects.Releases.GetExecutable
+-- 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 @Release@ executable to use when enforcing rules.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.getExecutable@.
+module Gogol.FirebaseRules.Projects.Releases.GetExecutable
+  ( -- * Resource
+    FirebaseRulesProjectsReleasesGetExecutableResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsReleasesGetExecutable (..),
+    newFirebaseRulesProjectsReleasesGetExecutable,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.releases.getExecutable@ method which the
+-- 'FirebaseRulesProjectsReleasesGetExecutable' request conforms to.
+type FirebaseRulesProjectsReleasesGetExecutableResource =
+  "v1"
+    Core.:> Core.CaptureMode "name" "getExecutable" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam
+              "executableVersion"
+              ProjectsReleasesGetExecutableExecutableVersion
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] GetReleaseExecutableResponse
+
+-- | Get the @Release@ executable to use when enforcing rules.
+--
+-- /See:/ 'newFirebaseRulesProjectsReleasesGetExecutable' smart constructor.
+data FirebaseRulesProjectsReleasesGetExecutable = FirebaseRulesProjectsReleasesGetExecutable
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Optional. The requested runtime executable version. Defaults to FIREBASE/RULES/EXECUTABLE_V1.
+    executableVersion :: (Core.Maybe ProjectsReleasesGetExecutableExecutableVersion),
+    -- | Required. Resource name of the @Release@. Format: @projects\/{project_id}\/releases\/{release_id}@
+    name :: 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 'FirebaseRulesProjectsReleasesGetExecutable' with the minimum fields required to make a request.
+newFirebaseRulesProjectsReleasesGetExecutable ::
+  -- |  Required. Resource name of the @Release@. Format: @projects\/{project_id}\/releases\/{release_id}@ See 'name'.
+  Core.Text ->
+  FirebaseRulesProjectsReleasesGetExecutable
+newFirebaseRulesProjectsReleasesGetExecutable name =
+  FirebaseRulesProjectsReleasesGetExecutable
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      executableVersion = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    FirebaseRulesProjectsReleasesGetExecutable
+  where
+  type
+    Rs FirebaseRulesProjectsReleasesGetExecutable =
+      GetReleaseExecutableResponse
+  type
+    Scopes FirebaseRulesProjectsReleasesGetExecutable =
+      '[ CloudPlatform'FullControl,
+         Firebase'FullControl,
+         Firebase'Readonly
+       ]
+  requestClient FirebaseRulesProjectsReleasesGetExecutable {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      executableVersion
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRulesProjectsReleasesGetExecutableResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Releases/List.hs b/gen/Gogol/FirebaseRules/Projects/Releases/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Releases/List.hs
@@ -0,0 +1,130 @@
+{-# 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.FirebaseRules.Projects.Releases.List
+-- 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)
+--
+-- List the @Release@ values for a project. This list may optionally be filtered by @Release@ name, @Ruleset@ name, @TestSuite@ name, or any combination thereof.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.list@.
+module Gogol.FirebaseRules.Projects.Releases.List
+  ( -- * Resource
+    FirebaseRulesProjectsReleasesListResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsReleasesList (..),
+    newFirebaseRulesProjectsReleasesList,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.releases.list@ method which the
+-- 'FirebaseRulesProjectsReleasesList' request conforms to.
+type FirebaseRulesProjectsReleasesListResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> "releases"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "filter" Core.Text
+    Core.:> Core.QueryParam "pageSize" Core.Int32
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListReleasesResponse
+
+-- | List the @Release@ values for a project. This list may optionally be filtered by @Release@ name, @Ruleset@ name, @TestSuite@ name, or any combination thereof.
+--
+-- /See:/ 'newFirebaseRulesProjectsReleasesList' smart constructor.
+data FirebaseRulesProjectsReleasesList = FirebaseRulesProjectsReleasesList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Optional. @Release@ filter. The list method supports filters with restrictions on the @Release.name@, and @Release.ruleset_name@. Example 1: A filter of \'name=prod/\' might return @Release@s with names within \'projects\/foo\' prefixed with \'prod\': Name -> Ruleset Name: / projects\/foo\/releases\/prod -> projects\/foo\/rulesets\/uuid1234 * projects\/foo\/releases\/prod\/v1 -> projects\/foo\/rulesets\/uuid1234 * projects\/foo\/releases\/prod\/v2 -> projects\/foo\/rulesets\/uuid8888 Example 2: A filter of @name=prod* ruleset_name=uuid1234@ would return only @Release@ instances for \'projects\/foo\' with names prefixed with \'prod\' referring to the same @Ruleset@ name of \'uuid1234\': Name -> Ruleset Name: * projects\/foo\/releases\/prod -> projects\/foo\/rulesets\/1234 * projects\/foo\/releases\/prod\/v1 -> projects\/foo\/rulesets\/1234 In the examples, the filter parameters refer to the search filters are relative to the project. Fully qualified prefixed may also be used.
+    filter :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for the project. Format: @projects\/{project_id}@
+    name :: Core.Text,
+    -- | Optional. Page size to load. Maximum of 100. Defaults to 10. Note: @page_size@ is just a hint and the service may choose to load fewer than @page_size@ results due to the size of the output. To traverse all of the releases, the caller should iterate until the @page_token@ on the response is empty.
+    pageSize :: (Core.Maybe Core.Int32),
+    -- | Optional. Next page token for the next batch of @Release@ instances.
+    pageToken :: (Core.Maybe 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 'FirebaseRulesProjectsReleasesList' with the minimum fields required to make a request.
+newFirebaseRulesProjectsReleasesList ::
+  -- |  Required. Resource name for the project. Format: @projects\/{project_id}@ See 'name'.
+  Core.Text ->
+  FirebaseRulesProjectsReleasesList
+newFirebaseRulesProjectsReleasesList name =
+  FirebaseRulesProjectsReleasesList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      filter = Core.Nothing,
+      name = name,
+      pageSize = Core.Nothing,
+      pageToken = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsReleasesList where
+  type Rs FirebaseRulesProjectsReleasesList = ListReleasesResponse
+  type
+    Scopes FirebaseRulesProjectsReleasesList =
+      '[ CloudPlatform'FullControl,
+         Firebase'FullControl,
+         Firebase'Readonly
+       ]
+  requestClient FirebaseRulesProjectsReleasesList {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      filter
+      pageSize
+      pageToken
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRulesProjectsReleasesListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Releases/Patch.hs b/gen/Gogol/FirebaseRules/Projects/Releases/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Releases/Patch.hs
@@ -0,0 +1,118 @@
+{-# 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.FirebaseRules.Projects.Releases.Patch
+-- 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 @Release@ via PATCH. Only updates to @ruleset_name@ will be honored. @Release@ rename is not supported. To create a @Release@ use the CreateRelease method.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.patch@.
+module Gogol.FirebaseRules.Projects.Releases.Patch
+  ( -- * Resource
+    FirebaseRulesProjectsReleasesPatchResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsReleasesPatch (..),
+    newFirebaseRulesProjectsReleasesPatch,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.releases.patch@ method which the
+-- 'FirebaseRulesProjectsReleasesPatch' request conforms to.
+type FirebaseRulesProjectsReleasesPatchResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] UpdateReleaseRequest
+    Core.:> Core.Patch '[Core.JSON] Release
+
+-- | Update a @Release@ via PATCH. Only updates to @ruleset_name@ will be honored. @Release@ rename is not supported. To create a @Release@ use the CreateRelease method.
+--
+-- /See:/ 'newFirebaseRulesProjectsReleasesPatch' smart constructor.
+data FirebaseRulesProjectsReleasesPatch = FirebaseRulesProjectsReleasesPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for the project which owns this @Release@. Format: @projects\/{project_id}@
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: UpdateReleaseRequest,
+    -- | 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 'FirebaseRulesProjectsReleasesPatch' with the minimum fields required to make a request.
+newFirebaseRulesProjectsReleasesPatch ::
+  -- |  Required. Resource name for the project which owns this @Release@. Format: @projects\/{project_id}@ See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  UpdateReleaseRequest ->
+  FirebaseRulesProjectsReleasesPatch
+newFirebaseRulesProjectsReleasesPatch name payload =
+  FirebaseRulesProjectsReleasesPatch
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsReleasesPatch where
+  type Rs FirebaseRulesProjectsReleasesPatch = Release
+  type
+    Scopes FirebaseRulesProjectsReleasesPatch =
+      '[CloudPlatform'FullControl, Firebase'FullControl]
+  requestClient FirebaseRulesProjectsReleasesPatch {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRulesProjectsReleasesPatchResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Rulesets/Create.hs b/gen/Gogol/FirebaseRules/Projects/Rulesets/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Rulesets/Create.hs
@@ -0,0 +1,119 @@
+{-# 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.FirebaseRules.Projects.Rulesets.Create
+-- 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)
+--
+-- Create a @Ruleset@ from @Source@. The @Ruleset@ is given a unique generated name which is returned to the caller. @Source@ containing syntactic or semantics errors will result in an error response indicating the first error encountered. For a detailed view of @Source@ issues, use TestRuleset.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.rulesets.create@.
+module Gogol.FirebaseRules.Projects.Rulesets.Create
+  ( -- * Resource
+    FirebaseRulesProjectsRulesetsCreateResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsRulesetsCreate (..),
+    newFirebaseRulesProjectsRulesetsCreate,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.rulesets.create@ method which the
+-- 'FirebaseRulesProjectsRulesetsCreate' request conforms to.
+type FirebaseRulesProjectsRulesetsCreateResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> "rulesets"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Ruleset
+    Core.:> Core.Post '[Core.JSON] Ruleset
+
+-- | Create a @Ruleset@ from @Source@. The @Ruleset@ is given a unique generated name which is returned to the caller. @Source@ containing syntactic or semantics errors will result in an error response indicating the first error encountered. For a detailed view of @Source@ issues, use TestRuleset.
+--
+-- /See:/ 'newFirebaseRulesProjectsRulesetsCreate' smart constructor.
+data FirebaseRulesProjectsRulesetsCreate = FirebaseRulesProjectsRulesetsCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for Project which owns this @Ruleset@. Format: @projects\/{project_id}@
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Ruleset,
+    -- | 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 'FirebaseRulesProjectsRulesetsCreate' with the minimum fields required to make a request.
+newFirebaseRulesProjectsRulesetsCreate ::
+  -- |  Required. Resource name for Project which owns this @Ruleset@. Format: @projects\/{project_id}@ See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Ruleset ->
+  FirebaseRulesProjectsRulesetsCreate
+newFirebaseRulesProjectsRulesetsCreate name payload =
+  FirebaseRulesProjectsRulesetsCreate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsRulesetsCreate where
+  type Rs FirebaseRulesProjectsRulesetsCreate = Ruleset
+  type
+    Scopes FirebaseRulesProjectsRulesetsCreate =
+      '[CloudPlatform'FullControl, Firebase'FullControl]
+  requestClient FirebaseRulesProjectsRulesetsCreate {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRulesProjectsRulesetsCreateResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Rulesets/Delete.hs b/gen/Gogol/FirebaseRules/Projects/Rulesets/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Rulesets/Delete.hs
@@ -0,0 +1,111 @@
+{-# 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.FirebaseRules.Projects.Rulesets.Delete
+-- 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)
+--
+-- Delete a @Ruleset@ by resource name. If the @Ruleset@ is referenced by a @Release@ the operation will fail.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.rulesets.delete@.
+module Gogol.FirebaseRules.Projects.Rulesets.Delete
+  ( -- * Resource
+    FirebaseRulesProjectsRulesetsDeleteResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsRulesetsDelete (..),
+    newFirebaseRulesProjectsRulesetsDelete,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.rulesets.delete@ method which the
+-- 'FirebaseRulesProjectsRulesetsDelete' request conforms to.
+type FirebaseRulesProjectsRulesetsDeleteResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] Empty
+
+-- | Delete a @Ruleset@ by resource name. If the @Ruleset@ is referenced by a @Release@ the operation will fail.
+--
+-- /See:/ 'newFirebaseRulesProjectsRulesetsDelete' smart constructor.
+data FirebaseRulesProjectsRulesetsDelete = FirebaseRulesProjectsRulesetsDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for the ruleset to delete. Format: @projects\/{project_id}\/rulesets\/{ruleset_id}@
+    name :: 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 'FirebaseRulesProjectsRulesetsDelete' with the minimum fields required to make a request.
+newFirebaseRulesProjectsRulesetsDelete ::
+  -- |  Required. Resource name for the ruleset to delete. Format: @projects\/{project_id}\/rulesets\/{ruleset_id}@ See 'name'.
+  Core.Text ->
+  FirebaseRulesProjectsRulesetsDelete
+newFirebaseRulesProjectsRulesetsDelete name =
+  FirebaseRulesProjectsRulesetsDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsRulesetsDelete where
+  type Rs FirebaseRulesProjectsRulesetsDelete = Empty
+  type
+    Scopes FirebaseRulesProjectsRulesetsDelete =
+      '[CloudPlatform'FullControl, Firebase'FullControl]
+  requestClient FirebaseRulesProjectsRulesetsDelete {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRulesProjectsRulesetsDeleteResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Rulesets/Get.hs b/gen/Gogol/FirebaseRules/Projects/Rulesets/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Rulesets/Get.hs
@@ -0,0 +1,112 @@
+{-# 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.FirebaseRules.Projects.Rulesets.Get
+-- 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 a @Ruleset@ by name including the full @Source@ contents.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.rulesets.get@.
+module Gogol.FirebaseRules.Projects.Rulesets.Get
+  ( -- * Resource
+    FirebaseRulesProjectsRulesetsGetResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsRulesetsGet (..),
+    newFirebaseRulesProjectsRulesetsGet,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.rulesets.get@ method which the
+-- 'FirebaseRulesProjectsRulesetsGet' request conforms to.
+type FirebaseRulesProjectsRulesetsGetResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Ruleset
+
+-- | Get a @Ruleset@ by name including the full @Source@ contents.
+--
+-- /See:/ 'newFirebaseRulesProjectsRulesetsGet' smart constructor.
+data FirebaseRulesProjectsRulesetsGet = FirebaseRulesProjectsRulesetsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for the ruleset to get. Format: @projects\/{project_id}\/rulesets\/{ruleset_id}@
+    name :: 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 'FirebaseRulesProjectsRulesetsGet' with the minimum fields required to make a request.
+newFirebaseRulesProjectsRulesetsGet ::
+  -- |  Required. Resource name for the ruleset to get. Format: @projects\/{project_id}\/rulesets\/{ruleset_id}@ See 'name'.
+  Core.Text ->
+  FirebaseRulesProjectsRulesetsGet
+newFirebaseRulesProjectsRulesetsGet name =
+  FirebaseRulesProjectsRulesetsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsRulesetsGet where
+  type Rs FirebaseRulesProjectsRulesetsGet = Ruleset
+  type
+    Scopes FirebaseRulesProjectsRulesetsGet =
+      '[ CloudPlatform'FullControl,
+         Firebase'FullControl,
+         Firebase'Readonly
+       ]
+  requestClient FirebaseRulesProjectsRulesetsGet {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FirebaseRulesProjectsRulesetsGetResource)
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Rulesets/List.hs b/gen/Gogol/FirebaseRules/Projects/Rulesets/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Rulesets/List.hs
@@ -0,0 +1,130 @@
+{-# 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.FirebaseRules.Projects.Rulesets.List
+-- 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)
+--
+-- List @Ruleset@ metadata only and optionally filter the results by @Ruleset@ name. The full @Source@ contents of a @Ruleset@ may be retrieved with GetRuleset.
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.rulesets.list@.
+module Gogol.FirebaseRules.Projects.Rulesets.List
+  ( -- * Resource
+    FirebaseRulesProjectsRulesetsListResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsRulesetsList (..),
+    newFirebaseRulesProjectsRulesetsList,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.rulesets.list@ method which the
+-- 'FirebaseRulesProjectsRulesetsList' request conforms to.
+type FirebaseRulesProjectsRulesetsListResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> "rulesets"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "filter" Core.Text
+    Core.:> Core.QueryParam "pageSize" Core.Int32
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListRulesetsResponse
+
+-- | List @Ruleset@ metadata only and optionally filter the results by @Ruleset@ name. The full @Source@ contents of a @Ruleset@ may be retrieved with GetRuleset.
+--
+-- /See:/ 'newFirebaseRulesProjectsRulesetsList' smart constructor.
+data FirebaseRulesProjectsRulesetsList = FirebaseRulesProjectsRulesetsList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Optional. @Ruleset@ filter. The list method supports filters with restrictions on @Ruleset.name@. Filters on @Ruleset.create_time@ should use the @date@ function which parses strings that conform to the RFC 3339 date\/time specifications. Example: @create_time > date(\"2017-01-01T00:00:00Z\") AND name=UUID-*@
+    filter :: (Core.Maybe Core.Text),
+    -- | Required. Resource name for the project. Format: @projects\/{project_id}@
+    name :: Core.Text,
+    -- | Optional. Page size to load. Maximum of 100. Defaults to 10. Note: @page_size@ is just a hint and the service may choose to load less than @page_size@ due to the size of the output. To traverse all of the releases, caller should iterate until the @page_token@ is empty.
+    pageSize :: (Core.Maybe Core.Int32),
+    -- | Optional. Next page token for loading the next batch of @Ruleset@ instances.
+    pageToken :: (Core.Maybe 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 'FirebaseRulesProjectsRulesetsList' with the minimum fields required to make a request.
+newFirebaseRulesProjectsRulesetsList ::
+  -- |  Required. Resource name for the project. Format: @projects\/{project_id}@ See 'name'.
+  Core.Text ->
+  FirebaseRulesProjectsRulesetsList
+newFirebaseRulesProjectsRulesetsList name =
+  FirebaseRulesProjectsRulesetsList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      filter = Core.Nothing,
+      name = name,
+      pageSize = Core.Nothing,
+      pageToken = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsRulesetsList where
+  type Rs FirebaseRulesProjectsRulesetsList = ListRulesetsResponse
+  type
+    Scopes FirebaseRulesProjectsRulesetsList =
+      '[ CloudPlatform'FullControl,
+         Firebase'FullControl,
+         Firebase'Readonly
+       ]
+  requestClient FirebaseRulesProjectsRulesetsList {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      filter
+      pageSize
+      pageToken
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FirebaseRulesProjectsRulesetsListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Projects/Test.hs b/gen/Gogol/FirebaseRules/Projects/Test.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Projects/Test.hs
@@ -0,0 +1,119 @@
+{-# 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.FirebaseRules.Projects.Test
+-- 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)
+--
+-- Test @Source@ for syntactic and semantic correctness. Issues present, if any, will be returned to the caller with a description, severity, and source location. The test method may be executed with @Source@ or a @Ruleset@ name. Passing @Source@ is useful for unit testing new rules. Passing a @Ruleset@ name is useful for regression testing an existing rule. The following is an example of @Source@ that permits users to upload images to a bucket bearing their user id and matching the correct metadata: //Example// \/\/ Users are allowed to subscribe and unsubscribe to the blog. service firebase.storage { match \/users\/{userId}\/images\/{imageName} { allow write: if userId == request.auth.uid && (imageName.matches(\'/.png$\') || imageName.matches(\'/.jpg$\')) && resource.mimeType.matches(\'^image\/\') } }
+--
+-- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.test@.
+module Gogol.FirebaseRules.Projects.Test
+  ( -- * Resource
+    FirebaseRulesProjectsTestResource,
+
+    -- ** Constructing a Request
+    FirebaseRulesProjectsTest (..),
+    newFirebaseRulesProjectsTest,
+  )
+where
+
+import Gogol.FirebaseRules.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @firebaserules.projects.test@ method which the
+-- 'FirebaseRulesProjectsTest' request conforms to.
+type FirebaseRulesProjectsTestResource =
+  "v1"
+    Core.:> Core.CaptureMode "name" "test" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] TestRulesetRequest
+    Core.:> Core.Post '[Core.JSON] TestRulesetResponse
+
+-- | Test @Source@ for syntactic and semantic correctness. Issues present, if any, will be returned to the caller with a description, severity, and source location. The test method may be executed with @Source@ or a @Ruleset@ name. Passing @Source@ is useful for unit testing new rules. Passing a @Ruleset@ name is useful for regression testing an existing rule. The following is an example of @Source@ that permits users to upload images to a bucket bearing their user id and matching the correct metadata: //Example// \/\/ Users are allowed to subscribe and unsubscribe to the blog. service firebase.storage { match \/users\/{userId}\/images\/{imageName} { allow write: if userId == request.auth.uid && (imageName.matches(\'/.png$\') || imageName.matches(\'/.jpg$\')) && resource.mimeType.matches(\'^image\/\') } }
+--
+-- /See:/ 'newFirebaseRulesProjectsTest' smart constructor.
+data FirebaseRulesProjectsTest = FirebaseRulesProjectsTest
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Tests may either provide @source@ or a @Ruleset@ resource name. For tests against @source@, the resource name must refer to the project: Format: @projects\/{project_id}@ For tests against a @Ruleset@, this must be the @Ruleset@ resource name: Format: @projects\/{project_id}\/rulesets\/{ruleset_id}@
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: TestRulesetRequest,
+    -- | 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 'FirebaseRulesProjectsTest' with the minimum fields required to make a request.
+newFirebaseRulesProjectsTest ::
+  -- |  Required. Tests may either provide @source@ or a @Ruleset@ resource name. For tests against @source@, the resource name must refer to the project: Format: @projects\/{project_id}@ For tests against a @Ruleset@, this must be the @Ruleset@ resource name: Format: @projects\/{project_id}\/rulesets\/{ruleset_id}@ See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  TestRulesetRequest ->
+  FirebaseRulesProjectsTest
+newFirebaseRulesProjectsTest name payload =
+  FirebaseRulesProjectsTest
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest FirebaseRulesProjectsTest where
+  type Rs FirebaseRulesProjectsTest = TestRulesetResponse
+  type
+    Scopes FirebaseRulesProjectsTest =
+      '[ CloudPlatform'FullControl,
+         Firebase'FullControl,
+         Firebase'Readonly
+       ]
+  requestClient FirebaseRulesProjectsTest {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      firebaseRulesService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FirebaseRulesProjectsTestResource)
+          Core.mempty
diff --git a/gen/Gogol/FirebaseRules/Types.hs b/gen/Gogol/FirebaseRules/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/FirebaseRules/Types.hs
@@ -0,0 +1,183 @@
+{-# 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.FirebaseRules.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.FirebaseRules.Types
+  ( -- * Configuration
+    firebaseRulesService,
+
+    -- * OAuth Scopes
+    CloudPlatform'FullControl,
+    Firebase'FullControl,
+    Firebase'Readonly,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** Arg
+    Arg (..),
+    newArg,
+
+    -- ** Empty
+    Empty (..),
+    newEmpty,
+
+    -- ** ExpressionReport
+    ExpressionReport (..),
+    newExpressionReport,
+
+    -- ** File
+    File (..),
+    newFile,
+
+    -- ** FunctionCall
+    FunctionCall (..),
+    newFunctionCall,
+
+    -- ** FunctionMock
+    FunctionMock (..),
+    newFunctionMock,
+
+    -- ** GetReleaseExecutableResponse
+    GetReleaseExecutableResponse (..),
+    newGetReleaseExecutableResponse,
+
+    -- ** GetReleaseExecutableResponse_ExecutableVersion
+    GetReleaseExecutableResponse_ExecutableVersion (..),
+
+    -- ** GetReleaseExecutableResponse_Language
+    GetReleaseExecutableResponse_Language (..),
+
+    -- ** Issue
+    Issue (..),
+    newIssue,
+
+    -- ** Issue_Severity
+    Issue_Severity (..),
+
+    -- ** ListReleasesResponse
+    ListReleasesResponse (..),
+    newListReleasesResponse,
+
+    -- ** ListRulesetsResponse
+    ListRulesetsResponse (..),
+    newListRulesetsResponse,
+
+    -- ** Metadata
+    Metadata (..),
+    newMetadata,
+
+    -- ** Release
+    Release (..),
+    newRelease,
+
+    -- ** Result
+    Result (..),
+    newResult,
+
+    -- ** Ruleset
+    Ruleset (..),
+    newRuleset,
+
+    -- ** Source
+    Source (..),
+    newSource,
+
+    -- ** SourcePosition
+    SourcePosition (..),
+    newSourcePosition,
+
+    -- ** TestCase
+    TestCase (..),
+    newTestCase,
+
+    -- ** TestCase_Expectation
+    TestCase_Expectation (..),
+
+    -- ** TestCase_ExpressionReportLevel
+    TestCase_ExpressionReportLevel (..),
+
+    -- ** TestCase_PathEncoding
+    TestCase_PathEncoding (..),
+
+    -- ** TestResult
+    TestResult (..),
+    newTestResult,
+
+    -- ** TestResult_State
+    TestResult_State (..),
+
+    -- ** TestRulesetRequest
+    TestRulesetRequest (..),
+    newTestRulesetRequest,
+
+    -- ** TestRulesetResponse
+    TestRulesetResponse (..),
+    newTestRulesetResponse,
+
+    -- ** TestSuite
+    TestSuite (..),
+    newTestSuite,
+
+    -- ** UpdateReleaseRequest
+    UpdateReleaseRequest (..),
+    newUpdateReleaseRequest,
+
+    -- ** ValueCount
+    ValueCount (..),
+    newValueCount,
+
+    -- ** VisitedExpression
+    VisitedExpression (..),
+    newVisitedExpression,
+
+    -- ** ProjectsReleasesGetExecutableExecutableVersion
+    ProjectsReleasesGetExecutableExecutableVersion (..),
+  )
+where
+
+import Gogol.FirebaseRules.Internal.Product
+import Gogol.FirebaseRules.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Default request referring to version @v1@ of the Firebase Rules API. This contains the host and root path used as a starting point for constructing service requests.
+firebaseRulesService :: Core.ServiceConfig
+firebaseRulesService =
+  Core.defaultService
+    (Core.ServiceId "firebaserules:v1")
+    "firebaserules.googleapis.com"
+
+-- | See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account.
+type CloudPlatform'FullControl =
+  "https://www.googleapis.com/auth/cloud-platform"
+
+-- | View and administer all your Firebase data and settings
+type Firebase'FullControl =
+  "https://www.googleapis.com/auth/firebase"
+
+-- | View all your Firebase data and settings
+type Firebase'Readonly =
+  "https://www.googleapis.com/auth/firebase.readonly"
diff --git a/gen/Network/Google/FirebaseRules.hs b/gen/Network/Google/FirebaseRules.hs
deleted file mode 100644
--- a/gen/Network/Google/FirebaseRules.hs
+++ /dev/null
@@ -1,257 +0,0 @@
-{-# LANGUAGE DataKinds         #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE TypeOperators     #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- |
--- Module      : Network.Google.FirebaseRules
--- 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 and manages rules that determine when a Firebase Rules-enabled
--- service should permit a request.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference>
-module Network.Google.FirebaseRules
-    (
-    -- * Service Configuration
-      firebaseRulesService
-
-    -- * OAuth Scopes
-    , firebaseScope
-    , cloudPlatformScope
-    , firebaseReadOnlyScope
-
-    -- * API Declaration
-    , FirebaseRulesAPI
-
-    -- * Resources
-
-    -- ** firebaserules.projects.releases.create
-    , module Network.Google.Resource.FirebaseRules.Projects.Releases.Create
-
-    -- ** firebaserules.projects.releases.delete
-    , module Network.Google.Resource.FirebaseRules.Projects.Releases.Delete
-
-    -- ** firebaserules.projects.releases.get
-    , module Network.Google.Resource.FirebaseRules.Projects.Releases.Get
-
-    -- ** firebaserules.projects.releases.getExecutable
-    , module Network.Google.Resource.FirebaseRules.Projects.Releases.GetExecutable
-
-    -- ** firebaserules.projects.releases.list
-    , module Network.Google.Resource.FirebaseRules.Projects.Releases.List
-
-    -- ** firebaserules.projects.releases.patch
-    , module Network.Google.Resource.FirebaseRules.Projects.Releases.Patch
-
-    -- ** firebaserules.projects.rulesets.create
-    , module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create
-
-    -- ** firebaserules.projects.rulesets.delete
-    , module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete
-
-    -- ** firebaserules.projects.rulesets.get
-    , module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get
-
-    -- ** firebaserules.projects.rulesets.list
-    , module Network.Google.Resource.FirebaseRules.Projects.Rulesets.List
-
-    -- ** firebaserules.projects.test
-    , module Network.Google.Resource.FirebaseRules.Projects.Test
-
-    -- * Types
-
-    -- ** SourcePosition
-    , SourcePosition
-    , sourcePosition
-    , spLine
-    , spColumn
-    , spFileName
-
-    -- ** TestCase
-    , TestCase
-    , testCase
-    , tcResource
-    , tcExpectation
-    , tcFunctionMocks
-    , tcRequest
-
-    -- ** VisitedExpression
-    , VisitedExpression
-    , visitedExpression
-    , veSourcePosition
-    , veValue
-
-    -- ** Empty
-    , Empty
-    , empty
-
-    -- ** FunctionMock
-    , FunctionMock
-    , functionMock
-    , fmArgs
-    , fmFunction
-    , fmResult
-
-    -- ** TestResultState
-    , TestResultState (..)
-
-    -- ** FunctionCall
-    , FunctionCall
-    , functionCall
-    , fcArgs
-    , fcFunction
-
-    -- ** ListReleasesResponse
-    , ListReleasesResponse
-    , listReleasesResponse
-    , lrrNextPageToken
-    , lrrReleases
-
-    -- ** Result
-    , Result
-    , result
-    , rValue
-    , rUndefined
-
-    -- ** TestRulesetResponse
-    , TestRulesetResponse
-    , testRulesetResponse
-    , trrTestResults
-    , trrIssues
-
-    -- ** Release
-    , Release
-    , release
-    , rRulesetName
-    , rUpdateTime
-    , rName
-    , rCreateTime
-
-    -- ** Arg
-    , Arg
-    , arg
-    , aAnyValue
-    , aExactValue
-
-    -- ** Ruleset
-    , Ruleset
-    , ruleset
-    , rulName
-    , rulSource
-    , rulCreateTime
-
-    -- ** GetReleaseExecutableResponse
-    , GetReleaseExecutableResponse
-    , getReleaseExecutableResponse
-    , grerExecutable
-    , grerRulesetName
-    , grerUpdateTime
-    , grerSyncTime
-    , grerExecutableVersion
-    , grerLanguage
-
-    -- ** TestResult
-    , TestResult
-    , testResult
-    , trState
-    , trFunctionCalls
-    , trVisitedExpressions
-    , trErrorPosition
-    , trDebugMessages
-
-    -- ** Xgafv
-    , Xgafv (..)
-
-    -- ** IssueSeverity
-    , IssueSeverity (..)
-
-    -- ** Source
-    , Source
-    , source
-    , sFiles
-
-    -- ** TestCaseExpectation
-    , TestCaseExpectation (..)
-
-    -- ** TestSuite
-    , TestSuite
-    , testSuite
-    , tsTestCases
-
-    -- ** TestRulesetRequest
-    , TestRulesetRequest
-    , testRulesetRequest
-    , trrSource
-    , trrTestSuite
-
-    -- ** File
-    , File
-    , file
-    , fFingerprint
-    , fContent
-    , fName
-
-    -- ** GetReleaseExecutableResponseExecutableVersion
-    , GetReleaseExecutableResponseExecutableVersion (..)
-
-    -- ** GetReleaseExecutableResponseLanguage
-    , GetReleaseExecutableResponseLanguage (..)
-
-    -- ** ListRulesetsResponse
-    , ListRulesetsResponse
-    , listRulesetsResponse
-    , lRulesets
-    , lNextPageToken
-
-    -- ** Issue
-    , Issue
-    , issue
-    , iSourcePosition
-    , iSeverity
-    , iDescription
-
-    -- ** UpdateReleaseRequest
-    , UpdateReleaseRequest
-    , updateReleaseRequest
-    , urrUpdateMask
-    , urrRelease
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-import           Network.Google.Resource.FirebaseRules.Projects.Releases.Create
-import           Network.Google.Resource.FirebaseRules.Projects.Releases.Delete
-import           Network.Google.Resource.FirebaseRules.Projects.Releases.Get
-import           Network.Google.Resource.FirebaseRules.Projects.Releases.GetExecutable
-import           Network.Google.Resource.FirebaseRules.Projects.Releases.List
-import           Network.Google.Resource.FirebaseRules.Projects.Releases.Patch
-import           Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create
-import           Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete
-import           Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get
-import           Network.Google.Resource.FirebaseRules.Projects.Rulesets.List
-import           Network.Google.Resource.FirebaseRules.Projects.Test
-
-{- $resources
-TODO
--}
-
--- | Represents the entirety of the methods and resources available for the Firebase Rules API service.
-type FirebaseRulesAPI =
-     ProjectsRulesetsListResource :<|>
-       ProjectsRulesetsGetResource
-       :<|> ProjectsRulesetsCreateResource
-       :<|> ProjectsRulesetsDeleteResource
-       :<|> ProjectsReleasesListResource
-       :<|> ProjectsReleasesPatchResource
-       :<|> ProjectsReleasesGetResource
-       :<|> ProjectsReleasesGetExecutableResource
-       :<|> ProjectsReleasesCreateResource
-       :<|> ProjectsReleasesDeleteResource
-       :<|> ProjectsTestResource
diff --git a/gen/Network/Google/FirebaseRules/Types.hs b/gen/Network/Google/FirebaseRules/Types.hs
deleted file mode 100644
--- a/gen/Network/Google/FirebaseRules/Types.hs
+++ /dev/null
@@ -1,204 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.FirebaseRules.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.FirebaseRules.Types
-    (
-    -- * Service Configuration
-      firebaseRulesService
-
-    -- * OAuth Scopes
-    , firebaseScope
-    , cloudPlatformScope
-    , firebaseReadOnlyScope
-
-    -- * SourcePosition
-    , SourcePosition
-    , sourcePosition
-    , spLine
-    , spColumn
-    , spFileName
-
-    -- * TestCase
-    , TestCase
-    , testCase
-    , tcResource
-    , tcExpectation
-    , tcFunctionMocks
-    , tcRequest
-
-    -- * VisitedExpression
-    , VisitedExpression
-    , visitedExpression
-    , veSourcePosition
-    , veValue
-
-    -- * Empty
-    , Empty
-    , empty
-
-    -- * FunctionMock
-    , FunctionMock
-    , functionMock
-    , fmArgs
-    , fmFunction
-    , fmResult
-
-    -- * TestResultState
-    , TestResultState (..)
-
-    -- * FunctionCall
-    , FunctionCall
-    , functionCall
-    , fcArgs
-    , fcFunction
-
-    -- * ListReleasesResponse
-    , ListReleasesResponse
-    , listReleasesResponse
-    , lrrNextPageToken
-    , lrrReleases
-
-    -- * Result
-    , Result
-    , result
-    , rValue
-    , rUndefined
-
-    -- * TestRulesetResponse
-    , TestRulesetResponse
-    , testRulesetResponse
-    , trrTestResults
-    , trrIssues
-
-    -- * Release
-    , Release
-    , release
-    , rRulesetName
-    , rUpdateTime
-    , rName
-    , rCreateTime
-
-    -- * Arg
-    , Arg
-    , arg
-    , aAnyValue
-    , aExactValue
-
-    -- * Ruleset
-    , Ruleset
-    , ruleset
-    , rulName
-    , rulSource
-    , rulCreateTime
-
-    -- * GetReleaseExecutableResponse
-    , GetReleaseExecutableResponse
-    , getReleaseExecutableResponse
-    , grerExecutable
-    , grerRulesetName
-    , grerUpdateTime
-    , grerSyncTime
-    , grerExecutableVersion
-    , grerLanguage
-
-    -- * TestResult
-    , TestResult
-    , testResult
-    , trState
-    , trFunctionCalls
-    , trVisitedExpressions
-    , trErrorPosition
-    , trDebugMessages
-
-    -- * Xgafv
-    , Xgafv (..)
-
-    -- * IssueSeverity
-    , IssueSeverity (..)
-
-    -- * Source
-    , Source
-    , source
-    , sFiles
-
-    -- * TestCaseExpectation
-    , TestCaseExpectation (..)
-
-    -- * TestSuite
-    , TestSuite
-    , testSuite
-    , tsTestCases
-
-    -- * TestRulesetRequest
-    , TestRulesetRequest
-    , testRulesetRequest
-    , trrSource
-    , trrTestSuite
-
-    -- * File
-    , File
-    , file
-    , fFingerprint
-    , fContent
-    , fName
-
-    -- * GetReleaseExecutableResponseExecutableVersion
-    , GetReleaseExecutableResponseExecutableVersion (..)
-
-    -- * GetReleaseExecutableResponseLanguage
-    , GetReleaseExecutableResponseLanguage (..)
-
-    -- * ListRulesetsResponse
-    , ListRulesetsResponse
-    , listRulesetsResponse
-    , lRulesets
-    , lNextPageToken
-
-    -- * Issue
-    , Issue
-    , issue
-    , iSourcePosition
-    , iSeverity
-    , iDescription
-
-    -- * UpdateReleaseRequest
-    , UpdateReleaseRequest
-    , updateReleaseRequest
-    , urrUpdateMask
-    , urrRelease
-    ) where
-
-import           Network.Google.FirebaseRules.Types.Product
-import           Network.Google.FirebaseRules.Types.Sum
-import           Network.Google.Prelude
-
--- | Default request referring to version 'v1' of the Firebase Rules API. This contains the host and root path used as a starting point for constructing service requests.
-firebaseRulesService :: ServiceConfig
-firebaseRulesService
-  = defaultService (ServiceId "firebaserules:v1")
-      "firebaserules.googleapis.com"
-
--- | View and administer all your Firebase data and settings
-firebaseScope :: Proxy '["https://www.googleapis.com/auth/firebase"]
-firebaseScope = Proxy
-
--- | View and manage your data across Google Cloud Platform services
-cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
-cloudPlatformScope = Proxy
-
--- | View all your Firebase data and settings
-firebaseReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/firebase.readonly"]
-firebaseReadOnlyScope = Proxy
diff --git a/gen/Network/Google/FirebaseRules/Types/Product.hs b/gen/Network/Google/FirebaseRules/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/Google/FirebaseRules/Types/Product.hs
+++ /dev/null
@@ -1,1287 +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.FirebaseRules.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.FirebaseRules.Types.Product where
-
-import           Network.Google.FirebaseRules.Types.Sum
-import           Network.Google.Prelude
-
--- | Position in the \`Source\` content including its line, column number,
--- and an index of the \`File\` in the \`Source\` message. Used for debug
--- purposes.
---
--- /See:/ 'sourcePosition' smart constructor.
-data SourcePosition =
-  SourcePosition'
-    { _spLine     :: !(Maybe (Textual Int32))
-    , _spColumn   :: !(Maybe (Textual Int32))
-    , _spFileName :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SourcePosition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spLine'
---
--- * 'spColumn'
---
--- * 'spFileName'
-sourcePosition
-    :: SourcePosition
-sourcePosition =
-  SourcePosition'
-    {_spLine = Nothing, _spColumn = Nothing, _spFileName = Nothing}
-
-
--- | Line number of the source fragment. 1-based.
-spLine :: Lens' SourcePosition (Maybe Int32)
-spLine
-  = lens _spLine (\ s a -> s{_spLine = a}) .
-      mapping _Coerce
-
--- | First column on the source line associated with the source fragment.
-spColumn :: Lens' SourcePosition (Maybe Int32)
-spColumn
-  = lens _spColumn (\ s a -> s{_spColumn = a}) .
-      mapping _Coerce
-
--- | Name of the \`File\`.
-spFileName :: Lens' SourcePosition (Maybe Text)
-spFileName
-  = lens _spFileName (\ s a -> s{_spFileName = a})
-
-instance FromJSON SourcePosition where
-        parseJSON
-          = withObject "SourcePosition"
-              (\ o ->
-                 SourcePosition' <$>
-                   (o .:? "line") <*> (o .:? "column") <*>
-                     (o .:? "fileName"))
-
-instance ToJSON SourcePosition where
-        toJSON SourcePosition'{..}
-          = object
-              (catMaybes
-                 [("line" .=) <$> _spLine,
-                  ("column" .=) <$> _spColumn,
-                  ("fileName" .=) <$> _spFileName])
-
--- | \`TestCase\` messages provide the request context and an expectation as
--- to whether the given context will be allowed or denied. Test cases may
--- specify the \`request\`, \`resource\`, and \`function_mocks\` to mock a
--- function call to a service-provided function. The \`request\` object
--- represents context present at request-time. The \`resource\` is the
--- value of the target resource as it appears in persistent storage before
--- the request is executed.
---
--- /See:/ 'testCase' smart constructor.
-data TestCase =
-  TestCase'
-    { _tcResource      :: !(Maybe JSONValue)
-    , _tcExpectation   :: !(Maybe TestCaseExpectation)
-    , _tcFunctionMocks :: !(Maybe [FunctionMock])
-    , _tcRequest       :: !(Maybe JSONValue)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TestCase' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tcResource'
---
--- * 'tcExpectation'
---
--- * 'tcFunctionMocks'
---
--- * 'tcRequest'
-testCase
-    :: TestCase
-testCase =
-  TestCase'
-    { _tcResource = Nothing
-    , _tcExpectation = Nothing
-    , _tcFunctionMocks = Nothing
-    , _tcRequest = Nothing
-    }
-
-
--- | Optional resource value as it appears in persistent storage before the
--- request is fulfilled. The resource type depends on the \`request.path\`
--- value.
-tcResource :: Lens' TestCase (Maybe JSONValue)
-tcResource
-  = lens _tcResource (\ s a -> s{_tcResource = a})
-
--- | Test expectation.
-tcExpectation :: Lens' TestCase (Maybe TestCaseExpectation)
-tcExpectation
-  = lens _tcExpectation
-      (\ s a -> s{_tcExpectation = a})
-
--- | Optional function mocks for service-defined functions. If not set, any
--- service defined function is expected to return an error, which may or
--- may not influence the test outcome.
-tcFunctionMocks :: Lens' TestCase [FunctionMock]
-tcFunctionMocks
-  = lens _tcFunctionMocks
-      (\ s a -> s{_tcFunctionMocks = a})
-      . _Default
-      . _Coerce
-
--- | Request context. The exact format of the request context is
--- service-dependent. See the appropriate service documentation for
--- information about the supported fields and types on the request.
--- Minimally, all services support the following fields and types: Request
--- field | Type ---------------|----------------- auth.uid | \`string\`
--- auth.token | \`map\` headers | \`map\` method | \`string\` params |
--- \`map\` path | \`string\` time | \`google.protobuf.Timestamp\` If the
--- request value is not well-formed for the service, the request will be
--- rejected as an invalid argument.
-tcRequest :: Lens' TestCase (Maybe JSONValue)
-tcRequest
-  = lens _tcRequest (\ s a -> s{_tcRequest = a})
-
-instance FromJSON TestCase where
-        parseJSON
-          = withObject "TestCase"
-              (\ o ->
-                 TestCase' <$>
-                   (o .:? "resource") <*> (o .:? "expectation") <*>
-                     (o .:? "functionMocks" .!= mempty)
-                     <*> (o .:? "request"))
-
-instance ToJSON TestCase where
-        toJSON TestCase'{..}
-          = object
-              (catMaybes
-                 [("resource" .=) <$> _tcResource,
-                  ("expectation" .=) <$> _tcExpectation,
-                  ("functionMocks" .=) <$> _tcFunctionMocks,
-                  ("request" .=) <$> _tcRequest])
-
--- | Store the position and access outcome for an expression visited in
--- rules.
---
--- /See:/ 'visitedExpression' smart constructor.
-data VisitedExpression =
-  VisitedExpression'
-    { _veSourcePosition :: !(Maybe SourcePosition)
-    , _veValue          :: !(Maybe JSONValue)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VisitedExpression' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'veSourcePosition'
---
--- * 'veValue'
-visitedExpression
-    :: VisitedExpression
-visitedExpression =
-  VisitedExpression' {_veSourcePosition = Nothing, _veValue = Nothing}
-
-
--- | Position in the \`Source\` or \`Ruleset\` where an expression was
--- visited.
-veSourcePosition :: Lens' VisitedExpression (Maybe SourcePosition)
-veSourcePosition
-  = lens _veSourcePosition
-      (\ s a -> s{_veSourcePosition = a})
-
--- | The evaluated value for the visited expression, e.g. true\/false
-veValue :: Lens' VisitedExpression (Maybe JSONValue)
-veValue = lens _veValue (\ s a -> s{_veValue = a})
-
-instance FromJSON VisitedExpression where
-        parseJSON
-          = withObject "VisitedExpression"
-              (\ o ->
-                 VisitedExpression' <$>
-                   (o .:? "sourcePosition") <*> (o .:? "value"))
-
-instance ToJSON VisitedExpression where
-        toJSON VisitedExpression'{..}
-          = object
-              (catMaybes
-                 [("sourcePosition" .=) <$> _veSourcePosition,
-                  ("value" .=) <$> _veValue])
-
--- | A generic empty message that you can re-use to avoid defining duplicated
--- empty messages in your APIs. A typical example is to use it as the
--- request or the response type of an API method. For instance: service Foo
--- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The
--- JSON representation for \`Empty\` is empty JSON object \`{}\`.
---
--- /See:/ 'empty' smart constructor.
-data Empty =
-  Empty'
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Empty' with the minimum fields required to make a request.
---
-empty
-    :: Empty
-empty = Empty'
-
-
-instance FromJSON Empty where
-        parseJSON = withObject "Empty" (\ o -> pure Empty')
-
-instance ToJSON Empty where
-        toJSON = const emptyObject
-
--- | Mock function definition. Mocks must refer to a function declared by the
--- target service. The type of the function args and result will be
--- inferred at test time. If either the arg or result values are not
--- compatible with function type declaration, the request will be
--- considered invalid. More than one \`FunctionMock\` may be provided for a
--- given function name so long as the \`Arg\` matchers are distinct. There
--- may be only one function for a given overload where all \`Arg\` values
--- are \`Arg.any_value\`.
---
--- /See:/ 'functionMock' smart constructor.
-data FunctionMock =
-  FunctionMock'
-    { _fmArgs     :: !(Maybe [Arg])
-    , _fmFunction :: !(Maybe Text)
-    , _fmResult   :: !(Maybe Result)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FunctionMock' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fmArgs'
---
--- * 'fmFunction'
---
--- * 'fmResult'
-functionMock
-    :: FunctionMock
-functionMock =
-  FunctionMock' {_fmArgs = Nothing, _fmFunction = Nothing, _fmResult = Nothing}
-
-
--- | The list of \`Arg\` values to match. The order in which the arguments
--- are provided is the order in which they must appear in the function
--- invocation.
-fmArgs :: Lens' FunctionMock [Arg]
-fmArgs
-  = lens _fmArgs (\ s a -> s{_fmArgs = a}) . _Default .
-      _Coerce
-
--- | The name of the function. The function name must match one provided by a
--- service declaration.
-fmFunction :: Lens' FunctionMock (Maybe Text)
-fmFunction
-  = lens _fmFunction (\ s a -> s{_fmFunction = a})
-
--- | The mock result of the function call.
-fmResult :: Lens' FunctionMock (Maybe Result)
-fmResult = lens _fmResult (\ s a -> s{_fmResult = a})
-
-instance FromJSON FunctionMock where
-        parseJSON
-          = withObject "FunctionMock"
-              (\ o ->
-                 FunctionMock' <$>
-                   (o .:? "args" .!= mempty) <*> (o .:? "function") <*>
-                     (o .:? "result"))
-
-instance ToJSON FunctionMock where
-        toJSON FunctionMock'{..}
-          = object
-              (catMaybes
-                 [("args" .=) <$> _fmArgs,
-                  ("function" .=) <$> _fmFunction,
-                  ("result" .=) <$> _fmResult])
-
--- | Represents a service-defined function call that was invoked during test
--- execution.
---
--- /See:/ 'functionCall' smart constructor.
-data FunctionCall =
-  FunctionCall'
-    { _fcArgs     :: !(Maybe [JSONValue])
-    , _fcFunction :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FunctionCall' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fcArgs'
---
--- * 'fcFunction'
-functionCall
-    :: FunctionCall
-functionCall = FunctionCall' {_fcArgs = Nothing, _fcFunction = Nothing}
-
-
--- | The arguments that were provided to the function.
-fcArgs :: Lens' FunctionCall [JSONValue]
-fcArgs
-  = lens _fcArgs (\ s a -> s{_fcArgs = a}) . _Default .
-      _Coerce
-
--- | Name of the function invoked.
-fcFunction :: Lens' FunctionCall (Maybe Text)
-fcFunction
-  = lens _fcFunction (\ s a -> s{_fcFunction = a})
-
-instance FromJSON FunctionCall where
-        parseJSON
-          = withObject "FunctionCall"
-              (\ o ->
-                 FunctionCall' <$>
-                   (o .:? "args" .!= mempty) <*> (o .:? "function"))
-
-instance ToJSON FunctionCall where
-        toJSON FunctionCall'{..}
-          = object
-              (catMaybes
-                 [("args" .=) <$> _fcArgs,
-                  ("function" .=) <$> _fcFunction])
-
--- | The response for FirebaseRulesService.ListReleases.
---
--- /See:/ 'listReleasesResponse' smart constructor.
-data ListReleasesResponse =
-  ListReleasesResponse'
-    { _lrrNextPageToken :: !(Maybe Text)
-    , _lrrReleases      :: !(Maybe [Release])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListReleasesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lrrNextPageToken'
---
--- * 'lrrReleases'
-listReleasesResponse
-    :: ListReleasesResponse
-listReleasesResponse =
-  ListReleasesResponse' {_lrrNextPageToken = Nothing, _lrrReleases = Nothing}
-
-
--- | The pagination token to retrieve the next page of results. If the value
--- is empty, no further results remain.
-lrrNextPageToken :: Lens' ListReleasesResponse (Maybe Text)
-lrrNextPageToken
-  = lens _lrrNextPageToken
-      (\ s a -> s{_lrrNextPageToken = a})
-
--- | List of \`Release\` instances.
-lrrReleases :: Lens' ListReleasesResponse [Release]
-lrrReleases
-  = lens _lrrReleases (\ s a -> s{_lrrReleases = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ListReleasesResponse where
-        parseJSON
-          = withObject "ListReleasesResponse"
-              (\ o ->
-                 ListReleasesResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "releases" .!= mempty))
-
-instance ToJSON ListReleasesResponse where
-        toJSON ListReleasesResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lrrNextPageToken,
-                  ("releases" .=) <$> _lrrReleases])
-
--- | Possible result values from the function mock invocation.
---
--- /See:/ 'result' smart constructor.
-data Result =
-  Result'
-    { _rValue     :: !(Maybe JSONValue)
-    , _rUndefined :: !(Maybe Empty)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Result' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rValue'
---
--- * 'rUndefined'
-result
-    :: Result
-result = Result' {_rValue = Nothing, _rUndefined = Nothing}
-
-
--- | The result is an actual value. The type of the value must match that of
--- the type declared by the service.
-rValue :: Lens' Result (Maybe JSONValue)
-rValue = lens _rValue (\ s a -> s{_rValue = a})
-
--- | The result is undefined, meaning the result could not be computed.
-rUndefined :: Lens' Result (Maybe Empty)
-rUndefined
-  = lens _rUndefined (\ s a -> s{_rUndefined = a})
-
-instance FromJSON Result where
-        parseJSON
-          = withObject "Result"
-              (\ o ->
-                 Result' <$> (o .:? "value") <*> (o .:? "undefined"))
-
-instance ToJSON Result where
-        toJSON Result'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _rValue,
-                  ("undefined" .=) <$> _rUndefined])
-
--- | The response for FirebaseRulesService.TestRuleset.
---
--- /See:/ 'testRulesetResponse' smart constructor.
-data TestRulesetResponse =
-  TestRulesetResponse'
-    { _trrTestResults :: !(Maybe [TestResult])
-    , _trrIssues      :: !(Maybe [Issue])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TestRulesetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'trrTestResults'
---
--- * 'trrIssues'
-testRulesetResponse
-    :: TestRulesetResponse
-testRulesetResponse =
-  TestRulesetResponse' {_trrTestResults = Nothing, _trrIssues = Nothing}
-
-
--- | The set of test results given the test cases in the \`TestSuite\`. The
--- results will appear in the same order as the test cases appear in the
--- \`TestSuite\`.
-trrTestResults :: Lens' TestRulesetResponse [TestResult]
-trrTestResults
-  = lens _trrTestResults
-      (\ s a -> s{_trrTestResults = a})
-      . _Default
-      . _Coerce
-
--- | Syntactic and semantic \`Source\` issues of varying severity. Issues of
--- \`ERROR\` severity will prevent tests from executing.
-trrIssues :: Lens' TestRulesetResponse [Issue]
-trrIssues
-  = lens _trrIssues (\ s a -> s{_trrIssues = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON TestRulesetResponse where
-        parseJSON
-          = withObject "TestRulesetResponse"
-              (\ o ->
-                 TestRulesetResponse' <$>
-                   (o .:? "testResults" .!= mempty) <*>
-                     (o .:? "issues" .!= mempty))
-
-instance ToJSON TestRulesetResponse where
-        toJSON TestRulesetResponse'{..}
-          = object
-              (catMaybes
-                 [("testResults" .=) <$> _trrTestResults,
-                  ("issues" .=) <$> _trrIssues])
-
--- | \`Release\` is a named reference to a \`Ruleset\`. Once a \`Release\`
--- refers to a \`Ruleset\`, rules-enabled services will be able to enforce
--- the \`Ruleset\`.
---
--- /See:/ 'release' smart constructor.
-data Release =
-  Release'
-    { _rRulesetName :: !(Maybe Text)
-    , _rUpdateTime  :: !(Maybe DateTime')
-    , _rName        :: !(Maybe Text)
-    , _rCreateTime  :: !(Maybe DateTime')
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Release' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rRulesetName'
---
--- * 'rUpdateTime'
---
--- * 'rName'
---
--- * 'rCreateTime'
-release
-    :: Release
-release =
-  Release'
-    { _rRulesetName = Nothing
-    , _rUpdateTime = Nothing
-    , _rName = Nothing
-    , _rCreateTime = Nothing
-    }
-
-
--- | Name of the \`Ruleset\` referred to by this \`Release\`. The \`Ruleset\`
--- must exist the \`Release\` to be created.
-rRulesetName :: Lens' Release (Maybe Text)
-rRulesetName
-  = lens _rRulesetName (\ s a -> s{_rRulesetName = a})
-
--- | Time the release was updated. Output only.
-rUpdateTime :: Lens' Release (Maybe UTCTime)
-rUpdateTime
-  = lens _rUpdateTime (\ s a -> s{_rUpdateTime = a}) .
-      mapping _DateTime
-
--- | Resource name for the \`Release\`. \`Release\` names may be structured
--- \`app1\/prod\/v2\` or flat \`app1_prod_v2\` which affords developers a
--- great deal of flexibility in mapping the name to the style that best
--- fits their existing development practices. For example, a name could
--- refer to an environment, an app, a version, or some combination of
--- three. In the table below, for the project name \`projects\/foo\`, the
--- following relative release paths show how flat and structured names
--- might be chosen to match a desired development \/ deployment strategy.
--- Use Case | Flat Name | Structured Name
--- -------------|---------------------|---------------- Environments |
--- releases\/qa | releases\/qa Apps | releases\/app1_qa |
--- releases\/app1\/qa Versions | releases\/app1_v2_qa |
--- releases\/app1\/v2\/qa The delimiter between the release name path
--- elements can be almost anything and it should work equally well with the
--- release name list filter, but in many ways the structured paths provide
--- a clearer picture of the relationship between \`Release\` instances.
--- Format: \`projects\/{project_id}\/releases\/{release_id}\`
-rName :: Lens' Release (Maybe Text)
-rName = lens _rName (\ s a -> s{_rName = a})
-
--- | Time the release was created. Output only.
-rCreateTime :: Lens' Release (Maybe UTCTime)
-rCreateTime
-  = lens _rCreateTime (\ s a -> s{_rCreateTime = a}) .
-      mapping _DateTime
-
-instance FromJSON Release where
-        parseJSON
-          = withObject "Release"
-              (\ o ->
-                 Release' <$>
-                   (o .:? "rulesetName") <*> (o .:? "updateTime") <*>
-                     (o .:? "name")
-                     <*> (o .:? "createTime"))
-
-instance ToJSON Release where
-        toJSON Release'{..}
-          = object
-              (catMaybes
-                 [("rulesetName" .=) <$> _rRulesetName,
-                  ("updateTime" .=) <$> _rUpdateTime,
-                  ("name" .=) <$> _rName,
-                  ("createTime" .=) <$> _rCreateTime])
-
--- | Arg matchers for the mock function.
---
--- /See:/ 'arg' smart constructor.
-data Arg =
-  Arg'
-    { _aAnyValue   :: !(Maybe Empty)
-    , _aExactValue :: !(Maybe JSONValue)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Arg' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aAnyValue'
---
--- * 'aExactValue'
-arg
-    :: Arg
-arg = Arg' {_aAnyValue = Nothing, _aExactValue = Nothing}
-
-
--- | Argument matches any value provided.
-aAnyValue :: Lens' Arg (Maybe Empty)
-aAnyValue
-  = lens _aAnyValue (\ s a -> s{_aAnyValue = a})
-
--- | Argument exactly matches value provided.
-aExactValue :: Lens' Arg (Maybe JSONValue)
-aExactValue
-  = lens _aExactValue (\ s a -> s{_aExactValue = a})
-
-instance FromJSON Arg where
-        parseJSON
-          = withObject "Arg"
-              (\ o ->
-                 Arg' <$> (o .:? "anyValue") <*> (o .:? "exactValue"))
-
-instance ToJSON Arg where
-        toJSON Arg'{..}
-          = object
-              (catMaybes
-                 [("anyValue" .=) <$> _aAnyValue,
-                  ("exactValue" .=) <$> _aExactValue])
-
--- | \`Ruleset\` is an immutable copy of \`Source\` with a globally unique
--- identifier and a creation time.
---
--- /See:/ 'ruleset' smart constructor.
-data Ruleset =
-  Ruleset'
-    { _rulName       :: !(Maybe Text)
-    , _rulSource     :: !(Maybe Source)
-    , _rulCreateTime :: !(Maybe DateTime')
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Ruleset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rulName'
---
--- * 'rulSource'
---
--- * 'rulCreateTime'
-ruleset
-    :: Ruleset
-ruleset =
-  Ruleset' {_rulName = Nothing, _rulSource = Nothing, _rulCreateTime = Nothing}
-
-
--- | Name of the \`Ruleset\`. The ruleset_id is auto generated by the
--- service. Format: \`projects\/{project_id}\/rulesets\/{ruleset_id}\`
--- Output only.
-rulName :: Lens' Ruleset (Maybe Text)
-rulName = lens _rulName (\ s a -> s{_rulName = a})
-
--- | \`Source\` for the \`Ruleset\`.
-rulSource :: Lens' Ruleset (Maybe Source)
-rulSource
-  = lens _rulSource (\ s a -> s{_rulSource = a})
-
--- | Time the \`Ruleset\` was created. Output only.
-rulCreateTime :: Lens' Ruleset (Maybe UTCTime)
-rulCreateTime
-  = lens _rulCreateTime
-      (\ s a -> s{_rulCreateTime = a})
-      . mapping _DateTime
-
-instance FromJSON Ruleset where
-        parseJSON
-          = withObject "Ruleset"
-              (\ o ->
-                 Ruleset' <$>
-                   (o .:? "name") <*> (o .:? "source") <*>
-                     (o .:? "createTime"))
-
-instance ToJSON Ruleset where
-        toJSON Ruleset'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _rulName,
-                  ("source" .=) <$> _rulSource,
-                  ("createTime" .=) <$> _rulCreateTime])
-
--- | The response for FirebaseRulesService.GetReleaseExecutable
---
--- /See:/ 'getReleaseExecutableResponse' smart constructor.
-data GetReleaseExecutableResponse =
-  GetReleaseExecutableResponse'
-    { _grerExecutable        :: !(Maybe Bytes)
-    , _grerRulesetName       :: !(Maybe Text)
-    , _grerUpdateTime        :: !(Maybe DateTime')
-    , _grerSyncTime          :: !(Maybe DateTime')
-    , _grerExecutableVersion :: !(Maybe GetReleaseExecutableResponseExecutableVersion)
-    , _grerLanguage          :: !(Maybe GetReleaseExecutableResponseLanguage)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetReleaseExecutableResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'grerExecutable'
---
--- * 'grerRulesetName'
---
--- * 'grerUpdateTime'
---
--- * 'grerSyncTime'
---
--- * 'grerExecutableVersion'
---
--- * 'grerLanguage'
-getReleaseExecutableResponse
-    :: GetReleaseExecutableResponse
-getReleaseExecutableResponse =
-  GetReleaseExecutableResponse'
-    { _grerExecutable = Nothing
-    , _grerRulesetName = Nothing
-    , _grerUpdateTime = Nothing
-    , _grerSyncTime = Nothing
-    , _grerExecutableVersion = Nothing
-    , _grerLanguage = Nothing
-    }
-
-
--- | Executable view of the \`Ruleset\` referenced by the \`Release\`.
-grerExecutable :: Lens' GetReleaseExecutableResponse (Maybe ByteString)
-grerExecutable
-  = lens _grerExecutable
-      (\ s a -> s{_grerExecutable = a})
-      . mapping _Bytes
-
--- | \`Ruleset\` name associated with the \`Release\` executable.
-grerRulesetName :: Lens' GetReleaseExecutableResponse (Maybe Text)
-grerRulesetName
-  = lens _grerRulesetName
-      (\ s a -> s{_grerRulesetName = a})
-
--- | Timestamp for the most recent \`Release.update_time\`.
-grerUpdateTime :: Lens' GetReleaseExecutableResponse (Maybe UTCTime)
-grerUpdateTime
-  = lens _grerUpdateTime
-      (\ s a -> s{_grerUpdateTime = a})
-      . mapping _DateTime
-
--- | Optional, indicates the freshness of the result. The response is
--- guaranteed to be the latest within an interval up to the sync_time
--- (inclusive).
-grerSyncTime :: Lens' GetReleaseExecutableResponse (Maybe UTCTime)
-grerSyncTime
-  = lens _grerSyncTime (\ s a -> s{_grerSyncTime = a})
-      . mapping _DateTime
-
--- | The Rules runtime version of the executable.
-grerExecutableVersion :: Lens' GetReleaseExecutableResponse (Maybe GetReleaseExecutableResponseExecutableVersion)
-grerExecutableVersion
-  = lens _grerExecutableVersion
-      (\ s a -> s{_grerExecutableVersion = a})
-
--- | \`Language\` used to generate the executable bytes.
-grerLanguage :: Lens' GetReleaseExecutableResponse (Maybe GetReleaseExecutableResponseLanguage)
-grerLanguage
-  = lens _grerLanguage (\ s a -> s{_grerLanguage = a})
-
-instance FromJSON GetReleaseExecutableResponse where
-        parseJSON
-          = withObject "GetReleaseExecutableResponse"
-              (\ o ->
-                 GetReleaseExecutableResponse' <$>
-                   (o .:? "executable") <*> (o .:? "rulesetName") <*>
-                     (o .:? "updateTime")
-                     <*> (o .:? "syncTime")
-                     <*> (o .:? "executableVersion")
-                     <*> (o .:? "language"))
-
-instance ToJSON GetReleaseExecutableResponse where
-        toJSON GetReleaseExecutableResponse'{..}
-          = object
-              (catMaybes
-                 [("executable" .=) <$> _grerExecutable,
-                  ("rulesetName" .=) <$> _grerRulesetName,
-                  ("updateTime" .=) <$> _grerUpdateTime,
-                  ("syncTime" .=) <$> _grerSyncTime,
-                  ("executableVersion" .=) <$> _grerExecutableVersion,
-                  ("language" .=) <$> _grerLanguage])
-
--- | Test result message containing the state of the test as well as a
--- description and source position for test failures.
---
--- /See:/ 'testResult' smart constructor.
-data TestResult =
-  TestResult'
-    { _trState              :: !(Maybe TestResultState)
-    , _trFunctionCalls      :: !(Maybe [FunctionCall])
-    , _trVisitedExpressions :: !(Maybe [VisitedExpression])
-    , _trErrorPosition      :: !(Maybe SourcePosition)
-    , _trDebugMessages      :: !(Maybe [Text])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TestResult' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'trState'
---
--- * 'trFunctionCalls'
---
--- * 'trVisitedExpressions'
---
--- * 'trErrorPosition'
---
--- * 'trDebugMessages'
-testResult
-    :: TestResult
-testResult =
-  TestResult'
-    { _trState = Nothing
-    , _trFunctionCalls = Nothing
-    , _trVisitedExpressions = Nothing
-    , _trErrorPosition = Nothing
-    , _trDebugMessages = Nothing
-    }
-
-
--- | State of the test.
-trState :: Lens' TestResult (Maybe TestResultState)
-trState = lens _trState (\ s a -> s{_trState = a})
-
--- | The set of function calls made to service-defined methods. Function
--- calls are included in the order in which they are encountered during
--- evaluation, are provided for both mocked and unmocked functions, and
--- included on the response regardless of the test \`state\`.
-trFunctionCalls :: Lens' TestResult [FunctionCall]
-trFunctionCalls
-  = lens _trFunctionCalls
-      (\ s a -> s{_trFunctionCalls = a})
-      . _Default
-      . _Coerce
-
--- | The set of visited permission expressions for a given test. This returns
--- the positions and evaluation results of all visited permission
--- expressions which were relevant to the test case, e.g. \`\`\` match
--- \/path { allow read if: } \`\`\` For a detailed report of the
--- intermediate evaluation states, see the \`expression_reports\` field
-trVisitedExpressions :: Lens' TestResult [VisitedExpression]
-trVisitedExpressions
-  = lens _trVisitedExpressions
-      (\ s a -> s{_trVisitedExpressions = a})
-      . _Default
-      . _Coerce
-
--- | Position in the \`Source\` or \`Ruleset\` where the principle runtime
--- error occurs. Evaluation of an expression may result in an error. Rules
--- are deny by default, so a \`DENY\` expectation when an error is
--- generated is valid. When there is a \`DENY\` with an error, the
--- \`SourcePosition\` is returned. E.g. \`error_position { line: 19 column:
--- 37 }\`
-trErrorPosition :: Lens' TestResult (Maybe SourcePosition)
-trErrorPosition
-  = lens _trErrorPosition
-      (\ s a -> s{_trErrorPosition = a})
-
--- | Debug messages related to test execution issues encountered during
--- evaluation. Debug messages may be related to too many or too few
--- invocations of function mocks or to runtime errors that occur during
--- evaluation. For example: \`\`\`Unable to read variable [name:
--- \"resource\"]\`\`\`
-trDebugMessages :: Lens' TestResult [Text]
-trDebugMessages
-  = lens _trDebugMessages
-      (\ s a -> s{_trDebugMessages = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TestResult where
-        parseJSON
-          = withObject "TestResult"
-              (\ o ->
-                 TestResult' <$>
-                   (o .:? "state") <*>
-                     (o .:? "functionCalls" .!= mempty)
-                     <*> (o .:? "visitedExpressions" .!= mempty)
-                     <*> (o .:? "errorPosition")
-                     <*> (o .:? "debugMessages" .!= mempty))
-
-instance ToJSON TestResult where
-        toJSON TestResult'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _trState,
-                  ("functionCalls" .=) <$> _trFunctionCalls,
-                  ("visitedExpressions" .=) <$> _trVisitedExpressions,
-                  ("errorPosition" .=) <$> _trErrorPosition,
-                  ("debugMessages" .=) <$> _trDebugMessages])
-
--- | \`Source\` is one or more \`File\` messages comprising a logical set of
--- rules.
---
--- /See:/ 'source' smart constructor.
-newtype Source =
-  Source'
-    { _sFiles :: Maybe [File]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Source' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sFiles'
-source
-    :: Source
-source = Source' {_sFiles = Nothing}
-
-
--- | \`File\` set constituting the \`Source\` bundle.
-sFiles :: Lens' Source [File]
-sFiles
-  = lens _sFiles (\ s a -> s{_sFiles = a}) . _Default .
-      _Coerce
-
-instance FromJSON Source where
-        parseJSON
-          = withObject "Source"
-              (\ o -> Source' <$> (o .:? "files" .!= mempty))
-
-instance ToJSON Source where
-        toJSON Source'{..}
-          = object (catMaybes [("files" .=) <$> _sFiles])
-
--- | \`TestSuite\` is a collection of \`TestCase\` instances that validate
--- the logical correctness of a \`Ruleset\`. The \`TestSuite\` may be
--- referenced in-line within a \`TestRuleset\` invocation or as part of a
--- \`Release\` object as a pre-release check.
---
--- /See:/ 'testSuite' smart constructor.
-newtype TestSuite =
-  TestSuite'
-    { _tsTestCases :: Maybe [TestCase]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TestSuite' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tsTestCases'
-testSuite
-    :: TestSuite
-testSuite = TestSuite' {_tsTestCases = Nothing}
-
-
--- | Collection of test cases associated with the \`TestSuite\`.
-tsTestCases :: Lens' TestSuite [TestCase]
-tsTestCases
-  = lens _tsTestCases (\ s a -> s{_tsTestCases = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON TestSuite where
-        parseJSON
-          = withObject "TestSuite"
-              (\ o ->
-                 TestSuite' <$> (o .:? "testCases" .!= mempty))
-
-instance ToJSON TestSuite where
-        toJSON TestSuite'{..}
-          = object
-              (catMaybes [("testCases" .=) <$> _tsTestCases])
-
--- | The request for FirebaseRulesService.TestRuleset.
---
--- /See:/ 'testRulesetRequest' smart constructor.
-data TestRulesetRequest =
-  TestRulesetRequest'
-    { _trrSource    :: !(Maybe Source)
-    , _trrTestSuite :: !(Maybe TestSuite)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TestRulesetRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'trrSource'
---
--- * 'trrTestSuite'
-testRulesetRequest
-    :: TestRulesetRequest
-testRulesetRequest =
-  TestRulesetRequest' {_trrSource = Nothing, _trrTestSuite = Nothing}
-
-
--- | Optional \`Source\` to be checked for correctness. This field must not
--- be set when the resource name refers to a \`Ruleset\`.
-trrSource :: Lens' TestRulesetRequest (Maybe Source)
-trrSource
-  = lens _trrSource (\ s a -> s{_trrSource = a})
-
--- | Inline \`TestSuite\` to run.
-trrTestSuite :: Lens' TestRulesetRequest (Maybe TestSuite)
-trrTestSuite
-  = lens _trrTestSuite (\ s a -> s{_trrTestSuite = a})
-
-instance FromJSON TestRulesetRequest where
-        parseJSON
-          = withObject "TestRulesetRequest"
-              (\ o ->
-                 TestRulesetRequest' <$>
-                   (o .:? "source") <*> (o .:? "testSuite"))
-
-instance ToJSON TestRulesetRequest where
-        toJSON TestRulesetRequest'{..}
-          = object
-              (catMaybes
-                 [("source" .=) <$> _trrSource,
-                  ("testSuite" .=) <$> _trrTestSuite])
-
--- | \`File\` containing source content.
---
--- /See:/ 'file' smart constructor.
-data File =
-  File'
-    { _fFingerprint :: !(Maybe Bytes)
-    , _fContent     :: !(Maybe Text)
-    , _fName        :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'File' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fFingerprint'
---
--- * 'fContent'
---
--- * 'fName'
-file
-    :: File
-file = File' {_fFingerprint = Nothing, _fContent = Nothing, _fName = Nothing}
-
-
--- | Fingerprint (e.g. github sha) associated with the \`File\`.
-fFingerprint :: Lens' File (Maybe ByteString)
-fFingerprint
-  = lens _fFingerprint (\ s a -> s{_fFingerprint = a})
-      . mapping _Bytes
-
--- | Textual Content.
-fContent :: Lens' File (Maybe Text)
-fContent = lens _fContent (\ s a -> s{_fContent = a})
-
--- | File name.
-fName :: Lens' File (Maybe Text)
-fName = lens _fName (\ s a -> s{_fName = a})
-
-instance FromJSON File where
-        parseJSON
-          = withObject "File"
-              (\ o ->
-                 File' <$>
-                   (o .:? "fingerprint") <*> (o .:? "content") <*>
-                     (o .:? "name"))
-
-instance ToJSON File where
-        toJSON File'{..}
-          = object
-              (catMaybes
-                 [("fingerprint" .=) <$> _fFingerprint,
-                  ("content" .=) <$> _fContent,
-                  ("name" .=) <$> _fName])
-
--- | The response for FirebaseRulesService.ListRulesets.
---
--- /See:/ 'listRulesetsResponse' smart constructor.
-data ListRulesetsResponse =
-  ListRulesetsResponse'
-    { _lRulesets      :: !(Maybe [Ruleset])
-    , _lNextPageToken :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListRulesetsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lRulesets'
---
--- * 'lNextPageToken'
-listRulesetsResponse
-    :: ListRulesetsResponse
-listRulesetsResponse =
-  ListRulesetsResponse' {_lRulesets = Nothing, _lNextPageToken = Nothing}
-
-
--- | List of \`Ruleset\` instances.
-lRulesets :: Lens' ListRulesetsResponse [Ruleset]
-lRulesets
-  = lens _lRulesets (\ s a -> s{_lRulesets = a}) .
-      _Default
-      . _Coerce
-
--- | The pagination token to retrieve the next page of results. If the value
--- is empty, no further results remain.
-lNextPageToken :: Lens' ListRulesetsResponse (Maybe Text)
-lNextPageToken
-  = lens _lNextPageToken
-      (\ s a -> s{_lNextPageToken = a})
-
-instance FromJSON ListRulesetsResponse where
-        parseJSON
-          = withObject "ListRulesetsResponse"
-              (\ o ->
-                 ListRulesetsResponse' <$>
-                   (o .:? "rulesets" .!= mempty) <*>
-                     (o .:? "nextPageToken"))
-
-instance ToJSON ListRulesetsResponse where
-        toJSON ListRulesetsResponse'{..}
-          = object
-              (catMaybes
-                 [("rulesets" .=) <$> _lRulesets,
-                  ("nextPageToken" .=) <$> _lNextPageToken])
-
--- | Issues include warnings, errors, and deprecation notices.
---
--- /See:/ 'issue' smart constructor.
-data Issue =
-  Issue'
-    { _iSourcePosition :: !(Maybe SourcePosition)
-    , _iSeverity       :: !(Maybe IssueSeverity)
-    , _iDescription    :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Issue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iSourcePosition'
---
--- * 'iSeverity'
---
--- * 'iDescription'
-issue
-    :: Issue
-issue =
-  Issue'
-    {_iSourcePosition = Nothing, _iSeverity = Nothing, _iDescription = Nothing}
-
-
--- | Position of the issue in the \`Source\`.
-iSourcePosition :: Lens' Issue (Maybe SourcePosition)
-iSourcePosition
-  = lens _iSourcePosition
-      (\ s a -> s{_iSourcePosition = a})
-
--- | The severity of the issue.
-iSeverity :: Lens' Issue (Maybe IssueSeverity)
-iSeverity
-  = lens _iSeverity (\ s a -> s{_iSeverity = a})
-
--- | Short error description.
-iDescription :: Lens' Issue (Maybe Text)
-iDescription
-  = lens _iDescription (\ s a -> s{_iDescription = a})
-
-instance FromJSON Issue where
-        parseJSON
-          = withObject "Issue"
-              (\ o ->
-                 Issue' <$>
-                   (o .:? "sourcePosition") <*> (o .:? "severity") <*>
-                     (o .:? "description"))
-
-instance ToJSON Issue where
-        toJSON Issue'{..}
-          = object
-              (catMaybes
-                 [("sourcePosition" .=) <$> _iSourcePosition,
-                  ("severity" .=) <$> _iSeverity,
-                  ("description" .=) <$> _iDescription])
-
--- | The request for FirebaseRulesService.UpdateReleasePatch.
---
--- /See:/ 'updateReleaseRequest' smart constructor.
-data UpdateReleaseRequest =
-  UpdateReleaseRequest'
-    { _urrUpdateMask :: !(Maybe GFieldMask)
-    , _urrRelease    :: !(Maybe Release)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateReleaseRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'urrUpdateMask'
---
--- * 'urrRelease'
-updateReleaseRequest
-    :: UpdateReleaseRequest
-updateReleaseRequest =
-  UpdateReleaseRequest' {_urrUpdateMask = Nothing, _urrRelease = Nothing}
-
-
--- | Specifies which fields to update.
-urrUpdateMask :: Lens' UpdateReleaseRequest (Maybe GFieldMask)
-urrUpdateMask
-  = lens _urrUpdateMask
-      (\ s a -> s{_urrUpdateMask = a})
-
--- | \`Release\` to update.
-urrRelease :: Lens' UpdateReleaseRequest (Maybe Release)
-urrRelease
-  = lens _urrRelease (\ s a -> s{_urrRelease = a})
-
-instance FromJSON UpdateReleaseRequest where
-        parseJSON
-          = withObject "UpdateReleaseRequest"
-              (\ o ->
-                 UpdateReleaseRequest' <$>
-                   (o .:? "updateMask") <*> (o .:? "release"))
-
-instance ToJSON UpdateReleaseRequest where
-        toJSON UpdateReleaseRequest'{..}
-          = object
-              (catMaybes
-                 [("updateMask" .=) <$> _urrUpdateMask,
-                  ("release" .=) <$> _urrRelease])
diff --git a/gen/Network/Google/FirebaseRules/Types/Sum.hs b/gen/Network/Google/FirebaseRules/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/Google/FirebaseRules/Types/Sum.hs
+++ /dev/null
@@ -1,225 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.FirebaseRules.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.FirebaseRules.Types.Sum where
-
-import           Network.Google.Prelude hiding (Bytes)
-
--- | State of the test.
-data TestResultState
-    = StateUnspecified
-      -- ^ @STATE_UNSPECIFIED@
-      -- Test state is not set.
-    | Success
-      -- ^ @SUCCESS@
-      -- Test is a success.
-    | Failure
-      -- ^ @FAILURE@
-      -- Test is a failure.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TestResultState
-
-instance FromHttpApiData TestResultState where
-    parseQueryParam = \case
-        "STATE_UNSPECIFIED" -> Right StateUnspecified
-        "SUCCESS" -> Right Success
-        "FAILURE" -> Right Failure
-        x -> Left ("Unable to parse TestResultState from: " <> x)
-
-instance ToHttpApiData TestResultState where
-    toQueryParam = \case
-        StateUnspecified -> "STATE_UNSPECIFIED"
-        Success -> "SUCCESS"
-        Failure -> "FAILURE"
-
-instance FromJSON TestResultState where
-    parseJSON = parseJSONText "TestResultState"
-
-instance ToJSON TestResultState where
-    toJSON = toJSONText
-
--- | 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
-
--- | The severity of the issue.
-data IssueSeverity
-    = SeverityUnspecified
-      -- ^ @SEVERITY_UNSPECIFIED@
-      -- An unspecified severity.
-    | Deprecation
-      -- ^ @DEPRECATION@
-      -- Deprecation issue for statements and method that may no longer be
-      -- supported or maintained.
-    | Warning
-      -- ^ @WARNING@
-      -- Warnings such as: unused variables.
-    | Error'
-      -- ^ @ERROR@
-      -- Errors such as: unmatched curly braces or variable redefinition.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable IssueSeverity
-
-instance FromHttpApiData IssueSeverity where
-    parseQueryParam = \case
-        "SEVERITY_UNSPECIFIED" -> Right SeverityUnspecified
-        "DEPRECATION" -> Right Deprecation
-        "WARNING" -> Right Warning
-        "ERROR" -> Right Error'
-        x -> Left ("Unable to parse IssueSeverity from: " <> x)
-
-instance ToHttpApiData IssueSeverity where
-    toQueryParam = \case
-        SeverityUnspecified -> "SEVERITY_UNSPECIFIED"
-        Deprecation -> "DEPRECATION"
-        Warning -> "WARNING"
-        Error' -> "ERROR"
-
-instance FromJSON IssueSeverity where
-    parseJSON = parseJSONText "IssueSeverity"
-
-instance ToJSON IssueSeverity where
-    toJSON = toJSONText
-
--- | Test expectation.
-data TestCaseExpectation
-    = ExpectationUnspecified
-      -- ^ @EXPECTATION_UNSPECIFIED@
-      -- Unspecified expectation.
-    | Allow
-      -- ^ @ALLOW@
-      -- Expect an allowed result.
-    | Deny
-      -- ^ @DENY@
-      -- Expect a denied result.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TestCaseExpectation
-
-instance FromHttpApiData TestCaseExpectation where
-    parseQueryParam = \case
-        "EXPECTATION_UNSPECIFIED" -> Right ExpectationUnspecified
-        "ALLOW" -> Right Allow
-        "DENY" -> Right Deny
-        x -> Left ("Unable to parse TestCaseExpectation from: " <> x)
-
-instance ToHttpApiData TestCaseExpectation where
-    toQueryParam = \case
-        ExpectationUnspecified -> "EXPECTATION_UNSPECIFIED"
-        Allow -> "ALLOW"
-        Deny -> "DENY"
-
-instance FromJSON TestCaseExpectation where
-    parseJSON = parseJSONText "TestCaseExpectation"
-
-instance ToJSON TestCaseExpectation where
-    toJSON = toJSONText
-
--- | The Rules runtime version of the executable.
-data GetReleaseExecutableResponseExecutableVersion
-    = ReleaseExecutableVersionUnspecified
-      -- ^ @RELEASE_EXECUTABLE_VERSION_UNSPECIFIED@
-      -- Executable format unspecified. Defaults to FIREBASE_RULES_EXECUTABLE_V1
-    | FirebaseRulesExecutableV1
-      -- ^ @FIREBASE_RULES_EXECUTABLE_V1@
-      -- Firebase Rules syntax \'rules2\' executable versions: Custom AST for use
-      -- with Java clients.
-    | FirebaseRulesExecutableV2
-      -- ^ @FIREBASE_RULES_EXECUTABLE_V2@
-      -- CEL-based executable for use with C++ clients.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable GetReleaseExecutableResponseExecutableVersion
-
-instance FromHttpApiData GetReleaseExecutableResponseExecutableVersion where
-    parseQueryParam = \case
-        "RELEASE_EXECUTABLE_VERSION_UNSPECIFIED" -> Right ReleaseExecutableVersionUnspecified
-        "FIREBASE_RULES_EXECUTABLE_V1" -> Right FirebaseRulesExecutableV1
-        "FIREBASE_RULES_EXECUTABLE_V2" -> Right FirebaseRulesExecutableV2
-        x -> Left ("Unable to parse GetReleaseExecutableResponseExecutableVersion from: " <> x)
-
-instance ToHttpApiData GetReleaseExecutableResponseExecutableVersion where
-    toQueryParam = \case
-        ReleaseExecutableVersionUnspecified -> "RELEASE_EXECUTABLE_VERSION_UNSPECIFIED"
-        FirebaseRulesExecutableV1 -> "FIREBASE_RULES_EXECUTABLE_V1"
-        FirebaseRulesExecutableV2 -> "FIREBASE_RULES_EXECUTABLE_V2"
-
-instance FromJSON GetReleaseExecutableResponseExecutableVersion where
-    parseJSON = parseJSONText "GetReleaseExecutableResponseExecutableVersion"
-
-instance ToJSON GetReleaseExecutableResponseExecutableVersion where
-    toJSON = toJSONText
-
--- | \`Language\` used to generate the executable bytes.
-data GetReleaseExecutableResponseLanguage
-    = LanguageUnspecified
-      -- ^ @LANGUAGE_UNSPECIFIED@
-      -- Language unspecified. Defaults to FIREBASE_RULES.
-    | FirebaseRules
-      -- ^ @FIREBASE_RULES@
-      -- Firebase Rules language.
-    | EventFlowTriggers
-      -- ^ @EVENT_FLOW_TRIGGERS@
-      -- Event Flow triggers.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable GetReleaseExecutableResponseLanguage
-
-instance FromHttpApiData GetReleaseExecutableResponseLanguage where
-    parseQueryParam = \case
-        "LANGUAGE_UNSPECIFIED" -> Right LanguageUnspecified
-        "FIREBASE_RULES" -> Right FirebaseRules
-        "EVENT_FLOW_TRIGGERS" -> Right EventFlowTriggers
-        x -> Left ("Unable to parse GetReleaseExecutableResponseLanguage from: " <> x)
-
-instance ToHttpApiData GetReleaseExecutableResponseLanguage where
-    toQueryParam = \case
-        LanguageUnspecified -> "LANGUAGE_UNSPECIFIED"
-        FirebaseRules -> "FIREBASE_RULES"
-        EventFlowTriggers -> "EVENT_FLOW_TRIGGERS"
-
-instance FromJSON GetReleaseExecutableResponseLanguage where
-    parseJSON = parseJSONText "GetReleaseExecutableResponseLanguage"
-
-instance ToJSON GetReleaseExecutableResponseLanguage where
-    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Create.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Create.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Create.hs
+++ /dev/null
@@ -1,195 +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.FirebaseRules.Projects.Releases.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)
---
--- Create a \`Release\`. Release names should reflect the developer\'s
--- deployment practices. For example, the release name may include the
--- environment name, application name, application version, or any other
--- name meaningful to the developer. Once a \`Release\` refers to a
--- \`Ruleset\`, the rules can be enforced by Firebase Rules-enabled
--- services. More than one \`Release\` may be \'live\' concurrently.
--- Consider the following three \`Release\` names for \`projects\/foo\` and
--- the \`Ruleset\` to which they refer. Release Name | Ruleset Name
--- --------------------------------|-------------
--- projects\/foo\/releases\/prod | projects\/foo\/rulesets\/uuid123
--- projects\/foo\/releases\/prod\/beta | projects\/foo\/rulesets\/uuid123
--- projects\/foo\/releases\/prod\/v23 | projects\/foo\/rulesets\/uuid456
--- The table reflects the \`Ruleset\` rollout in progress. The \`prod\` and
--- \`prod\/beta\` releases refer to the same \`Ruleset\`. However,
--- \`prod\/v23\` refers to a new \`Ruleset\`. The \`Ruleset\` reference for
--- a \`Release\` may be updated using the UpdateRelease method.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.create@.
-module Network.Google.Resource.FirebaseRules.Projects.Releases.Create
-    (
-    -- * REST Resource
-      ProjectsReleasesCreateResource
-
-    -- * Creating a Request
-    , projectsReleasesCreate
-    , ProjectsReleasesCreate
-
-    -- * Request Lenses
-    , prcrXgafv
-    , prcrUploadProtocol
-    , prcrAccessToken
-    , prcrUploadType
-    , prcrPayload
-    , prcrName
-    , prcrCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.releases.create@ method which the
--- 'ProjectsReleasesCreate' request conforms to.
-type ProjectsReleasesCreateResource =
-     "v1" :>
-       Capture "name" Text :>
-         "releases" :>
-           QueryParam "$.xgafv" Xgafv :>
-             QueryParam "upload_protocol" Text :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "callback" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Release :> Post '[JSON] Release
-
--- | Create a \`Release\`. Release names should reflect the developer\'s
--- deployment practices. For example, the release name may include the
--- environment name, application name, application version, or any other
--- name meaningful to the developer. Once a \`Release\` refers to a
--- \`Ruleset\`, the rules can be enforced by Firebase Rules-enabled
--- services. More than one \`Release\` may be \'live\' concurrently.
--- Consider the following three \`Release\` names for \`projects\/foo\` and
--- the \`Ruleset\` to which they refer. Release Name | Ruleset Name
--- --------------------------------|-------------
--- projects\/foo\/releases\/prod | projects\/foo\/rulesets\/uuid123
--- projects\/foo\/releases\/prod\/beta | projects\/foo\/rulesets\/uuid123
--- projects\/foo\/releases\/prod\/v23 | projects\/foo\/rulesets\/uuid456
--- The table reflects the \`Ruleset\` rollout in progress. The \`prod\` and
--- \`prod\/beta\` releases refer to the same \`Ruleset\`. However,
--- \`prod\/v23\` refers to a new \`Ruleset\`. The \`Ruleset\` reference for
--- a \`Release\` may be updated using the UpdateRelease method.
---
--- /See:/ 'projectsReleasesCreate' smart constructor.
-data ProjectsReleasesCreate =
-  ProjectsReleasesCreate'
-    { _prcrXgafv          :: !(Maybe Xgafv)
-    , _prcrUploadProtocol :: !(Maybe Text)
-    , _prcrAccessToken    :: !(Maybe Text)
-    , _prcrUploadType     :: !(Maybe Text)
-    , _prcrPayload        :: !Release
-    , _prcrName           :: !Text
-    , _prcrCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsReleasesCreate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prcrXgafv'
---
--- * 'prcrUploadProtocol'
---
--- * 'prcrAccessToken'
---
--- * 'prcrUploadType'
---
--- * 'prcrPayload'
---
--- * 'prcrName'
---
--- * 'prcrCallback'
-projectsReleasesCreate
-    :: Release -- ^ 'prcrPayload'
-    -> Text -- ^ 'prcrName'
-    -> ProjectsReleasesCreate
-projectsReleasesCreate pPrcrPayload_ pPrcrName_ =
-  ProjectsReleasesCreate'
-    { _prcrXgafv = Nothing
-    , _prcrUploadProtocol = Nothing
-    , _prcrAccessToken = Nothing
-    , _prcrUploadType = Nothing
-    , _prcrPayload = pPrcrPayload_
-    , _prcrName = pPrcrName_
-    , _prcrCallback = Nothing
-    }
-
-
--- | V1 error format.
-prcrXgafv :: Lens' ProjectsReleasesCreate (Maybe Xgafv)
-prcrXgafv
-  = lens _prcrXgafv (\ s a -> s{_prcrXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-prcrUploadProtocol :: Lens' ProjectsReleasesCreate (Maybe Text)
-prcrUploadProtocol
-  = lens _prcrUploadProtocol
-      (\ s a -> s{_prcrUploadProtocol = a})
-
--- | OAuth access token.
-prcrAccessToken :: Lens' ProjectsReleasesCreate (Maybe Text)
-prcrAccessToken
-  = lens _prcrAccessToken
-      (\ s a -> s{_prcrAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-prcrUploadType :: Lens' ProjectsReleasesCreate (Maybe Text)
-prcrUploadType
-  = lens _prcrUploadType
-      (\ s a -> s{_prcrUploadType = a})
-
--- | Multipart request metadata.
-prcrPayload :: Lens' ProjectsReleasesCreate Release
-prcrPayload
-  = lens _prcrPayload (\ s a -> s{_prcrPayload = a})
-
--- | Resource name for the project which owns this \`Release\`. Format:
--- \`projects\/{project_id}\`
-prcrName :: Lens' ProjectsReleasesCreate Text
-prcrName = lens _prcrName (\ s a -> s{_prcrName = a})
-
--- | JSONP
-prcrCallback :: Lens' ProjectsReleasesCreate (Maybe Text)
-prcrCallback
-  = lens _prcrCallback (\ s a -> s{_prcrCallback = a})
-
-instance GoogleRequest ProjectsReleasesCreate where
-        type Rs ProjectsReleasesCreate = Release
-        type Scopes ProjectsReleasesCreate =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase"]
-        requestClient ProjectsReleasesCreate'{..}
-          = go _prcrName _prcrXgafv _prcrUploadProtocol
-              _prcrAccessToken
-              _prcrUploadType
-              _prcrCallback
-              (Just AltJSON)
-              _prcrPayload
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsReleasesCreateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Delete.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Delete.hs
+++ /dev/null
@@ -1,150 +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.FirebaseRules.Projects.Releases.Delete
--- 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)
---
--- Delete a \`Release\` by resource name.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.delete@.
-module Network.Google.Resource.FirebaseRules.Projects.Releases.Delete
-    (
-    -- * REST Resource
-      ProjectsReleasesDeleteResource
-
-    -- * Creating a Request
-    , projectsReleasesDelete
-    , ProjectsReleasesDelete
-
-    -- * Request Lenses
-    , prdXgafv
-    , prdUploadProtocol
-    , prdAccessToken
-    , prdUploadType
-    , prdName
-    , prdCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.releases.delete@ method which the
--- 'ProjectsReleasesDelete' request conforms to.
-type ProjectsReleasesDeleteResource =
-     "v1" :>
-       Capture "name" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "callback" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
-
--- | Delete a \`Release\` by resource name.
---
--- /See:/ 'projectsReleasesDelete' smart constructor.
-data ProjectsReleasesDelete =
-  ProjectsReleasesDelete'
-    { _prdXgafv          :: !(Maybe Xgafv)
-    , _prdUploadProtocol :: !(Maybe Text)
-    , _prdAccessToken    :: !(Maybe Text)
-    , _prdUploadType     :: !(Maybe Text)
-    , _prdName           :: !Text
-    , _prdCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsReleasesDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prdXgafv'
---
--- * 'prdUploadProtocol'
---
--- * 'prdAccessToken'
---
--- * 'prdUploadType'
---
--- * 'prdName'
---
--- * 'prdCallback'
-projectsReleasesDelete
-    :: Text -- ^ 'prdName'
-    -> ProjectsReleasesDelete
-projectsReleasesDelete pPrdName_ =
-  ProjectsReleasesDelete'
-    { _prdXgafv = Nothing
-    , _prdUploadProtocol = Nothing
-    , _prdAccessToken = Nothing
-    , _prdUploadType = Nothing
-    , _prdName = pPrdName_
-    , _prdCallback = Nothing
-    }
-
-
--- | V1 error format.
-prdXgafv :: Lens' ProjectsReleasesDelete (Maybe Xgafv)
-prdXgafv = lens _prdXgafv (\ s a -> s{_prdXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-prdUploadProtocol :: Lens' ProjectsReleasesDelete (Maybe Text)
-prdUploadProtocol
-  = lens _prdUploadProtocol
-      (\ s a -> s{_prdUploadProtocol = a})
-
--- | OAuth access token.
-prdAccessToken :: Lens' ProjectsReleasesDelete (Maybe Text)
-prdAccessToken
-  = lens _prdAccessToken
-      (\ s a -> s{_prdAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-prdUploadType :: Lens' ProjectsReleasesDelete (Maybe Text)
-prdUploadType
-  = lens _prdUploadType
-      (\ s a -> s{_prdUploadType = a})
-
--- | Resource name for the \`Release\` to delete. Format:
--- \`projects\/{project_id}\/releases\/{release_id}\`
-prdName :: Lens' ProjectsReleasesDelete Text
-prdName = lens _prdName (\ s a -> s{_prdName = a})
-
--- | JSONP
-prdCallback :: Lens' ProjectsReleasesDelete (Maybe Text)
-prdCallback
-  = lens _prdCallback (\ s a -> s{_prdCallback = a})
-
-instance GoogleRequest ProjectsReleasesDelete where
-        type Rs ProjectsReleasesDelete = Empty
-        type Scopes ProjectsReleasesDelete =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase"]
-        requestClient ProjectsReleasesDelete'{..}
-          = go _prdName _prdXgafv _prdUploadProtocol
-              _prdAccessToken
-              _prdUploadType
-              _prdCallback
-              (Just AltJSON)
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsReleasesDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Get.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Get.hs
+++ /dev/null
@@ -1,148 +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.FirebaseRules.Projects.Releases.Get
--- 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 a \`Release\` by name.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.get@.
-module Network.Google.Resource.FirebaseRules.Projects.Releases.Get
-    (
-    -- * REST Resource
-      ProjectsReleasesGetResource
-
-    -- * Creating a Request
-    , projectsReleasesGet
-    , ProjectsReleasesGet
-
-    -- * Request Lenses
-    , pXgafv
-    , pUploadProtocol
-    , pAccessToken
-    , pUploadType
-    , pName
-    , pCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.releases.get@ method which the
--- 'ProjectsReleasesGet' request conforms to.
-type ProjectsReleasesGetResource =
-     "v1" :>
-       Capture "name" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "callback" Text :>
-                   QueryParam "alt" AltJSON :> Get '[JSON] Release
-
--- | Get a \`Release\` by name.
---
--- /See:/ 'projectsReleasesGet' smart constructor.
-data ProjectsReleasesGet =
-  ProjectsReleasesGet'
-    { _pXgafv          :: !(Maybe Xgafv)
-    , _pUploadProtocol :: !(Maybe Text)
-    , _pAccessToken    :: !(Maybe Text)
-    , _pUploadType     :: !(Maybe Text)
-    , _pName           :: !Text
-    , _pCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsReleasesGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pXgafv'
---
--- * 'pUploadProtocol'
---
--- * 'pAccessToken'
---
--- * 'pUploadType'
---
--- * 'pName'
---
--- * 'pCallback'
-projectsReleasesGet
-    :: Text -- ^ 'pName'
-    -> ProjectsReleasesGet
-projectsReleasesGet pPName_ =
-  ProjectsReleasesGet'
-    { _pXgafv = Nothing
-    , _pUploadProtocol = Nothing
-    , _pAccessToken = Nothing
-    , _pUploadType = Nothing
-    , _pName = pPName_
-    , _pCallback = Nothing
-    }
-
-
--- | V1 error format.
-pXgafv :: Lens' ProjectsReleasesGet (Maybe Xgafv)
-pXgafv = lens _pXgafv (\ s a -> s{_pXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-pUploadProtocol :: Lens' ProjectsReleasesGet (Maybe Text)
-pUploadProtocol
-  = lens _pUploadProtocol
-      (\ s a -> s{_pUploadProtocol = a})
-
--- | OAuth access token.
-pAccessToken :: Lens' ProjectsReleasesGet (Maybe Text)
-pAccessToken
-  = lens _pAccessToken (\ s a -> s{_pAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-pUploadType :: Lens' ProjectsReleasesGet (Maybe Text)
-pUploadType
-  = lens _pUploadType (\ s a -> s{_pUploadType = a})
-
--- | Resource name of the \`Release\`. Format:
--- \`projects\/{project_id}\/releases\/{release_id}\`
-pName :: Lens' ProjectsReleasesGet Text
-pName = lens _pName (\ s a -> s{_pName = a})
-
--- | JSONP
-pCallback :: Lens' ProjectsReleasesGet (Maybe Text)
-pCallback
-  = lens _pCallback (\ s a -> s{_pCallback = a})
-
-instance GoogleRequest ProjectsReleasesGet where
-        type Rs ProjectsReleasesGet = Release
-        type Scopes ProjectsReleasesGet =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase",
-               "https://www.googleapis.com/auth/firebase.readonly"]
-        requestClient ProjectsReleasesGet'{..}
-          = go _pName _pXgafv _pUploadProtocol _pAccessToken
-              _pUploadType
-              _pCallback
-              (Just AltJSON)
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsReleasesGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/GetExecutable.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/GetExecutable.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/GetExecutable.hs
+++ /dev/null
@@ -1,170 +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.FirebaseRules.Projects.Releases.GetExecutable
--- 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 \`Release\` executable to use when enforcing rules.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.getExecutable@.
-module Network.Google.Resource.FirebaseRules.Projects.Releases.GetExecutable
-    (
-    -- * REST Resource
-      ProjectsReleasesGetExecutableResource
-
-    -- * Creating a Request
-    , projectsReleasesGetExecutable
-    , ProjectsReleasesGetExecutable
-
-    -- * Request Lenses
-    , prgeXgafv
-    , prgeUploadProtocol
-    , prgeAccessToken
-    , prgeUploadType
-    , prgeName
-    , prgeExecutableVersion
-    , prgeCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.releases.getExecutable@ method which the
--- 'ProjectsReleasesGetExecutable' request conforms to.
-type ProjectsReleasesGetExecutableResource =
-     "v1" :>
-       CaptureMode "name" "getExecutable" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "executableVersion" Text :>
-                   QueryParam "callback" Text :>
-                     QueryParam "alt" AltJSON :>
-                       Get '[JSON] GetReleaseExecutableResponse
-
--- | Get the \`Release\` executable to use when enforcing rules.
---
--- /See:/ 'projectsReleasesGetExecutable' smart constructor.
-data ProjectsReleasesGetExecutable =
-  ProjectsReleasesGetExecutable'
-    { _prgeXgafv             :: !(Maybe Xgafv)
-    , _prgeUploadProtocol    :: !(Maybe Text)
-    , _prgeAccessToken       :: !(Maybe Text)
-    , _prgeUploadType        :: !(Maybe Text)
-    , _prgeName              :: !Text
-    , _prgeExecutableVersion :: !(Maybe Text)
-    , _prgeCallback          :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsReleasesGetExecutable' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prgeXgafv'
---
--- * 'prgeUploadProtocol'
---
--- * 'prgeAccessToken'
---
--- * 'prgeUploadType'
---
--- * 'prgeName'
---
--- * 'prgeExecutableVersion'
---
--- * 'prgeCallback'
-projectsReleasesGetExecutable
-    :: Text -- ^ 'prgeName'
-    -> ProjectsReleasesGetExecutable
-projectsReleasesGetExecutable pPrgeName_ =
-  ProjectsReleasesGetExecutable'
-    { _prgeXgafv = Nothing
-    , _prgeUploadProtocol = Nothing
-    , _prgeAccessToken = Nothing
-    , _prgeUploadType = Nothing
-    , _prgeName = pPrgeName_
-    , _prgeExecutableVersion = Nothing
-    , _prgeCallback = Nothing
-    }
-
-
--- | V1 error format.
-prgeXgafv :: Lens' ProjectsReleasesGetExecutable (Maybe Xgafv)
-prgeXgafv
-  = lens _prgeXgafv (\ s a -> s{_prgeXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-prgeUploadProtocol :: Lens' ProjectsReleasesGetExecutable (Maybe Text)
-prgeUploadProtocol
-  = lens _prgeUploadProtocol
-      (\ s a -> s{_prgeUploadProtocol = a})
-
--- | OAuth access token.
-prgeAccessToken :: Lens' ProjectsReleasesGetExecutable (Maybe Text)
-prgeAccessToken
-  = lens _prgeAccessToken
-      (\ s a -> s{_prgeAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-prgeUploadType :: Lens' ProjectsReleasesGetExecutable (Maybe Text)
-prgeUploadType
-  = lens _prgeUploadType
-      (\ s a -> s{_prgeUploadType = a})
-
--- | Resource name of the \`Release\`. Format:
--- \`projects\/{project_id}\/releases\/{release_id}\`
-prgeName :: Lens' ProjectsReleasesGetExecutable Text
-prgeName = lens _prgeName (\ s a -> s{_prgeName = a})
-
--- | The requested runtime executable version. Defaults to
--- FIREBASE_RULES_EXECUTABLE_V1.
-prgeExecutableVersion :: Lens' ProjectsReleasesGetExecutable (Maybe Text)
-prgeExecutableVersion
-  = lens _prgeExecutableVersion
-      (\ s a -> s{_prgeExecutableVersion = a})
-
--- | JSONP
-prgeCallback :: Lens' ProjectsReleasesGetExecutable (Maybe Text)
-prgeCallback
-  = lens _prgeCallback (\ s a -> s{_prgeCallback = a})
-
-instance GoogleRequest ProjectsReleasesGetExecutable
-         where
-        type Rs ProjectsReleasesGetExecutable =
-             GetReleaseExecutableResponse
-        type Scopes ProjectsReleasesGetExecutable =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase",
-               "https://www.googleapis.com/auth/firebase.readonly"]
-        requestClient ProjectsReleasesGetExecutable'{..}
-          = go _prgeName _prgeXgafv _prgeUploadProtocol
-              _prgeAccessToken
-              _prgeUploadType
-              _prgeExecutableVersion
-              _prgeCallback
-              (Just AltJSON)
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy ::
-                         Proxy ProjectsReleasesGetExecutableResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/List.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/List.hs
+++ /dev/null
@@ -1,216 +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.FirebaseRules.Projects.Releases.List
--- 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)
---
--- List the \`Release\` values for a project. This list may optionally be
--- filtered by \`Release\` name, \`Ruleset\` name, \`TestSuite\` name, or
--- any combination thereof.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.list@.
-module Network.Google.Resource.FirebaseRules.Projects.Releases.List
-    (
-    -- * REST Resource
-      ProjectsReleasesListResource
-
-    -- * Creating a Request
-    , projectsReleasesList
-    , ProjectsReleasesList
-
-    -- * Request Lenses
-    , prlrXgafv
-    , prlrUploadProtocol
-    , prlrAccessToken
-    , prlrUploadType
-    , prlrName
-    , prlrFilter
-    , prlrPageToken
-    , prlrPageSize
-    , prlrCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.releases.list@ method which the
--- 'ProjectsReleasesList' request conforms to.
-type ProjectsReleasesListResource =
-     "v1" :>
-       Capture "name" Text :>
-         "releases" :>
-           QueryParam "$.xgafv" Xgafv :>
-             QueryParam "upload_protocol" Text :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "filter" Text :>
-                     QueryParam "pageToken" Text :>
-                       QueryParam "pageSize" (Textual Int32) :>
-                         QueryParam "callback" Text :>
-                           QueryParam "alt" AltJSON :>
-                             Get '[JSON] ListReleasesResponse
-
--- | List the \`Release\` values for a project. This list may optionally be
--- filtered by \`Release\` name, \`Ruleset\` name, \`TestSuite\` name, or
--- any combination thereof.
---
--- /See:/ 'projectsReleasesList' smart constructor.
-data ProjectsReleasesList =
-  ProjectsReleasesList'
-    { _prlrXgafv          :: !(Maybe Xgafv)
-    , _prlrUploadProtocol :: !(Maybe Text)
-    , _prlrAccessToken    :: !(Maybe Text)
-    , _prlrUploadType     :: !(Maybe Text)
-    , _prlrName           :: !Text
-    , _prlrFilter         :: !(Maybe Text)
-    , _prlrPageToken      :: !(Maybe Text)
-    , _prlrPageSize       :: !(Maybe (Textual Int32))
-    , _prlrCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsReleasesList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prlrXgafv'
---
--- * 'prlrUploadProtocol'
---
--- * 'prlrAccessToken'
---
--- * 'prlrUploadType'
---
--- * 'prlrName'
---
--- * 'prlrFilter'
---
--- * 'prlrPageToken'
---
--- * 'prlrPageSize'
---
--- * 'prlrCallback'
-projectsReleasesList
-    :: Text -- ^ 'prlrName'
-    -> ProjectsReleasesList
-projectsReleasesList pPrlrName_ =
-  ProjectsReleasesList'
-    { _prlrXgafv = Nothing
-    , _prlrUploadProtocol = Nothing
-    , _prlrAccessToken = Nothing
-    , _prlrUploadType = Nothing
-    , _prlrName = pPrlrName_
-    , _prlrFilter = Nothing
-    , _prlrPageToken = Nothing
-    , _prlrPageSize = Nothing
-    , _prlrCallback = Nothing
-    }
-
-
--- | V1 error format.
-prlrXgafv :: Lens' ProjectsReleasesList (Maybe Xgafv)
-prlrXgafv
-  = lens _prlrXgafv (\ s a -> s{_prlrXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-prlrUploadProtocol :: Lens' ProjectsReleasesList (Maybe Text)
-prlrUploadProtocol
-  = lens _prlrUploadProtocol
-      (\ s a -> s{_prlrUploadProtocol = a})
-
--- | OAuth access token.
-prlrAccessToken :: Lens' ProjectsReleasesList (Maybe Text)
-prlrAccessToken
-  = lens _prlrAccessToken
-      (\ s a -> s{_prlrAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-prlrUploadType :: Lens' ProjectsReleasesList (Maybe Text)
-prlrUploadType
-  = lens _prlrUploadType
-      (\ s a -> s{_prlrUploadType = a})
-
--- | Resource name for the project. Format: \`projects\/{project_id}\`
-prlrName :: Lens' ProjectsReleasesList Text
-prlrName = lens _prlrName (\ s a -> s{_prlrName = a})
-
--- | \`Release\` filter. The list method supports filters with restrictions
--- on the \`Release.name\`, \`Release.ruleset_name\`, and
--- \`Release.test_suite_name\`. Example 1: A filter of \'name=prod*\' might
--- return \`Release\`s with names within \'projects\/foo\' prefixed with
--- \'prod\': Name | Ruleset Name
--- ------------------------------|-------------
--- projects\/foo\/releases\/prod | projects\/foo\/rulesets\/uuid1234
--- projects\/foo\/releases\/prod\/v1 | projects\/foo\/rulesets\/uuid1234
--- projects\/foo\/releases\/prod\/v2 | projects\/foo\/rulesets\/uuid8888
--- Example 2: A filter of \`name=prod* ruleset_name=uuid1234\` would return
--- only \`Release\` instances for \'projects\/foo\' with names prefixed
--- with \'prod\' referring to the same \`Ruleset\` name of \'uuid1234\':
--- Name | Ruleset Name ------------------------------|-------------
--- projects\/foo\/releases\/prod | projects\/foo\/rulesets\/1234
--- projects\/foo\/releases\/prod\/v1 | projects\/foo\/rulesets\/1234 In the
--- examples, the filter parameters refer to the search filters are relative
--- to the project. Fully qualified prefixed may also be used. e.g.
--- \`test_suite_name=projects\/foo\/testsuites\/uuid1\`
-prlrFilter :: Lens' ProjectsReleasesList (Maybe Text)
-prlrFilter
-  = lens _prlrFilter (\ s a -> s{_prlrFilter = a})
-
--- | Next page token for the next batch of \`Release\` instances.
-prlrPageToken :: Lens' ProjectsReleasesList (Maybe Text)
-prlrPageToken
-  = lens _prlrPageToken
-      (\ s a -> s{_prlrPageToken = a})
-
--- | Page size to load. Maximum of 100. Defaults to 10. Note: \`page_size\`
--- is just a hint and the service may choose to load fewer than
--- \`page_size\` results due to the size of the output. To traverse all of
--- the releases, the caller should iterate until the \`page_token\` on the
--- response is empty.
-prlrPageSize :: Lens' ProjectsReleasesList (Maybe Int32)
-prlrPageSize
-  = lens _prlrPageSize (\ s a -> s{_prlrPageSize = a})
-      . mapping _Coerce
-
--- | JSONP
-prlrCallback :: Lens' ProjectsReleasesList (Maybe Text)
-prlrCallback
-  = lens _prlrCallback (\ s a -> s{_prlrCallback = a})
-
-instance GoogleRequest ProjectsReleasesList where
-        type Rs ProjectsReleasesList = ListReleasesResponse
-        type Scopes ProjectsReleasesList =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase",
-               "https://www.googleapis.com/auth/firebase.readonly"]
-        requestClient ProjectsReleasesList'{..}
-          = go _prlrName _prlrXgafv _prlrUploadProtocol
-              _prlrAccessToken
-              _prlrUploadType
-              _prlrFilter
-              _prlrPageToken
-              _prlrPageSize
-              _prlrCallback
-              (Just AltJSON)
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsReleasesListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Patch.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Patch.hs
+++ /dev/null
@@ -1,168 +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.FirebaseRules.Projects.Releases.Patch
--- 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 \`Release\` via PATCH. Only updates to the \`ruleset_name\` and
--- \`test_suite_name\` fields will be honored. \`Release\` rename is not
--- supported. To create a \`Release\` use the CreateRelease method.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.patch@.
-module Network.Google.Resource.FirebaseRules.Projects.Releases.Patch
-    (
-    -- * REST Resource
-      ProjectsReleasesPatchResource
-
-    -- * Creating a Request
-    , projectsReleasesPatch
-    , ProjectsReleasesPatch
-
-    -- * Request Lenses
-    , prpXgafv
-    , prpUploadProtocol
-    , prpAccessToken
-    , prpUploadType
-    , prpPayload
-    , prpName
-    , prpCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.releases.patch@ method which the
--- 'ProjectsReleasesPatch' request conforms to.
-type ProjectsReleasesPatchResource =
-     "v1" :>
-       Capture "name" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "callback" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] UpdateReleaseRequest :>
-                       Patch '[JSON] Release
-
--- | Update a \`Release\` via PATCH. Only updates to the \`ruleset_name\` and
--- \`test_suite_name\` fields will be honored. \`Release\` rename is not
--- supported. To create a \`Release\` use the CreateRelease method.
---
--- /See:/ 'projectsReleasesPatch' smart constructor.
-data ProjectsReleasesPatch =
-  ProjectsReleasesPatch'
-    { _prpXgafv          :: !(Maybe Xgafv)
-    , _prpUploadProtocol :: !(Maybe Text)
-    , _prpAccessToken    :: !(Maybe Text)
-    , _prpUploadType     :: !(Maybe Text)
-    , _prpPayload        :: !UpdateReleaseRequest
-    , _prpName           :: !Text
-    , _prpCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsReleasesPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prpXgafv'
---
--- * 'prpUploadProtocol'
---
--- * 'prpAccessToken'
---
--- * 'prpUploadType'
---
--- * 'prpPayload'
---
--- * 'prpName'
---
--- * 'prpCallback'
-projectsReleasesPatch
-    :: UpdateReleaseRequest -- ^ 'prpPayload'
-    -> Text -- ^ 'prpName'
-    -> ProjectsReleasesPatch
-projectsReleasesPatch pPrpPayload_ pPrpName_ =
-  ProjectsReleasesPatch'
-    { _prpXgafv = Nothing
-    , _prpUploadProtocol = Nothing
-    , _prpAccessToken = Nothing
-    , _prpUploadType = Nothing
-    , _prpPayload = pPrpPayload_
-    , _prpName = pPrpName_
-    , _prpCallback = Nothing
-    }
-
-
--- | V1 error format.
-prpXgafv :: Lens' ProjectsReleasesPatch (Maybe Xgafv)
-prpXgafv = lens _prpXgafv (\ s a -> s{_prpXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-prpUploadProtocol :: Lens' ProjectsReleasesPatch (Maybe Text)
-prpUploadProtocol
-  = lens _prpUploadProtocol
-      (\ s a -> s{_prpUploadProtocol = a})
-
--- | OAuth access token.
-prpAccessToken :: Lens' ProjectsReleasesPatch (Maybe Text)
-prpAccessToken
-  = lens _prpAccessToken
-      (\ s a -> s{_prpAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-prpUploadType :: Lens' ProjectsReleasesPatch (Maybe Text)
-prpUploadType
-  = lens _prpUploadType
-      (\ s a -> s{_prpUploadType = a})
-
--- | Multipart request metadata.
-prpPayload :: Lens' ProjectsReleasesPatch UpdateReleaseRequest
-prpPayload
-  = lens _prpPayload (\ s a -> s{_prpPayload = a})
-
--- | Resource name for the project which owns this \`Release\`. Format:
--- \`projects\/{project_id}\`
-prpName :: Lens' ProjectsReleasesPatch Text
-prpName = lens _prpName (\ s a -> s{_prpName = a})
-
--- | JSONP
-prpCallback :: Lens' ProjectsReleasesPatch (Maybe Text)
-prpCallback
-  = lens _prpCallback (\ s a -> s{_prpCallback = a})
-
-instance GoogleRequest ProjectsReleasesPatch where
-        type Rs ProjectsReleasesPatch = Release
-        type Scopes ProjectsReleasesPatch =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase"]
-        requestClient ProjectsReleasesPatch'{..}
-          = go _prpName _prpXgafv _prpUploadProtocol
-              _prpAccessToken
-              _prpUploadType
-              _prpCallback
-              (Just AltJSON)
-              _prpPayload
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsReleasesPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Create.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Create.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Create.hs
+++ /dev/null
@@ -1,172 +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.FirebaseRules.Projects.Rulesets.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)
---
--- Create a \`Ruleset\` from \`Source\`. The \`Ruleset\` is given a unique
--- generated name which is returned to the caller. \`Source\` containing
--- syntactic or semantics errors will result in an error response
--- indicating the first error encountered. For a detailed view of
--- \`Source\` issues, use TestRuleset.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.rulesets.create@.
-module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create
-    (
-    -- * REST Resource
-      ProjectsRulesetsCreateResource
-
-    -- * Creating a Request
-    , projectsRulesetsCreate
-    , ProjectsRulesetsCreate
-
-    -- * Request Lenses
-    , prcXgafv
-    , prcUploadProtocol
-    , prcAccessToken
-    , prcUploadType
-    , prcPayload
-    , prcName
-    , prcCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.rulesets.create@ method which the
--- 'ProjectsRulesetsCreate' request conforms to.
-type ProjectsRulesetsCreateResource =
-     "v1" :>
-       Capture "name" Text :>
-         "rulesets" :>
-           QueryParam "$.xgafv" Xgafv :>
-             QueryParam "upload_protocol" Text :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "callback" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Ruleset :> Post '[JSON] Ruleset
-
--- | Create a \`Ruleset\` from \`Source\`. The \`Ruleset\` is given a unique
--- generated name which is returned to the caller. \`Source\` containing
--- syntactic or semantics errors will result in an error response
--- indicating the first error encountered. For a detailed view of
--- \`Source\` issues, use TestRuleset.
---
--- /See:/ 'projectsRulesetsCreate' smart constructor.
-data ProjectsRulesetsCreate =
-  ProjectsRulesetsCreate'
-    { _prcXgafv          :: !(Maybe Xgafv)
-    , _prcUploadProtocol :: !(Maybe Text)
-    , _prcAccessToken    :: !(Maybe Text)
-    , _prcUploadType     :: !(Maybe Text)
-    , _prcPayload        :: !Ruleset
-    , _prcName           :: !Text
-    , _prcCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsRulesetsCreate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prcXgafv'
---
--- * 'prcUploadProtocol'
---
--- * 'prcAccessToken'
---
--- * 'prcUploadType'
---
--- * 'prcPayload'
---
--- * 'prcName'
---
--- * 'prcCallback'
-projectsRulesetsCreate
-    :: Ruleset -- ^ 'prcPayload'
-    -> Text -- ^ 'prcName'
-    -> ProjectsRulesetsCreate
-projectsRulesetsCreate pPrcPayload_ pPrcName_ =
-  ProjectsRulesetsCreate'
-    { _prcXgafv = Nothing
-    , _prcUploadProtocol = Nothing
-    , _prcAccessToken = Nothing
-    , _prcUploadType = Nothing
-    , _prcPayload = pPrcPayload_
-    , _prcName = pPrcName_
-    , _prcCallback = Nothing
-    }
-
-
--- | V1 error format.
-prcXgafv :: Lens' ProjectsRulesetsCreate (Maybe Xgafv)
-prcXgafv = lens _prcXgafv (\ s a -> s{_prcXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-prcUploadProtocol :: Lens' ProjectsRulesetsCreate (Maybe Text)
-prcUploadProtocol
-  = lens _prcUploadProtocol
-      (\ s a -> s{_prcUploadProtocol = a})
-
--- | OAuth access token.
-prcAccessToken :: Lens' ProjectsRulesetsCreate (Maybe Text)
-prcAccessToken
-  = lens _prcAccessToken
-      (\ s a -> s{_prcAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-prcUploadType :: Lens' ProjectsRulesetsCreate (Maybe Text)
-prcUploadType
-  = lens _prcUploadType
-      (\ s a -> s{_prcUploadType = a})
-
--- | Multipart request metadata.
-prcPayload :: Lens' ProjectsRulesetsCreate Ruleset
-prcPayload
-  = lens _prcPayload (\ s a -> s{_prcPayload = a})
-
--- | Resource name for Project which owns this \`Ruleset\`. Format:
--- \`projects\/{project_id}\`
-prcName :: Lens' ProjectsRulesetsCreate Text
-prcName = lens _prcName (\ s a -> s{_prcName = a})
-
--- | JSONP
-prcCallback :: Lens' ProjectsRulesetsCreate (Maybe Text)
-prcCallback
-  = lens _prcCallback (\ s a -> s{_prcCallback = a})
-
-instance GoogleRequest ProjectsRulesetsCreate where
-        type Rs ProjectsRulesetsCreate = Ruleset
-        type Scopes ProjectsRulesetsCreate =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase"]
-        requestClient ProjectsRulesetsCreate'{..}
-          = go _prcName _prcXgafv _prcUploadProtocol
-              _prcAccessToken
-              _prcUploadType
-              _prcCallback
-              (Just AltJSON)
-              _prcPayload
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsRulesetsCreateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Delete.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Delete.hs
+++ /dev/null
@@ -1,152 +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.FirebaseRules.Projects.Rulesets.Delete
--- 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)
---
--- Delete a \`Ruleset\` by resource name. If the \`Ruleset\` is referenced
--- by a \`Release\` the operation will fail.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.rulesets.delete@.
-module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete
-    (
-    -- * REST Resource
-      ProjectsRulesetsDeleteResource
-
-    -- * Creating a Request
-    , projectsRulesetsDelete
-    , ProjectsRulesetsDelete
-
-    -- * Request Lenses
-    , proXgafv
-    , proUploadProtocol
-    , proAccessToken
-    , proUploadType
-    , proName
-    , proCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.rulesets.delete@ method which the
--- 'ProjectsRulesetsDelete' request conforms to.
-type ProjectsRulesetsDeleteResource =
-     "v1" :>
-       Capture "name" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "callback" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
-
--- | Delete a \`Ruleset\` by resource name. If the \`Ruleset\` is referenced
--- by a \`Release\` the operation will fail.
---
--- /See:/ 'projectsRulesetsDelete' smart constructor.
-data ProjectsRulesetsDelete =
-  ProjectsRulesetsDelete'
-    { _proXgafv          :: !(Maybe Xgafv)
-    , _proUploadProtocol :: !(Maybe Text)
-    , _proAccessToken    :: !(Maybe Text)
-    , _proUploadType     :: !(Maybe Text)
-    , _proName           :: !Text
-    , _proCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsRulesetsDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'proXgafv'
---
--- * 'proUploadProtocol'
---
--- * 'proAccessToken'
---
--- * 'proUploadType'
---
--- * 'proName'
---
--- * 'proCallback'
-projectsRulesetsDelete
-    :: Text -- ^ 'proName'
-    -> ProjectsRulesetsDelete
-projectsRulesetsDelete pProName_ =
-  ProjectsRulesetsDelete'
-    { _proXgafv = Nothing
-    , _proUploadProtocol = Nothing
-    , _proAccessToken = Nothing
-    , _proUploadType = Nothing
-    , _proName = pProName_
-    , _proCallback = Nothing
-    }
-
-
--- | V1 error format.
-proXgafv :: Lens' ProjectsRulesetsDelete (Maybe Xgafv)
-proXgafv = lens _proXgafv (\ s a -> s{_proXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-proUploadProtocol :: Lens' ProjectsRulesetsDelete (Maybe Text)
-proUploadProtocol
-  = lens _proUploadProtocol
-      (\ s a -> s{_proUploadProtocol = a})
-
--- | OAuth access token.
-proAccessToken :: Lens' ProjectsRulesetsDelete (Maybe Text)
-proAccessToken
-  = lens _proAccessToken
-      (\ s a -> s{_proAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-proUploadType :: Lens' ProjectsRulesetsDelete (Maybe Text)
-proUploadType
-  = lens _proUploadType
-      (\ s a -> s{_proUploadType = a})
-
--- | Resource name for the ruleset to delete. Format:
--- \`projects\/{project_id}\/rulesets\/{ruleset_id}\`
-proName :: Lens' ProjectsRulesetsDelete Text
-proName = lens _proName (\ s a -> s{_proName = a})
-
--- | JSONP
-proCallback :: Lens' ProjectsRulesetsDelete (Maybe Text)
-proCallback
-  = lens _proCallback (\ s a -> s{_proCallback = a})
-
-instance GoogleRequest ProjectsRulesetsDelete where
-        type Rs ProjectsRulesetsDelete = Empty
-        type Scopes ProjectsRulesetsDelete =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase"]
-        requestClient ProjectsRulesetsDelete'{..}
-          = go _proName _proXgafv _proUploadProtocol
-              _proAccessToken
-              _proUploadType
-              _proCallback
-              (Just AltJSON)
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsRulesetsDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Get.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Get.hs
+++ /dev/null
@@ -1,151 +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.FirebaseRules.Projects.Rulesets.Get
--- 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 a \`Ruleset\` by name including the full \`Source\` contents.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.rulesets.get@.
-module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get
-    (
-    -- * REST Resource
-      ProjectsRulesetsGetResource
-
-    -- * Creating a Request
-    , projectsRulesetsGet
-    , ProjectsRulesetsGet
-
-    -- * Request Lenses
-    , prgXgafv
-    , prgUploadProtocol
-    , prgAccessToken
-    , prgUploadType
-    , prgName
-    , prgCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.rulesets.get@ method which the
--- 'ProjectsRulesetsGet' request conforms to.
-type ProjectsRulesetsGetResource =
-     "v1" :>
-       Capture "name" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "callback" Text :>
-                   QueryParam "alt" AltJSON :> Get '[JSON] Ruleset
-
--- | Get a \`Ruleset\` by name including the full \`Source\` contents.
---
--- /See:/ 'projectsRulesetsGet' smart constructor.
-data ProjectsRulesetsGet =
-  ProjectsRulesetsGet'
-    { _prgXgafv          :: !(Maybe Xgafv)
-    , _prgUploadProtocol :: !(Maybe Text)
-    , _prgAccessToken    :: !(Maybe Text)
-    , _prgUploadType     :: !(Maybe Text)
-    , _prgName           :: !Text
-    , _prgCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsRulesetsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prgXgafv'
---
--- * 'prgUploadProtocol'
---
--- * 'prgAccessToken'
---
--- * 'prgUploadType'
---
--- * 'prgName'
---
--- * 'prgCallback'
-projectsRulesetsGet
-    :: Text -- ^ 'prgName'
-    -> ProjectsRulesetsGet
-projectsRulesetsGet pPrgName_ =
-  ProjectsRulesetsGet'
-    { _prgXgafv = Nothing
-    , _prgUploadProtocol = Nothing
-    , _prgAccessToken = Nothing
-    , _prgUploadType = Nothing
-    , _prgName = pPrgName_
-    , _prgCallback = Nothing
-    }
-
-
--- | V1 error format.
-prgXgafv :: Lens' ProjectsRulesetsGet (Maybe Xgafv)
-prgXgafv = lens _prgXgafv (\ s a -> s{_prgXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-prgUploadProtocol :: Lens' ProjectsRulesetsGet (Maybe Text)
-prgUploadProtocol
-  = lens _prgUploadProtocol
-      (\ s a -> s{_prgUploadProtocol = a})
-
--- | OAuth access token.
-prgAccessToken :: Lens' ProjectsRulesetsGet (Maybe Text)
-prgAccessToken
-  = lens _prgAccessToken
-      (\ s a -> s{_prgAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-prgUploadType :: Lens' ProjectsRulesetsGet (Maybe Text)
-prgUploadType
-  = lens _prgUploadType
-      (\ s a -> s{_prgUploadType = a})
-
--- | Resource name for the ruleset to get. Format:
--- \`projects\/{project_id}\/rulesets\/{ruleset_id}\`
-prgName :: Lens' ProjectsRulesetsGet Text
-prgName = lens _prgName (\ s a -> s{_prgName = a})
-
--- | JSONP
-prgCallback :: Lens' ProjectsRulesetsGet (Maybe Text)
-prgCallback
-  = lens _prgCallback (\ s a -> s{_prgCallback = a})
-
-instance GoogleRequest ProjectsRulesetsGet where
-        type Rs ProjectsRulesetsGet = Ruleset
-        type Scopes ProjectsRulesetsGet =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase",
-               "https://www.googleapis.com/auth/firebase.readonly"]
-        requestClient ProjectsRulesetsGet'{..}
-          = go _prgName _prgXgafv _prgUploadProtocol
-              _prgAccessToken
-              _prgUploadType
-              _prgCallback
-              (Just AltJSON)
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsRulesetsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/List.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/List.hs
+++ /dev/null
@@ -1,200 +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.FirebaseRules.Projects.Rulesets.List
--- 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)
---
--- List \`Ruleset\` metadata only and optionally filter the results by
--- \`Ruleset\` name. The full \`Source\` contents of a \`Ruleset\` may be
--- retrieved with GetRuleset.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.rulesets.list@.
-module Network.Google.Resource.FirebaseRules.Projects.Rulesets.List
-    (
-    -- * REST Resource
-      ProjectsRulesetsListResource
-
-    -- * Creating a Request
-    , projectsRulesetsList
-    , ProjectsRulesetsList
-
-    -- * Request Lenses
-    , prlXgafv
-    , prlUploadProtocol
-    , prlAccessToken
-    , prlUploadType
-    , prlName
-    , prlFilter
-    , prlPageToken
-    , prlPageSize
-    , prlCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.rulesets.list@ method which the
--- 'ProjectsRulesetsList' request conforms to.
-type ProjectsRulesetsListResource =
-     "v1" :>
-       Capture "name" Text :>
-         "rulesets" :>
-           QueryParam "$.xgafv" Xgafv :>
-             QueryParam "upload_protocol" Text :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "filter" Text :>
-                     QueryParam "pageToken" Text :>
-                       QueryParam "pageSize" (Textual Int32) :>
-                         QueryParam "callback" Text :>
-                           QueryParam "alt" AltJSON :>
-                             Get '[JSON] ListRulesetsResponse
-
--- | List \`Ruleset\` metadata only and optionally filter the results by
--- \`Ruleset\` name. The full \`Source\` contents of a \`Ruleset\` may be
--- retrieved with GetRuleset.
---
--- /See:/ 'projectsRulesetsList' smart constructor.
-data ProjectsRulesetsList =
-  ProjectsRulesetsList'
-    { _prlXgafv          :: !(Maybe Xgafv)
-    , _prlUploadProtocol :: !(Maybe Text)
-    , _prlAccessToken    :: !(Maybe Text)
-    , _prlUploadType     :: !(Maybe Text)
-    , _prlName           :: !Text
-    , _prlFilter         :: !(Maybe Text)
-    , _prlPageToken      :: !(Maybe Text)
-    , _prlPageSize       :: !(Maybe (Textual Int32))
-    , _prlCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsRulesetsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prlXgafv'
---
--- * 'prlUploadProtocol'
---
--- * 'prlAccessToken'
---
--- * 'prlUploadType'
---
--- * 'prlName'
---
--- * 'prlFilter'
---
--- * 'prlPageToken'
---
--- * 'prlPageSize'
---
--- * 'prlCallback'
-projectsRulesetsList
-    :: Text -- ^ 'prlName'
-    -> ProjectsRulesetsList
-projectsRulesetsList pPrlName_ =
-  ProjectsRulesetsList'
-    { _prlXgafv = Nothing
-    , _prlUploadProtocol = Nothing
-    , _prlAccessToken = Nothing
-    , _prlUploadType = Nothing
-    , _prlName = pPrlName_
-    , _prlFilter = Nothing
-    , _prlPageToken = Nothing
-    , _prlPageSize = Nothing
-    , _prlCallback = Nothing
-    }
-
-
--- | V1 error format.
-prlXgafv :: Lens' ProjectsRulesetsList (Maybe Xgafv)
-prlXgafv = lens _prlXgafv (\ s a -> s{_prlXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-prlUploadProtocol :: Lens' ProjectsRulesetsList (Maybe Text)
-prlUploadProtocol
-  = lens _prlUploadProtocol
-      (\ s a -> s{_prlUploadProtocol = a})
-
--- | OAuth access token.
-prlAccessToken :: Lens' ProjectsRulesetsList (Maybe Text)
-prlAccessToken
-  = lens _prlAccessToken
-      (\ s a -> s{_prlAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-prlUploadType :: Lens' ProjectsRulesetsList (Maybe Text)
-prlUploadType
-  = lens _prlUploadType
-      (\ s a -> s{_prlUploadType = a})
-
--- | Resource name for the project. Format: \`projects\/{project_id}\`
-prlName :: Lens' ProjectsRulesetsList Text
-prlName = lens _prlName (\ s a -> s{_prlName = a})
-
--- | \`Ruleset\` filter. The list method supports filters with restrictions
--- on \`Ruleset.name\`. Filters on \`Ruleset.create_time\` should use the
--- \`date\` function which parses strings that conform to the RFC 3339
--- date\/time specifications. Example: \`create_time >
--- date(\"2017-01-01T00:00:00Z\") AND name=UUID-*\`
-prlFilter :: Lens' ProjectsRulesetsList (Maybe Text)
-prlFilter
-  = lens _prlFilter (\ s a -> s{_prlFilter = a})
-
--- | Next page token for loading the next batch of \`Ruleset\` instances.
-prlPageToken :: Lens' ProjectsRulesetsList (Maybe Text)
-prlPageToken
-  = lens _prlPageToken (\ s a -> s{_prlPageToken = a})
-
--- | Page size to load. Maximum of 100. Defaults to 10. Note: \`page_size\`
--- is just a hint and the service may choose to load less than
--- \`page_size\` due to the size of the output. To traverse all of the
--- releases, caller should iterate until the \`page_token\` is empty.
-prlPageSize :: Lens' ProjectsRulesetsList (Maybe Int32)
-prlPageSize
-  = lens _prlPageSize (\ s a -> s{_prlPageSize = a}) .
-      mapping _Coerce
-
--- | JSONP
-prlCallback :: Lens' ProjectsRulesetsList (Maybe Text)
-prlCallback
-  = lens _prlCallback (\ s a -> s{_prlCallback = a})
-
-instance GoogleRequest ProjectsRulesetsList where
-        type Rs ProjectsRulesetsList = ListRulesetsResponse
-        type Scopes ProjectsRulesetsList =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase",
-               "https://www.googleapis.com/auth/firebase.readonly"]
-        requestClient ProjectsRulesetsList'{..}
-          = go _prlName _prlXgafv _prlUploadProtocol
-              _prlAccessToken
-              _prlUploadType
-              _prlFilter
-              _prlPageToken
-              _prlPageSize
-              _prlCallback
-              (Just AltJSON)
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsRulesetsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Test.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Test.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Test.hs
+++ /dev/null
@@ -1,190 +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.FirebaseRules.Projects.Test
--- 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)
---
--- Test \`Source\` for syntactic and semantic correctness. Issues present,
--- if any, will be returned to the caller with a description, severity, and
--- source location. The test method may be executed with \`Source\` or a
--- \`Ruleset\` name. Passing \`Source\` is useful for unit testing new
--- rules. Passing a \`Ruleset\` name is useful for regression testing an
--- existing rule. The following is an example of \`Source\` that permits
--- users to upload images to a bucket bearing their user id and matching
--- the correct metadata: _*Example*_ \/\/ Users are allowed to subscribe
--- and unsubscribe to the blog. service firebase.storage { match
--- \/users\/{userId}\/images\/{imageName} { allow write: if userId ==
--- request.auth.uid && (imageName.matches(\'*.png$\') ||
--- imageName.matches(\'*.jpg$\')) &&
--- resource.mimeType.matches(\'^image\/\') } }
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.test@.
-module Network.Google.Resource.FirebaseRules.Projects.Test
-    (
-    -- * REST Resource
-      ProjectsTestResource
-
-    -- * Creating a Request
-    , projectsTest
-    , ProjectsTest
-
-    -- * Request Lenses
-    , ptXgafv
-    , ptUploadProtocol
-    , ptAccessToken
-    , ptUploadType
-    , ptPayload
-    , ptName
-    , ptCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.test@ method which the
--- 'ProjectsTest' request conforms to.
-type ProjectsTestResource =
-     "v1" :>
-       CaptureMode "name" "test" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "callback" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] TestRulesetRequest :>
-                       Post '[JSON] TestRulesetResponse
-
--- | Test \`Source\` for syntactic and semantic correctness. Issues present,
--- if any, will be returned to the caller with a description, severity, and
--- source location. The test method may be executed with \`Source\` or a
--- \`Ruleset\` name. Passing \`Source\` is useful for unit testing new
--- rules. Passing a \`Ruleset\` name is useful for regression testing an
--- existing rule. The following is an example of \`Source\` that permits
--- users to upload images to a bucket bearing their user id and matching
--- the correct metadata: _*Example*_ \/\/ Users are allowed to subscribe
--- and unsubscribe to the blog. service firebase.storage { match
--- \/users\/{userId}\/images\/{imageName} { allow write: if userId ==
--- request.auth.uid && (imageName.matches(\'*.png$\') ||
--- imageName.matches(\'*.jpg$\')) &&
--- resource.mimeType.matches(\'^image\/\') } }
---
--- /See:/ 'projectsTest' smart constructor.
-data ProjectsTest =
-  ProjectsTest'
-    { _ptXgafv          :: !(Maybe Xgafv)
-    , _ptUploadProtocol :: !(Maybe Text)
-    , _ptAccessToken    :: !(Maybe Text)
-    , _ptUploadType     :: !(Maybe Text)
-    , _ptPayload        :: !TestRulesetRequest
-    , _ptName           :: !Text
-    , _ptCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ProjectsTest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ptXgafv'
---
--- * 'ptUploadProtocol'
---
--- * 'ptAccessToken'
---
--- * 'ptUploadType'
---
--- * 'ptPayload'
---
--- * 'ptName'
---
--- * 'ptCallback'
-projectsTest
-    :: TestRulesetRequest -- ^ 'ptPayload'
-    -> Text -- ^ 'ptName'
-    -> ProjectsTest
-projectsTest pPtPayload_ pPtName_ =
-  ProjectsTest'
-    { _ptXgafv = Nothing
-    , _ptUploadProtocol = Nothing
-    , _ptAccessToken = Nothing
-    , _ptUploadType = Nothing
-    , _ptPayload = pPtPayload_
-    , _ptName = pPtName_
-    , _ptCallback = Nothing
-    }
-
-
--- | V1 error format.
-ptXgafv :: Lens' ProjectsTest (Maybe Xgafv)
-ptXgafv = lens _ptXgafv (\ s a -> s{_ptXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-ptUploadProtocol :: Lens' ProjectsTest (Maybe Text)
-ptUploadProtocol
-  = lens _ptUploadProtocol
-      (\ s a -> s{_ptUploadProtocol = a})
-
--- | OAuth access token.
-ptAccessToken :: Lens' ProjectsTest (Maybe Text)
-ptAccessToken
-  = lens _ptAccessToken
-      (\ s a -> s{_ptAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-ptUploadType :: Lens' ProjectsTest (Maybe Text)
-ptUploadType
-  = lens _ptUploadType (\ s a -> s{_ptUploadType = a})
-
--- | Multipart request metadata.
-ptPayload :: Lens' ProjectsTest TestRulesetRequest
-ptPayload
-  = lens _ptPayload (\ s a -> s{_ptPayload = a})
-
--- | Tests may either provide \`source\` or a \`Ruleset\` resource name. For
--- tests against \`source\`, the resource name must refer to the project:
--- Format: \`projects\/{project_id}\` For tests against a \`Ruleset\`, this
--- must be the \`Ruleset\` resource name: Format:
--- \`projects\/{project_id}\/rulesets\/{ruleset_id}\`
-ptName :: Lens' ProjectsTest Text
-ptName = lens _ptName (\ s a -> s{_ptName = a})
-
--- | JSONP
-ptCallback :: Lens' ProjectsTest (Maybe Text)
-ptCallback
-  = lens _ptCallback (\ s a -> s{_ptCallback = a})
-
-instance GoogleRequest ProjectsTest where
-        type Rs ProjectsTest = TestRulesetResponse
-        type Scopes ProjectsTest =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase",
-               "https://www.googleapis.com/auth/firebase.readonly"]
-        requestClient ProjectsTest'{..}
-          = go _ptName _ptXgafv _ptUploadProtocol
-              _ptAccessToken
-              _ptUploadType
-              _ptCallback
-              (Just AltJSON)
-              _ptPayload
-              firebaseRulesService
-          where go
-                  = buildClient (Proxy :: Proxy ProjectsTestResource)
-                      mempty
diff --git a/gogol-firebase-rules.cabal b/gogol-firebase-rules.cabal
--- a/gogol-firebase-rules.cabal
+++ b/gogol-firebase-rules.cabal
@@ -1,57 +1,71 @@
-name:                  gogol-firebase-rules
-version:               0.5.0
-synopsis:              Google Firebase Rules 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-firebase-rules
+version:            1.0.0
+synopsis:           Google Firebase Rules 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:
-    Creates and manages rules that determine when a Firebase Rules-enabled
-    service should permit a request.
-    .
-    /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.
+  Creates and manages rules that determine when a Firebase Rules-enabled service should permit a request.
+  .
+  /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-firebase-rules
 
+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.FirebaseRules
-        , Network.Google.FirebaseRules.Types
-        , Network.Google.Resource.FirebaseRules.Projects.Releases.Create
-        , Network.Google.Resource.FirebaseRules.Projects.Releases.Delete
-        , Network.Google.Resource.FirebaseRules.Projects.Releases.Get
-        , Network.Google.Resource.FirebaseRules.Projects.Releases.GetExecutable
-        , Network.Google.Resource.FirebaseRules.Projects.Releases.List
-        , Network.Google.Resource.FirebaseRules.Projects.Releases.Patch
-        , Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create
-        , Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete
-        , Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get
-        , Network.Google.Resource.FirebaseRules.Projects.Rulesets.List
-        , Network.Google.Resource.FirebaseRules.Projects.Test
+  exposed-modules:
+    Gogol.FirebaseRules
+    Gogol.FirebaseRules.Projects.Releases.Create
+    Gogol.FirebaseRules.Projects.Releases.Delete
+    Gogol.FirebaseRules.Projects.Releases.Get
+    Gogol.FirebaseRules.Projects.Releases.GetExecutable
+    Gogol.FirebaseRules.Projects.Releases.List
+    Gogol.FirebaseRules.Projects.Releases.Patch
+    Gogol.FirebaseRules.Projects.Rulesets.Create
+    Gogol.FirebaseRules.Projects.Rulesets.Delete
+    Gogol.FirebaseRules.Projects.Rulesets.Get
+    Gogol.FirebaseRules.Projects.Rulesets.List
+    Gogol.FirebaseRules.Projects.Test
+    Gogol.FirebaseRules.Types
 
-    other-modules:
-          Network.Google.FirebaseRules.Types.Product
-        , Network.Google.FirebaseRules.Types.Sum
+  other-modules:
+    Gogol.FirebaseRules.Internal.Product
+    Gogol.FirebaseRules.Internal.Sum
 
-    build-depends:
-          gogol-core == 0.5.0.*
-        , base       >= 4.7 && < 5
+  build-depends:    gogol-core ^>=1.0.0
