diff --git a/gen/Network/Google/FirebaseRules.hs b/gen/Network/Google/FirebaseRules.hs
--- a/gen/Network/Google/FirebaseRules.hs
+++ b/gen/Network/Google/FirebaseRules.hs
@@ -41,11 +41,14 @@
     -- ** 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.update
-    , module Network.Google.Resource.FirebaseRules.Projects.Releases.Update
+    -- ** firebaserules.projects.releases.patch
+    , module Network.Google.Resource.FirebaseRules.Projects.Releases.Patch
 
     -- ** firebaserules.projects.rulesets.create
     , module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create
@@ -71,19 +74,56 @@
     , 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
@@ -94,6 +134,12 @@
     , rName
     , rCreateTime
 
+    -- ** Arg
+    , Arg
+    , arg
+    , aAnyValue
+    , aExactValue
+
     -- ** Ruleset
     , Ruleset
     , ruleset
@@ -101,6 +147,25 @@
     , rulSource
     , rulCreateTime
 
+    -- ** GetReleaseExecutableResponse
+    , GetReleaseExecutableResponse
+    , getReleaseExecutableResponse
+    , grerExecutable
+    , grerRulesetName
+    , grerUpdateTime
+    , grerSyncTime
+    , grerExecutableVersion
+    , grerLanguage
+
+    -- ** TestResult
+    , TestResult
+    , testResult
+    , trState
+    , trFunctionCalls
+    , trVisitedExpressions
+    , trErrorPosition
+    , trDebugMessages
+
     -- ** Xgafv
     , Xgafv (..)
 
@@ -112,10 +177,19 @@
     , source
     , sFiles
 
+    -- ** TestCaseExpectation
+    , TestCaseExpectation (..)
+
+    -- ** TestSuite
+    , TestSuite
+    , testSuite
+    , tsTestCases
+
     -- ** TestRulesetRequest
     , TestRulesetRequest
     , testRulesetRequest
     , trrSource
+    , trrTestSuite
 
     -- ** File
     , File
@@ -124,6 +198,12 @@
     , fContent
     , fName
 
+    -- ** GetReleaseExecutableResponseExecutableVersion
+    , GetReleaseExecutableResponseExecutableVersion (..)
+
+    -- ** GetReleaseExecutableResponseLanguage
+    , GetReleaseExecutableResponseLanguage (..)
+
     -- ** ListRulesetsResponse
     , ListRulesetsResponse
     , listRulesetsResponse
@@ -136,6 +216,12 @@
     , iSourcePosition
     , iSeverity
     , iDescription
+
+    -- ** UpdateReleaseRequest
+    , UpdateReleaseRequest
+    , updateReleaseRequest
+    , urrUpdateMask
+    , urrRelease
     ) where
 
 import           Network.Google.FirebaseRules.Types
@@ -143,8 +229,9 @@
 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.Update
+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
@@ -162,8 +249,9 @@
        :<|> ProjectsRulesetsCreateResource
        :<|> ProjectsRulesetsDeleteResource
        :<|> ProjectsReleasesListResource
+       :<|> ProjectsReleasesPatchResource
        :<|> ProjectsReleasesGetResource
+       :<|> ProjectsReleasesGetExecutableResource
        :<|> ProjectsReleasesCreateResource
        :<|> ProjectsReleasesDeleteResource
-       :<|> ProjectsReleasesUpdateResource
        :<|> ProjectsTestResource
diff --git a/gen/Network/Google/FirebaseRules/Types.hs b/gen/Network/Google/FirebaseRules/Types.hs
--- a/gen/Network/Google/FirebaseRules/Types.hs
+++ b/gen/Network/Google/FirebaseRules/Types.hs
@@ -31,19 +31,56 @@
     , 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
@@ -54,6 +91,12 @@
     , rName
     , rCreateTime
 
+    -- * Arg
+    , Arg
+    , arg
+    , aAnyValue
+    , aExactValue
+
     -- * Ruleset
     , Ruleset
     , ruleset
@@ -61,6 +104,25 @@
     , rulSource
     , rulCreateTime
 
+    -- * GetReleaseExecutableResponse
+    , GetReleaseExecutableResponse
+    , getReleaseExecutableResponse
+    , grerExecutable
+    , grerRulesetName
+    , grerUpdateTime
+    , grerSyncTime
+    , grerExecutableVersion
+    , grerLanguage
+
+    -- * TestResult
+    , TestResult
+    , testResult
+    , trState
+    , trFunctionCalls
+    , trVisitedExpressions
+    , trErrorPosition
+    , trDebugMessages
+
     -- * Xgafv
     , Xgafv (..)
 
@@ -72,10 +134,19 @@
     , source
     , sFiles
 
+    -- * TestCaseExpectation
+    , TestCaseExpectation (..)
+
+    -- * TestSuite
+    , TestSuite
+    , testSuite
+    , tsTestCases
+
     -- * TestRulesetRequest
     , TestRulesetRequest
     , testRulesetRequest
     , trrSource
+    , trrTestSuite
 
     -- * File
     , File
@@ -84,6 +155,12 @@
     , fContent
     , fName
 
+    -- * GetReleaseExecutableResponseExecutableVersion
+    , GetReleaseExecutableResponseExecutableVersion (..)
+
+    -- * GetReleaseExecutableResponseLanguage
+    , GetReleaseExecutableResponseLanguage (..)
+
     -- * ListRulesetsResponse
     , ListRulesetsResponse
     , listRulesetsResponse
@@ -96,6 +173,12 @@
     , iSourcePosition
     , iSeverity
     , iDescription
+
+    -- * UpdateReleaseRequest
+    , UpdateReleaseRequest
+    , updateReleaseRequest
+    , urrUpdateMask
+    , urrRelease
     ) where
 
 import           Network.Google.FirebaseRules.Types.Product
diff --git a/gen/Network/Google/FirebaseRules/Types/Product.hs b/gen/Network/Google/FirebaseRules/Types/Product.hs
--- a/gen/Network/Google/FirebaseRules/Types/Product.hs
+++ b/gen/Network/Google/FirebaseRules/Types/Product.hs
@@ -82,6 +82,146 @@
                   ("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
@@ -105,6 +245,123 @@
 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.
@@ -157,25 +414,85 @@
                  [("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.
-newtype TestRulesetResponse = TestRulesetResponse'
-    { _trrIssues :: Maybe [Issue]
+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'
-    { _trrIssues = Nothing
+    { _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]
@@ -188,11 +505,16 @@
         parseJSON
           = withObject "TestRulesetResponse"
               (\ o ->
-                 TestRulesetResponse' <$> (o .:? "issues" .!= mempty))
+                 TestRulesetResponse' <$>
+                   (o .:? "testResults" .!= mempty) <*>
+                     (o .:? "issues" .!= mempty))
 
 instance ToJSON TestRulesetResponse where
         toJSON TestRulesetResponse'{..}
-          = object (catMaybes [("issues" .=) <$> _trrIssues])
+          = 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
@@ -233,7 +555,7 @@
 rRulesetName
   = lens _rRulesetName (\ s a -> s{_rRulesetName = a})
 
--- | Time the release was updated. \'OutputOnly
+-- | Time the release was updated. Output only.
 rUpdateTime :: Lens' Release (Maybe UTCTime)
 rUpdateTime
   = lens _rUpdateTime (\ s a -> s{_rUpdateTime = a}) .
@@ -259,7 +581,7 @@
 rName :: Lens' Release (Maybe Text)
 rName = lens _rName (\ s a -> s{_rName = a})
 
--- | Time the release was created. \'OutputOnly
+-- | Time the release was created. Output only.
 rCreateTime :: Lens' Release (Maybe UTCTime)
 rCreateTime
   = lens _rCreateTime (\ s a -> s{_rCreateTime = a}) .
@@ -283,6 +605,52 @@
                   ("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.
 --
@@ -313,7 +681,7 @@
 
 -- | Name of the \`Ruleset\`. The ruleset_id is auto generated by the
 -- service. Format: \`projects\/{project_id}\/rulesets\/{ruleset_id}\`
--- \'OutputOnly
+-- Output only.
 rulName :: Lens' Ruleset (Maybe Text)
 rulName = lens _rulName (\ s a -> s{_rulName = a})
 
@@ -322,7 +690,7 @@
 rulSource
   = lens _rulSource (\ s a -> s{_rulSource = a})
 
--- | Time the \`Ruleset\` was created. \'OutputOnly
+-- | Time the \`Ruleset\` was created. Output only.
 rulCreateTime :: Lens' Ruleset (Maybe UTCTime)
 rulCreateTime
   = lens _rulCreateTime
@@ -345,6 +713,210 @@
                   ("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 expressions for a given test. This returns positions
+-- and evaluation results of all visited expressions.
+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.
 --
@@ -380,11 +952,52 @@
         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.
-newtype TestRulesetRequest = TestRulesetRequest'
-    { _trrSource :: Maybe Source
+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.
@@ -392,26 +1005,40 @@
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'trrSource'
+--
+-- * 'trrTestSuite'
 testRulesetRequest
     :: TestRulesetRequest
 testRulesetRequest =
     TestRulesetRequest'
     { _trrSource = Nothing
+    , _trrTestSuite = Nothing
     }
 
--- | \`Source\` to be checked for correctness.
+-- | 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 ->
+                 TestRulesetRequest' <$>
+                   (o .:? "source") <*> (o .:? "testSuite"))
 
 instance ToJSON TestRulesetRequest where
         toJSON TestRulesetRequest'{..}
-          = object (catMaybes [("source" .=) <$> _trrSource])
+          = object
+              (catMaybes
+                 [("source" .=) <$> _trrSource,
+                  ("testSuite" .=) <$> _trrTestSuite])
 
 -- | \`File\` containing source content.
 --
@@ -470,7 +1097,7 @@
                   ("content" .=) <$> _fContent,
                   ("name" .=) <$> _fName])
 
--- | The response for FirebaseRulesService.ListRulesets
+-- | The response for FirebaseRulesService.ListRulesets.
 --
 -- /See:/ 'listRulesetsResponse' smart constructor.
 data ListRulesetsResponse = ListRulesetsResponse'
@@ -580,3 +1207,51 @@
                  [("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
--- a/gen/Network/Google/FirebaseRules/Types/Sum.hs
+++ b/gen/Network/Google/FirebaseRules/Types/Sum.hs
@@ -16,8 +16,42 @@
 --
 module Network.Google.FirebaseRules.Types.Sum where
 
-import           Network.Google.Prelude
+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
@@ -85,4 +119,107 @@
     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
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Create.hs
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Create.hs
@@ -35,9 +35,7 @@
 -- 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, and the
--- custom \`Release\` name may be referenced by specifying the
--- \`X-Firebase-Rules-Release-Name\` header.
+-- 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
@@ -52,11 +50,9 @@
     -- * Request Lenses
     , prcrXgafv
     , prcrUploadProtocol
-    , prcrPp
     , prcrAccessToken
     , prcrUploadType
     , prcrPayload
-    , prcrBearerToken
     , prcrName
     , prcrCallback
     ) where
@@ -72,13 +68,11 @@
          "releases" :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] Release :> Post '[JSON] Release
+               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
@@ -95,19 +89,15 @@
 -- 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, and the
--- custom \`Release\` name may be referenced by specifying the
--- \`X-Firebase-Rules-Release-Name\` header.
+-- a \`Release\` may be updated using the UpdateRelease method.
 --
 -- /See:/ 'projectsReleasesCreate' smart constructor.
 data ProjectsReleasesCreate = ProjectsReleasesCreate'
     { _prcrXgafv          :: !(Maybe Xgafv)
     , _prcrUploadProtocol :: !(Maybe Text)
-    , _prcrPp             :: !Bool
     , _prcrAccessToken    :: !(Maybe Text)
     , _prcrUploadType     :: !(Maybe Text)
     , _prcrPayload        :: !Release
-    , _prcrBearerToken    :: !(Maybe Text)
     , _prcrName           :: !Text
     , _prcrCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -120,16 +110,12 @@
 --
 -- * 'prcrUploadProtocol'
 --
--- * 'prcrPp'
---
 -- * 'prcrAccessToken'
 --
 -- * 'prcrUploadType'
 --
 -- * 'prcrPayload'
 --
--- * 'prcrBearerToken'
---
 -- * 'prcrName'
 --
 -- * 'prcrCallback'
@@ -141,11 +127,9 @@
     ProjectsReleasesCreate'
     { _prcrXgafv = Nothing
     , _prcrUploadProtocol = Nothing
-    , _prcrPp = True
     , _prcrAccessToken = Nothing
     , _prcrUploadType = Nothing
     , _prcrPayload = pPrcrPayload_
-    , _prcrBearerToken = Nothing
     , _prcrName = pPrcrName_
     , _prcrCallback = Nothing
     }
@@ -161,10 +145,6 @@
   = lens _prcrUploadProtocol
       (\ s a -> s{_prcrUploadProtocol = a})
 
--- | Pretty-print response.
-prcrPp :: Lens' ProjectsReleasesCreate Bool
-prcrPp = lens _prcrPp (\ s a -> s{_prcrPp = a})
-
 -- | OAuth access token.
 prcrAccessToken :: Lens' ProjectsReleasesCreate (Maybe Text)
 prcrAccessToken
@@ -182,12 +162,6 @@
 prcrPayload
   = lens _prcrPayload (\ s a -> s{_prcrPayload = a})
 
--- | OAuth bearer token.
-prcrBearerToken :: Lens' ProjectsReleasesCreate (Maybe Text)
-prcrBearerToken
-  = lens _prcrBearerToken
-      (\ s a -> s{_prcrBearerToken = a})
-
 -- | Resource name for the project which owns this \`Release\`. Format:
 -- \`projects\/{project_id}\`
 prcrName :: Lens' ProjectsReleasesCreate Text
@@ -205,10 +179,8 @@
                "https://www.googleapis.com/auth/firebase"]
         requestClient ProjectsReleasesCreate'{..}
           = go _prcrName _prcrXgafv _prcrUploadProtocol
-              (Just _prcrPp)
               _prcrAccessToken
               _prcrUploadType
-              _prcrBearerToken
               _prcrCallback
               (Just AltJSON)
               _prcrPayload
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Delete.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Delete.hs
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Delete.hs
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Delete.hs
@@ -35,10 +35,8 @@
     -- * Request Lenses
     , prdXgafv
     , prdUploadProtocol
-    , prdPp
     , prdAccessToken
     , prdUploadType
-    , prdBearerToken
     , prdName
     , prdCallback
     ) where
@@ -53,12 +51,10 @@
        Capture "name" Text :>
          QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
 
 -- | Delete a \`Release\` by resource name.
 --
@@ -66,10 +62,8 @@
 data ProjectsReleasesDelete = ProjectsReleasesDelete'
     { _prdXgafv          :: !(Maybe Xgafv)
     , _prdUploadProtocol :: !(Maybe Text)
-    , _prdPp             :: !Bool
     , _prdAccessToken    :: !(Maybe Text)
     , _prdUploadType     :: !(Maybe Text)
-    , _prdBearerToken    :: !(Maybe Text)
     , _prdName           :: !Text
     , _prdCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -82,14 +76,10 @@
 --
 -- * 'prdUploadProtocol'
 --
--- * 'prdPp'
---
 -- * 'prdAccessToken'
 --
 -- * 'prdUploadType'
 --
--- * 'prdBearerToken'
---
 -- * 'prdName'
 --
 -- * 'prdCallback'
@@ -100,10 +90,8 @@
     ProjectsReleasesDelete'
     { _prdXgafv = Nothing
     , _prdUploadProtocol = Nothing
-    , _prdPp = True
     , _prdAccessToken = Nothing
     , _prdUploadType = Nothing
-    , _prdBearerToken = Nothing
     , _prdName = pPrdName_
     , _prdCallback = Nothing
     }
@@ -118,10 +106,6 @@
   = lens _prdUploadProtocol
       (\ s a -> s{_prdUploadProtocol = a})
 
--- | Pretty-print response.
-prdPp :: Lens' ProjectsReleasesDelete Bool
-prdPp = lens _prdPp (\ s a -> s{_prdPp = a})
-
 -- | OAuth access token.
 prdAccessToken :: Lens' ProjectsReleasesDelete (Maybe Text)
 prdAccessToken
@@ -134,12 +118,6 @@
   = lens _prdUploadType
       (\ s a -> s{_prdUploadType = a})
 
--- | OAuth bearer token.
-prdBearerToken :: Lens' ProjectsReleasesDelete (Maybe Text)
-prdBearerToken
-  = lens _prdBearerToken
-      (\ s a -> s{_prdBearerToken = a})
-
 -- | Resource name for the \`Release\` to delete. Format:
 -- \`projects\/{project_id}\/releases\/{release_id}\`
 prdName :: Lens' ProjectsReleasesDelete Text
@@ -157,10 +135,8 @@
                "https://www.googleapis.com/auth/firebase"]
         requestClient ProjectsReleasesDelete'{..}
           = go _prdName _prdXgafv _prdUploadProtocol
-              (Just _prdPp)
               _prdAccessToken
               _prdUploadType
-              _prdBearerToken
               _prdCallback
               (Just AltJSON)
               firebaseRulesService
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Get.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Get.hs
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Get.hs
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Get.hs
@@ -35,10 +35,8 @@
     -- * Request Lenses
     , pXgafv
     , pUploadProtocol
-    , pPp
     , pAccessToken
     , pUploadType
-    , pBearerToken
     , pName
     , pCallback
     ) where
@@ -53,12 +51,10 @@
        Capture "name" Text :>
          QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :> Get '[JSON] Release
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Release
 
 -- | Get a \`Release\` by name.
 --
@@ -66,10 +62,8 @@
 data ProjectsReleasesGet = ProjectsReleasesGet'
     { _pXgafv          :: !(Maybe Xgafv)
     , _pUploadProtocol :: !(Maybe Text)
-    , _pPp             :: !Bool
     , _pAccessToken    :: !(Maybe Text)
     , _pUploadType     :: !(Maybe Text)
-    , _pBearerToken    :: !(Maybe Text)
     , _pName           :: !Text
     , _pCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -82,14 +76,10 @@
 --
 -- * 'pUploadProtocol'
 --
--- * 'pPp'
---
 -- * 'pAccessToken'
 --
 -- * 'pUploadType'
 --
--- * 'pBearerToken'
---
 -- * 'pName'
 --
 -- * 'pCallback'
@@ -100,10 +90,8 @@
     ProjectsReleasesGet'
     { _pXgafv = Nothing
     , _pUploadProtocol = Nothing
-    , _pPp = True
     , _pAccessToken = Nothing
     , _pUploadType = Nothing
-    , _pBearerToken = Nothing
     , _pName = pPName_
     , _pCallback = Nothing
     }
@@ -118,10 +106,6 @@
   = lens _pUploadProtocol
       (\ s a -> s{_pUploadProtocol = a})
 
--- | Pretty-print response.
-pPp :: Lens' ProjectsReleasesGet Bool
-pPp = lens _pPp (\ s a -> s{_pPp = a})
-
 -- | OAuth access token.
 pAccessToken :: Lens' ProjectsReleasesGet (Maybe Text)
 pAccessToken
@@ -132,11 +116,6 @@
 pUploadType
   = lens _pUploadType (\ s a -> s{_pUploadType = a})
 
--- | OAuth bearer token.
-pBearerToken :: Lens' ProjectsReleasesGet (Maybe Text)
-pBearerToken
-  = lens _pBearerToken (\ s a -> s{_pBearerToken = a})
-
 -- | Resource name of the \`Release\`. Format:
 -- \`projects\/{project_id}\/releases\/{release_id}\`
 pName :: Lens' ProjectsReleasesGet Text
@@ -154,10 +133,8 @@
                "https://www.googleapis.com/auth/firebase",
                "https://www.googleapis.com/auth/firebase.readonly"]
         requestClient ProjectsReleasesGet'{..}
-          = go _pName _pXgafv _pUploadProtocol (Just _pPp)
-              _pAccessToken
+          = go _pName _pXgafv _pUploadProtocol _pAccessToken
               _pUploadType
-              _pBearerToken
               _pCallback
               (Just AltJSON)
               firebaseRulesService
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/GetExecutable.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/GetExecutable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/GetExecutable.hs
@@ -0,0 +1,166 @@
+{-# 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
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/List.hs
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/List.hs
@@ -21,7 +21,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- List the \`Release\` values for a project. This list may optionally be
--- filtered by \`Release\` name or \`Ruleset\` id or both.
+-- 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
@@ -36,10 +37,8 @@
     -- * Request Lenses
     , prlrXgafv
     , prlrUploadProtocol
-    , prlrPp
     , prlrAccessToken
     , prlrUploadType
-    , prlrBearerToken
     , prlrName
     , prlrFilter
     , prlrPageToken
@@ -58,28 +57,25 @@
          "releases" :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "filter" Text :>
-                         QueryParam "pageToken" Text :>
-                           QueryParam "pageSize" (Textual Int32) :>
-                             QueryParam "callback" Text :>
-                               QueryParam "alt" AltJSON :>
-                                 Get '[JSON] ListReleasesResponse
+               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 or \`Ruleset\` id or both.
+-- 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)
-    , _prlrPp             :: !Bool
     , _prlrAccessToken    :: !(Maybe Text)
     , _prlrUploadType     :: !(Maybe Text)
-    , _prlrBearerToken    :: !(Maybe Text)
     , _prlrName           :: !Text
     , _prlrFilter         :: !(Maybe Text)
     , _prlrPageToken      :: !(Maybe Text)
@@ -95,14 +91,10 @@
 --
 -- * 'prlrUploadProtocol'
 --
--- * 'prlrPp'
---
 -- * 'prlrAccessToken'
 --
 -- * 'prlrUploadType'
 --
--- * 'prlrBearerToken'
---
 -- * 'prlrName'
 --
 -- * 'prlrFilter'
@@ -119,10 +111,8 @@
     ProjectsReleasesList'
     { _prlrXgafv = Nothing
     , _prlrUploadProtocol = Nothing
-    , _prlrPp = True
     , _prlrAccessToken = Nothing
     , _prlrUploadType = Nothing
-    , _prlrBearerToken = Nothing
     , _prlrName = pPrlrName_
     , _prlrFilter = Nothing
     , _prlrPageToken = Nothing
@@ -141,10 +131,6 @@
   = lens _prlrUploadProtocol
       (\ s a -> s{_prlrUploadProtocol = a})
 
--- | Pretty-print response.
-prlrPp :: Lens' ProjectsReleasesList Bool
-prlrPp = lens _prlrPp (\ s a -> s{_prlrPp = a})
-
 -- | OAuth access token.
 prlrAccessToken :: Lens' ProjectsReleasesList (Maybe Text)
 prlrAccessToken
@@ -157,35 +143,28 @@
   = lens _prlrUploadType
       (\ s a -> s{_prlrUploadType = a})
 
--- | OAuth bearer token.
-prlrBearerToken :: Lens' ProjectsReleasesList (Maybe Text)
-prlrBearerToken
-  = lens _prlrBearerToken
-      (\ s a -> s{_prlrBearerToken = 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\` and also on the \`Ruleset\`
--- \`ruleset_name\`. Example 1) A filter of \'name=prod*\' might return
--- \`Release\`s with names within \'projects\/foo\' prefixed with \'prod\':
--- Name | Ruleset Name ------------------------------|-------------
+-- 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
+-- 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 for release
--- and ruleset names are relative to the project releases and rulesets
--- collections. Fully qualified prefixed may also be used. e.g.
--- \`name=projects\/foo\/releases\/prod*
--- ruleset_name=projects\/foo\/rulesets\/uuid1\`
+-- 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})
@@ -197,9 +176,10 @@
       (\ 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 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.
+-- 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})
@@ -218,10 +198,8 @@
                "https://www.googleapis.com/auth/firebase.readonly"]
         requestClient ProjectsReleasesList'{..}
           = go _prlrName _prlrXgafv _prlrUploadProtocol
-              (Just _prlrPp)
               _prlrAccessToken
               _prlrUploadType
-              _prlrBearerToken
               _prlrFilter
               _prlrPageToken
               _prlrPageSize
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Patch.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Patch.hs
@@ -0,0 +1,164 @@
+{-# 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/Releases/Update.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Releases/Update.hs
+++ /dev/null
@@ -1,202 +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.Update
--- 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\`. Only updates to the \`ruleset_name\` field will be
--- honored. \`Release\` rename is not supported. To create a \`Release\`
--- use the CreateRelease method instead.
---
--- /See:/ <https://firebase.google.com/docs/storage/security Firebase Rules API Reference> for @firebaserules.projects.releases.update@.
-module Network.Google.Resource.FirebaseRules.Projects.Releases.Update
-    (
-    -- * REST Resource
-      ProjectsReleasesUpdateResource
-
-    -- * Creating a Request
-    , projectsReleasesUpdate
-    , ProjectsReleasesUpdate
-
-    -- * Request Lenses
-    , pruXgafv
-    , pruUploadProtocol
-    , pruPp
-    , pruAccessToken
-    , pruUploadType
-    , pruPayload
-    , pruBearerToken
-    , pruName
-    , pruCallback
-    ) where
-
-import           Network.Google.FirebaseRules.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @firebaserules.projects.releases.update@ method which the
--- 'ProjectsReleasesUpdate' request conforms to.
-type ProjectsReleasesUpdateResource =
-     "v1" :>
-       Capture "name" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] Release :> Put '[JSON] Release
-
--- | Update a \`Release\`. Only updates to the \`ruleset_name\` field will be
--- honored. \`Release\` rename is not supported. To create a \`Release\`
--- use the CreateRelease method instead.
---
--- /See:/ 'projectsReleasesUpdate' smart constructor.
-data ProjectsReleasesUpdate = ProjectsReleasesUpdate'
-    { _pruXgafv          :: !(Maybe Xgafv)
-    , _pruUploadProtocol :: !(Maybe Text)
-    , _pruPp             :: !Bool
-    , _pruAccessToken    :: !(Maybe Text)
-    , _pruUploadType     :: !(Maybe Text)
-    , _pruPayload        :: !Release
-    , _pruBearerToken    :: !(Maybe Text)
-    , _pruName           :: !Text
-    , _pruCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProjectsReleasesUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pruXgafv'
---
--- * 'pruUploadProtocol'
---
--- * 'pruPp'
---
--- * 'pruAccessToken'
---
--- * 'pruUploadType'
---
--- * 'pruPayload'
---
--- * 'pruBearerToken'
---
--- * 'pruName'
---
--- * 'pruCallback'
-projectsReleasesUpdate
-    :: Release -- ^ 'pruPayload'
-    -> Text -- ^ 'pruName'
-    -> ProjectsReleasesUpdate
-projectsReleasesUpdate pPruPayload_ pPruName_ =
-    ProjectsReleasesUpdate'
-    { _pruXgafv = Nothing
-    , _pruUploadProtocol = Nothing
-    , _pruPp = True
-    , _pruAccessToken = Nothing
-    , _pruUploadType = Nothing
-    , _pruPayload = pPruPayload_
-    , _pruBearerToken = Nothing
-    , _pruName = pPruName_
-    , _pruCallback = Nothing
-    }
-
--- | V1 error format.
-pruXgafv :: Lens' ProjectsReleasesUpdate (Maybe Xgafv)
-pruXgafv = lens _pruXgafv (\ s a -> s{_pruXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-pruUploadProtocol :: Lens' ProjectsReleasesUpdate (Maybe Text)
-pruUploadProtocol
-  = lens _pruUploadProtocol
-      (\ s a -> s{_pruUploadProtocol = a})
-
--- | Pretty-print response.
-pruPp :: Lens' ProjectsReleasesUpdate Bool
-pruPp = lens _pruPp (\ s a -> s{_pruPp = a})
-
--- | OAuth access token.
-pruAccessToken :: Lens' ProjectsReleasesUpdate (Maybe Text)
-pruAccessToken
-  = lens _pruAccessToken
-      (\ s a -> s{_pruAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-pruUploadType :: Lens' ProjectsReleasesUpdate (Maybe Text)
-pruUploadType
-  = lens _pruUploadType
-      (\ s a -> s{_pruUploadType = a})
-
--- | Multipart request metadata.
-pruPayload :: Lens' ProjectsReleasesUpdate Release
-pruPayload
-  = lens _pruPayload (\ s a -> s{_pruPayload = a})
-
--- | OAuth bearer token.
-pruBearerToken :: Lens' ProjectsReleasesUpdate (Maybe Text)
-pruBearerToken
-  = lens _pruBearerToken
-      (\ s a -> s{_pruBearerToken = a})
-
--- | 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}\`
-pruName :: Lens' ProjectsReleasesUpdate Text
-pruName = lens _pruName (\ s a -> s{_pruName = a})
-
--- | JSONP
-pruCallback :: Lens' ProjectsReleasesUpdate (Maybe Text)
-pruCallback
-  = lens _pruCallback (\ s a -> s{_pruCallback = a})
-
-instance GoogleRequest ProjectsReleasesUpdate where
-        type Rs ProjectsReleasesUpdate = Release
-        type Scopes ProjectsReleasesUpdate =
-             '["https://www.googleapis.com/auth/cloud-platform",
-               "https://www.googleapis.com/auth/firebase"]
-        requestClient ProjectsReleasesUpdate'{..}
-          = go _pruName _pruXgafv _pruUploadProtocol
-              (Just _pruPp)
-              _pruAccessToken
-              _pruUploadType
-              _pruBearerToken
-              _pruCallback
-              (Just AltJSON)
-              _pruPayload
-              firebaseRulesService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy ProjectsReleasesUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Create.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Create.hs
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Create.hs
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Create.hs
@@ -39,11 +39,9 @@
     -- * Request Lenses
     , prcXgafv
     , prcUploadProtocol
-    , prcPp
     , prcAccessToken
     , prcUploadType
     , prcPayload
-    , prcBearerToken
     , prcName
     , prcCallback
     ) where
@@ -59,13 +57,11 @@
          "rulesets" :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] Ruleset :> Post '[JSON] Ruleset
+               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
@@ -77,11 +73,9 @@
 data ProjectsRulesetsCreate = ProjectsRulesetsCreate'
     { _prcXgafv          :: !(Maybe Xgafv)
     , _prcUploadProtocol :: !(Maybe Text)
-    , _prcPp             :: !Bool
     , _prcAccessToken    :: !(Maybe Text)
     , _prcUploadType     :: !(Maybe Text)
     , _prcPayload        :: !Ruleset
-    , _prcBearerToken    :: !(Maybe Text)
     , _prcName           :: !Text
     , _prcCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -94,16 +88,12 @@
 --
 -- * 'prcUploadProtocol'
 --
--- * 'prcPp'
---
 -- * 'prcAccessToken'
 --
 -- * 'prcUploadType'
 --
 -- * 'prcPayload'
 --
--- * 'prcBearerToken'
---
 -- * 'prcName'
 --
 -- * 'prcCallback'
@@ -115,11 +105,9 @@
     ProjectsRulesetsCreate'
     { _prcXgafv = Nothing
     , _prcUploadProtocol = Nothing
-    , _prcPp = True
     , _prcAccessToken = Nothing
     , _prcUploadType = Nothing
     , _prcPayload = pPrcPayload_
-    , _prcBearerToken = Nothing
     , _prcName = pPrcName_
     , _prcCallback = Nothing
     }
@@ -134,10 +122,6 @@
   = lens _prcUploadProtocol
       (\ s a -> s{_prcUploadProtocol = a})
 
--- | Pretty-print response.
-prcPp :: Lens' ProjectsRulesetsCreate Bool
-prcPp = lens _prcPp (\ s a -> s{_prcPp = a})
-
 -- | OAuth access token.
 prcAccessToken :: Lens' ProjectsRulesetsCreate (Maybe Text)
 prcAccessToken
@@ -155,12 +139,6 @@
 prcPayload
   = lens _prcPayload (\ s a -> s{_prcPayload = a})
 
--- | OAuth bearer token.
-prcBearerToken :: Lens' ProjectsRulesetsCreate (Maybe Text)
-prcBearerToken
-  = lens _prcBearerToken
-      (\ s a -> s{_prcBearerToken = a})
-
 -- | Resource name for Project which owns this \`Ruleset\`. Format:
 -- \`projects\/{project_id}\`
 prcName :: Lens' ProjectsRulesetsCreate Text
@@ -178,10 +156,8 @@
                "https://www.googleapis.com/auth/firebase"]
         requestClient ProjectsRulesetsCreate'{..}
           = go _prcName _prcXgafv _prcUploadProtocol
-              (Just _prcPp)
               _prcAccessToken
               _prcUploadType
-              _prcBearerToken
               _prcCallback
               (Just AltJSON)
               _prcPayload
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Delete.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Delete.hs
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Delete.hs
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Delete.hs
@@ -36,10 +36,8 @@
     -- * Request Lenses
     , proXgafv
     , proUploadProtocol
-    , proPp
     , proAccessToken
     , proUploadType
-    , proBearerToken
     , proName
     , proCallback
     ) where
@@ -54,12 +52,10 @@
        Capture "name" Text :>
          QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+             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.
@@ -68,10 +64,8 @@
 data ProjectsRulesetsDelete = ProjectsRulesetsDelete'
     { _proXgafv          :: !(Maybe Xgafv)
     , _proUploadProtocol :: !(Maybe Text)
-    , _proPp             :: !Bool
     , _proAccessToken    :: !(Maybe Text)
     , _proUploadType     :: !(Maybe Text)
-    , _proBearerToken    :: !(Maybe Text)
     , _proName           :: !Text
     , _proCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -84,14 +78,10 @@
 --
 -- * 'proUploadProtocol'
 --
--- * 'proPp'
---
 -- * 'proAccessToken'
 --
 -- * 'proUploadType'
 --
--- * 'proBearerToken'
---
 -- * 'proName'
 --
 -- * 'proCallback'
@@ -102,10 +92,8 @@
     ProjectsRulesetsDelete'
     { _proXgafv = Nothing
     , _proUploadProtocol = Nothing
-    , _proPp = True
     , _proAccessToken = Nothing
     , _proUploadType = Nothing
-    , _proBearerToken = Nothing
     , _proName = pProName_
     , _proCallback = Nothing
     }
@@ -120,10 +108,6 @@
   = lens _proUploadProtocol
       (\ s a -> s{_proUploadProtocol = a})
 
--- | Pretty-print response.
-proPp :: Lens' ProjectsRulesetsDelete Bool
-proPp = lens _proPp (\ s a -> s{_proPp = a})
-
 -- | OAuth access token.
 proAccessToken :: Lens' ProjectsRulesetsDelete (Maybe Text)
 proAccessToken
@@ -136,12 +120,6 @@
   = lens _proUploadType
       (\ s a -> s{_proUploadType = a})
 
--- | OAuth bearer token.
-proBearerToken :: Lens' ProjectsRulesetsDelete (Maybe Text)
-proBearerToken
-  = lens _proBearerToken
-      (\ s a -> s{_proBearerToken = a})
-
 -- | Resource name for the ruleset to delete. Format:
 -- \`projects\/{project_id}\/rulesets\/{ruleset_id}\`
 proName :: Lens' ProjectsRulesetsDelete Text
@@ -159,10 +137,8 @@
                "https://www.googleapis.com/auth/firebase"]
         requestClient ProjectsRulesetsDelete'{..}
           = go _proName _proXgafv _proUploadProtocol
-              (Just _proPp)
               _proAccessToken
               _proUploadType
-              _proBearerToken
               _proCallback
               (Just AltJSON)
               firebaseRulesService
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Get.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Get.hs
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Get.hs
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/Get.hs
@@ -35,10 +35,8 @@
     -- * Request Lenses
     , prgXgafv
     , prgUploadProtocol
-    , prgPp
     , prgAccessToken
     , prgUploadType
-    , prgBearerToken
     , prgName
     , prgCallback
     ) where
@@ -53,12 +51,10 @@
        Capture "name" Text :>
          QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :> Get '[JSON] Ruleset
+             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.
 --
@@ -66,10 +62,8 @@
 data ProjectsRulesetsGet = ProjectsRulesetsGet'
     { _prgXgafv          :: !(Maybe Xgafv)
     , _prgUploadProtocol :: !(Maybe Text)
-    , _prgPp             :: !Bool
     , _prgAccessToken    :: !(Maybe Text)
     , _prgUploadType     :: !(Maybe Text)
-    , _prgBearerToken    :: !(Maybe Text)
     , _prgName           :: !Text
     , _prgCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -82,14 +76,10 @@
 --
 -- * 'prgUploadProtocol'
 --
--- * 'prgPp'
---
 -- * 'prgAccessToken'
 --
 -- * 'prgUploadType'
 --
--- * 'prgBearerToken'
---
 -- * 'prgName'
 --
 -- * 'prgCallback'
@@ -100,10 +90,8 @@
     ProjectsRulesetsGet'
     { _prgXgafv = Nothing
     , _prgUploadProtocol = Nothing
-    , _prgPp = True
     , _prgAccessToken = Nothing
     , _prgUploadType = Nothing
-    , _prgBearerToken = Nothing
     , _prgName = pPrgName_
     , _prgCallback = Nothing
     }
@@ -118,10 +106,6 @@
   = lens _prgUploadProtocol
       (\ s a -> s{_prgUploadProtocol = a})
 
--- | Pretty-print response.
-prgPp :: Lens' ProjectsRulesetsGet Bool
-prgPp = lens _prgPp (\ s a -> s{_prgPp = a})
-
 -- | OAuth access token.
 prgAccessToken :: Lens' ProjectsRulesetsGet (Maybe Text)
 prgAccessToken
@@ -134,12 +118,6 @@
   = lens _prgUploadType
       (\ s a -> s{_prgUploadType = a})
 
--- | OAuth bearer token.
-prgBearerToken :: Lens' ProjectsRulesetsGet (Maybe Text)
-prgBearerToken
-  = lens _prgBearerToken
-      (\ s a -> s{_prgBearerToken = a})
-
 -- | Resource name for the ruleset to get. Format:
 -- \`projects\/{project_id}\/rulesets\/{ruleset_id}\`
 prgName :: Lens' ProjectsRulesetsGet Text
@@ -158,10 +136,8 @@
                "https://www.googleapis.com/auth/firebase.readonly"]
         requestClient ProjectsRulesetsGet'{..}
           = go _prgName _prgXgafv _prgUploadProtocol
-              (Just _prgPp)
               _prgAccessToken
               _prgUploadType
-              _prgBearerToken
               _prgCallback
               (Just AltJSON)
               firebaseRulesService
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/List.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/List.hs
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/List.hs
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Rulesets/List.hs
@@ -21,7 +21,7 @@
 -- 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
+-- \`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@.
@@ -37,11 +37,10 @@
     -- * Request Lenses
     , prlXgafv
     , prlUploadProtocol
-    , prlPp
     , prlAccessToken
     , prlUploadType
-    , prlBearerToken
     , prlName
+    , prlFilter
     , prlPageToken
     , prlPageSize
     , prlCallback
@@ -58,29 +57,27 @@
          "rulesets" :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "pageToken" Text :>
-                         QueryParam "pageSize" (Textual Int32) :>
-                           QueryParam "callback" Text :>
-                             QueryParam "alt" AltJSON :>
-                               Get '[JSON] ListRulesetsResponse
+               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
+-- \`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)
-    , _prlPp             :: !Bool
     , _prlAccessToken    :: !(Maybe Text)
     , _prlUploadType     :: !(Maybe Text)
-    , _prlBearerToken    :: !(Maybe Text)
     , _prlName           :: !Text
+    , _prlFilter         :: !(Maybe Text)
     , _prlPageToken      :: !(Maybe Text)
     , _prlPageSize       :: !(Maybe (Textual Int32))
     , _prlCallback       :: !(Maybe Text)
@@ -94,16 +91,14 @@
 --
 -- * 'prlUploadProtocol'
 --
--- * 'prlPp'
---
 -- * 'prlAccessToken'
 --
 -- * 'prlUploadType'
 --
--- * 'prlBearerToken'
---
 -- * 'prlName'
 --
+-- * 'prlFilter'
+--
 -- * 'prlPageToken'
 --
 -- * 'prlPageSize'
@@ -116,11 +111,10 @@
     ProjectsRulesetsList'
     { _prlXgafv = Nothing
     , _prlUploadProtocol = Nothing
-    , _prlPp = True
     , _prlAccessToken = Nothing
     , _prlUploadType = Nothing
-    , _prlBearerToken = Nothing
     , _prlName = pPrlName_
+    , _prlFilter = Nothing
     , _prlPageToken = Nothing
     , _prlPageSize = Nothing
     , _prlCallback = Nothing
@@ -136,10 +130,6 @@
   = lens _prlUploadProtocol
       (\ s a -> s{_prlUploadProtocol = a})
 
--- | Pretty-print response.
-prlPp :: Lens' ProjectsRulesetsList Bool
-prlPp = lens _prlPp (\ s a -> s{_prlPp = a})
-
 -- | OAuth access token.
 prlAccessToken :: Lens' ProjectsRulesetsList (Maybe Text)
 prlAccessToken
@@ -152,16 +142,19 @@
   = lens _prlUploadType
       (\ s a -> s{_prlUploadType = a})
 
--- | OAuth bearer token.
-prlBearerToken :: Lens' ProjectsRulesetsList (Maybe Text)
-prlBearerToken
-  = lens _prlBearerToken
-      (\ s a -> s{_prlBearerToken = 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-01\")
+-- 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
@@ -189,10 +182,9 @@
                "https://www.googleapis.com/auth/firebase.readonly"]
         requestClient ProjectsRulesetsList'{..}
           = go _prlName _prlXgafv _prlUploadProtocol
-              (Just _prlPp)
               _prlAccessToken
               _prlUploadType
-              _prlBearerToken
+              _prlFilter
               _prlPageToken
               _prlPageSize
               _prlCallback
diff --git a/gen/Network/Google/Resource/FirebaseRules/Projects/Test.hs b/gen/Network/Google/Resource/FirebaseRules/Projects/Test.hs
--- a/gen/Network/Google/Resource/FirebaseRules/Projects/Test.hs
+++ b/gen/Network/Google/Resource/FirebaseRules/Projects/Test.hs
@@ -20,20 +20,19 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Test \`Source\` for syntactic and semantic correctness. Issues present
--- in the rules, if any, will be returned to the caller with a description,
--- severity, and source location. The test method will typically be
--- executed with a developer provided \`Source\`, but if regression testing
--- is desired, this method may be executed against a \`Ruleset\` resource
--- name and the \`Source\` will be retrieved from the persisted
--- \`Ruleset\`. The following is an example of \`Source\` that permits
+-- 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.userId && (imageName.endsWith(\'.png\') ||
--- imageName.endsWith(\'.jpg\')) &&
--- resource.mimeType.startsWith(\'image\/\') } }
+-- request.auth.uid &&
+-- (imageName.matches(\'*.png′)||/i//m//a//g//e//N//a//m//e/./m//a//t//c//h//e//s/(′ * ./j//p//g/\'))
+-- && 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
@@ -48,11 +47,9 @@
     -- * Request Lenses
     , ptXgafv
     , ptUploadProtocol
-    , ptPp
     , ptAccessToken
     , ptUploadType
     , ptPayload
-    , ptBearerToken
     , ptName
     , ptCallback
     ) where
@@ -67,39 +64,34 @@
        CaptureMode "name" "test" Text :>
          QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] TestRulesetRequest :>
-                           Post '[JSON] TestRulesetResponse
+             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
--- in the rules, if any, will be returned to the caller with a description,
--- severity, and source location. The test method will typically be
--- executed with a developer provided \`Source\`, but if regression testing
--- is desired, this method may be executed against a \`Ruleset\` resource
--- name and the \`Source\` will be retrieved from the persisted
--- \`Ruleset\`. The following is an example of \`Source\` that permits
+-- | 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.userId && (imageName.endsWith(\'.png\') ||
--- imageName.endsWith(\'.jpg\')) &&
--- resource.mimeType.startsWith(\'image\/\') } }
+-- request.auth.uid &&
+-- (imageName.matches(\'*.png′)||/i//m//a//g//e//N//a//m//e/./m//a//t//c//h//e//s/(′ * ./j//p//g/\'))
+-- && resource.mimeType.matches(\'^image\/\') } }
 --
 -- /See:/ 'projectsTest' smart constructor.
 data ProjectsTest = ProjectsTest'
     { _ptXgafv          :: !(Maybe Xgafv)
     , _ptUploadProtocol :: !(Maybe Text)
-    , _ptPp             :: !Bool
     , _ptAccessToken    :: !(Maybe Text)
     , _ptUploadType     :: !(Maybe Text)
     , _ptPayload        :: !TestRulesetRequest
-    , _ptBearerToken    :: !(Maybe Text)
     , _ptName           :: !Text
     , _ptCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -112,16 +104,12 @@
 --
 -- * 'ptUploadProtocol'
 --
--- * 'ptPp'
---
 -- * 'ptAccessToken'
 --
 -- * 'ptUploadType'
 --
 -- * 'ptPayload'
 --
--- * 'ptBearerToken'
---
 -- * 'ptName'
 --
 -- * 'ptCallback'
@@ -133,11 +121,9 @@
     ProjectsTest'
     { _ptXgafv = Nothing
     , _ptUploadProtocol = Nothing
-    , _ptPp = True
     , _ptAccessToken = Nothing
     , _ptUploadType = Nothing
     , _ptPayload = pPtPayload_
-    , _ptBearerToken = Nothing
     , _ptName = pPtName_
     , _ptCallback = Nothing
     }
@@ -152,10 +138,6 @@
   = lens _ptUploadProtocol
       (\ s a -> s{_ptUploadProtocol = a})
 
--- | Pretty-print response.
-ptPp :: Lens' ProjectsTest Bool
-ptPp = lens _ptPp (\ s a -> s{_ptPp = a})
-
 -- | OAuth access token.
 ptAccessToken :: Lens' ProjectsTest (Maybe Text)
 ptAccessToken
@@ -172,13 +154,11 @@
 ptPayload
   = lens _ptPayload (\ s a -> s{_ptPayload = a})
 
--- | OAuth bearer token.
-ptBearerToken :: Lens' ProjectsTest (Maybe Text)
-ptBearerToken
-  = lens _ptBearerToken
-      (\ s a -> s{_ptBearerToken = a})
-
--- | Name of the project. Format: \`projects\/{project_id}\`
+-- | 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})
 
@@ -194,10 +174,9 @@
                "https://www.googleapis.com/auth/firebase",
                "https://www.googleapis.com/auth/firebase.readonly"]
         requestClient ProjectsTest'{..}
-          = go _ptName _ptXgafv _ptUploadProtocol (Just _ptPp)
+          = go _ptName _ptXgafv _ptUploadProtocol
               _ptAccessToken
               _ptUploadType
-              _ptBearerToken
               _ptCallback
               (Just AltJSON)
               _ptPayload
diff --git a/gogol-firebase-rules.cabal b/gogol-firebase-rules.cabal
--- a/gogol-firebase-rules.cabal
+++ b/gogol-firebase-rules.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-firebase-rules
-version:               0.3.0
+version:               0.4.0
 synopsis:              Google Firebase Rules SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -39,8 +39,9 @@
         , 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.Update
+        , 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
@@ -52,5 +53,5 @@
         , Network.Google.FirebaseRules.Types.Sum
 
     build-depends:
-          gogol-core == 0.3.0.*
+          gogol-core == 0.4.0.*
         , base       >= 4.7 && < 5
