diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.5.0`
+`1.0.0`
 
 
 ## Description
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,3 @@
-import           Distribution.Simple
+import Distribution.Simple
+
 main = defaultMain
diff --git a/gen/Gogol/CloudShell.hs b/gen/Gogol/CloudShell.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell.hs
@@ -0,0 +1,198 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Allows users to start, configure, and connect to interactive shell sessions running in the cloud.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference>
+module Gogol.CloudShell
+  ( -- * Configuration
+    cloudShellService,
+
+    -- * OAuth Scopes
+    CloudPlatform'FullControl,
+
+    -- * Resources
+
+    -- ** cloudshell.operations.cancel
+    CloudShellOperationsCancelResource,
+    CloudShellOperationsCancel (..),
+    newCloudShellOperationsCancel,
+
+    -- ** cloudshell.operations.delete
+    CloudShellOperationsDeleteResource,
+    CloudShellOperationsDelete (..),
+    newCloudShellOperationsDelete,
+
+    -- ** cloudshell.operations.get
+    CloudShellOperationsGetResource,
+    CloudShellOperationsGet (..),
+    newCloudShellOperationsGet,
+
+    -- ** cloudshell.operations.list
+    CloudShellOperationsListResource,
+    CloudShellOperationsList (..),
+    newCloudShellOperationsList,
+
+    -- ** cloudshell.users.environments.addPublicKey
+    CloudShellUsersEnvironmentsAddPublicKeyResource,
+    CloudShellUsersEnvironmentsAddPublicKey (..),
+    newCloudShellUsersEnvironmentsAddPublicKey,
+
+    -- ** cloudshell.users.environments.authorize
+    CloudShellUsersEnvironmentsAuthorizeResource,
+    CloudShellUsersEnvironmentsAuthorize (..),
+    newCloudShellUsersEnvironmentsAuthorize,
+
+    -- ** cloudshell.users.environments.get
+    CloudShellUsersEnvironmentsGetResource,
+    CloudShellUsersEnvironmentsGet (..),
+    newCloudShellUsersEnvironmentsGet,
+
+    -- ** cloudshell.users.environments.removePublicKey
+    CloudShellUsersEnvironmentsRemovePublicKeyResource,
+    CloudShellUsersEnvironmentsRemovePublicKey (..),
+    newCloudShellUsersEnvironmentsRemovePublicKey,
+
+    -- ** cloudshell.users.environments.start
+    CloudShellUsersEnvironmentsStartResource,
+    CloudShellUsersEnvironmentsStart (..),
+    newCloudShellUsersEnvironmentsStart,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** AddPublicKeyMetadata
+    AddPublicKeyMetadata (..),
+    newAddPublicKeyMetadata,
+
+    -- ** AddPublicKeyRequest
+    AddPublicKeyRequest (..),
+    newAddPublicKeyRequest,
+
+    -- ** AddPublicKeyResponse
+    AddPublicKeyResponse (..),
+    newAddPublicKeyResponse,
+
+    -- ** AuthorizeEnvironmentMetadata
+    AuthorizeEnvironmentMetadata (..),
+    newAuthorizeEnvironmentMetadata,
+
+    -- ** AuthorizeEnvironmentRequest
+    AuthorizeEnvironmentRequest (..),
+    newAuthorizeEnvironmentRequest,
+
+    -- ** AuthorizeEnvironmentResponse
+    AuthorizeEnvironmentResponse (..),
+    newAuthorizeEnvironmentResponse,
+
+    -- ** CancelOperationRequest
+    CancelOperationRequest (..),
+    newCancelOperationRequest,
+
+    -- ** CreateEnvironmentMetadata
+    CreateEnvironmentMetadata (..),
+    newCreateEnvironmentMetadata,
+
+    -- ** DeleteEnvironmentMetadata
+    DeleteEnvironmentMetadata (..),
+    newDeleteEnvironmentMetadata,
+
+    -- ** Empty
+    Empty (..),
+    newEmpty,
+
+    -- ** Environment
+    Environment (..),
+    newEnvironment,
+
+    -- ** Environment_State
+    Environment_State (..),
+
+    -- ** ListOperationsResponse
+    ListOperationsResponse (..),
+    newListOperationsResponse,
+
+    -- ** Operation
+    Operation (..),
+    newOperation,
+
+    -- ** Operation_Metadata
+    Operation_Metadata (..),
+    newOperation_Metadata,
+
+    -- ** Operation_Response
+    Operation_Response (..),
+    newOperation_Response,
+
+    -- ** RemovePublicKeyMetadata
+    RemovePublicKeyMetadata (..),
+    newRemovePublicKeyMetadata,
+
+    -- ** RemovePublicKeyRequest
+    RemovePublicKeyRequest (..),
+    newRemovePublicKeyRequest,
+
+    -- ** RemovePublicKeyResponse
+    RemovePublicKeyResponse (..),
+    newRemovePublicKeyResponse,
+
+    -- ** StartEnvironmentMetadata
+    StartEnvironmentMetadata (..),
+    newStartEnvironmentMetadata,
+
+    -- ** StartEnvironmentMetadata_State
+    StartEnvironmentMetadata_State (..),
+
+    -- ** StartEnvironmentRequest
+    StartEnvironmentRequest (..),
+    newStartEnvironmentRequest,
+
+    -- ** StartEnvironmentResponse
+    StartEnvironmentResponse (..),
+    newStartEnvironmentResponse,
+
+    -- ** Status
+    Status (..),
+    newStatus,
+
+    -- ** Status_DetailsItem
+    Status_DetailsItem (..),
+    newStatus_DetailsItem,
+  )
+where
+
+import Gogol.CloudShell.Operations.Cancel
+import Gogol.CloudShell.Operations.Delete
+import Gogol.CloudShell.Operations.Get
+import Gogol.CloudShell.Operations.List
+import Gogol.CloudShell.Types
+import Gogol.CloudShell.Users.Environments.AddPublicKey
+import Gogol.CloudShell.Users.Environments.Authorize
+import Gogol.CloudShell.Users.Environments.Get
+import Gogol.CloudShell.Users.Environments.RemovePublicKey
+import Gogol.CloudShell.Users.Environments.Start
diff --git a/gen/Gogol/CloudShell/Internal/Product.hs b/gen/Gogol/CloudShell/Internal/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Internal/Product.hs
@@ -0,0 +1,796 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Internal.Product
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.CloudShell.Internal.Product
+  ( -- * AddPublicKeyMetadata
+    AddPublicKeyMetadata (..),
+    newAddPublicKeyMetadata,
+
+    -- * AddPublicKeyRequest
+    AddPublicKeyRequest (..),
+    newAddPublicKeyRequest,
+
+    -- * AddPublicKeyResponse
+    AddPublicKeyResponse (..),
+    newAddPublicKeyResponse,
+
+    -- * AuthorizeEnvironmentMetadata
+    AuthorizeEnvironmentMetadata (..),
+    newAuthorizeEnvironmentMetadata,
+
+    -- * AuthorizeEnvironmentRequest
+    AuthorizeEnvironmentRequest (..),
+    newAuthorizeEnvironmentRequest,
+
+    -- * AuthorizeEnvironmentResponse
+    AuthorizeEnvironmentResponse (..),
+    newAuthorizeEnvironmentResponse,
+
+    -- * CancelOperationRequest
+    CancelOperationRequest (..),
+    newCancelOperationRequest,
+
+    -- * CreateEnvironmentMetadata
+    CreateEnvironmentMetadata (..),
+    newCreateEnvironmentMetadata,
+
+    -- * DeleteEnvironmentMetadata
+    DeleteEnvironmentMetadata (..),
+    newDeleteEnvironmentMetadata,
+
+    -- * Empty
+    Empty (..),
+    newEmpty,
+
+    -- * Environment
+    Environment (..),
+    newEnvironment,
+
+    -- * ListOperationsResponse
+    ListOperationsResponse (..),
+    newListOperationsResponse,
+
+    -- * Operation
+    Operation (..),
+    newOperation,
+
+    -- * Operation_Metadata
+    Operation_Metadata (..),
+    newOperation_Metadata,
+
+    -- * Operation_Response
+    Operation_Response (..),
+    newOperation_Response,
+
+    -- * RemovePublicKeyMetadata
+    RemovePublicKeyMetadata (..),
+    newRemovePublicKeyMetadata,
+
+    -- * RemovePublicKeyRequest
+    RemovePublicKeyRequest (..),
+    newRemovePublicKeyRequest,
+
+    -- * RemovePublicKeyResponse
+    RemovePublicKeyResponse (..),
+    newRemovePublicKeyResponse,
+
+    -- * StartEnvironmentMetadata
+    StartEnvironmentMetadata (..),
+    newStartEnvironmentMetadata,
+
+    -- * StartEnvironmentRequest
+    StartEnvironmentRequest (..),
+    newStartEnvironmentRequest,
+
+    -- * StartEnvironmentResponse
+    StartEnvironmentResponse (..),
+    newStartEnvironmentResponse,
+
+    -- * Status
+    Status (..),
+    newStatus,
+
+    -- * Status_DetailsItem
+    Status_DetailsItem (..),
+    newStatus_DetailsItem,
+  )
+where
+
+import Gogol.CloudShell.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Message included in the metadata field of operations returned from AddPublicKey.
+--
+-- /See:/ 'newAddPublicKeyMetadata' smart constructor.
+data AddPublicKeyMetadata = AddPublicKeyMetadata
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddPublicKeyMetadata' with the minimum fields required to make a request.
+newAddPublicKeyMetadata ::
+  AddPublicKeyMetadata
+newAddPublicKeyMetadata = AddPublicKeyMetadata
+
+instance Core.FromJSON AddPublicKeyMetadata where
+  parseJSON =
+    Core.withObject
+      "AddPublicKeyMetadata"
+      (\o -> Core.pure AddPublicKeyMetadata)
+
+instance Core.ToJSON AddPublicKeyMetadata where
+  toJSON = Core.const Core.emptyObject
+
+-- | Request message for AddPublicKey.
+--
+-- /See:/ 'newAddPublicKeyRequest' smart constructor.
+newtype AddPublicKeyRequest = AddPublicKeyRequest
+  { -- | Key that should be added to the environment. Supported formats are @ssh-dss@ (see RFC4253), @ssh-rsa@ (see RFC4253), @ecdsa-sha2-nistp256@ (see RFC5656), @ecdsa-sha2-nistp384@ (see RFC5656) and @ecdsa-sha2-nistp521@ (see RFC5656). It should be structured as \<format> \<content>, where \<content> part is encoded with Base64.
+    key :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddPublicKeyRequest' with the minimum fields required to make a request.
+newAddPublicKeyRequest ::
+  AddPublicKeyRequest
+newAddPublicKeyRequest = AddPublicKeyRequest {key = Core.Nothing}
+
+instance Core.FromJSON AddPublicKeyRequest where
+  parseJSON =
+    Core.withObject
+      "AddPublicKeyRequest"
+      (\o -> AddPublicKeyRequest Core.<$> (o Core..:? "key"))
+
+instance Core.ToJSON AddPublicKeyRequest where
+  toJSON AddPublicKeyRequest {..} =
+    Core.object (Core.catMaybes [("key" Core..=) Core.<$> key])
+
+-- | Response message for AddPublicKey.
+--
+-- /See:/ 'newAddPublicKeyResponse' smart constructor.
+newtype AddPublicKeyResponse = AddPublicKeyResponse
+  { -- | Key that was added to the environment.
+    key :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AddPublicKeyResponse' with the minimum fields required to make a request.
+newAddPublicKeyResponse ::
+  AddPublicKeyResponse
+newAddPublicKeyResponse = AddPublicKeyResponse {key = Core.Nothing}
+
+instance Core.FromJSON AddPublicKeyResponse where
+  parseJSON =
+    Core.withObject
+      "AddPublicKeyResponse"
+      (\o -> AddPublicKeyResponse Core.<$> (o Core..:? "key"))
+
+instance Core.ToJSON AddPublicKeyResponse where
+  toJSON AddPublicKeyResponse {..} =
+    Core.object (Core.catMaybes [("key" Core..=) Core.<$> key])
+
+-- | Message included in the metadata field of operations returned from AuthorizeEnvironment.
+--
+-- /See:/ 'newAuthorizeEnvironmentMetadata' smart constructor.
+data AuthorizeEnvironmentMetadata = AuthorizeEnvironmentMetadata
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AuthorizeEnvironmentMetadata' with the minimum fields required to make a request.
+newAuthorizeEnvironmentMetadata ::
+  AuthorizeEnvironmentMetadata
+newAuthorizeEnvironmentMetadata = AuthorizeEnvironmentMetadata
+
+instance Core.FromJSON AuthorizeEnvironmentMetadata where
+  parseJSON =
+    Core.withObject
+      "AuthorizeEnvironmentMetadata"
+      (\o -> Core.pure AuthorizeEnvironmentMetadata)
+
+instance Core.ToJSON AuthorizeEnvironmentMetadata where
+  toJSON = Core.const Core.emptyObject
+
+-- | Request message for AuthorizeEnvironment.
+--
+-- /See:/ 'newAuthorizeEnvironmentRequest' smart constructor.
+data AuthorizeEnvironmentRequest = AuthorizeEnvironmentRequest
+  { -- | The OAuth access token that should be sent to the environment.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | The time when the credentials expire. If not set, defaults to one hour from when the server received the request.
+    expireTime :: (Core.Maybe Core.DateTime),
+    -- | The OAuth ID token that should be sent to the environment.
+    idToken :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AuthorizeEnvironmentRequest' with the minimum fields required to make a request.
+newAuthorizeEnvironmentRequest ::
+  AuthorizeEnvironmentRequest
+newAuthorizeEnvironmentRequest =
+  AuthorizeEnvironmentRequest
+    { accessToken = Core.Nothing,
+      expireTime = Core.Nothing,
+      idToken = Core.Nothing
+    }
+
+instance Core.FromJSON AuthorizeEnvironmentRequest where
+  parseJSON =
+    Core.withObject
+      "AuthorizeEnvironmentRequest"
+      ( \o ->
+          AuthorizeEnvironmentRequest
+            Core.<$> (o Core..:? "accessToken")
+            Core.<*> (o Core..:? "expireTime")
+            Core.<*> (o Core..:? "idToken")
+      )
+
+instance Core.ToJSON AuthorizeEnvironmentRequest where
+  toJSON AuthorizeEnvironmentRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("accessToken" Core..=) Core.<$> accessToken,
+            ("expireTime" Core..=) Core.<$> expireTime,
+            ("idToken" Core..=) Core.<$> idToken
+          ]
+      )
+
+-- | Response message for AuthorizeEnvironment.
+--
+-- /See:/ 'newAuthorizeEnvironmentResponse' smart constructor.
+data AuthorizeEnvironmentResponse = AuthorizeEnvironmentResponse
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AuthorizeEnvironmentResponse' with the minimum fields required to make a request.
+newAuthorizeEnvironmentResponse ::
+  AuthorizeEnvironmentResponse
+newAuthorizeEnvironmentResponse = AuthorizeEnvironmentResponse
+
+instance Core.FromJSON AuthorizeEnvironmentResponse where
+  parseJSON =
+    Core.withObject
+      "AuthorizeEnvironmentResponse"
+      (\o -> Core.pure AuthorizeEnvironmentResponse)
+
+instance Core.ToJSON AuthorizeEnvironmentResponse where
+  toJSON = Core.const Core.emptyObject
+
+-- | The request message for Operations.CancelOperation.
+--
+-- /See:/ 'newCancelOperationRequest' smart constructor.
+data CancelOperationRequest = CancelOperationRequest
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CancelOperationRequest' with the minimum fields required to make a request.
+newCancelOperationRequest ::
+  CancelOperationRequest
+newCancelOperationRequest = CancelOperationRequest
+
+instance Core.FromJSON CancelOperationRequest where
+  parseJSON =
+    Core.withObject
+      "CancelOperationRequest"
+      (\o -> Core.pure CancelOperationRequest)
+
+instance Core.ToJSON CancelOperationRequest where
+  toJSON = Core.const Core.emptyObject
+
+-- | Message included in the metadata field of operations returned from CreateEnvironment.
+--
+-- /See:/ 'newCreateEnvironmentMetadata' smart constructor.
+data CreateEnvironmentMetadata = CreateEnvironmentMetadata
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CreateEnvironmentMetadata' with the minimum fields required to make a request.
+newCreateEnvironmentMetadata ::
+  CreateEnvironmentMetadata
+newCreateEnvironmentMetadata = CreateEnvironmentMetadata
+
+instance Core.FromJSON CreateEnvironmentMetadata where
+  parseJSON =
+    Core.withObject
+      "CreateEnvironmentMetadata"
+      (\o -> Core.pure CreateEnvironmentMetadata)
+
+instance Core.ToJSON CreateEnvironmentMetadata where
+  toJSON = Core.const Core.emptyObject
+
+-- | Message included in the metadata field of operations returned from DeleteEnvironment.
+--
+-- /See:/ 'newDeleteEnvironmentMetadata' smart constructor.
+data DeleteEnvironmentMetadata = DeleteEnvironmentMetadata
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DeleteEnvironmentMetadata' with the minimum fields required to make a request.
+newDeleteEnvironmentMetadata ::
+  DeleteEnvironmentMetadata
+newDeleteEnvironmentMetadata = DeleteEnvironmentMetadata
+
+instance Core.FromJSON DeleteEnvironmentMetadata where
+  parseJSON =
+    Core.withObject
+      "DeleteEnvironmentMetadata"
+      (\o -> Core.pure DeleteEnvironmentMetadata)
+
+instance Core.ToJSON DeleteEnvironmentMetadata where
+  toJSON = Core.const Core.emptyObject
+
+-- | A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
+--
+-- /See:/ 'newEmpty' smart constructor.
+data Empty = Empty
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Empty' with the minimum fields required to make a request.
+newEmpty ::
+  Empty
+newEmpty = Empty
+
+instance Core.FromJSON Empty where
+  parseJSON = Core.withObject "Empty" (\o -> Core.pure Empty)
+
+instance Core.ToJSON Empty where
+  toJSON = Core.const Core.emptyObject
+
+-- | A Cloud Shell environment, which is defined as the combination of a Docker image specifying what is installed on the environment and a home directory containing the user\'s data that will remain across sessions. Each user has at least an environment with the ID \"default\".
+--
+-- /See:/ 'newEnvironment' smart constructor.
+data Environment = Environment
+  { -- | Required. Immutable. Full path to the Docker image used to run this environment, e.g. \"gcr.io\/dev-con\/cloud-devshell:latest\".
+    dockerImage :: (Core.Maybe Core.Text),
+    -- | Output only. The environment\'s identifier, unique among the user\'s environments.
+    id :: (Core.Maybe Core.Text),
+    -- | Immutable. Full name of this resource, in the format @users\/{owner_email}\/environments\/{environment_id}@. @{owner_email}@ is the email address of the user to whom this environment belongs, and @{environment_id}@ is the identifier of this environment. For example, @users\/someone\@example.com\/environments\/default@.
+    name :: (Core.Maybe Core.Text),
+    -- | Output only. Public keys associated with the environment. Clients can connect to this environment via SSH only if they possess a private key corresponding to at least one of these public keys. Keys can be added to or removed from the environment using the AddPublicKey and RemovePublicKey methods.
+    publicKeys :: (Core.Maybe [Core.Text]),
+    -- | Output only. Host to which clients can connect to initiate SSH sessions with the environment.
+    sshHost :: (Core.Maybe Core.Text),
+    -- | Output only. Port to which clients can connect to initiate SSH sessions with the environment.
+    sshPort :: (Core.Maybe Core.Int32),
+    -- | Output only. Username that clients should use when initiating SSH sessions with the environment.
+    sshUsername :: (Core.Maybe Core.Text),
+    -- | Output only. Current execution state of this environment.
+    state :: (Core.Maybe Environment_State),
+    -- | Output only. Host to which clients can connect to initiate HTTPS or WSS connections with the environment.
+    webHost :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Environment' with the minimum fields required to make a request.
+newEnvironment ::
+  Environment
+newEnvironment =
+  Environment
+    { dockerImage = Core.Nothing,
+      id = Core.Nothing,
+      name = Core.Nothing,
+      publicKeys = Core.Nothing,
+      sshHost = Core.Nothing,
+      sshPort = Core.Nothing,
+      sshUsername = Core.Nothing,
+      state = Core.Nothing,
+      webHost = Core.Nothing
+    }
+
+instance Core.FromJSON Environment where
+  parseJSON =
+    Core.withObject
+      "Environment"
+      ( \o ->
+          Environment
+            Core.<$> (o Core..:? "dockerImage")
+            Core.<*> (o Core..:? "id")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "publicKeys")
+            Core.<*> (o Core..:? "sshHost")
+            Core.<*> (o Core..:? "sshPort")
+            Core.<*> (o Core..:? "sshUsername")
+            Core.<*> (o Core..:? "state")
+            Core.<*> (o Core..:? "webHost")
+      )
+
+instance Core.ToJSON Environment where
+  toJSON Environment {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dockerImage" Core..=) Core.<$> dockerImage,
+            ("id" Core..=) Core.<$> id,
+            ("name" Core..=) Core.<$> name,
+            ("publicKeys" Core..=) Core.<$> publicKeys,
+            ("sshHost" Core..=) Core.<$> sshHost,
+            ("sshPort" Core..=) Core.<$> sshPort,
+            ("sshUsername" Core..=) Core.<$> sshUsername,
+            ("state" Core..=) Core.<$> state,
+            ("webHost" Core..=) Core.<$> webHost
+          ]
+      )
+
+-- | The response message for Operations.ListOperations.
+--
+-- /See:/ 'newListOperationsResponse' smart constructor.
+data ListOperationsResponse = ListOperationsResponse
+  { -- | The standard List next-page token.
+    nextPageToken :: (Core.Maybe Core.Text),
+    -- | A list of operations that matches the specified filter in the request.
+    operations :: (Core.Maybe [Operation])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListOperationsResponse' with the minimum fields required to make a request.
+newListOperationsResponse ::
+  ListOperationsResponse
+newListOperationsResponse =
+  ListOperationsResponse
+    { nextPageToken = Core.Nothing,
+      operations = Core.Nothing
+    }
+
+instance Core.FromJSON ListOperationsResponse where
+  parseJSON =
+    Core.withObject
+      "ListOperationsResponse"
+      ( \o ->
+          ListOperationsResponse
+            Core.<$> (o Core..:? "nextPageToken")
+            Core.<*> (o Core..:? "operations")
+      )
+
+instance Core.ToJSON ListOperationsResponse where
+  toJSON ListOperationsResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("nextPageToken" Core..=) Core.<$> nextPageToken,
+            ("operations" Core..=) Core.<$> operations
+          ]
+      )
+
+-- | This resource represents a long-running operation that is the result of a network API call.
+--
+-- /See:/ 'newOperation' smart constructor.
+data Operation = Operation
+  { -- | If the value is @false@, it means the operation is still in progress. If @true@, the operation is completed, and either @error@ or @response@ is available.
+    done :: (Core.Maybe Core.Bool),
+    -- | The error result of the operation in case of failure or cancellation.
+    error :: (Core.Maybe Status),
+    -- | Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
+    metadata :: (Core.Maybe Operation_Metadata),
+    -- | The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the @name@ should be a resource name ending with @operations\/{unique_id}@.
+    name :: (Core.Maybe Core.Text),
+    -- | The normal, successful response of the operation. If the original method returns no data on success, such as @Delete@, the response is @google.protobuf.Empty@. If the original method is standard @Get@\/@Create@\/@Update@, the response should be the resource. For other methods, the response should have the type @XxxResponse@, where @Xxx@ is the original method name. For example, if the original method name is @TakeSnapshot()@, the inferred response type is @TakeSnapshotResponse@.
+    response :: (Core.Maybe Operation_Response)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Operation' with the minimum fields required to make a request.
+newOperation ::
+  Operation
+newOperation =
+  Operation
+    { done = Core.Nothing,
+      error = Core.Nothing,
+      metadata = Core.Nothing,
+      name = Core.Nothing,
+      response = Core.Nothing
+    }
+
+instance Core.FromJSON Operation where
+  parseJSON =
+    Core.withObject
+      "Operation"
+      ( \o ->
+          Operation
+            Core.<$> (o Core..:? "done")
+            Core.<*> (o Core..:? "error")
+            Core.<*> (o Core..:? "metadata")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "response")
+      )
+
+instance Core.ToJSON Operation where
+  toJSON Operation {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("done" Core..=) Core.<$> done,
+            ("error" Core..=) Core.<$> error,
+            ("metadata" Core..=) Core.<$> metadata,
+            ("name" Core..=) Core.<$> name,
+            ("response" Core..=) Core.<$> response
+          ]
+      )
+
+-- | Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
+--
+-- /See:/ 'newOperation_Metadata' smart constructor.
+newtype Operation_Metadata = Operation_Metadata
+  { -- | Properties of the object. Contains field \@type with type URL.
+    additional :: (Core.HashMap Core.Text Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Operation_Metadata' with the minimum fields required to make a request.
+newOperation_Metadata ::
+  -- |  Properties of the object. Contains field \@type with type URL. See 'additional'.
+  Core.HashMap Core.Text Core.Value ->
+  Operation_Metadata
+newOperation_Metadata additional =
+  Operation_Metadata {additional = additional}
+
+instance Core.FromJSON Operation_Metadata where
+  parseJSON =
+    Core.withObject
+      "Operation_Metadata"
+      (\o -> Operation_Metadata Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON Operation_Metadata where
+  toJSON Operation_Metadata {..} = Core.toJSON additional
+
+-- | The normal, successful response of the operation. If the original method returns no data on success, such as @Delete@, the response is @google.protobuf.Empty@. If the original method is standard @Get@\/@Create@\/@Update@, the response should be the resource. For other methods, the response should have the type @XxxResponse@, where @Xxx@ is the original method name. For example, if the original method name is @TakeSnapshot()@, the inferred response type is @TakeSnapshotResponse@.
+--
+-- /See:/ 'newOperation_Response' smart constructor.
+newtype Operation_Response = Operation_Response
+  { -- | Properties of the object. Contains field \@type with type URL.
+    additional :: (Core.HashMap Core.Text Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Operation_Response' with the minimum fields required to make a request.
+newOperation_Response ::
+  -- |  Properties of the object. Contains field \@type with type URL. See 'additional'.
+  Core.HashMap Core.Text Core.Value ->
+  Operation_Response
+newOperation_Response additional =
+  Operation_Response {additional = additional}
+
+instance Core.FromJSON Operation_Response where
+  parseJSON =
+    Core.withObject
+      "Operation_Response"
+      (\o -> Operation_Response Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON Operation_Response where
+  toJSON Operation_Response {..} = Core.toJSON additional
+
+-- | Message included in the metadata field of operations returned from RemovePublicKey.
+--
+-- /See:/ 'newRemovePublicKeyMetadata' smart constructor.
+data RemovePublicKeyMetadata = RemovePublicKeyMetadata
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemovePublicKeyMetadata' with the minimum fields required to make a request.
+newRemovePublicKeyMetadata ::
+  RemovePublicKeyMetadata
+newRemovePublicKeyMetadata = RemovePublicKeyMetadata
+
+instance Core.FromJSON RemovePublicKeyMetadata where
+  parseJSON =
+    Core.withObject
+      "RemovePublicKeyMetadata"
+      (\o -> Core.pure RemovePublicKeyMetadata)
+
+instance Core.ToJSON RemovePublicKeyMetadata where
+  toJSON = Core.const Core.emptyObject
+
+-- | Request message for RemovePublicKey.
+--
+-- /See:/ 'newRemovePublicKeyRequest' smart constructor.
+newtype RemovePublicKeyRequest = RemovePublicKeyRequest
+  { -- | Key that should be removed from the environment.
+    key :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemovePublicKeyRequest' with the minimum fields required to make a request.
+newRemovePublicKeyRequest ::
+  RemovePublicKeyRequest
+newRemovePublicKeyRequest =
+  RemovePublicKeyRequest {key = Core.Nothing}
+
+instance Core.FromJSON RemovePublicKeyRequest where
+  parseJSON =
+    Core.withObject
+      "RemovePublicKeyRequest"
+      (\o -> RemovePublicKeyRequest Core.<$> (o Core..:? "key"))
+
+instance Core.ToJSON RemovePublicKeyRequest where
+  toJSON RemovePublicKeyRequest {..} =
+    Core.object (Core.catMaybes [("key" Core..=) Core.<$> key])
+
+-- | Response message for RemovePublicKey.
+--
+-- /See:/ 'newRemovePublicKeyResponse' smart constructor.
+data RemovePublicKeyResponse = RemovePublicKeyResponse
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'RemovePublicKeyResponse' with the minimum fields required to make a request.
+newRemovePublicKeyResponse ::
+  RemovePublicKeyResponse
+newRemovePublicKeyResponse = RemovePublicKeyResponse
+
+instance Core.FromJSON RemovePublicKeyResponse where
+  parseJSON =
+    Core.withObject
+      "RemovePublicKeyResponse"
+      (\o -> Core.pure RemovePublicKeyResponse)
+
+instance Core.ToJSON RemovePublicKeyResponse where
+  toJSON = Core.const Core.emptyObject
+
+-- | Message included in the metadata field of operations returned from StartEnvironment.
+--
+-- /See:/ 'newStartEnvironmentMetadata' smart constructor.
+newtype StartEnvironmentMetadata = StartEnvironmentMetadata
+  { -- | Current state of the environment being started.
+    state :: (Core.Maybe StartEnvironmentMetadata_State)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'StartEnvironmentMetadata' with the minimum fields required to make a request.
+newStartEnvironmentMetadata ::
+  StartEnvironmentMetadata
+newStartEnvironmentMetadata =
+  StartEnvironmentMetadata {state = Core.Nothing}
+
+instance Core.FromJSON StartEnvironmentMetadata where
+  parseJSON =
+    Core.withObject
+      "StartEnvironmentMetadata"
+      (\o -> StartEnvironmentMetadata Core.<$> (o Core..:? "state"))
+
+instance Core.ToJSON StartEnvironmentMetadata where
+  toJSON StartEnvironmentMetadata {..} =
+    Core.object (Core.catMaybes [("state" Core..=) Core.<$> state])
+
+-- | Request message for StartEnvironment.
+--
+-- /See:/ 'newStartEnvironmentRequest' smart constructor.
+data StartEnvironmentRequest = StartEnvironmentRequest
+  { -- | The initial access token passed to the environment. If this is present and valid, the environment will be pre-authenticated with gcloud so that the user can run gcloud commands in Cloud Shell without having to log in. This code can be updated later by calling AuthorizeEnvironment.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | Public keys that should be added to the environment before it is started.
+    publicKeys :: (Core.Maybe [Core.Text])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'StartEnvironmentRequest' with the minimum fields required to make a request.
+newStartEnvironmentRequest ::
+  StartEnvironmentRequest
+newStartEnvironmentRequest =
+  StartEnvironmentRequest
+    { accessToken = Core.Nothing,
+      publicKeys = Core.Nothing
+    }
+
+instance Core.FromJSON StartEnvironmentRequest where
+  parseJSON =
+    Core.withObject
+      "StartEnvironmentRequest"
+      ( \o ->
+          StartEnvironmentRequest
+            Core.<$> (o Core..:? "accessToken")
+            Core.<*> (o Core..:? "publicKeys")
+      )
+
+instance Core.ToJSON StartEnvironmentRequest where
+  toJSON StartEnvironmentRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("accessToken" Core..=) Core.<$> accessToken,
+            ("publicKeys" Core..=) Core.<$> publicKeys
+          ]
+      )
+
+-- | Message included in the response field of operations returned from StartEnvironment once the operation is complete.
+--
+-- /See:/ 'newStartEnvironmentResponse' smart constructor.
+newtype StartEnvironmentResponse = StartEnvironmentResponse
+  { -- | Environment that was started.
+    environment :: (Core.Maybe Environment)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'StartEnvironmentResponse' with the minimum fields required to make a request.
+newStartEnvironmentResponse ::
+  StartEnvironmentResponse
+newStartEnvironmentResponse =
+  StartEnvironmentResponse {environment = Core.Nothing}
+
+instance Core.FromJSON StartEnvironmentResponse where
+  parseJSON =
+    Core.withObject
+      "StartEnvironmentResponse"
+      ( \o ->
+          StartEnvironmentResponse Core.<$> (o Core..:? "environment")
+      )
+
+instance Core.ToJSON StartEnvironmentResponse where
+  toJSON StartEnvironmentResponse {..} =
+    Core.object
+      (Core.catMaybes [("environment" Core..=) Core.<$> environment])
+
+-- | The @Status@ type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by <https://github.com/grpc gRPC>. Each @Status@ message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the <https://cloud.google.com/apis/design/errors API Design Guide>.
+--
+-- /See:/ 'newStatus' smart constructor.
+data Status = Status
+  { -- | The status code, which should be an enum value of google.rpc.Code.
+    code :: (Core.Maybe Core.Int32),
+    -- | A list of messages that carry the error details. There is a common set of message types for APIs to use.
+    details :: (Core.Maybe [Status_DetailsItem]),
+    -- | A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
+    message :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Status' with the minimum fields required to make a request.
+newStatus ::
+  Status
+newStatus =
+  Status
+    { code = Core.Nothing,
+      details = Core.Nothing,
+      message = Core.Nothing
+    }
+
+instance Core.FromJSON Status where
+  parseJSON =
+    Core.withObject
+      "Status"
+      ( \o ->
+          Status
+            Core.<$> (o Core..:? "code")
+            Core.<*> (o Core..:? "details")
+            Core.<*> (o Core..:? "message")
+      )
+
+instance Core.ToJSON Status where
+  toJSON Status {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("code" Core..=) Core.<$> code,
+            ("details" Core..=) Core.<$> details,
+            ("message" Core..=) Core.<$> message
+          ]
+      )
+
+--
+-- /See:/ 'newStatus_DetailsItem' smart constructor.
+newtype Status_DetailsItem = Status_DetailsItem
+  { -- | Properties of the object. Contains field \@type with type URL.
+    additional :: (Core.HashMap Core.Text Core.Value)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Status_DetailsItem' with the minimum fields required to make a request.
+newStatus_DetailsItem ::
+  -- |  Properties of the object. Contains field \@type with type URL. See 'additional'.
+  Core.HashMap Core.Text Core.Value ->
+  Status_DetailsItem
+newStatus_DetailsItem additional =
+  Status_DetailsItem {additional = additional}
+
+instance Core.FromJSON Status_DetailsItem where
+  parseJSON =
+    Core.withObject
+      "Status_DetailsItem"
+      (\o -> Status_DetailsItem Core.<$> (Core.parseJSONObject o))
+
+instance Core.ToJSON Status_DetailsItem where
+  toJSON Status_DetailsItem {..} = Core.toJSON additional
diff --git a/gen/Gogol/CloudShell/Internal/Sum.hs b/gen/Gogol/CloudShell/Internal/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Internal/Sum.hs
@@ -0,0 +1,167 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Internal.Sum
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.CloudShell.Internal.Sum
+  ( -- * Xgafv
+    Xgafv
+      ( Xgafv_1,
+        Xgafv_2,
+        ..
+      ),
+
+    -- * Environment_State
+    Environment_State
+      ( Environment_State_STATEUNSPECIFIED,
+        Environment_State_Suspended,
+        Environment_State_Pending,
+        Environment_State_Running,
+        Environment_State_Deleting,
+        ..
+      ),
+
+    -- * StartEnvironmentMetadata_State
+    StartEnvironmentMetadata_State
+      ( StartEnvironmentMetadata_State_STATEUNSPECIFIED,
+        StartEnvironmentMetadata_State_Starting,
+        StartEnvironmentMetadata_State_UNARCHIVINGDISK,
+        StartEnvironmentMetadata_State_AWAITINGCOMPUTERESOURCES,
+        StartEnvironmentMetadata_State_Finished,
+        ..
+      ),
+  )
+where
+
+import Gogol.Prelude qualified as Core
+
+-- | V1 error format.
+newtype Xgafv = Xgafv {fromXgafv :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | v1 error format
+pattern Xgafv_1 :: Xgafv
+pattern Xgafv_1 = Xgafv "1"
+
+-- | v2 error format
+pattern Xgafv_2 :: Xgafv
+pattern Xgafv_2 = Xgafv "2"
+
+{-# COMPLETE
+  Xgafv_1,
+  Xgafv_2,
+  Xgafv
+  #-}
+
+-- | Output only. Current execution state of this environment.
+newtype Environment_State = Environment_State {fromEnvironment_State :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The environment\'s states is unknown.
+pattern Environment_State_STATEUNSPECIFIED :: Environment_State
+pattern Environment_State_STATEUNSPECIFIED = Environment_State "STATE_UNSPECIFIED"
+
+-- | The environment is not running and can\'t be connected to. Starting the environment will transition it to the PENDING state.
+pattern Environment_State_Suspended :: Environment_State
+pattern Environment_State_Suspended = Environment_State "SUSPENDED"
+
+-- | The environment is being started but is not yet ready to accept connections.
+pattern Environment_State_Pending :: Environment_State
+pattern Environment_State_Pending = Environment_State "PENDING"
+
+-- | The environment is running and ready to accept connections. It will automatically transition back to DISABLED after a period of inactivity or if another environment is started.
+pattern Environment_State_Running :: Environment_State
+pattern Environment_State_Running = Environment_State "RUNNING"
+
+-- | The environment is being deleted and can\'t be connected to.
+pattern Environment_State_Deleting :: Environment_State
+pattern Environment_State_Deleting = Environment_State "DELETING"
+
+{-# COMPLETE
+  Environment_State_STATEUNSPECIFIED,
+  Environment_State_Suspended,
+  Environment_State_Pending,
+  Environment_State_Running,
+  Environment_State_Deleting,
+  Environment_State
+  #-}
+
+-- | Current state of the environment being started.
+newtype StartEnvironmentMetadata_State = StartEnvironmentMetadata_State {fromStartEnvironmentMetadata_State :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | The environment\'s start state is unknown.
+pattern StartEnvironmentMetadata_State_STATEUNSPECIFIED :: StartEnvironmentMetadata_State
+pattern StartEnvironmentMetadata_State_STATEUNSPECIFIED = StartEnvironmentMetadata_State "STATE_UNSPECIFIED"
+
+-- | The environment is in the process of being started, but no additional details are available.
+pattern StartEnvironmentMetadata_State_Starting :: StartEnvironmentMetadata_State
+pattern StartEnvironmentMetadata_State_Starting = StartEnvironmentMetadata_State "STARTING"
+
+-- | Startup is waiting for the user\'s disk to be unarchived. This can happen when the user returns to Cloud Shell after not having used it for a while, and suggests that startup will take longer than normal.
+pattern StartEnvironmentMetadata_State_UNARCHIVINGDISK :: StartEnvironmentMetadata_State
+pattern StartEnvironmentMetadata_State_UNARCHIVINGDISK = StartEnvironmentMetadata_State "UNARCHIVING_DISK"
+
+-- | Startup is waiting for compute resources to be assigned to the environment. This should normally happen very quickly, but an environment might stay in this state for an extended period of time if the system is experiencing heavy load.
+pattern StartEnvironmentMetadata_State_AWAITINGCOMPUTERESOURCES :: StartEnvironmentMetadata_State
+pattern StartEnvironmentMetadata_State_AWAITINGCOMPUTERESOURCES = StartEnvironmentMetadata_State "AWAITING_COMPUTE_RESOURCES"
+
+-- | Startup has completed. If the start operation was successful, the user should be able to establish an SSH connection to their environment. Otherwise, the operation will contain details of the failure.
+pattern StartEnvironmentMetadata_State_Finished :: StartEnvironmentMetadata_State
+pattern StartEnvironmentMetadata_State_Finished = StartEnvironmentMetadata_State "FINISHED"
+
+{-# COMPLETE
+  StartEnvironmentMetadata_State_STATEUNSPECIFIED,
+  StartEnvironmentMetadata_State_Starting,
+  StartEnvironmentMetadata_State_UNARCHIVINGDISK,
+  StartEnvironmentMetadata_State_AWAITINGCOMPUTERESOURCES,
+  StartEnvironmentMetadata_State_Finished,
+  StartEnvironmentMetadata_State
+  #-}
diff --git a/gen/Gogol/CloudShell/Operations/Cancel.hs b/gen/Gogol/CloudShell/Operations/Cancel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Operations/Cancel.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Operations.Cancel
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn\'t support this method, it returns @google.rpc.Code.UNIMPLEMENTED@. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of @1@, corresponding to @Code.CANCELLED@.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.operations.cancel@.
+module Gogol.CloudShell.Operations.Cancel
+  ( -- * Resource
+    CloudShellOperationsCancelResource,
+
+    -- ** Constructing a Request
+    CloudShellOperationsCancel (..),
+    newCloudShellOperationsCancel,
+  )
+where
+
+import Gogol.CloudShell.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @cloudshell.operations.cancel@ method which the
+-- 'CloudShellOperationsCancel' request conforms to.
+type CloudShellOperationsCancelResource =
+  "v1"
+    Core.:> Core.CaptureMode "name" "cancel" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] CancelOperationRequest
+    Core.:> Core.Post '[Core.JSON] Empty
+
+-- | Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn\'t support this method, it returns @google.rpc.Code.UNIMPLEMENTED@. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of @1@, corresponding to @Code.CANCELLED@.
+--
+-- /See:/ 'newCloudShellOperationsCancel' smart constructor.
+data CloudShellOperationsCancel = CloudShellOperationsCancel
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The name of the operation resource to be cancelled.
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: CancelOperationRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CloudShellOperationsCancel' with the minimum fields required to make a request.
+newCloudShellOperationsCancel ::
+  -- |  The name of the operation resource to be cancelled. See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  CancelOperationRequest ->
+  CloudShellOperationsCancel
+newCloudShellOperationsCancel name payload =
+  CloudShellOperationsCancel
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest CloudShellOperationsCancel where
+  type Rs CloudShellOperationsCancel = Empty
+  type
+    Scopes CloudShellOperationsCancel =
+      '[CloudPlatform'FullControl]
+  requestClient CloudShellOperationsCancel {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      cloudShellService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy CloudShellOperationsCancelResource)
+          Core.mempty
diff --git a/gen/Gogol/CloudShell/Operations/Delete.hs b/gen/Gogol/CloudShell/Operations/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Operations/Delete.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Operations.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn\'t support this method, it returns @google.rpc.Code.UNIMPLEMENTED@.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.operations.delete@.
+module Gogol.CloudShell.Operations.Delete
+  ( -- * Resource
+    CloudShellOperationsDeleteResource,
+
+    -- ** Constructing a Request
+    CloudShellOperationsDelete (..),
+    newCloudShellOperationsDelete,
+  )
+where
+
+import Gogol.CloudShell.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @cloudshell.operations.delete@ method which the
+-- 'CloudShellOperationsDelete' request conforms to.
+type CloudShellOperationsDeleteResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] Empty
+
+-- | Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn\'t support this method, it returns @google.rpc.Code.UNIMPLEMENTED@.
+--
+-- /See:/ 'newCloudShellOperationsDelete' smart constructor.
+data CloudShellOperationsDelete = CloudShellOperationsDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The name of the operation resource to be deleted.
+    name :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CloudShellOperationsDelete' with the minimum fields required to make a request.
+newCloudShellOperationsDelete ::
+  -- |  The name of the operation resource to be deleted. See 'name'.
+  Core.Text ->
+  CloudShellOperationsDelete
+newCloudShellOperationsDelete name =
+  CloudShellOperationsDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest CloudShellOperationsDelete where
+  type Rs CloudShellOperationsDelete = Empty
+  type
+    Scopes CloudShellOperationsDelete =
+      '[CloudPlatform'FullControl]
+  requestClient CloudShellOperationsDelete {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      cloudShellService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy CloudShellOperationsDeleteResource)
+          Core.mempty
diff --git a/gen/Gogol/CloudShell/Operations/Get.hs b/gen/Gogol/CloudShell/Operations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Operations/Get.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Operations.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.operations.get@.
+module Gogol.CloudShell.Operations.Get
+  ( -- * Resource
+    CloudShellOperationsGetResource,
+
+    -- ** Constructing a Request
+    CloudShellOperationsGet (..),
+    newCloudShellOperationsGet,
+  )
+where
+
+import Gogol.CloudShell.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @cloudshell.operations.get@ method which the
+-- 'CloudShellOperationsGet' request conforms to.
+type CloudShellOperationsGetResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Operation
+
+-- | Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.
+--
+-- /See:/ 'newCloudShellOperationsGet' smart constructor.
+data CloudShellOperationsGet = CloudShellOperationsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The name of the operation resource.
+    name :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CloudShellOperationsGet' with the minimum fields required to make a request.
+newCloudShellOperationsGet ::
+  -- |  The name of the operation resource. See 'name'.
+  Core.Text ->
+  CloudShellOperationsGet
+newCloudShellOperationsGet name =
+  CloudShellOperationsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest CloudShellOperationsGet where
+  type Rs CloudShellOperationsGet = Operation
+  type Scopes CloudShellOperationsGet = '[CloudPlatform'FullControl]
+  requestClient CloudShellOperationsGet {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      cloudShellService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy CloudShellOperationsGetResource)
+          Core.mempty
diff --git a/gen/Gogol/CloudShell/Operations/List.hs b/gen/Gogol/CloudShell/Operations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Operations/List.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Operations.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists operations that match the specified filter in the request. If the server doesn\'t support this method, it returns @UNIMPLEMENTED@.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.operations.list@.
+module Gogol.CloudShell.Operations.List
+  ( -- * Resource
+    CloudShellOperationsListResource,
+
+    -- ** Constructing a Request
+    CloudShellOperationsList (..),
+    newCloudShellOperationsList,
+  )
+where
+
+import Gogol.CloudShell.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @cloudshell.operations.list@ method which the
+-- 'CloudShellOperationsList' request conforms to.
+type CloudShellOperationsListResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "filter" Core.Text
+    Core.:> Core.QueryParam "pageSize" Core.Int32
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListOperationsResponse
+
+-- | Lists operations that match the specified filter in the request. If the server doesn\'t support this method, it returns @UNIMPLEMENTED@.
+--
+-- /See:/ 'newCloudShellOperationsList' smart constructor.
+data CloudShellOperationsList = CloudShellOperationsList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The standard list filter.
+    filter :: (Core.Maybe Core.Text),
+    -- | The name of the operation\'s parent resource.
+    name :: Core.Text,
+    -- | The standard list page size.
+    pageSize :: (Core.Maybe Core.Int32),
+    -- | The standard list page token.
+    pageToken :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CloudShellOperationsList' with the minimum fields required to make a request.
+newCloudShellOperationsList ::
+  -- |  The name of the operation\'s parent resource. See 'name'.
+  Core.Text ->
+  CloudShellOperationsList
+newCloudShellOperationsList name =
+  CloudShellOperationsList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      filter = Core.Nothing,
+      name = name,
+      pageSize = Core.Nothing,
+      pageToken = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest CloudShellOperationsList where
+  type Rs CloudShellOperationsList = ListOperationsResponse
+  type Scopes CloudShellOperationsList = '[CloudPlatform'FullControl]
+  requestClient CloudShellOperationsList {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      filter
+      pageSize
+      pageToken
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      cloudShellService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy CloudShellOperationsListResource)
+          Core.mempty
diff --git a/gen/Gogol/CloudShell/Types.hs b/gen/Gogol/CloudShell/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Types.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Types
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.CloudShell.Types
+  ( -- * Configuration
+    cloudShellService,
+
+    -- * OAuth Scopes
+    CloudPlatform'FullControl,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** AddPublicKeyMetadata
+    AddPublicKeyMetadata (..),
+    newAddPublicKeyMetadata,
+
+    -- ** AddPublicKeyRequest
+    AddPublicKeyRequest (..),
+    newAddPublicKeyRequest,
+
+    -- ** AddPublicKeyResponse
+    AddPublicKeyResponse (..),
+    newAddPublicKeyResponse,
+
+    -- ** AuthorizeEnvironmentMetadata
+    AuthorizeEnvironmentMetadata (..),
+    newAuthorizeEnvironmentMetadata,
+
+    -- ** AuthorizeEnvironmentRequest
+    AuthorizeEnvironmentRequest (..),
+    newAuthorizeEnvironmentRequest,
+
+    -- ** AuthorizeEnvironmentResponse
+    AuthorizeEnvironmentResponse (..),
+    newAuthorizeEnvironmentResponse,
+
+    -- ** CancelOperationRequest
+    CancelOperationRequest (..),
+    newCancelOperationRequest,
+
+    -- ** CreateEnvironmentMetadata
+    CreateEnvironmentMetadata (..),
+    newCreateEnvironmentMetadata,
+
+    -- ** DeleteEnvironmentMetadata
+    DeleteEnvironmentMetadata (..),
+    newDeleteEnvironmentMetadata,
+
+    -- ** Empty
+    Empty (..),
+    newEmpty,
+
+    -- ** Environment
+    Environment (..),
+    newEnvironment,
+
+    -- ** Environment_State
+    Environment_State (..),
+
+    -- ** ListOperationsResponse
+    ListOperationsResponse (..),
+    newListOperationsResponse,
+
+    -- ** Operation
+    Operation (..),
+    newOperation,
+
+    -- ** Operation_Metadata
+    Operation_Metadata (..),
+    newOperation_Metadata,
+
+    -- ** Operation_Response
+    Operation_Response (..),
+    newOperation_Response,
+
+    -- ** RemovePublicKeyMetadata
+    RemovePublicKeyMetadata (..),
+    newRemovePublicKeyMetadata,
+
+    -- ** RemovePublicKeyRequest
+    RemovePublicKeyRequest (..),
+    newRemovePublicKeyRequest,
+
+    -- ** RemovePublicKeyResponse
+    RemovePublicKeyResponse (..),
+    newRemovePublicKeyResponse,
+
+    -- ** StartEnvironmentMetadata
+    StartEnvironmentMetadata (..),
+    newStartEnvironmentMetadata,
+
+    -- ** StartEnvironmentMetadata_State
+    StartEnvironmentMetadata_State (..),
+
+    -- ** StartEnvironmentRequest
+    StartEnvironmentRequest (..),
+    newStartEnvironmentRequest,
+
+    -- ** StartEnvironmentResponse
+    StartEnvironmentResponse (..),
+    newStartEnvironmentResponse,
+
+    -- ** Status
+    Status (..),
+    newStatus,
+
+    -- ** Status_DetailsItem
+    Status_DetailsItem (..),
+    newStatus_DetailsItem,
+  )
+where
+
+import Gogol.CloudShell.Internal.Product
+import Gogol.CloudShell.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Default request referring to version @v1@ of the Cloud Shell API. This contains the host and root path used as a starting point for constructing service requests.
+cloudShellService :: Core.ServiceConfig
+cloudShellService =
+  Core.defaultService
+    (Core.ServiceId "cloudshell:v1")
+    "cloudshell.googleapis.com"
+
+-- | See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account.
+type CloudPlatform'FullControl =
+  "https://www.googleapis.com/auth/cloud-platform"
diff --git a/gen/Gogol/CloudShell/Users/Environments/AddPublicKey.hs b/gen/Gogol/CloudShell/Users/Environments/AddPublicKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Users/Environments/AddPublicKey.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Users.Environments.AddPublicKey
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a public SSH key to an environment, allowing clients with the corresponding private key to connect to that environment via SSH. If a key with the same content already exists, this will error with ALREADY_EXISTS.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.users.environments.addPublicKey@.
+module Gogol.CloudShell.Users.Environments.AddPublicKey
+  ( -- * Resource
+    CloudShellUsersEnvironmentsAddPublicKeyResource,
+
+    -- ** Constructing a Request
+    CloudShellUsersEnvironmentsAddPublicKey (..),
+    newCloudShellUsersEnvironmentsAddPublicKey,
+  )
+where
+
+import Gogol.CloudShell.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @cloudshell.users.environments.addPublicKey@ method which the
+-- 'CloudShellUsersEnvironmentsAddPublicKey' request conforms to.
+type CloudShellUsersEnvironmentsAddPublicKeyResource =
+  "v1"
+    Core.:> Core.CaptureMode "environment" "addPublicKey" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] AddPublicKeyRequest
+    Core.:> Core.Post '[Core.JSON] Operation
+
+-- | Adds a public SSH key to an environment, allowing clients with the corresponding private key to connect to that environment via SSH. If a key with the same content already exists, this will error with ALREADY_EXISTS.
+--
+-- /See:/ 'newCloudShellUsersEnvironmentsAddPublicKey' smart constructor.
+data CloudShellUsersEnvironmentsAddPublicKey = CloudShellUsersEnvironmentsAddPublicKey
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Environment this key should be added to, e.g. @users\/me\/environments\/default@.
+    environment :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: AddPublicKeyRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CloudShellUsersEnvironmentsAddPublicKey' with the minimum fields required to make a request.
+newCloudShellUsersEnvironmentsAddPublicKey ::
+  -- |  Environment this key should be added to, e.g. @users\/me\/environments\/default@. See 'environment'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  AddPublicKeyRequest ->
+  CloudShellUsersEnvironmentsAddPublicKey
+newCloudShellUsersEnvironmentsAddPublicKey environment payload =
+  CloudShellUsersEnvironmentsAddPublicKey
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      environment = environment,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest CloudShellUsersEnvironmentsAddPublicKey where
+  type Rs CloudShellUsersEnvironmentsAddPublicKey = Operation
+  type
+    Scopes CloudShellUsersEnvironmentsAddPublicKey =
+      '[CloudPlatform'FullControl]
+  requestClient CloudShellUsersEnvironmentsAddPublicKey {..} =
+    go
+      environment
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      cloudShellService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy CloudShellUsersEnvironmentsAddPublicKeyResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/CloudShell/Users/Environments/Authorize.hs b/gen/Gogol/CloudShell/Users/Environments/Authorize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Users/Environments/Authorize.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Users.Environments.Authorize
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sends OAuth credentials to a running environment on behalf of a user. When this completes, the environment will be authorized to run various Google Cloud command line tools without requiring the user to manually authenticate.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.users.environments.authorize@.
+module Gogol.CloudShell.Users.Environments.Authorize
+  ( -- * Resource
+    CloudShellUsersEnvironmentsAuthorizeResource,
+
+    -- ** Constructing a Request
+    CloudShellUsersEnvironmentsAuthorize (..),
+    newCloudShellUsersEnvironmentsAuthorize,
+  )
+where
+
+import Gogol.CloudShell.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @cloudshell.users.environments.authorize@ method which the
+-- 'CloudShellUsersEnvironmentsAuthorize' request conforms to.
+type CloudShellUsersEnvironmentsAuthorizeResource =
+  "v1"
+    Core.:> Core.CaptureMode "name" "authorize" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] AuthorizeEnvironmentRequest
+    Core.:> Core.Post '[Core.JSON] Operation
+
+-- | Sends OAuth credentials to a running environment on behalf of a user. When this completes, the environment will be authorized to run various Google Cloud command line tools without requiring the user to manually authenticate.
+--
+-- /See:/ 'newCloudShellUsersEnvironmentsAuthorize' smart constructor.
+data CloudShellUsersEnvironmentsAuthorize = CloudShellUsersEnvironmentsAuthorize
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Name of the resource that should receive the credentials, for example @users\/me\/environments\/default@ or @users\/someone\@example.com\/environments\/default@.
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: AuthorizeEnvironmentRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CloudShellUsersEnvironmentsAuthorize' with the minimum fields required to make a request.
+newCloudShellUsersEnvironmentsAuthorize ::
+  -- |  Name of the resource that should receive the credentials, for example @users\/me\/environments\/default@ or @users\/someone\@example.com\/environments\/default@. See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  AuthorizeEnvironmentRequest ->
+  CloudShellUsersEnvironmentsAuthorize
+newCloudShellUsersEnvironmentsAuthorize name payload =
+  CloudShellUsersEnvironmentsAuthorize
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest CloudShellUsersEnvironmentsAuthorize where
+  type Rs CloudShellUsersEnvironmentsAuthorize = Operation
+  type
+    Scopes CloudShellUsersEnvironmentsAuthorize =
+      '[CloudPlatform'FullControl]
+  requestClient CloudShellUsersEnvironmentsAuthorize {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      cloudShellService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy CloudShellUsersEnvironmentsAuthorizeResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/CloudShell/Users/Environments/Get.hs b/gen/Gogol/CloudShell/Users/Environments/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Users/Environments/Get.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Users.Environments.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an environment. Returns NOT_FOUND if the environment does not exist.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.users.environments.get@.
+module Gogol.CloudShell.Users.Environments.Get
+  ( -- * Resource
+    CloudShellUsersEnvironmentsGetResource,
+
+    -- ** Constructing a Request
+    CloudShellUsersEnvironmentsGet (..),
+    newCloudShellUsersEnvironmentsGet,
+  )
+where
+
+import Gogol.CloudShell.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @cloudshell.users.environments.get@ method which the
+-- 'CloudShellUsersEnvironmentsGet' request conforms to.
+type CloudShellUsersEnvironmentsGetResource =
+  "v1"
+    Core.:> Core.Capture "name" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Environment
+
+-- | Gets an environment. Returns NOT_FOUND if the environment does not exist.
+--
+-- /See:/ 'newCloudShellUsersEnvironmentsGet' smart constructor.
+data CloudShellUsersEnvironmentsGet = CloudShellUsersEnvironmentsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Required. Name of the requested resource, for example @users\/me\/environments\/default@ or @users\/someone\@example.com\/environments\/default@.
+    name :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CloudShellUsersEnvironmentsGet' with the minimum fields required to make a request.
+newCloudShellUsersEnvironmentsGet ::
+  -- |  Required. Name of the requested resource, for example @users\/me\/environments\/default@ or @users\/someone\@example.com\/environments\/default@. See 'name'.
+  Core.Text ->
+  CloudShellUsersEnvironmentsGet
+newCloudShellUsersEnvironmentsGet name =
+  CloudShellUsersEnvironmentsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest CloudShellUsersEnvironmentsGet where
+  type Rs CloudShellUsersEnvironmentsGet = Environment
+  type
+    Scopes CloudShellUsersEnvironmentsGet =
+      '[CloudPlatform'FullControl]
+  requestClient CloudShellUsersEnvironmentsGet {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      cloudShellService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy CloudShellUsersEnvironmentsGetResource)
+          Core.mempty
diff --git a/gen/Gogol/CloudShell/Users/Environments/RemovePublicKey.hs b/gen/Gogol/CloudShell/Users/Environments/RemovePublicKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Users/Environments/RemovePublicKey.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Users.Environments.RemovePublicKey
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a public SSH key from an environment. Clients will no longer be able to connect to the environment using the corresponding private key. If a key with the same content is not present, this will error with NOT_FOUND.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.users.environments.removePublicKey@.
+module Gogol.CloudShell.Users.Environments.RemovePublicKey
+  ( -- * Resource
+    CloudShellUsersEnvironmentsRemovePublicKeyResource,
+
+    -- ** Constructing a Request
+    CloudShellUsersEnvironmentsRemovePublicKey (..),
+    newCloudShellUsersEnvironmentsRemovePublicKey,
+  )
+where
+
+import Gogol.CloudShell.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @cloudshell.users.environments.removePublicKey@ method which the
+-- 'CloudShellUsersEnvironmentsRemovePublicKey' request conforms to.
+type CloudShellUsersEnvironmentsRemovePublicKeyResource =
+  "v1"
+    Core.:> Core.CaptureMode "environment" "removePublicKey" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] RemovePublicKeyRequest
+    Core.:> Core.Post '[Core.JSON] Operation
+
+-- | Removes a public SSH key from an environment. Clients will no longer be able to connect to the environment using the corresponding private key. If a key with the same content is not present, this will error with NOT_FOUND.
+--
+-- /See:/ 'newCloudShellUsersEnvironmentsRemovePublicKey' smart constructor.
+data CloudShellUsersEnvironmentsRemovePublicKey = CloudShellUsersEnvironmentsRemovePublicKey
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Environment this key should be removed from, e.g. @users\/me\/environments\/default@.
+    environment :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: RemovePublicKeyRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CloudShellUsersEnvironmentsRemovePublicKey' with the minimum fields required to make a request.
+newCloudShellUsersEnvironmentsRemovePublicKey ::
+  -- |  Environment this key should be removed from, e.g. @users\/me\/environments\/default@. See 'environment'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  RemovePublicKeyRequest ->
+  CloudShellUsersEnvironmentsRemovePublicKey
+newCloudShellUsersEnvironmentsRemovePublicKey environment payload =
+  CloudShellUsersEnvironmentsRemovePublicKey
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      environment = environment,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance
+  Core.GoogleRequest
+    CloudShellUsersEnvironmentsRemovePublicKey
+  where
+  type Rs CloudShellUsersEnvironmentsRemovePublicKey = Operation
+  type
+    Scopes CloudShellUsersEnvironmentsRemovePublicKey =
+      '[CloudPlatform'FullControl]
+  requestClient CloudShellUsersEnvironmentsRemovePublicKey {..} =
+    go
+      environment
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      cloudShellService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy CloudShellUsersEnvironmentsRemovePublicKeyResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/CloudShell/Users/Environments/Start.hs b/gen/Gogol/CloudShell/Users/Environments/Start.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/CloudShell/Users/Environments/Start.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.CloudShell.Users.Environments.Start
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts an existing environment, allowing clients to connect to it. The returned operation will contain an instance of StartEnvironmentMetadata in its metadata field. Users can wait for the environment to start by polling this operation via GetOperation. Once the environment has finished starting and is ready to accept connections, the operation will contain a StartEnvironmentResponse in its response field.
+--
+-- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.users.environments.start@.
+module Gogol.CloudShell.Users.Environments.Start
+  ( -- * Resource
+    CloudShellUsersEnvironmentsStartResource,
+
+    -- ** Constructing a Request
+    CloudShellUsersEnvironmentsStart (..),
+    newCloudShellUsersEnvironmentsStart,
+  )
+where
+
+import Gogol.CloudShell.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @cloudshell.users.environments.start@ method which the
+-- 'CloudShellUsersEnvironmentsStart' request conforms to.
+type CloudShellUsersEnvironmentsStartResource =
+  "v1"
+    Core.:> Core.CaptureMode "name" "start" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] StartEnvironmentRequest
+    Core.:> Core.Post '[Core.JSON] Operation
+
+-- | Starts an existing environment, allowing clients to connect to it. The returned operation will contain an instance of StartEnvironmentMetadata in its metadata field. Users can wait for the environment to start by polling this operation via GetOperation. Once the environment has finished starting and is ready to accept connections, the operation will contain a StartEnvironmentResponse in its response field.
+--
+-- /See:/ 'newCloudShellUsersEnvironmentsStart' smart constructor.
+data CloudShellUsersEnvironmentsStart = CloudShellUsersEnvironmentsStart
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Name of the resource that should be started, for example @users\/me\/environments\/default@ or @users\/someone\@example.com\/environments\/default@.
+    name :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: StartEnvironmentRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'CloudShellUsersEnvironmentsStart' with the minimum fields required to make a request.
+newCloudShellUsersEnvironmentsStart ::
+  -- |  Name of the resource that should be started, for example @users\/me\/environments\/default@ or @users\/someone\@example.com\/environments\/default@. See 'name'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  StartEnvironmentRequest ->
+  CloudShellUsersEnvironmentsStart
+newCloudShellUsersEnvironmentsStart name payload =
+  CloudShellUsersEnvironmentsStart
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      name = name,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing
+    }
+
+instance Core.GoogleRequest CloudShellUsersEnvironmentsStart where
+  type Rs CloudShellUsersEnvironmentsStart = Operation
+  type
+    Scopes CloudShellUsersEnvironmentsStart =
+      '[CloudPlatform'FullControl]
+  requestClient CloudShellUsersEnvironmentsStart {..} =
+    go
+      name
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      cloudShellService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy CloudShellUsersEnvironmentsStartResource)
+          Core.mempty
diff --git a/gen/Network/Google/CloudShell.hs b/gen/Network/Google/CloudShell.hs
deleted file mode 100644
--- a/gen/Network/Google/CloudShell.hs
+++ /dev/null
@@ -1,149 +0,0 @@
-{-# LANGUAGE DataKinds         #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE TypeOperators     #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- |
--- Module      : Network.Google.CloudShell
--- 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)
---
--- Allows users to start, configure, and connect to interactive shell
--- sessions running in the cloud.
---
--- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference>
-module Network.Google.CloudShell
-    (
-    -- * Service Configuration
-      cloudShellService
-
-    -- * OAuth Scopes
-    , cloudPlatformScope
-
-    -- * API Declaration
-    , CloudShellAPI
-
-    -- * Resources
-
-    -- ** cloudshell.operations.cancel
-    , module Network.Google.Resource.CloudShell.Operations.Cancel
-
-    -- ** cloudshell.operations.delete
-    , module Network.Google.Resource.CloudShell.Operations.Delete
-
-    -- ** cloudshell.operations.get
-    , module Network.Google.Resource.CloudShell.Operations.Get
-
-    -- ** cloudshell.operations.list
-    , module Network.Google.Resource.CloudShell.Operations.List
-
-    -- * Types
-
-    -- ** Status
-    , Status
-    , status
-    , sDetails
-    , sCode
-    , sMessage
-
-    -- ** ListOperationsResponse
-    , ListOperationsResponse
-    , listOperationsResponse
-    , lorNextPageToken
-    , lorOperations
-
-    -- ** CancelOperationRequest
-    , CancelOperationRequest
-    , cancelOperationRequest
-
-    -- ** Operation
-    , Operation
-    , operation
-    , oDone
-    , oError
-    , oResponse
-    , oName
-    , oMetadata
-
-    -- ** Empty
-    , Empty
-    , empty
-
-    -- ** Environment
-    , Environment
-    , environment
-    , eState
-    , ePublicKeys
-    , eSSHUsername
-    , eName
-    , eId
-    , eSSHHost
-    , eDockerImage
-    , eSSHPort
-
-    -- ** StatusDetailsItem
-    , StatusDetailsItem
-    , statusDetailsItem
-    , sdiAddtional
-
-    -- ** PublicKey
-    , PublicKey
-    , publicKey
-    , pkFormat
-    , pkKey
-    , pkName
-
-    -- ** StartEnvironmentMetadataState
-    , StartEnvironmentMetadataState (..)
-
-    -- ** EnvironmentState
-    , EnvironmentState (..)
-
-    -- ** Xgafv
-    , Xgafv (..)
-
-    -- ** PublicKeyFormat
-    , PublicKeyFormat (..)
-
-    -- ** StartEnvironmentMetadata
-    , StartEnvironmentMetadata
-    , startEnvironmentMetadata
-    , semState
-
-    -- ** OperationMetadata
-    , OperationMetadata
-    , operationMetadata
-    , omAddtional
-
-    -- ** StartEnvironmentResponse
-    , StartEnvironmentResponse
-    , startEnvironmentResponse
-    , serEnvironment
-
-    -- ** OperationResponse
-    , OperationResponse
-    , operationResponse
-    , orAddtional
-    ) where
-
-import           Network.Google.CloudShell.Types
-import           Network.Google.Prelude
-import           Network.Google.Resource.CloudShell.Operations.Cancel
-import           Network.Google.Resource.CloudShell.Operations.Delete
-import           Network.Google.Resource.CloudShell.Operations.Get
-import           Network.Google.Resource.CloudShell.Operations.List
-
-{- $resources
-TODO
--}
-
--- | Represents the entirety of the methods and resources available for the Cloud Shell API service.
-type CloudShellAPI =
-     OperationsListResource :<|> OperationsGetResource
-       :<|> OperationsCancelResource
-       :<|> OperationsDeleteResource
diff --git a/gen/Network/Google/CloudShell/Types.hs b/gen/Network/Google/CloudShell/Types.hs
deleted file mode 100644
--- a/gen/Network/Google/CloudShell/Types.hs
+++ /dev/null
@@ -1,124 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.CloudShell.Types
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.CloudShell.Types
-    (
-    -- * Service Configuration
-      cloudShellService
-
-    -- * OAuth Scopes
-    , cloudPlatformScope
-
-    -- * Status
-    , Status
-    , status
-    , sDetails
-    , sCode
-    , sMessage
-
-    -- * ListOperationsResponse
-    , ListOperationsResponse
-    , listOperationsResponse
-    , lorNextPageToken
-    , lorOperations
-
-    -- * CancelOperationRequest
-    , CancelOperationRequest
-    , cancelOperationRequest
-
-    -- * Operation
-    , Operation
-    , operation
-    , oDone
-    , oError
-    , oResponse
-    , oName
-    , oMetadata
-
-    -- * Empty
-    , Empty
-    , empty
-
-    -- * Environment
-    , Environment
-    , environment
-    , eState
-    , ePublicKeys
-    , eSSHUsername
-    , eName
-    , eId
-    , eSSHHost
-    , eDockerImage
-    , eSSHPort
-
-    -- * StatusDetailsItem
-    , StatusDetailsItem
-    , statusDetailsItem
-    , sdiAddtional
-
-    -- * PublicKey
-    , PublicKey
-    , publicKey
-    , pkFormat
-    , pkKey
-    , pkName
-
-    -- * StartEnvironmentMetadataState
-    , StartEnvironmentMetadataState (..)
-
-    -- * EnvironmentState
-    , EnvironmentState (..)
-
-    -- * Xgafv
-    , Xgafv (..)
-
-    -- * PublicKeyFormat
-    , PublicKeyFormat (..)
-
-    -- * StartEnvironmentMetadata
-    , StartEnvironmentMetadata
-    , startEnvironmentMetadata
-    , semState
-
-    -- * OperationMetadata
-    , OperationMetadata
-    , operationMetadata
-    , omAddtional
-
-    -- * StartEnvironmentResponse
-    , StartEnvironmentResponse
-    , startEnvironmentResponse
-    , serEnvironment
-
-    -- * OperationResponse
-    , OperationResponse
-    , operationResponse
-    , orAddtional
-    ) where
-
-import           Network.Google.CloudShell.Types.Product
-import           Network.Google.CloudShell.Types.Sum
-import           Network.Google.Prelude
-
--- | Default request referring to version 'v1' of the Cloud Shell API. This contains the host and root path used as a starting point for constructing service requests.
-cloudShellService :: ServiceConfig
-cloudShellService
-  = defaultService (ServiceId "cloudshell:v1")
-      "cloudshell.googleapis.com"
-
--- | View and manage your data across Google Cloud Platform services
-cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
-cloudPlatformScope = Proxy
diff --git a/gen/Network/Google/CloudShell/Types/Product.hs b/gen/Network/Google/CloudShell/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/Google/CloudShell/Types/Product.hs
+++ /dev/null
@@ -1,697 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.CloudShell.Types.Product
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.CloudShell.Types.Product where
-
-import           Network.Google.CloudShell.Types.Sum
-import           Network.Google.Prelude
-
--- | The \`Status\` type defines a logical error model that is suitable for
--- different programming environments, including REST APIs and RPC APIs. It
--- is used by [gRPC](https:\/\/github.com\/grpc). The error model is
--- designed to be: - Simple to use and understand for most users - Flexible
--- enough to meet unexpected needs # Overview The \`Status\` message
--- contains three pieces of data: error code, error message, and error
--- details. The error code should be an enum value of google.rpc.Code, but
--- it may accept additional error codes if needed. The error message should
--- be a developer-facing English message that helps developers *understand*
--- and *resolve* the error. If a localized user-facing error message is
--- needed, put the localized message in the error details or localize it in
--- the client. The optional error details may contain arbitrary information
--- about the error. There is a predefined set of error detail types in the
--- package \`google.rpc\` that can be used for common error conditions. #
--- Language mapping The \`Status\` message is the logical representation of
--- the error model, but it is not necessarily the actual wire format. When
--- the \`Status\` message is exposed in different client libraries and
--- different wire protocols, it can be mapped differently. For example, it
--- will likely be mapped to some exceptions in Java, but more likely mapped
--- to some error codes in C. # Other uses The error model and the
--- \`Status\` message can be used in a variety of environments, either with
--- or without APIs, to provide a consistent developer experience across
--- different environments. Example uses of this error model include: -
--- Partial errors. If a service needs to return partial errors to the
--- client, it may embed the \`Status\` in the normal response to indicate
--- the partial errors. - Workflow errors. A typical workflow has multiple
--- steps. Each step may have a \`Status\` message for error reporting. -
--- Batch operations. If a client uses batch request and batch response, the
--- \`Status\` message should be used directly inside batch response, one
--- for each error sub-response. - Asynchronous operations. If an API call
--- embeds asynchronous operation results in its response, the status of
--- those operations should be represented directly using the \`Status\`
--- message. - Logging. If some API errors are stored in logs, the message
--- \`Status\` could be used directly after any stripping needed for
--- security\/privacy reasons.
---
--- /See:/ 'status' smart constructor.
-data Status =
-  Status'
-    { _sDetails :: !(Maybe [StatusDetailsItem])
-    , _sCode    :: !(Maybe (Textual Int32))
-    , _sMessage :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Status' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sDetails'
---
--- * 'sCode'
---
--- * 'sMessage'
-status
-    :: Status
-status = Status' {_sDetails = Nothing, _sCode = Nothing, _sMessage = Nothing}
-
-
--- | A list of messages that carry the error details. There is a common set
--- of message types for APIs to use.
-sDetails :: Lens' Status [StatusDetailsItem]
-sDetails
-  = lens _sDetails (\ s a -> s{_sDetails = a}) .
-      _Default
-      . _Coerce
-
--- | The status code, which should be an enum value of google.rpc.Code.
-sCode :: Lens' Status (Maybe Int32)
-sCode
-  = lens _sCode (\ s a -> s{_sCode = a}) .
-      mapping _Coerce
-
--- | A developer-facing error message, which should be in English. Any
--- user-facing error message should be localized and sent in the
--- google.rpc.Status.details field, or localized by the client.
-sMessage :: Lens' Status (Maybe Text)
-sMessage = lens _sMessage (\ s a -> s{_sMessage = a})
-
-instance FromJSON Status where
-        parseJSON
-          = withObject "Status"
-              (\ o ->
-                 Status' <$>
-                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON Status where
-        toJSON Status'{..}
-          = object
-              (catMaybes
-                 [("details" .=) <$> _sDetails,
-                  ("code" .=) <$> _sCode,
-                  ("message" .=) <$> _sMessage])
-
--- | The response message for Operations.ListOperations.
---
--- /See:/ 'listOperationsResponse' smart constructor.
-data ListOperationsResponse =
-  ListOperationsResponse'
-    { _lorNextPageToken :: !(Maybe Text)
-    , _lorOperations    :: !(Maybe [Operation])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListOperationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lorNextPageToken'
---
--- * 'lorOperations'
-listOperationsResponse
-    :: ListOperationsResponse
-listOperationsResponse =
-  ListOperationsResponse'
-    {_lorNextPageToken = Nothing, _lorOperations = Nothing}
-
-
--- | The standard List next-page token.
-lorNextPageToken :: Lens' ListOperationsResponse (Maybe Text)
-lorNextPageToken
-  = lens _lorNextPageToken
-      (\ s a -> s{_lorNextPageToken = a})
-
--- | A list of operations that matches the specified filter in the request.
-lorOperations :: Lens' ListOperationsResponse [Operation]
-lorOperations
-  = lens _lorOperations
-      (\ s a -> s{_lorOperations = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListOperationsResponse where
-        parseJSON
-          = withObject "ListOperationsResponse"
-              (\ o ->
-                 ListOperationsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "operations" .!= mempty))
-
-instance ToJSON ListOperationsResponse where
-        toJSON ListOperationsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lorNextPageToken,
-                  ("operations" .=) <$> _lorOperations])
-
--- | The request message for Operations.CancelOperation.
---
--- /See:/ 'cancelOperationRequest' smart constructor.
-data CancelOperationRequest =
-  CancelOperationRequest'
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CancelOperationRequest' with the minimum fields required to make a request.
---
-cancelOperationRequest
-    :: CancelOperationRequest
-cancelOperationRequest = CancelOperationRequest'
-
-
-instance FromJSON CancelOperationRequest where
-        parseJSON
-          = withObject "CancelOperationRequest"
-              (\ o -> pure CancelOperationRequest')
-
-instance ToJSON CancelOperationRequest where
-        toJSON = const emptyObject
-
--- | This resource represents a long-running operation that is the result of
--- a network API call.
---
--- /See:/ 'operation' smart constructor.
-data Operation =
-  Operation'
-    { _oDone     :: !(Maybe Bool)
-    , _oError    :: !(Maybe Status)
-    , _oResponse :: !(Maybe OperationResponse)
-    , _oName     :: !(Maybe Text)
-    , _oMetadata :: !(Maybe OperationMetadata)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Operation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oDone'
---
--- * 'oError'
---
--- * 'oResponse'
---
--- * 'oName'
---
--- * 'oMetadata'
-operation
-    :: Operation
-operation =
-  Operation'
-    { _oDone = Nothing
-    , _oError = Nothing
-    , _oResponse = Nothing
-    , _oName = Nothing
-    , _oMetadata = Nothing
-    }
-
-
--- | If the value is \`false\`, it means the operation is still in progress.
--- If \`true\`, the operation is completed, and either \`error\` or
--- \`response\` is available.
-oDone :: Lens' Operation (Maybe Bool)
-oDone = lens _oDone (\ s a -> s{_oDone = a})
-
--- | The error result of the operation in case of failure or cancellation.
-oError :: Lens' Operation (Maybe Status)
-oError = lens _oError (\ s a -> s{_oError = a})
-
--- | The normal response of the operation in case of success. If the original
--- method returns no data on success, such as \`Delete\`, the response is
--- \`google.protobuf.Empty\`. If the original method is standard
--- \`Get\`\/\`Create\`\/\`Update\`, the response should be the resource.
--- For other methods, the response should have the type \`XxxResponse\`,
--- where \`Xxx\` is the original method name. For example, if the original
--- method name is \`TakeSnapshot()\`, the inferred response type is
--- \`TakeSnapshotResponse\`.
-oResponse :: Lens' Operation (Maybe OperationResponse)
-oResponse
-  = lens _oResponse (\ s a -> s{_oResponse = a})
-
--- | The server-assigned name, which is only unique within the same service
--- that originally returns it. If you use the default HTTP mapping, the
--- \`name\` should have the format of \`operations\/some\/unique\/name\`.
-oName :: Lens' Operation (Maybe Text)
-oName = lens _oName (\ s a -> s{_oName = a})
-
--- | Service-specific metadata associated with the operation. It typically
--- contains progress information and common metadata such as create time.
--- Some services might not provide such metadata. Any method that returns a
--- long-running operation should document the metadata type, if any.
-oMetadata :: Lens' Operation (Maybe OperationMetadata)
-oMetadata
-  = lens _oMetadata (\ s a -> s{_oMetadata = a})
-
-instance FromJSON Operation where
-        parseJSON
-          = withObject "Operation"
-              (\ o ->
-                 Operation' <$>
-                   (o .:? "done") <*> (o .:? "error") <*>
-                     (o .:? "response")
-                     <*> (o .:? "name")
-                     <*> (o .:? "metadata"))
-
-instance ToJSON Operation where
-        toJSON Operation'{..}
-          = object
-              (catMaybes
-                 [("done" .=) <$> _oDone, ("error" .=) <$> _oError,
-                  ("response" .=) <$> _oResponse,
-                  ("name" .=) <$> _oName,
-                  ("metadata" .=) <$> _oMetadata])
-
--- | A generic empty message that you can re-use to avoid defining duplicated
--- empty messages in your APIs. A typical example is to use it as the
--- request or the response type of an API method. For instance: service Foo
--- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The
--- JSON representation for \`Empty\` is empty JSON object \`{}\`.
---
--- /See:/ 'empty' smart constructor.
-data Empty =
-  Empty'
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Empty' with the minimum fields required to make a request.
---
-empty
-    :: Empty
-empty = Empty'
-
-
-instance FromJSON Empty where
-        parseJSON = withObject "Empty" (\ o -> pure Empty')
-
-instance ToJSON Empty where
-        toJSON = const emptyObject
-
--- | A Cloud Shell environment, which is defined as the combination of a
--- Docker image specifying what is installed on the environment and a home
--- directory containing the user\'s data that will remain across sessions.
--- Each user has a single environment with the ID \"default\".
---
--- /See:/ 'environment' smart constructor.
-data Environment =
-  Environment'
-    { _eState       :: !(Maybe EnvironmentState)
-    , _ePublicKeys  :: !(Maybe [PublicKey])
-    , _eSSHUsername :: !(Maybe Text)
-    , _eName        :: !(Maybe Text)
-    , _eId          :: !(Maybe Text)
-    , _eSSHHost     :: !(Maybe Text)
-    , _eDockerImage :: !(Maybe Text)
-    , _eSSHPort     :: !(Maybe (Textual Int32))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Environment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eState'
---
--- * 'ePublicKeys'
---
--- * 'eSSHUsername'
---
--- * 'eName'
---
--- * 'eId'
---
--- * 'eSSHHost'
---
--- * 'eDockerImage'
---
--- * 'eSSHPort'
-environment
-    :: Environment
-environment =
-  Environment'
-    { _eState = Nothing
-    , _ePublicKeys = Nothing
-    , _eSSHUsername = Nothing
-    , _eName = Nothing
-    , _eId = Nothing
-    , _eSSHHost = Nothing
-    , _eDockerImage = Nothing
-    , _eSSHPort = Nothing
-    }
-
-
--- | Output only. Current execution state of this environment.
-eState :: Lens' Environment (Maybe EnvironmentState)
-eState = lens _eState (\ s a -> s{_eState = a})
-
--- | Output only. Public keys associated with the environment. Clients can
--- connect to this environment via SSH only if they possess a private key
--- corresponding to at least one of these public keys. Keys can be added to
--- or removed from the environment using the CreatePublicKey and
--- DeletePublicKey methods.
-ePublicKeys :: Lens' Environment [PublicKey]
-ePublicKeys
-  = lens _ePublicKeys (\ s a -> s{_ePublicKeys = a}) .
-      _Default
-      . _Coerce
-
--- | Output only. Username that clients should use when initiating SSH
--- sessions with the environment.
-eSSHUsername :: Lens' Environment (Maybe Text)
-eSSHUsername
-  = lens _eSSHUsername (\ s a -> s{_eSSHUsername = a})
-
--- | Output only. Full name of this resource, in the format
--- \`users\/{owner_email}\/environments\/{environment_id}\`.
--- \`{owner_email}\` is the email address of the user to whom this
--- environment belongs, and \`{environment_id}\` is the identifier of this
--- environment. For example,
--- \`users\/someone\'example.com\/environments\/default\`.
-eName :: Lens' Environment (Maybe Text)
-eName = lens _eName (\ s a -> s{_eName = a})
-
--- | Output only. The environment\'s identifier, which is always \"default\".
-eId :: Lens' Environment (Maybe Text)
-eId = lens _eId (\ s a -> s{_eId = a})
-
--- | Output only. Host to which clients can connect to initiate SSH sessions
--- with the environment.
-eSSHHost :: Lens' Environment (Maybe Text)
-eSSHHost = lens _eSSHHost (\ s a -> s{_eSSHHost = a})
-
--- | Required. Full path to the Docker image used to run this environment,
--- e.g. \"gcr.io\/dev-con\/cloud-devshell:latest\".
-eDockerImage :: Lens' Environment (Maybe Text)
-eDockerImage
-  = lens _eDockerImage (\ s a -> s{_eDockerImage = a})
-
--- | Output only. Port to which clients can connect to initiate SSH sessions
--- with the environment.
-eSSHPort :: Lens' Environment (Maybe Int32)
-eSSHPort
-  = lens _eSSHPort (\ s a -> s{_eSSHPort = a}) .
-      mapping _Coerce
-
-instance FromJSON Environment where
-        parseJSON
-          = withObject "Environment"
-              (\ o ->
-                 Environment' <$>
-                   (o .:? "state") <*> (o .:? "publicKeys" .!= mempty)
-                     <*> (o .:? "sshUsername")
-                     <*> (o .:? "name")
-                     <*> (o .:? "id")
-                     <*> (o .:? "sshHost")
-                     <*> (o .:? "dockerImage")
-                     <*> (o .:? "sshPort"))
-
-instance ToJSON Environment where
-        toJSON Environment'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _eState,
-                  ("publicKeys" .=) <$> _ePublicKeys,
-                  ("sshUsername" .=) <$> _eSSHUsername,
-                  ("name" .=) <$> _eName, ("id" .=) <$> _eId,
-                  ("sshHost" .=) <$> _eSSHHost,
-                  ("dockerImage" .=) <$> _eDockerImage,
-                  ("sshPort" .=) <$> _eSSHPort])
-
---
--- /See:/ 'statusDetailsItem' smart constructor.
-newtype StatusDetailsItem =
-  StatusDetailsItem'
-    { _sdiAddtional :: HashMap Text JSONValue
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdiAddtional'
-statusDetailsItem
-    :: HashMap Text JSONValue -- ^ 'sdiAddtional'
-    -> StatusDetailsItem
-statusDetailsItem pSdiAddtional_ =
-  StatusDetailsItem' {_sdiAddtional = _Coerce # pSdiAddtional_}
-
-
--- | Properties of the object. Contains field \'type with type URL.
-sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)
-sdiAddtional
-  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})
-      . _Coerce
-
-instance FromJSON StatusDetailsItem where
-        parseJSON
-          = withObject "StatusDetailsItem"
-              (\ o -> StatusDetailsItem' <$> (parseJSONObject o))
-
-instance ToJSON StatusDetailsItem where
-        toJSON = toJSON . _sdiAddtional
-
--- | A public SSH key, corresponding to a private SSH key held by the client.
---
--- /See:/ 'publicKey' smart constructor.
-data PublicKey =
-  PublicKey'
-    { _pkFormat :: !(Maybe PublicKeyFormat)
-    , _pkKey    :: !(Maybe Bytes)
-    , _pkName   :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PublicKey' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pkFormat'
---
--- * 'pkKey'
---
--- * 'pkName'
-publicKey
-    :: PublicKey
-publicKey =
-  PublicKey' {_pkFormat = Nothing, _pkKey = Nothing, _pkName = Nothing}
-
-
--- | Required. Format of this key\'s content.
-pkFormat :: Lens' PublicKey (Maybe PublicKeyFormat)
-pkFormat = lens _pkFormat (\ s a -> s{_pkFormat = a})
-
--- | Required. Content of this key.
-pkKey :: Lens' PublicKey (Maybe ByteString)
-pkKey
-  = lens _pkKey (\ s a -> s{_pkKey = a}) .
-      mapping _Bytes
-
--- | Output only. Full name of this resource, in the format
--- \`users\/{owner_email}\/environments\/{environment_id}\/publicKeys\/{key_id}\`.
--- \`{owner_email}\` is the email address of the user to whom the key
--- belongs. \`{environment_id}\` is the identifier of the environment to
--- which the key grants access. \`{key_id}\` is the unique identifier of
--- the key. For example,
--- \`users\/someone\'example.com\/environments\/default\/publicKeys\/myKey\`.
-pkName :: Lens' PublicKey (Maybe Text)
-pkName = lens _pkName (\ s a -> s{_pkName = a})
-
-instance FromJSON PublicKey where
-        parseJSON
-          = withObject "PublicKey"
-              (\ o ->
-                 PublicKey' <$>
-                   (o .:? "format") <*> (o .:? "key") <*>
-                     (o .:? "name"))
-
-instance ToJSON PublicKey where
-        toJSON PublicKey'{..}
-          = object
-              (catMaybes
-                 [("format" .=) <$> _pkFormat, ("key" .=) <$> _pkKey,
-                  ("name" .=) <$> _pkName])
-
--- | Message included in the metadata field of operations returned from
--- StartEnvironment.
---
--- /See:/ 'startEnvironmentMetadata' smart constructor.
-newtype StartEnvironmentMetadata =
-  StartEnvironmentMetadata'
-    { _semState :: Maybe StartEnvironmentMetadataState
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartEnvironmentMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'semState'
-startEnvironmentMetadata
-    :: StartEnvironmentMetadata
-startEnvironmentMetadata = StartEnvironmentMetadata' {_semState = Nothing}
-
-
--- | Current state of the environment being started.
-semState :: Lens' StartEnvironmentMetadata (Maybe StartEnvironmentMetadataState)
-semState = lens _semState (\ s a -> s{_semState = a})
-
-instance FromJSON StartEnvironmentMetadata where
-        parseJSON
-          = withObject "StartEnvironmentMetadata"
-              (\ o ->
-                 StartEnvironmentMetadata' <$> (o .:? "state"))
-
-instance ToJSON StartEnvironmentMetadata where
-        toJSON StartEnvironmentMetadata'{..}
-          = object (catMaybes [("state" .=) <$> _semState])
-
--- | Service-specific metadata associated with the operation. It typically
--- contains progress information and common metadata such as create time.
--- Some services might not provide such metadata. Any method that returns a
--- long-running operation should document the metadata type, if any.
---
--- /See:/ 'operationMetadata' smart constructor.
-newtype OperationMetadata =
-  OperationMetadata'
-    { _omAddtional :: HashMap Text JSONValue
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OperationMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'omAddtional'
-operationMetadata
-    :: HashMap Text JSONValue -- ^ 'omAddtional'
-    -> OperationMetadata
-operationMetadata pOmAddtional_ =
-  OperationMetadata' {_omAddtional = _Coerce # pOmAddtional_}
-
-
--- | Properties of the object. Contains field \'type with type URL.
-omAddtional :: Lens' OperationMetadata (HashMap Text JSONValue)
-omAddtional
-  = lens _omAddtional (\ s a -> s{_omAddtional = a}) .
-      _Coerce
-
-instance FromJSON OperationMetadata where
-        parseJSON
-          = withObject "OperationMetadata"
-              (\ o -> OperationMetadata' <$> (parseJSONObject o))
-
-instance ToJSON OperationMetadata where
-        toJSON = toJSON . _omAddtional
-
--- | Message included in the response field of operations returned from
--- StartEnvironment once the operation is complete.
---
--- /See:/ 'startEnvironmentResponse' smart constructor.
-newtype StartEnvironmentResponse =
-  StartEnvironmentResponse'
-    { _serEnvironment :: Maybe Environment
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StartEnvironmentResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'serEnvironment'
-startEnvironmentResponse
-    :: StartEnvironmentResponse
-startEnvironmentResponse = StartEnvironmentResponse' {_serEnvironment = Nothing}
-
-
--- | Environment that was started.
-serEnvironment :: Lens' StartEnvironmentResponse (Maybe Environment)
-serEnvironment
-  = lens _serEnvironment
-      (\ s a -> s{_serEnvironment = a})
-
-instance FromJSON StartEnvironmentResponse where
-        parseJSON
-          = withObject "StartEnvironmentResponse"
-              (\ o ->
-                 StartEnvironmentResponse' <$> (o .:? "environment"))
-
-instance ToJSON StartEnvironmentResponse where
-        toJSON StartEnvironmentResponse'{..}
-          = object
-              (catMaybes [("environment" .=) <$> _serEnvironment])
-
--- | The normal response of the operation in case of success. If the original
--- method returns no data on success, such as \`Delete\`, the response is
--- \`google.protobuf.Empty\`. If the original method is standard
--- \`Get\`\/\`Create\`\/\`Update\`, the response should be the resource.
--- For other methods, the response should have the type \`XxxResponse\`,
--- where \`Xxx\` is the original method name. For example, if the original
--- method name is \`TakeSnapshot()\`, the inferred response type is
--- \`TakeSnapshotResponse\`.
---
--- /See:/ 'operationResponse' smart constructor.
-newtype OperationResponse =
-  OperationResponse'
-    { _orAddtional :: HashMap Text JSONValue
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OperationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'orAddtional'
-operationResponse
-    :: HashMap Text JSONValue -- ^ 'orAddtional'
-    -> OperationResponse
-operationResponse pOrAddtional_ =
-  OperationResponse' {_orAddtional = _Coerce # pOrAddtional_}
-
-
--- | Properties of the object. Contains field \'type with type URL.
-orAddtional :: Lens' OperationResponse (HashMap Text JSONValue)
-orAddtional
-  = lens _orAddtional (\ s a -> s{_orAddtional = a}) .
-      _Coerce
-
-instance FromJSON OperationResponse where
-        parseJSON
-          = withObject "OperationResponse"
-              (\ o -> OperationResponse' <$> (parseJSONObject o))
-
-instance ToJSON OperationResponse where
-        toJSON = toJSON . _orAddtional
diff --git a/gen/Network/Google/CloudShell/Types/Sum.hs b/gen/Network/Google/CloudShell/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/Google/CloudShell/Types/Sum.hs
+++ /dev/null
@@ -1,183 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.CloudShell.Types.Sum
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.CloudShell.Types.Sum where
-
-import           Network.Google.Prelude hiding (Bytes)
-
--- | Current state of the environment being started.
-data StartEnvironmentMetadataState
-    = StateUnspecified
-      -- ^ @STATE_UNSPECIFIED@
-      -- The environment\'s start state is unknown.
-    | Starting
-      -- ^ @STARTING@
-      -- The environment is in the process of being started, but no additional
-      -- details are available.
-    | UnarchivingDisk
-      -- ^ @UNARCHIVING_DISK@
-      -- Startup is waiting for the user\'s disk to be unarchived. This can
-      -- happen when the user returns to Cloud Shell after not having used it for
-      -- a while, and suggests that startup will take longer than normal.
-    | Finished
-      -- ^ @FINISHED@
-      -- Startup is complete and the user should be able to establish an SSH
-      -- connection to their environment.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable StartEnvironmentMetadataState
-
-instance FromHttpApiData StartEnvironmentMetadataState where
-    parseQueryParam = \case
-        "STATE_UNSPECIFIED" -> Right StateUnspecified
-        "STARTING" -> Right Starting
-        "UNARCHIVING_DISK" -> Right UnarchivingDisk
-        "FINISHED" -> Right Finished
-        x -> Left ("Unable to parse StartEnvironmentMetadataState from: " <> x)
-
-instance ToHttpApiData StartEnvironmentMetadataState where
-    toQueryParam = \case
-        StateUnspecified -> "STATE_UNSPECIFIED"
-        Starting -> "STARTING"
-        UnarchivingDisk -> "UNARCHIVING_DISK"
-        Finished -> "FINISHED"
-
-instance FromJSON StartEnvironmentMetadataState where
-    parseJSON = parseJSONText "StartEnvironmentMetadataState"
-
-instance ToJSON StartEnvironmentMetadataState where
-    toJSON = toJSONText
-
--- | Output only. Current execution state of this environment.
-data EnvironmentState
-    = ESStateUnspecified
-      -- ^ @STATE_UNSPECIFIED@
-      -- The environment\'s states is unknown.
-    | ESDisabled
-      -- ^ @DISABLED@
-      -- The environment is not running and can\'t be connected to. Starting the
-      -- environment will transition it to the STARTING state.
-    | ESStarting
-      -- ^ @STARTING@
-      -- The environment is being started but is not yet ready to accept
-      -- connections.
-    | ESRunning
-      -- ^ @RUNNING@
-      -- The environment is running and ready to accept connections. It will
-      -- automatically transition back to DISABLED after a period of inactivity
-      -- or if another environment is started.
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable EnvironmentState
-
-instance FromHttpApiData EnvironmentState where
-    parseQueryParam = \case
-        "STATE_UNSPECIFIED" -> Right ESStateUnspecified
-        "DISABLED" -> Right ESDisabled
-        "STARTING" -> Right ESStarting
-        "RUNNING" -> Right ESRunning
-        x -> Left ("Unable to parse EnvironmentState from: " <> x)
-
-instance ToHttpApiData EnvironmentState where
-    toQueryParam = \case
-        ESStateUnspecified -> "STATE_UNSPECIFIED"
-        ESDisabled -> "DISABLED"
-        ESStarting -> "STARTING"
-        ESRunning -> "RUNNING"
-
-instance FromJSON EnvironmentState where
-    parseJSON = parseJSONText "EnvironmentState"
-
-instance ToJSON EnvironmentState where
-    toJSON = toJSONText
-
--- | V1 error format.
-data Xgafv
-    = X1
-      -- ^ @1@
-      -- v1 error format
-    | X2
-      -- ^ @2@
-      -- v2 error format
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable Xgafv
-
-instance FromHttpApiData Xgafv where
-    parseQueryParam = \case
-        "1" -> Right X1
-        "2" -> Right X2
-        x -> Left ("Unable to parse Xgafv from: " <> x)
-
-instance ToHttpApiData Xgafv where
-    toQueryParam = \case
-        X1 -> "1"
-        X2 -> "2"
-
-instance FromJSON Xgafv where
-    parseJSON = parseJSONText "Xgafv"
-
-instance ToJSON Xgafv where
-    toJSON = toJSONText
-
--- | Required. Format of this key\'s content.
-data PublicKeyFormat
-    = FormatUnspecified
-      -- ^ @FORMAT_UNSPECIFIED@
-      -- Unknown format. Do not use.
-    | SSHDss
-      -- ^ @SSH_DSS@
-      -- \`ssh-dss\` key format (see RFC4253).
-    | SSHRsa
-      -- ^ @SSH_RSA@
-      -- \`ssh-rsa\` key format (see RFC4253).
-    | EcdsaSHA2NISTP256
-      -- ^ @ECDSA_SHA2_NISTP256@
-      -- \`ecdsa-sha2-nistp256\` key format (see RFC5656).
-    | EcdsaSHA2NISTP384
-      -- ^ @ECDSA_SHA2_NISTP384@
-      -- \`ecdsa-sha2-nistp384\` key format (see RFC5656).
-    | EcdsaSHA2NISTP521
-      -- ^ @ECDSA_SHA2_NISTP521@
-      -- \`ecdsa-sha2-nistp521\` key format (see RFC5656).
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable PublicKeyFormat
-
-instance FromHttpApiData PublicKeyFormat where
-    parseQueryParam = \case
-        "FORMAT_UNSPECIFIED" -> Right FormatUnspecified
-        "SSH_DSS" -> Right SSHDss
-        "SSH_RSA" -> Right SSHRsa
-        "ECDSA_SHA2_NISTP256" -> Right EcdsaSHA2NISTP256
-        "ECDSA_SHA2_NISTP384" -> Right EcdsaSHA2NISTP384
-        "ECDSA_SHA2_NISTP521" -> Right EcdsaSHA2NISTP521
-        x -> Left ("Unable to parse PublicKeyFormat from: " <> x)
-
-instance ToHttpApiData PublicKeyFormat where
-    toQueryParam = \case
-        FormatUnspecified -> "FORMAT_UNSPECIFIED"
-        SSHDss -> "SSH_DSS"
-        SSHRsa -> "SSH_RSA"
-        EcdsaSHA2NISTP256 -> "ECDSA_SHA2_NISTP256"
-        EcdsaSHA2NISTP384 -> "ECDSA_SHA2_NISTP384"
-        EcdsaSHA2NISTP521 -> "ECDSA_SHA2_NISTP521"
-
-instance FromJSON PublicKeyFormat where
-    parseJSON = parseJSONText "PublicKeyFormat"
-
-instance ToJSON PublicKeyFormat where
-    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/CloudShell/Operations/Cancel.hs b/gen/Network/Google/Resource/CloudShell/Operations/Cancel.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/CloudShell/Operations/Cancel.hs
+++ /dev/null
@@ -1,177 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.CloudShell.Operations.Cancel
--- 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)
---
--- Starts asynchronous cancellation on a long-running operation. The server
--- makes a best effort to cancel the operation, but success is not
--- guaranteed. If the server doesn\'t support this method, it returns
--- \`google.rpc.Code.UNIMPLEMENTED\`. Clients can use
--- Operations.GetOperation or other methods to check whether the
--- cancellation succeeded or whether the operation completed despite
--- cancellation. On successful cancellation, the operation is not deleted;
--- instead, it becomes an operation with an Operation.error value with a
--- google.rpc.Status.code of 1, corresponding to \`Code.CANCELLED\`.
---
--- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.operations.cancel@.
-module Network.Google.Resource.CloudShell.Operations.Cancel
-    (
-    -- * REST Resource
-      OperationsCancelResource
-
-    -- * Creating a Request
-    , operationsCancel
-    , OperationsCancel
-
-    -- * Request Lenses
-    , ocXgafv
-    , ocUploadProtocol
-    , ocAccessToken
-    , ocUploadType
-    , ocPayload
-    , ocName
-    , ocCallback
-    ) where
-
-import           Network.Google.CloudShell.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @cloudshell.operations.cancel@ method which the
--- 'OperationsCancel' request conforms to.
-type OperationsCancelResource =
-     "v1" :>
-       CaptureMode "name" "cancel" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "callback" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] CancelOperationRequest :>
-                       Post '[JSON] Empty
-
--- | Starts asynchronous cancellation on a long-running operation. The server
--- makes a best effort to cancel the operation, but success is not
--- guaranteed. If the server doesn\'t support this method, it returns
--- \`google.rpc.Code.UNIMPLEMENTED\`. Clients can use
--- Operations.GetOperation or other methods to check whether the
--- cancellation succeeded or whether the operation completed despite
--- cancellation. On successful cancellation, the operation is not deleted;
--- instead, it becomes an operation with an Operation.error value with a
--- google.rpc.Status.code of 1, corresponding to \`Code.CANCELLED\`.
---
--- /See:/ 'operationsCancel' smart constructor.
-data OperationsCancel =
-  OperationsCancel'
-    { _ocXgafv          :: !(Maybe Xgafv)
-    , _ocUploadProtocol :: !(Maybe Text)
-    , _ocAccessToken    :: !(Maybe Text)
-    , _ocUploadType     :: !(Maybe Text)
-    , _ocPayload        :: !CancelOperationRequest
-    , _ocName           :: !Text
-    , _ocCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OperationsCancel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ocXgafv'
---
--- * 'ocUploadProtocol'
---
--- * 'ocAccessToken'
---
--- * 'ocUploadType'
---
--- * 'ocPayload'
---
--- * 'ocName'
---
--- * 'ocCallback'
-operationsCancel
-    :: CancelOperationRequest -- ^ 'ocPayload'
-    -> Text -- ^ 'ocName'
-    -> OperationsCancel
-operationsCancel pOcPayload_ pOcName_ =
-  OperationsCancel'
-    { _ocXgafv = Nothing
-    , _ocUploadProtocol = Nothing
-    , _ocAccessToken = Nothing
-    , _ocUploadType = Nothing
-    , _ocPayload = pOcPayload_
-    , _ocName = pOcName_
-    , _ocCallback = Nothing
-    }
-
-
--- | V1 error format.
-ocXgafv :: Lens' OperationsCancel (Maybe Xgafv)
-ocXgafv = lens _ocXgafv (\ s a -> s{_ocXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-ocUploadProtocol :: Lens' OperationsCancel (Maybe Text)
-ocUploadProtocol
-  = lens _ocUploadProtocol
-      (\ s a -> s{_ocUploadProtocol = a})
-
--- | OAuth access token.
-ocAccessToken :: Lens' OperationsCancel (Maybe Text)
-ocAccessToken
-  = lens _ocAccessToken
-      (\ s a -> s{_ocAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-ocUploadType :: Lens' OperationsCancel (Maybe Text)
-ocUploadType
-  = lens _ocUploadType (\ s a -> s{_ocUploadType = a})
-
--- | Multipart request metadata.
-ocPayload :: Lens' OperationsCancel CancelOperationRequest
-ocPayload
-  = lens _ocPayload (\ s a -> s{_ocPayload = a})
-
--- | The name of the operation resource to be cancelled.
-ocName :: Lens' OperationsCancel Text
-ocName = lens _ocName (\ s a -> s{_ocName = a})
-
--- | JSONP
-ocCallback :: Lens' OperationsCancel (Maybe Text)
-ocCallback
-  = lens _ocCallback (\ s a -> s{_ocCallback = a})
-
-instance GoogleRequest OperationsCancel where
-        type Rs OperationsCancel = Empty
-        type Scopes OperationsCancel =
-             '["https://www.googleapis.com/auth/cloud-platform"]
-        requestClient OperationsCancel'{..}
-          = go _ocName _ocXgafv _ocUploadProtocol
-              _ocAccessToken
-              _ocUploadType
-              _ocCallback
-              (Just AltJSON)
-              _ocPayload
-              cloudShellService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy OperationsCancelResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/CloudShell/Operations/Delete.hs b/gen/Network/Google/Resource/CloudShell/Operations/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/CloudShell/Operations/Delete.hs
+++ /dev/null
@@ -1,153 +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.CloudShell.Operations.Delete
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a long-running operation. This method indicates that the client
--- is no longer interested in the operation result. It does not cancel the
--- operation. If the server doesn\'t support this method, it returns
--- \`google.rpc.Code.UNIMPLEMENTED\`.
---
--- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.operations.delete@.
-module Network.Google.Resource.CloudShell.Operations.Delete
-    (
-    -- * REST Resource
-      OperationsDeleteResource
-
-    -- * Creating a Request
-    , operationsDelete
-    , OperationsDelete
-
-    -- * Request Lenses
-    , odXgafv
-    , odUploadProtocol
-    , odAccessToken
-    , odUploadType
-    , odName
-    , odCallback
-    ) where
-
-import           Network.Google.CloudShell.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @cloudshell.operations.delete@ method which the
--- 'OperationsDelete' request conforms to.
-type OperationsDeleteResource =
-     "v1" :>
-       Capture "name" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "callback" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
-
--- | Deletes a long-running operation. This method indicates that the client
--- is no longer interested in the operation result. It does not cancel the
--- operation. If the server doesn\'t support this method, it returns
--- \`google.rpc.Code.UNIMPLEMENTED\`.
---
--- /See:/ 'operationsDelete' smart constructor.
-data OperationsDelete =
-  OperationsDelete'
-    { _odXgafv          :: !(Maybe Xgafv)
-    , _odUploadProtocol :: !(Maybe Text)
-    , _odAccessToken    :: !(Maybe Text)
-    , _odUploadType     :: !(Maybe Text)
-    , _odName           :: !Text
-    , _odCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OperationsDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'odXgafv'
---
--- * 'odUploadProtocol'
---
--- * 'odAccessToken'
---
--- * 'odUploadType'
---
--- * 'odName'
---
--- * 'odCallback'
-operationsDelete
-    :: Text -- ^ 'odName'
-    -> OperationsDelete
-operationsDelete pOdName_ =
-  OperationsDelete'
-    { _odXgafv = Nothing
-    , _odUploadProtocol = Nothing
-    , _odAccessToken = Nothing
-    , _odUploadType = Nothing
-    , _odName = pOdName_
-    , _odCallback = Nothing
-    }
-
-
--- | V1 error format.
-odXgafv :: Lens' OperationsDelete (Maybe Xgafv)
-odXgafv = lens _odXgafv (\ s a -> s{_odXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-odUploadProtocol :: Lens' OperationsDelete (Maybe Text)
-odUploadProtocol
-  = lens _odUploadProtocol
-      (\ s a -> s{_odUploadProtocol = a})
-
--- | OAuth access token.
-odAccessToken :: Lens' OperationsDelete (Maybe Text)
-odAccessToken
-  = lens _odAccessToken
-      (\ s a -> s{_odAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-odUploadType :: Lens' OperationsDelete (Maybe Text)
-odUploadType
-  = lens _odUploadType (\ s a -> s{_odUploadType = a})
-
--- | The name of the operation resource to be deleted.
-odName :: Lens' OperationsDelete Text
-odName = lens _odName (\ s a -> s{_odName = a})
-
--- | JSONP
-odCallback :: Lens' OperationsDelete (Maybe Text)
-odCallback
-  = lens _odCallback (\ s a -> s{_odCallback = a})
-
-instance GoogleRequest OperationsDelete where
-        type Rs OperationsDelete = Empty
-        type Scopes OperationsDelete =
-             '["https://www.googleapis.com/auth/cloud-platform"]
-        requestClient OperationsDelete'{..}
-          = go _odName _odXgafv _odUploadProtocol
-              _odAccessToken
-              _odUploadType
-              _odCallback
-              (Just AltJSON)
-              cloudShellService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy OperationsDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/CloudShell/Operations/Get.hs b/gen/Network/Google/Resource/CloudShell/Operations/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/CloudShell/Operations/Get.hs
+++ /dev/null
@@ -1,150 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.CloudShell.Operations.Get
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets the latest state of a long-running operation. Clients can use this
--- method to poll the operation result at intervals as recommended by the
--- API service.
---
--- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.operations.get@.
-module Network.Google.Resource.CloudShell.Operations.Get
-    (
-    -- * REST Resource
-      OperationsGetResource
-
-    -- * Creating a Request
-    , operationsGet
-    , OperationsGet
-
-    -- * Request Lenses
-    , ogXgafv
-    , ogUploadProtocol
-    , ogAccessToken
-    , ogUploadType
-    , ogName
-    , ogCallback
-    ) where
-
-import           Network.Google.CloudShell.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @cloudshell.operations.get@ method which the
--- 'OperationsGet' request conforms to.
-type OperationsGetResource =
-     "v1" :>
-       Capture "name" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "callback" Text :>
-                   QueryParam "alt" AltJSON :> Get '[JSON] Operation
-
--- | Gets the latest state of a long-running operation. Clients can use this
--- method to poll the operation result at intervals as recommended by the
--- API service.
---
--- /See:/ 'operationsGet' smart constructor.
-data OperationsGet =
-  OperationsGet'
-    { _ogXgafv          :: !(Maybe Xgafv)
-    , _ogUploadProtocol :: !(Maybe Text)
-    , _ogAccessToken    :: !(Maybe Text)
-    , _ogUploadType     :: !(Maybe Text)
-    , _ogName           :: !Text
-    , _ogCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OperationsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ogXgafv'
---
--- * 'ogUploadProtocol'
---
--- * 'ogAccessToken'
---
--- * 'ogUploadType'
---
--- * 'ogName'
---
--- * 'ogCallback'
-operationsGet
-    :: Text -- ^ 'ogName'
-    -> OperationsGet
-operationsGet pOgName_ =
-  OperationsGet'
-    { _ogXgafv = Nothing
-    , _ogUploadProtocol = Nothing
-    , _ogAccessToken = Nothing
-    , _ogUploadType = Nothing
-    , _ogName = pOgName_
-    , _ogCallback = Nothing
-    }
-
-
--- | V1 error format.
-ogXgafv :: Lens' OperationsGet (Maybe Xgafv)
-ogXgafv = lens _ogXgafv (\ s a -> s{_ogXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-ogUploadProtocol :: Lens' OperationsGet (Maybe Text)
-ogUploadProtocol
-  = lens _ogUploadProtocol
-      (\ s a -> s{_ogUploadProtocol = a})
-
--- | OAuth access token.
-ogAccessToken :: Lens' OperationsGet (Maybe Text)
-ogAccessToken
-  = lens _ogAccessToken
-      (\ s a -> s{_ogAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-ogUploadType :: Lens' OperationsGet (Maybe Text)
-ogUploadType
-  = lens _ogUploadType (\ s a -> s{_ogUploadType = a})
-
--- | The name of the operation resource.
-ogName :: Lens' OperationsGet Text
-ogName = lens _ogName (\ s a -> s{_ogName = a})
-
--- | JSONP
-ogCallback :: Lens' OperationsGet (Maybe Text)
-ogCallback
-  = lens _ogCallback (\ s a -> s{_ogCallback = a})
-
-instance GoogleRequest OperationsGet where
-        type Rs OperationsGet = Operation
-        type Scopes OperationsGet =
-             '["https://www.googleapis.com/auth/cloud-platform"]
-        requestClient OperationsGet'{..}
-          = go _ogName _ogXgafv _ogUploadProtocol
-              _ogAccessToken
-              _ogUploadType
-              _ogCallback
-              (Just AltJSON)
-              cloudShellService
-          where go
-                  = buildClient (Proxy :: Proxy OperationsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/CloudShell/Operations/List.hs b/gen/Network/Google/Resource/CloudShell/Operations/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/CloudShell/Operations/List.hs
+++ /dev/null
@@ -1,201 +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.CloudShell.Operations.List
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists operations that match the specified filter in the request. If the
--- server doesn\'t support this method, it returns \`UNIMPLEMENTED\`. NOTE:
--- the \`name\` binding allows API services to override the binding to use
--- different resource name schemes, such as \`users\/*\/operations\`. To
--- override the binding, API services can add a binding such as
--- \`\"\/v1\/{name=users\/*}\/operations\"\` to their service
--- configuration. For backwards compatibility, the default name includes
--- the operations collection id, however overriding users must ensure the
--- name binding is the parent resource, without the operations collection
--- id.
---
--- /See:/ <https://cloud.google.com/shell/docs/ Cloud Shell API Reference> for @cloudshell.operations.list@.
-module Network.Google.Resource.CloudShell.Operations.List
-    (
-    -- * REST Resource
-      OperationsListResource
-
-    -- * Creating a Request
-    , operationsList
-    , OperationsList
-
-    -- * Request Lenses
-    , olXgafv
-    , olUploadProtocol
-    , olAccessToken
-    , olUploadType
-    , olName
-    , olFilter
-    , olPageToken
-    , olPageSize
-    , olCallback
-    ) where
-
-import           Network.Google.CloudShell.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @cloudshell.operations.list@ method which the
--- 'OperationsList' request conforms to.
-type OperationsListResource =
-     "v1" :>
-       Capture "name" Text :>
-         QueryParam "$.xgafv" Xgafv :>
-           QueryParam "upload_protocol" Text :>
-             QueryParam "access_token" Text :>
-               QueryParam "uploadType" Text :>
-                 QueryParam "filter" Text :>
-                   QueryParam "pageToken" Text :>
-                     QueryParam "pageSize" (Textual Int32) :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           Get '[JSON] ListOperationsResponse
-
--- | Lists operations that match the specified filter in the request. If the
--- server doesn\'t support this method, it returns \`UNIMPLEMENTED\`. NOTE:
--- the \`name\` binding allows API services to override the binding to use
--- different resource name schemes, such as \`users\/*\/operations\`. To
--- override the binding, API services can add a binding such as
--- \`\"\/v1\/{name=users\/*}\/operations\"\` to their service
--- configuration. For backwards compatibility, the default name includes
--- the operations collection id, however overriding users must ensure the
--- name binding is the parent resource, without the operations collection
--- id.
---
--- /See:/ 'operationsList' smart constructor.
-data OperationsList =
-  OperationsList'
-    { _olXgafv          :: !(Maybe Xgafv)
-    , _olUploadProtocol :: !(Maybe Text)
-    , _olAccessToken    :: !(Maybe Text)
-    , _olUploadType     :: !(Maybe Text)
-    , _olName           :: !Text
-    , _olFilter         :: !(Maybe Text)
-    , _olPageToken      :: !(Maybe Text)
-    , _olPageSize       :: !(Maybe (Textual Int32))
-    , _olCallback       :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'OperationsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'olXgafv'
---
--- * 'olUploadProtocol'
---
--- * 'olAccessToken'
---
--- * 'olUploadType'
---
--- * 'olName'
---
--- * 'olFilter'
---
--- * 'olPageToken'
---
--- * 'olPageSize'
---
--- * 'olCallback'
-operationsList
-    :: Text -- ^ 'olName'
-    -> OperationsList
-operationsList pOlName_ =
-  OperationsList'
-    { _olXgafv = Nothing
-    , _olUploadProtocol = Nothing
-    , _olAccessToken = Nothing
-    , _olUploadType = Nothing
-    , _olName = pOlName_
-    , _olFilter = Nothing
-    , _olPageToken = Nothing
-    , _olPageSize = Nothing
-    , _olCallback = Nothing
-    }
-
-
--- | V1 error format.
-olXgafv :: Lens' OperationsList (Maybe Xgafv)
-olXgafv = lens _olXgafv (\ s a -> s{_olXgafv = a})
-
--- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-olUploadProtocol :: Lens' OperationsList (Maybe Text)
-olUploadProtocol
-  = lens _olUploadProtocol
-      (\ s a -> s{_olUploadProtocol = a})
-
--- | OAuth access token.
-olAccessToken :: Lens' OperationsList (Maybe Text)
-olAccessToken
-  = lens _olAccessToken
-      (\ s a -> s{_olAccessToken = a})
-
--- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-olUploadType :: Lens' OperationsList (Maybe Text)
-olUploadType
-  = lens _olUploadType (\ s a -> s{_olUploadType = a})
-
--- | The name of the operation\'s parent resource.
-olName :: Lens' OperationsList Text
-olName = lens _olName (\ s a -> s{_olName = a})
-
--- | The standard list filter.
-olFilter :: Lens' OperationsList (Maybe Text)
-olFilter = lens _olFilter (\ s a -> s{_olFilter = a})
-
--- | The standard list page token.
-olPageToken :: Lens' OperationsList (Maybe Text)
-olPageToken
-  = lens _olPageToken (\ s a -> s{_olPageToken = a})
-
--- | The standard list page size.
-olPageSize :: Lens' OperationsList (Maybe Int32)
-olPageSize
-  = lens _olPageSize (\ s a -> s{_olPageSize = a}) .
-      mapping _Coerce
-
--- | JSONP
-olCallback :: Lens' OperationsList (Maybe Text)
-olCallback
-  = lens _olCallback (\ s a -> s{_olCallback = a})
-
-instance GoogleRequest OperationsList where
-        type Rs OperationsList = ListOperationsResponse
-        type Scopes OperationsList =
-             '["https://www.googleapis.com/auth/cloud-platform"]
-        requestClient OperationsList'{..}
-          = go _olName _olXgafv _olUploadProtocol
-              _olAccessToken
-              _olUploadType
-              _olFilter
-              _olPageToken
-              _olPageSize
-              _olCallback
-              (Just AltJSON)
-              cloudShellService
-          where go
-                  = buildClient (Proxy :: Proxy OperationsListResource)
-                      mempty
diff --git a/gogol-cloudshell.cabal b/gogol-cloudshell.cabal
--- a/gogol-cloudshell.cabal
+++ b/gogol-cloudshell.cabal
@@ -1,50 +1,69 @@
-name:                  gogol-cloudshell
-version:               0.5.0
-synopsis:              Google Cloud Shell SDK.
-homepage:              https://github.com/brendanhay/gogol
-bug-reports:           https://github.com/brendanhay/gogol/issues
-license:               OtherLicense
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2015-2016 Brendan Hay
-category:              Network, Google, Cloud
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md src/.gitkeep
+cabal-version:      2.2
+name:               gogol-cloudshell
+version:            1.0.0
+synopsis:           Google Cloud Shell SDK.
+homepage:           https://github.com/brendanhay/gogol
+bug-reports:        https://github.com/brendanhay/gogol/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+gogol@gmail.com>, Toni Cebrián <toni@tonicebrian.com>
 
+copyright:          Copyright (c) 2015-2025 Brendan Hay
+category:           Google
+build-type:         Simple
+extra-source-files:
+  README.md
+  src/.gitkeep
+
 description:
-    Allows users to start, configure, and connect to interactive shell
-    sessions running in the cloud.
-    .
-    /Warning:/ This is an experimental prototype/preview release which is still
-    under exploratory development and not intended for public use, caveat emptor!
-    .
-    This library is compatible with version @v1@
-    of the API.
+  Allows users to start, configure, and connect to interactive shell sessions running in the cloud.
+  .
+  /Warning:/ This is an experimental prototype/preview release which is still
+  under exploratory development and not intended for public use, caveat emptor!
+  .
+  This library is compatible with version @v1@
+  of the API.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/gogol.git
+  type:     git
+  location: git://github.com/brendanhay/gogol.git
+  subdir:   gogol-cloudshell
 
+flag field-selectors
+  description:
+    If record field selectors should be enabled. Disabling this requires GHC >=9.2 and the NoFieldSelectors extension.
+
+  default:     False
+  manual:      True
+
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
+  default-language: GHC2021
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
+    -fwarn-unused-packages
 
-    ghc-options:       -Wall
+  if (!flag(field-selectors) && impl(ghc >=9.2))
+    default-extensions: NoFieldSelectors
 
-    exposed-modules:
-          Network.Google.CloudShell
-        , Network.Google.CloudShell.Types
-        , Network.Google.Resource.CloudShell.Operations.Cancel
-        , Network.Google.Resource.CloudShell.Operations.Delete
-        , Network.Google.Resource.CloudShell.Operations.Get
-        , Network.Google.Resource.CloudShell.Operations.List
+  exposed-modules:
+    Gogol.CloudShell
+    Gogol.CloudShell.Operations.Cancel
+    Gogol.CloudShell.Operations.Delete
+    Gogol.CloudShell.Operations.Get
+    Gogol.CloudShell.Operations.List
+    Gogol.CloudShell.Types
+    Gogol.CloudShell.Users.Environments.AddPublicKey
+    Gogol.CloudShell.Users.Environments.Authorize
+    Gogol.CloudShell.Users.Environments.Get
+    Gogol.CloudShell.Users.Environments.RemovePublicKey
+    Gogol.CloudShell.Users.Environments.Start
 
-    other-modules:
-          Network.Google.CloudShell.Types.Product
-        , Network.Google.CloudShell.Types.Sum
+  other-modules:
+    Gogol.CloudShell.Internal.Product
+    Gogol.CloudShell.Internal.Sum
 
-    build-depends:
-          gogol-core == 0.5.0.*
-        , base       >= 4.7 && < 5
+  build-depends:    gogol-core ^>=1.0.0
